2020-10-28 16:14:32 -07:00
<!-- modal volume add -->
2021-05-13 09:14:34 -07:00
< div class = "modal fade" id = "volumeConfigureModal" tabindex = "-1" role = "dialog" >
2020-10-28 16:14:32 -07:00
< div class = "modal-dialog" >
< div class = "modal-content" >
< div class = "modal-header" >
2021-05-13 09:14:34 -07:00
< h4 class = "modal-title" ng-show = "volumeConfigure.adding" > {{ 'volumes.addVolumeDialog.title' | tr }}< / h4 >
< h4 class = "modal-title" ng-hide = "volumeConfigure.adding" > {{ 'volumes.updateVolumeDialog.title' | tr:{ volume: volumeConfigure.volume.name } }}< / h4 >
2020-10-28 16:14:32 -07:00
< / div >
< div class = "modal-body" >
2021-05-13 09:14:34 -07:00
< form name = "volumeConfigureForm" role = "form" novalidate ng-submit = "volumeConfigure.submit()" autocomplete = "off" >
2020-10-28 16:14:32 -07:00
< fieldset >
2021-05-13 09:14:34 -07:00
< p class = "has-error text-center" ng-show = "volumeConfigure.error" > {{ volumeConfigure.error }}< / p >
2020-10-28 16:14:32 -07:00
2021-05-13 09:14:34 -07:00
< div class = "form-group" ng-show = "volumeConfigure.adding" >
2020-11-23 22:13:54 +01:00
< label class = "control-label" > {{ 'volumes.name' | tr }}< / label >
< p class = "small text-info" ng-bind-html = "'volumes.addVolumeDialog.nameWarning' | tr" > < / p >
2021-05-13 09:14:34 -07:00
< input type = "text" class = "form-control" ng-model = "volumeConfigure.name" name = "name" ng-disabled = "volumeConfigure.busy" autofocus >
2020-10-28 16:14:32 -07:00
< / div >
2021-05-13 17:50:18 -07:00
< div class = "form-group" >
2020-11-23 22:13:54 +01:00
< label class = "control-label" > {{ 'volumes.hostPath' | tr }}< / label >
2021-05-13 17:50:18 -07:00
< input type = "text" class = "form-control" ng-model = "volumeConfigure.hostPath" name = "hostPath" ng-show = "volumeConfigure.adding" ng-disabled = "volumeConfigure.busy" autofocus >
< p ng-hide = "volumeConfigure.adding" > {{ volumeConfigure.volume.hostPath }}< / p >
< / div >
< div class = "form-group" ng-hide = "volumeConfigure.adding" >
< label class = "control-label" > {{ 'volumes.mountStatus' | tr }}< / label >
2021-05-14 10:01:23 -07:00
< p ng-class = "volumeConfigure.volume.status.state === 'active' ? 'text-success' : 'text-danger'" > {{ volumeConfigure.volume.status.message }} ({{ volumeConfigure.volume.status.state }})< / p >
2020-10-28 16:14:32 -07:00
< / div >
2021-05-12 21:40:30 -07:00
< div class = "form-group" >
< label class = "control-label" for = "mountType" > {{ 'volumes.mountType' | tr }}< / label >
2021-05-13 09:14:34 -07:00
< select class = "form-control" id = "mountType" ng-model = "volumeConfigure.mountType" ng-options = "a.value as a.name for a in mountTypes" > < / select >
< p class = "small text-info" ng-show = "volumeConfigure.mountType === 'noop'" ng-bind-html = "'volumes.addVolumeDialog.noopWarning' | tr" > < / p >
< p class = "small text-info" ng-hide = "volumeConfigure.mountType === 'noop'" ng-bind-html = "'volumes.addVolumeDialog.mountTypeInfo' | tr" > < / p >
2021-05-12 21:40:30 -07:00
< / div >
2021-05-13 09:14:34 -07:00
< div uib-collapse = "volumeConfigure.mountType === 'noop'" >
< div class = "form-group" ng-show = "volumeConfigure.mountType === 'ext4'" >
< label class = "control-label" for = "volumeConfigureHost" > {{ 'volumes.addVolumeDialog.diskPath' | tr }}< / label >
< input type = "text" class = "form-control" ng-model = "volumeConfigure.diskPath" id = "volumeConfigureDiskPath" name = "diskPath" ng-disabled = "volumeConfigure.busy" placeholder = "/dev/disk/by-uuid/uuid" >
2021-05-12 21:40:30 -07:00
< / div >
2021-05-18 17:20:59 +02:00
< div class = "form-group" ng-show = "volumeConfigure.mountType === 'cifs' || volumeConfigure.mountType === 'nfs' || volumeConfigure.mountType === 'sshfs'" >
2021-05-13 09:14:34 -07:00
< label class = "control-label" for = "volumeConfigureHost" > {{ 'volumes.addVolumeDialog.server' | tr }}< / label >
< input type = "text" class = "form-control" ng-model = "volumeConfigure.host" id = "volumeConfigureHost" name = "host" ng-disabled = "volumeConfigure.busy" placeholder = "Server IP or hostname" >
2021-05-12 21:40:30 -07:00
< / div >
2021-05-18 17:20:59 +02:00
< div class = "form-group" ng-show = "volumeConfigure.mountType === 'cifs' || volumeConfigure.mountType === 'nfs' || volumeConfigure.mountType === 'sshfs'" >
2021-05-13 09:14:34 -07:00
< label class = "control-label" for = "volumeConfigureRemoteDir" > {{ 'volumes.addVolumeDialog.remoteDirectory' | tr }}< / label >
< input type = "text" class = "form-control" ng-model = "volumeConfigure.remoteDir" id = "volumeConfigureRemoteDir" name = "remoteDir" ng-disabled = "volumeConfigure.busy" placeholder = "/share" >
2021-05-12 21:40:30 -07:00
< / div >
2021-05-13 09:14:34 -07:00
< div class = "form-group" ng-show = "volumeConfigure.mountType === 'cifs'" >
< label class = "control-label" for = "volumeConfigureUsername" > {{ 'volumes.addVolumeDialog.username' | tr }}< / label >
< input type = "text" class = "form-control" ng-model = "volumeConfigure.username" id = "volumeConfigureUsername" name = "username" ng-disabled = "volumeConfigure.busy" >
2021-05-12 21:40:30 -07:00
< / div >
2021-05-13 09:14:34 -07:00
< div class = "form-group" ng-show = "volumeConfigure.mountType === 'cifs'" >
< label class = "control-label" for = "volumeConfigurePassword" > {{ 'volumes.addVolumeDialog.password' | tr }}< / label >
< input type = "password" class = "form-control" ng-model = "volumeConfigure.password" id = "volumeConfigurePassword" name = "password" ng-disabled = "volumeConfigure.busy" >
2021-05-12 21:40:30 -07:00
< / div >
2021-05-18 17:20:59 +02:00
< div class = "form-group" ng-show = "volumeConfigure.mountType === 'sshfs'" >
< label class = "control-label" for = "volumeConfigurePort" > {{ 'volumes.addVolumeDialog.port' | tr }}< / label >
< input type = "number" class = "form-control" ng-model = "volumeConfigure.port" id = "volumeConfigurePort" name = "port" ng-disabled = "volumeConfigure.busy" >
< / div >
< div class = "form-group" ng-show = "volumeConfigure.mountType === 'sshfs'" >
< label class = "control-label" for = "volumeConfigureUser" > {{ 'volumes.addVolumeDialog.user' | tr }}< / label >
< input type = "text" class = "form-control" ng-model = "volumeConfigure.user" id = "volumeConfigureUser" name = "user" ng-disabled = "volumeConfigure.busy" >
< / div >
< div class = "form-group" ng-show = "volumeConfigure.mountType === 'sshfs'" >
< label class = "control-label" for = "volumeConfigurePrivateKey" > {{ 'volumes.addVolumeDialog.privateKey' | tr }}< / label >
< textarea class = "form-control" ng-model = "volumeConfigure.privateKey" id = "volumeConfigurePrivateKey" name = "privateKey" ng-disabled = "volumeConfigure.busy" > < / textarea >
< / div >
2021-05-12 21:40:30 -07:00
< / div >
2021-05-13 09:14:34 -07:00
< input class = "ng-hide" type = "submit" ng-disabled = "volumeConfigureForm.$invalid || volumeConfigure.busy" / >
2020-10-28 16:14:32 -07:00
< / fieldset >
< / form >
< / div >
< div class = "modal-footer " >
2020-11-23 22:13:54 +01:00
< button type = "button" class = "btn btn-default" data-dismiss = "modal" > {{ 'main.dialog.cancel' | tr }}< / button >
2021-05-13 09:14:34 -07:00
< button type = "submit" class = "btn btn-outline btn-success pull-right" ng-click = "volumeConfigure.submit()" ng-disabled = "volumeConfigureForm.$invalid || volumeConfigure.busy" > < i class = "fa fa-circle-notch fa-spin" ng-show = "volumeConfigure.busy" > < / i > {{ 'main.dialog.save' | tr }}< / button >
2020-10-28 16:14:32 -07:00
< / div >
< / div >
< / div >
< / div >
<!-- Modal volume remove -->
< div class = "modal fade" id = "volumeRemoveModal" tabindex = "-1" role = "dialog" >
< div class = "modal-dialog" >
< div class = "modal-content" >
< div class = "modal-header" >
2020-11-23 22:13:54 +01:00
< h4 class = "modal-title" > {{ 'volumes.removeVolumeDialog.title' | tr:{ volume:volumeRemove.volume.name } }}< / h4 >
2020-10-28 16:14:32 -07:00
< / div >
< div class = "modal-body" >
2020-11-23 17:10:40 -08:00
< p ng-bind-html = "'volumes.removeVolumeDialog.description' | tr:{ volume:volumeRemove.volume.name }" > < / p >
2020-11-23 22:13:54 +01:00
< p class = "has-error" ng-show = "volumeRemove.error" > {{ volumeRemove.error }}< / p >
2020-10-28 16:14:32 -07:00
< / div >
< div class = "modal-footer" >
2020-11-23 22:13:54 +01:00
< button type = "button" class = "btn btn-default" data-dismiss = "modal" > {{ 'main.dialog.cancel' | tr }}< / button >
< button type = "button" class = "btn btn-danger" ng-click = "volumeRemove.submit()" ng-disabled = "volumeRemove.busy" > < i class = "fa fa-circle-notch fa-spin" ng-show = "volumeRemove.busy" > < / i > {{ 'volumes.removeVolumeDialog.removeAction' | tr }}< / button >
2020-10-28 16:14:32 -07:00
< / div >
< / div >
< / div >
< / div >
< div class = "content" >
< div class = "text-left" >
2021-05-13 09:14:34 -07:00
< h1 > {{ 'volumes.title' | tr }} < button class = "btn btn-primary btn-outline pull-right" ng-click = "volumeConfigure.show()" > < i class = "fa fa-plus" > < / i > {{ 'volumes.addVolumeAction' | tr }}< / button > < / h1 >
2020-10-28 16:14:32 -07:00
< / div >
< div class = "card card-large" >
2020-11-23 17:10:40 -08:00
< p ng-bind-html = "'volumes.description' | tr" > < / p >
2020-11-23 17:25:13 -08:00
< p class = "text-warning text-bold" ng-bind-html = "'volumes.backupWarning' | tr" > < / p >
2020-11-23 17:10:40 -08:00
2020-10-28 16:14:32 -07:00
< div class = "row ng-hide" ng-show = "!ready" >
< div class = "col-lg-12 text-center" >
< h2 > < i class = "fa fa-circle-notch fa-spin" > < / i > < / h2 >
< / div >
< / div >
< div class = "row animateMeOpacity ng-hide" ng-show = "ready" >
< div class = "col-lg-12" >
< table class = "table table-hover" style = "margin-top: 10px;" >
< thead >
< tr >
2021-05-13 15:33:07 -07:00
< th style = "width: 5%" > < / th >
< th style = "width: 30%" class = "text-left" > {{ 'volumes.name' | tr }}< / th >
< th style = "width: 60%" class = "text-left" > {{ 'volumes.hostPath' | tr }}< / th >
< th style = "width: 10%" class = "text-right" > {{ 'main.actions' | tr }}< / th >
2020-10-28 16:14:32 -07:00
< / tr >
< / thead >
< tbody >
< tr ng-repeat = "volume in volumes" >
2021-05-13 15:33:07 -07:00
< td >
< i class = "fa fa-circle" ng-style = "{ color: volume.status.state === 'active' ? '#27CE65' : '#d9534f' }" ng-show = "volume.status" uib-tooltip = "{{ volume.status.message }}" > < / i >
< i class = "fa fa-circle-notch fa-spin" ng-hide = "volume.status" > < / i >
< / td >
2021-05-13 09:14:34 -07:00
< td class = "elide-table-cell hand" ng-click = "volumeConfigure.show(volume)" >
2020-10-28 16:14:32 -07:00
{{ volume.name }}
< / td >
2021-05-13 09:14:34 -07:00
< td class = "text-left elide-table-cell hidden-xs hidden-sm hand" ng-click = "volumeConfigure.show(volume)" >
{{ volume.hostPath }} ({{ volume.mountType }})
2020-10-28 16:14:32 -07:00
< / td >
< td class = "text-right no-wrap" style = "vertical-align: bottom" >
2021-05-13 09:14:34 -07:00
< button class = "btn btn-xs btn-default" ng-click = "volumeConfigure.show(volume)" title = "{{ 'volumes.tooltipEdit' | tr }}" > < i class = "fa fa-pencil-alt" > < / i > < / button >
2020-12-04 13:58:46 +01:00
< a class = "btn btn-xs btn-default" ng-href = "{{ '/filemanager.html?volumeId=' + volume.id }}" target = "_blank" uib-tooltip = "{{ 'volumes.openFileManagerActionTooltip' | tr }}" > < i class = "fas fa-folder" > < / i > < / a >
2020-11-23 22:13:54 +01:00
< button class = "btn btn-xs btn-danger" ng-click = "volumeRemove.show(volume)" uib-tooltip = "{{ 'volumes.removeVolumeActionTooltip' | tr }}" > < i class = "far fa-trash-alt" > < / i > < / button >
2020-10-28 16:14:32 -07:00
< / td >
< / tr >
< / tbody >
< / table >
< / div >
< / div >
< / div >
< / div >