[Save] Show blocking dialog

Show a blocking dialog while the save action is being performed.

Prevents users from pressing save a second time or performing
further actions while a save is in progress.

Fixes https://github.jpl.nasa.gov/MissionControl/vista/issues/362
This commit is contained in:
Pete Richards
2016-06-24 18:33:24 -07:00
parent 8bdf1e3072
commit 24e870a126
6 changed files with 107 additions and 14 deletions

View File

@@ -21,8 +21,8 @@
*****************************************************************************/
define(
[],
function () {
['./SaveInProgressDialog'],
function (SaveInProgressDialog) {
/**
* The "Save" action; the action triggered by clicking Save from
@@ -33,9 +33,11 @@ define(
* @memberof platform/commonUI/edit
*/
function SaveAction(
dialogService,
context
) {
this.domainObject = (context || {}).domainObject;
this.dialogService = dialogService;
}
/**
@@ -46,7 +48,8 @@ define(
* @memberof platform/commonUI/edit.SaveAction#
*/
SaveAction.prototype.perform = function () {
var domainObject = this.domainObject;
var domainObject = this.domainObject,
dialog = new SaveInProgressDialog(this.dialogService);
function resolveWith(object) {
return function () {
@@ -72,8 +75,17 @@ define(
return object;
}
//return doSave().then(returnToBrowse);
return doSave().then(returnToBrowse);
function hideBlockingDialog(object) {
dialog.hide();
return object;
}
dialog.show();
return doSave()
.then(hideBlockingDialog)
.then(returnToBrowse)
.catch(hideBlockingDialog);
};
/**