gui: Folder versioning editing cleanup (#7384)
This commit is contained in:
parent
60c218efdb
commit
956d212e99
|
@ -67,7 +67,7 @@ angular.module('syncthing.core')
|
||||||
$scope.versioningDefaults = {
|
$scope.versioningDefaults = {
|
||||||
selector: "none",
|
selector: "none",
|
||||||
trashcanClean: 0,
|
trashcanClean: 0,
|
||||||
versioningCleanupIntervalS: 3600,
|
cleanupIntervalS: 3600,
|
||||||
simpleKeep: 5,
|
simpleKeep: 5,
|
||||||
staggeredMaxAge: 365,
|
staggeredMaxAge: 365,
|
||||||
staggeredCleanInterval: 3600,
|
staggeredCleanInterval: 3600,
|
||||||
|
@ -1886,38 +1886,42 @@ angular.module('syncthing.core')
|
||||||
editFolderModal();
|
editFolderModal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$scope.internalVersioningEnabled = function(guiVersioning) {
|
||||||
|
if (!$scope.currentFolder._guiVersioning) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return ['none', 'external'].indexOf($scope.currentFolder._guiVersioning.selector) === -1;
|
||||||
|
};
|
||||||
|
|
||||||
function initVersioningEditing() {
|
function initVersioningEditing() {
|
||||||
$scope.currentFolder._guiVersioning = angular.copy($scope.versioningDefaults);
|
$scope.currentFolder._guiVersioning = angular.copy($scope.versioningDefaults);
|
||||||
|
|
||||||
if (!$scope.currentFolder.versioning) {
|
var currentVersioning = $scope.currentFolder.versioning;
|
||||||
|
|
||||||
|
if (!currentVersioning || !currentVersioning.type || currentVersioning.type === 'none') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var currentVersioning = $scope.currentFolder.versioning;
|
|
||||||
|
|
||||||
$scope.currentFolder._guiVersioning.cleanupIntervalS = +currentVersioning.cleanupIntervalS;
|
$scope.currentFolder._guiVersioning.cleanupIntervalS = +currentVersioning.cleanupIntervalS;
|
||||||
|
$scope.currentFolder._guiVersioning.selector = currentVersioning.type;
|
||||||
|
if (currentVersioning.type !== 'external') {
|
||||||
|
$scope.currentFolder._guiVersioning.versionsPath = currentVersioning.params.versionsPath;
|
||||||
|
}
|
||||||
|
|
||||||
// Apply parameters currently in use
|
// Apply parameters currently in use
|
||||||
switch (currentVersioning.type) {
|
switch (currentVersioning.type) {
|
||||||
case "trashcan":
|
case "trashcan":
|
||||||
$scope.currentFolder._guiVersioning.selector = "trashcan";
|
|
||||||
$scope.currentFolder._guiVersioning.trashcanClean = +currentVersioning.params.cleanoutDays;
|
$scope.currentFolder._guiVersioning.trashcanClean = +currentVersioning.params.cleanoutDays;
|
||||||
$scope.currentFolder._guiVersioning.versionsPath = currentVersioning.params.versionsPath;
|
|
||||||
break;
|
break;
|
||||||
case "simple":
|
case "simple":
|
||||||
$scope.currentFolder._guiVersioning.selector = "simple";
|
|
||||||
$scope.currentFolder._guiVersioning.simpleKeep = +currentVersioning.params.keep;
|
$scope.currentFolder._guiVersioning.simpleKeep = +currentVersioning.params.keep;
|
||||||
$scope.currentFolder._guiVersioning.trashcanClean = +currentVersioning.params.cleanoutDays;
|
$scope.currentFolder._guiVersioning.trashcanClean = +currentVersioning.params.cleanoutDays;
|
||||||
$scope.currentFolder._guiVersioning.versionsPath = currentVersioning.params.versionsPath;
|
|
||||||
break;
|
break;
|
||||||
case "staggered":
|
case "staggered":
|
||||||
$scope.currentFolder._guiVersioning.selector = "staggered";
|
|
||||||
$scope.currentFolder._guiVersioning.staggeredMaxAge = Math.floor(+currentVersioning.params.maxAge / 86400);
|
$scope.currentFolder._guiVersioning.staggeredMaxAge = Math.floor(+currentVersioning.params.maxAge / 86400);
|
||||||
$scope.currentFolder._guiVersioning.staggeredCleanInterval = +currentVersioning.params.cleanInterval;
|
$scope.currentFolder._guiVersioning.staggeredCleanInterval = +currentVersioning.params.cleanInterval;
|
||||||
$scope.currentFolder._guiVersioning.versionsPath = currentVersioning.params.versionsPath;
|
|
||||||
break;
|
break;
|
||||||
case "external":
|
case "external":
|
||||||
$scope.currentFolder._guiVersioning.selector = "external";
|
|
||||||
$scope.currentFolder._guiVersioning.externalCommand = currentVersioning.params.command;
|
$scope.currentFolder._guiVersioning.externalCommand = currentVersioning.params.command;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2038,46 +2042,25 @@ angular.module('syncthing.core')
|
||||||
folderCfg.devices = newDevices;
|
folderCfg.devices = newDevices;
|
||||||
delete $scope.currentSharing;
|
delete $scope.currentSharing;
|
||||||
|
|
||||||
|
folderCfg.versioning.type = folderCfg._guiVersioning.selector;
|
||||||
|
if ($scope.internalVersioningEnabled()) {
|
||||||
|
folderCfg.versioning.cleanupIntervalS = folderCfg._guiVersioning.cleanupIntervalS;
|
||||||
|
folderCfg.versioning.versionsPath = folderCfg._guiVersioning.versionsPath;
|
||||||
|
}
|
||||||
switch (folderCfg._guiVersioning.selector) {
|
switch (folderCfg._guiVersioning.selector) {
|
||||||
case "trashcan":
|
case "trashcan":
|
||||||
folderCfg.versioning = {
|
folderCfg.versioning.params.cleanoutDays = '' + folderCfg._guiVersioning.trashcanClean;
|
||||||
'type': 'trashcan',
|
|
||||||
'params': {
|
|
||||||
'cleanoutDays': '' + folderCfg._guiVersioning.trashcanClean,
|
|
||||||
'versionsPath': '' + folderCfg._guiVersioning.versionsPath
|
|
||||||
},
|
|
||||||
'cleanupIntervalS': folderCfg._guiVersioning.cleanupIntervalS
|
|
||||||
};
|
|
||||||
break;
|
break;
|
||||||
case "simple":
|
case "simple":
|
||||||
folderCfg.versioning = {
|
folderCfg.versioning.params.keep = '' + folderCfg._guiVersioning.simpleKeep,
|
||||||
'type': 'simple',
|
folderCfg.versioning.params.cleanoutDays = '' + folderCfg._guiVersioning.trashcanClean;
|
||||||
'params': {
|
|
||||||
'keep': '' + folderCfg._guiVersioning.simpleKeep,
|
|
||||||
'cleanoutDays': '' + folderCfg._guiVersioning.trashcanClean,
|
|
||||||
'versionsPath': '' + folderCfg._guiVersioning.versionsPath
|
|
||||||
},
|
|
||||||
'cleanupIntervalS': folderCfg._guiVersioning.cleanupIntervalS
|
|
||||||
};
|
|
||||||
break;
|
break;
|
||||||
case "staggered":
|
case "staggered":
|
||||||
folderCfg.versioning = {
|
folderCfg.versioning.params.maxAge = '' + (folderCfg._guiVersioning.staggeredMaxAge * 86400);
|
||||||
'type': 'staggered',
|
folderCfg.versioning.params.cleanInterval = '' + folderCfg._guiVersioning.staggeredCleanInterval;
|
||||||
'params': {
|
|
||||||
'maxAge': '' + (folderCfg._guiVersioning.staggeredMaxAge * 86400),
|
|
||||||
'cleanInterval': '' + folderCfg._guiVersioning.staggeredCleanInterval,
|
|
||||||
'versionsPath': '' + folderCfg._guiVersioning.versionsPath
|
|
||||||
},
|
|
||||||
'cleanupIntervalS': folderCfg._guiVersioning.cleanupIntervalS
|
|
||||||
};
|
|
||||||
break;
|
break;
|
||||||
case "external":
|
case "external":
|
||||||
folderCfg.versioning = {
|
folderCfg.versioning.params.command = '' + folderCfg._guiVersioning.externalCommand;
|
||||||
'type': 'external',
|
|
||||||
'params': {
|
|
||||||
'command': '' + folderCfg._guiVersioning.externalCommand
|
|
||||||
},
|
|
||||||
};
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
delete folderCfg.versioning;
|
delete folderCfg.versioning;
|
||||||
|
|
|
@ -132,7 +132,7 @@
|
||||||
<span translate ng-if="folderEditor._guiVersioning.staggeredMaxAge.$error.min && folderEditor._guiVersioning.staggeredMaxAge.$dirty">A negative number of days doesn't make sense.</span>
|
<span translate ng-if="folderEditor._guiVersioning.staggeredMaxAge.$error.min && folderEditor._guiVersioning.staggeredMaxAge.$dirty">A negative number of days doesn't make sense.</span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" ng-if="currentFolder._guiVersioning.selector != 'none' && currentFolder._guiVersioning.selector != 'external'">
|
<div class="form-group" ng-if="internalVersioningEnabled()">
|
||||||
<label translate for="versionsPath">Versions Path</label>
|
<label translate for="versionsPath">Versions Path</label>
|
||||||
<input name="versionsPath" id="versionsPath" class="form-control" type="text" ng-model="currentFolder._guiVersioning.versionsPath" />
|
<input name="versionsPath" id="versionsPath" class="form-control" type="text" ng-model="currentFolder._guiVersioning.versionsPath" />
|
||||||
<p translate class="help-block">Path where versions should be stored (leave empty for the default .stversions directory in the shared folder).</p>
|
<p translate class="help-block">Path where versions should be stored (leave empty for the default .stversions directory in the shared folder).</p>
|
||||||
|
@ -146,7 +146,7 @@
|
||||||
<span translate ng-if="folderEditor.externalCommand.$error.required && folderEditor.externalCommand.$dirty">The path cannot be blank.</span>
|
<span translate ng-if="folderEditor.externalCommand.$error.required && folderEditor.externalCommand.$dirty">The path cannot be blank.</span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" ng-if="currentFolder._guiVersioning.selector != 'none' && currentFolder._guiVersioning.selector != 'external'" ng-class="{'has-error': folderEditor._guiVersioning.cleanupIntervalS.$invalid && folderEditor._guiVersioning.cleanupIntervalS.$dirty}">
|
<div class="form-group" ng-if="internalVersioningEnabled()" ng-class="{'has-error': folderEditor._guiVersioning.cleanupIntervalS.$invalid && folderEditor._guiVersioning.cleanupIntervalS.$dirty}">
|
||||||
<label translate for="versioningCleanupIntervalS">Cleanup Interval</label>
|
<label translate for="versioningCleanupIntervalS">Cleanup Interval</label>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input name="versioningCleanupIntervalS" id="versioningCleanupIntervalS" class="form-control text-right" type="number" ng-model="currentFolder._guiVersioning.cleanupIntervalS" required="" min="0" max="31536000" aria-required="true" />
|
<input name="versioningCleanupIntervalS" id="versioningCleanupIntervalS" class="form-control text-right" type="number" ng-model="currentFolder._guiVersioning.cleanupIntervalS" required="" min="0" max="31536000" aria-required="true" />
|
||||||
|
|
|
@ -67,7 +67,7 @@ angular.module('syncthing.core')
|
||||||
$scope.versioningDefaults = {
|
$scope.versioningDefaults = {
|
||||||
selector: "none",
|
selector: "none",
|
||||||
trashcanClean: 0,
|
trashcanClean: 0,
|
||||||
versioningCleanupIntervalS: 3600,
|
cleanupIntervalS: 3600,
|
||||||
simpleKeep: 5,
|
simpleKeep: 5,
|
||||||
staggeredMaxAge: 365,
|
staggeredMaxAge: 365,
|
||||||
staggeredCleanInterval: 3600,
|
staggeredCleanInterval: 3600,
|
||||||
|
@ -1903,38 +1903,42 @@ angular.module('syncthing.core')
|
||||||
editFolderModal();
|
editFolderModal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$scope.internalVersioningEnabled = function(guiVersioning) {
|
||||||
|
if (!$scope.currentFolder._guiVersioning) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return ['none', 'external'].indexOf($scope.currentFolder._guiVersioning.selector) === -1;
|
||||||
|
};
|
||||||
|
|
||||||
function initVersioningEditing() {
|
function initVersioningEditing() {
|
||||||
$scope.currentFolder._guiVersioning = angular.copy($scope.versioningDefaults);
|
$scope.currentFolder._guiVersioning = angular.copy($scope.versioningDefaults);
|
||||||
|
|
||||||
if (!$scope.currentFolder.versioning) {
|
var currentVersioning = $scope.currentFolder.versioning;
|
||||||
|
|
||||||
|
if (!currentVersioning || !currentVersioning.type || currentVersioning.type === 'none') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var currentVersioning = $scope.currentFolder.versioning;
|
|
||||||
|
|
||||||
$scope.currentFolder._guiVersioning.cleanupIntervalS = +currentVersioning.cleanupIntervalS;
|
$scope.currentFolder._guiVersioning.cleanupIntervalS = +currentVersioning.cleanupIntervalS;
|
||||||
|
$scope.currentFolder._guiVersioning.selector = currentVersioning.type;
|
||||||
|
if (currentVersioning.type !== 'external') {
|
||||||
|
$scope.currentFolder._guiVersioning.versionsPath = currentVersioning.params.versionsPath;
|
||||||
|
}
|
||||||
|
|
||||||
// Apply parameters currently in use
|
// Apply parameters currently in use
|
||||||
switch (currentVersioning.type) {
|
switch (currentVersioning.type) {
|
||||||
case "trashcan":
|
case "trashcan":
|
||||||
$scope.currentFolder._guiVersioning.selector = "trashcan";
|
|
||||||
$scope.currentFolder._guiVersioning.trashcanClean = +currentVersioning.params.cleanoutDays;
|
$scope.currentFolder._guiVersioning.trashcanClean = +currentVersioning.params.cleanoutDays;
|
||||||
$scope.currentFolder._guiVersioning.versionsPath = currentVersioning.params.versionsPath;
|
|
||||||
break;
|
break;
|
||||||
case "simple":
|
case "simple":
|
||||||
$scope.currentFolder._guiVersioning.selector = "simple";
|
|
||||||
$scope.currentFolder._guiVersioning.simpleKeep = +currentVersioning.params.keep;
|
$scope.currentFolder._guiVersioning.simpleKeep = +currentVersioning.params.keep;
|
||||||
$scope.currentFolder._guiVersioning.trashcanClean = +currentVersioning.params.cleanoutDays;
|
$scope.currentFolder._guiVersioning.trashcanClean = +currentVersioning.params.cleanoutDays;
|
||||||
$scope.currentFolder._guiVersioning.versionsPath = currentVersioning.params.versionsPath;
|
|
||||||
break;
|
break;
|
||||||
case "staggered":
|
case "staggered":
|
||||||
$scope.currentFolder._guiVersioning.selector = "staggered";
|
|
||||||
$scope.currentFolder._guiVersioning.staggeredMaxAge = Math.floor(+currentVersioning.params.maxAge / 86400);
|
$scope.currentFolder._guiVersioning.staggeredMaxAge = Math.floor(+currentVersioning.params.maxAge / 86400);
|
||||||
$scope.currentFolder._guiVersioning.staggeredCleanInterval = +currentVersioning.params.cleanInterval;
|
$scope.currentFolder._guiVersioning.staggeredCleanInterval = +currentVersioning.params.cleanInterval;
|
||||||
$scope.currentFolder._guiVersioning.versionsPath = currentVersioning.params.versionsPath;
|
|
||||||
break;
|
break;
|
||||||
case "external":
|
case "external":
|
||||||
$scope.currentFolder._guiVersioning.selector = "external";
|
|
||||||
$scope.currentFolder._guiVersioning.externalCommand = currentVersioning.params.command;
|
$scope.currentFolder._guiVersioning.externalCommand = currentVersioning.params.command;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2057,46 +2061,25 @@ angular.module('syncthing.core')
|
||||||
folderCfg.devices = newDevices;
|
folderCfg.devices = newDevices;
|
||||||
delete $scope.currentSharing;
|
delete $scope.currentSharing;
|
||||||
|
|
||||||
|
folderCfg.versioning.type = folderCfg._guiVersioning.selector;
|
||||||
|
if ($scope.internalVersioningEnabled()) {
|
||||||
|
folderCfg.versioning.cleanupIntervalS = folderCfg._guiVersioning.cleanupIntervalS;
|
||||||
|
folderCfg.versioning.versionsPath = folderCfg._guiVersioning.versionsPath;
|
||||||
|
}
|
||||||
switch (folderCfg._guiVersioning.selector) {
|
switch (folderCfg._guiVersioning.selector) {
|
||||||
case "trashcan":
|
case "trashcan":
|
||||||
folderCfg.versioning = {
|
folderCfg.versioning.params.cleanoutDays = '' + folderCfg._guiVersioning.trashcanClean;
|
||||||
'type': 'trashcan',
|
|
||||||
'params': {
|
|
||||||
'cleanoutDays': '' + folderCfg._guiVersioning.trashcanClean,
|
|
||||||
'versionsPath': '' + folderCfg._guiVersioning.versionsPath
|
|
||||||
},
|
|
||||||
'cleanupIntervalS': folderCfg._guiVersioning.cleanupIntervalS
|
|
||||||
};
|
|
||||||
break;
|
break;
|
||||||
case "simple":
|
case "simple":
|
||||||
folderCfg.versioning = {
|
folderCfg.versioning.params.keep = '' + folderCfg._guiVersioning.simpleKeep,
|
||||||
'type': 'simple',
|
folderCfg.versioning.params.cleanoutDays = '' + folderCfg._guiVersioning.trashcanClean;
|
||||||
'params': {
|
|
||||||
'keep': '' + folderCfg._guiVersioning.simpleKeep,
|
|
||||||
'cleanoutDays': '' + folderCfg._guiVersioning.trashcanClean,
|
|
||||||
'versionsPath': '' + folderCfg._guiVersioning.versionsPath
|
|
||||||
},
|
|
||||||
'cleanupIntervalS': folderCfg._guiVersioning.cleanupIntervalS
|
|
||||||
};
|
|
||||||
break;
|
break;
|
||||||
case "staggered":
|
case "staggered":
|
||||||
folderCfg.versioning = {
|
folderCfg.versioning.params.maxAge = '' + (folderCfg._guiVersioning.staggeredMaxAge * 86400);
|
||||||
'type': 'staggered',
|
folderCfg.versioning.params.cleanInterval = '' + folderCfg._guiVersioning.staggeredCleanInterval;
|
||||||
'params': {
|
|
||||||
'maxAge': '' + (folderCfg._guiVersioning.staggeredMaxAge * 86400),
|
|
||||||
'cleanInterval': '' + folderCfg._guiVersioning.staggeredCleanInterval,
|
|
||||||
'versionsPath': '' + folderCfg._guiVersioning.versionsPath
|
|
||||||
},
|
|
||||||
'cleanupIntervalS': folderCfg._guiVersioning.cleanupIntervalS
|
|
||||||
};
|
|
||||||
break;
|
break;
|
||||||
case "external":
|
case "external":
|
||||||
folderCfg.versioning = {
|
folderCfg.versioning.params.command = '' + folderCfg._guiVersioning.externalCommand;
|
||||||
'type': 'external',
|
|
||||||
'params': {
|
|
||||||
'command': '' + folderCfg._guiVersioning.externalCommand
|
|
||||||
},
|
|
||||||
};
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
delete folderCfg.versioning;
|
delete folderCfg.versioning;
|
||||||
|
|
|
@ -120,7 +120,7 @@
|
||||||
<span translate ng-if="folderEditor._guiVersioning.staggeredMaxAge.$error.min && folderEditor._guiVersioning.staggeredMaxAge.$dirty">A negative number of days doesn't make sense.</span>
|
<span translate ng-if="folderEditor._guiVersioning.staggeredMaxAge.$error.min && folderEditor._guiVersioning.staggeredMaxAge.$dirty">A negative number of days doesn't make sense.</span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" ng-if="currentFolder._guiVersioning.selector != 'none' && currentFolder._guiVersioning.selector != 'external'">
|
<div class="form-group" ng-if="internalVersioningEnabled()">
|
||||||
<label translate for="versionsPath">Versions Path</label>
|
<label translate for="versionsPath">Versions Path</label>
|
||||||
<input name="versionsPath" id="versionsPath" class="form-control" type="text" ng-model="currentFolder._guiVersioning.versionsPath" />
|
<input name="versionsPath" id="versionsPath" class="form-control" type="text" ng-model="currentFolder._guiVersioning.versionsPath" />
|
||||||
<p translate class="help-block">Path where versions should be stored (leave empty for the default .stversions directory in the shared folder).</p>
|
<p translate class="help-block">Path where versions should be stored (leave empty for the default .stversions directory in the shared folder).</p>
|
||||||
|
@ -134,7 +134,7 @@
|
||||||
<span translate ng-if="folderEditor.externalCommand.$error.required && folderEditor.externalCommand.$dirty">The path cannot be blank.</span>
|
<span translate ng-if="folderEditor.externalCommand.$error.required && folderEditor.externalCommand.$dirty">The path cannot be blank.</span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" ng-if="currentFolder._guiVersioning.selector != 'none' && currentFolder._guiVersioning.selector != 'external'" ng-class="{'has-error': folderEditor._guiVersioning.cleanupIntervalS.$invalid && folderEditor._guiVersioning.cleanupIntervalS.$dirty}">
|
<div class="form-group" ng-if="internalVersioningEnabled()" ng-class="{'has-error': folderEditor._guiVersioning.cleanupIntervalS.$invalid && folderEditor._guiVersioning.cleanupIntervalS.$dirty}">
|
||||||
<label translate for="versioningCleanupIntervalS">Cleanup Interval</label>
|
<label translate for="versioningCleanupIntervalS">Cleanup Interval</label>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<input name="versioningCleanupIntervalS" id="versioningCleanupIntervalS" class="form-control text-right" type="number" ng-model="currentFolder._guiVersioning.cleanupIntervalS" required="" min="0" max="31536000" aria-required="true" />
|
<input name="versioningCleanupIntervalS" id="versioningCleanupIntervalS" class="form-control text-right" type="number" ng-model="currentFolder._guiVersioning.cleanupIntervalS" required="" min="0" max="31536000" aria-required="true" />
|
||||||
|
|
Loading…
Reference in New Issue