diff --git a/src/backups.js b/src/backups.js index b4e091041..669053e83 100644 --- a/src/backups.js +++ b/src/backups.js @@ -367,7 +367,7 @@ function runBackupTask(backupId, dataDir, callback) { cp = null; if (error && (error.code === null /* signal */ || (error.code !== 0 && error.code !== 50))) { // backuptask crashed - return callback(new BackupsError(BackupsError.INTERNAL_ERROR, 'backuptask crashed')); + return callback(new BackupsError(BackupsError.INTERNAL_ERROR, 'Backuptask crashed')); } else if (error && error.code === 50) { // exited with error var result = safe.fs.readFileSync(paths.BACKUP_RESULT_FILE, 'utf8') || safe.error.message; return callback(new BackupsError(BackupsError.EXTERNAL_ERROR, result)); @@ -635,7 +635,7 @@ function backupBoxAndApps(auditSource, callback) { var processed = 0; var step = 100/(allApps.length+1); - progress.set(progress.BACKUP, step * processed, ''); + progress.set(progress.BACKUP, Math.min(step * processed, 5), ''); async.mapSeries(allApps, function iterator(app, iteratorCallback) { progress.set(progress.BACKUP, step * processed, 'Backing up ' + (app.altDomain || config.appFqdn(app.location))); diff --git a/webadmin/src/views/settings.html b/webadmin/src/views/settings.html index acc7ec719..15a78a3ad 100644 --- a/webadmin/src/views/settings.html +++ b/webadmin/src/views/settings.html @@ -374,15 +374,22 @@
-
+ +
+
+

+ {{ createBackup.detail || 'Syncing ...' }} +

+
+
+
-

{{ createBackup.message }} {{ createBackup.detail }}

+

{{ createBackup.message }}

{{ createBackup.result }}
-
Backup Successful

diff --git a/webadmin/src/views/settings.js b/webadmin/src/views/settings.js index 25a8d72e7..f80069eae 100644 --- a/webadmin/src/views/settings.js +++ b/webadmin/src/views/settings.js @@ -122,6 +122,31 @@ angular.module('Application').controller('SettingsController', ['$scope', '$loca errorMessage: '', result: '', + updateStatus: function () { + Client.progress(function (error, data) { + if (error) return window.setTimeout($scope.createBackup.updateStatus, 250); + + // check if we are done + if (!data.backup || data.backup.percent >= 100) { + if (data.backup && data.backup.message) console.error('Backup message: ' + data.backup.message); // backup error message + + $scope.createBackup.busy = false; + $scope.createBackup.message = ''; + $scope.createBackup.detail = ''; + $scope.createBackup.percent = 100; // indicates that 'result' is valid + $scope.createBackup.result = data.backup ? data.backup.message : null; + + return fetchBackups(); + } + + $scope.createBackup.busy = true; + $scope.createBackup.percent = data.backup.percent; + $scope.createBackup.message = data.backup.message; + $scope.createBackup.detail = data.backup.detail; + window.setTimeout($scope.createBackup.updateStatus, 500); + }); + }, + doCreateBackup: function () { $scope.createBackup.busy = true; $scope.createBackup.percent = 0; @@ -147,31 +172,7 @@ angular.module('Application').controller('SettingsController', ['$scope', '$loca return; } - function checkIfDone() { - Client.progress(function (error, data) { - if (error) return window.setTimeout(checkIfDone, 250); - - // check if we are done - if (!data.backup || data.backup.percent >= 100) { - if (data.backup && data.backup.message) console.error('Backup message: ' + data.backup.message); // backup error message - - $scope.createBackup.busy = false; - $scope.createBackup.message = ''; - $scope.createBackup.detail = ''; - $scope.createBackup.percent = 100; // indicates that 'result' is valid - $scope.createBackup.result = data.backup ? data.backup.message : null; - - return fetchBackups(); - } - - $scope.createBackup.percent = data.backup.percent; - $scope.createBackup.message = data.backup.message; - $scope.createBackup.detail = data.backup.detail; - window.setTimeout(checkIfDone, 500); - }); - } - - checkIfDone(); + $scope.createBackup.updateStatus(); }); } }; @@ -637,6 +638,9 @@ angular.module('Application').controller('SettingsController', ['$scope', '$loca getBackupConfig(); getAutoupdatePattern(); + // show backup status + $scope.createBackup.updateStatus(); + if ($scope.config.provider === 'caas') { getPlans();