Files
openmct/platform/entanglement/src/capabilities/LocationCapability.js
2015-08-06 15:21:28 -07:00

78 lines
2.2 KiB
JavaScript

/*global define */
define(
function () {
"use strict";
function LocationCapability(domainObject) {
this.domainObject = domainObject;
return this;
}
/**
* Persist the current location of the current domain object as it's
* primary location. Returns a promise.
*/
LocationCapability.prototype.persistLocation = function () {
return this.domainObject.useCapability(
'mutation',
function (model) {
model.location = this.getLocation();
}.bind(this)
).then(function () {
return this.domainObject
.getCapability('persistence')
.persist();
}.bind(this));
};
/**
* Return the current location of the current domain object. Only
* valid for domain objects that have a context capability.
*/
LocationCapability.prototype.getLocation = function () {
var context = this.domainObject.getCapability("context"),
pathObjects,
pathIds;
if (!context) {
return '';
}
return context.getParent().getId();
};
/**
* Returns true if the domainObject is a link, false if it's an
* original.
*/
LocationCapability.prototype.isLink = function () {
if (this.domainObject.getId() === "mine") {
return false;
}
var model = this.domainObject.getModel();
return model.location !== this.getLocation();
};
/**
* Returns true if the domainObject is an original, false if it's a
* link.
*/
LocationCapability.prototype.isOriginal = function () {
if (this.domainObject.getId() === "mine") {
return true;
}
var model = this.domainObject.getModel();
return model.location === this.getLocation();
};
function createLocationCapability(domainObject) {
return new LocationCapability(domainObject);
}
return createLocationCapability;
}
);