mirror of
https://github.com/nasa/openmct.git
synced 2025-02-20 17:33:23 +00:00
[Entanglement] Move updates location of originals
When moving original objects, the location is updated to match the new location.
This commit is contained in:
parent
4a755e259f
commit
3783ed69d7
@ -6,6 +6,7 @@ define(
|
||||
|
||||
function LocationCapability(domainObject) {
|
||||
this.domainObject = domainObject;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -38,6 +39,9 @@ define(
|
||||
* original.
|
||||
*/
|
||||
LocationCapability.prototype.isLink = function () {
|
||||
if (this.getId() === "mine") {
|
||||
return false;
|
||||
}
|
||||
var model = this.domainObject.getModel();
|
||||
|
||||
return model.location !== this.getLocation();
|
||||
@ -48,19 +52,29 @@ define(
|
||||
* link.
|
||||
*/
|
||||
LocationCapability.prototype.isOriginal = function () {
|
||||
if (this.getId() === "mine") {
|
||||
return true;
|
||||
}
|
||||
var model = this.domainObject.getModel();
|
||||
|
||||
return model.location === this.getLocation();
|
||||
};
|
||||
|
||||
function createLocationCapability(domainObject) {
|
||||
return new LocationCapability(domainObject);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if the LocationCapability can apply to a given
|
||||
* domainObject, otherwise return false.
|
||||
*/
|
||||
LocationCapability.appliesTo = function (domainObject) {
|
||||
return domainObject.hasCapability('context');
|
||||
createLocationCapability.appliesTo = function (domainObject) {
|
||||
// if (!domainObject.hasCapability) {
|
||||
// return false;
|
||||
// }
|
||||
// return domainObject.hasCapability('context');
|
||||
};
|
||||
|
||||
return LocationCapability;
|
||||
return createLocationCapability;
|
||||
}
|
||||
);
|
||||
|
@ -69,6 +69,22 @@ define(
|
||||
perform: function (object, parentObject) {
|
||||
return linkService
|
||||
.perform(object, parentObject)
|
||||
.then(function setOriginalLocation(objectInNewContext) {
|
||||
var locationCapability =
|
||||
object.getCapability('location');
|
||||
|
||||
if (!locationCapability.isOriginal()) {
|
||||
return objectInNewContext;
|
||||
}
|
||||
|
||||
return objectInNewContext.useCapability(
|
||||
'mutation',
|
||||
function (model) {
|
||||
model.location =
|
||||
locationCapability.getLocation();
|
||||
}
|
||||
);
|
||||
})
|
||||
.then(function () {
|
||||
return object
|
||||
.getCapability('action')
|
||||
|
@ -25,7 +25,8 @@ define(
|
||||
[
|
||||
'../../src/services/MoveService',
|
||||
'../services/MockLinkService',
|
||||
'../DomainObjectFactory'
|
||||
'../DomainObjectFactory',
|
||||
'../ControlledPromise'
|
||||
],
|
||||
function (MoveService, MockLinkService, domainObjectFactory) {
|
||||
"use strict";
|
||||
@ -141,7 +142,8 @@ define(
|
||||
|
||||
var object,
|
||||
parentObject,
|
||||
actionCapability;
|
||||
actionCapability,
|
||||
locationCapability;
|
||||
|
||||
beforeEach(function () {
|
||||
actionCapability = jasmine.createSpyObj(
|
||||
@ -149,10 +151,16 @@ define(
|
||||
['perform']
|
||||
);
|
||||
|
||||
locationCapability = jasmine.createSpyObj(
|
||||
'locationCapability',
|
||||
['isOriginal']
|
||||
);
|
||||
|
||||
object = domainObjectFactory({
|
||||
name: 'object',
|
||||
capabilities: {
|
||||
action: actionCapability
|
||||
action: actionCapability,
|
||||
location: locationCapability
|
||||
}
|
||||
});
|
||||
|
||||
@ -175,8 +183,9 @@ define(
|
||||
.toHaveBeenCalledWith(jasmine.any(Function));
|
||||
});
|
||||
|
||||
|
||||
it("removes object when link is completed", function () {
|
||||
linkService.perform.mostRecentCall.resolve();
|
||||
linkService.perform.mostRecentCall.promise.resolve()
|
||||
expect(object.getCapability)
|
||||
.toHaveBeenCalledWith('action');
|
||||
expect(actionCapability.perform)
|
||||
@ -185,5 +194,6 @@ define(
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
);
|
||||
|
Loading…
x
Reference in New Issue
Block a user