Skip to content

Commit

Permalink
gui: weighting % of devices according to folder size (fixes #1300)
Browse files Browse the repository at this point in the history
The completion of remote devices was based only on the average of the percentages of all folders, which is irrelevant in case of two folders with very different sizes.

GitHub-Pull-Request: #3481
LGTM: calmh, AudriusButkevicius
  • Loading branch information
0x010C authored and AudriusButkevicius committed Aug 9, 2016
1 parent dcbf68e commit c9cf01e
Showing 1 changed file with 28 additions and 8 deletions.
36 changes: 28 additions & 8 deletions gui/default/syncthing/core/syncthingController.js
Expand Up @@ -312,15 +312,25 @@ angular.module('syncthing.core')
$scope.completion[data.device][data.folder] = data.completion;

var tot = 0,
cnt = 0;
cnt = 0,
isComplete = true;
for (var cmp in $scope.completion[data.device]) {
if (cmp === "_total") {
continue;
}
tot += $scope.completion[data.device][cmp];
cnt += 1;
tot += $scope.completion[data.device][cmp] * $scope.model[cmp].globalBytes;
cnt += $scope.model[cmp].globalBytes;
if ($scope.completion[data.device][cmp] != 100) {
isComplete = false;
}
}
//To be sure that we won't get any rounding errors resulting in non-100% status when it should be
if (isComplete) {
$scope.completion[data.device]._total = 100;
}
else {
$scope.completion[data.device]._total = tot / cnt;
}
$scope.completion[data.device]._total = tot / cnt;
});

$scope.$on(Events.FOLDER_ERRORS, function (event, arg) {
Expand Down Expand Up @@ -460,15 +470,25 @@ angular.module('syncthing.core')
$scope.completion[device][folder] = data.completion;

var tot = 0,
cnt = 0;
cnt = 0,
isComplete = true;
for (var cmp in $scope.completion[device]) {
if (cmp === "_total") {
continue;
}
tot += $scope.completion[device][cmp];
cnt += 1;
tot += $scope.completion[device][cmp] * $scope.model[cmp].globalBytes;
cnt += $scope.model[cmp].globalBytes;
if ($scope.completion[device][cmp] != 100) {
isComplete = false;
}
}
//To be sure that we won't get any rounding errors resulting in non-100% status when it should be
if (isComplete) {
$scope.completion[device]._total = 100;
}
else {
$scope.completion[device]._total = tot / cnt;
}
$scope.completion[device]._total = tot / cnt;

console.log("refreshCompletion", device, folder, $scope.completion[device]);
}).error($scope.emitHTTPError);
Expand Down

0 comments on commit c9cf01e

Please sign in to comment.