diff --git a/gui/default/assets/lang/lang-en.json b/gui/default/assets/lang/lang-en.json index bd448ab47..ee135ce8c 100644 --- a/gui/default/assets/lang/lang-en.json +++ b/gui/default/assets/lang/lang-en.json @@ -101,6 +101,7 @@ "Disables comparing and syncing file permissions. Useful on systems with nonexistent or custom permissions (e.g. FAT, exFAT, Synology, Android).": "Disables comparing and syncing file permissions. Useful on systems with nonexistent or custom permissions (e.g. FAT, exFAT, Synology, Android).", "Discard": "Discard", "Disconnected": "Disconnected", + "Disconnected (Inactive)": "Disconnected (Inactive)", "Disconnected (Unused)": "Disconnected (Unused)", "Discovered": "Discovered", "Discovery": "Discovery", @@ -228,6 +229,9 @@ "Minimum Free Disk Space": "Minimum Free Disk Space", "Mod. Device": "Mod. Device", "Mod. Time": "Mod. Time", + "More than a month ago": "More than a month ago", + "More than a week ago": "More than a week ago", + "More than a year ago": "More than a year ago", "Move to top of queue": "Move to top of queue", "Multi level wildcard (matches multiple directory levels)": "Multi level wildcard (matches multiple directory levels)", "Never": "Never", diff --git a/gui/default/index.html b/gui/default/index.html index 59d348768..62f3eaef1 100644 --- a/gui/default/index.html +++ b/gui/default/index.html @@ -748,6 +748,7 @@ + @@ -767,8 +768,21 @@  Last seen - Never - {{deviceStats[deviceCfg.deviceID].lastSeen | date:"yyyy-MM-dd HH:mm:ss"}} + +
+ Never +
+
+
+ {{deviceStats[deviceCfg.deviceID].lastSeen | date:"yyyy-MM-dd HH:mm:ss"}} +
+
+ More than a week ago + More than a month ago + More than a year ago +
+
+  Sync Status diff --git a/gui/default/syncthing/core/syncthingController.js b/gui/default/syncthing/core/syncthingController.js index 4fe78e7ff..ed480a725 100755 --- a/gui/default/syncthing/core/syncthingController.js +++ b/gui/default/syncthing/core/syncthingController.js @@ -865,7 +865,9 @@ angular.module('syncthing.core') $scope.deviceStats = data; for (var device in $scope.deviceStats) { $scope.deviceStats[device].lastSeen = new Date($scope.deviceStats[device].lastSeen); - $scope.deviceStats[device].lastSeenDays = (new Date() - $scope.deviceStats[device].lastSeen) / 1000 / 86400; + if ($scope.deviceStats[device].lastSeen.toISOString() !== '1970-01-01T00:00:00.000Z') { + $scope.deviceStats[device].lastSeenDays = (new Date() - $scope.deviceStats[device].lastSeen) / 1000 / 86400; + } } console.log("refreshDeviceStats", data); }).error($scope.emitHTTPError); @@ -1073,8 +1075,9 @@ angular.module('syncthing.core') $scope.deviceStatus = function (deviceCfg) { var status = ''; + var unused = $scope.deviceFolders(deviceCfg).length === 0; - if ($scope.deviceFolders(deviceCfg).length === 0) { + if (unused) { status = 'unused-'; } @@ -1095,7 +1098,11 @@ angular.module('syncthing.core') } // Disconnected - return status + 'disconnected'; + if (!unused && $scope.deviceStats[deviceCfg.deviceID].lastSeenDays >= 7) { + return status + 'disconnected-inactive'; + } else { + return status + 'disconnected'; + } }; $scope.deviceClass = function (deviceCfg) {