[Composition] Use composition.add from link action

This commit is contained in:
Victor Woeltjen 2015-09-02 09:08:47 -07:00
parent 8e995eba8f
commit b9d8b124ff
2 changed files with 9 additions and 15 deletions

View File

@ -36,20 +36,11 @@ define(
function LinkAction(context) {
this.domainObject = (context || {}).domainObject;
this.selectedObject = (context || {}).selectedObject;
this.selectedId = this.selectedObject && this.selectedObject.getId();
}
LinkAction.prototype.perform = function () {
var self = this;
// Add this domain object's identifier
function addId(model) {
if (Array.isArray(model.composition) &&
model.composition.indexOf(self.selectedId) < 0) {
model.composition.push(self.selectedId);
}
}
// Persist changes to the domain object
function doPersist() {
var persistence =
@ -59,11 +50,13 @@ define(
// Link these objects
function doLink() {
return self.domainObject.useCapability("mutation", addId)
.then(doPersist);
var composition = self.domainObject &&
self.domainObject.getCapability('composition');
return composition && composition.add(self.selectedObject)
.then(doPersist);
}
return this.selectedId && doLink();
return this.selectedObject && doLink();
};
return LinkAction;

View File

@ -63,7 +63,8 @@ define(
*/
CompositionCapability.prototype.add = function (domainObject, index) {
var id = typeof domainObject === 'string' ?
domainObject : domainObject.getId();
domainObject : domainObject.getId(),
$q = this.$q;
function addIdToModel(model) {
var composition = model.composition,
@ -71,9 +72,9 @@ define(
// If no index has been specified already and the id is already
// present, nothing to do. If the id is already at that index,
// also nothing to do.
// also nothing to do, so cancel mutation.
if ((isNaN(index) && oldIndex !== -1) || (index === oldIndex) {
return;
return false;
}
// Pick a specific index if needed.