diff --git a/src/js/client.js b/src/js/client.js
index b91856af8..70e6b81b4 100644
--- a/src/js/client.js
+++ b/src/js/client.js
@@ -1171,6 +1171,15 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout
}
};
+ Client.prototype.editBackup = function (backupId, label, preserveSecs, callback) {
+ post('/api/v1/backups/' + backupId, { label: label, preserveSecs: preserveSecs }, null, function (error, data, status) {
+ if (error) return callback(error);
+ if (status !== 200) return callback(new ClientError(status, data));
+
+ callback(null);
+ });
+ };
+
Client.prototype.startBackup = function (callback) {
post('/api/v1/backups/create', {}, null, function (error, data, status) {
if (error) return callback(error);
diff --git a/src/views/backups.html b/src/views/backups.html
index 0943a002a..5dde0ec92 100644
--- a/src/views/backups.html
+++ b/src/views/backups.html
@@ -10,6 +10,14 @@
{{ 'backups.backupDetails.id' | tr }}:
{{ backupDetails.backup.id }}
+
+
Label:
+
{{ backupDetails.backup.label }}
+
+
+
PreserveSecs:
+
{{ backupDetails.backup.preserveSecs }}
+
{{ 'backups.backupDetails.date' | tr }}:
{{ backupDetails.backup.creationTime | prettyLongDate }}
@@ -35,6 +43,36 @@
+
+
+
@@ -506,7 +544,8 @@
{{ 'backups.listing.version' | tr }} |
{{ 'main.table.date' | tr }} |
{{ 'backups.listing.contents' | tr }} |
- {{ 'main.actions' | tr }} |
+ Label |
+ {{ 'main.actions' | tr }} |
@@ -517,7 +556,9 @@
{{ 'backups.listing.noApps' | tr }}
{{ 'backups.listing.appCount' | tr:{ appCount: backup.contents.length } }}
+ {{ backup.label }} |
+
|
diff --git a/src/views/backups.js b/src/views/backups.js
index 913814641..0c9500291 100644
--- a/src/views/backups.js
+++ b/src/views/backups.js
@@ -368,6 +368,39 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat
download(filename, JSON.stringify(tmp, null, 4));
};
+ $scope.editBackup = {
+ busy: false,
+ error: null,
+ backup: null,
+
+ label: '',
+ preserveSecs: 0,
+
+ show: function (backup) {
+ $scope.editBackup.backup = backup;
+ $scope.editBackup.label = backup.label;
+ $scope.editBackup.preserveSecs = backup.preserveSecs || 0;
+ $scope.editBackup.error = null;
+ $scope.editBackup.busy = false;
+
+ $('#editBackupModal').modal('show');
+ },
+
+ submit: function () {
+ $scope.editBackup.error = null;
+ $scope.editBackup.busy = true;
+
+ Client.editBackup($scope.editBackup.backup.id, $scope.editBackup.label, $scope.editBackup.preserveSecs, function (error) {
+ $scope.editBackup.busy = false;
+ if (error) return $scope.editBackup.error = error.message;
+
+ fetchBackups();
+
+ $('#editBackupModal').modal('hide');
+ });
+ }
+ };
+
$scope.backupDetails = {
backup: null,
@@ -824,7 +857,7 @@ angular.module('Application').controller('BackupsController', ['$scope', '$locat
document.getElementById('gcsKeyFileInput').onchange = readFileLocally($scope.configureBackup.gcsKey, 'content', 'keyFileName');
// setup all the dialog focus handling
- ['configureBackupModal'].forEach(function (id) {
+ ['configureBackupModal', 'editBackupModal'].forEach(function (id) {
$('#' + id).on('shown.bs.modal', function () {
$(this).find("[autofocus]:first").focus();
});