[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) { function LinkAction(context) {
this.domainObject = (context || {}).domainObject; this.domainObject = (context || {}).domainObject;
this.selectedObject = (context || {}).selectedObject; this.selectedObject = (context || {}).selectedObject;
this.selectedId = this.selectedObject && this.selectedObject.getId();
} }
LinkAction.prototype.perform = function () { LinkAction.prototype.perform = function () {
var self = this; 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 // Persist changes to the domain object
function doPersist() { function doPersist() {
var persistence = var persistence =
@ -59,11 +50,13 @@ define(
// Link these objects // Link these objects
function doLink() { function doLink() {
return self.domainObject.useCapability("mutation", addId) var composition = self.domainObject &&
.then(doPersist); self.domainObject.getCapability('composition');
return composition && composition.add(self.selectedObject)
.then(doPersist);
} }
return this.selectedId && doLink(); return this.selectedObject && doLink();
}; };
return LinkAction; return LinkAction;

View File

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