mirror of
https://github.com/nasa/openmct.git
synced 2025-06-17 22:58:14 +00:00
Squashed commit of the following:
commit3f199a9f06
Merge:27fe4ed
736cba7
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Mon Jun 27 09:04:40 2016 -0700 Merge remote-tracking branch 'origin/master' into clear-transactions-1046 Conflicts: platform/commonUI/edit/src/actions/SaveAsAction.js commit27fe4edb30
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Jun 22 15:04:06 2016 -0700 [Edit] Mark restartTransaction as private API commit21d1938a0f
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Jun 22 15:03:17 2016 -0700 [Edit] Clarify JSDoc commit06a83f9fa9
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Jun 22 15:01:35 2016 -0700 [Edit] Update failing spec commit1f525160e0
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Jun 22 14:52:43 2016 -0700 [Edit] Refer to correct variable ...when clearing transactions after a restartTransaction commitb60e94bce4
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Jun 22 14:38:54 2016 -0700 [Edit] Clear transactions on Save As ...such that only persistence calls associated with the saved clones are actually issued. Fixes #1046.
This commit is contained in:
@ -44,6 +44,7 @@ define([
|
||||
dialogService,
|
||||
creationService,
|
||||
copyService,
|
||||
transactionService,
|
||||
context
|
||||
) {
|
||||
this.domainObject = (context || {}).domainObject;
|
||||
@ -54,6 +55,7 @@ define([
|
||||
this.dialogService = dialogService;
|
||||
this.creationService = creationService;
|
||||
this.copyService = copyService;
|
||||
this.transactionService = transactionService;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -111,6 +113,8 @@ define([
|
||||
var self = this,
|
||||
domainObject = this.domainObject,
|
||||
copyService = this.copyService,
|
||||
transactionService = this.transactionService,
|
||||
cancelOldTransaction,
|
||||
dialog = new SaveInProgressDialog(this.dialogService);
|
||||
|
||||
function doWizardSave(parent) {
|
||||
@ -156,6 +160,16 @@ define([
|
||||
.then(resolveWith(clonedObject));
|
||||
}
|
||||
|
||||
function restartTransaction(object) {
|
||||
cancelOldTransaction = transactionService.restartTransaction();
|
||||
return object;
|
||||
}
|
||||
|
||||
function doCancelOldTransaction(object) {
|
||||
cancelOldTransaction();
|
||||
return object;
|
||||
}
|
||||
|
||||
function onFailure() {
|
||||
hideBlockingDialog();
|
||||
return false;
|
||||
@ -165,8 +179,10 @@ define([
|
||||
.then(doWizardSave)
|
||||
.then(showBlockingDialog)
|
||||
.then(getParent)
|
||||
.then(restartTransaction)
|
||||
.then(cloneIntoParent)
|
||||
.then(commitEditingAfterClone)
|
||||
.then(doCancelOldTransaction)
|
||||
.then(hideBlockingDialog)
|
||||
.catch(onFailure);
|
||||
};
|
||||
|
@ -140,9 +140,38 @@ define(
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Clear and restart the active transaction.
|
||||
*
|
||||
* This neither cancels nor commits the active transaction;
|
||||
* instead, it returns a function that can be used to cancel that
|
||||
* transaction.
|
||||
*
|
||||
* @returns {Function} a function to cancel the prior transaction
|
||||
* @private
|
||||
*/
|
||||
TransactionService.prototype.restartTransaction = function () {
|
||||
var oldOnCancels = this.onCancels;
|
||||
|
||||
this.onCommits = [];
|
||||
this.onCancels = [];
|
||||
|
||||
return function () {
|
||||
while (oldOnCancels.length > 0) {
|
||||
var onCancel = oldOnCancels.pop();
|
||||
try {
|
||||
onCancel();
|
||||
} catch (error) {
|
||||
this.$log.error("Error cancelling transaction.");
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
TransactionService.prototype.size = function () {
|
||||
return this.onCommits.length;
|
||||
};
|
||||
|
||||
return TransactionService;
|
||||
});
|
||||
}
|
||||
);
|
||||
|
Reference in New Issue
Block a user