mirror of
https://github.com/nasa/openmct.git
synced 2025-04-10 04:40:05 +00:00
Squashed commit of the following:
commit 3f199a9f061237a8d1d0dff46b6334ad78356e6a 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 commit 27fe4edb30931c2eed0c0e027e6c335b2eca79db Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Jun 22 15:04:06 2016 -0700 [Edit] Mark restartTransaction as private API commit 21d1938a0f6c2430e7350c69075f51ea6cb064ac Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Jun 22 15:03:17 2016 -0700 [Edit] Clarify JSDoc commit 06a83f9fa98b6257c0ec8e937289256edaf918ff Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Jun 22 15:01:35 2016 -0700 [Edit] Update failing spec commit 1f525160e007c5c436b738833dcd0db3faeedca0 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 commit b60e94bce414044ce04b99467a8828be90ea871e 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:
parent
736cba76bb
commit
d1c01d3c86
@ -222,7 +222,8 @@ define([
|
||||
"policyService",
|
||||
"dialogService",
|
||||
"creationService",
|
||||
"copyService"
|
||||
"copyService",
|
||||
"transactionService"
|
||||
],
|
||||
"priority": "mandatory"
|
||||
},
|
||||
|
@ -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;
|
||||
});
|
||||
}
|
||||
);
|
||||
|
@ -34,6 +34,7 @@ define(
|
||||
mockCopyService,
|
||||
mockParent,
|
||||
mockUrlService,
|
||||
mockTransactionService,
|
||||
actionContext,
|
||||
capabilities = {},
|
||||
action;
|
||||
@ -119,11 +120,26 @@ define(
|
||||
["urlForLocation"]
|
||||
);
|
||||
|
||||
mockTransactionService = jasmine.createSpyObj(
|
||||
"transactionService",
|
||||
["restartTransaction"]
|
||||
);
|
||||
mockTransactionService.restartTransaction
|
||||
.andReturn(jasmine.createSpy());
|
||||
|
||||
actionContext = {
|
||||
domainObject: mockDomainObject
|
||||
};
|
||||
|
||||
action = new SaveAsAction(undefined, undefined, mockDialogService, undefined, mockCopyService, actionContext);
|
||||
action = new SaveAsAction(
|
||||
undefined,
|
||||
undefined,
|
||||
mockDialogService,
|
||||
undefined,
|
||||
mockCopyService,
|
||||
mockTransactionService,
|
||||
actionContext
|
||||
);
|
||||
|
||||
spyOn(action, "getObjectService");
|
||||
action.getObjectService.andReturn(mockObjectService);
|
||||
|
Loading…
x
Reference in New Issue
Block a user