From 48245effdfe2a9c656983b82e4f8d0c8a1220965 Mon Sep 17 00:00:00 2001 From: Majed Abdulaziz Date: Thu, 2 Jun 2016 19:26:52 +0000 Subject: [PATCH] lib/model, lib/stats: Keep track of folder's last scan time (ref #3143) GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/3250 LGTM: calmh, AudriusButkevicius --- gui/default/index.html | 7 +++++++ .../syncthing/core/syncthingController.js | 9 +++++++++ lib/model/model.go | 1 + lib/stats/folder.go | 16 +++++++++++++++- 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/gui/default/index.html b/gui/default/index.html index 293ea0f5..ace7b437 100644 --- a/gui/default/index.html +++ b/gui/default/index.html @@ -360,6 +360,13 @@  Shared With {{sharesFolder(folder)}} + +  Last Scan + Never + + {{folderStats[folder.id].lastScan | date:'yyyy-MM-dd HH:mm:ss'}} + +  Last File Received diff --git a/gui/default/syncthing/core/syncthingController.js b/gui/default/syncthing/core/syncthingController.js index 702726bc..a826f6fb 100755 --- a/gui/default/syncthing/core/syncthingController.js +++ b/gui/default/syncthing/core/syncthingController.js @@ -171,6 +171,12 @@ angular.module('syncthing.core') if (data.to === 'scanning') { delete $scope.scanProgress[data.folder]; } + + // If a folder finished scanning, then refresh folder stats + // to update last scan time. + if(data.from === 'scanning' && data.to === 'idle') { + refreshFolderStats(); + } } }); @@ -585,6 +591,9 @@ angular.module('syncthing.core') if ($scope.folderStats[folder].lastFile) { $scope.folderStats[folder].lastFile.at = new Date($scope.folderStats[folder].lastFile.at); } + + $scope.folderStats[folder].lastScan = new Date($scope.folderStats[folder].lastScan); + $scope.folderStats[folder].lastScanDays = (new Date() - $scope.folderStats[folder].lastScan) / 1000 / 86400; } console.log("refreshfolderStats", data); }).error($scope.emitHTTPError); diff --git a/lib/model/model.go b/lib/model/model.go index 8af94770..e26fd058 100644 --- a/lib/model/model.go +++ b/lib/model/model.go @@ -1602,6 +1602,7 @@ func (m *Model) internalScanFolderSubdirs(folder string, subs []string) error { m.updateLocalsFromScanning(folder, batch) } + m.folderStatRef(folder).ScanCompleted() runner.setState(FolderIdle) return nil } diff --git a/lib/stats/folder.go b/lib/stats/folder.go index c1f36182..1ab97500 100644 --- a/lib/stats/folder.go +++ b/lib/stats/folder.go @@ -13,7 +13,8 @@ import ( ) type FolderStatistics struct { - LastFile LastFile `json:"lastFile"` + LastFile LastFile `json:"lastFile"` + LastScan time.Time `json:"lastScan"` } type FolderStatisticsReference struct { @@ -59,8 +60,21 @@ func (s *FolderStatisticsReference) ReceivedFile(file string, deleted bool) { s.ns.PutBool("lastFileDeleted", deleted) } +func (s *FolderStatisticsReference) ScanCompleted() { + s.ns.PutTime("lastScan", time.Now()) +} + +func (s *FolderStatisticsReference) GetLastScanTime() time.Time { + lastScan, ok := s.ns.Time("lastScan") + if !ok { + return time.Time{} + } + return lastScan +} + func (s *FolderStatisticsReference) GetStatistics() FolderStatistics { return FolderStatistics{ LastFile: s.GetLastFile(), + LastScan: s.GetLastScanTime(), } }