Move retention and backup schedule interval into a separate settings dialog

This commit is contained in:
Johannes Zellner
2020-05-19 16:13:20 +02:00
parent 1f0b0d7bd1
commit d2a81ce907
2 changed files with 125 additions and 18 deletions
+61 -7
View File
@@ -123,6 +123,16 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat
}
};
$scope.prettyBackupInterval = function (interval) {
var tmp = $scope.intervalTimes.find(function (i) { return i.value === interval; });
return tmp ? tmp.name : '';
};
$scope.prettyBackupRetentionPolicy = function (retentionPolicy) {
var tmp = $scope.retentionPolicies.find(function (p) { return angular.equals(p.value, retentionPolicy); });
return tmp ? tmp.name : '';
};
$scope.createBackup = {
busy: false,
percent: 0,
@@ -262,6 +272,53 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat
download('cloudron_backup.json', JSON.stringify(tmp));
};
$scope.configureScheduleAndRetention = {
busy: false,
error: {},
retentionPolicy: $scope.retentionPolicies[0],
intervalSecs: 24 * 60 * 60,
show: function () {
$scope.configureScheduleAndRetention.error = {};
$scope.configureScheduleAndRetention.busy = false;
$scope.configureScheduleAndRetention.retentionPolicy = $scope.retentionPolicies.find(function (x) { return angular.equals(x.value, $scope.backupConfig.retentionPolicy); }).value;
$scope.configureScheduleAndRetention.intervalSecs = $scope.backupConfig.intervalSecs;
$('#configureScheduleAndRetentionModal').modal('show');
},
submit: function () {
$scope.configureScheduleAndRetention.error = {};
$scope.configureScheduleAndRetention.busy = true;
// start with the full backupConfig since the api requires all fields
var backupConfig = $scope.backupConfig;
backupConfig.retentionPolicy = $scope.configureScheduleAndRetention.retentionPolicy;
backupConfig.intervalSecs = $scope.configureScheduleAndRetention.intervalSecs;
Client.setBackupConfig(backupConfig, function (error) {
$scope.configureScheduleAndRetention.busy = false;
if (error) {
if (error.statusCode === 424) {
$scope.configureScheduleAndRetention.error.generic = error.message;
} else if (error.statusCode === 400) {
$scope.configureScheduleAndRetention.error.generic = error.message;
} else {
console.error('Unable to change schedule or retention.', error);
}
return;
}
$('#configureScheduleAndRetentionModal').modal('hide');
getBackupConfig();
});
}
};
$scope.configureBackup = {
busy: false,
error: {},
@@ -275,8 +332,6 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat
region: '',
endpoint: '',
backupFolder: '',
retentionPolicy: $scope.retentionPolicies[0],
intervalSecs: 24 * 60 * 60,
acceptSelfSignedCerts: false,
useHardlinks: true,
externalDisk: false,
@@ -319,8 +374,6 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat
$scope.configureBackup.endpoint = $scope.backupConfig.endpoint;
$scope.configureBackup.password = $scope.backupConfig.password;
$scope.configureBackup.backupFolder = $scope.backupConfig.backupFolder;
$scope.configureBackup.retentionPolicy = $scope.retentionPolicies.find(function (x) { return angular.equals(x.value, $scope.backupConfig.retentionPolicy); }).value;
$scope.configureBackup.intervalSecs = $scope.backupConfig.intervalSecs;
$scope.configureBackup.format = $scope.backupConfig.format;
$scope.configureBackup.acceptSelfSignedCerts = !!$scope.backupConfig.acceptSelfSignedCerts;
$scope.configureBackup.useHardlinks = !$scope.backupConfig.noHardlinks;
@@ -335,9 +388,10 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat
var backupConfig = {
provider: $scope.configureBackup.provider,
retentionPolicy: $scope.configureBackup.retentionPolicy,
intervalSecs: $scope.configureBackup.intervalSecs,
format: $scope.configureBackup.format
format: $scope.configureBackup.format,
// required for api call to provide all fields
intervalSecs: $scope.backupConfig.intervalSecs,
retentionPolicy: $scope.backupConfig.retentionPolicy
};
if ($scope.configureBackup.password) backupConfig.password = $scope.configureBackup.password;