2021-02-04 21:10:41 +01:00
< modal id = "editDevice" status = "default" icon = "{{editDeviceModalIcon()}}" heading = "{{editDeviceModalTitle()}}" large = "yes" closeable = "yes" >
2020-11-09 15:33:32 +01:00
< div class = "modal-body" >
< form role = "form" name = "deviceEditor" >
< ul class = "nav nav-tabs" ng-init = "loadFormIntoScope(deviceEditor)" >
< li class = "active" > < a data-toggle = "tab" href = "#device-general" > < span class = "fas fa-cog" > < / span > < span translate > General< / span > < / a > < / li >
2021-02-04 21:10:41 +01:00
< li ng-if = "!editingDefaults" > < a data-toggle = "tab" href = "#device-sharing" > < span class = "fas fa-share-alt" > < / span > < span translate > Sharing< / span > < / a > < / li >
2020-11-09 15:33:32 +01:00
< li > < a data-toggle = "tab" href = "#device-advanced" > < span class = "fas fa-cogs" > < / span > < span translate > Advanced< / span > < / a > < / li >
< / ul >
< div class = "tab-content" >
< div id = "device-general" class = "tab-pane in active" >
2021-02-04 21:10:41 +01:00
< div ng-if = "!editingDefaults" class = "form-group" ng-class = "{'has-error': deviceEditor.deviceID.$invalid && deviceEditor.deviceID.$dirty}" ng-init = "loadFormIntoScope(deviceEditor)" >
2020-11-09 15:33:32 +01:00
< label translate for = "deviceID" > Device ID< / label >
< div ng-if = "!editingExisting" >
< input name = "deviceID" id = "deviceID" class = "form-control text-monospace" type = "text" ng-model = "currentDevice.deviceID" required = "" valid-deviceid list = "discovery-list" aria-required = "true" / >
< datalist id = "discovery-list" >
< option ng-repeat = "id in discovery" value = "{{id}}" / >
< / datalist >
< p class = "help-block" ng-if = "discovery && discovery.length !== 0" >
< span translate > You can also select one of these nearby devices:< / span >
< ul >
< li ng-repeat = "id in discovery" > < a href = "#" ng-click = "currentDevice.deviceID = id" > {{id}}< / a > < / li >
< / ul >
< / p >
< p class = "help-block" >
< span translate ng-if = "deviceEditor.deviceID.$valid || deviceEditor.deviceID.$pristine" > The device ID to enter here can be found in the "Actions > Show ID" dialog on the other device. Spaces and dashes are optional (ignored).< / span >
< span translate ng-show = "deviceEditor.deviceID.$valid || deviceEditor.deviceID.$pristine" > When adding a new device, keep in mind that this device must be added on the other side too.< / span >
< span translate ng-if = "deviceEditor.deviceID.$error.required && deviceEditor.deviceID.$dirty" > The device ID cannot be blank.< / span >
< span translate ng-if = "deviceEditor.deviceID.$error.validDeviceid && deviceEditor.deviceID.$dirty" > The entered device ID does not look valid. It should be a 52 or 56 character string consisting of letters and numbers, with spaces and dashes being optional.< / span >
< span translate ng-if = "deviceEditor.deviceID.$error.unique && deviceEditor.deviceID.$dirty" > A device with that ID is already added.< / span >
< / p >
< / div >
< div ng-if = "editingExisting" class = "well well-sm text-monospace" select-on-click > {{currentDevice.deviceID}}< / div >
< / div >
< div class = "form-group" >
< label translate for = "name" > Device Name< / label >
< input id = "name" class = "form-control" type = "text" ng-model = "currentDevice.name" / >
< p translate ng-if = "currentDevice.deviceID == myID" class = "help-block" > Shown instead of Device ID in the cluster status. Will be advertised to other devices as an optional default name.< / p >
< p translate ng-if = "currentDevice.deviceID != myID" class = "help-block" > Shown instead of Device ID in the cluster status. Will be updated to the name the device advertises if left empty.< / p >
< / div >
< / div >
2021-02-04 21:10:41 +01:00
< div ng-if = "!editingDefaults" id = "device-sharing" class = "tab-pane" >
2020-11-09 15:33:32 +01:00
< div class = "row" >
< div class = "col-md-6" >
< div class = "form-group" >
< div class = "checkbox" >
< label >
< input type = "checkbox" ng-model = "currentDevice.introducer" >
< span translate > Introducer< / span >
< p translate class = "help-block" > Add devices from the introducer to our device list, for mutually shared folders.< / p >
< / label >
< / div >
< / div >
< / div >
< div class = "col-md-6" >
< div class = "form-group" >
< div class = "checkbox" >
< label >
< input type = "checkbox" ng-model = "currentDevice.autoAcceptFolders" >
< span translate > Auto Accept< / span >
< p translate class = "help-block" > Automatically create or share folders that this device advertises at the default path.< / p >
< / label >
< / div >
< / div >
< / div >
< / div >
< div class = "form-group" >
< div class = "form-horizontal" ng-if = "currentSharing.shared.length" >
< label translate for = "folders" > Shared Folders< / label >
< p class = "help-block" >
2020-12-09 14:54:51 +01:00
< span translate > Deselect folders to stop sharing with this device.< / span >  
2020-11-09 15:33:32 +01:00
< small > < a href = "#" ng-click = "selectAllSharedFolders(true)" translate > Select All< / a >  
< a href = "#" ng-click = "selectAllSharedFolders(false)" translate > Deselect All< / a > < / small >
< / p >
< div class = "form-group" ng-repeat = "folder in currentSharing.shared" >
2020-12-21 11:11:44 +01:00
< share-template selected = "currentSharing.selected" encryption-passwords = "currentSharing.encryptionPasswords" id = "{{folder.id}}" label = "{{folderLabel(folder.id)}}" folder-type = "{{folder.type}}" untrusted = "currentDevice.untrusted" / >
2020-11-09 15:33:32 +01:00
< / div >
< / div >
< div class = "form-horizontal" ng-if = "currentSharing.unrelated.length" >
2020-12-09 14:54:51 +01:00
< label translate for = "folders" > Unshared Folders< / label >
< p class = "help-block" ng-if = "folderList().length > 0" >
2020-11-09 15:33:32 +01:00
< span translate > Select additional folders to share with this device.< / span >  
< small > < a href = "#" ng-click = "selectAllUnrelatedFolders(true)" translate > Select All< / a >  
< a href = "#" ng-click = "selectAllUnrelatedFolders(false)" translate > Deselect All< / a > < / small >
< / p >
2020-12-09 14:54:51 +01:00
< p class = "help-block" ng-if = "folderList().length == 0" >
< span translate > There are no folders to share with this device.< / span >
< / p >
2020-11-09 15:33:32 +01:00
< div class = "form-group" ng-repeat = "folder in currentSharing.unrelated" >
2020-12-21 11:11:44 +01:00
< share-template selected = "currentSharing.selected" encryption-passwords = "currentSharing.encryptionPasswords" id = "{{folder.id}}" label = "{{folderLabel(folder.id)}}" folder-type = "{{folder.type}}" untrusted = "currentDevice.untrusted" / >
2020-11-09 15:33:32 +01:00
< / div >
< / div >
< / div >
< / div >
< div id = "device-advanced" class = "tab-pane" >
< div class = "row form-group" >
< div class = "col-md-6" >
< div class = "form-group" >
< label translate for = "addresses" > Addresses< / label >
< input ng-disabled = "currentDevice.deviceID == myID" id = "addresses" class = "form-control" type = "text" ng-model = "currentDevice._addressesStr" > < / input >
< p translate class = "help-block" > Enter comma separated ("tcp://ip:port", "tcp://host:port") addresses or "dynamic" to perform automatic discovery of the address.< / p >
< / div >
< / div >
< div class = "col-md-6" >
< div class = "form-group" >
< label translate > Compression< / label >
< select class = "form-control" ng-model = "currentDevice.compression" >
< option value = "always" translate > All Data< / option >
< option value = "metadata" translate > Metadata Only< / option >
< option value = "never" translate > Off< / option >
< / select >
< / div >
< / div >
< / div >
< div class = "row form-group" >
< div class = "col-md-12" >
< label translate > Device rate limits< / label >
< div class = "row" >
< div class = "col-md-6" ng-class = "{'has-error': deviceEditor.maxRecvKbps.$invalid && deviceEditor.maxRecvKbps.$dirty}" >
< div class = "row" >
< span class = "col-md-8" translate > Incoming Rate Limit (KiB/s)< / span >
< div class = "col-md-4" >
< input name = "maxRecvKbps" id = "maxRecvKbps" class = "form-control" type = "number" pattern = "\d+" ng-model = "currentDevice.maxRecvKbps" min = "0" / >
< / div >
< / div >
< p class = "help-block" ng-if = "!deviceEditor.maxRecvKbps.$valid && deviceEditor.maxRecvKbps.$dirty" translate > The rate limit must be a non-negative number (0: no limit)< / p >
< / div >
< div class = "col-md-6" ng-class = "{'has-error': deviceEditor.maxSendKbps.$invalid && deviceEditor.maxSendKbps.$dirty}" >
< div class = "row" >
< span class = "col-md-8" translate > Outgoing Rate Limit (KiB/s)< / span >
< div class = "col-md-4" >
< input name = "maxSendKbps" id = "maxSendKbps" class = "form-control" type = "number" pattern = "\d+" ng-model = "currentDevice.maxSendKbps" min = "0" / >
< / div >
< / div >
< p class = "help-block" ng-if = "!deviceEditor.maxSendKbps.$valid && deviceEditor.maxSendKbps.$dirty" translate > The rate limit must be a non-negative number (0: no limit)< / p >
< / div >
< / div >
< / div >
< / div >
< div class = "row" >
< div class = "form-group col-md-6" >
< input type = "checkbox" id = "untrusted" ng-model = "currentDevice.untrusted" / >
< label for = "untrusted" translate > Untrusted< / label >
< p translate class = "help-block" > All folders shared with this device must be protected by a password, such that all sent data is unreadable without the given password.< / p >
< / div >
< / div >
< / div >
< / div >
< / form >
< / div >
< div class = "modal-footer" >
< button type = "button" class = "btn btn-primary btn-sm" ng-click = "saveDevice()" ng-disabled = "deviceEditor.$invalid" >
< span class = "fas fa-check" > < / span > < span translate > Save< / span >
< / button >
2021-02-04 21:10:41 +01:00
< button ng-if = "!editingDefaults" type = "button" class = "btn btn-default btn-sm" data-toggle = "modal" data-target = "#idqr" ng-if = "editingExisting || deviceEditor.deviceID.$valid" >
2020-11-09 15:33:32 +01:00
< span class = "fas fa-qrcode" > < / span > < span translate > Show QR< / span >
< / button >
< button type = "button" class = "btn btn-default btn-sm" data-dismiss = "modal" >
< span class = "fas fa-times" > < / span > < span translate > Close< / span >
< / button >
2021-02-04 21:10:41 +01:00
< div ng-if = "editingExisting && !editingDefaults" class = "pull-left" >
2021-01-15 20:46:04 +01:00
< button type = "button" class = "btn btn-warning btn-sm" data-toggle = "modal" data-target = "#remove-device-confirmation" >
2020-11-09 15:33:32 +01:00
< span class = "fas fa-minus-circle" > < / span > < span translate > Remove< / span >
< / button >
< / div >
< / div >
< / modal >