diff --git a/package.json b/package.json index b00bb180af..80d9790ba7 100644 --- a/package.json +++ b/package.json @@ -52,5 +52,6 @@ "url": "https://github.com/nasa/openmctweb.git" }, "author": "", - "license": "Apache-2.0" + "license": "Apache-2.0", + "private": true } diff --git a/platform/commonUI/about/test/suite.json b/platform/commonUI/about/test/suite.json deleted file mode 100644 index 7b3b90142a..0000000000 --- a/platform/commonUI/about/test/suite.json +++ /dev/null @@ -1,5 +0,0 @@ -[ - "AboutController", - "LicenseController", - "LogoController" -] \ No newline at end of file diff --git a/platform/commonUI/browse/bundle.js b/platform/commonUI/browse/bundle.js index 21aba14b91..10eb6c7004 100644 --- a/platform/commonUI/browse/bundle.js +++ b/platform/commonUI/browse/bundle.js @@ -34,6 +34,7 @@ define([ "./src/windowing/NewTabAction", "./src/windowing/FullscreenAction", "./src/creation/CreateActionProvider", + "./src/creation/AddActionProvider", "./src/creation/CreationService", "./src/windowing/WindowTitler", 'legacyRegistry' @@ -50,6 +51,7 @@ define([ NewTabAction, FullscreenAction, CreateActionProvider, + AddActionProvider, CreationService, WindowTitler, legacyRegistry @@ -117,7 +119,8 @@ define([ "implementation": LocatorController, "depends": [ "$scope", - "$timeout" + "$timeout", + "objectService" ] }, { @@ -271,6 +274,18 @@ define([ "policyService" ] }, + { + "key": "AddActionProvider", + "provides": "actionService", + "type": "provider", + "implementation": AddActionProvider, + "depends": [ + "$q", + "typeService", + "dialogService", + "policyService" + ] + }, { "key": "CreationService", "provides": "creationService", diff --git a/platform/commonUI/browse/src/creation/AddAction.js b/platform/commonUI/browse/src/creation/AddAction.js new file mode 100644 index 0000000000..3832280130 --- /dev/null +++ b/platform/commonUI/browse/src/creation/AddAction.js @@ -0,0 +1,139 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web is licensed under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * Open MCT Web includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ +/*global define,Promise*/ + +/** + * Module defining AddAction. Created by ahenry on 01/21/16. + */ +define( + [ + './CreateWizard' + ], + function (CreateWizard) { + "use strict"; + + /** + * The Add Action is performed to create new instances of + * domain objects of a specific type that are subobjects of an + * object being edited. This is the action that is performed when a + * user uses the Add menu option. + * + * @memberof platform/commonUI/browse + * @implements {Action} + * @constructor + * + * @param {Type} type the type of domain object to create + * @param {DomainObject} parent the domain object that should + * act as a container for the newly-created object + * (note that the user will have an opportunity to + * override this) + * @param {ActionContext} context the context in which the + * action is being performed + * @param {DialogService} dialogService + */ + function AddAction(type, parent, context, $q, dialogService, policyService) { + this.metadata = { + key: 'add', + glyph: type.getGlyph(), + name: type.getName(), + type: type.getKey(), + description: type.getDescription(), + context: context + }; + + this.type = type; + this.parent = parent; + this.$q = $q; + this.dialogService = dialogService; + this.policyService = policyService; + } + + /** + * + * Create a new object of the given type. + * This will prompt for user input first. + * + * @returns {Promise} that will be resolved with the object that the + * action was originally invoked on (ie. the 'parent') + */ + AddAction.prototype.perform = function () { + var newModel = this.type.getInitialModel(), + newObject, + parentObject = this.parent, + wizard; + + newModel.type = this.type.getKey(); + newObject = parentObject.getCapability('instantiation').instantiate(newModel); + newObject.useCapability('mutation', function(model){ + model.location = parentObject.getId(); + }); + + wizard = new CreateWizard(newObject, this.parent, this.policyService); + + function populateObjectFromInput (formValue) { + return wizard.populateObjectFromInput(formValue, newObject); + } + + function addToParent (populatedObject) { + parentObject.getCapability('composition').add(populatedObject); + return parentObject.getCapability('persistence').persist().then(function(){ + return parentObject; + }); + } + + function save(object) { + /* + It's necessary to persist the new sub-object in order + that it can be retrieved for composition in the parent. + Future refactoring that allows temporary objects to be + retrieved from object services will make this unnecessary. + */ + return object.getCapability('editor').save(true); + } + + return this.dialogService + .getUserInput(wizard.getFormStructure(false), wizard.getInitialFormValue()) + .then(populateObjectFromInput) + .then(save) + .then(addToParent); + + }; + + + /** + * Metadata associated with a Add action. + * @typedef {ActionMetadata} AddActionMetadata + * @property {string} type the key for the type of domain object + * to be created + */ + + /** + * Get metadata about this action. + * @returns {AddActionMetadata} metadata about this action + */ + AddAction.prototype.getMetadata = function () { + return this.metadata; + }; + + return AddAction; + } +); diff --git a/platform/commonUI/browse/src/creation/AddActionProvider.js b/platform/commonUI/browse/src/creation/AddActionProvider.js new file mode 100644 index 0000000000..0ac97c0013 --- /dev/null +++ b/platform/commonUI/browse/src/creation/AddActionProvider.js @@ -0,0 +1,87 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web is licensed under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * Open MCT Web includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ +/*global define,Promise*/ + +/** + * Module defining AddActionProvider.js. Created by ahenry on 01/21/16. + */ +define( + ["./AddAction"], + function (AddAction) { + "use strict"; + + /** + * The AddActionProvider is an ActionProvider which introduces + * an Add action for creating sub objects. + * + * @memberof platform/commonUI/browse + * @constructor + * @implements {ActionService} + * + * @param {TypeService} typeService the type service, used to discover + * available types + * @param {DialogService} dialogService the dialog service, used by + * specific Create actions to get user input to populate the + * model of the newly-created domain object. + * @param {CreationService} creationService the creation service (also + * introduced in this bundle), responsible for handling actual + * object creation. + */ + function AddActionProvider($q, typeService, dialogService, policyService) { + this.typeService = typeService; + this.dialogService = dialogService; + this.$q = $q; + this.policyService = policyService; + } + + AddActionProvider.prototype.getActions = function (actionContext) { + var context = actionContext || {}, + key = context.key, + destination = context.domainObject, + self = this; + + // We only provide Add actions, and we need a + // domain object to serve as the container for the + // newly-created object (although the user may later + // make a different selection) + if (key !== 'add' || !destination) { + return []; + } + + // Introduce one create action per type + return this.typeService.listTypes().filter(function (type) { + return self.policyService.allow("creation", type) && self.policyService.allow("composition", destination.getCapability('type'), type); + }).map(function (type) { + return new AddAction( + type, + destination, + context, + self.$q, + self.dialogService, + self.policyService + ); + }); + }; + + return AddActionProvider; + } +); diff --git a/platform/commonUI/browse/src/creation/CreateWizard.js b/platform/commonUI/browse/src/creation/CreateWizard.js index caa60c6150..f4a29d42ac 100644 --- a/platform/commonUI/browse/src/creation/CreateWizard.js +++ b/platform/commonUI/browse/src/creation/CreateWizard.js @@ -26,18 +26,21 @@ define( 'use strict'; /** - * Construct a new CreateWizard. + * A class for capturing user input data from an object creation + * dialog, and populating a domain object with that data. * - * @param {TypeImpl} type the type of domain object to be created + * @param {DomainObject} domainObject the newly created object to + * populate with user input * @param {DomainObject} parent the domain object to serve as * the initial parent for the created object, in the dialog * @memberof platform/commonUI/browse * @constructor */ - function CreateWizard(type, parent, policyService, initialModel) { - this.type = type; - this.model = initialModel || type.getInitialModel(); - this.properties = type.getProperties(); + function CreateWizard(domainObject, parent, policyService) { + this.type = domainObject.getCapability('type'); + this.model = domainObject.getModel(); + this.domainObject = domainObject; + this.properties = this.type.getProperties(); this.parent = parent; this.policyService = policyService; } @@ -46,11 +49,14 @@ define( * Get the form model for this wizard; this is a description * that will be rendered to an HTML form. See the * platform/forms bundle - * + * @param {boolean} includeLocation if true, a 'location' section + * will be included that will allow the user to select the location + * of the newly created object, otherwise the .location property of + * the model will be used. * @return {FormModel} formModel the form model to * show in the create dialog */ - CreateWizard.prototype.getFormStructure = function () { + CreateWizard.prototype.getFormStructure = function (includeLocation) { var sections = [], type = this.type, policyService = this.policyService; @@ -84,12 +90,16 @@ define( }); // Ensure there is always a "save in" section - sections.push({ name: 'Location', rows: [{ - name: "Save In", - control: "locator", - validate: validateLocation, - key: "createParent" - }]}); + if (includeLocation) { + sections.push({ + name: 'Location', rows: [{ + name: "Save In", + control: "locator", + validate: validateLocation, + key: "createParent" + }] + }); + } return { sections: sections, @@ -97,6 +107,23 @@ define( }; }; + /** + * Given some form input values and a domain object, populate the + * domain object used to create this wizard from the given form values. + * @param formValue + * @returns {DomainObject} + */ + CreateWizard.prototype.populateObjectFromInput = function(formValue) { + var parent = this.getLocation(formValue), + formModel = this.createModel(formValue); + + formModel.location = parent.getId(); + this.domainObject.useCapability("mutation", function(){ + return formModel; + }); + return this.domainObject; + }; + /** * Get the initial value for the form being described. * This will include the values for all properties described @@ -120,6 +147,7 @@ define( /** * Based on a populated form, get the domain object which * should be used as a parent for the newly-created object. + * @private * @return {DomainObject} */ CreateWizard.prototype.getLocation = function (formValue) { @@ -129,6 +157,7 @@ define( /** * Create the domain object model for a newly-created object, * based on user input read from a formModel. + * @private * @return {object} the domain object model */ CreateWizard.prototype.createModel = function (formValue) { diff --git a/platform/commonUI/browse/src/creation/LocatorController.js b/platform/commonUI/browse/src/creation/LocatorController.js index 5e9dea8ed2..3d8c6cfc7f 100644 --- a/platform/commonUI/browse/src/creation/LocatorController.js +++ b/platform/commonUI/browse/src/creation/LocatorController.js @@ -33,7 +33,7 @@ define( * @memberof platform/commonUI/browse * @constructor */ - function LocatorController($scope, $timeout) { + function LocatorController($scope, $timeout, objectService) { // Populate values needed by the locator control. These are: // * rootObject: The top-level object, since we want to show // the full tree @@ -52,6 +52,18 @@ define( $scope.rootObject = (context && context.getRoot()) || $scope.rootObject; }, 0); + } 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){ + $timeout(function () { + $scope.rootObject = objects.ROOT; + }, 0); + }); } $scope.treeModel.selectedObject = domainObject; diff --git a/platform/commonUI/browse/test/creation/AddActionProviderSpec.js b/platform/commonUI/browse/test/creation/AddActionProviderSpec.js new file mode 100644 index 0000000000..aaa83af8e9 --- /dev/null +++ b/platform/commonUI/browse/test/creation/AddActionProviderSpec.js @@ -0,0 +1,137 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web is licensed under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * Open MCT Web includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine,xit,xdescribe*/ + +/** + * MCTRepresentationSpec. Created by ahenry on 01/21/14. + */ +define( + ["../../src/creation/AddActionProvider"], + function (AddActionProvider) { + "use strict"; + + describe("The add action provider", function () { + var mockTypeService, + mockDialogService, + mockPolicyService, + mockCreationPolicy, + mockCompositionPolicy, + mockPolicyMap = {}, + mockTypes, + mockDomainObject, + mockQ, + provider; + + function createMockType(name) { + var mockType = jasmine.createSpyObj( + "type" + name, + [ + "getKey", + "getGlyph", + "getName", + "getDescription", + "getProperties", + "getInitialModel", + "hasFeature" + ] + ); + mockType.hasFeature.andReturn(true); + mockType.getName.andReturn(name); + return mockType; + } + + beforeEach(function () { + mockTypeService = jasmine.createSpyObj( + "typeService", + [ "listTypes" ] + ); + mockDialogService = jasmine.createSpyObj( + "dialogService", + [ "getUserInput" ] + ); + mockPolicyService = jasmine.createSpyObj( + "policyService", + [ "allow" ] + ); + + mockDomainObject = jasmine.createSpyObj( + "domainObject", + [ "getCapability" ] + ); + + //Mocking getCapability because AddActionProvider uses the + // type capability of the destination object. + mockDomainObject.getCapability.andReturn({}); + + mockTypes = [ "A", "B", "C" ].map(createMockType); + + mockTypes.forEach(function(type){ + mockPolicyMap[type.getName()] = true; + }); + + mockCreationPolicy = function(type){ + return mockPolicyMap[type.getName()]; + }; + + mockCompositionPolicy = function(){ + return true; + }; + + mockPolicyService.allow.andReturn(true); + + mockTypeService.listTypes.andReturn(mockTypes); + + provider = new AddActionProvider( + mockQ, + mockTypeService, + mockDialogService, + mockPolicyService + ); + }); + + it("checks for creatability", function () { + provider.getActions({ + key: "add", + domainObject: mockDomainObject + }); + // Make sure it was creation which was used to check + expect(mockPolicyService.allow) + .toHaveBeenCalledWith("creation", mockTypes[0]); + }); + + it("checks for composability of type", function () { + provider.getActions({ + key: "add", + domainObject: mockDomainObject + }); + + expect(mockPolicyService.allow).toHaveBeenCalledWith( + "composition", + jasmine.any(Object), + jasmine.any(Object) + ); + + expect(mockDomainObject.getCapability).toHaveBeenCalledWith('type'); + }); + }); + } +); \ No newline at end of file diff --git a/platform/commonUI/browse/test/creation/CreateActionProviderSpec.js b/platform/commonUI/browse/test/creation/CreateActionProviderSpec.js index f49c394dc9..857b29fe4e 100644 --- a/platform/commonUI/browse/test/creation/CreateActionProviderSpec.js +++ b/platform/commonUI/browse/test/creation/CreateActionProviderSpec.js @@ -32,11 +32,12 @@ define( describe("The create action provider", function () { var mockTypeService, mockDialogService, - mockCreationService, + mockNavigationService, mockPolicyService, mockCreationPolicy, mockPolicyMap = {}, mockTypes, + mockQ, provider; function createMockType(name) { @@ -66,9 +67,9 @@ define( "dialogService", [ "getUserInput" ] ); - mockCreationService = jasmine.createSpyObj( - "creationService", - [ "createObject" ] + mockNavigationService = jasmine.createSpyObj( + "navigationService", + [ "setNavigation" ] ); mockPolicyService = jasmine.createSpyObj( "policyService", @@ -92,15 +93,14 @@ define( mockTypeService.listTypes.andReturn(mockTypes); provider = new CreateActionProvider( + mockQ, mockTypeService, - mockDialogService, - mockCreationService, + mockNavigationService, mockPolicyService ); }); - //TODO: Disabled for NEM Beta - xit("exposes one create action per type", function () { + it("exposes one create action per type", function () { expect(provider.getActions({ key: "create", domainObject: {} @@ -114,8 +114,7 @@ define( }).length).toEqual(0); }); - //TODO: Disabled for NEM Beta - xit("does not expose non-creatable types", function () { + it("does not expose non-creatable types", function () { // One of the types won't have the creation feature... mockPolicyMap[mockTypes[0].getName()] = false; // ...so it should have been filtered out. diff --git a/platform/commonUI/browse/test/creation/CreateWizardSpec.js b/platform/commonUI/browse/test/creation/CreateWizardSpec.js index c4453e7432..fbb2a735e6 100644 --- a/platform/commonUI/browse/test/creation/CreateWizardSpec.js +++ b/platform/commonUI/browse/test/creation/CreateWizardSpec.js @@ -35,6 +35,7 @@ define( mockProperties, mockPolicyService, testModel, + mockDomainObject, wizard; function createMockProperty(name) { @@ -81,8 +82,18 @@ define( mockType.getInitialModel.andReturn(testModel); mockType.getProperties.andReturn(mockProperties); + mockDomainObject = jasmine.createSpyObj( + 'domainObject', + ['getCapability', 'useCapability', 'getModel'] + ); + + //Mocking the getCapability('type') call + mockDomainObject.getCapability.andReturn(mockType); + mockDomainObject.useCapability.andReturn(); + mockDomainObject.getModel.andReturn(testModel); + wizard = new CreateWizard( - mockType, + mockDomainObject, mockParent, mockPolicyService ); @@ -130,6 +141,18 @@ define( }); }); + it("populates the model on the associated object", function () { + var formValue = { + "A": "ValueA", + "B": "ValueB", + "C": "ValueC" + }, + 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( 'domainObject', @@ -139,7 +162,8 @@ define( 'otherType', ['getKey'] ), - structure = wizard.getFormStructure(), + //Create a form structure with location + structure = wizard.getFormStructure(true), sections = structure.sections, rows = structure.sections[sections.length - 1].rows, locationRow = rows[rows.length - 1]; @@ -156,6 +180,12 @@ define( ); }); + it("creates a form model without a location if not requested", function () { + expect(wizard.getFormStructure(false).sections.some(function(section){ + return section.name === 'Location'; + })).toEqual(false); + }); + }); } diff --git a/platform/commonUI/browse/test/creation/LocatorControllerSpec.js b/platform/commonUI/browse/test/creation/LocatorControllerSpec.js index e380b56732..381aecf0ab 100644 --- a/platform/commonUI/browse/test/creation/LocatorControllerSpec.js +++ b/platform/commonUI/browse/test/creation/LocatorControllerSpec.js @@ -35,6 +35,8 @@ define( mockDomainObject, mockRootObject, mockContext, + mockObjectService, + getObjectsPromise, controller; beforeEach(function () { @@ -55,73 +57,106 @@ define( "context", [ "getRoot" ] ); + mockObjectService = jasmine.createSpyObj( + "objectService", + ["getObjects"] + ); + getObjectsPromise = jasmine.createSpyObj( + "promise", + ["then"] + ); mockDomainObject.getCapability.andReturn(mockContext); mockContext.getRoot.andReturn(mockRootObject); + mockObjectService.getObjects.andReturn(getObjectsPromise); mockScope.ngModel = {}; mockScope.field = "someField"; - controller = new LocatorController(mockScope, mockTimeout); + controller = new LocatorController(mockScope, mockTimeout, mockObjectService); }); + describe("when context is available", function () { - it("adds a treeModel to scope", function () { - expect(mockScope.treeModel).toBeDefined(); - }); + beforeEach(function () { + mockContext.getRoot.andReturn(mockRootObject); + controller = new LocatorController(mockScope, mockTimeout, mockObjectService); + }); - it("watches for changes to treeModel", function () { - // This is what the embedded tree representation - // will be modifying. - expect(mockScope.$watch).toHaveBeenCalledWith( - "treeModel.selectedObject", - jasmine.any(Function) - ); - }); + it("adds a treeModel to scope", function () { + expect(mockScope.treeModel).toBeDefined(); + }); - 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); - mockTimeout.mostRecentCall.args[0](); - expect(mockScope.ngModel.someField).toEqual(mockDomainObject); - expect(mockScope.rootObject).toEqual(mockRootObject); + it("watches for changes to treeModel", function () { + // This is what the embedded tree representation + // will be modifying. + expect(mockScope.$watch).toHaveBeenCalledWith( + "treeModel.selectedObject", + jasmine.any(Function) + ); + }); - // Verify that the capability we expect to have been used - // was used. - expect(mockDomainObject.getCapability) - .toHaveBeenCalledWith("context"); - }); + 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); + mockTimeout.mostRecentCall.args[0](); + expect(mockScope.ngModel.someField).toEqual(mockDomainObject); + expect(mockScope.rootObject).toEqual(mockRootObject); - it("rejects changes which fail validation", function () { - mockScope.structure = { validate: jasmine.createSpy('validate') }; - mockScope.structure.validate.andReturn(false); + // Verify that the capability we expect to have been used + // was used. + expect(mockDomainObject.getCapability) + .toHaveBeenCalledWith("context"); + }); - // Pass selection change - mockScope.$watch.mostRecentCall.args[1](mockDomainObject); - mockTimeout.mostRecentCall.args[0](); + it("rejects changes which fail validation", function () { + mockScope.structure = { validate: jasmine.createSpy('validate') }; + mockScope.structure.validate.andReturn(false); - expect(mockScope.structure.validate).toHaveBeenCalled(); - // Change should have been rejected - expect(mockScope.ngModel.someField).not.toEqual(mockDomainObject); - }); + // Pass selection change + mockScope.$watch.mostRecentCall.args[1](mockDomainObject); + mockTimeout.mostRecentCall.args[0](); - it("treats a lack of a selection as invalid", function () { - mockScope.ngModelController = jasmine.createSpyObj( - 'ngModelController', - [ '$setValidity' ] - ); + expect(mockScope.structure.validate).toHaveBeenCalled(); + // Change should have been rejected + expect(mockScope.ngModel.someField).not.toEqual(mockDomainObject); + }); - mockScope.$watch.mostRecentCall.args[1](mockDomainObject); - mockTimeout.mostRecentCall.args[0](); - expect(mockScope.ngModelController.$setValidity) - .toHaveBeenCalledWith(jasmine.any(String), true); + it("treats a lack of a selection as invalid", function () { + mockScope.ngModelController = jasmine.createSpyObj( + 'ngModelController', + [ '$setValidity' ] + ); - mockScope.$watch.mostRecentCall.args[1](undefined); - mockTimeout.mostRecentCall.args[0](); - expect(mockScope.ngModelController.$setValidity) - .toHaveBeenCalledWith(jasmine.any(String), false); - }); + mockScope.$watch.mostRecentCall.args[1](mockDomainObject); + mockTimeout.mostRecentCall.args[0](); + expect(mockScope.ngModelController.$setValidity) + .toHaveBeenCalledWith(jasmine.any(String), true); + mockScope.$watch.mostRecentCall.args[1](undefined); + mockTimeout.mostRecentCall.args[0](); + expect(mockScope.ngModelController.$setValidity) + .toHaveBeenCalledWith(jasmine.any(String), false); + }); + }); + 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}); + }); + controller = new LocatorController(mockScope, mockTimeout, mockObjectService); + }); + + it("provides a default context where none is available", function () { + mockScope.$watch.mostRecentCall.args[1](mockDomainObject); + mockTimeout.mostRecentCall.args[0](); + expect(mockScope.rootObject).toBe(defaultRoot); + + }); + }); }); } ); diff --git a/platform/commonUI/browse/test/suite.json b/platform/commonUI/browse/test/suite.json deleted file mode 100644 index 70e62bcfa6..0000000000 --- a/platform/commonUI/browse/test/suite.json +++ /dev/null @@ -1,18 +0,0 @@ -[ - "BrowseController", - "BrowseObjectController", - "PaneController", - "MenuArrowController", - "creation/CreateAction", - "creation/CreateActionProvider", - "creation/CreateMenuController", - "creation/CreateWizard", - "creation/CreationService", - "creation/CreationPolicy", - "creation/LocatorController", - "navigation/NavigateAction", - "navigation/NavigationService", - "windowing/FullscreenAction", - "windowing/NewTabAction", - "windowing/WindowTitler" -] diff --git a/platform/commonUI/dialog/test/suite.json b/platform/commonUI/dialog/test/suite.json deleted file mode 100644 index 4cf37af9ae..0000000000 --- a/platform/commonUI/dialog/test/suite.json +++ /dev/null @@ -1,4 +0,0 @@ -[ - "DialogService", - "OverlayService" -] \ No newline at end of file diff --git a/platform/commonUI/edit/src/actions/SaveAction.js b/platform/commonUI/edit/src/actions/SaveAction.js index 13fde582d7..073beeb4df 100644 --- a/platform/commonUI/edit/src/actions/SaveAction.js +++ b/platform/commonUI/edit/src/actions/SaveAction.js @@ -79,65 +79,23 @@ define( function doWizardSave(parent) { var context = domainObject.getCapability("context"), - wizard = new CreateWizard(domainObject.useCapability('type'), parent, self.policyService, domainObject.getModel()); - - function mergeObjects(fromObject, toObject){ - Object.keys(fromObject).forEach(function(key) { - toObject[key] = fromObject[key]; - }); - } - - // Create and persist the new object, based on user - // input. - function buildObjectFromInput(formValue) { - var parent = wizard.getLocation(formValue), - formModel = wizard.createModel(formValue); - - formModel.location = parent.getId(); - //Replace domain object model with model collected - // from user form. - domainObject.useCapability("mutation", function(){ - //Replace object model with the model from the form - return formModel; - }); - return domainObject; - } - - function getAllComposees(domainObject){ - return domainObject.useCapability('composition'); - } - - function addComposeesToObject(object){ - return function(composees){ - return self.$q.all(composees.map(function (composee) { - return object.getCapability('composition').add(composee); - })).then(resolveWith(object)); - }; - } - - /** - * Add the composees of the 'virtual' object to the - * persisted object - * @param object - * @returns {*} - */ - function composeNewObject(object){ - if (self.$q.when(object.hasCapability('composition') && domainObject.hasCapability('composition'))) { - return getAllComposees(domainObject) - .then(addComposeesToObject(object)); - } - } + wizard = new CreateWizard(domainObject, parent, self.policyService); return self.dialogService - .getUserInput(wizard.getFormStructure(), wizard.getInitialFormValue()) - .then(buildObjectFromInput); + .getUserInput(wizard.getFormStructure(true), wizard.getInitialFormValue()) + .then(function(formValue){ + return wizard.populateObjectFromInput(formValue, domainObject); + }); } function persistObject(object){ - return ((object.hasCapability('editor') && object.getCapability('editor').save(true)) || - object.getCapability('persistence').persist()) - .then(resolveWith(object)); + + //Persist first to mark dirty + return object.getCapability('persistence').persist().then(function(){ + //then save permanently + return object.getCapability('editor').save(); + }); } function fetchObject(objectId){ @@ -152,7 +110,9 @@ define( function locateObjectInParent(parent){ parent.getCapability('composition').add(domainObject.getId()); - return parent; + return parent.getCapability('persistence').persist().then(function() { + return parent; + }); } function doNothing() { @@ -174,7 +134,6 @@ define( .then(getParent)//Parent may have changed based // on user selection .then(locateObjectInParent) - .then(persistObject) .then(function(){ return fetchObject(domainObject.getId()); }) diff --git a/platform/commonUI/edit/src/capabilities/EditableInstantiationCapability.js b/platform/commonUI/edit/src/capabilities/EditableInstantiationCapability.js new file mode 100644 index 0000000000..6a0392476b --- /dev/null +++ b/platform/commonUI/edit/src/capabilities/EditableInstantiationCapability.js @@ -0,0 +1,60 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web is licensed under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * Open MCT Web includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ +/*global define*/ + + +define( + ['./EditableLookupCapability'], + function (EditableLookupCapability) { + 'use strict'; + + /** + * Wrapper for the "instantiation" capability; + * ensures that any domain objects instantiated in Edit mode + * are also wrapped as EditableDomainObjects. + * + * Meant specifically for use by EditableDomainObject and the + * associated cache; the constructor signature is particular + * to a pattern used there and may contain unused arguments. + * @constructor + * @memberof platform/commonUI/edit + * @implements {CompositionCapability} + */ + return function EditableInstantiationCapability( + contextCapability, + editableObject, + domainObject, + cache + ) { + // This is a "lookup" style capability (it looks up other + // domain objects), but we do not want to return the same + // specific value every time (composition may change) + return new EditableLookupCapability( + contextCapability, + editableObject, + domainObject, + cache, + false // Not idempotent + ); + }; + } +); diff --git a/platform/commonUI/edit/src/capabilities/EditableLookupCapability.js b/platform/commonUI/edit/src/capabilities/EditableLookupCapability.js index c92495dc3f..dae2df3d83 100644 --- a/platform/commonUI/edit/src/capabilities/EditableLookupCapability.js +++ b/platform/commonUI/edit/src/capabilities/EditableLookupCapability.js @@ -45,7 +45,8 @@ define( cache, idempotent ) { - var capability = Object.create(contextCapability); + var capability = Object.create(contextCapability), + method; // Check for domain object interface. If something has these // three methods, we assume it's a domain object. @@ -114,7 +115,9 @@ define( } // Wrap all methods; return only editable domain objects. - Object.keys(contextCapability).forEach(wrapMethod); + for (method in contextCapability) { + wrapMethod(method); + } return capability; }; diff --git a/platform/commonUI/edit/src/capabilities/EditorCapability.js b/platform/commonUI/edit/src/capabilities/EditorCapability.js index ec43bf298a..0818eebf6d 100644 --- a/platform/commonUI/edit/src/capabilities/EditorCapability.js +++ b/platform/commonUI/edit/src/capabilities/EditorCapability.js @@ -81,7 +81,8 @@ define( var domainObject = this.domainObject, editableObject = this.editableObject, self = this, - cache = this.cache; + cache = this.cache, + returnPromise; // Update the underlying, "real" domain object's model // with changes made to the copy used for editing. @@ -99,14 +100,18 @@ define( editableObject.getCapability("status").set("editing", false); if (nonrecursive) { - return resolvePromise(doMutate()) + returnPromise = resolvePromise(doMutate()) .then(doPersist) .then(function(){ self.cancel(); }); } else { - return resolvePromise(cache.saveAll()); + returnPromise = resolvePromise(cache.saveAll()); } + //Return the original (non-editable) object + return returnPromise.then(function() { + return domainObject.getOriginalObject ? domainObject.getOriginalObject() : domainObject; + }); }; /** diff --git a/platform/commonUI/edit/src/objects/EditableDomainObject.js b/platform/commonUI/edit/src/objects/EditableDomainObject.js index 2b764f7de7..253947181d 100644 --- a/platform/commonUI/edit/src/objects/EditableDomainObject.js +++ b/platform/commonUI/edit/src/objects/EditableDomainObject.js @@ -36,6 +36,7 @@ define( '../capabilities/EditableContextCapability', '../capabilities/EditableCompositionCapability', '../capabilities/EditableRelationshipCapability', + '../capabilities/EditableInstantiationCapability', '../capabilities/EditorCapability', '../capabilities/EditableActionCapability', './EditableDomainObjectCache' @@ -45,6 +46,7 @@ define( EditableContextCapability, EditableCompositionCapability, EditableRelationshipCapability, + EditableInstantiationCapability, EditorCapability, EditableActionCapability, EditableDomainObjectCache @@ -56,6 +58,7 @@ define( context: EditableContextCapability, composition: EditableCompositionCapability, relationship: EditableRelationshipCapability, + instantiation: EditableInstantiationCapability, editor: EditorCapability }; diff --git a/platform/commonUI/edit/test/capabilities/EditableLookupCapabilitySpec.js b/platform/commonUI/edit/test/capabilities/EditableLookupCapabilitySpec.js index 24b68b6fd9..16bcee88b1 100644 --- a/platform/commonUI/edit/test/capabilities/EditableLookupCapabilitySpec.js +++ b/platform/commonUI/edit/test/capabilities/EditableLookupCapabilitySpec.js @@ -118,6 +118,29 @@ define( expect(mockContext.getDomainObject.calls.length).toEqual(2); }); + it("wraps inherited methods", function () { + var CapabilityClass = function(){ + }; + CapabilityClass.prototype.inheritedMethod=function () { + return "an inherited method"; + }; + + mockContext = new CapabilityClass(); + + capability = new EditableLookupCapability( + mockContext, + mockEditableObject, + mockDomainObject, + factory, + false + ); + expect(capability.inheritedMethod()).toEqual("an inherited method"); + expect(capability.hasOwnProperty('inheritedMethod')).toBe(true); + // The presence of an own property indicates that the method + // has been wrapped on the object itself and this is a valid + // test that the inherited method has been wrapped. + }); + }); } ); \ No newline at end of file diff --git a/platform/commonUI/edit/test/suite.json b/platform/commonUI/edit/test/suite.json deleted file mode 100644 index 5e3a909c25..0000000000 --- a/platform/commonUI/edit/test/suite.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - "actions/CancelAction", - "actions/EditAction", - "actions/LinkAction", - "actions/PropertiesAction", - "actions/PropertiesDialog", - "actions/RemoveAction", - "actions/SaveAction", - "capabilities/EditableCompositionCapability", - "capabilities/EditableContextCapability", - "capabilities/EditableLookupCapability", - "capabilities/EditablePersistenceCapability", - "capabilities/EditableRelationshipCapability", - "capabilities/EditorCapability", - "controllers/EditActionController", - "controllers/EditController", - "controllers/EditPanesController", - "directives/MCTBeforeUnload", - "objects/EditableDomainObject", - "objects/EditableDomainObjectCache", - "objects/EditableModelCache", - "policies/EditableViewPolicy", - "policies/EditActionPolicy", - "representers/EditRepresenter", - "representers/EditToolbar", - "representers/EditToolbarRepresenter", - "representers/EditToolbarSelection" -] \ No newline at end of file diff --git a/platform/commonUI/formats/test/suite.json b/platform/commonUI/formats/test/suite.json deleted file mode 100644 index 06c88fac8b..0000000000 --- a/platform/commonUI/formats/test/suite.json +++ /dev/null @@ -1,4 +0,0 @@ -[ - "FormatProvider", - "UTCTimeFormat" -] diff --git a/platform/commonUI/general/res/fonts/symbols/icomoon.io-WTD-symbols-project.json b/platform/commonUI/general/res/fonts/symbols/icomoon.io-WTD-symbols-project.json index fee491e4b3..1b3c319b4c 100644 --- a/platform/commonUI/general/res/fonts/symbols/icomoon.io-WTD-symbols-project.json +++ b/platform/commonUI/general/res/fonts/symbols/icomoon.io-WTD-symbols-project.json @@ -1,19 +1,43 @@ { "metadata": { "name": "WTD Symbols", - "lastOpened": 1446670352108, - "created": 1446670349721 + "lastOpened": 1454115620456, + "created": 1454115616211 }, "iconSets": [ { "selection": [ + { + "order": 119, + "id": 96, + "prevSize": 32, + "code": 58905, + "name": "icon-bullet", + "tempChar": "" + }, + { + "order": 117, + "id": 95, + "prevSize": 32, + "code": 58904, + "name": "icon-session", + "tempChar": "" + }, + { + "order": 118, + "id": 94, + "prevSize": 32, + "code": 58903, + "name": "icon-topic", + "tempChar": "" + }, { "order": 116, "id": 93, "prevSize": 32, "code": 58902, "name": "icon-eye-open-no-gleam", - "tempChar": "" + "tempChar": "" }, { "order": 115, @@ -21,7 +45,7 @@ "prevSize": 32, "code": 58901, "name": "icon-eye-open", - "tempChar": "" + "tempChar": "" }, { "order": 110, @@ -29,7 +53,7 @@ "prevSize": 32, "code": 58899, "name": "icon-collapse-pane-left", - "tempChar": "" + "tempChar": "" }, { "order": 111, @@ -37,7 +61,7 @@ "prevSize": 32, "code": 58900, "name": "icon-collapse-pane-right", - "tempChar": "" + "tempChar": "" }, { "order": 109, @@ -45,7 +69,7 @@ "prevSize": 32, "code": 58898, "name": "icon-save", - "tempChar": "" + "tempChar": "" }, { "order": 108, @@ -53,7 +77,7 @@ "prevSize": 32, "code": 58897, "name": "icon-dataset", - "tempChar": "" + "tempChar": "" }, { "order": 90, @@ -61,7 +85,7 @@ "prevSize": 32, "code": 58896, "name": "icon-bell", - "tempChar": "" + "tempChar": "" }, { "order": 91, @@ -69,7 +93,7 @@ "prevSize": 32, "code": 58889, "name": "icon-hourglass", - "tempChar": "" + "tempChar": "" }, { "order": 92, @@ -82,7 +106,7 @@ 58890 ], "name": "icon-info-v15", - "tempChar": "" + "tempChar": "" }, { "order": 93, @@ -90,7 +114,7 @@ "prevSize": 32, "code": 58887, "name": "icon-x-in-circle", - "tempChar": "" + "tempChar": "" }, { "order": 94, @@ -98,7 +122,7 @@ "prevSize": 32, "code": 58881, "name": "icon-datatable", - "tempChar": "" + "tempChar": "" }, { "order": 95, @@ -106,7 +130,7 @@ "prevSize": 32, "code": 58882, "name": "icon-tabular-scrolling", - "tempChar": "" + "tempChar": "" }, { "order": 96, @@ -114,7 +138,7 @@ "prevSize": 32, "code": 58884, "name": "icon-tabular", - "tempChar": "" + "tempChar": "" }, { "order": 97, @@ -122,7 +146,7 @@ "prevSize": 32, "code": 58885, "name": "icon-calendar", - "tempChar": "" + "tempChar": "" }, { "order": 98, @@ -130,7 +154,7 @@ "prevSize": 32, "code": 58886, "name": "icon-paint-bucket", - "tempChar": "" + "tempChar": "" }, { "order": 99, @@ -138,7 +162,7 @@ "prevSize": 32, "code": 123, "name": "icon-pointer-left", - "tempChar": "" + "tempChar": "" }, { "order": 100, @@ -146,7 +170,7 @@ "prevSize": 32, "code": 125, "name": "icon-pointer-right", - "tempChar": "" + "tempChar": "" }, { "order": 101, @@ -154,7 +178,7 @@ "prevSize": 32, "code": 80, "name": "icon-person", - "tempChar": "" + "tempChar": "" }, { "order": 102, @@ -162,7 +186,7 @@ "prevSize": 32, "code": 232, "name": "icon-chain-links", - "tempChar": "" + "tempChar": "" }, { "order": 103, @@ -170,7 +194,7 @@ "prevSize": 32, "code": 115, "name": "icon-database-in-brackets", - "tempChar": "" + "tempChar": "" }, { "order": 104, @@ -178,7 +202,7 @@ "prevSize": 32, "code": 114, "name": "icon-refresh", - "tempChar": "" + "tempChar": "" }, { "order": 105, @@ -186,7 +210,7 @@ "prevSize": 32, "code": 108, "name": "icon-lock", - "tempChar": "" + "tempChar": "" }, { "order": 106, @@ -194,7 +218,7 @@ "prevSize": 32, "code": 51, "name": "icon-box-with-dashed-lines", - "tempChar": "" + "tempChar": "" }, { "order": 10, @@ -202,7 +226,7 @@ "prevSize": 32, "code": 58880, "name": "icon-box-with-arrow-cursor", - "tempChar": "" + "tempChar": "" }, { "order": 11, @@ -210,7 +234,7 @@ "prevSize": 32, "code": 65, "name": "icon-activity-mode", - "tempChar": "" + "tempChar": "" }, { "order": 12, @@ -218,7 +242,7 @@ "prevSize": 32, "code": 97, "name": "icon-activity", - "tempChar": "" + "tempChar": "" }, { "order": 87, @@ -226,7 +250,7 @@ "prevSize": 32, "code": 33, "name": "icon-alert-rect", - "tempChar": "" + "tempChar": "" }, { "order": 14, @@ -234,7 +258,7 @@ "prevSize": 32, "code": 58883, "name": "icon-alert-triangle", - "tempChar": "" + "tempChar": "" }, { "order": 15, @@ -242,7 +266,7 @@ "prevSize": 32, "code": 238, "name": "icon-arrow-double-down", - "tempChar": "" + "tempChar": "" }, { "order": 16, @@ -250,7 +274,7 @@ "prevSize": 32, "code": 235, "name": "icon-arrow-double-up", - "tempChar": "" + "tempChar": "" }, { "order": 2, @@ -258,7 +282,7 @@ "prevSize": 32, "code": 118, "name": "icon-arrow-down", - "tempChar": "" + "tempChar": "" }, { "order": 19, @@ -266,7 +290,7 @@ "prevSize": 32, "code": 60, "name": "icon-arrow-left", - "tempChar": "" + "tempChar": "" }, { "order": 20, @@ -274,7 +298,7 @@ "prevSize": 32, "code": 62, "name": "icon-arrow-right", - "tempChar": "" + "tempChar": "" }, { "order": 21, @@ -282,7 +306,7 @@ "prevSize": 32, "code": 236, "name": "icon-arrow-tall-down", - "tempChar": "" + "tempChar": "" }, { "order": 22, @@ -290,7 +314,7 @@ "prevSize": 32, "code": 237, "name": "icon-arrow-tall-up", - "tempChar": "" + "tempChar": "" }, { "order": 23, @@ -298,7 +322,7 @@ "prevSize": 32, "code": 94, "name": "icon-arrow-up", - "tempChar": "" + "tempChar": "" }, { "order": 24, @@ -306,7 +330,7 @@ "prevSize": 32, "code": 73, "name": "icon-arrows-out", - "tempChar": "" + "tempChar": "" }, { "order": 25, @@ -314,7 +338,7 @@ "prevSize": 32, "code": 58893, "name": "icon-arrows-right-left", - "tempChar": "" + "tempChar": "" }, { "order": 33, @@ -322,7 +346,7 @@ "prevSize": 32, "code": 53, "name": "icon-arrows-up-down", - "tempChar": "" + "tempChar": "" }, { "order": 26, @@ -330,7 +354,7 @@ "prevSize": 32, "code": 42, "name": "icon-asterisk", - "tempChar": "" + "tempChar": "" }, { "order": 27, @@ -338,7 +362,7 @@ "prevSize": 32, "code": 72, "name": "icon-autoflow-tabular", - "tempChar": "" + "tempChar": "" }, { "order": 28, @@ -346,7 +370,7 @@ "prevSize": 32, "code": 224, "name": "icon-box", - "tempChar": "" + "tempChar": "" }, { "order": 29, @@ -354,7 +378,7 @@ "prevSize": 32, "code": 50, "name": "icon-check", - "tempChar": "" + "tempChar": "" }, { "order": 30, @@ -362,7 +386,7 @@ "prevSize": 32, "code": 67, "name": "icon-clock", - "tempChar": "" + "tempChar": "" }, { "order": 31, @@ -370,7 +394,7 @@ "prevSize": 32, "code": 46, "name": "icon-connectivity", - "tempChar": "" + "tempChar": "" }, { "order": 32, @@ -378,7 +402,7 @@ "prevSize": 32, "code": 100, "name": "icon-database-query", - "tempChar": "" + "tempChar": "" }, { "order": 17, @@ -386,7 +410,7 @@ "prevSize": 32, "code": 68, "name": "icon-database", - "tempChar": "" + "tempChar": "" }, { "order": 35, @@ -394,7 +418,7 @@ "prevSize": 32, "code": 81, "name": "icon-dictionary", - "tempChar": "" + "tempChar": "" }, { "order": 36, @@ -402,7 +426,7 @@ "prevSize": 32, "code": 242, "name": "icon-duplicate", - "tempChar": "" + "tempChar": "" }, { "order": 37, @@ -410,7 +434,7 @@ "prevSize": 32, "code": 102, "name": "icon-folder-new", - "tempChar": "" + "tempChar": "" }, { "order": 38, @@ -418,7 +442,7 @@ "prevSize": 32, "code": 70, "name": "icon-folder", - "tempChar": "" + "tempChar": "" }, { "order": 39, @@ -426,7 +450,7 @@ "prevSize": 32, "code": 95, "name": "icon-fullscreen-collapse", - "tempChar": "" + "tempChar": "" }, { "order": 40, @@ -434,7 +458,7 @@ "prevSize": 32, "code": 122, "name": "icon-fullscreen-expand", - "tempChar": "" + "tempChar": "" }, { "order": 41, @@ -442,7 +466,7 @@ "prevSize": 32, "code": 71, "name": "icon-gear", - "tempChar": "" + "tempChar": "" }, { "order": 49, @@ -450,7 +474,7 @@ "prevSize": 32, "code": 227, "name": "icon-image", - "tempChar": "" + "tempChar": "" }, { "order": 42, @@ -458,7 +482,7 @@ "prevSize": 32, "code": 225, "name": "icon-layers", - "tempChar": "" + "tempChar": "" }, { "order": 43, @@ -466,7 +490,7 @@ "prevSize": 32, "code": 76, "name": "icon-layout", - "tempChar": "" + "tempChar": "" }, { "order": 44, @@ -474,7 +498,7 @@ "prevSize": 32, "code": 226, "name": "icon-line-horz", - "tempChar": "" + "tempChar": "" }, { "order": 75, @@ -482,7 +506,7 @@ "prevSize": 32, "code": 244, "name": "icon-link", - "tempChar": "" + "tempChar": "" }, { "order": 46, @@ -490,7 +514,7 @@ "prevSize": 32, "code": 88, "name": "icon-magnify-in", - "tempChar": "" + "tempChar": "" }, { "order": 47, @@ -498,7 +522,7 @@ "prevSize": 32, "code": 89, "name": "icon-magnify-out", - "tempChar": "" + "tempChar": "" }, { "order": 48, @@ -506,7 +530,7 @@ "prevSize": 32, "code": 77, "name": "icon-magnify", - "tempChar": "" + "tempChar": "" }, { "order": 34, @@ -514,7 +538,7 @@ "prevSize": 32, "code": 109, "name": "icon-menu", - "tempChar": "" + "tempChar": "" }, { "order": 50, @@ -522,7 +546,7 @@ "prevSize": 32, "code": 243, "name": "icon-move", - "tempChar": "" + "tempChar": "" }, { "order": 51, @@ -530,7 +554,7 @@ "prevSize": 32, "code": 121, "name": "icon-new-window", - "tempChar": "" + "tempChar": "" }, { "order": 52, @@ -538,7 +562,7 @@ "prevSize": 32, "code": 111, "name": "icon-object", - "tempChar": "" + "tempChar": "" }, { "order": 73, @@ -546,7 +570,7 @@ "prevSize": 32, "code": 63, "name": "icon-object-unknown", - "tempChar": "" + "tempChar": "" }, { "order": 53, @@ -554,7 +578,7 @@ "prevSize": 32, "code": 86, "name": "icon-packet", - "tempChar": "" + "tempChar": "" }, { "order": 54, @@ -562,7 +586,7 @@ "prevSize": 32, "code": 234, "name": "icon-page", - "tempChar": "" + "tempChar": "" }, { "order": 55, @@ -570,7 +594,7 @@ "prevSize": 32, "code": 241, "name": "icon-pause", - "tempChar": "" + "tempChar": "" }, { "order": 56, @@ -578,7 +602,7 @@ "prevSize": 32, "code": 112, "name": "icon-pencil", - "tempChar": "" + "tempChar": "" }, { "order": 65, @@ -586,7 +610,7 @@ "prevSize": 32, "code": 79, "name": "icon-people", - "tempChar": "" + "tempChar": "" }, { "order": 57, @@ -594,7 +618,7 @@ "prevSize": 32, "code": 239, "name": "icon-play", - "tempChar": "" + "tempChar": "" }, { "order": 58, @@ -602,7 +626,7 @@ "prevSize": 32, "code": 233, "name": "icon-plot-resource", - "tempChar": "" + "tempChar": "" }, { "order": 59, @@ -610,7 +634,7 @@ "prevSize": 32, "code": 43, "name": "icon-plus", - "tempChar": "" + "tempChar": "" }, { "order": 60, @@ -618,7 +642,7 @@ "prevSize": 32, "code": 45, "name": "icon-minus", - "tempChar": "" + "tempChar": "" }, { "order": 61, @@ -626,7 +650,7 @@ "prevSize": 32, "code": 54, "name": "icon-sine", - "tempChar": "" + "tempChar": "" }, { "order": 62, @@ -634,7 +658,7 @@ "prevSize": 32, "code": 228, "name": "icon-T", - "tempChar": "" + "tempChar": "" }, { "order": 63, @@ -642,7 +666,7 @@ "prevSize": 32, "code": 116, "name": "icon-telemetry-panel", - "tempChar": "" + "tempChar": "" }, { "order": 64, @@ -650,7 +674,7 @@ "prevSize": 32, "code": 84, "name": "icon-telemetry", - "tempChar": "" + "tempChar": "" }, { "order": 18, @@ -658,7 +682,7 @@ "prevSize": 32, "code": 246, "name": "icon-thumbs-strip", - "tempChar": "" + "tempChar": "" }, { "order": 67, @@ -666,7 +690,7 @@ "prevSize": 32, "code": 83, "name": "icon-timeline", - "tempChar": "" + "tempChar": "" }, { "order": 68, @@ -674,7 +698,7 @@ "prevSize": 32, "code": 245, "name": "icon-timer", - "tempChar": "" + "tempChar": "" }, { "order": 69, @@ -682,7 +706,7 @@ "prevSize": 32, "code": 90, "name": "icon-trash", - "tempChar": "" + "tempChar": "" }, { "order": 70, @@ -690,7 +714,7 @@ "prevSize": 32, "code": 229, "name": "icon-two-parts-both", - "tempChar": "" + "tempChar": "" }, { "order": 71, @@ -698,7 +722,7 @@ "prevSize": 32, "code": 231, "name": "icon-two-parts-one-only", - "tempChar": "" + "tempChar": "" }, { "order": 72, @@ -706,7 +730,7 @@ "prevSize": 32, "code": 120, "name": "icon-x-heavy", - "tempChar": "" + "tempChar": "" }, { "order": 66, @@ -714,7 +738,7 @@ "prevSize": 32, "code": 58946, "name": "icon-x", - "tempChar": "" + "tempChar": "" } ], "id": 2, @@ -729,6 +753,58 @@ "height": 1024, "prevSize": 32, "icons": [ + { + "id": 96, + "paths": [ + "M832 752c0 44-36 80-80 80h-480c-44 0-80-36-80-80v-480c0-44 36-80 80-80h480c44 0 80 36 80 80v480z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "icon-bullet" + ], + "colorPermutations": { + "16161751": [] + } + }, + { + "id": 95, + "paths": [ + "M101.2 287.6c57.2-69.6 118.6-104.8 182.8-104.8s125.6 35.2 182.8 104.8c51.4 62.6 89.8 141.2 112.6 196.2 27.6 65.8 58.8 121 90.6 159.6 10 12 44.2 51.4 69.8 51.4 6.4 0 30.4-3.8 69.8-51.4 31.8-38.6 63.2-93.8 90.6-159.6 23-55 61.2-133.6 112.6-196.2 3.6-4.4 7.2-8.6 10.8-12.8v-18.8c0.4-140.8-114.8-256-255.6-256h-512c-140.8 0-256 115.2-256 256v201c23.4-51.8 57.4-116.4 101.2-169.4zM744 182c54 0 106.4 24.4 156 72.8-31.6 44.6-57.4 92.2-77.6 134.2-33.4-42-61.8-59.4-78.4-59.4-17.4 0-47.8 19.2-83.2 65.8-27-57.6-54-102.4-77.4-136 51-51.2 104.8-77.4 160.6-77.4z", + "M922.8 736.4c-57.2 69.6-118.8 104.8-182.8 104.8s-125.6-35.2-182.8-104.8c-51.4-62.6-89.8-141.2-112.6-196.2-27.6-65.8-58.8-121-90.6-159.6-10-12-44.2-51.4-69.8-51.4-6.4 0-30.4 3.8-69.8 51.4-31.8 38.6-63.2 93.8-90.6 159.6-23 55-61.2 133.6-112.6 196.2-3.6 4.4-7.2 8.6-10.8 12.8v18.8c0 140.8 115.2 256 256 256h512c140.8 0 256-115.2 256-256v-201c-23.8 51.8-57.8 116.4-101.6 169.4zM280 842c-54 0-106.4-24.4-156-72.8 31.6-44.6 57.4-92.2 77.6-134.2 33.4 42 61.8 59.4 78.4 59.4 17.4 0 47.8-19.2 83.2-65.8 27 57.6 54 102.4 77.4 136-51 51.2-104.8 77.4-160.6 77.4z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "icon-session" + ], + "colorPermutations": { + "16161751": [], + "125525525516161751": [] + } + }, + { + "id": 94, + "paths": [ + "M832 0h-128v192h127.6c0.2 0 0.2 0.2 0.4 0.4v639.4c0 0.2-0.2 0.2-0.4 0.4h-127.6v192h128c105.6 0 192-86.4 192-192v-640.2c0-105.6-86.4-192-192-192z", + "M192 831.6v-639.4c0-0.2 0.2-0.2 0.4-0.4h127.6v-191.8h-128c-105.6 0-192 86.4-192 192v640c0 105.6 86.4 192 192 192h128v-192h-127.6c-0.2 0-0.4-0.2-0.4-0.4z", + "M686 384c7.2 0 21 7.4 38.6 25.8 11.8-24.8 26.4-52.2 43.4-79v-50c-26.4-16.4-53.8-24.6-82-24.6-37.6 0-74.2 14.8-108.8 44.2 27.4 37.8 49.6 78.6 66.2 113.8 19.4-21.6 34.8-30.2 42.6-30.2z", + "M338 640c-7.2 0-21-7.4-38.6-25.8-11.8 24.8-26.4 52.2-43.4 79v74.8h82c37.6 0 74.2-14.8 108.8-44.2-27.4-37.8-49.6-78.6-66.2-113.8-19.4 21.4-34.8 30-42.6 30z", + "M768 544.2c-38.2 70.6-72.8 95.8-85 95.8-15 0-64.2-38.4-112-152.8-17.4-41.8-46.6-101.6-85.8-149.4-44.8-54.4-93.2-82-144.2-82-29.2 0-57.6 9-85 27v196.8c38.2-70.6 72.8-95.8 85-95.8 15 0 64.2 38.4 112 152.8 17.4 41.8 46.6 101.6 85.8 149.4 44.8 54.4 93.2 82 144.2 82 29.2 0 57.6-9 85-27v-196.8z" + ], + "attrs": [], + "isMulticolor": false, + "grid": 0, + "tags": [ + "icon-topic" + ], + "colorPermutations": { + "16161751": [], + "125525525516161751": [] + } + }, { "id": 93, "paths": [ @@ -749,6 +825,10 @@ "icon-eye-open-no-gleam" ], "colorPermutations": { + "16161751": [ + 1, + 1 + ], "125525525516161751": [ 1, 1 @@ -775,6 +855,10 @@ "icon-crosshair" ], "colorPermutations": { + "16161751": [ + 1, + 1 + ], "125525525516161751": [ 1, 1 @@ -801,6 +885,10 @@ "icon-collapse-pane-left" ], "colorPermutations": { + "16161751": [ + 0, + 0 + ], "125525525516161751": [ 0, 0 @@ -827,6 +915,10 @@ "icon-collapse-pane-right" ], "colorPermutations": { + "16161751": [ + 0, + 0 + ], "125525525516161751": [ 0, 0 @@ -853,6 +945,10 @@ "icon-save-v2" ], "colorPermutations": { + "16161751": [ + 0, + 0 + ], "125525525516161751": [ 0, 0 @@ -872,6 +968,7 @@ "icon-dataset" ], "colorPermutations": { + "16161751": [], "125525525516161751": [] } }, @@ -895,6 +992,10 @@ "icon-bell" ], "colorPermutations": { + "16161751": [ + 1, + 1 + ], "125525525516161751": [ 1, 1 @@ -921,6 +1022,10 @@ "icon-hourglass" ], "colorPermutations": { + "16161751": [ + 1, + 1 + ], "125525525516161751": [ 1, 1 @@ -943,6 +1048,9 @@ "icon-info-v1.5" ], "colorPermutations": { + "16161751": [ + 0 + ], "125525525516161751": [ 0 ] @@ -1336,6 +1444,10 @@ "icon-box-with-arrow-cursor" ], "colorPermutations": { + "16161751": [ + 0, + 0 + ], "125525525516161751": [ 0, 0 @@ -2367,12 +2479,6 @@ 161, 75, 1 - ], - [ - 255, - 255, - 255, - 1 ] ] ], diff --git a/platform/commonUI/general/res/fonts/symbols/wtdsymbols.eot b/platform/commonUI/general/res/fonts/symbols/wtdsymbols.eot index 6e1b7e80f7..1c9d602aa1 100755 Binary files a/platform/commonUI/general/res/fonts/symbols/wtdsymbols.eot and b/platform/commonUI/general/res/fonts/symbols/wtdsymbols.eot differ diff --git a/platform/commonUI/general/res/fonts/symbols/wtdsymbols.svg b/platform/commonUI/general/res/fonts/symbols/wtdsymbols.svg index 7636991183..f6e92e601f 100755 --- a/platform/commonUI/general/res/fonts/symbols/wtdsymbols.svg +++ b/platform/commonUI/general/res/fonts/symbols/wtdsymbols.svg @@ -94,5 +94,8 @@ + + + \ No newline at end of file diff --git a/platform/commonUI/general/res/fonts/symbols/wtdsymbols.ttf b/platform/commonUI/general/res/fonts/symbols/wtdsymbols.ttf index a514b65eb1..ace067aaf0 100755 Binary files a/platform/commonUI/general/res/fonts/symbols/wtdsymbols.ttf and b/platform/commonUI/general/res/fonts/symbols/wtdsymbols.ttf differ diff --git a/platform/commonUI/general/res/fonts/symbols/wtdsymbols.woff b/platform/commonUI/general/res/fonts/symbols/wtdsymbols.woff index eb524a6291..37ffb935d9 100755 Binary files a/platform/commonUI/general/res/fonts/symbols/wtdsymbols.woff and b/platform/commonUI/general/res/fonts/symbols/wtdsymbols.woff differ diff --git a/platform/commonUI/inspect/test/suite.json b/platform/commonUI/inspect/test/suite.json deleted file mode 100644 index ca006fdaa7..0000000000 --- a/platform/commonUI/inspect/test/suite.json +++ /dev/null @@ -1,5 +0,0 @@ -[ - "gestures/InfoGesture", - "gestures/InfoButtonGesture", - "services/InfoService" -] diff --git a/platform/commonUI/mobile/test/suite.json b/platform/commonUI/mobile/test/suite.json deleted file mode 100644 index e72079e835..0000000000 --- a/platform/commonUI/mobile/test/suite.json +++ /dev/null @@ -1,6 +0,0 @@ -[ - "AgentService", - "DeviceClassifier", - "DeviceMatchers", - "MCTDevice" -] diff --git a/platform/commonUI/notification/test/suite.json b/platform/commonUI/notification/test/suite.json deleted file mode 100644 index 75e88599fd..0000000000 --- a/platform/commonUI/notification/test/suite.json +++ /dev/null @@ -1,4 +0,0 @@ -[ - "NotificationService", - "NotificationIndicatorController" -] diff --git a/platform/containment/test/suite.json b/platform/containment/test/suite.json deleted file mode 100644 index 81218a969e..0000000000 --- a/platform/containment/test/suite.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - "CapabilityTable", - "ComposeActionPolicy", - "CompositionModelPolicy", - "CompositionMutabilityPolicy", - "CompositionPolicy", - "ContainmentTable" -] \ No newline at end of file diff --git a/platform/core/test/suite.json b/platform/core/test/suite.json deleted file mode 100644 index b428fa5945..0000000000 --- a/platform/core/test/suite.json +++ /dev/null @@ -1,46 +0,0 @@ -[ - "actions/ActionAggregator", - "actions/ActionCapability", - "actions/ActionProvider", - "actions/LoggingActionDecorator", - - "capabilities/CompositionCapability", - "capabilities/ContextCapability", - "capabilities/ContextualDomainObject", - "capabilities/CoreCapabilityProvider", - "capabilities/DelegationCapability", - "capabilities/InstantiationCapability", - "capabilities/MetadataCapability", - "capabilities/MutationCapability", - "capabilities/PersistenceCapability", - "capabilities/RelationshipCapability", - - "identifiers/Identifier", - "identifiers/IdentifierProvider", - - "models/ModelAggregator", - "models/MissingModelDecorator", - "models/PersistedModelProvider", - "models/RootModelProvider", - "models/StaticModelProvider", - "models/CachingModelDecorator", - - "objects/DomainObject", - "objects/DomainObjectProvider", - - "services/Contextualize", - "services/Instantiate", - "services/Now", - "services/Throttle", - "services/Topic", - - "types/MergeModels", - "types/TypeCapability", - "types/TypeImpl", - "types/TypeProperty", - "types/TypePropertyConversion", - "types/TypeProvider", - - "views/ViewCapability", - "views/ViewProvider" -] diff --git a/platform/entanglement/test/suite.json b/platform/entanglement/test/suite.json deleted file mode 100644 index 223e473629..0000000000 --- a/platform/entanglement/test/suite.json +++ /dev/null @@ -1,17 +0,0 @@ -[ - "actions/AbstractComposeAction", - "actions/CopyAction", - "actions/GoToOriginalAction", - "actions/LinkAction", - "actions/MoveAction", - "actions/SetPrimaryLocationAction", - "policies/CrossSpacePolicy", - "services/CopyService", - "services/CopyTask", - "services/LinkService", - "services/MoveService", - "services/LocationService", - "services/LocatingCreationDecorator", - "services/LocatingObjectDecorator", - "capabilities/LocationCapability" -] diff --git a/platform/execution/test/suite.json b/platform/execution/test/suite.json deleted file mode 100644 index d14a0714c5..0000000000 --- a/platform/execution/test/suite.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - "WorkerService" -] diff --git a/platform/features/clock/test/suite.json b/platform/features/clock/test/suite.json deleted file mode 100644 index be10ff57f8..0000000000 --- a/platform/features/clock/test/suite.json +++ /dev/null @@ -1,11 +0,0 @@ -[ - "actions/AbstractStartTimerAction", - "actions/RestartTimerAction", - "actions/StartTimerAction", - "controllers/ClockController", - "controllers/RefreshingController", - "controllers/TimerController", - "controllers/TimerFormatter", - "indicators/ClockIndicator", - "services/TickerService" -] diff --git a/platform/features/conductor/test/suite.json b/platform/features/conductor/test/suite.json deleted file mode 100644 index 9343b8e422..0000000000 --- a/platform/features/conductor/test/suite.json +++ /dev/null @@ -1,6 +0,0 @@ -[ - "ConductorRepresenter", - "ConductorService", - "ConductorTelemetryDecorator", - "TimeConductor" -] diff --git a/platform/features/events/test/suite.json b/platform/features/events/test/suite.json deleted file mode 100644 index 44c96e9fa6..0000000000 --- a/platform/features/events/test/suite.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - "DomainColumn", - "EventListController", - "EventListPopulator", - "policies/MessagesViewPolicy", - "RangeColumn" -] \ No newline at end of file diff --git a/platform/features/imagery/test/suite.json b/platform/features/imagery/test/suite.json deleted file mode 100644 index 4ea822e7a2..0000000000 --- a/platform/features/imagery/test/suite.json +++ /dev/null @@ -1,5 +0,0 @@ -[ - "controllers/ImageryController", - "directives/MCTBackgroundImage", - "policies/ImageryViewPolicy" -] diff --git a/platform/features/layout/test/suite.json b/platform/features/layout/test/suite.json deleted file mode 100644 index 43b066d13e..0000000000 --- a/platform/features/layout/test/suite.json +++ /dev/null @@ -1,17 +0,0 @@ -[ - "FixedController", - "FixedDragHandle", - "FixedProxy", - "LayoutCompositionPolicy", - "LayoutController", - "LayoutDrag", - "elements/AccessorMutator", - "elements/BoxProxy", - "elements/ElementFactory", - "elements/ElementProxies", - "elements/ElementProxy", - "elements/LineProxy", - "elements/ResizeHandle", - "elements/TelemetryProxy", - "elements/TextProxy" -] diff --git a/platform/features/pages/test/suite.json b/platform/features/pages/test/suite.json deleted file mode 100644 index 0d0efc8302..0000000000 --- a/platform/features/pages/test/suite.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - "EmbeddedPageController" -] \ No newline at end of file diff --git a/platform/features/plot/test/suite.json b/platform/features/plot/test/suite.json deleted file mode 100644 index cec8798d77..0000000000 --- a/platform/features/plot/test/suite.json +++ /dev/null @@ -1,26 +0,0 @@ -[ - "Canvas2DChart", - "GLChart", - "MCTChart", - "PlotController", - "SubPlot", - "SubPlotFactory", - "elements/PlotAxis", - "elements/PlotLimitTracker", - "elements/PlotLine", - "elements/PlotLineBuffer", - "elements/PlotPalette", - "elements/PlotPanZoomStack", - "elements/PlotPanZoomStackGroup", - "elements/PlotPosition", - "elements/PlotPreparer", - "elements/PlotSeriesWindow", - "elements/PlotTelemetryFormatter", - "elements/PlotTickGenerator", - "elements/PlotUpdater", - "modes/PlotModeOptions", - "modes/PlotOverlayMode", - "modes/PlotStackMode", - "policies/PlotViewPolicy" -] - diff --git a/platform/features/rtevents/test/suite.json b/platform/features/rtevents/test/suite.json deleted file mode 100644 index 996a8ce906..0000000000 --- a/platform/features/rtevents/test/suite.json +++ /dev/null @@ -1,6 +0,0 @@ -[ - "DomainColumn", - "policies/RTMessagesViewPolicy", - "RangeColumn", - "RTEventListController" -] \ No newline at end of file diff --git a/platform/features/scrolling/test/suite.json b/platform/features/scrolling/test/suite.json deleted file mode 100644 index b36b9c8668..0000000000 --- a/platform/features/scrolling/test/suite.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - "DomainColumn", - "NameColumn", - "RangeColumn", - "ScrollingListController", - "ScrollingListPopulator" -] \ No newline at end of file diff --git a/platform/features/timeline/src/controllers/swimlane/TimelineProxy.js b/platform/features/timeline/src/controllers/swimlane/TimelineProxy.js index 3174659a63..7f74f59de0 100644 --- a/platform/features/timeline/src/controllers/swimlane/TimelineProxy.js +++ b/platform/features/timeline/src/controllers/swimlane/TimelineProxy.js @@ -39,7 +39,7 @@ define( function populateActionMap(domainObject) { var actionCapability = domainObject.getCapability('action'), actions = actionCapability ? - actionCapability.getActions('create') : []; + actionCapability.getActions('add') : []; actions.forEach(function (action) { actionMap[action.getMetadata().type] = action; }); diff --git a/platform/features/timeline/test/controllers/swimlane/TimelineProxySpec.js b/platform/features/timeline/test/controllers/swimlane/TimelineProxySpec.js index 0ecd073219..7d137fa6e4 100644 --- a/platform/features/timeline/test/controllers/swimlane/TimelineProxySpec.js +++ b/platform/features/timeline/test/controllers/swimlane/TimelineProxySpec.js @@ -74,7 +74,7 @@ define( expect(mockDomainObject.getCapability) .toHaveBeenCalledWith('action'); expect(mockActionCapability.getActions) - .toHaveBeenCalledWith('create'); + .toHaveBeenCalledWith('add'); }); it("invokes the action on the selection, if any", function () { diff --git a/platform/features/timeline/test/suite.json b/platform/features/timeline/test/suite.json deleted file mode 100644 index e5028ef25d..0000000000 --- a/platform/features/timeline/test/suite.json +++ /dev/null @@ -1,50 +0,0 @@ -[ - "TimelineConstants", - "TimelineFormatter", - - "capabilities/ActivityTimespan", - "capabilities/ActivityTimespanCapability", - "capabilities/ActivityUtilization", - "capabilities/CostCapability", - "capabilities/GraphCapability", - "capabilities/CumulativeGraph", - "capabilities/ResourceGraph", - "capabilities/TimelineTimespan", - "capabilities/TimelineTimespanCapability", - "capabilities/TimelineUtilization", - "capabilities/UtilizationCapability", - - "controllers/ActivityModeValuesController", - "controllers/TimelineController", - "controllers/TimelineGanttController", - "controllers/TimelineGraphController", - "controllers/TimelineTableController", - "controllers/TimelineTickController", - "controllers/TimelineZoomController", - "controllers/TimelineDateTimeController", - - "controllers/drag/TimelineDragHandler", - "controllers/drag/TimelineDragHandleFactory", - "controllers/drag/TimelineDragPopulator", - "controllers/drag/TimelineSnapHandler", - "controllers/drag/TimelineStartHandle", - "controllers/drag/TimelineMoveHandle", - "controllers/drag/TimelineEndHandle", - - "controllers/graph/TimelineGraph", - "controllers/graph/TimelineGraphPopulator", - "controllers/graph/TimelineGraphRenderer", - - "controllers/swimlane/TimelineColorAssigner", - "controllers/swimlane/TimelineProxy", - "controllers/swimlane/TimelineSwimlane", - "controllers/swimlane/TimelineSwimlaneDecorator", - "controllers/swimlane/TimelineSwimlaneDropHandler", - "controllers/swimlane/TimelineSwimlanePopulator", - - "directives/SwimlaneDragConstants", - "directives/MCTSwimlaneDrag", - "directives/MCTSwimlaneDrop", - - "services/ObjectLoader" -] diff --git a/platform/forms/test/suite.json b/platform/forms/test/suite.json deleted file mode 100644 index be4d6151db..0000000000 --- a/platform/forms/test/suite.json +++ /dev/null @@ -1,9 +0,0 @@ -[ - "MCTControl", - "MCTForm", - "controllers/ColorController", - "controllers/CompositeController", - "controllers/DateTimeController", - "controllers/DialogButtonController", - "controllers/FormController" -] \ No newline at end of file diff --git a/platform/framework/test/suite.json b/platform/framework/test/suite.json deleted file mode 100644 index eda75ec012..0000000000 --- a/platform/framework/test/suite.json +++ /dev/null @@ -1,17 +0,0 @@ -[ - "FrameworkInitializer", - "LogLevel", - "bootstrap/ApplicationBootstrapper", - "load/Bundle", - "load/BundleLoader", - "load/Extension", - "register/CustomRegistrars", - "register/ExtensionRegistrar", - "register/ExtensionSorter", - "register/PartialConstructor", - "register/ServiceCompositor", - "resolve/BundleResolver", - "resolve/ExtensionResolver", - "resolve/ImplementationLoader", - "resolve/RequireConfigurator" -] diff --git a/platform/identity/test/suite.json b/platform/identity/test/suite.json deleted file mode 100644 index 15fe7e4caa..0000000000 --- a/platform/identity/test/suite.json +++ /dev/null @@ -1,6 +0,0 @@ -[ - "IdentityAggregator", - "IdentityCreationDecorator", - "IdentityIndicator", - "IdentityProvider" -] diff --git a/platform/persistence/aggregator/test/suite.json b/platform/persistence/aggregator/test/suite.json deleted file mode 100644 index 7585e88ee9..0000000000 --- a/platform/persistence/aggregator/test/suite.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - "PersistenceAggregator" -] diff --git a/platform/persistence/cache/test/suite.json b/platform/persistence/cache/test/suite.json deleted file mode 100644 index 0e8b777ca1..0000000000 --- a/platform/persistence/cache/test/suite.json +++ /dev/null @@ -1,3 +0,0 @@ -[ - "CachingPersistenceDecorator" -] diff --git a/platform/persistence/couch/test/suite.json b/platform/persistence/couch/test/suite.json deleted file mode 100644 index f61febc916..0000000000 --- a/platform/persistence/couch/test/suite.json +++ /dev/null @@ -1,5 +0,0 @@ -[ - "CouchDocument", - "CouchIndicator", - "CouchPersistenceProvider" -] diff --git a/platform/persistence/elastic/test/suite.json b/platform/persistence/elastic/test/suite.json deleted file mode 100644 index 85b407eb73..0000000000 --- a/platform/persistence/elastic/test/suite.json +++ /dev/null @@ -1,5 +0,0 @@ -[ - "ElasticIndicator", - "ElasticPersistenceProvider", - "ElasticSearchProvider" -] diff --git a/platform/persistence/local/test/suite.json b/platform/persistence/local/test/suite.json deleted file mode 100644 index 057958d7a4..0000000000 --- a/platform/persistence/local/test/suite.json +++ /dev/null @@ -1,4 +0,0 @@ -[ - "LocalStorageIndicator", - "LocalStoragePersistenceProvider" -] diff --git a/platform/persistence/queue/test/suite.json b/platform/persistence/queue/test/suite.json deleted file mode 100644 index 3c32be4155..0000000000 --- a/platform/persistence/queue/test/suite.json +++ /dev/null @@ -1,11 +0,0 @@ -[ - "PersistenceFailureConstants", - "PersistenceFailureController", - "PersistenceFailureDialog", - "PersistenceFailureHandler", - "PersistenceQueue", - "PersistenceQueueHandler", - "PersistenceQueueImpl", - "QueuingPersistenceCapability", - "QueuingPersistenceCapabilityDecorator" -] \ No newline at end of file diff --git a/platform/policy/test/suite.json b/platform/policy/test/suite.json deleted file mode 100644 index c695797527..0000000000 --- a/platform/policy/test/suite.json +++ /dev/null @@ -1,5 +0,0 @@ -[ - "PolicyActionDecorator", - "PolicyViewDecorator", - "PolicyProvider" -] \ No newline at end of file diff --git a/platform/representation/src/TemplateLinker.js b/platform/representation/src/TemplateLinker.js index ba948c477c..27bf317afb 100644 --- a/platform/representation/src/TemplateLinker.js +++ b/platform/representation/src/TemplateLinker.js @@ -84,6 +84,8 @@ define( * templates * @param element the jqLite-wrapped element into which templates * should be inserted + * @param {TemplateDefinition} extensionDefinition the definition + * of the template/representation/view to display initially * @returns {Function} a function which can be called with a template's * extension definition to switch templates, or `undefined` * to remove. diff --git a/platform/representation/test/suite.json b/platform/representation/test/suite.json deleted file mode 100644 index 54f7907da3..0000000000 --- a/platform/representation/test/suite.json +++ /dev/null @@ -1,13 +0,0 @@ -[ - "actions/ContextMenuAction", - "gestures/ContextMenuGesture", - "gestures/DragGesture", - "gestures/DropGesture", - "gestures/GestureProvider", - "gestures/GestureRepresenter", - "services/DndService", - "MCTInclude", - "MCTRepresentation", - "TemplateLinker", - "TemplatePrefetcher" -] diff --git a/platform/search/test/suite.json b/platform/search/test/suite.json deleted file mode 100644 index 803949fb6f..0000000000 --- a/platform/search/test/suite.json +++ /dev/null @@ -1,8 +0,0 @@ -[ - "controllers/SearchController", - "controllers/SearchMenuController", - "controllers/ClickAwayController", - "services/SearchAggregator", - "services/GenericSearchProvider", - "services/GenericSearchWorker" -] diff --git a/platform/status/test/suite.json b/platform/status/test/suite.json deleted file mode 100644 index 8b0cf2fd26..0000000000 --- a/platform/status/test/suite.json +++ /dev/null @@ -1,5 +0,0 @@ -[ - "StatusCapability", - "StatusRepresenter", - "StatusService" -] diff --git a/platform/telemetry/test/suite.json b/platform/telemetry/test/suite.json deleted file mode 100644 index 8881466572..0000000000 --- a/platform/telemetry/test/suite.json +++ /dev/null @@ -1,13 +0,0 @@ -[ - "TelemetryAggregator", - "TelemetryCapability", - "TelemetryController", - "TelemetryDelegator", - "TelemetryFormatter", - "TelemetryHandle", - "TelemetryHandler", - "TelemetryQueue", - "TelemetrySubscriber", - "TelemetrySubscription", - "TelemetryTable" -] \ No newline at end of file