Merge branch 'master' into persist-on-mutation-825

Conflicts:
	platform/commonUI/edit/src/actions/RemoveAction.js
	platform/commonUI/edit/test/actions/EditAndComposeActionSpec.js
	platform/commonUI/edit/test/actions/RemoveActionSpec.js
	platform/entanglement/src/services/LinkService.js
	platform/features/timeline/src/controllers/drag/TimelineDragHandler.js
	platform/features/timeline/src/controllers/swimlane/TimelineSwimlaneDecorator.js
	platform/features/timeline/test/controllers/drag/TimelineDragHandlerSpec.js
	platform/features/timeline/test/controllers/swimlane/TimelineSwimlaneDropHandlerSpec.js
This commit is contained in:
Victor Woeltjen 2016-05-20 14:26:39 -07:00
commit 264896c264
468 changed files with 2151 additions and 1919 deletions

View File

@ -1,3 +1,5 @@
{
"preset": "crockford"
"preset": "crockford",
"requireMultipleVarDecl": false,
"requireVarDeclFirst": false
}

View File

@ -5,7 +5,7 @@
"eqeqeq": true,
"forin": true,
"freeze": true,
"funcscope": true,
"funcscope": false,
"futurehostile": true,
"latedef": true,
"noarg": true,
@ -16,6 +16,7 @@
"define",
"Promise"
],
"shadow": "outer",
"strict": "implied",
"undef": true,
"unused": "vars"

View File

@ -147,6 +147,6 @@ gulp.task('develop', ['serve', 'stylesheets', 'watch']);
gulp.task('install', [ 'static', 'scripts' ]);
gulp.task('verify', [ 'lint', 'test' ]);
gulp.task('verify', [ 'lint', 'test', 'checkstyle' ]);
gulp.task('build', [ 'verify', 'install' ]);

View File

@ -41,10 +41,10 @@ requirejs.config({
"exports": "angular"
},
"angular-route": {
"deps": [ "angular" ]
"deps": ["angular"]
},
"moment-duration-format": {
"deps": [ "moment" ]
"deps": ["moment"]
},
"screenfull": {
"exports": "screenfull"

View File

@ -55,4 +55,4 @@ define(
});
}
);
);

View File

@ -46,4 +46,4 @@ define(
});
}
);
);

View File

@ -48,4 +48,4 @@ define(
});
}
);
);

View File

@ -41,13 +41,13 @@ define(
* @constructor
*/
function BrowseController(
$scope,
$route,
$location,
$window,
objectService,
navigationService,
urlService,
$scope,
$route,
$location,
$window,
objectService,
navigationService,
urlService,
policyService,
defaultPath
) {
@ -80,12 +80,12 @@ define(
function setNavigation(domainObject) {
var navigationAllowed = true;
if (domainObject === $scope.navigatedObject){
if (domainObject === $scope.navigatedObject) {
//do nothing;
return;
}
policyService.allow("navigation", $scope.navigatedObject, domainObject, function(message){
policyService.allow("navigation", $scope.navigatedObject, domainObject, function (message) {
navigationAllowed = $window.confirm(message + "\r\n\r\n" +
" Are you sure you want to continue?");
});

View File

@ -33,7 +33,7 @@ define(
function BrowseObjectController($scope, $location, $route) {
var navigatedObject;
function setViewForDomainObject(domainObject) {
var locationViewKey = $location.search().view;
function selectViewIfMatching(view) {
@ -70,7 +70,7 @@ define(
$scope.$watch('domainObject', setViewForDomainObject);
$scope.$watch('representation.selected.key', updateQueryParam);
$scope.doAction = function (action){
$scope.doAction = function (action) {
return $scope[action] && $scope[action]();
};

View File

@ -45,7 +45,7 @@ define(
/**
* @private
*/
InspectorRegion.prototype.buildRegion = function() {
InspectorRegion.prototype.buildRegion = function () {
var metadataRegion = {
name: 'metadata',
title: 'Metadata Region',

View File

@ -26,11 +26,11 @@
define(
[],
function () {
/**
* A left-click on the menu arrow should display a
* context menu. This controller launches the context
* menu.
* A left-click on the menu arrow should display a
* context menu. This controller launches the context
* menu.
* @memberof platform/commonUI/browse
* @constructor
*/

View File

@ -81,13 +81,13 @@ define(
newModel.type = this.type.getKey();
newObject = parentObject.getCapability('instantiation').instantiate(newModel);
newObject.useCapability('mutation', function(model){
newObject.useCapability('mutation', function (model) {
model.location = parentObject.getId();
});
wizard = new CreateWizard(newObject, this.parent, this.policyService);
function populateObjectFromInput (formValue) {
function populateObjectFromInput(formValue) {
return wizard.populateObjectFromInput(formValue, newObject);
}
@ -99,7 +99,7 @@ define(
});
}
function addToParent (populatedObject) {
function addToParent(populatedObject) {
parentObject.getCapability('composition').add(populatedObject);
return persistAndReturn(parentObject);
}
@ -125,7 +125,7 @@ define(
* @returns {AddActionMetadata} metadata about this action
*/
AddAction.prototype.getMetadata = function () {
return this.metadata;
return this.metadata;
};
return AddAction;

View File

@ -101,7 +101,7 @@ define(
return editorCapability.save();
}, function () {
return editorCapability.cancel();
});
});
}
};
@ -118,7 +118,7 @@ define(
* @returns {CreateActionMetadata} metadata about this action
*/
CreateAction.prototype.getMetadata = function () {
return this.metadata;
return this.metadata;
};
return CreateAction;

View File

@ -111,12 +111,12 @@ define(
* @param formValue
* @returns {DomainObject}
*/
CreateWizard.prototype.populateObjectFromInput = function(formValue) {
CreateWizard.prototype.populateObjectFromInput = function (formValue) {
var parent = this.getLocation(formValue),
formModel = this.createModel(formValue);
formModel.location = parent.getId();
this.domainObject.useCapability("mutation", function(){
this.domainObject.useCapability("mutation", function () {
return formModel;
});
return this.domainObject;

View File

@ -40,4 +40,4 @@ define(
return CreationPolicy;
}
);
);

View File

@ -50,14 +50,14 @@ define(
$scope.rootObject =
(context && context.getRoot()) || $scope.rootObject;
}, 0);
} else if (!contextRoot){
} else if (!contextRoot) {
//If no context root is available, default to the root
// object
$scope.rootObject = undefined;
// Update the displayed tree on a timeout to avoid
// an infinite digest exception.
objectService.getObjects(['ROOT'])
.then(function(objects){
.then(function (objects) {
$timeout(function () {
$scope.rootObject = objects.ROOT;
}, 0);

View File

@ -78,12 +78,12 @@ define(
mockScope = jasmine.createSpyObj(
"$scope",
[ "$on", "$watch" ]
["$on", "$watch"]
);
mockRoute = { current: { params: {} } };
mockLocation = jasmine.createSpyObj(
"$location",
[ "path" ]
["path"]
);
mockUrlService = jasmine.createSpyObj(
"urlService",
@ -91,7 +91,7 @@ define(
);
mockObjectService = jasmine.createSpyObj(
"objectService",
[ "getObjects" ]
["getObjects"]
);
mockNavigationService = jasmine.createSpyObj(
"navigationService",
@ -104,15 +104,15 @@ define(
);
mockRootObject = jasmine.createSpyObj(
"domainObject",
[ "getId", "getCapability", "getModel", "useCapability" ]
["getId", "getCapability", "getModel", "useCapability"]
);
mockDomainObject = jasmine.createSpyObj(
"domainObject",
[ "getId", "getCapability", "getModel", "useCapability" ]
["getId", "getCapability", "getModel", "useCapability"]
);
mockNextObject = jasmine.createSpyObj(
"nextObject",
[ "getId", "getCapability", "getModel", "useCapability" ]
["getId", "getCapability", "getModel", "useCapability"]
);
mockObjectService.getObjects.andReturn(mockPromise({
@ -255,7 +255,7 @@ define(
" object", function () {
mockScope.navigatedObject = mockDomainObject;
mockWindow.confirm.andReturn(false);
mockPolicyService.allow.andCallFake(function(category, object, context, callback){
mockPolicyService.allow.andCallFake(function (category, object, context, callback) {
callback("unsaved changes");
return false;
});

View File

@ -44,12 +44,12 @@ define(
beforeEach(function () {
mockScope = jasmine.createSpyObj(
"$scope",
[ "$on", "$watch" ]
["$on", "$watch"]
);
mockRoute = { current: { params: {} } };
mockLocation = jasmine.createSpyObj(
"$location",
[ "path", "search" ]
["path", "search"]
);
mockUnlisten = jasmine.createSpy("unlisten");
@ -69,7 +69,7 @@ define(
// Allows the path index to be checked
// prior to setting $route.current
mockLocation.path.andReturn("/browse/");
// Exercise the Angular workaround
mockScope.$on.mostRecentCall.args[1]();
expect(mockUnlisten).toHaveBeenCalled();

View File

@ -40,4 +40,4 @@ define(
});
}
);
);

View File

@ -26,7 +26,7 @@
define(
["../src/MenuArrowController"],
function (MenuArrowController) {
describe("The menu arrow controller ", function () {
var mockScope,
mockDomainObject,
@ -34,43 +34,43 @@ define(
mockContextMenuAction,
mockActionContext,
controller;
beforeEach(function () {
mockScope = jasmine.createSpyObj(
"$scope",
[ "" ]
[""]
);
mockDomainObject = jasmine.createSpyObj(
"domainObject",
[ "getCapability" ]
["getCapability"]
);
mockEvent = jasmine.createSpyObj(
"event",
[ "preventDefault" ]
["preventDefault"]
);
mockContextMenuAction = jasmine.createSpyObj(
"action",
[ "perform", "getActions" ]
["perform", "getActions"]
);
mockActionContext = jasmine.createSpyObj(
"actionContext",
[ "" ]
[""]
);
mockActionContext.domainObject = mockDomainObject;
mockActionContext.event = mockEvent;
mockScope.domainObject = mockDomainObject;
mockDomainObject.getCapability.andReturn(mockContextMenuAction);
mockContextMenuAction.perform.andReturn(jasmine.any(Function));
controller = new MenuArrowController(mockScope);
});
it("calls the context menu action when clicked", function () {
// Simulate a click on the menu arrow
controller.showMenu(mockEvent);
// Expect the menu action to be performed
// Expect the menu action to be performed
expect(mockDomainObject.getCapability).toHaveBeenCalledWith('action');
expect(mockContextMenuAction.perform).toHaveBeenCalled();
});

View File

@ -42,11 +42,11 @@ define(
}
beforeEach(function () {
mockScope = jasmine.createSpyObj("$scope", [ "$on" ]);
mockScope = jasmine.createSpyObj("$scope", ["$on"]);
mockDomainObjects = ['a', 'b'].map(function (id) {
var mockDomainObject = jasmine.createSpyObj(
'domainObject-' + id,
[ 'getId', 'getModel', 'getCapability' ]
['getId', 'getModel', 'getCapability']
);
mockDomainObject.getId.andReturn(id);
@ -56,7 +56,7 @@ define(
});
mockAgentService = jasmine.createSpyObj(
"agentService",
[ "isMobile", "isPhone", "isTablet", "isPortrait", "isLandscape" ]
["isMobile", "isPhone", "isTablet", "isPortrait", "isLandscape"]
);
mockWindow = jasmine.createSpyObj("$window", ["open"]);
});

View File

@ -60,37 +60,37 @@ define(
beforeEach(function () {
mockTypeService = jasmine.createSpyObj(
"typeService",
[ "listTypes" ]
["listTypes"]
);
mockDialogService = jasmine.createSpyObj(
"dialogService",
[ "getUserInput" ]
["getUserInput"]
);
mockPolicyService = jasmine.createSpyObj(
"policyService",
[ "allow" ]
["allow"]
);
mockDomainObject = jasmine.createSpyObj(
"domainObject",
[ "getCapability" ]
["getCapability"]
);
//Mocking getCapability because AddActionProvider uses the
// type capability of the destination object.
mockDomainObject.getCapability.andReturn({});
mockTypes = [ "A", "B", "C" ].map(createMockType);
mockTypes = ["A", "B", "C"].map(createMockType);
mockTypes.forEach(function(type){
mockTypes.forEach(function (type) {
mockPolicyMap[type.getName()] = true;
});
mockCreationPolicy = function(type){
mockCreationPolicy = function (type) {
return mockPolicyMap[type.getName()];
};
mockCompositionPolicy = function(){
mockCompositionPolicy = function () {
return true;
};
@ -132,4 +132,4 @@ define(
});
});
}
);
);

View File

@ -59,32 +59,32 @@ define(
beforeEach(function () {
mockTypeService = jasmine.createSpyObj(
"typeService",
[ "listTypes" ]
["listTypes"]
);
mockDialogService = jasmine.createSpyObj(
"dialogService",
[ "getUserInput" ]
["getUserInput"]
);
mockNavigationService = jasmine.createSpyObj(
"navigationService",
[ "setNavigation" ]
["setNavigation"]
);
mockPolicyService = jasmine.createSpyObj(
"policyService",
[ "allow" ]
["allow"]
);
mockTypes = [ "A", "B", "C" ].map(createMockType);
mockTypes = ["A", "B", "C"].map(createMockType);
mockTypes.forEach(function(type){
mockTypes.forEach(function (type) {
mockPolicyMap[type.getName()] = true;
});
mockCreationPolicy = function(type){
mockCreationPolicy = function (type) {
return mockPolicyMap[type.getName()];
};
mockPolicyService.allow.andCallFake(function(category, type){
mockPolicyService.allow.andCallFake(function (category, type) {
return category === "creation" && mockCreationPolicy(type) ? true : false;
});
@ -126,4 +126,4 @@ define(
});
});
}
);
);

View File

@ -68,11 +68,11 @@ define(
};
mockDialogService = jasmine.createSpyObj(
"dialogService",
[ "getUserInput" ]
["getUserInput"]
);
mockCreationService = jasmine.createSpyObj(
"creationService",
[ "createObject" ]
["createObject"]
);
mockType.getKey.andReturn("test");
@ -127,4 +127,4 @@ define(
});
}
);
);

View File

@ -62,4 +62,4 @@ define(
});
});
}
);
);

View File

@ -39,7 +39,7 @@ define(
function createMockProperty(name) {
var mockProperty = jasmine.createSpyObj(
"property" + name,
[ "getDefinition", "getValue", "setValue" ]
["getDefinition", "getValue", "setValue"]
);
mockProperty.getDefinition.andReturn({
control: "textfield"
@ -68,7 +68,7 @@ define(
"getCapability"
]
);
mockProperties = [ "A", "B", "C" ].map(createMockProperty);
mockProperties = ["A", "B", "C"].map(createMockProperty);
mockPolicyService = jasmine.createSpyObj('policyService', ['allow']);
testModel = { someKey: "some value" };
@ -144,15 +144,15 @@ define(
"A": "ValueA",
"B": "ValueB",
"C": "ValueC"
},
compareModel = wizard.createModel(formValue);
},
compareModel = wizard.createModel(formValue);
wizard.populateObjectFromInput(formValue);
expect(mockDomainObject.useCapability).toHaveBeenCalledWith('mutation', jasmine.any(Function));
expect(mockDomainObject.useCapability.mostRecentCall.args[1]()).toEqual(compareModel);
});
it("validates selection types using policy", function () {
var mockDomainObject = jasmine.createSpyObj(
var mockDomainObj = jasmine.createSpyObj(
'domainObject',
['getCapability']
),
@ -166,8 +166,8 @@ define(
rows = structure.sections[sections.length - 1].rows,
locationRow = rows[rows.length - 1];
mockDomainObject.getCapability.andReturn(mockOtherType);
locationRow.validate(mockDomainObject);
mockDomainObj.getCapability.andReturn(mockOtherType);
locationRow.validate(mockDomainObj);
// Should check policy to see if the user-selected location
// can actually contain objects of this type
@ -179,7 +179,7 @@ define(
});
it("creates a form model without a location if not requested", function () {
expect(wizard.getFormStructure(false).sections.some(function(section){
expect(wizard.getFormStructure(false).sections.some(function (section) {
return section.name === 'Location';
})).toEqual(false);
});

View File

@ -48,4 +48,4 @@ define(
});
});
}
);
);

View File

@ -61,23 +61,23 @@ define(
mockQ = { when: mockPromise, reject: mockReject };
mockLog = jasmine.createSpyObj(
"$log",
[ "error", "warn", "info", "debug" ]
["error", "warn", "info", "debug"]
);
mockParentObject = jasmine.createSpyObj(
"parentObject",
[ "getId", "getCapability", "useCapability" ]
["getId", "getCapability", "useCapability"]
);
mockNewObject = jasmine.createSpyObj(
"newObject",
[ "getId", "getCapability", "useCapability" ]
["getId", "getCapability", "useCapability"]
);
mockMutationCapability = jasmine.createSpyObj(
"mutation",
[ "invoke" ]
["invoke"]
);
mockPersistenceCapability = jasmine.createSpyObj(
"persistence",
[ "persist", "getSpace" ]
["persist", "getSpace"]
);
mockCompositionCapability = jasmine.createSpyObj(
"composition",
@ -100,7 +100,7 @@ define(
};
mockNewPersistenceCapability = jasmine.createSpyObj(
"new-persistence",
[ "persist", "getSpace" ]
["persist", "getSpace"]
);
mockParentObject.getCapability.andCallFake(function (key) {

View File

@ -40,20 +40,20 @@ define(
beforeEach(function () {
mockScope = jasmine.createSpyObj(
"$scope",
[ "$watch" ]
["$watch"]
);
mockTimeout = jasmine.createSpy("$timeout");
mockDomainObject = jasmine.createSpyObj(
"domainObject",
[ "getCapability" ]
["getCapability"]
);
mockRootObject = jasmine.createSpyObj(
"rootObject",
[ "getCapability" ]
["getCapability"]
);
mockContext = jasmine.createSpyObj(
"context",
[ "getRoot" ]
["getRoot"]
);
mockObjectService = jasmine.createSpyObj(
"objectService",
@ -73,18 +73,18 @@ define(
controller = new LocatorController(mockScope, mockTimeout, mockObjectService);
});
describe("when context is available", function () {
describe("when context is available", function () {
beforeEach(function () {
beforeEach(function () {
mockContext.getRoot.andReturn(mockRootObject);
controller = new LocatorController(mockScope, mockTimeout, mockObjectService);
});
it("adds a treeModel to scope", function () {
it("adds a treeModel to scope", function () {
expect(mockScope.treeModel).toBeDefined();
});
it("watches for changes to treeModel", function () {
it("watches for changes to treeModel", function () {
// This is what the embedded tree representation
// will be modifying.
expect(mockScope.$watch).toHaveBeenCalledWith(
@ -93,7 +93,7 @@ define(
);
});
it("changes its own model on embedded model updates", function () {
it("changes its own model on embedded model updates", function () {
// Need to pass on selection changes as updates to
// the control's value
mockScope.$watch.mostRecentCall.args[1](mockDomainObject);
@ -107,7 +107,7 @@ define(
.toHaveBeenCalledWith("context");
});
it("rejects changes which fail validation", function () {
it("rejects changes which fail validation", function () {
mockScope.structure = { validate: jasmine.createSpy('validate') };
mockScope.structure.validate.andReturn(false);
@ -120,10 +120,10 @@ define(
expect(mockScope.ngModel.someField).not.toEqual(mockDomainObject);
});
it("treats a lack of a selection as invalid", function () {
it("treats a lack of a selection as invalid", function () {
mockScope.ngModelController = jasmine.createSpyObj(
'ngModelController',
[ '$setValidity' ]
['$setValidity']
);
mockScope.$watch.mostRecentCall.args[1](mockDomainObject);
@ -136,14 +136,14 @@ define(
expect(mockScope.ngModelController.$setValidity)
.toHaveBeenCalledWith(jasmine.any(String), false);
});
});
describe("when no context is available", function () {
});
describe("when no context is available", function () {
var defaultRoot = "DEFAULT_ROOT";
beforeEach(function () {
mockContext.getRoot.andReturn(undefined);
getObjectsPromise.then.andCallFake(function(callback){
callback({'ROOT':defaultRoot});
getObjectsPromise.then.andCallFake(function (callback) {
callback({'ROOT': defaultRoot});
});
controller = new LocatorController(mockScope, mockTimeout, mockObjectService);
});

View File

@ -44,12 +44,12 @@ define(
beforeEach(function () {
mockNavigationService = jasmine.createSpyObj(
"navigationService",
[ "setNavigation" ]
["setNavigation"]
);
mockQ = { when: mockPromise };
mockDomainObject = jasmine.createSpyObj(
"domainObject",
[ "getId", "getModel", "getCapability" ]
["getId", "getModel", "getCapability"]
);
action = new NavigateAction(
@ -74,4 +74,4 @@ define(
});
}
);
);

View File

@ -56,4 +56,4 @@ define(
});
}
);
);

View File

@ -23,7 +23,7 @@
define(
["../../src/windowing/NewTabAction"],
function (NewTabAction) {
describe("The new tab action", function () {
var actionSelected,
actionCurrent,
@ -37,39 +37,39 @@ define(
// Context if the current object is selected
// For example, when the top right new tab
// button is clicked, the user is using the
// button is clicked, the user is using the
// current domainObject
mockContextCurrent = jasmine.createSpyObj("context", ["domainObject"]);
// Context if the selected object is selected
// For example, when an object in the left
// tree is opened in a new tab using the
// context menu
mockContextSelected = jasmine.createSpyObj("context", ["selectedObject",
"domainObject"]);
// Mocks the urlService used to make the new tab's url from a
// domainObject and mode
mockUrlService = jasmine.createSpyObj("urlService", ["urlForNewTab"]);
// Action done using the current context or mockContextCurrent
actionCurrent = new NewTabAction(mockUrlService, mockWindow,
mockContextCurrent);
// Action done using the selected context or mockContextSelected
actionSelected = new NewTabAction(mockUrlService, mockWindow,
mockContextSelected);
});
it("new tab with current url is opened", function () {
actionCurrent.perform();
});
it("new tab with a selected url is opened", function () {
actionSelected.perform();
});
});
}
);
);

View File

@ -37,11 +37,11 @@ define(
beforeEach(function () {
mockNavigationService = jasmine.createSpyObj(
'navigationService',
[ 'getNavigation' ]
['getNavigation']
);
mockRootScope = jasmine.createSpyObj(
'$rootScope',
[ '$watch' ]
['$watch']
);
mockDomainObject = jasmine.createSpyObj(
'domainObject',
@ -75,4 +75,4 @@ define(
});
}
);
);

View File

@ -155,8 +155,8 @@ define(
* @returns {boolean} true if dialog is currently visible, false
* otherwise
*/
DialogService.prototype.canShowDialog = function(dialogModel){
if (this.dialogVisible){
DialogService.prototype.canShowDialog = function (dialogModel) {
if (this.dialogVisible) {
// Only one dialog should be shown at a time.
// The application design should be such that
// we never even try to do this.
@ -224,7 +224,7 @@ define(
* @param {typeClass} string tells overlayService that this overlay should use appropriate CSS class
* @returns {boolean}
*/
DialogService.prototype.showBlockingMessage = function(dialogModel) {
DialogService.prototype.showBlockingMessage = function (dialogModel) {
if (this.canShowDialog(dialogModel)) {
// Add the overlay using the OverlayService, which
// will handle actual insertion into the DOM

View File

@ -38,23 +38,23 @@ define(
beforeEach(function () {
mockOverlayService = jasmine.createSpyObj(
"overlayService",
[ "createOverlay" ]
["createOverlay"]
);
mockQ = jasmine.createSpyObj(
"$q",
[ "defer" ]
["defer"]
);
mockLog = jasmine.createSpyObj(
"$log",
[ "warn", "info", "debug" ]
["warn", "info", "debug"]
);
mockOverlay = jasmine.createSpyObj(
"overlay",
[ "dismiss" ]
["dismiss"]
);
mockDeferred = jasmine.createSpyObj(
"deferred",
[ "resolve", "reject"]
["resolve", "reject"]
);
mockDeferred.promise = "mock promise";
@ -120,7 +120,7 @@ define(
});
it("invokes the overlay service with the correct parameters when" +
" a blocking dialog is requested", function() {
" a blocking dialog is requested", function () {
var dialogModel = {};
expect(dialogService.showBlockingMessage(dialogModel)).toBe(true);
expect(mockOverlayService.createOverlay).toHaveBeenCalledWith(

View File

@ -38,13 +38,13 @@ define(
overlayService;
beforeEach(function () {
mockDocument = jasmine.createSpyObj("$document", [ "find" ]);
mockDocument = jasmine.createSpyObj("$document", ["find"]);
mockCompile = jasmine.createSpy("$compile");
mockRootScope = jasmine.createSpyObj("$rootScope", [ "$new" ]);
mockBody = jasmine.createSpyObj("body", [ "prepend" ]);
mockRootScope = jasmine.createSpyObj("$rootScope", ["$new"]);
mockBody = jasmine.createSpyObj("body", ["prepend"]);
mockTemplate = jasmine.createSpy("template");
mockElement = jasmine.createSpyObj("element", [ "remove" ]);
mockScope = jasmine.createSpyObj("scope", [ "$destroy" ]);
mockElement = jasmine.createSpyObj("element", ["remove"]);
mockScope = jasmine.createSpyObj("scope", ["$destroy"]);
mockDocument.find.andReturn(mockBody);
mockCompile.andReturn(mockTemplate);
@ -96,4 +96,4 @@ define(
});
}
);
);

View File

@ -297,7 +297,7 @@ define([
],
"constants": [
{
"key":"editModeBlacklist",
"key": "editModeBlacklist",
"value": ["copy", "follow", "window", "link", "locate"]
},
{
@ -315,7 +315,7 @@ define([
"transactionService"
]
}
],
]
}
});
});

View File

@ -44,7 +44,7 @@ define(
CancelAction.prototype.perform = function () {
var domainObject = this.domainObject;
function returnToBrowse () {
function returnToBrowse() {
var parent;
//If the object existed already, navigate to refresh view

View File

@ -70,7 +70,7 @@ define(
*/
EditAction.prototype.perform = function () {
var self = this;
function cancelEditing(){
function cancelEditing() {
self.domainObject.getCapability('editor').cancel();
self.navigationService.removeListener(cancelEditing);
}

View File

@ -57,10 +57,10 @@ define(
});
}
function showDialog(type) {
function showDialog(objType) {
// Create a dialog object to generate the form structure, etc.
var dialog =
new PropertiesDialog(type, domainObject.getModel());
new PropertiesDialog(objType, domainObject.getModel());
// Show the dialog
return dialogService.getUserInput(

View File

@ -48,7 +48,7 @@ define(
SaveAction.prototype.perform = function () {
var domainObject = this.domainObject;
function resolveWith(object){
function resolveWith(object) {
return function () {
return object;
};

View File

@ -42,7 +42,7 @@ define(
context
) {
this.domainObject = (context || {}).domainObject;
this.injectObjectService = function(){
this.injectObjectService = function () {
this.objectService = $injector.get("objectService");
};
this.policyService = policyService;
@ -65,7 +65,7 @@ define(
/**
* @private
*/
SaveAsAction.prototype.getObjectService = function(){
SaveAsAction.prototype.getObjectService = function () {
// Lazily acquire object service (avoids cyclical dependency)
if (!this.objectService) {
this.injectObjectService();
@ -73,7 +73,7 @@ define(
return this.objectService;
};
function resolveWith(object){
function resolveWith(object) {
return function () {
return object;
};
@ -116,13 +116,13 @@ define(
).then(wizard.populateObjectFromInput.bind(wizard));
}
function fetchObject(objectId){
return self.getObjectService().getObjects([objectId]).then(function(objects){
function fetchObject(objectId) {
return self.getObjectService().getObjects([objectId]).then(function (objects) {
return objects[objectId];
});
}
function getParent(object){
function getParent(object) {
return fetchObject(object.getModel().location);
}

View File

@ -52,11 +52,11 @@ define(
this.domainObject.getCapability('status').set('editing', true);
};
function isEditContextRoot (domainObject) {
function isEditContextRoot(domainObject) {
return domainObject.getCapability('status').get('editing');
}
function isEditing (domainObject) {
function isEditing(domainObject) {
return isEditContextRoot(domainObject) ||
domainObject.hasCapability('context') &&
isEditing(domainObject.getCapability('context').getParent());
@ -87,7 +87,7 @@ define(
*/
EditorCapability.prototype.save = function () {
var domainObject = this.domainObject;
return this.transactionService.commit().then(function() {
return this.transactionService.commit().then(function () {
domainObject.getCapability('status').set('editing', false);
});
};
@ -101,7 +101,7 @@ define(
*/
EditorCapability.prototype.cancel = function () {
var domainObject = this.domainObject;
return this.transactionService.cancel().then(function(){
return this.transactionService.cancel().then(function () {
domainObject.getCapability("status").set("editing", false);
return domainObject;
});

View File

@ -60,14 +60,14 @@ define(
var self = this;
function onCommit() {
return self.persistenceCapability.persist().then(function(result) {
return self.persistenceCapability.persist().then(function (result) {
self.persistPending = false;
return result;
});
}
function onCancel() {
return self.persistenceCapability.refresh().then(function(result) {
return self.persistenceCapability.refresh().then(function (result) {
self.persistPending = false;
return result;
});

View File

@ -59,7 +59,7 @@ define(
$scope.$watch('domainObject', setViewForDomainObject);
$scope.doAction = function (action){
$scope.doAction = function (action) {
return $scope[action] && $scope[action]();
};
}
@ -74,8 +74,8 @@ define(
var navigatedObject = this.scope.domainObject,
policyMessage;
this.policyService.allow("navigation", navigatedObject, undefined, function(message) {
policyMessage = message;
this.policyService.allow("navigation", navigatedObject, undefined, function (message) {
policyMessage = message;
});
return policyMessage;

View File

@ -30,7 +30,7 @@ define(
* @constructor
*/
function ElementsController($scope) {
function filterBy(text){
function filterBy(text) {
if (typeof text === 'undefined') {
return $scope.searchText;
} else {

View File

@ -45,7 +45,7 @@ define(
count = 0,
type, views;
if (!domainObject){
if (!domainObject) {
return count;
}

View File

@ -56,7 +56,7 @@ define(
actionMetadata = action.getMetadata ? action.getMetadata() : {};
if (navigatedObject.hasCapability("editor") && navigatedObject.getCapability("editor").isEditContextRoot()) {
if (selectedObject.hasCapability("editor") && selectedObject.getCapability("editor").inEditContext()){
if (selectedObject.hasCapability("editor") && selectedObject.getCapability("editor").inEditContext()) {
return this.editModeBlacklist.indexOf(actionMetadata.key) === -1;
} else {
//Target is in the context menu

View File

@ -38,7 +38,7 @@ define(
/**
* @private
*/
EditNavigationPolicy.prototype.isDirty = function(domainObject) {
EditNavigationPolicy.prototype.isDirty = function (domainObject) {
var navigatedObject = domainObject,
editorCapability = navigatedObject &&
navigatedObject.getCapability("editor");

View File

@ -115,7 +115,7 @@ define(
// Ensure existing watches are released
this.destroy();
function setEditing(){
function setEditing() {
scope.viewObjectTemplate = 'edit-object';
}
@ -124,15 +124,15 @@ define(
* editable then change the view and inspector regions
* object representation accordingly
*/
this.listenHandle = this.domainObject.getCapability('status').listen(function(statuses){
if (statuses.indexOf('editing') !== -1){
this.listenHandle = this.domainObject.getCapability('status').listen(function (statuses) {
if (statuses.indexOf('editing') !== -1) {
setEditing();
} else {
delete scope.viewObjectTemplate;
}
});
if (representedObject.hasCapability('editor') && representedObject.getCapability('editor').isEditContextRoot()){
if (representedObject.hasCapability('editor') && representedObject.getCapability('editor').isEditContextRoot()) {
setEditing();
}
};

View File

@ -24,8 +24,12 @@ define(
function () {
// Utility functions for reducing truth arrays
function and(a, b) { return a && b; }
function or(a, b) { return a || b; }
function and(a, b) {
return a && b;
}
function or(a, b) {
return a || b;
}
/**
@ -219,7 +223,7 @@ define(
// Update value for this property in all elements of the
// selection which have this property.
function updateProperties(property, value) {
function updateProperties(property, val) {
var changed = false;
// Update property in a selected element
@ -229,12 +233,12 @@ define(
// Check if this is a setter, or just assignable
if (typeof selected[property] === 'function') {
changed =
changed || (selected[property]() !== value);
selected[property](value);
changed || (selected[property]() !== val);
selected[property](val);
} else {
changed =
changed || (selected[property] !== value);
selected[property] = value;
changed || (selected[property] !== val);
selected[property] = val;
}
}
}

View File

@ -133,11 +133,11 @@ define(
self = this;
// Initialize toolbar (expose object to parent scope)
function initialize(definition) {
function initialize(def) {
// If we have been asked to expose toolbar state...
if (self.attrs.toolbar) {
// Initialize toolbar object
self.toolbar = new EditToolbar(definition, self.commit);
self.toolbar = new EditToolbar(def, self.commit);
// Ensure toolbar state is exposed
self.exposeToolbar();
}

View File

@ -22,7 +22,7 @@
/*global define*/
define(
[],
function() {
function () {
/**
* Implements an application-wide transaction state. Once a
* transaction is started, calls to
@ -103,7 +103,7 @@ define(
this.$log.error("Error committing transaction.");
}
}
return this.$q.all(promises).then( function () {
return this.$q.all(promises).then(function () {
self.transaction = false;
self.onCommits = [];
@ -145,4 +145,4 @@ define(
};
return TransactionService;
});
});

View File

@ -44,15 +44,15 @@ define(
beforeEach(function () {
mockLocation = jasmine.createSpyObj(
"$location",
[ "path" ]
["path"]
);
mockDomainObject = jasmine.createSpyObj(
"domainObject",
[ "getCapability", "hasCapability" ]
["getCapability", "hasCapability"]
);
mockEditorCapability = jasmine.createSpyObj(
"editor",
[ "save", "cancel" ]
["save", "cancel"]
);
mockUrlService = jasmine.createSpyObj(
"urlService",
@ -100,4 +100,4 @@ define(
});
});
}
);
);

View File

@ -38,23 +38,23 @@ define(
beforeEach(function () {
mockLocation = jasmine.createSpyObj(
"$location",
[ "path" ]
["path"]
);
mockNavigationService = jasmine.createSpyObj(
"navigationService",
[ "setNavigation", "getNavigation", "addListener", "removeListener" ]
["setNavigation", "getNavigation", "addListener", "removeListener"]
);
mockLog = jasmine.createSpyObj(
"$log",
[ "error", "warn", "info", "debug" ]
["error", "warn", "info", "debug"]
);
mockDomainObject = jasmine.createSpyObj(
"domainObject",
[ "getId", "getModel", "getCapability", "hasCapability", "useCapability" ]
["getId", "getModel", "getCapability", "hasCapability", "useCapability"]
);
mockType = jasmine.createSpyObj(
"type",
[ "hasFeature" ]
["hasFeature"]
);
mockEditor = jasmine.createSpyObj(
"editorCapability",
@ -66,7 +66,7 @@ define(
editor: mockEditor
};
mockDomainObject.getCapability.andCallFake( function (name) {
mockDomainObject.getCapability.andCallFake(function (name) {
return capabilities[name];
});
mockDomainObject.hasCapability.andReturn(true);
@ -112,4 +112,4 @@ define(
});
}
);
);

View File

@ -51,7 +51,7 @@ define(
mockDomainObject = jasmine.createSpyObj(
"domainObject",
[ "getId", "getCapability" ]
["getId", "getCapability"]
);
mockQ = { when: mockPromise };
mockParent = {
@ -65,10 +65,10 @@ define(
return capabilities[k].invoke(v);
}
};
mockContext = jasmine.createSpyObj("context", [ "getParent" ]);
mockComposition = jasmine.createSpyObj("composition", [ "invoke", "add" ]);
mockType = jasmine.createSpyObj("type", [ "hasFeature", "getKey" ]);
mockActionCapability = jasmine.createSpyObj("actionCapability", [ "getActions"]);
mockContext = jasmine.createSpyObj("context", ["getParent"]);
mockComposition = jasmine.createSpyObj("composition", ["invoke", "add"]);
mockType = jasmine.createSpyObj("type", ["hasFeature", "getKey"]);
mockActionCapability = jasmine.createSpyObj("actionCapability", ["getActions"]);
mockEditAction = jasmine.createSpyObj("editAction", ["perform"]);
mockDomainObject.getId.andReturn("test");
@ -86,7 +86,7 @@ define(
type: mockType
};
model = {
composition: [ "a", "b", "c" ]
composition: ["a", "b", "c"]
};
actionContext = {

View File

@ -38,7 +38,9 @@ define(
beforeEach(function () {
capabilities = {
type: {
getProperties: function () { return []; },
getProperties: function () {
return [];
},
hasFeature: jasmine.createSpy('hasFeature')
},
mutation: jasmine.createSpy("mutation")
@ -46,11 +48,21 @@ define(
model = {};
input = {};
object = {
getId: function () { return 'test-id'; },
getCapability: function (k) { return capabilities[k]; },
getModel: function () { return model; },
useCapability: function (k, v) { return capabilities[k](v); },
hasCapability: function () { return true; }
getId: function () {
return 'test-id';
},
getCapability: function (k) {
return capabilities[k];
},
getModel: function () {
return model;
},
useCapability: function (k, v) {
return capabilities[k](v);
},
hasCapability: function () {
return true;
}
};
context = { someKey: "some value", domainObject: object };
dialogService = {

View File

@ -30,14 +30,22 @@ define(
beforeEach(function () {
type = {
getProperties: function () { return properties; }
getProperties: function () {
return properties;
}
};
model = { x: "initial value" };
properties = ["x", "y", "z"].map(function (k) {
return {
getValue: function (model) { return model[k]; },
setValue: function (model, v) { model[k] = v; },
getDefinition: function () { return { control: 'textfield '}; }
getValue: function (m) {
return m[k];
},
setValue: function (m, v) {
m[k] = v;
},
getDefinition: function () {
return { control: 'textfield '};
}
};
});

View File

@ -54,19 +54,19 @@ define(
beforeEach(function () {
mockDomainObject = jasmine.createSpyObj(
"domainObject",
[ "getId", "getCapability" ]
["getId", "getCapability"]
);
mockChildObject = jasmine.createSpyObj(
"domainObject",
[ "getId", "getCapability" ]
["getId", "getCapability"]
);
mockGrandchildObject = jasmine.createSpyObj(
"domainObject",
[ "getId", "getCapability" ]
["getId", "getCapability"]
);
mockRootObject = jasmine.createSpyObj(
"domainObject",
[ "getId", "getCapability" ]
["getId", "getCapability"]
);
mockQ = { when: mockPromise };
mockParent = {
@ -80,12 +80,12 @@ define(
return capabilities[k].invoke(v);
}
};
mockContext = jasmine.createSpyObj("context", [ "getParent" ]);
mockChildContext = jasmine.createSpyObj("context", [ "getParent" ]);
mockGrandchildContext = jasmine.createSpyObj("context", [ "getParent" ]);
mockRootContext = jasmine.createSpyObj("context", [ "getParent" ]);
mockMutation = jasmine.createSpyObj("mutation", [ "invoke" ]);
mockType = jasmine.createSpyObj("type", [ "hasFeature" ]);
mockContext = jasmine.createSpyObj("context", ["getParent"]);
mockChildContext = jasmine.createSpyObj("context", ["getParent"]);
mockGrandchildContext = jasmine.createSpyObj("context", ["getParent"]);
mockRootContext = jasmine.createSpyObj("context", ["getParent"]);
mockMutation = jasmine.createSpyObj("mutation", ["invoke"]);
mockType = jasmine.createSpyObj("type", ["hasFeature"]);
mockNavigationService = jasmine.createSpyObj(
"navigationService",
[
@ -96,8 +96,8 @@ define(
]
);
mockNavigationService.getNavigation.andReturn(mockDomainObject);
mockDomainObject.getId.andReturn("test");
mockDomainObject.getCapability.andReturn(mockContext);
mockContext.getParent.andReturn(mockParent);
@ -108,7 +108,7 @@ define(
type: mockType
};
model = {
composition: [ "a", "test", "b" ]
composition: ["a", "test", "b"]
};
actionContext = { domainObject: mockDomainObject };
@ -150,56 +150,56 @@ define(
// mock domain object's id.
expect(result.composition).toEqual(["a", "b"]);
});
it("removes parent of object currently navigated to", function () {
// Navigates to child object
mockNavigationService.getNavigation.andReturn(mockChildObject);
// Test is id of object being removed
// Child object has different id
mockDomainObject.getId.andReturn("test");
mockChildObject.getId.andReturn("not test");
// Sets context for the child and domainObject
mockDomainObject.getCapability.andReturn(mockContext);
mockChildObject.getCapability.andReturn(mockChildContext);
// Parents of child and domainObject are set
mockContext.getParent.andReturn(mockParent);
mockChildContext.getParent.andReturn(mockDomainObject);
mockType.hasFeature.andReturn(true);
action.perform();
// Expects navigation to parent of domainObject (removed object)
expect(mockNavigationService.setNavigation).toHaveBeenCalledWith(mockParent);
});
it("checks if removing object not in ascendent path (reaches ROOT)", function () {
// Navigates to grandchild of ROOT
mockNavigationService.getNavigation.andReturn(mockGrandchildObject);
// domainObject (grandparent) is set as ROOT, child and grandchild
// are set objects not being removed
mockDomainObject.getId.andReturn("test 1");
mockRootObject.getId.andReturn("ROOT");
mockChildObject.getId.andReturn("not test 2");
mockGrandchildObject.getId.andReturn("not test 3");
// Sets context for the grandchild, child, and domainObject
mockRootObject.getCapability.andReturn(mockRootContext);
mockChildObject.getCapability.andReturn(mockChildContext);
mockGrandchildObject.getCapability.andReturn(mockGrandchildContext);
// Parents of grandchild and child are set
mockChildContext.getParent.andReturn(mockRootObject);
mockGrandchildContext.getParent.andReturn(mockChildObject);
mockType.hasFeature.andReturn(true);
action.perform();
// Expects no navigation to occur
expect(mockNavigationService.setNavigation).not.toHaveBeenCalled();
});

View File

@ -52,11 +52,11 @@ define(
);
mockEditorCapability = jasmine.createSpyObj(
"editor",
[ "save", "cancel", "isEditContextRoot" ]
["save", "cancel", "isEditContextRoot"]
);
mockActionCapability = jasmine.createSpyObj(
"actionCapability",
[ "perform"]
["perform"]
);
capabilities.editor = mockEditorCapability;
capabilities.action = mockActionCapability;
@ -90,7 +90,7 @@ define(
function () {
mockDomainObject.getModel.andReturn({persisted: undefined});
expect(SaveAction.appliesTo(actionContext)).toBe(false);
});
});
it("uses the editor capability to save the object",
function () {
@ -106,4 +106,4 @@ define(
});
}
);
);

View File

@ -38,7 +38,7 @@ define(
capabilities = {},
action;
function noop () {}
function noop() {}
function mockPromise(value) {
return (value || {}).then ? value :
@ -49,7 +49,7 @@ define(
catch: function (callback) {
return mockPromise(callback(value));
}
} ;
} ;
}
beforeEach(function () {
@ -78,7 +78,7 @@ define(
mockEditorCapability = jasmine.createSpyObj(
"editor",
[ "save", "cancel", "isEditContextRoot" ]
["save", "cancel", "isEditContextRoot"]
);
mockEditorCapability.cancel.andReturn(mockPromise(undefined));
mockEditorCapability.save.andReturn(mockPromise(true));
@ -130,7 +130,7 @@ define(
action.createWizard.andReturn({
getFormStructure: noop,
getInitialFormValue: noop,
populateObjectFromInput: function() {
populateObjectFromInput: function () {
return mockDomainObject;
}
});

View File

@ -82,7 +82,7 @@ define(
status: mockStatusCapability
};
mockDomainObject.hasCapability.andCallFake(function(name) {
mockDomainObject.hasCapability.andCallFake(function (name) {
return capabilities[name] !== undefined;
});
@ -126,8 +126,8 @@ define(
expect(capability.inEditContext()).toBe(true);
});
describe("save", function() {
beforeEach(function() {
describe("save", function () {
beforeEach(function () {
capability.edit();
capability.save();
});
@ -139,8 +139,8 @@ define(
});
});
describe("cancel", function() {
beforeEach(function() {
describe("cancel", function () {
beforeEach(function () {
capability.edit();
capability.cancel();
});
@ -152,10 +152,10 @@ define(
});
});
describe("dirty", function() {
describe("dirty", function () {
var model = {};
beforeEach(function() {
beforeEach(function () {
mockDomainObject.getModel.andReturn(model);
capability.edit();
capability.cancel();
@ -170,4 +170,4 @@ define(
});
});
}
);
);

View File

@ -33,22 +33,22 @@ define(
mockCapabilityService,
provider;
beforeEach(function() {
beforeEach(function () {
mockQ = {};
mockTransactionService = {};
mockCapabilityService = jasmine.createSpyObj("capabilityService", ["getCapabilities"]);
mockCapabilityService.getCapabilities.andReturn({
persistence: function() {}
persistence: function () {}
});
provider = new TransactionCapabilityDecorator(mockQ, mockTransactionService, mockCapabilityService);
});
it("decorates the persistence capability", function() {
it("decorates the persistence capability", function () {
var capabilities = provider.getCapabilities();
expect(capabilities.persistence({}) instanceof TransactionalPersistenceCapability).toBe(true);
});
});
}
);
);

View File

@ -29,7 +29,7 @@ define(
function fastPromise(val) {
return {
then: function(callback) {
then: function (callback) {
return callback(val);
}
};
@ -42,7 +42,7 @@ define(
mockDomainObject,
capability;
beforeEach(function() {
beforeEach(function () {
mockQ = jasmine.createSpyObj("$q", ["when"]);
mockQ.when.andCallFake(function (val) {
return fastPromise(val);
@ -61,14 +61,14 @@ define(
});
it("if no transaction is active, passes through to persistence" +
" provider", function() {
" provider", function () {
mockTransactionService.isActive.andReturn(false);
capability.persist();
expect(mockPersistence.persist).toHaveBeenCalled();
});
it("if transaction is active, persist and cancel calls are" +
" queued", function() {
" queued", function () {
mockTransactionService.isActive.andReturn(true);
capability.persist();
expect(mockTransactionService.addToTransaction).toHaveBeenCalled();
@ -78,7 +78,7 @@ define(
expect(mockPersistence.refresh).toHaveBeenCalled();
});
it("persist call is only added to transaction once", function() {
it("persist call is only added to transaction once", function () {
mockTransactionService.isActive.andReturn(true);
capability.persist();
expect(mockTransactionService.addToTransaction).toHaveBeenCalled();
@ -89,4 +89,4 @@ define(
});
}
);
);

View File

@ -56,4 +56,4 @@ define(
});
});
}
);
);

View File

@ -52,15 +52,15 @@ define(
);
mockScope = jasmine.createSpyObj(
"$scope",
[ "$on", "$watch" ]
["$on", "$watch"]
);
mockObject = jasmine.createSpyObj(
"domainObject",
[ "getId", "getModel", "getCapability", "hasCapability", "useCapability" ]
["getId", "getModel", "getCapability", "hasCapability", "useCapability"]
);
mockType = jasmine.createSpyObj(
"type",
[ "hasFeature" ]
["hasFeature"]
);
mockStatusCapability = jasmine.createSpyObj('statusCapability',
["get"]
@ -99,8 +99,8 @@ define(
expect(controller.getUnloadWarning()).toBeUndefined();
// Override the policy service to prevent navigation
mockPolicyService.allow.andCallFake(function(category, object, context, callback){
callback(errorMessage);
mockPolicyService.allow.andCallFake(function (category, object, context, callback) {
callback(errorMessage);
});
// Should have some warning message here now

View File

@ -34,11 +34,11 @@ define(
mockScope = jasmine.createSpyObj("$scope", ["$watch"]);
mockDomainObject = jasmine.createSpyObj(
'domainObject',
[ 'getId', 'getCapability' ]
['getId', 'getCapability']
);
mockContext = jasmine.createSpyObj(
'context',
[ 'getTrueRoot' ]
['getTrueRoot']
);
mockDomainObject.getId.andReturn('test-id');
@ -110,4 +110,4 @@ define(
});
});
}
);
);

View File

@ -34,8 +34,8 @@ define(
controller = new ElementsController(mockScope);
});
function getModel (model) {
return function() {
function getModel(model) {
return function () {
return model;
};
}

View File

@ -111,4 +111,4 @@ define(
});
}
);
);

View File

@ -58,10 +58,10 @@ define(
mockEditAction = jasmine.createSpyObj('edit', ['getMetadata']);
mockPropertiesAction = jasmine.createSpyObj('edit', ['getMetadata']);
mockDomainObject.getCapability.andCallFake(function(capability){
mockDomainObject.getCapability.andCallFake(function (capability) {
return capabilities[capability];
});
mockDomainObject.hasCapability.andCallFake(function(capability){
mockDomainObject.hasCapability.andCallFake(function (capability) {
return !!capabilities[capability];
});
@ -88,42 +88,42 @@ define(
});
it("allows the edit action when there are editable views", function () {
testViews = [ editableView ];
testViews = [editableView];
expect(policy.allow(mockEditAction, testContext)).toBe(true);
});
it("allows the edit properties action when there are no editable views", function () {
testViews = [ nonEditableView, nonEditableView ];
testViews = [nonEditableView, nonEditableView];
expect(policy.allow(mockPropertiesAction, testContext)).toBe(true);
});
it("disallows the edit action when there are no editable views", function () {
testViews = [ nonEditableView, nonEditableView ];
testViews = [nonEditableView, nonEditableView];
expect(policy.allow(mockEditAction, testContext)).toBe(false);
});
it("disallows the edit properties action when there are" +
" editable views", function () {
testViews = [ editableView ];
testViews = [editableView];
expect(policy.allow(mockPropertiesAction, testContext)).toBe(false);
});
it("disallows the edit action when object is already being" +
" edited", function () {
testViews = [ editableView ];
testViews = [editableView];
mockEditorCapability.isEditContextRoot.andReturn(true);
expect(policy.allow(mockEditAction, testContext)).toBe(false);
});
it("allows editing of panels in plot view", function () {
testViews = [ plotView ];
testViews = [plotView];
mockTypeCapability.getKey.andReturn('telemetry.panel');
expect(policy.allow(mockEditAction, testContext)).toBe(true);
});
it("disallows editing of plot view when object not a panel type", function () {
testViews = [ plotView ];
testViews = [plotView];
mockTypeCapability.getKey.andReturn('something.else');
expect(policy.allow(mockEditAction, testContext)).toBe(false);
@ -131,10 +131,10 @@ define(
it("allows the edit properties outside of the 'view-control' category", function () {
testViews = [ nonEditableView ];
testViews = [nonEditableView];
testContext.category = "something-else";
expect(policy.allow(mockPropertiesAction, testContext)).toBe(true);
});
});
}
);
);

View File

@ -61,12 +61,12 @@ define(
policy = new EditContextualActionPolicy(navigationService, editModeBlacklist, nonEditContextBlacklist);
});
it('Allows all actions when navigated object not in edit mode', function() {
it('Allows all actions when navigated object not in edit mode', function () {
expect(policy.allow(mockAction, context)).toBe(true);
});
it('Allows "window" action when navigated object in edit mode,' +
' but selected object not in edit mode ', function() {
' but selected object not in edit mode ', function () {
navigatedObject.hasCapability.andReturn(true);
mockEditorCapability.isEditContextRoot.andReturn(true);
metadata.key = "window";
@ -75,7 +75,7 @@ define(
it('Allows "remove" action when navigated object in edit mode,' +
' and selected object not editable, but its parent is.',
function() {
function () {
var mockParent = jasmine.createSpyObj("parentObject", ["hasCapability"]),
mockContextCapability = jasmine.createSpyObj("contextCapability", ["getParent"]);
@ -93,10 +93,10 @@ define(
metadata.key = "remove";
expect(policy.allow(mockAction, context)).toBe(true);
});
});
it('Disallows "move" action when navigated object in edit mode,' +
' but selected object not in edit mode ', function() {
' but selected object not in edit mode ', function () {
navigatedObject.hasCapability.andReturn(true);
mockEditorCapability.isEditContextRoot.andReturn(true);
mockEditorCapability.inEditContext.andReturn(false);
@ -105,7 +105,7 @@ define(
});
it('Disallows copy action when navigated object and' +
' selected object in edit mode', function() {
' selected object in edit mode', function () {
navigatedObject.hasCapability.andReturn(true);
mockDomainObject.hasCapability.andReturn(true);
mockEditorCapability.isEditContextRoot.andReturn(true);

View File

@ -36,7 +36,7 @@ define(
['hasCapability', 'getCapability']
);
mockDomainObject.getCapability.andReturn({
inEditContext: function () {
inEditContext: function () {
return true;
}
});
@ -76,4 +76,4 @@ define(
});
});
}
);
);

View File

@ -68,7 +68,7 @@ define(
mockDomainObject.getModel.andReturn({});
mockDomainObject.hasCapability.andReturn(true);
mockDomainObject.useCapability.andReturn(true);
mockDomainObject.getCapability.andCallFake(function(capability){
mockDomainObject.getCapability.andCallFake(function (capability) {
return mockCapabilities[capability];
});

View File

@ -34,13 +34,13 @@ define(
beforeEach(function () {
mockScope = jasmine.createSpyObj(
'$scope',
[ '$on', '$watch', '$watchCollection', "commit" ]
['$on', '$watch', '$watchCollection', "commit"]
);
mockElement = {};
testAttrs = { toolbar: 'testToolbar' };
mockScope.$parent = jasmine.createSpyObj(
'$parent',
[ '$watch', '$watchCollection' ]
['$watch', '$watchCollection']
);
mockUnwatch = jasmine.createSpy('unwatch');
@ -92,7 +92,7 @@ define(
// Provide a view which has a toolbar
representer.represent({
toolbar: { sections: [ { items: [ { property: 'k' } ] } ] }
toolbar: { sections: [{ items: [{ property: 'k' }] }] }
});
// Update the selection
@ -120,7 +120,7 @@ define(
// Provide a view which has a toolbar
representer.represent({
toolbar: { sections: [ { items: [ { property: 'k' } ] } ] }
toolbar: { sections: [{ items: [{ property: 'k' }] }] }
});
// Update the selection
@ -140,4 +140,4 @@ define(
});
}
);
);

View File

@ -76,7 +76,7 @@ define(
it("provides properties from the original structure", function () {
expect(
new EditToolbar(testStructure, [ testABC ])
new EditToolbar(testStructure, [testABC])
.getStructure()
.sections[0]
.items[1]
@ -87,7 +87,7 @@ define(
// This is needed by mct-toolbar
it("adds keys to form structure", function () {
expect(
new EditToolbar(testStructure, [ testABC ])
new EditToolbar(testStructure, [testABC])
.getStructure()
.sections[0]
.items[1]
@ -97,20 +97,20 @@ define(
it("marks empty sections as hidden", function () {
// Verify that all sections are included when applicable...
toolbar.setSelection([ testABCXYZ ]);
toolbar.setSelection([testABCXYZ]);
expect(toolbar.getStructure().sections.map(getVisibility))
.toEqual([ true, true, false ]);
.toEqual([true, true, false]);
// ...but omitted when only some are applicable
toolbar.setSelection([ testABC ]);
toolbar.setSelection([testABC]);
expect(toolbar.getStructure().sections.map(getVisibility))
.toEqual([ true, false, false ]);
.toEqual([true, false, false]);
});
it("reads properties from selections", function () {
var structure, state;
toolbar.setSelection([ testABC ]);
toolbar.setSelection([testABC]);
structure = toolbar.getStructure();
state = toolbar.getState();
@ -126,9 +126,11 @@ define(
it("reads properties from getters", function () {
var structure, state;
testABC.a = function () { return "from a getter!"; };
testABC.a = function () {
return "from a getter!";
};
toolbar.setSelection([ testABC ]);
toolbar.setSelection([testABC]);
structure = toolbar.getStructure();
state = toolbar.getState();
@ -137,7 +139,7 @@ define(
});
it("sets properties on update", function () {
toolbar.setSelection([ testABC ]);
toolbar.setSelection([testABC]);
toolbar.updateState(
toolbar.getStructure().sections[0].items[0].key,
"new value"
@ -151,7 +153,7 @@ define(
testABC.a = jasmine.createSpy('a');
toolbar.setSelection([ testABC ]);
toolbar.setSelection([testABC]);
structure = toolbar.getStructure();
toolbar.updateState(
@ -165,7 +167,7 @@ define(
it("provides a return value describing update status", function () {
// Should return true if actually updated, otherwise false
var key;
toolbar.setSelection([ testABC ]);
toolbar.setSelection([testABC]);
key = toolbar.getStructure().sections[0].items[0].key;
expect(toolbar.updateState(key, testABC.a)).toBeFalsy();
expect(toolbar.updateState(key, "new value")).toBeTruthy();
@ -173,35 +175,35 @@ define(
it("removes inapplicable items", function () {
// First, verify with all items
toolbar.setSelection([ testABC ]);
toolbar.setSelection([testABC]);
expect(toolbar.getStructure().sections[0].items.map(getVisibility))
.toEqual([ true, true, true ]);
.toEqual([true, true, true]);
// Then, try with some items omitted
toolbar.setSelection([ testABC, testAB ]);
toolbar.setSelection([testABC, testAB]);
expect(toolbar.getStructure().sections[0].items.map(getVisibility))
.toEqual([ true, true, false ]);
.toEqual([true, true, false]);
});
it("removes inconsistent states", function () {
// Only two of three values match among these selections
toolbar.setSelection([ testABC, testABC2 ]);
toolbar.setSelection([testABC, testABC2]);
expect(toolbar.getStructure().sections[0].items.map(getVisibility))
.toEqual([ false, true, true ]);
.toEqual([false, true, true]);
});
it("allows inclusive items", function () {
// One inclusive item is in the set, property 'x' of the
// second section; make sure items are pruned down
// when only some of the selection has x,y,z properties
toolbar.setSelection([ testABC, testABCXYZ ]);
toolbar.setSelection([testABC, testABCXYZ]);
expect(toolbar.getStructure().sections[1].items.map(getVisibility))
.toEqual([ true, false, false ]);
.toEqual([true, false, false]);
});
it("removes inclusive items when there are no matches", function () {
toolbar.setSelection([ testABCYZ ]);
toolbar.setSelection([testABCYZ]);
expect(toolbar.getStructure().sections[1].items.map(getVisibility))
.toEqual([ false, true, true ]);
.toEqual([false, true, true]);
});
it("adds click functions when a method is specified", function () {

View File

@ -30,7 +30,7 @@ define(
mockLog,
transactionService;
function fastPromise (val) {
function fastPromise(val) {
return {
then: function (callback) {
return fastPromise(callback(val));
@ -75,8 +75,8 @@ define(
describe("commit", function () {
var onCommits;
beforeEach(function() {
onCommits = [0, 1, 2].map(function(val) {
beforeEach(function () {
onCommits = [0, 1, 2].map(function (val) {
return jasmine.createSpy("onCommit" + val);
});
@ -87,7 +87,7 @@ define(
it("commit calls all queued commit functions", function () {
expect(transactionService.onCommits.length).toBe(3);
transactionService.commit();
onCommits.forEach( function (spy) {
onCommits.forEach(function (spy) {
expect(spy).toHaveBeenCalled();
});
});
@ -104,8 +104,8 @@ define(
describe("cancel", function () {
var onCancels;
beforeEach(function() {
onCancels = [0, 1, 2].map(function(val) {
beforeEach(function () {
onCancels = [0, 1, 2].map(function (val) {
return jasmine.createSpy("onCancel" + val);
});
@ -118,7 +118,7 @@ define(
it("cancel calls all queued cancel functions", function () {
expect(transactionService.onCancels.length).toBe(3);
transactionService.cancel();
onCancels.forEach( function (spy) {
onCancels.forEach(function (spy) {
expect(spy).toHaveBeenCalled();
});
});
@ -134,4 +134,4 @@ define(
});
}
);
);

View File

@ -24,7 +24,7 @@ define(
['../src/FormatProvider'],
function (FormatProvider) {
var KEYS = [ 'a', 'b', 'c' ];
var KEYS = ['a', 'b', 'c'];
describe("The FormatProvider", function () {
var mockFormats,
@ -35,12 +35,14 @@ define(
mockFormatInstances = KEYS.map(function (k) {
return jasmine.createSpyObj(
'format-' + k,
[ 'parse', 'validate', 'format' ]
['parse', 'validate', 'format']
);
});
// Return constructors
mockFormats = KEYS.map(function (k, i) {
function MockFormat() { return mockFormatInstances[i]; }
function MockFormat() {
return mockFormatInstances[i];
}
MockFormat.key = k;
return MockFormat;
});

View File

@ -380,7 +380,7 @@ define([
{
"key": "mctTree",
"implementation": MCTTree,
"depends": [ '$parse', 'gestureService' ]
"depends": ['$parse', 'gestureService']
}
],
"constants": [

View File

@ -40,7 +40,7 @@ define(
function BannerController($scope, notificationService, dialogService) {
$scope.active = notificationService.active;
$scope.action = function (action, $event){
$scope.action = function (action, $event) {
/*
Prevents default 'maximize' behaviour when clicking on
notification button
@ -48,19 +48,19 @@ define(
$event.stopPropagation();
return action();
};
$scope.dismiss = function(notification, $event) {
$scope.dismiss = function (notification, $event) {
$event.stopPropagation();
notification.dismissOrMinimize();
};
$scope.maximize = function(notification) {
if (notification.model.severity !== "info"){
$scope.maximize = function (notification) {
if (notification.model.severity !== "info") {
notification.model.cancel = function(){
notification.model.cancel = function () {
dialogService.dismiss();
};
//If the notification is dismissed by the user, close
// the dialog.
notification.onDismiss(function(){
notification.onDismiss(function () {
dialogService.dismiss();
});
@ -69,4 +69,4 @@ define(
};
}
return BannerController;
});
});

View File

@ -65,7 +65,7 @@ define(
* Get the current state of the toggle.
* @return {boolean} true if active
*/
ClickAwayController.prototype.isActive =function () {
ClickAwayController.prototype.isActive = function () {
return this.state;
};

View File

@ -21,7 +21,7 @@
*****************************************************************************/
define(
[ 'moment' ],
['moment'],
function (moment) {
var TIME_NAMES = {

View File

@ -28,7 +28,7 @@ define(
function () {
/**
* The ObjectInspectorController gets and formats the data for
* The ObjectInspectorController gets and formats the data for
* the inspector display
*
* @constructor
@ -37,67 +37,67 @@ define(
$scope.primaryParents = [];
$scope.contextutalParents = [];
//$scope.isLink = false;
// Gets an array of the contextual parents/anscestors of the selected object
function getContextualPath() {
var currentObj = $scope.ngModel.selectedObject,
currentParent,
parents = [];
currentParent = currentObj &&
currentObj.hasCapability('context') &&
currentObj.getCapability('context').getParent();
while (currentParent && currentParent.getModel().type !== 'root' &&
currentParent.hasCapability('context')) {
// Record this object
// Record this object
parents.unshift(currentParent);
// Get the next one up the tree
// Get the next one up the tree
currentObj = currentParent;
currentParent = currentObj.getCapability('context').getParent();
}
$scope.contextutalParents = parents;
}
// Gets an array of the parents/anscestors of the selected object's
// Gets an array of the parents/anscestors of the selected object's
// primary location (locational of original non-link)
function getPrimaryPath(current) {
var location;
// If this the the initial call of this recursive function
if (!current) {
current = $scope.ngModel.selectedObject;
$scope.primaryParents = [];
}
location = current.getModel().location;
if (location && location !== 'root') {
objectService.getObjects([location]).then(function (obj) {
var next = obj[location];
$scope.primaryParents.unshift(next);
getPrimaryPath(next);
});
}
}
// Gets the metadata for the selected object
function getMetadata() {
$scope.metadata = $scope.ngModel.selectedObject &&
$scope.ngModel.selectedObject.hasCapability('metadata') &&
$scope.ngModel.selectedObject.useCapability('metadata');
}
// Set scope variables when the selected object changes
// Set scope variables when the selected object changes
$scope.$watch('ngModel.selectedObject', function () {
$scope.isLink = $scope.ngModel.selectedObject &&
$scope.ngModel.selectedObject.hasCapability('location') &&
$scope.ngModel.selectedObject.getCapability('location').isLink();
if ($scope.isLink) {
getPrimaryPath();
getContextualPath();
@ -105,11 +105,11 @@ define(
$scope.primaryParents = [];
getContextualPath();
}
getMetadata();
});
}
return ObjectInspectorController;
}
);
);

View File

@ -69,7 +69,9 @@ define(
function updateList(ids) {
function updateSelectedObjects(objects) {
// Look up from the
function getObject(id) { return objects[id]; }
function getObject(id) {
return objects[id];
}
self.selectedObjects =
ids.filter(getObject).map(getObject);
}

View File

@ -76,7 +76,7 @@ define(
// based on a new mouse event object.
function updatePosition(event) {
// Get the current position, as an array
var currentPosition = [ event.pageX, event.pageY ];
var currentPosition = [event.pageX, event.pageY];
// Track the initial position, if one hasn't been observed
initialPosition = initialPosition || currentPosition;

View File

@ -46,7 +46,7 @@ define(
function link(scope, element, attrs, ctrl, transclude) {
var div = $compile(TEMPLATE)(scope),
rect = element.parent()[0].getBoundingClientRect(),
position = [ rect.left, rect.top ],
position = [rect.left, rect.top],
popup = popupService.display(div, position);
// TODO: Handle in CSS;

View File

@ -59,7 +59,7 @@ define(
},
// Grab the event when the user is done moving
// the splitter and pass it on
endMove: function() {
endMove: function () {
mctSplitPane.toggleClass('resizing');
}
};

View File

@ -78,7 +78,7 @@ define(
var $document = this.$document,
$window = this.$window,
body = $document.find('body'),
winDim = [ $window.innerWidth, $window.innerHeight ],
winDim = [$window.innerWidth, $window.innerHeight],
styles = { position: 'absolute' },
margin,
offset;
@ -93,7 +93,7 @@ define(
options.offsetX !== undefined ? options.offsetX : 0,
options.offsetY !== undefined ? options.offsetY : 0
];
margin = [ options.marginX, options.marginY ].map(function (m, i) {
margin = [options.marginX, options.marginY].map(function (m, i) {
return m === undefined ? (winDim[i] / 2) : m;
}).map(adjustNegatives);

View File

@ -50,8 +50,8 @@ define(
var context = domainObject &&
domainObject.getCapability('context'),
objectPath = context ? context.getPath() : [],
ids = objectPath.map(function (domainObject) {
return domainObject.getId();
ids = objectPath.map(function (domainObj) {
return domainObj.getId();
});
// Parses the path together. Starts with the

View File

@ -75,7 +75,7 @@ define([
this.activeGestures = this.gestureService.attachGestures(
this.elements(),
domainObject,
[ 'info', 'menu', 'drag' ]
['info', 'menu', 'drag']
);
}
};

View File

@ -105,8 +105,8 @@ define([
function getIdPath(domainObject) {
var context = domainObject && domainObject.getCapability('context');
function getId(domainObject) {
return domainObject.getId();
function getId(domainObj) {
return domainObj.getId();
}
return context ? context.getPath().map(getId) : [];

View File

@ -62,8 +62,8 @@ define([
var self = this,
domainObject = this.activeObject;
function addNode(domainObject, index) {
self.nodeViews[index].model(domainObject);
function addNode(domainObj, index) {
self.nodeViews[index].model(domainObj);
}
function addNodes(domainObjects) {

View File

@ -47,7 +47,7 @@ define(
mockPlainDocument =
jasmine.createSpyObj("document", ["createElement"]);
mockDocument = [ mockPlainDocument ];
mockDocument = [mockPlainDocument];
mockDocument.find = jasmine.createSpy("$document.find");
mockHead = jasmine.createSpyObj("head", ["append"]);
mockElement = jasmine.createSpyObj("link", ["setAttribute"]);

View File

@ -92,4 +92,4 @@ define(
});
});
}
);
);

View File

@ -35,11 +35,13 @@ define(
beforeEach(function () {
mockIndicator = jasmine.createSpyObj(
"indicator",
[ "getGlyph", "getText" ]
["getGlyph", "getText"]
);
testIndicatorA = {};
testIndicatorB = function () { return mockIndicator; };
testIndicatorB = function () {
return mockIndicator;
};
testIndicatorC = { template: "someTemplate" };
testIndicators = [
@ -71,4 +73,4 @@ define(
});
});
}
);
);

View File

@ -32,7 +32,7 @@ define(
beforeEach(function () {
mockDocument = jasmine.createSpyObj(
"$document",
[ "on", "off" ]
["on", "off"]
);
mockTimeout = jasmine.createSpy('timeout');
controller = new ClickAwayController(

View File

@ -57,4 +57,4 @@ define(
});
});
}
);
);

View File

@ -48,7 +48,7 @@ define(
beforeEach(function () {
mockScope = jasmine.createSpyObj(
"$scope",
[ "$apply", "$watch", "$watchCollection" ]
["$apply", "$watch", "$watchCollection"]
);
mockScope.ngModel = {};
mockScope.field = "testField";

View File

@ -80,4 +80,4 @@ define(
});
}
);
);

View File

@ -39,35 +39,35 @@ define(
beforeEach(function () {
mockScope = jasmine.createSpyObj(
"$scope",
[ "$watch" ]
["$watch"]
);
mockScope.ngModel = {};
mockScope.ngModel.selectedObject = 'mock selected object';
mockObjectService = jasmine.createSpyObj(
"objectService",
[ "getObjects" ]
["getObjects"]
);
mockPromise = jasmine.createSpyObj(
"promise",
[ "then" ]
["then"]
);
mockObjectService.getObjects.andReturn(mockPromise);
mockDomainObject = jasmine.createSpyObj(
"selectedObject",
[ "hasCapability", "getCapability", "useCapability", "getModel" ]
["hasCapability", "getCapability", "useCapability", "getModel"]
);
mockDomainObject.getModel.andReturn({location: 'somewhere'});
mockDomainObject.hasCapability.andReturn(true);
mockContextCapability = jasmine.createSpyObj(
"context capability",
[ "getParent" ]
["getParent"]
);
mockLocationCapability = jasmine.createSpyObj(
"location capability",
[ "isLink" ]
["isLink"]
);
mockDomainObject.getCapability.andCallFake(function (param) {
if (param === 'location') {
@ -76,9 +76,9 @@ define(
return mockContextCapability;
}
});
controller = new ObjectInspectorController(mockScope, mockObjectService);
// Change the selected object to trigger the watch call
mockScope.ngModel.selectedObject = mockDomainObject;
});
@ -94,17 +94,17 @@ define(
it("if link, looks for primary parent objects", function () {
mockLocationCapability.isLink.andReturn(true);
mockScope.$watch.mostRecentCall.args[1]();
expect(mockDomainObject.getModel).toHaveBeenCalled();
expect(mockObjectService.getObjects).toHaveBeenCalled();
mockPromise.then.mostRecentCall.args[0]({'somewhere': mockDomainObject});
});
it("gets metadata", function () {
mockScope.$watch.mostRecentCall.args[1]();
expect(mockDomainObject.useCapability).toHaveBeenCalledWith('metadata');
});
});
}
);
);

View File

@ -43,7 +43,7 @@ define(
function makeMockObject(id) {
var mockObject = jasmine.createSpyObj(
'object-' + id,
[ 'getId' ]
['getId']
);
mockObject.getId.andReturn(id);
return mockObject;
@ -60,15 +60,15 @@ define(
);
mockDomainObject = jasmine.createSpyObj(
'domainObject',
[ 'getCapability', 'hasCapability' ]
['getCapability', 'hasCapability']
);
mockType = jasmine.createSpyObj(
'type',
[ 'instanceOf' ]
['instanceOf']
);
mockDomainObjects = {};
[ "ROOT", "abc", "def", "xyz" ].forEach(function (id) {
["ROOT", "abc", "def", "xyz"].forEach(function (id) {
mockDomainObjects[id] = makeMockObject(id);
});
@ -98,7 +98,7 @@ define(
});
it("watches for changes in controlled property", function () {
var testValue = [ "a", "b", 1, 2 ];
var testValue = ["a", "b", 1, 2];
// This test is sensitive to ordering of watch calls
expect(mockScope.$watchCollection.calls.length).toEqual(1);
// Make sure we're watching the correct object
@ -131,7 +131,7 @@ define(
});
it("loads objects when the underlying list changes", function () {
var testIds = [ "abc", "def", "xyz" ];
var testIds = ["abc", "def", "xyz"];
// This test is sensitive to ordering of watch calls
expect(mockScope.$watchCollection.calls.length).toEqual(1);
// Make sure we're watching the correct object

Some files were not shown because too many files have changed in this diff Show More