Add UI to choose from backups to restore from

Fixes #296
This commit is contained in:
Girish Ramakrishnan
2017-04-12 13:03:34 -07:00
parent 832c11d785
commit 779c9d79b3
3 changed files with 52 additions and 6 deletions

View File

@@ -58,7 +58,13 @@ angular.module('Application').controller('AppsController', ['$scope', '$location
busy: false,
error: {},
app: {},
password: ''
password: '',
backups: [ ],
selectedBackup: null,
selectBackup: function (backup) {
$scope.appRestore.selectedBackup = backup;
}
};
$scope.appPostInstall = {
@@ -125,6 +131,8 @@ angular.module('Application').controller('AppsController', ['$scope', '$location
$scope.appRestore.error = {};
$scope.appRestore.app = {};
$scope.appRestore.password = '';
$scope.appRestore.selectedBackup = null;
$scope.appRestore.backups = [];
$scope.appRestoreForm.$setPristine();
$scope.appRestoreForm.$setUntouched();
@@ -308,9 +316,20 @@ angular.module('Application').controller('AppsController', ['$scope', '$location
$scope.reset();
$scope.appRestore.app = app;
$scope.appRestore.busy = true;
$('#appRestoreModal').modal('show');
Client.getAppBackups(app.id, function (error, backups) {
if (error) {
Client.error(error)
} else {
$scope.appRestore.backups = backups;
if (backups.length) $scope.appRestore.selectedBackup = backups[0]; // pre-select first backup
$scope.appRestore.busy = false;
}
});
return false; // prevent propagation and default
};
@@ -318,7 +337,7 @@ angular.module('Application').controller('AppsController', ['$scope', '$location
$scope.appRestore.busy = true;
$scope.appRestore.error.password = null;
Client.restoreApp($scope.appRestore.app.id, $scope.appRestore.app.lastBackupId, $scope.appRestore.password, function (error) {
Client.restoreApp($scope.appRestore.app.id, $scope.appRestore.selectedBackup.id, $scope.appRestore.password, function (error) {
if (error && error.statusCode === 403) {
$scope.appRestore.password = '';
$scope.appRestore.error.password = true;