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:
@ -222,7 +222,8 @@ define([
|
|||||||
"policyService",
|
"policyService",
|
||||||
"dialogService",
|
"dialogService",
|
||||||
"creationService",
|
"creationService",
|
||||||
"copyService"
|
"copyService",
|
||||||
|
"transactionService"
|
||||||
],
|
],
|
||||||
"priority": "mandatory"
|
"priority": "mandatory"
|
||||||
},
|
},
|
||||||
|
@ -44,6 +44,7 @@ define([
|
|||||||
dialogService,
|
dialogService,
|
||||||
creationService,
|
creationService,
|
||||||
copyService,
|
copyService,
|
||||||
|
transactionService,
|
||||||
context
|
context
|
||||||
) {
|
) {
|
||||||
this.domainObject = (context || {}).domainObject;
|
this.domainObject = (context || {}).domainObject;
|
||||||
@ -54,6 +55,7 @@ define([
|
|||||||
this.dialogService = dialogService;
|
this.dialogService = dialogService;
|
||||||
this.creationService = creationService;
|
this.creationService = creationService;
|
||||||
this.copyService = copyService;
|
this.copyService = copyService;
|
||||||
|
this.transactionService = transactionService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -111,6 +113,8 @@ define([
|
|||||||
var self = this,
|
var self = this,
|
||||||
domainObject = this.domainObject,
|
domainObject = this.domainObject,
|
||||||
copyService = this.copyService,
|
copyService = this.copyService,
|
||||||
|
transactionService = this.transactionService,
|
||||||
|
cancelOldTransaction,
|
||||||
dialog = new SaveInProgressDialog(this.dialogService);
|
dialog = new SaveInProgressDialog(this.dialogService);
|
||||||
|
|
||||||
function doWizardSave(parent) {
|
function doWizardSave(parent) {
|
||||||
@ -156,6 +160,16 @@ define([
|
|||||||
.then(resolveWith(clonedObject));
|
.then(resolveWith(clonedObject));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function restartTransaction(object) {
|
||||||
|
cancelOldTransaction = transactionService.restartTransaction();
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
|
||||||
|
function doCancelOldTransaction(object) {
|
||||||
|
cancelOldTransaction();
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
|
||||||
function onFailure() {
|
function onFailure() {
|
||||||
hideBlockingDialog();
|
hideBlockingDialog();
|
||||||
return false;
|
return false;
|
||||||
@ -165,8 +179,10 @@ define([
|
|||||||
.then(doWizardSave)
|
.then(doWizardSave)
|
||||||
.then(showBlockingDialog)
|
.then(showBlockingDialog)
|
||||||
.then(getParent)
|
.then(getParent)
|
||||||
|
.then(restartTransaction)
|
||||||
.then(cloneIntoParent)
|
.then(cloneIntoParent)
|
||||||
.then(commitEditingAfterClone)
|
.then(commitEditingAfterClone)
|
||||||
|
.then(doCancelOldTransaction)
|
||||||
.then(hideBlockingDialog)
|
.then(hideBlockingDialog)
|
||||||
.catch(onFailure);
|
.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 () {
|
TransactionService.prototype.size = function () {
|
||||||
return this.onCommits.length;
|
return this.onCommits.length;
|
||||||
};
|
};
|
||||||
|
|
||||||
return TransactionService;
|
return TransactionService;
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
@ -34,6 +34,7 @@ define(
|
|||||||
mockCopyService,
|
mockCopyService,
|
||||||
mockParent,
|
mockParent,
|
||||||
mockUrlService,
|
mockUrlService,
|
||||||
|
mockTransactionService,
|
||||||
actionContext,
|
actionContext,
|
||||||
capabilities = {},
|
capabilities = {},
|
||||||
action;
|
action;
|
||||||
@ -119,11 +120,26 @@ define(
|
|||||||
["urlForLocation"]
|
["urlForLocation"]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
mockTransactionService = jasmine.createSpyObj(
|
||||||
|
"transactionService",
|
||||||
|
["restartTransaction"]
|
||||||
|
);
|
||||||
|
mockTransactionService.restartTransaction
|
||||||
|
.andReturn(jasmine.createSpy());
|
||||||
|
|
||||||
actionContext = {
|
actionContext = {
|
||||||
domainObject: mockDomainObject
|
domainObject: mockDomainObject
|
||||||
};
|
};
|
||||||
|
|
||||||
action = new SaveAsAction(undefined, undefined, mockDialogService, undefined, mockCopyService, actionContext);
|
action = new SaveAsAction(
|
||||||
|
undefined,
|
||||||
|
undefined,
|
||||||
|
mockDialogService,
|
||||||
|
undefined,
|
||||||
|
mockCopyService,
|
||||||
|
mockTransactionService,
|
||||||
|
actionContext
|
||||||
|
);
|
||||||
|
|
||||||
spyOn(action, "getObjectService");
|
spyOn(action, "getObjectService");
|
||||||
action.getObjectService.andReturn(mockObjectService);
|
action.getObjectService.andReturn(mockObjectService);
|
||||||
|
Reference in New Issue
Block a user