2014-01-05 22:54:57 +00:00
<!DOCTYPE html>
2014-06-01 20:50:14 +00:00
<!--
2014-11-16 20:13:20 +00:00
// Copyright (C) 2014 The Syncthing Authors.
2014-09-29 19:43:32 +00:00
//
2015-03-07 20:36:35 +00:00
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
// You can obtain one at http://mozilla.org/MPL/2.0/.
2014-06-01 20:50:14 +00:00
-->
2014-11-26 12:39:59 +00:00
< html lang = "en" ng-app = "syncthing" ng-controller = "SyncthingController" class = "ng-cloak" >
2014-01-05 22:54:57 +00:00
< head >
2014-04-09 21:00:23 +00:00
< meta charset = "utf-8" >
< meta http-equiv = "X-UA-Compatible" content = "IE=edge" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< meta name = "description" content = "" >
< meta name = "author" content = "" >
2016-06-01 19:06:36 +00:00
< link rel = "shortcut icon" href = "assets/img/favicon-{{syncthingStatus()}}.png" >
2015-12-21 12:19:50 +00:00
< link rel = "mask-icon" href = "assets/img/safari-pinned-tab.svg" color = "#0882c8" >
2014-04-09 21:00:23 +00:00
2015-07-20 09:18:48 +00:00
< title ng-bind = "thisDeviceName() + ' | Syncthing'" > < / title >
2016-03-28 10:51:12 +00:00
< link href = "vendor/bootstrap/css/bootstrap.css" rel = "stylesheet" >
2014-11-26 12:39:59 +00:00
< link href = "assets/font/raleway.css" rel = "stylesheet" >
2016-03-28 10:46:05 +00:00
< link href = "vendor/font-awesome/css/font-awesome.css" rel = "stylesheet" >
2014-11-26 12:39:59 +00:00
< link href = "assets/css/overrides.css" rel = "stylesheet" >
2016-03-25 16:55:53 +00:00
< link href = "assets/css/theme.css" rel = "stylesheet" >
2014-01-05 22:54:57 +00:00
< / head >
2014-05-16 16:42:22 +00:00
< body >
2016-04-05 06:36:53 +00:00
< script src = "syncthing/development/logbar.js" > < / script >
< div ng-if = "version.isDevelopmentVersion" ng-include = "'syncthing/development/logbar.html'" > < / div >
2014-04-09 21:00:23 +00:00
<!-- Top bar -->
< nav class = "navbar navbar-top navbar-default" role = "navigation" >
2014-01-08 12:52:17 +00:00
< div class = "container" >
2016-04-02 08:31:16 +00:00
< span class = "navbar-brand" >
< img class = "logo hidden-xs" src = "assets/img/logo-horizontal.svg" height = "32" width = "117" / >
2016-06-01 23:40:11 +00:00
< img class = "logo hidden visible-xs" src = "assets/img/favicon-default.png" height = "32" / >
2016-04-02 08:31:16 +00:00
< / span >
2015-04-02 12:48:59 +00:00
< p class = "navbar-text hidden-xs" ng-class = "{'hidden-sm':upgradeInfo && upgradeInfo.newer}" > {{thisDeviceName()}}< / p >
2014-05-20 17:36:37 +00:00
< ul class = "nav navbar-nav navbar-right" >
2016-04-02 08:31:16 +00:00
< li ng-if = "upgradeInfo && upgradeInfo.newer" class = "upgrade-newer" >
2015-08-10 09:22:37 +00:00
< button type = "button" class = "btn navbar-btn btn-primary btn-sm" ng-click = "upgrade()" >
2016-06-02 06:08:18 +00:00
< span class = "fa fa-arrow-circle-up" > < / span >
< span class = "hidden-xs" translate translate-value-version = "{{upgradeInfo.latest}}" > Upgrade To {%version%}< / span >
2014-07-20 11:49:26 +00:00
< / button >
2014-07-14 08:45:29 +00:00
< / li >
2016-04-02 08:31:16 +00:00
< li ng-if = "upgradeInfo && upgradeInfo.majorNewer" class = "upgrade-newer-major" >
2015-08-10 09:22:37 +00:00
< button type = "button" class = "btn navbar-btn btn-danger btn-sm" ng-click = "upgradeMajor()" >
2016-06-02 06:08:18 +00:00
< span class = "fa fa-arrow-circle-up" > < / span >
< span class = "hidden-xs" translate translate-value-version = "{{upgradeInfo.latest}}" > Upgrade To {%version%}< / span >
2015-04-22 12:41:08 +00:00
< / button >
< / li >
2015-04-02 12:48:59 +00:00
< li class = "dropdown" language-select > < / li >
2016-04-02 08:31:16 +00:00
< li >
2016-05-20 16:50:11 +00:00
< a class = "navbar-link" href = "https://docs.syncthing.net/intro/gui.html" target = "_blank" >
2016-06-02 06:08:18 +00:00
< span class = "fa fa-question-circle" > < / span >
< span class = "hidden-xs" translate > Help< / span >
2015-05-27 19:54:00 +00:00
< / a >
< / li >
2016-04-02 08:31:16 +00:00
< li class = "dropdown action-menu" >
2016-06-02 06:08:18 +00:00
< a href = "#" class = "dropdown-toggle" data-toggle = "dropdown" >
< span class = "fa fa-cog" > < / span >
< span class = "hidden-xs" translate > Actions< / span >
< span class = "caret" > < / span >
< / a >
2014-05-20 17:36:37 +00:00
< ul class = "dropdown-menu" >
2015-08-10 09:22:37 +00:00
< li > < a href = "" ng-click = "editSettings()" > < span class = "fa fa-fw fa-cog" > < / span > < span translate > Settings< / span > < / a > < / li >
2015-12-29 21:22:00 +00:00
< li > < a href = "" ng-click = "idDevice(thisDevice())" > < span class = "fa fa-fw fa-qrcode" > < / span > < span translate > Show ID< / span > < / a > < / li >
2014-05-20 17:36:37 +00:00
< li class = "divider" > < / li >
2015-08-10 09:22:37 +00:00
< li > < a href = "" ng-click = "shutdown()" > < span class = "fa fa-fw fa-power-off" > < / span > < span translate > Shutdown< / span > < / a > < / li >
< li > < a href = "" ng-click = "restart()" > < span class = "fa fa-fw fa-refresh" > < / span > < span translate > Restart< / span > < / a > < / li >
2014-07-07 10:58:56 +00:00
< li class = "divider" > < / li >
2015-06-02 14:48:31 +00:00
< li class = "visible-xs" >
2016-03-25 07:02:29 +00:00
< a href = "https://docs.syncthing.net/intro/gui.html" target = "_blank" >
2015-08-10 09:22:37 +00:00
< span class = "fa fa-fw fa-book" > < / span > < span translate > Help< / span >
2015-06-02 14:48:31 +00:00
< / a >
< / li >
2015-08-10 09:22:37 +00:00
< li > < a href = "" ng-click = "about()" > < span class = "fa fa-fw fa-heart-o" > < / span > < span translate > About< / span > < / a > < / li >
2015-07-03 12:07:38 +00:00
< li class = "divider" > < / li >
2015-08-10 09:22:37 +00:00
< li > < a href = "" ng-click = "advanced()" > < span class = "fa fa-fw fa-cogs" > < / span > < span translate > Advanced< / span > < / a > < / li >
2014-05-20 17:36:37 +00:00
< / ul >
< / li >
2014-05-24 19:56:09 +00:00
< / ul >
2014-02-12 11:10:44 +00:00
< / div >
2014-04-09 21:00:23 +00:00
< / nav >
2014-01-05 22:54:57 +00:00
2015-10-03 10:18:19 +00:00
< div class = "container" id = "content" >
2014-02-12 22:18:41 +00:00
2015-11-16 20:33:55 +00:00
<!-- Panel: Open, no auth -->
< div ng-if = "openNoAuth" class = "row" >
< div class = "col-md-12" >
< div class = "panel panel-danger" >
2016-06-02 23:21:19 +00:00
< div class = "panel-heading" >
< h3 class = "panel-title" >
< div class = "panel-icon" >
< span class = "fa fa-exclamation-circle" > < / span >
< / div >
< span translate > Danger!< / span >
< / h3 >
< / div >
2015-11-16 20:33:55 +00:00
< div class = "panel-body" >
< p >
< span translate > The Syncthing admin interface is configured to allow remote access without a password.< / span >
< b > < span translate > This can easily give hackers access to read and change any files on your computer.< / span > < / b >
< span translate > Please set a GUI Authentication User and Password in the Settings dialog.< / span >
< / p >
< / div >
< div class = "panel-footer" >
< button type = "button" class = "btn btn-sm btn-default pull-right" ng-click = "editSettings()" >
< span class = "fa fa-cog" > < / span > < span translate > Settings< / span >
< / button >
< div class = "clearfix" > < / div >
< / div >
< / div >
< / div >
< / div >
2015-01-23 15:28:30 +00:00
<!-- Panel: Restart Needed -->
2014-04-09 21:00:23 +00:00
< div ng-if = "!configInSync" class = "row" >
< div class = "col-md-12" >
< div class = "panel panel-warning" >
2016-06-02 23:21:19 +00:00
< div class = "panel-heading" >
< h3 class = "panel-title" >
< div class = "panel-icon" >
< span class = "fa fa-exclamation-circle" > < / span >
< / div >
< span translate > Restart Needed< / span >
< / h3 >
< / div >
2014-04-09 21:00:23 +00:00
< div class = "panel-body" >
2014-07-20 11:49:26 +00:00
< p translate > The configuration has been saved but not activated. Syncthing must restart to activate the new configuration.< / p >
2014-04-09 21:00:23 +00:00
< / div >
< div class = "panel-footer" >
2015-08-10 09:22:37 +00:00
< button type = "button" class = "btn btn-sm btn-default pull-right" ng-click = "restart()" >
< span class = "fa fa-refresh" > < / span > < span translate > Restart< / span >
< / button >
2014-04-09 21:00:23 +00:00
< div class = "clearfix" > < / div >
< / div >
2014-01-05 22:54:57 +00:00
< / div >
2014-04-09 21:00:23 +00:00
< / div >
2014-02-12 11:10:44 +00:00
< / div >
2015-01-23 15:28:30 +00:00
<!-- Panel: New Device -->
< div ng-repeat = "(device, event) in deviceRejections" class = "row" >
< div class = "col-md-12" >
< div class = "panel panel-warning" >
< div class = "panel-heading" >
< h3 class = "panel-title" >
2016-06-02 20:52:10 +00:00
< identicon class = "panel-icon" data-value = "device" > < / identicon >
2015-12-18 18:17:04 +00:00
< span translate > New Device< / span >
< span class = "pull-right" > {{ event.time | date:"yyyy-MM-dd HH:mm:ss" }}< / span >
2015-01-23 15:28:30 +00:00
< / h3 >
< / div >
< div class = "panel-body" >
< p >
2016-03-25 20:29:07 +00:00
< span translate translate-value-device = "{{ device }}" translate-value-address = "{{ event.data.address }}" translate-value-name = "{{ event.data.name }}" >
Device "{%name%}" ({%device%} at {%address%}) wants to connect. Add new device?
2015-12-17 15:52:36 +00:00
< / span >
2015-01-23 15:28:30 +00:00
< / p >
< / div >
< div class = "panel-footer clearfix" >
< div class = "pull-right" >
2016-03-25 20:29:07 +00:00
< button type = "button" class = "btn btn-sm btn-success" ng-click = "addDevice(device, event.data.name)" >
2015-12-18 20:33:11 +00:00
< span class = "fa fa-plus" > < / span > < span translate > Add Device< / span >
2015-08-10 09:22:37 +00:00
< / button >
< button type = "button" class = "btn btn-sm btn-danger" ng-click = "ignoreRejectedDevice(device)" >
< span class = "fa fa-times" > < / span > < span translate > Ignore< / span >
< / button >
< button type = "button" class = "btn btn-sm btn-default" ng-click = "dismissDeviceRejection(device)" >
< span class = "fa fa-clock-o" > < / span > < span translate > Later< / span >
< / button >
2015-01-23 15:28:30 +00:00
< / div >
< / div >
< / div >
< / div >
< / div >
<!-- Panel: New Folder -->
< div ng-repeat = "(key, event) in folderRejections" class = "row reject" >
< div class = "col-md-12" >
< div class = "panel panel-warning" >
< div class = "panel-heading" >
2016-06-02 23:21:19 +00:00
< h3 class = "panel-title" >
< div class = "panel-icon" >
< span class = "fa fa-folder" > < / span >
< / div >
2015-01-23 15:28:30 +00:00
< span translate ng-if = "!folders[event.data.folder]" > New Folder< / span >
< span translate ng-if = "folders[event.data.folder]" > Share Folder< / span >
2015-12-20 08:52:59 +00:00
< span class = "pull-right" > {{ event.time | date:"yyyy-MM-dd HH:mm:ss" }}< / span >
2015-01-23 15:28:30 +00:00
< / h3 >
< / div >
< div class = "panel-body" >
< p >
2016-03-11 09:48:46 +00:00
< span ng-if = "event.data.folderLabel.length == 0" translate translate-value-device = "{{ deviceName(findDevice(event.data.device)) }}" translate-value-folder = "{{ event.data.folder }}" >
2015-01-23 15:28:30 +00:00
{%device%} wants to share folder "{%folder%}".
< / span >
2016-04-09 12:20:56 +00:00
< span ng-if = "event.data.folderLabel.length != 0" translate translate-value-device = "{{ deviceName(findDevice(event.data.device)) }}" translate-value-folder = "{{ event.data.folder }}" translate-value-folderlabel = "{{ event.data.folderLabel }}" >
{%device%} wants to share folder "{%folderlabel%}" ({%folder%}).
2016-03-11 09:48:46 +00:00
< / span >
2015-01-23 15:28:30 +00:00
< span translate ng-if = "folders[event.data.folder]" > Share this folder?< / span >
< span translate ng-if = "!folders[event.data.folder]" > Add new folder?< / span >
< / p >
< / div >
< div class = "panel-footer clearfix" >
< div class = "pull-right" >
2016-03-11 09:48:46 +00:00
< button type = "button" class = "btn btn-sm btn-success" ng-click = "addFolderAndShare(event.data.folder, event.data.folderLabel, event.data.device)" ng-if = "!folders[event.data.folder]" >
2015-08-10 09:22:37 +00:00
< span class = "fa fa-check" > < / span > < span translate > Add< / span >
2015-01-23 15:28:30 +00:00
< / button >
2015-08-10 09:22:37 +00:00
< button type = "button" class = "btn btn-sm btn-success" ng-click = "shareFolderWithDevice(event.data.folder, event.data.device)" ng-if = "folders[event.data.folder]" >
< span class = "fa fa-check" > < / span > < span translate > Share< / span >
2015-01-23 15:28:30 +00:00
< / button >
2015-08-10 09:22:37 +00:00
< button type = "button" class = "btn btn-sm btn-default" ng-click = "dismissFolderRejection(event.data.folder, event.data.device)" >
< span class = "fa fa-clock-o" > < / span > < span translate > Later< / span >
2015-01-23 15:28:30 +00:00
< / button >
< / div >
< / div >
< / div >
< / div >
< / div >
<!-- Panel: Notice -->
< div ng-if = "errorList().length > 0" class = "row" >
< div class = "col-md-12" >
< div class = "panel panel-warning" >
2016-06-02 23:21:19 +00:00
< div class = "panel-heading" >
< h3 class = "panel-title" >
< div class = "panel-icon" >
< span class = "fa fa-exclamation-circle" > < / span >
< / div >
< span translate > Notice< / span >
< / h3 >
< / div >
2015-01-23 15:28:30 +00:00
< div class = "panel-body" >
2015-10-12 05:18:40 +00:00
< p ng-repeat = "err in errorList()" > < small > {{err.when | date:"yyyy-MM-dd HH:mm:ss"}}:< / small > {{friendlyDevices(err.message)}}< / p >
2015-01-23 15:28:30 +00:00
< / div >
< div class = "panel-footer" >
2015-08-10 09:22:37 +00:00
< button type = "button" class = "btn btn-sm btn-default pull-right" ng-click = "clearErrors()" >
< span class = "fa fa-check" > < / span > < span translate > OK< / span >
< / button >
2015-01-23 15:28:30 +00:00
< div class = "clearfix" > < / div >
< / div >
< / div >
< / div >
< / div >
2014-04-09 21:00:23 +00:00
<!-- First regular row -->
2014-02-12 11:10:44 +00:00
< div class = "row" >
2014-04-09 21:00:23 +00:00
2014-09-28 11:00:38 +00:00
<!-- Folder list (top left) -->
2014-04-09 21:00:23 +00:00
< div class = "col-md-6" >
2015-09-10 13:05:08 +00:00
< h3 translate > Folders< / h3 >
2014-09-28 11:00:38 +00:00
< div class = "panel-group" id = "folders" >
2014-11-29 12:08:00 +00:00
< div class = "panel panel-default" ng-repeat = "folder in folderList()" >
2016-05-30 08:18:09 +00:00
< a class = "panel-heading" data-toggle = "collapse" data-parent = "#folders" href = "#folder-{{$index}}" >
2015-03-10 22:45:43 +00:00
< div class = "panel-progress" ng-show = "folderStatus(folder) == 'syncing'" ng-attr-style = "width: {{syncPercentage(folder.id)}}%" > < / div >
2015-08-26 22:49:06 +00:00
< div class = "panel-progress" ng-show = "folderStatus(folder) == 'scanning' && scanProgress[folder.id] != undefined" ng-attr-style = "width: {{scanPercentage(folder.id)}}%" > < / div >
2016-03-22 20:53:56 +00:00
< h4 class = "panel-title" >
2016-06-02 23:21:19 +00:00
< div class = "panel-icon hidden-xs" >
< span class = "fa fa-fw" ng-class = "[folder.type == 'readonly' ? 'fa-lock' : 'fa-folder']" > < / span >
2016-05-30 08:18:09 +00:00
< / div >
< div class = "panel-status pull-right text-{{folderClass(folder)}}" ng-switch = "folderStatus(folder)" >
2015-01-08 10:04:27 +00:00
< span ng-switch-when = "unknown" > < span class = "hidden-xs" translate > Unknown< / span > < span class = "visible-xs" > ◼ < / span > < / span >
< span ng-switch-when = "unshared" > < span class = "hidden-xs" translate > Unshared< / span > < span class = "visible-xs" > ◼ < / span > < / span >
< span ng-switch-when = "stopped" > < span class = "hidden-xs" translate > Stopped< / span > < span class = "visible-xs" > ◼ < / span > < / span >
2015-08-26 22:49:06 +00:00
< span ng-switch-when = "scanning" >
< span class = "hidden-xs" translate > Scanning< / span >
< span class = "hidden-xs" ng-if = "scanPercentage(folder.id) != undefined" >
2015-11-18 13:35:51 +00:00
({{scanPercentage(folder.id)}}%)
2015-08-26 22:49:06 +00:00
< / span >
< span class = "visible-xs" > ◼ < / span >
< / span >
2015-01-08 10:04:27 +00:00
< span ng-switch-when = "idle" > < span class = "hidden-xs" translate > Up to Date< / span > < span class = "visible-xs" > ◼ < / span > < / span >
2014-09-08 17:46:33 +00:00
< span ng-switch-when = "syncing" >
2015-01-08 10:04:27 +00:00
< span class = "hidden-xs" translate > Syncing< / span >
2015-03-10 22:45:43 +00:00
({{syncPercentage(folder.id)}}%)
2014-09-08 17:46:33 +00:00
< / span >
2015-06-26 12:22:52 +00:00
< span ng-switch-when = "outofsync" > < span class = "hidden-xs" translate > Out of Sync< / span > < span class = "visible-xs" > ◼ < / span > < / span >
2016-05-30 08:18:09 +00:00
< / div >
< div class = "panel-title-text" >
< span tooltip data-original-title = "{{folder.label.length != 0 ? folder.id : ''}}" > {{folder.label.length != 0 ? folder.label : folder.id}}< / span >
< / div >
2016-03-22 20:53:56 +00:00
< / h4 >
2016-05-22 16:17:33 +00:00
< / a >
2015-02-19 14:48:43 +00:00
< div id = "folder-{{$index}}" class = "panel-collapse collapse" >
2014-05-24 19:56:09 +00:00
< div class = "panel-body" >
2014-09-10 09:27:21 +00:00
< table class = "table table-condensed table-striped" >
< tbody >
2016-03-11 09:48:46 +00:00
< tr ng-show = "folder.label != undefined && folder.label.length > 0" >
< th > < span class = "fa fa-fw fa-folder-open" > < / span > < span translate > Folder ID< / span > < / th >
< td class = "text-right no-overflow-ellipse" > {{folder.id}}< / td >
< / tr >
2014-09-10 09:27:21 +00:00
< tr >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-folder-open" > < / span > < span translate > Folder Path< / span > < / th >
2016-03-16 14:55:29 +00:00
< td class = "text-right" >
< span tooltip data-original-title = "{{folder.path}}" > {{folder.path}}< / span >
< / td >
2014-09-10 09:27:21 +00:00
< / tr >
2015-04-12 20:12:01 +00:00
< tr ng-if = "model[folder.id].invalid || model[folder.id].error" >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-exclamation-triangle" > < / span > < span translate > Error< / span > < / th >
2015-04-12 20:12:01 +00:00
< td class = "text-right" > {{model[folder.id].invalid || model[folder.id].error}}< / td >
2014-09-10 09:27:21 +00:00
< / tr >
< tr >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-globe" > < / span > < span translate > Global State< / span > < / th >
2015-03-10 22:45:43 +00:00
< td class = "text-right" > {{model[folder.id].globalFiles | alwaysNumber}} < span translate > items< / span > , ~{{model[folder.id].globalBytes | binary}}B< / td >
2014-09-10 09:27:21 +00:00
< / tr >
< tr >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-home" > < / span > < span translate > Local State< / span > < / th >
2015-03-10 22:45:43 +00:00
< td class = "text-right" > {{model[folder.id].localFiles | alwaysNumber}} < span translate > items< / span > , ~{{model[folder.id].localBytes | binary}}B< / td >
2014-09-10 09:27:21 +00:00
< / tr >
2015-03-10 22:45:43 +00:00
< tr ng-if = "model[folder.id].needFiles > 0" >
2015-10-08 23:34:11 +00:00
< th > < span class = "fa fa-fw fa-cloud-download" > < / span > < span translate > Out of Sync Items< / span > < / th >
2014-09-10 09:27:21 +00:00
< td class = "text-right" >
2015-08-10 09:22:37 +00:00
< a href = "" ng-click = "showNeed(folder.id)" > {{model[folder.id].needFiles | alwaysNumber}} < span translate > items< / span > , ~{{model[folder.id].needBytes | binary}}B< / a >
2014-09-10 09:27:21 +00:00
< / td >
< / tr >
2015-11-18 09:57:11 +00:00
< tr ng-if = "folderStatus(folder) === 'scanning' && scanRate(folder.id) > 0" >
< th > < span class = "fa fa-fw fa-hourglass-2" > < / span > < span translate > Scan Time Remaining< / span > < / th >
< td class = "text-right" >
2016-03-16 14:55:29 +00:00
< span tooltip data-original-title = "{{scanRate(folder.id) | binary}}B/s" > ~ {{scanRemaining(folder.id)}}< / span >
2015-11-18 09:57:11 +00:00
< / td >
< / tr >
2016-05-04 10:47:33 +00:00
< tr ng-if = "folder.type != 'readonly' && (folderStatus(folder) === 'outofsync' || hasFailedFiles(folder.id))" >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-exclamation-circle" > < / span > < span translate > Failed Items< / span > < / th >
2015-06-26 12:22:52 +00:00
<!-- Show the number of failed items as a link to bring up the list. -->
< td ng-if = "hasFailedFiles(folder.id)" class = "text-right" >
2015-08-10 09:22:37 +00:00
< a href = "" ng-click = "showFailed(folder.id)" > {{failed[folder.id].length | alwaysNumber}} < span translate > items< / span > < / a >
2015-06-26 12:22:52 +00:00
< / td >
2015-08-10 09:22:37 +00:00
<!-- The list of failed items hasn't loaded yet; show a spinner for the time being. -->
2015-06-26 12:22:52 +00:00
< td ng-if = "!hasFailedFiles(folder.id)" class = "text-right" >
2015-08-10 09:22:37 +00:00
< span class = "fa fa-spinner fa-pulse" > < / span >
2015-06-26 12:22:52 +00:00
< / td >
< / tr >
2016-05-04 10:47:33 +00:00
< tr ng-if = "folder.type != 'readwrite'" >
< th > < span class = "fa fa-fw fa-lock" > < / span > < span translate > Folder Type< / span > < / th >
2014-09-10 09:27:21 +00:00
< td class = "text-right" >
2016-05-04 10:47:33 +00:00
< span ng-if = "folder.type == 'readonly'" translate > Master< / span >
< span ng-if = "folder.type != 'readonly'" > {{ folder.type.charAt(0).toUpperCase() + folder.type.slice(1) }}< / span >
2014-09-10 09:27:21 +00:00
< / td >
< / tr >
2015-03-10 22:45:43 +00:00
< tr ng-if = "model[folder.id].ignorePatterns" >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-eye-slash" > < / span > < span translate > Ignore Patterns< / span > < / th >
2015-01-27 14:27:44 +00:00
< td class = "text-right" >
< span translate > Yes< / span >
< / td >
< / tr >
2015-03-10 22:45:43 +00:00
< tr ng-if = "folder.ignorePerms" >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-minus-square-o" > < / span > < span translate > Ignore Permissions< / span > < / th >
2014-09-10 09:27:21 +00:00
< td class = "text-right" >
2014-11-27 19:43:00 +00:00
< span translate > Yes< / span >
2014-09-10 09:27:21 +00:00
< / td >
< / tr >
2015-03-10 22:45:43 +00:00
< tr ng-if = "folder.rescanIntervalS != 60" >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-refresh" > < / span > < span translate > Rescan Interval< / span > < / th >
2015-03-10 22:45:43 +00:00
< td class = "text-right" > {{folder.rescanIntervalS}} s< / td >
2014-09-10 09:27:21 +00:00
< / tr >
2015-04-25 05:13:53 +00:00
< tr ng-if = "folder.order != 'random'" >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-sort" > < / span > < span translate > File Pull Order< / span > < / th >
2015-04-25 05:13:53 +00:00
< td class = "text-right" ng-switch = "folder.order" >
< span ng-switch-when = "random" translate > Random< / span >
< span ng-switch-when = "alphabetic" translate > Alphabetic< / span >
< span ng-switch-when = "smallestFirst" translate > Smallest First< / span >
< span ng-switch-when = "largestFirst" translate > Largest First< / span >
< span ng-switch-when = "oldestFirst" translate > Oldest First< / span >
< span ng-switch-when = "newestFirst" translate > Newest First< / span >
< / td >
< / tr >
2015-03-10 22:45:43 +00:00
< tr ng-if = "folder.versioning.type" >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-files-o" > < / span > < span translate > File Versioning< / span > < / th >
2015-03-19 17:16:48 +00:00
< td class = "text-right" ng-switch = "folder.versioning.type" >
2015-06-12 11:04:00 +00:00
< span ng-switch-when = "trashcan" translate > Trash Can File Versioning< / span >
2015-01-15 14:47:47 +00:00
< span ng-switch-when = "staggered" translate > Staggered File Versioning< / span >
< span ng-switch-when = "simple" translate > Simple File Versioning< / span >
2015-03-19 10:31:21 +00:00
< span ng-switch-when = "external" translate > External File Versioning< / span >
2015-01-15 14:47:47 +00:00
< / td >
< / tr >
2014-12-01 19:50:27 +00:00
< tr >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-share-alt" > < / span > < span translate > Shared With< / span > < / th >
2014-12-01 19:50:27 +00:00
< td class = "text-right" > {{sharesFolder(folder)}}< / td >
< / tr >
2016-06-02 19:26:52 +00:00
< tr >
< th > < span class = "fa fa-fw fa-clock-o" > < / span > < span translate > Last Scan< / span > < / th >
< td translate ng-if = "folderStats[folder.id].lastScanDays >= 365" class = "text-right" > Never< / td >
< td ng-if = "folderStats[folder.id].lastScanDays < 365" class = "text-right" >
< span > {{folderStats[folder.id].lastScan | date:'yyyy-MM-dd HH:mm:ss'}}< / span >
< / td >
< / tr >
2016-05-04 10:47:33 +00:00
< tr ng-if = "folder.type != 'readonly' && folderStats[folder.id].lastFile && folderStats[folder.id].lastFile.filename" >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-exchange" > < / span > < span translate > Last File Received< / span > < / th >
2014-12-07 20:21:12 +00:00
< td class = "text-right" >
2016-03-16 14:55:29 +00:00
< span tooltip data-original-title = "{{folderStats[folder.id].lastFile.filename}} @ {{folderStats[folder.id].lastFile.at | date:'yyyy-MM-dd HH:mm:ss'}}" >
2015-06-16 11:12:34 +00:00
< span translate ng-if = "!folderStats[folder.id].lastFile.deleted" > Updated< / span >
< span translate ng-if = "folderStats[folder.id].lastFile.deleted" > Deleted< / span >
2015-03-10 22:45:43 +00:00
{{folderStats[folder.id].lastFile.filename | basename}}
2014-12-07 20:21:12 +00:00
< / span >
< / td >
< / tr >
2014-09-10 09:27:21 +00:00
< / tbody >
< / table >
< / div >
< div class = "panel-footer" >
2016-05-04 20:30:18 +00:00
< button type = "button" class = "btn btn-sm btn-danger pull-left" ng-click = "override(folder.id)" ng-if = "folderStatus(folder) == 'outofsync' && folder.type == 'readonly'" >
2015-08-10 09:22:37 +00:00
< span class = "fa fa-arrow-circle-up" > < / span > < span translate > Override Changes< / span >
< / button >
2014-06-16 08:47:02 +00:00
< span class = "pull-right" >
2015-11-14 19:01:22 +00:00
< button type = "button" class = "btn btn-sm btn-default" ng-click = "rescanFolder(folder.id)" ng-show = "['idle', 'stopped', 'unshared'].indexOf(folderStatus(folder)) > -1" >
2015-08-10 09:22:37 +00:00
< span class = "fa fa-refresh" > < / span > < span translate > Rescan< / span >
< / button >
< button type = "button" class = "btn btn-sm btn-default" ng-click = "editFolder(folder)" >
< span class = "fa fa-pencil" > < / span > < span translate > Edit< / span >
< / button >
2014-06-16 08:47:02 +00:00
< / span >
2014-09-10 09:27:21 +00:00
< div class = "clearfix" > < / div >
2014-05-24 19:56:09 +00:00
< / div >
2014-05-20 17:36:37 +00:00
< / div >
2014-04-09 21:00:23 +00:00
< / div >
2014-02-12 11:10:44 +00:00
< / div >
2015-02-11 18:52:59 +00:00
< span class = "pull-right" >
2015-08-10 09:22:37 +00:00
< button type = "button" class = "btn btn-sm btn-default" ng-click = "rescanAllFolders()" >
< span class = "fa fa-refresh" > < / span > < span translate > Rescan All< / span >
< / button >
< button type = "button" class = "btn btn-sm btn-default" ng-click = "addFolder()" >
< span class = "fa fa-plus" > < / span > < span translate > Add Folder< / span >
< / button >
2015-02-11 18:52:59 +00:00
< / span >
< div class = "clearfix" > < / div >
2014-09-10 14:56:23 +00:00
< hr class = "visible-sm" / >
2014-04-09 21:00:23 +00:00
< / div >
2014-01-05 22:54:57 +00:00
2014-09-28 11:00:38 +00:00
<!-- Device list (top right) -->
2014-04-09 21:00:23 +00:00
2014-09-28 11:00:38 +00:00
<!-- This device -->
2014-09-10 09:27:21 +00:00
2014-04-09 21:00:23 +00:00
< div class = "col-md-6" >
2016-03-17 20:05:09 +00:00
< h3 translate > This Device< / h3 >
2014-09-28 11:00:38 +00:00
< div class = "panel panel-default" ng-repeat = "deviceCfg in [thisDevice()]" >
2016-05-30 08:18:09 +00:00
< a class = "panel-heading" data-toggle = "collapse" href = "#device-this" >
2016-03-22 20:53:56 +00:00
< h4 class = "panel-title" >
2016-05-30 08:18:09 +00:00
< identicon class = "panel-icon" data-value = "deviceCfg.deviceID" > < / identicon >
< div class = "panel-title-text" > {{deviceName(deviceCfg)}}< / div >
2016-03-22 20:53:56 +00:00
< / h4 >
2016-05-22 16:17:33 +00:00
< / a >
2014-09-28 11:00:38 +00:00
< div id = "device-this" class = "panel-collapse collapse in" >
2014-09-10 09:27:21 +00:00
< div class = "panel-body" >
< table class = "table table-condensed table-striped" >
< tbody >
< tr >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-cloud-download" > < / span > < span translate > Download Rate< / span > < / th >
2015-04-09 10:14:15 +00:00
< td class = "text-right" > {{connectionsTotal.inbps | binary}}B/s ({{connectionsTotal.inBytesTotal | binary}}B)< / td >
2014-09-10 09:27:21 +00:00
< / tr >
< tr >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-cloud-upload" > < / span > < span translate > Upload Rate< / span > < / th >
2015-04-09 10:14:15 +00:00
< td class = "text-right" > {{connectionsTotal.outbps | binary}}B/s ({{connectionsTotal.outBytesTotal | binary}}B)< / td >
2014-09-10 09:27:21 +00:00
< / tr >
2015-06-19 19:52:19 +00:00
< tr >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-home" > < / span > < span translate > Local State (Total)< / span > < / th >
2015-07-20 12:48:03 +00:00
< td class = "text-right" > {{localStateTotal.files | alwaysNumber}} < span translate > items< / span > , ~{{localStateTotal.bytes | binary}}B< / td >
2015-06-19 19:52:19 +00:00
< / tr >
2014-09-10 09:27:21 +00:00
< tr >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-th" > < / span > < span translate > RAM Utilization< / span > < / th >
2014-09-10 09:27:21 +00:00
< td class = "text-right" > {{system.sys | binary}}B< / td >
< / tr >
< tr >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-tachometer" > < / span > < span translate > CPU Utilization< / span > < / th >
2014-09-10 09:27:21 +00:00
< td class = "text-right" > {{system.cpuPercent | alwaysNumber | natural:1}}%< / td >
< / tr >
2016-05-04 19:38:12 +00:00
< tr >
< th > < span class = "fa fa-fw fa-sitemap" > < / span > < span translate > Listeners< / span > < / th >
< td class = "text-right" >
< span ng-if = "listenersFailed.length == 0" class = "data text-success" >
< span > {{listenersTotal}}/{{listenersTotal}}< / span >
< / span >
< span ng-if = "listenersFailed.length != 0" class = "data" ng-class = "{'text-danger': listenersFailed.length == listenersTotal}" >
< span popover data-trigger = "hover" data-placement = "bottom" data-html = "true" data-content = "{{listenersFailed.join('<br>\n')}}" >
{{listenersTotal-listenersFailed.length}}/{{listenersTotal}}
< / span >
< / span >
< / td >
< / tr >
2015-09-20 13:30:25 +00:00
< tr ng-if = "system.discoveryEnabled" >
< th > < span class = "fa fa-fw fa-map-signs" > < / span > < span translate > Discovery< / span > < / th >
2014-09-10 09:27:21 +00:00
< td class = "text-right" >
2015-09-20 13:30:25 +00:00
< span ng-if = "discoveryFailed.length == 0" class = "data text-success" >
< span > {{discoveryTotal}}/{{discoveryTotal}}< / span >
2014-11-18 22:57:21 +00:00
< / span >
2015-09-20 13:30:25 +00:00
< span ng-if = "discoveryFailed.length != 0" class = "data" ng-class = "{'text-danger': discoveryFailed.length == discoveryTotal}" >
< span popover data-trigger = "hover" data-placement = "bottom" data-html = "true" data-content = "{{discoveryFailed.join('<br>\n')}}" >
{{discoveryTotal-discoveryFailed.length}}/{{discoveryTotal}}
2014-11-18 22:57:21 +00:00
< / span >
< / span >
2014-09-10 09:27:21 +00:00
< / td >
< / tr >
2015-04-03 18:00:13 +00:00
< tr >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-clock-o" > < / span > < span translate > Uptime< / span > < / th >
2015-04-03 18:00:13 +00:00
< td class = "text-right" > {{system.uptime | duration:"m"}}< / td >
< / tr >
2014-09-10 09:27:21 +00:00
< tr >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-tag" > < / span > < span translate > Version< / span > < / th >
2016-03-16 14:55:29 +00:00
< td class = "text-right" >
< span tooltip data-original-title = "{{versionString()}}" > {{versionString()}}< / span >
< / td >
2014-09-10 09:27:21 +00:00
< / tr >
< / tbody >
< / table >
2014-05-20 17:36:37 +00:00
< / div >
< / div >
2014-09-10 09:27:21 +00:00
< / div >
2014-09-28 11:00:38 +00:00
<!-- Remote devices -->
2016-03-17 20:05:09 +00:00
< h3 translate > Remote Devices< / h3 >
2014-09-28 11:00:38 +00:00
< div class = "panel-group" id = "devices" >
2014-11-29 12:08:00 +00:00
< div class = "panel panel-default" ng-repeat = "deviceCfg in otherDevices()" >
2016-05-30 08:18:09 +00:00
< a class = "panel-heading" data-toggle = "collapse" data-parent = "#devices" href = "#device-{{$index}}" >
2015-03-10 22:45:43 +00:00
< div class = "panel-progress" ng-show = "deviceStatus(deviceCfg) == 'syncing'" ng-attr-style = "width: {{completion[deviceCfg.deviceID]._total | number:0}}%" > < / div >
2016-03-22 20:53:56 +00:00
< h4 class = "panel-title" >
2016-06-02 23:21:19 +00:00
< identicon class = "panel-icon" data-value = "deviceCfg.deviceID" > < / identicon >
< span > {{deviceName(deviceCfg)}}< / span >
2015-01-08 10:04:27 +00:00
< span ng-switch = "deviceStatus(deviceCfg)" class = "pull-right text-{{deviceClass(deviceCfg)}}" >
< span ng-switch-when = "insync" > < span class = "hidden-xs" translate > Up to Date< / span > < span class = "visible-xs" > ◼ < / span > < / span >
2014-11-29 08:42:16 +00:00
< span ng-switch-when = "syncing" >
2015-03-10 22:45:43 +00:00
< span class = "hidden-xs" translate > Syncing< / span > ({{completion[deviceCfg.deviceID]._total | number:0}}%)
2014-07-26 20:30:29 +00:00
< / span >
2015-08-23 19:56:10 +00:00
< span ng-switch-when = "paused" > < span class = "hidden-xs" translate > Paused< / span > < span class = "visible-xs" > ◼ < / span > < / span >
2015-01-08 10:04:27 +00:00
< span ng-switch-when = "disconnected" > < span class = "hidden-xs" translate > Disconnected< / span > < span class = "visible-xs" > ◼ < / span > < / span >
< span ng-switch-when = "unused" > < span class = "hidden-xs" translate > Unused< / span > < span class = "visible-xs" > ◼ < / span > < / span >
2014-09-08 17:46:33 +00:00
< / span >
2016-03-22 20:53:56 +00:00
< / h4 >
2016-05-22 16:17:33 +00:00
< / a >
2014-09-28 11:00:38 +00:00
< div id = "device-{{$index}}" class = "panel-collapse collapse" >
2014-05-24 19:56:09 +00:00
< div class = "panel-body" >
2014-09-10 09:27:21 +00:00
< table class = "table table-condensed table-striped" >
< tbody >
2015-08-23 19:56:10 +00:00
< tr ng-if = "connections[deviceCfg.deviceID].connected" >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-cloud-download" > < / span > < span translate > Download Rate< / span > < / th >
2015-03-10 22:45:43 +00:00
< td class = "text-right" > {{connections[deviceCfg.deviceID].inbps | binary}}B/s ({{connections[deviceCfg.deviceID].inBytesTotal | binary}}B)< / td >
2014-09-10 09:27:21 +00:00
< / tr >
2015-08-23 19:56:10 +00:00
< tr ng-if = "connections[deviceCfg.deviceID].connected" >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-cloud-upload" > < / span > < span translate > Upload Rate< / span > < / th >
2015-03-10 22:45:43 +00:00
< td class = "text-right" > {{connections[deviceCfg.deviceID].outbps | binary}}B/s ({{connections[deviceCfg.deviceID].outBytesTotal | binary}}B)< / td >
2014-09-10 09:27:21 +00:00
< / tr >
2016-05-04 19:38:12 +00:00
< tr ng-if = "connections[deviceCfg.deviceID].connected" >
< th > < span class = "fa fa-fw fa-link" > < / span > & nbsp< span translate > Address< / span > < / th >
< td class = "text-right" >
< span tooltip data-original-title = "{{ connections[deviceCfg.deviceID].type.indexOf('Relay') > -1 ? '' : connections[deviceCfg.deviceID].type }}" >
{{deviceAddr(deviceCfg)}}
< / span >
< / td >
< / tr >
< tr ng-if = "connections[deviceCfg.deviceID].connected && connections[deviceCfg.deviceID].type.indexOf('Relay') > -1" tooltip data-original-title = "Connections via relays might be rate limited by the relay" >
2016-06-02 23:21:19 +00:00
< th > < span class = "fa fa-fw fa-warning text-danger" > < / span > < span translate > Connection Type< / span > < / th >
2016-05-04 19:38:12 +00:00
< td class = "text-right" > {{connections[deviceCfg.deviceID].type}}< / td >
2014-09-10 09:27:21 +00:00
< / tr >
2015-03-10 22:45:43 +00:00
< tr ng-if = "deviceCfg.compression != 'metadata'" >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-compress" > < / span > < span translate > Compression< / span > < / th >
2015-02-23 08:44:10 +00:00
< td class = "text-right" >
2015-03-10 22:45:43 +00:00
< span ng-if = "deviceCfg.compression == 'always'" translate > All Data< / span >
< span ng-if = "deviceCfg.compression == 'never'" translate > Off< / span >
2015-02-23 08:44:10 +00:00
< / td >
2014-09-10 09:27:21 +00:00
< / tr >
2015-03-10 22:45:43 +00:00
< tr ng-if = "deviceCfg.introducer" >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-thumbs-o-up" > < / span > < span translate > Introducer< / span > < / th >
2014-11-27 19:46:36 +00:00
< td translate class = "text-right" > Yes< / td >
2014-09-23 14:04:20 +00:00
< / tr >
2015-10-22 06:53:28 +00:00
< tr ng-if = "connections[deviceCfg.deviceID].clientVersion" >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-tag" > < / span > < span translate > Version< / span > < / th >
2015-03-10 22:45:43 +00:00
< td class = "text-right" > {{connections[deviceCfg.deviceID].clientVersion}}< / td >
2014-09-10 09:27:21 +00:00
< / tr >
2015-08-23 19:56:10 +00:00
< tr ng-if = "!connections[deviceCfg.deviceID].connected" >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-eye" > < / span > < span translate > Last seen< / span > < / th >
2015-03-10 22:45:43 +00:00
< td translate ng-if = "!deviceStats[deviceCfg.deviceID].lastSeenDays || deviceStats[deviceCfg.deviceID].lastSeenDays >= 365" class = "text-right" > Never< / td >
2015-05-21 08:40:46 +00:00
< td ng-if = "deviceStats[deviceCfg.deviceID].lastSeenDays < 365" class = "text-right" > {{deviceStats[deviceCfg.deviceID].lastSeen | date:"yyyy-MM-dd HH:mm:ss"}}< / td >
2014-09-10 09:27:21 +00:00
< / tr >
2014-11-29 08:42:16 +00:00
< tr ng-if = "deviceFolders(deviceCfg).length > 0" >
2015-08-10 09:22:37 +00:00
< th > < span class = "fa fa-fw fa-folder" > < / span > < span translate > Folders< / span > < / th >
2016-06-01 20:24:43 +00:00
< td class = "text-right" > {{deviceFolders(deviceCfg).map(folderLabel).join(", ")}}< / td >
2014-11-29 08:42:16 +00:00
< / tr >
2014-09-10 09:27:21 +00:00
< / tbody >
< / table >
< / div >
< div class = "panel-footer" >
2015-08-10 09:22:37 +00:00
< span class = "pull-right" >
2015-08-23 19:56:10 +00:00
< button ng-if = "!connections[deviceCfg.deviceID].paused" type = "button" class = "btn btn-sm btn-default" ng-click = "pauseDevice(deviceCfg.deviceID)" >
< span class = "fa fa-pause" > < / span > < span translate > Pause< / span >
< / button >
< button ng-if = "connections[deviceCfg.deviceID].paused" type = "button" class = "btn btn-sm btn-default" ng-click = "resumeDevice(deviceCfg.deviceID)" >
< span class = "fa fa-play" > < / span > < span translate > Resume< / span >
< / button >
2016-06-06 12:39:47 +00:00
< button type = "button" class = "btn btn-sm btn-default" ng-click = "editDevice(deviceCfg)" >
< span class = "fa fa-pencil" > < / span > < span translate > Edit< / span >
< / button >
2015-08-10 09:22:37 +00:00
< / span >
2014-09-10 09:27:21 +00:00
< div class = "clearfix" > < / div >
2014-05-24 19:56:09 +00:00
< / div >
2014-05-20 17:36:37 +00:00
< / div >
2014-04-09 21:00:23 +00:00
< / div >
2014-01-05 22:54:57 +00:00
< / div >
2014-09-27 12:43:11 +00:00
< div class = "form-group" >
2015-08-10 09:22:37 +00:00
< button type = "button" class = "btn btn-sm btn-default pull-right" ng-click = "addDevice()" >
2016-03-17 20:05:09 +00:00
< span class = "fa fa-plus" > < / span > < span translate > Add Remote Device< / span >
2015-08-10 09:22:37 +00:00
< / button >
2014-09-27 12:43:11 +00:00
< div class = "clearfix" > < / div >
< / div >
2014-04-09 21:00:23 +00:00
< / div >
< / div > <!-- /row -->
< / div > <!-- /container -->
<!-- Bottom bar -->
2015-01-10 17:02:27 +00:00
< nav class = "navbar navbar-default navbar-fixed-bottom" >
2014-02-12 11:10:44 +00:00
< div class = "container" >
2014-05-20 17:36:37 +00:00
< ul class = "nav navbar-nav" >
2015-08-10 09:22:37 +00:00
< li > < a class = "navbar-link" href = "https://syncthing.net/" target = "_blank" > < span class = "fa fa-home" > < / span > < span translate > Home page< / span > < / a > < / li >
2016-03-25 07:02:29 +00:00
< li > < a class = "navbar-link" href = "https://docs.syncthing.net/" target = "_blank" > < span class = "fa fa-book" > < / span > < span translate > Documentation< / span > < / a > < / li >
2015-08-10 09:22:37 +00:00
< li > < a class = "navbar-link" href = "https://forum.syncthing.net" target = "_blank" > < span class = "fa fa-question-circle" > < / span > < span translate > Support< / span > < / a > < / li >
< li > < a class = "navbar-link" href = "https://data.syncthing.net/" target = "_blank" > < span class = "fa fa-bar-chart" > < / span > < span translate > Statistics< / span > < / a > < / li >
< li > < a class = "navbar-link" href = "https://github.com/syncthing/syncthing/releases" target = "_blank" > < span class = "fa fa-file-text-o" > < / span > < span translate > Changelog< / span > < / a > < / li >
< li > < a class = "navbar-link" href = "https://github.com/syncthing/syncthing/issues" target = "_blank" > < span class = "fa fa-bug" > < / span > < span translate > Bugs< / span > < / a > < / li >
< li > < a class = "navbar-link" href = "https://github.com/syncthing/syncthing" target = "_blank" > < span class = "fa fa-wrench" > < / span > < span translate > Source Code< / span > < / a > < / li >
< li > < a class = "navbar-link" href = "https://twitter.com/syncthing" target = "_blank" > < span class = "fa fa-twitter" > < / span > Twitter< / a > < / li >
2014-04-09 21:00:23 +00:00
< / ul >
2014-02-12 11:10:44 +00:00
< / div >
2014-04-09 21:00:23 +00:00
< / nav >
2015-08-02 06:27:05 +00:00
< div network-error-dialog > < / div >
< div http-error-dialog > < / div >
< div restarting-dialog > < / div >
< div upgrading-dialog > < / div >
< div shutdown-dialog > < / div >
< div idqr-modal > < / div >
< div major-upgrade-modal > < / div >
< div edit-device-modal > < / div >
< div edit-folder-modal > < / div >
< div edit-ignores-modal > < / div >
< div settings-modal > < / div >
< div advanced-settings-modal > < / div >
< div usage-report-modal > < / div >
< div usage-report-preview-modal > < / div >
< div needed-files-modal > < / div >
< div failed-files-modal > < / div >
2015-08-02 07:05:19 +00:00
< div about-modal > < / div >
2015-07-03 12:07:38 +00:00
2014-11-26 12:39:59 +00:00
<!-- vendor scripts -->
2016-03-28 10:50:19 +00:00
< script src = "vendor/jquery/jquery-2.2.2.js" > < / script >
2016-03-28 10:46:51 +00:00
< script src = "vendor/angular/angular.js" > < / script >
< script src = "vendor/angular/angular-translate.js" > < / script >
< script src = "vendor/angular/angular-translate-loader-static-files.js" > < / script >
2015-04-25 21:53:44 +00:00
< script src = "vendor/angular/angular-dirPagination.js" > < / script >
2016-03-28 10:51:12 +00:00
< script src = "vendor/bootstrap/js/bootstrap.js" > < / script >
2014-11-26 12:39:59 +00:00
<!-- / vendor scripts -->
<!-- gui application code -->
2015-08-02 07:05:19 +00:00
< script src = "syncthing/core/module.js" > < / script >
< script src = "syncthing/core/aboutModalDirective.js" > < / script >
< script src = "syncthing/core/alwaysNumberFilter.js" > < / script >
< script src = "syncthing/core/basenameFilter.js" > < / script >
< script src = "syncthing/core/binaryFilter.js" > < / script >
< script src = "syncthing/core/durationFilter.js" > < / script >
< script src = "syncthing/core/eventService.js" > < / script >
< script src = "syncthing/core/httpErrorDialogDirective.js" > < / script >
< script src = "syncthing/core/identiconDirective.js" > < / script >
< script src = "syncthing/core/languageSelectDirective.js" > < / script >
< script src = "syncthing/core/lastErrorComponentFilter.js" > < / script >
< script src = "syncthing/core/localeService.js" > < / script >
< script src = "syncthing/core/majorUpgradeModalDirective.js" > < / script >
< script src = "syncthing/core/modalDirective.js" > < / script >
< script src = "syncthing/core/naturalFilter.js" > < / script >
< script src = "syncthing/core/networkErrorDialogDirective.js" > < / script >
2016-03-17 23:05:37 +00:00
< script src = "syncthing/core/pathIsSubDirDirective.js" > < / script >
2015-08-02 07:05:19 +00:00
< script src = "syncthing/core/popoverDirective.js" > < / script >
< script src = "syncthing/core/restartingDialogDirective.js" > < / script >
< script src = "syncthing/core/selectOnClickDirective.js" > < / script >
< script src = "syncthing/core/shutdownDialogDirective.js" > < / script >
< script src = "syncthing/core/syncthingController.js" > < / script >
2016-03-16 14:55:29 +00:00
< script src = "syncthing/core/tooltipDirective.js" > < / script >
2015-08-02 07:05:19 +00:00
< script src = "syncthing/core/uniqueFolderDirective.js" > < / script >
< script src = "syncthing/core/upgradingDialogDirective.js" > < / script >
< script src = "syncthing/core/validDeviceidDirective.js" > < / script >
< script src = "syncthing/device/module.js" > < / script >
< script src = "syncthing/device/editDeviceModalDirective.js" > < / script >
< script src = "syncthing/device/idqrModalDirective.js" > < / script >
< script src = "syncthing/folder/module.js" > < / script >
< script src = "syncthing/folder/editFolderModalDirective.js" > < / script >
< script src = "syncthing/folder/editIgnoresModalDirective.js" > < / script >
< script src = "syncthing/settings/module.js" > < / script >
< script src = "syncthing/settings/settingsModalDirective.js" > < / script >
< script src = "syncthing/settings/advancedSettingsModalDirective.js" > < / script >
< script src = "syncthing/transfer/module.js" > < / script >
< script src = "syncthing/transfer/failedFilesModalDirective.js" > < / script >
< script src = "syncthing/transfer/neededFilesModalDirective.js" > < / script >
< script src = "syncthing/usagereport/module.js" > < / script >
< script src = "syncthing/usagereport/usageReportModalDirective.js" > < / script >
< script src = "syncthing/usagereport/usageReportPreviewModalDirective.js" > < / script >
2015-08-02 06:27:05 +00:00
2014-11-26 12:39:59 +00:00
< script src = "assets/lang/valid-langs.js" > < / script >
2015-06-02 06:47:26 +00:00
< script src = "assets/lang/prettyprint.js" > < / script >
2016-05-22 10:26:09 +00:00
< script src = "meta.js" > < / script >
2015-08-02 07:05:19 +00:00
< script src = "syncthing/app.js" > < / script >
2014-11-26 12:39:59 +00:00
<!-- / gui application code -->
2014-01-05 22:54:57 +00:00
< / body >
< / html >