diff --git a/.jscsrc b/.jscsrc index ac17b5dc9c..7229391def 100644 --- a/.jscsrc +++ b/.jscsrc @@ -1,3 +1,5 @@ { - "preset": "crockford" + "preset": "crockford", + "requireMultipleVarDecl": false, + "requireVarDeclFirst": false } diff --git a/.jshintrc b/.jshintrc index df3f02a1ff..dc2b733533 100644 --- a/.jshintrc +++ b/.jshintrc @@ -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" diff --git a/build-docs.sh b/build-docs.sh index c318a0dbda..87ada35524 100755 --- a/build-docs.sh +++ b/build-docs.sh @@ -22,17 +22,19 @@ #* at runtime from the About dialog for additional information. #***************************************************************************** -# Script to build and deploy docs to github pages. +# Script to build and deploy docs. OUTPUT_DIRECTORY="target/docs" -REPOSITORY_URL="git@github.com:nasa/openmctweb.git" +# Docs, once built, are pushed to the private website repo +REPOSITORY_URL="git@github.com:nasa/openmct-website.git" +WEBSITE_DIRECTORY="website" -BUILD_SHA=`git rev-parse head` +BUILD_SHA=`git rev-parse HEAD` # A remote will be created for the git repository we are pushing to. # Don't worry, as this entire directory will get trashed inbetween builds. REMOTE_NAME="documentation" -WEBSITE_BRANCH="gh-pages" +WEBSITE_BRANCH="master" # Clean output directory, JSDOC will recreate if [ -d $OUTPUT_DIRECTORY ]; then @@ -40,23 +42,21 @@ if [ -d $OUTPUT_DIRECTORY ]; then fi npm run docs -cd $OUTPUT_DIRECTORY || exit 1 -echo "git init" -git init +echo "git clone $REPOSITORY_URL website" +git clone $REPOSITORY_URL website || exit 1 +echo "cp -r $OUTPUT_DIRECTORY $WEBSITE_DIRECTORY/docs" +cp -r $OUTPUT_DIRECTORY $WEBSITE_DIRECTORY/docs +echo "cd $WEBSITE_DIRECTORY" +cd $WEBSITE_DIRECTORY || exit 1 # Configure github for CircleCI user. git config user.email "buildbot@circleci.com" git config user.name "BuildBot" -echo "git remote add $REMOTE_NAME $REPOSITORY_URL" -git remote add $REMOTE_NAME $REPOSITORY_URL echo "git add ." git add . -echo "git commit -m \"Generate docs from build $BUILD_SHA\"" -git commit -m "Generate docs from build $BUILD_SHA" - -echo "git push $REMOTE_NAME HEAD:$WEBSITE_BRANCH -f" -git push $REMOTE_NAME HEAD:$WEBSITE_BRANCH -f - -echo "Documentation pushed to gh-pages branch." +echo "git commit -m \"Docs updated from build $BUILD_SHA\"" +git commit -m "Docs updated from build $BUILD_SHA" +# Push to the website repo +git push diff --git a/circle.yml b/circle.yml index 472fdf7c17..b075c1f5fe 100644 --- a/circle.yml +++ b/circle.yml @@ -1,8 +1,11 @@ deployment: production: branch: master - heroku: - appname: openmctweb-demo + commands: + - npm install canvas nomnoml + - ./build-docs.sh + - git fetch --unshallow + - git push git@heroku.com:openmctweb-demo.git $CIRCLE_SHA1:refs/heads/master openmct-demo: branch: live_demo heroku: @@ -14,3 +17,9 @@ deployment: test: post: - gulp lint + - gulp checkstyle + +general: + branches: + ignore: + - gh-pages diff --git a/docs/src/tutorials/index.md b/docs/src/tutorials/index.md index 2ebc32b957..84c571bec8 100644 --- a/docs/src/tutorials/index.md +++ b/docs/src/tutorials/index.md @@ -62,74 +62,19 @@ At this point, it will also be useful to branch off of Open MCT v0.6.2 git branch open-v0.6.2 git checkout -### Configuring Persistence -In its default configuration, Open MCT will try to use ElasticSearch -(expected to be deployed at /elastic on the same HTTP server running Open MCT -Web) to persist user-created domain objects. We don't need that for these -tutorials, so we will replace the ElasticSearch plugin with the example -persistence plugin. This doesn't actually persist, so anything we create within -Open MCT will be lost on reload, but that's fine for purposes of these -tutorials. +### Building Open MCT +Once downloaded, Open MCT can be built with the following command: -To change this configuration, edit bundles.json (at the top level of the Open -MCT Web repository) and replace platform/persistence/elastic with -example/persistence. + npm install -#### Bundle Before -```diff -[ - "platform/framework", - "platform/core", - "platform/representation", - "platform/commonUI/about", - "platform/commonUI/browse", - "platform/commonUI/edit", - "platform/commonUI/dialog", - "platform/commonUI/general", - "platform/containment", - "platform/telemetry", - "platform/features/layout", - "platform/features/pages", - "platform/features/plot", - "platform/features/scrolling", - "platform/forms", - "platform/persistence/queue", -- "platform/persistence/elastic", - "platform/policy", +This will install various dependencies, build CSS from Sass files, run tests, +and lint the source code. - "example/generator" -] -``` -__bundles.json__ +It's not necessary to do this after every code change, unless you are making +changes to stylesheets, or you are running the minified version of the app +(under `dist`). -#### Bundle After -```diff -[ - "platform/framework", - "platform/core", - "platform/representation", - "platform/commonUI/about", - "platform/commonUI/browse", - "platform/commonUI/edit", - "platform/commonUI/dialog", - "platform/commonUI/general", - "platform/containment", - "platform/telemetry", - "platform/features/layout", - "platform/features/pages", - "platform/features/plot", - "platform/features/scrolling", - "platform/forms", - "platform/persistence/queue", - "platform/policy", - -+ "example/persistence", - "example/generator" -] -``` -__bundles.json__ - ### Run a Web Server The next step is to run a web server so that you can view the Open MCT @@ -140,7 +85,7 @@ should not be used in a production environment To run the tutorial web server - node app.js + npm start ### Viewing in Browser @@ -176,7 +121,7 @@ they need to do. This is modelled after the to-do lists at http://todomvc.com/. The first step to adding a new feature to Open MCT is to create the plugin which will expose that feature. A plugin in Open MCT is represented by what is called a bundle; a bundle, in turn, is a directory which contains a file -bundle.json, which in turn describes where other relevant sources & resources +bundle.js, which in turn describes where other relevant sources & resources will be. The syntax of this file is described in more detail in the Open MCT Developer Guide. @@ -185,74 +130,203 @@ to this plugin as tutorials/todo as well.) We will start with an "empty bundle", one which exposes no extensions - which looks like: ```diff -{ - "name": "To-do Plugin", - "description": "Allows creating and editing to-do lists.", - "extensions": { - } -} +define([ + 'legacyRegistry' +], function ( + legacyRegistry +) { + legacyRegistry.register("tutorials/todo", { + "name": "To-do Plugin", + "description": "Allows creating and editing to-do lists.", + "extensions": + { + } + }); +}); + ``` -__tutorials/todo/bundle.json__ +__tutorials/todo/bundle.js__ -We will also include this in our list of active bundles. +With the new bundle defined, it is now necessary to register the bundle with +the application. The details of how a new bundle is defined are in the +process of changing. The Open MCT codebase has started to shift from a +declarative registration style toward an imperative registration style. +The tutorials will be updated with the new bundle registration mechanism once it +has been finalized. #### Before ```diff -[ - "platform/framework", - "platform/core", - "platform/representation", - "platform/commonUI/about", - "platform/commonUI/browse", - "platform/commonUI/edit", - "platform/commonUI/dialog", - "platform/commonUI/general", - "platform/containment", - "platform/telemetry", - "platform/features/layout", - "platform/features/pages", - "platform/features/plot", - "platform/features/scrolling", - "platform/forms", - "platform/persistence/queue", - "platform/policy", +requirejs.config({ + "paths": { + "legacyRegistry": "src/legacyRegistry", + "angular": "bower_components/angular/angular.min", + "angular-route": "bower_components/angular-route/angular-route.min", + "csv": "bower_components/comma-separated-values/csv.min", + "es6-promise": "bower_components/es6-promise/promise.min", + "moment": "bower_components/moment/moment", + "moment-duration-format": "bower_components/moment-duration-format/lib/moment-duration-format", + "saveAs": "bower_components/FileSaver.js/FileSaver.min", + "screenfull": "bower_components/screenfull/dist/screenfull.min", + "text": "bower_components/text/text", + "uuid": "bower_components/node-uuid/uuid", + "zepto": "bower_components/zepto/zepto.min" + }, + "shim": { + "angular": { + "exports": "angular" + }, + "angular-route": { + "deps": [ "angular" ] + }, + "moment-duration-format": { + "deps": [ "moment" ] + }, + "screenfull": { + "exports": "screenfull" + }, + "zepto": { + "exports": "Zepto" + } + } +}); - "example/persistence", - "example/generator" -] +define([ + './platform/framework/src/Main', + 'legacyRegistry', + + './platform/framework/bundle', + './platform/core/bundle', + './platform/representation/bundle', + './platform/commonUI/about/bundle', + './platform/commonUI/browse/bundle', + './platform/commonUI/edit/bundle', + './platform/commonUI/dialog/bundle', + './platform/commonUI/formats/bundle', + './platform/commonUI/general/bundle', + './platform/commonUI/inspect/bundle', + './platform/commonUI/mobile/bundle', + './platform/commonUI/themes/espresso/bundle', + './platform/commonUI/notification/bundle', + './platform/containment/bundle', + './platform/execution/bundle', + './platform/exporters/bundle', + './platform/telemetry/bundle', + './platform/features/clock/bundle', + './platform/features/imagery/bundle', + './platform/features/layout/bundle', + './platform/features/pages/bundle', + './platform/features/plot/bundle', + './platform/features/timeline/bundle', + './platform/features/table/bundle', + './platform/forms/bundle', + './platform/identity/bundle', + './platform/persistence/aggregator/bundle', + './platform/persistence/local/bundle', + './platform/persistence/queue/bundle', + './platform/policy/bundle', + './platform/entanglement/bundle', + './platform/search/bundle', + './platform/status/bundle', + './platform/commonUI/regions/bundle' +], function (Main, legacyRegistry) { + return { + legacyRegistry: legacyRegistry, + run: function () { + return new Main().run(legacyRegistry); + } + }; +}); ``` -__bundles.json__ +__main.js__ #### After ```diff -[ - "platform/framework", - "platform/core", - "platform/representation", - "platform/commonUI/about", - "platform/commonUI/browse", - "platform/commonUI/edit", - "platform/commonUI/dialog", - "platform/commonUI/general", - "platform/containment", - "platform/telemetry", - "platform/features/layout", - "platform/features/pages", - "platform/features/plot", - "platform/features/scrolling", - "platform/forms", - "platform/persistence/queue", - "platform/policy", +requirejs.config({ + "paths": { + "legacyRegistry": "src/legacyRegistry", + "angular": "bower_components/angular/angular.min", + "angular-route": "bower_components/angular-route/angular-route.min", + "csv": "bower_components/comma-separated-values/csv.min", + "es6-promise": "bower_components/es6-promise/promise.min", + "moment": "bower_components/moment/moment", + "moment-duration-format": "bower_components/moment-duration-format/lib/moment-duration-format", + "saveAs": "bower_components/FileSaver.js/FileSaver.min", + "screenfull": "bower_components/screenfull/dist/screenfull.min", + "text": "bower_components/text/text", + "uuid": "bower_components/node-uuid/uuid", + "zepto": "bower_components/zepto/zepto.min" + }, + "shim": { + "angular": { + "exports": "angular" + }, + "angular-route": { + "deps": [ "angular" ] + }, + "moment-duration-format": { + "deps": [ "moment" ] + }, + "screenfull": { + "exports": "screenfull" + }, + "zepto": { + "exports": "Zepto" + } + } +}); - "example/persistence", - "example/generator", +define([ + './platform/framework/src/Main', + 'legacyRegistry', -+ "tutorials/todo" -] + './platform/framework/bundle', + './platform/core/bundle', + './platform/representation/bundle', + './platform/commonUI/about/bundle', + './platform/commonUI/browse/bundle', + './platform/commonUI/edit/bundle', + './platform/commonUI/dialog/bundle', + './platform/commonUI/formats/bundle', + './platform/commonUI/general/bundle', + './platform/commonUI/inspect/bundle', + './platform/commonUI/mobile/bundle', + './platform/commonUI/themes/espresso/bundle', + './platform/commonUI/notification/bundle', + './platform/containment/bundle', + './platform/execution/bundle', + './platform/exporters/bundle', + './platform/telemetry/bundle', + './platform/features/clock/bundle', + './platform/features/imagery/bundle', + './platform/features/layout/bundle', + './platform/features/pages/bundle', + './platform/features/plot/bundle', + './platform/features/timeline/bundle', + './platform/features/table/bundle', + './platform/forms/bundle', + './platform/identity/bundle', + './platform/persistence/aggregator/bundle', + './platform/persistence/local/bundle', + './platform/persistence/queue/bundle', + './platform/policy/bundle', + './platform/entanglement/bundle', + './platform/search/bundle', + './platform/status/bundle', + './platform/commonUI/regions/bundle', + ++ './tutorials/todo/bundle' +], function (Main, legacyRegistry) { + return { + legacyRegistry: legacyRegistry, + run: function () { + return new Main().run(legacyRegistry); + } + }; +}); ``` -__bundles.json__ +__main.js__ At this point, we can reload Open MCT. We haven't introduced any new functionality, so we don't see anything different, but if we run with logging @@ -275,23 +349,30 @@ In the case of our to-do list feature, the to-do list itself is the thing we'll want users to be able to create and edit. So, we will add that as a new type in our bundle definition: ```diff -{ - "name": "To-do Plugin", - "description": "Allows creating and editing to-do lists.", - "extensions": { -+ "types": [ +define([ + 'legacyRegistry' +], function ( + legacyRegistry +) { + legacyRegistry.register("tutorials/todo", { + "name": "To-do Plugin", + "description": "Allows creating and editing to-do lists.", + "extensions": + { ++ "types": [ + { + "key": "example.todo", + "name": "To-Do List", -+ "glyph": "j", ++ "glyph": "2", + "description": "A list of things that need to be done.", + "features": ["creation"] + } - ] - } -} ++ ]} + }); +}); + ``` -__tutorials/todo/bundle.json__ +__tutorials/todo/bundle.js__ What have we done here? We've stated that this bundle includes extensions of the category _types_, which is used to describe domain object types. Then, we've @@ -366,7 +447,12 @@ To expose this view in Open MCT, we need to declare it in our bundle definition: ```diff -{ +define([ + 'legacyRegistry' +], function ( + legacyRegistry +) { + legacyRegistry.register("tutorials/todo", { "name": "To-do Plugin", "description": "Allows creating and editing to-do lists.", "extensions": { @@ -374,7 +460,7 @@ definition: { "key": "example.todo", "name": "To-Do List", - "glyph": "j", + "glyph": "2", "description": "A list of things that need to be done.", "features": ["creation"] } @@ -383,15 +469,17 @@ definition: + { + "key": "example.todo", + "type": "example.todo", -+ "glyph": "j", ++ "glyph": "2", + "name": "List", -+ "templateUrl": "templates/todo.html" ++ "templateUrl": "templates/todo.html", ++ "editable": true + } + ] } -} + }); +}); ``` -__tutorials/todo/bundle.json__ +__tutorials/todo/bundle.js__ Here, we've added another extension, this time belonging to category `views`. It contains the following properties: @@ -416,7 +504,12 @@ will specify an initial state for To-do List domain object models in the definition of that type. ```diff -{ +define([ + 'legacyRegistry' +], function ( + legacyRegistry +) { + legacyRegistry.register("tutorials/todo", { "name": "To-do Plugin", "description": "Allows creating and editing to-do lists.", "extensions": { @@ -424,7 +517,7 @@ definition of that type. { "key": "example.todo", "name": "To-Do List", - "glyph": "j", + "glyph": "2", "description": "A list of things that need to be done.", "features": ["creation"], + "model": { @@ -439,15 +532,17 @@ definition of that type. { "key": "example.todo", "type": "example.todo", - "glyph": "j", + "glyph": "2", "name": "List", - "templateUrl": "templates/todo.html" + "templateUrl": "templates/todo.html", + "editable": true } ] } -} + }); +}); ``` -__tutorials/todo/bundle.json__ +__tutorials/todo/bundle.js__ Now, when To-do List objects are created in Open MCT, they will initially have the state described by that model property. @@ -580,7 +675,14 @@ If we were to try to run at this point, we'd run into problems because the it in our bundle definition, as an extension of category `controllers`: ```diff -{ +define([ + 'legacyRegistry', + './src/controllers/TodoController' +], function ( + legacyRegistry, + TodoController +) { + legacyRegistry.register("tutorials/todo", { "name": "To-do Plugin", "description": "Allows creating and editing to-do lists.", "extensions": { @@ -588,7 +690,7 @@ it in our bundle definition, as an extension of category `controllers`: { "key": "example.todo", "name": "To-Do List", - "glyph": "j", + "glyph": "2", "description": "A list of things that need to be done.", "features": ["creation"], "model": { @@ -603,22 +705,24 @@ it in our bundle definition, as an extension of category `controllers`: { "key": "example.todo", "type": "example.todo", - "glyph": "j", + "glyph": "2", "name": "List", - "templateUrl": "templates/todo.html" + "templateUrl": "templates/todo.html", + "editable": true } ], + "controllers": [ + { + "key": "TodoController", -+ "implementation": "controllers/TodoController.js", ++ "implementation": TodoController, + "depends": [ "$scope" ] + } + ] } -} + }); +}); ``` -__tutorials/todo/bundle.json__ +__tutorials/todo/bundle.js__ In this extension definition we have: @@ -665,7 +769,14 @@ view. The contents of this tool bar are defined declaratively in a view's extension definition. ```diff -{ +define([ + 'legacyRegistry', + './src/controllers/TodoController' +], function ( + legacyRegistry, + TodoController +) { + legacyRegistry.register("tutorials/todo", { "name": "To-do Plugin", "description": "Allows creating and editing to-do lists.", "extensions": { @@ -673,7 +784,7 @@ extension definition. { "key": "example.todo", "name": "To-Do List", - "glyph": "j", + "glyph": "2", "description": "A list of things that need to be done.", "features": ["creation"], "model": { @@ -688,9 +799,10 @@ extension definition. { "key": "example.todo", "type": "example.todo", - "glyph": "j", + "glyph": "2", "name": "List", "templateUrl": "templates/todo.html", + "editable": true, + "toolbar": { + "sections": [ + { @@ -719,14 +831,15 @@ extension definition. "controllers": [ { "key": "TodoController", - "implementation": "controllers/TodoController.js", + "implementation": TodoController, "depends": [ "$scope" ] } ] } -} + }); +}); ``` -__tutorials/todo/bundle.json__ +__tutorials/todo/bundle.js__ What we've stated here is that the To-Do List's view will have a toolbar which contains two sections (which will be visually separated by a divider), each of @@ -884,7 +997,14 @@ __tutorials/todo/res/templates/todo.html__ Finally, the `TodoController` uses the `dialogService` now, so we need to declare that dependency in its extension definition: ```diff -{ +define([ + 'legacyRegistry', + './src/controllers/TodoController' +], function ( + legacyRegistry, + TodoController +) { + legacyRegistry.register("tutorials/todo", { "name": "To-do Plugin", "description": "Allows creating and editing to-do lists.", "extensions": { @@ -892,7 +1012,7 @@ declare that dependency in its extension definition: { "key": "example.todo", "name": "To-Do List", - "glyph": "j", + "glyph": "2", "description": "A list of things that need to be done.", "features": ["creation"], "model": { @@ -907,9 +1027,10 @@ declare that dependency in its extension definition: { "key": "example.todo", "type": "example.todo", - "glyph": "j", + "glyph": "2", "name": "List", "templateUrl": "templates/todo.html", + "editable": true, "toolbar": { "sections": [ { @@ -938,14 +1059,15 @@ declare that dependency in its extension definition: "controllers": [ { "key": "TodoController", - "implementation": "controllers/TodoController.js", + "implementation": TodoController, + "depends": [ "$scope", "dialogService" ] } ] } -} + }); +}); ``` -__tutorials/todo/bundle.json__ +__tutorials/todo/bundle.js__ If we now reload Open MCT, we'll be able to see the new functionality we've added. If we Create a new To-Do List, navigate to it, and click the button with @@ -1140,7 +1262,14 @@ To include this CSS file in our running instance of Open MCT, we need to declare it in our bundle definition, this time as an extension of category `stylesheets`: ```diff -{ +define([ + 'legacyRegistry', + './src/controllers/TodoController' +], function ( + legacyRegistry, + TodoController +) { + legacyRegistry.register("tutorials/todo", { "name": "To-do Plugin", "description": "Allows creating and editing to-do lists.", "extensions": { @@ -1148,7 +1277,7 @@ declare it in our bundle definition, this time as an extension of category { "key": "example.todo", "name": "To-Do List", - "glyph": "j", + "glyph": "2", "description": "A list of things that need to be done.", "features": ["creation"], "model": { @@ -1160,9 +1289,10 @@ declare it in our bundle definition, this time as an extension of category { "key": "example.todo", "type": "example.todo", - "glyph": "j", + "glyph": "2", "name": "List", "templateUrl": "templates/todo.html", + "editable": true, "toolbar": { "sections": [ { @@ -1191,7 +1321,7 @@ declare it in our bundle definition, this time as an extension of category "controllers": [ { "key": "TodoController", - "implementation": "controllers/TodoController.js", + "implementation": TodoController, "depends": [ "$scope", "dialogService" ] } ], @@ -1201,14 +1331,16 @@ declare it in our bundle definition, this time as an extension of category + } + ] } -} + }); +}); ``` -__tutorials/todo/bundle.json__ +__tutorials/todo/bundle.js__ Note that we've also removed our placeholder tasks from the `model` of the To-Do List's type above; now To-Do Lists will start off empty. Finally, let's utilize these changes from our view's template: + ```diff +
+
@@ -1270,7 +1402,12 @@ well. We'll be creating this plugin in `tutorials/bargraph`, so our initial bundle definition looks like: ```diff -{ +define([ + 'legacyRegistry' +], function ( + legacyRegistry +) { + legacyRegistry.register("tutorials/bargraph", { "name": "Bar Graph", "description": "Provides the Bar Graph view of telemetry elements.", "extensions": { @@ -1290,10 +1427,11 @@ bundle definition looks like: } ] } -} + }); +}); ``` -__tutorials/bargraph/bundle.json__ +__tutorials/bargraph/bundle.js__ The view definition should look familiar after the To-Do List tutorial, with some additions: @@ -1435,7 +1573,7 @@ The corresponding CSS file which styles and positions these elements: ``` __tutorials/bargraph/res/css/bargraph.css__ -This is already enough that, if we add `"tutorials/bargraph"` to `bundles.json`, +This is already enough that, if we add `"tutorials/bargraph"` to `main.js`, we should be able to run Open MCT and see our Bar Graph as an available view for domain objects which provide telemetry (such as the example _Sine Wave Generator_) as well as for _Telemetry Panel_ objects: @@ -1510,7 +1648,7 @@ telemetry objects in view, as well as the width for each bar. We will also utilize this from our template: ```diff -
++
+
+
0 && newObject.hasCapability('composition')) { - this.navigationService.setNavigation(newObject); - return newObject.getCapability("action").perform("edit"); - } else { + editAction = newObject.getCapability("action").getActions("edit")[0]; + //If an edit action is available, perform it + if (editAction) { + return editAction.perform(); + } else if (editorCapability) { + //otherwise, use the save action editorCapability.edit(); - return newObject.useCapability("action").perform("save").then(function () { - return editorCapability.save(); - }, function () { - return editorCapability.cancel(); - }); + return newObject.getCapability("action").perform("save").then(onSave, onCancel); } }; @@ -118,7 +104,7 @@ define( * @returns {CreateActionMetadata} metadata about this action */ CreateAction.prototype.getMetadata = function () { - return this.metadata; + return this.metadata; }; return CreateAction; diff --git a/platform/commonUI/browse/src/creation/CreateActionProvider.js b/platform/commonUI/edit/src/creation/CreateActionProvider.js similarity index 92% rename from platform/commonUI/browse/src/creation/CreateActionProvider.js rename to platform/commonUI/edit/src/creation/CreateActionProvider.js index 82f57343da..5039149104 100644 --- a/platform/commonUI/browse/src/creation/CreateActionProvider.js +++ b/platform/commonUI/edit/src/creation/CreateActionProvider.js @@ -44,10 +44,8 @@ define( * introduced in this bundle), responsible for handling actual * object creation. */ - function CreateActionProvider($q, typeService, navigationService, policyService) { + function CreateActionProvider(typeService, policyService) { this.typeService = typeService; - this.navigationService = navigationService; - this.$q = $q; this.policyService = policyService; } @@ -72,9 +70,7 @@ define( return new CreateAction( type, destination, - context, - self.$q, - self.navigationService + context ); }); }; diff --git a/platform/commonUI/browse/src/creation/CreateMenuController.js b/platform/commonUI/edit/src/creation/CreateMenuController.js similarity index 100% rename from platform/commonUI/browse/src/creation/CreateMenuController.js rename to platform/commonUI/edit/src/creation/CreateMenuController.js diff --git a/platform/commonUI/browse/src/creation/CreateWizard.js b/platform/commonUI/edit/src/creation/CreateWizard.js similarity index 99% rename from platform/commonUI/browse/src/creation/CreateWizard.js rename to platform/commonUI/edit/src/creation/CreateWizard.js index 660a577905..1ec234ee08 100644 --- a/platform/commonUI/browse/src/creation/CreateWizard.js +++ b/platform/commonUI/edit/src/creation/CreateWizard.js @@ -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; diff --git a/platform/commonUI/browse/src/creation/CreationPolicy.js b/platform/commonUI/edit/src/creation/CreationPolicy.js similarity index 99% rename from platform/commonUI/browse/src/creation/CreationPolicy.js rename to platform/commonUI/edit/src/creation/CreationPolicy.js index 480d0adec4..4880f884b9 100644 --- a/platform/commonUI/browse/src/creation/CreationPolicy.js +++ b/platform/commonUI/edit/src/creation/CreationPolicy.js @@ -40,4 +40,4 @@ define( return CreationPolicy; } -); \ No newline at end of file +); diff --git a/platform/commonUI/browse/src/creation/CreationService.js b/platform/commonUI/edit/src/creation/CreationService.js similarity index 100% rename from platform/commonUI/browse/src/creation/CreationService.js rename to platform/commonUI/edit/src/creation/CreationService.js diff --git a/platform/commonUI/browse/src/creation/LocatorController.js b/platform/commonUI/edit/src/creation/LocatorController.js similarity index 97% rename from platform/commonUI/browse/src/creation/LocatorController.js rename to platform/commonUI/edit/src/creation/LocatorController.js index 43a1a4ed10..b8c3f6a2dc 100644 --- a/platform/commonUI/browse/src/creation/LocatorController.js +++ b/platform/commonUI/edit/src/creation/LocatorController.js @@ -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); diff --git a/platform/commonUI/edit/src/policies/EditActionPolicy.js b/platform/commonUI/edit/src/policies/EditActionPolicy.js index f266d580eb..cc40c32d9f 100644 --- a/platform/commonUI/edit/src/policies/EditActionPolicy.js +++ b/platform/commonUI/edit/src/policies/EditActionPolicy.js @@ -45,7 +45,7 @@ define( count = 0, type, views; - if (!domainObject){ + if (!domainObject) { return count; } @@ -56,7 +56,10 @@ define( // A view is editable unless explicitly flagged as not (views || []).forEach(function (view) { if (view.editable === true || - (view.key === 'plot' && type.getKey() === 'telemetry.panel')) { + (view.key === 'plot' && type.getKey() === 'telemetry.panel') || + (view.key === 'table' && type.getKey() === 'table') || + (view.key === 'rt-table' && type.getKey() === 'rttable') + ) { count++; } }); @@ -81,17 +84,14 @@ define( var key = action.getMetadata().key, category = (context || {}).category; - // Only worry about actions in the view-control category - if (category === 'view-control') { - // Restrict 'edit' to cases where there are editable - // views (similarly, restrict 'properties' to when - // the converse is true), and where the domain object is not - // already being edited. - if (key === 'edit') { - return this.countEditableViews(context) > 0 && !isEditing(context); - } else if (key === 'properties') { - return this.countEditableViews(context) < 1 && !isEditing(context); - } + // Restrict 'edit' to cases where there are editable + // views (similarly, restrict 'properties' to when + // the converse is true), and where the domain object is not + // already being edited. + if (key === 'edit') { + return this.countEditableViews(context) > 0 && !isEditing(context); + } else if (key === 'properties' && category === 'view-control') { + return this.countEditableViews(context) < 1 && !isEditing(context); } // Like all policies, allow by default. diff --git a/platform/commonUI/edit/src/policies/EditContextualActionPolicy.js b/platform/commonUI/edit/src/policies/EditContextualActionPolicy.js index af30b5933e..53fd7f6395 100644 --- a/platform/commonUI/edit/src/policies/EditContextualActionPolicy.js +++ b/platform/commonUI/edit/src/policies/EditContextualActionPolicy.js @@ -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 diff --git a/platform/commonUI/edit/src/policies/EditNavigationPolicy.js b/platform/commonUI/edit/src/policies/EditNavigationPolicy.js index 83563b5ced..b4b9855d4b 100644 --- a/platform/commonUI/edit/src/policies/EditNavigationPolicy.js +++ b/platform/commonUI/edit/src/policies/EditNavigationPolicy.js @@ -38,7 +38,7 @@ define( /** * @private */ - EditNavigationPolicy.prototype.isDirty = function(domainObject) { + EditNavigationPolicy.prototype.isDirty = function (domainObject) { var navigatedObject = domainObject, editorCapability = navigatedObject && navigatedObject.getCapability("editor"); diff --git a/platform/commonUI/edit/src/representers/EditRepresenter.js b/platform/commonUI/edit/src/representers/EditRepresenter.js index e853669eff..ffe7f24d11 100644 --- a/platform/commonUI/edit/src/representers/EditRepresenter.js +++ b/platform/commonUI/edit/src/representers/EditRepresenter.js @@ -91,14 +91,8 @@ define( } } - function setEditable(editableDomainObject) { - self.domainObject = editableDomainObject; - scope.model = editableDomainObject.getModel(); - } - // Place the "commit" method in the scope scope.commit = commit; - scope.setEditable = setEditable; // Clean up when the scope is destroyed scope.$on("$destroy", function () { @@ -119,7 +113,7 @@ define( // Ensure existing watches are released this.destroy(); - function setEditing(){ + function setEditing() { scope.viewObjectTemplate = 'edit-object'; } @@ -128,15 +122,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(); } }; diff --git a/platform/commonUI/edit/src/representers/EditToolbar.js b/platform/commonUI/edit/src/representers/EditToolbar.js index aabea1cf4a..5184d73086 100644 --- a/platform/commonUI/edit/src/representers/EditToolbar.js +++ b/platform/commonUI/edit/src/representers/EditToolbar.js @@ -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; } } } diff --git a/platform/commonUI/edit/src/representers/EditToolbarRepresenter.js b/platform/commonUI/edit/src/representers/EditToolbarRepresenter.js index 0e30920575..a4146f5965 100644 --- a/platform/commonUI/edit/src/representers/EditToolbarRepresenter.js +++ b/platform/commonUI/edit/src/representers/EditToolbarRepresenter.js @@ -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(); } diff --git a/platform/commonUI/edit/src/services/TransactionService.js b/platform/commonUI/edit/src/services/TransactionService.js index 8d57e1e809..8d6c465959 100644 --- a/platform/commonUI/edit/src/services/TransactionService.js +++ b/platform/commonUI/edit/src/services/TransactionService.js @@ -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; -}); + }); diff --git a/platform/commonUI/edit/test/actions/CancelActionSpec.js b/platform/commonUI/edit/test/actions/CancelActionSpec.js index 2131bbf999..411fdb1659 100644 --- a/platform/commonUI/edit/test/actions/CancelActionSpec.js +++ b/platform/commonUI/edit/test/actions/CancelActionSpec.js @@ -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( }); }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/edit/test/actions/EditActionSpec.js b/platform/commonUI/edit/test/actions/EditActionSpec.js index f645e1cd08..fe6fcb1eae 100644 --- a/platform/commonUI/edit/test/actions/EditActionSpec.js +++ b/platform/commonUI/edit/test/actions/EditActionSpec.js @@ -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( }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/edit/test/actions/LinkActionSpec.js b/platform/commonUI/edit/test/actions/EditAndComposeActionSpec.js similarity index 70% rename from platform/commonUI/edit/test/actions/LinkActionSpec.js rename to platform/commonUI/edit/test/actions/EditAndComposeActionSpec.js index 144dd4e395..fa1d21b1e8 100644 --- a/platform/commonUI/edit/test/actions/LinkActionSpec.js +++ b/platform/commonUI/edit/test/actions/EditAndComposeActionSpec.js @@ -21,8 +21,8 @@ *****************************************************************************/ define( - ["../../src/actions/LinkAction"], - function (LinkAction) { + ["../../src/actions/EditAndComposeAction"], + function (EditAndComposeAction) { describe("The Link action", function () { var mockQ, @@ -31,6 +31,8 @@ define( mockContext, mockComposition, mockPersistence, + mockActionCapability, + mockEditAction, mockType, actionContext, model, @@ -50,7 +52,7 @@ define( mockDomainObject = jasmine.createSpyObj( "domainObject", - [ "getId", "getCapability" ] + ["getId", "getCapability"] ); mockQ = { when: mockPromise }; mockParent = { @@ -64,25 +66,30 @@ define( return capabilities[k].invoke(v); } }; - mockContext = jasmine.createSpyObj("context", [ "getParent" ]); - mockComposition = jasmine.createSpyObj("composition", [ "invoke", "add" ]); - mockPersistence = jasmine.createSpyObj("persistence", [ "persist" ]); - mockType = jasmine.createSpyObj("type", [ "hasFeature" ]); + mockContext = jasmine.createSpyObj("context", ["getParent"]); + mockComposition = jasmine.createSpyObj("composition", ["invoke", "add"]); + mockPersistence = jasmine.createSpyObj("persistence", ["persist"]); + mockType = jasmine.createSpyObj("type", ["hasFeature", "getKey"]); + mockActionCapability = jasmine.createSpyObj("actionCapability", ["getActions"]); + mockEditAction = jasmine.createSpyObj("editAction", ["perform"]); mockDomainObject.getId.andReturn("test"); mockDomainObject.getCapability.andReturn(mockContext); mockContext.getParent.andReturn(mockParent); mockType.hasFeature.andReturn(true); + mockType.getKey.andReturn("layout"); mockComposition.invoke.andReturn(mockPromise(true)); mockComposition.add.andReturn(mockPromise(true)); + mockActionCapability.getActions.andReturn([]); capabilities = { composition: mockComposition, persistence: mockPersistence, + action: mockActionCapability, type: mockType }; model = { - composition: [ "a", "b", "c" ] + composition: ["a", "b", "c"] }; actionContext = { @@ -90,7 +97,7 @@ define( selectedObject: mockDomainObject }; - action = new LinkAction(actionContext); + action = new EditAndComposeAction(actionContext); }); @@ -105,6 +112,21 @@ define( expect(mockPersistence.persist).toHaveBeenCalled(); }); + it("enables edit mode for objects that have an edit action", function () { + mockActionCapability.getActions.andReturn([mockEditAction]); + action.perform(); + expect(mockEditAction.perform).toHaveBeenCalled(); + }); + + it("Does not enable edit mode for objects that do not have an" + + " edit action", function () { + mockActionCapability.getActions.andReturn([]); + action.perform(); + expect(mockEditAction.perform).not.toHaveBeenCalled(); + expect(mockComposition.add) + .toHaveBeenCalledWith(mockDomainObject); + }); + }); } ); diff --git a/platform/commonUI/edit/test/actions/PropertiesActionSpec.js b/platform/commonUI/edit/test/actions/PropertiesActionSpec.js index cad091cff5..785ac24d35 100644 --- a/platform/commonUI/edit/test/actions/PropertiesActionSpec.js +++ b/platform/commonUI/edit/test/actions/PropertiesActionSpec.js @@ -38,7 +38,9 @@ define( beforeEach(function () { capabilities = { type: { - getProperties: function () { return []; }, + getProperties: function () { + return []; + }, hasFeature: jasmine.createSpy('hasFeature') }, persistence: jasmine.createSpyObj("persistence", ["persist"]), @@ -47,11 +49,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 = { diff --git a/platform/commonUI/edit/test/actions/PropertiesDialogSpec.js b/platform/commonUI/edit/test/actions/PropertiesDialogSpec.js index 2de6c12885..00d245a256 100644 --- a/platform/commonUI/edit/test/actions/PropertiesDialogSpec.js +++ b/platform/commonUI/edit/test/actions/PropertiesDialogSpec.js @@ -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 '}; + } }; }); diff --git a/platform/commonUI/edit/test/actions/RemoveActionSpec.js b/platform/commonUI/edit/test/actions/RemoveActionSpec.js index f9f36e36a8..a9ae1143af 100644 --- a/platform/commonUI/edit/test/actions/RemoveActionSpec.js +++ b/platform/commonUI/edit/test/actions/RemoveActionSpec.js @@ -57,19 +57,19 @@ define( 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 = { @@ -83,13 +83,13 @@ 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" ]); - mockPersistence = jasmine.createSpyObj("persistence", [ "persist" ]); - 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"]); + mockPersistence = jasmine.createSpyObj("persistence", ["persist"]); + mockType = jasmine.createSpyObj("type", ["hasFeature"]); mockNavigationService = jasmine.createSpyObj( "navigationService", [ @@ -100,8 +100,8 @@ define( ] ); mockNavigationService.getNavigation.andReturn(mockDomainObject); - - + + mockDomainObject.getId.andReturn("test"); mockDomainObject.getCapability.andReturn(mockContext); mockContext.getParent.andReturn(mockParent); @@ -113,7 +113,7 @@ define( type: mockType }; model = { - composition: [ "a", "test", "b" ] + composition: ["a", "test", "b"] }; actionContext = { domainObject: mockDomainObject }; @@ -158,60 +158,60 @@ define( // Finally, should have persisted expect(mockPersistence.persist).toHaveBeenCalled(); }); - + 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(); }); }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/edit/test/actions/SaveActionSpec.js b/platform/commonUI/edit/test/actions/SaveActionSpec.js index 09df5e53b5..2d15b46679 100644 --- a/platform/commonUI/edit/test/actions/SaveActionSpec.js +++ b/platform/commonUI/edit/test/actions/SaveActionSpec.js @@ -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( }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/edit/test/actions/SaveAsActionSpec.js b/platform/commonUI/edit/test/actions/SaveAsActionSpec.js index bac173ddcc..8ea603b623 100644 --- a/platform/commonUI/edit/test/actions/SaveAsActionSpec.js +++ b/platform/commonUI/edit/test/actions/SaveAsActionSpec.js @@ -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; } }); diff --git a/platform/commonUI/edit/test/capabilities/EditorCapabilitySpec.js b/platform/commonUI/edit/test/capabilities/EditorCapabilitySpec.js index fe42ec92f7..fa4d1a43b6 100644 --- a/platform/commonUI/edit/test/capabilities/EditorCapabilitySpec.js +++ b/platform/commonUI/edit/test/capabilities/EditorCapabilitySpec.js @@ -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( }); }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/edit/test/capabilities/TransactionCapabilityDecoratorSpec.js b/platform/commonUI/edit/test/capabilities/TransactionCapabilityDecoratorSpec.js index f710cf215e..e1a48af7d1 100644 --- a/platform/commonUI/edit/test/capabilities/TransactionCapabilityDecoratorSpec.js +++ b/platform/commonUI/edit/test/capabilities/TransactionCapabilityDecoratorSpec.js @@ -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); }); }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/edit/test/capabilities/TransactionalPersistenceCapabilitySpec.js b/platform/commonUI/edit/test/capabilities/TransactionalPersistenceCapabilitySpec.js index c0892e6db2..63a9119826 100644 --- a/platform/commonUI/edit/test/capabilities/TransactionalPersistenceCapabilitySpec.js +++ b/platform/commonUI/edit/test/capabilities/TransactionalPersistenceCapabilitySpec.js @@ -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( }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/edit/test/controllers/EditActionControllerSpec.js b/platform/commonUI/edit/test/controllers/EditActionControllerSpec.js index 6478837ce6..2fe3e32d63 100644 --- a/platform/commonUI/edit/test/controllers/EditActionControllerSpec.js +++ b/platform/commonUI/edit/test/controllers/EditActionControllerSpec.js @@ -56,4 +56,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/edit/test/controllers/EditControllerSpec.js b/platform/commonUI/edit/test/controllers/EditControllerSpec.js index 8c6a1ee31f..b616d6006d 100644 --- a/platform/commonUI/edit/test/controllers/EditControllerSpec.js +++ b/platform/commonUI/edit/test/controllers/EditControllerSpec.js @@ -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 diff --git a/platform/commonUI/edit/test/controllers/EditPanesControllerSpec.js b/platform/commonUI/edit/test/controllers/EditPanesControllerSpec.js index d0d6aea413..4d6291ae7f 100644 --- a/platform/commonUI/edit/test/controllers/EditPanesControllerSpec.js +++ b/platform/commonUI/edit/test/controllers/EditPanesControllerSpec.js @@ -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( }); }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/edit/test/controllers/ElementsControllerSpec.js b/platform/commonUI/edit/test/controllers/ElementsControllerSpec.js index 2837eb03df..a40c318c51 100644 --- a/platform/commonUI/edit/test/controllers/ElementsControllerSpec.js +++ b/platform/commonUI/edit/test/controllers/ElementsControllerSpec.js @@ -34,8 +34,8 @@ define( controller = new ElementsController(mockScope); }); - function getModel (model) { - return function() { + function getModel(model) { + return function () { return model; }; } diff --git a/platform/commonUI/browse/test/creation/AddActionProviderSpec.js b/platform/commonUI/edit/test/creation/AddActionProviderSpec.js similarity index 92% rename from platform/commonUI/browse/test/creation/AddActionProviderSpec.js rename to platform/commonUI/edit/test/creation/AddActionProviderSpec.js index 3b391d0258..121f9b193d 100644 --- a/platform/commonUI/browse/test/creation/AddActionProviderSpec.js +++ b/platform/commonUI/edit/test/creation/AddActionProviderSpec.js @@ -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( }); }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/browse/test/creation/CreateActionProviderSpec.js b/platform/commonUI/edit/test/creation/CreateActionProviderSpec.js similarity index 83% rename from platform/commonUI/browse/test/creation/CreateActionProviderSpec.js rename to platform/commonUI/edit/test/creation/CreateActionProviderSpec.js index b5bb794b04..d8aefe17fa 100644 --- a/platform/commonUI/browse/test/creation/CreateActionProviderSpec.js +++ b/platform/commonUI/edit/test/creation/CreateActionProviderSpec.js @@ -29,13 +29,10 @@ define( describe("The create action provider", function () { var mockTypeService, - mockDialogService, - mockNavigationService, mockPolicyService, mockCreationPolicy, mockPolicyMap = {}, mockTypes, - mockQ, provider; function createMockType(name) { @@ -59,41 +56,31 @@ define( beforeEach(function () { mockTypeService = jasmine.createSpyObj( "typeService", - [ "listTypes" ] - ); - mockDialogService = jasmine.createSpyObj( - "dialogService", - [ "getUserInput" ] - ); - mockNavigationService = jasmine.createSpyObj( - "navigationService", - [ "setNavigation" ] + ["listTypes"] ); 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; }); mockTypeService.listTypes.andReturn(mockTypes); provider = new CreateActionProvider( - mockQ, mockTypeService, - mockNavigationService, mockPolicyService ); }); @@ -126,4 +113,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/edit/test/creation/CreateActionSpec.js b/platform/commonUI/edit/test/creation/CreateActionSpec.js new file mode 100644 index 0000000000..c2d8e64279 --- /dev/null +++ b/platform/commonUI/edit/test/creation/CreateActionSpec.js @@ -0,0 +1,190 @@ +/***************************************************************************** + * 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. + *****************************************************************************/ + +/** + * MCTRepresentationSpec. Created by vwoeltje on 11/6/14. + */ +define( + ["../../src/creation/CreateAction"], + function (CreateAction) { + + describe("The create action", function () { + var mockType, + mockParent, + mockContext, + mockDomainObject, + capabilities = {}, + mockEditAction, + mockSaveAction, + action; + + function mockPromise(value) { + return { + then: function (callback) { + return mockPromise(callback(value)); + } + }; + } + + beforeEach(function () { + mockType = jasmine.createSpyObj( + "type", + [ + "getKey", + "getGlyph", + "getName", + "getDescription", + "getProperties", + "getInitialModel" + ] + ); + mockParent = jasmine.createSpyObj( + "domainObject", + [ + "getId", + "getModel", + "getCapability", + "useCapability" + ] + ); + mockDomainObject = jasmine.createSpyObj( + "domainObject", + [ + "getId", + "getModel", + "getCapability", + "hasCapability", + "useCapability" + ] + ); + mockDomainObject.hasCapability.andCallFake(function (name) { + return !!capabilities[name]; + }); + mockDomainObject.getCapability.andCallFake(function (name) { + return capabilities[name]; + }); + mockSaveAction = jasmine.createSpyObj( + "saveAction", + [ + "perform" + ] + ); + + capabilities.action = jasmine.createSpyObj( + "actionCapability", + [ + "getActions", + "perform" + ] + ); + + capabilities.editor = jasmine.createSpyObj( + "editorCapability", + [ + "edit", + "save", + "cancel" + ] + ); + + mockEditAction = jasmine.createSpyObj( + "editAction", + [ + "perform" + ] + ); + + mockContext = { + domainObject: mockParent + }; + mockParent.useCapability.andReturn(mockDomainObject); + + mockType.getKey.andReturn("test"); + mockType.getGlyph.andReturn("T"); + mockType.getDescription.andReturn("a test type"); + mockType.getName.andReturn("Test"); + mockType.getProperties.andReturn([]); + mockType.getInitialModel.andReturn({}); + + action = new CreateAction( + mockType, + mockParent, + mockContext + ); + }); + + it("exposes type-appropriate metadata", function () { + var metadata = action.getMetadata(); + + expect(metadata.name).toEqual("Test"); + expect(metadata.description).toEqual("a test type"); + expect(metadata.glyph).toEqual("T"); + }); + + describe("the perform function", function () { + beforeEach(function () { + capabilities.action.getActions.andReturn([mockEditAction]); + }); + + it("uses the instantiation capability when performed", function () { + action.perform(); + expect(mockParent.useCapability).toHaveBeenCalledWith("instantiation", jasmine.any(Object)); + }); + + it("uses the edit action if available", function () { + action.perform(); + expect(mockEditAction.perform).toHaveBeenCalled(); + }); + + it("uses the save action if object does not have an edit action" + + " available", function () { + capabilities.action.getActions.andReturn([]); + capabilities.action.perform.andReturn(mockPromise(undefined)); + action.perform(); + expect(capabilities.action.perform).toHaveBeenCalledWith("save"); + }); + + describe("uses to editor capability", function () { + var promise = jasmine.createSpyObj("promise", ["then"]); + beforeEach(function () { + capabilities.action.getActions.andReturn([]); + capabilities.action.perform.andReturn(promise); + }); + + it("to save the edit if user saves dialog", function () { + action.perform(); + expect(promise.then).toHaveBeenCalled(); + promise.then.mostRecentCall.args[0](); + expect(capabilities.editor.save).toHaveBeenCalled(); + }); + + it("to cancel the edit if user cancels dialog", function () { + action.perform(); + promise.then.mostRecentCall.args[1](); + expect(capabilities.editor.cancel).toHaveBeenCalled(); + }); + }); + }); + + }); + } +); diff --git a/platform/commonUI/browse/test/creation/CreateMenuControllerSpec.js b/platform/commonUI/edit/test/creation/CreateMenuControllerSpec.js similarity index 99% rename from platform/commonUI/browse/test/creation/CreateMenuControllerSpec.js rename to platform/commonUI/edit/test/creation/CreateMenuControllerSpec.js index a2f5473199..b2c1f4afa4 100644 --- a/platform/commonUI/browse/test/creation/CreateMenuControllerSpec.js +++ b/platform/commonUI/edit/test/creation/CreateMenuControllerSpec.js @@ -62,4 +62,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/browse/test/creation/CreateWizardSpec.js b/platform/commonUI/edit/test/creation/CreateWizardSpec.js similarity index 94% rename from platform/commonUI/browse/test/creation/CreateWizardSpec.js rename to platform/commonUI/edit/test/creation/CreateWizardSpec.js index 577fb9b9ff..628fdbc447 100644 --- a/platform/commonUI/browse/test/creation/CreateWizardSpec.js +++ b/platform/commonUI/edit/test/creation/CreateWizardSpec.js @@ -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); }); diff --git a/platform/commonUI/browse/test/creation/CreationPolicySpec.js b/platform/commonUI/edit/test/creation/CreationPolicySpec.js similarity index 99% rename from platform/commonUI/browse/test/creation/CreationPolicySpec.js rename to platform/commonUI/edit/test/creation/CreationPolicySpec.js index a12d2c752d..1c6a5421ca 100644 --- a/platform/commonUI/browse/test/creation/CreationPolicySpec.js +++ b/platform/commonUI/edit/test/creation/CreationPolicySpec.js @@ -48,4 +48,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/browse/test/creation/CreationServiceSpec.js b/platform/commonUI/edit/test/creation/CreationServiceSpec.js similarity index 96% rename from platform/commonUI/browse/test/creation/CreationServiceSpec.js rename to platform/commonUI/edit/test/creation/CreationServiceSpec.js index 270f5f8c90..fe740ca87a 100644 --- a/platform/commonUI/browse/test/creation/CreationServiceSpec.js +++ b/platform/commonUI/edit/test/creation/CreationServiceSpec.js @@ -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) { diff --git a/platform/commonUI/browse/test/creation/LocatorControllerSpec.js b/platform/commonUI/edit/test/creation/LocatorControllerSpec.js similarity index 88% rename from platform/commonUI/browse/test/creation/LocatorControllerSpec.js rename to platform/commonUI/edit/test/creation/LocatorControllerSpec.js index a601d5ea42..ffdf6514fb 100644 --- a/platform/commonUI/browse/test/creation/LocatorControllerSpec.js +++ b/platform/commonUI/edit/test/creation/LocatorControllerSpec.js @@ -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); }); diff --git a/platform/commonUI/edit/test/directives/MCTBeforeUnloadSpec.js b/platform/commonUI/edit/test/directives/MCTBeforeUnloadSpec.js index f025cef20d..ab108f6feb 100644 --- a/platform/commonUI/edit/test/directives/MCTBeforeUnloadSpec.js +++ b/platform/commonUI/edit/test/directives/MCTBeforeUnloadSpec.js @@ -111,4 +111,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/edit/test/policies/EditActionPolicySpec.js b/platform/commonUI/edit/test/policies/EditActionPolicySpec.js index 0cdf1be85d..539e37a373 100644 --- a/platform/commonUI/edit/test/policies/EditActionPolicySpec.js +++ b/platform/commonUI/edit/test/policies/EditActionPolicySpec.js @@ -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); }); }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/edit/test/policies/EditContextualActionPolicySpec.js b/platform/commonUI/edit/test/policies/EditContextualActionPolicySpec.js index a516061e80..23e7ec8c1e 100644 --- a/platform/commonUI/edit/test/policies/EditContextualActionPolicySpec.js +++ b/platform/commonUI/edit/test/policies/EditContextualActionPolicySpec.js @@ -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); diff --git a/platform/commonUI/edit/test/policies/EditableViewPolicySpec.js b/platform/commonUI/edit/test/policies/EditableViewPolicySpec.js index 32400a7453..e849e49c5f 100644 --- a/platform/commonUI/edit/test/policies/EditableViewPolicySpec.js +++ b/platform/commonUI/edit/test/policies/EditableViewPolicySpec.js @@ -36,7 +36,7 @@ define( ['hasCapability', 'getCapability'] ); mockDomainObject.getCapability.andReturn({ - inEditContext: function () { + inEditContext: function () { return true; } }); @@ -76,4 +76,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/edit/test/representers/EditRepresenterSpec.js b/platform/commonUI/edit/test/representers/EditRepresenterSpec.js index fe0c17c5bd..d535e19bac 100644 --- a/platform/commonUI/edit/test/representers/EditRepresenterSpec.js +++ b/platform/commonUI/edit/test/representers/EditRepresenterSpec.js @@ -72,7 +72,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]; }); diff --git a/platform/commonUI/edit/test/representers/EditToolbarRepresenterSpec.js b/platform/commonUI/edit/test/representers/EditToolbarRepresenterSpec.js index cc566c71f3..d0833e490c 100644 --- a/platform/commonUI/edit/test/representers/EditToolbarRepresenterSpec.js +++ b/platform/commonUI/edit/test/representers/EditToolbarRepresenterSpec.js @@ -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( }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/edit/test/representers/EditToolbarSpec.js b/platform/commonUI/edit/test/representers/EditToolbarSpec.js index a252b32612..2e4946dd76 100644 --- a/platform/commonUI/edit/test/representers/EditToolbarSpec.js +++ b/platform/commonUI/edit/test/representers/EditToolbarSpec.js @@ -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 () { diff --git a/platform/commonUI/edit/test/services/TransactionServiceSpec.js b/platform/commonUI/edit/test/services/TransactionServiceSpec.js index 5f965decf9..91fa859b73 100644 --- a/platform/commonUI/edit/test/services/TransactionServiceSpec.js +++ b/platform/commonUI/edit/test/services/TransactionServiceSpec.js @@ -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( }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/formats/test/FormatProviderSpec.js b/platform/commonUI/formats/test/FormatProviderSpec.js index 527a0182af..94d951ff6a 100644 --- a/platform/commonUI/formats/test/FormatProviderSpec.js +++ b/platform/commonUI/formats/test/FormatProviderSpec.js @@ -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; }); diff --git a/platform/commonUI/general/bundle.js b/platform/commonUI/general/bundle.js index f78233e135..daadacbc45 100644 --- a/platform/commonUI/general/bundle.js +++ b/platform/commonUI/general/bundle.js @@ -380,7 +380,7 @@ define([ { "key": "mctTree", "implementation": MCTTree, - "depends": [ '$parse', 'gestureService' ] + "depends": ['$parse', 'gestureService'] } ], "constants": [ diff --git a/platform/commonUI/general/res/sass/_archetypes.scss b/platform/commonUI/general/res/sass/_archetypes.scss index 84045c2520..4abad717ea 100644 --- a/platform/commonUI/general/res/sass/_archetypes.scss +++ b/platform/commonUI/general/res/sass/_archetypes.scss @@ -145,3 +145,8 @@ .flex-justify-end { @include justify-content(flex-end); } + +/********************************************* POPUPS */ +.t-popup { + z-index: 75; +} diff --git a/platform/commonUI/general/res/sass/_constants.scss b/platform/commonUI/general/res/sass/_constants.scss index 659025960f..c36a6cb00a 100644 --- a/platform/commonUI/general/res/sass/_constants.scss +++ b/platform/commonUI/general/res/sass/_constants.scss @@ -48,7 +48,7 @@ $uePaneMiniTabW: 10px; $uePaneMiniTabCollapsedW: 11px; $ueEditLeftPaneW: 75%; $treeSearchInputBarH: 25px; -$ueTimeControlH: (33px, 20px, 20px); +$ueTimeControlH: (33px, 18px, 20px); // Panes $ueBrowseLeftPaneTreeMinW: 150px; $ueBrowseLeftPaneTreeMaxW: 35%; diff --git a/platform/commonUI/general/res/sass/_global.scss b/platform/commonUI/general/res/sass/_global.scss index be2f7014c1..f03aad1eb9 100644 --- a/platform/commonUI/general/res/sass/_global.scss +++ b/platform/commonUI/general/res/sass/_global.scss @@ -63,9 +63,10 @@ input, textarea { font-family: Helvetica, Arial, sans-serif; } -input[type="text"] { +input[type="text"], +input[type="search"] { vertical-align: baseline; - padding: 3px 5px !important; + padding: 3px 5px; } h1, h2, h3 { diff --git a/platform/commonUI/general/res/sass/_mixins.scss b/platform/commonUI/general/res/sass/_mixins.scss index 02a3bb1583..d7fa694100 100644 --- a/platform/commonUI/general/res/sass/_mixins.scss +++ b/platform/commonUI/general/res/sass/_mixins.scss @@ -139,6 +139,17 @@ background-size: $d $d; } +@mixin bgStripes($c: yellow, $a: 0.1, $bgsize: 5px, $angle: 90deg) { + @include background-image(linear-gradient($angle, + rgba($c, $a) 25%, transparent 25%, + transparent 50%, rgba($c, $a) 50%, + rgba($c, $a) 75%, transparent 75%, + transparent 100% + )); + background-repeat: repeat; + background-size: $bgsize $bgsize; +} + @mixin bgVertStripes($c: yellow, $a: 0.1, $d: 40px) { @include background-image(linear-gradient(-90deg, rgba($c, $a) 0%, rgba($c, $a) 50%, @@ -322,13 +333,13 @@ color: $fg; outline: none; &.error { - background: rgba(red, 0.5); + background-color: $colorFormFieldErrorBg; + color: $colorFormFieldErrorFg; } } @mixin nice-input($bg: $colorInputBg, $fg: $colorInputFg) { @include input-base($bg, $fg); - padding: 0 $interiorMarginSm; } @mixin contextArrow() { diff --git a/platform/commonUI/general/res/sass/controls/_controls.scss b/platform/commonUI/general/res/sass/controls/_controls.scss index e938d1a6e7..9cc835348b 100644 --- a/platform/commonUI/general/res/sass/controls/_controls.scss +++ b/platform/commonUI/general/res/sass/controls/_controls.scss @@ -29,7 +29,7 @@ .accordion-head { $op: 0.2; border-radius: $basicCr * 0.75; - box-sizing: "border-box"; + box-sizing: border-box; background: rgba($colorBodyFg, $op); cursor: pointer; font-size: 0.75em; @@ -396,11 +396,11 @@ input[type="search"] { left: auto; } .knob-l { - @include border-left-radius($sliderKnobW); + @include border-left-radius($sliderKnobR); cursor: w-resize; } .knob-r { - @include border-right-radius($sliderKnobW); + @include border-right-radius($sliderKnobR); cursor: e-resize; } .range { @@ -426,7 +426,6 @@ input[type="search"] { @include user-select(none); font-size: 0.8rem; padding: $interiorMarginLg !important; - width: 230px; .l-month-year-pager { $pagerW: 20px; height: $r1H; @@ -518,6 +517,19 @@ input[type="search"] { } } +@include phone { + .l-datetime-picker { + padding: $interiorMargin !important; + } + .l-calendar { + ul.l-cal-row { + li { + padding: 2px $interiorMargin; + } + } + } +} + /******************************************************** TEXTAREA */ textarea { @include nice-textarea($colorInputBg, $colorInputFg); diff --git a/platform/commonUI/general/res/sass/controls/_time-controller.scss b/platform/commonUI/general/res/sass/controls/_time-controller.scss index f6201d60cf..ba2cf5b3ee 100644 --- a/platform/commonUI/general/res/sass/controls/_time-controller.scss +++ b/platform/commonUI/general/res/sass/controls/_time-controller.scss @@ -10,25 +10,24 @@ $knobHOffset: 0px; $knobM: ($sliderKnobW + $knobHOffset) * -1; $rangeValPad: $interiorMargin; - $rangeValOffset: $sliderKnobW; - $timeRangeSliderLROffset: 130px + $sliderKnobW + $rangeValOffset; - $r1H: nth($ueTimeControlH,1); + $rangeValOffset: $sliderKnobW + $interiorMargin; + $timeRangeSliderLROffset: 150px + ($sliderKnobW * 2); + $r1H: nth($ueTimeControlH,1); // Not currently used $r2H: nth($ueTimeControlH,2); $r3H: nth($ueTimeControlH,3); - display: block; - height: $r1H + $r2H + $r3H + ($interiorMargin * 2); min-width: $minW; font-size: 0.8rem; - .l-time-range-inputs-holder, .l-time-range-slider-holder, .l-time-range-ticks-holder { - @include absPosDefault(0, visible); box-sizing: border-box; - top: auto; + position: relative; + &:not(:first-child) { + margin-top: $interiorMargin; + } } .l-time-range-slider, .l-time-range-ticks { @@ -37,14 +36,21 @@ } .l-time-range-inputs-holder { - height: $r1H; bottom: $r2H + $r3H + ($interiorMarginSm * 2); - padding-top: $interiorMargin; border-top: 1px solid $colorInteriorBorder; + padding-top: $interiorMargin; + &.l-flex-row, + .l-flex-row { + @include align-items(center); + .flex-elem { + height: auto; + line-height: normal; + } + } .type-icon { font-size: 120%; vertical-align: middle; } - .l-time-range-input, + .l-time-range-input-w, .l-time-range-inputs-elem { margin-right: $interiorMargin; .lbl { @@ -52,13 +58,27 @@ } .ui-symbol.icon { font-size: 11px; - width: 11px; } } + .l-time-range-input-w { + // Wraps a datetime text input field + position: relative; + input[type="text"] { + width: 200px; + &.picker-icon { + padding-right: 20px; + } + } + .icon-calendar { + position: absolute; + right: 5px; + top: 5px; + } + } } .l-time-range-slider-holder { - height: $r2H; bottom: $r3H + ($interiorMarginSm * 1); + height: $r2H; .range-holder { box-shadow: none; background: none; @@ -73,24 +93,13 @@ width: $myW; height: auto; z-index: 2; - &:before, - &:after { - background-color: $myC; - content: ""; - position: absolute; - } &:before { // Vert line + background-color: $myC; + position: absolute; + content: ""; top: 0; right: auto; bottom: -10px; left: floor($myW/2) - 1; - width: 2px; - } - &:after { - // Circle element - border-radius: $myW; - @include transform(translateY(-50%)); - top: 50%; right: 0; bottom: auto; left: 0; - width: auto; - height: $myW; + width: 1px; } } &:hover .toi-line { @@ -126,9 +135,9 @@ @include webkitProp(transform, translateX(-50%)); color: $colorPlotLabelFg; display: inline-block; - font-size: 0.9em; + font-size: 0.7rem; position: absolute; - top: 8px; + top: 5px; white-space: nowrap; z-index: 2; } @@ -138,16 +147,29 @@ .knob { z-index: 2; + &:before { + $mTB: 2px; + $grippyW: 3px; + $mLR: ($sliderKnobW - $grippyW)/2; + @include bgStripes($c: pullForward($sliderColorKnob, 20%), $a: 1, $bgsize: 4px, $angle: 0deg); + content: ''; + display: block; + position: absolute; + top: $mTB; right: $mLR; bottom: $mTB; left: $mLR; + } .range-value { @include trans-prop-nice-fade(.25s); - padding: 0 $rangeValOffset; + font-size: 0.7rem; position: absolute; height: $r2H; line-height: $r2H; - white-space: nowrap; + white-space: nowrap; + z-index: 1; } - &:hover .range-value { - color: $sliderColorKnobHov; + &:hover { + .range-value { + color: $sliderColorKnobHov; + } } &.knob-l { margin-left: $knobM; @@ -170,7 +192,7 @@ .l-time-domain-selector { position: absolute; right: 0px; - bottom: 46px; + top: $interiorMargin; } } @@ -181,174 +203,64 @@ padding: 1px 1px 0 $interiorMargin; } +/******************************************************************** MOBILE */ + @include phoneandtablet { - .l-time-controller, .l-time-range-inputs-holder { - min-width: 0px; - } - - .l-time-controller { - - .l-time-domain-selector { - select { - height: 25px; - margin-bottom: 0px; - } - } - - .l-time-range-slider-holder, .l-time-range-ticks-holder { - display: none; - } - - .time-range-start, .time-range-end, { - width: 100%; - } - - .l-time-range-inputs-holder { - .l-time-range-input { - display: block; - .s-btn { - padding-right: 18px; - white-space: nowrap; - input { - width: 100%; - } - } - } - .l-time-range-inputs-elem { - - } - } - } + .l-time-controller { + min-width: 0; + .l-time-range-slider-holder, + .l-time-range-ticks-holder { + display: none; + } + } } @include phone { - .l-time-controller { - height: 48px; - - .l-time-range-inputs-holder { - bottom: 24px; - } - - .l-time-domain-selector { - width: 33%; - bottom: -9px; - } - - .l-time-range-inputs-holder { - .l-time-range-input { - margin-bottom: 5px; - .s-btn { - width: 66%; - } - } - .l-time-range-inputs-elem { - &.ui-symbol { - display: none; - } - - &.lbl { - width: 33%; - right: 0px; - top: 5px; - display: block; - height: 25px; - margin: 0; - line-height: 25px; - position: absolute; - } - } - } - } + .l-time-controller { + .l-time-range-inputs-holder { + &.l-flex-row, + .l-flex-row { + @include align-items(flex-start); + } + .l-time-range-inputs-elem { + &.type-icon { + margin-top: 3px; + } + } + .t-inputs-w { + @include flex-direction(column); + .l-time-range-input-w:not(:first-child) { + &:not(:first-child) { + margin-top: $interiorMargin; + } + margin-right: 0; + } + .l-time-range-inputs-elem { + &.lbl { display: none; } + } + } + } + } } - -@include tablet { - .l-time-controller { - height: 17px; - - .l-time-range-inputs-holder { - bottom: -7px; - left: -5px; - } - - .l-time-domain-selector { - width: 23%; - right: -4px; - bottom: -10px; - } - - .l-time-range-inputs-holder { - .l-time-range-input { - float: left; - .s-btn { - width: 100%; - padding-left: 4px; - } - } - } - } -} - -@include tabletLandscape { - .l-time-controller { - height: 17px; - - .l-time-range-inputs-holder { - bottom: -7px; - } - - .l-time-domain-selector { - width: 23%; - right: auto; - bottom: -10px; - left: 391px; - } - - .l-time-range-inputs-holder { - .l-time-range-inputs-elem { - &.ui-symbol, &.lbl { - display: block; - float: left; - line-height: 25px; - } - } - } - } - - .pane-tree-hidden .l-time-controller { - .l-time-domain-selector { - left: 667px; - } - .l-time-range-inputs-holder { - padding-left: 277px; - } - } -} -@include tabletPortrait { - .l-time-controller { - height: 17px; - - .l-time-range-inputs-holder { - bottom: -7px; - left: -5px; - } - - .l-time-domain-selector { - width: 23%; - right: -4px; - bottom: -10px; - } - - .l-time-range-inputs-holder { - .l-time-range-input { - width: 38%; - float: left; - } - .l-time-range-inputs-elem { - &.ui-symbol, &.lbl { - display: none; - } - } - } - } +@include phonePortrait { + .l-time-controller { + .l-time-range-inputs-holder { + .t-inputs-w { + @include flex(1 1 auto); + padding-top: 25px; // Make room for the ever lovin' Time Domain Selector + .flex-elem { + @include flex(1 1 auto); + width: 100%; + } + input[type="text"] { + width: 100%; + } + } + } + } + .l-time-domain-selector { + right: auto; + left: 20px; + } } diff --git a/platform/commonUI/general/res/sass/user-environ/_layout.scss b/platform/commonUI/general/res/sass/user-environ/_layout.scss index 99d8fb9d14..9e8e9aaae1 100644 --- a/platform/commonUI/general/res/sass/user-environ/_layout.scss +++ b/platform/commonUI/general/res/sass/user-environ/_layout.scss @@ -194,7 +194,7 @@ body.desktop .pane .mini-tab-icon.toggle-pane { .holder.holder-treeview-elements { top: $bodyMargin; right: 0; - bottom: $bodyMargin; + bottom: $interiorMargin; left: $bodyMargin; .create-btn-holder { &.s-status-editing { @@ -215,17 +215,17 @@ body.desktop .pane .mini-tab-icon.toggle-pane { left: 0; .holder-object { top: $bodyMargin; - bottom: $bodyMargin; + bottom: $interiorMargin; } .holder-inspector { top: $bodyMargin; - bottom: $bodyMargin; + bottom: $interiorMargin; left: $bodyMargin; right: $bodyMargin; } .holder-elements { top: 0; - bottom: $bodyMargin; + bottom: $interiorMargin; left: $bodyMargin; right: $bodyMargin; } diff --git a/platform/commonUI/general/res/templates/controls/datetime-field.html b/platform/commonUI/general/res/templates/controls/datetime-field.html index 18eb9ec46d..47551fa25b 100644 --- a/platform/commonUI/general/res/templates/controls/datetime-field.html +++ b/platform/commonUI/general/res/templates/controls/datetime-field.html @@ -19,18 +19,17 @@ this source code distribution or the Licensing information page available at runtime from the About dialog for additional information. --> - + - - @@ -38,8 +37,7 @@
+ field="'value'">
diff --git a/platform/commonUI/general/res/templates/controls/time-controller.html b/platform/commonUI/general/res/templates/controls/time-controller.html index 281447e251..cd36236358 100644 --- a/platform/commonUI/general/res/templates/controls/time-controller.html +++ b/platform/commonUI/general/res/templates/controls/time-controller.html @@ -19,42 +19,43 @@ this source code distribution or the Licensing information page available at runtime from the About dialog for additional information. --> -
-
+ - C - - - + C + + + + + + + to + + + + + - - to - - - -   - - -
+
@@ -85,7 +86,7 @@
-
+
bar", key: "xyz", - attributes: [ "someAttr", "someOtherAttr" ] + attributes: ["someAttr", "someOtherAttr"] } ], mctContainer; @@ -85,4 +85,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/general/test/directives/MCTDragSpec.js b/platform/commonUI/general/test/directives/MCTDragSpec.js index e5236c79c5..3160660906 100644 --- a/platform/commonUI/general/test/directives/MCTDragSpec.js +++ b/platform/commonUI/general/test/directives/MCTDragSpec.js @@ -24,7 +24,7 @@ define( ["../../src/directives/MCTDrag"], function (MCTDrag) { - var JQLITE_METHODS = [ "on", "off", "find" ]; + var JQLITE_METHODS = ["on", "off", "find"]; describe("The mct-drag directive", function () { var mockDocument, @@ -46,7 +46,7 @@ define( mockDocument = jasmine.createSpyObj("$document", JQLITE_METHODS); mockScope = - jasmine.createSpyObj("$scope", [ "$eval", "$apply" ]); + jasmine.createSpyObj("$scope", ["$eval", "$apply"]); mockElement = jasmine.createSpyObj("element", JQLITE_METHODS); mockBody = diff --git a/platform/commonUI/general/test/directives/MCTPopupSpec.js b/platform/commonUI/general/test/directives/MCTPopupSpec.js index bfe6b469cb..fa26b6f6f7 100644 --- a/platform/commonUI/general/test/directives/MCTPopupSpec.js +++ b/platform/commonUI/general/test/directives/MCTPopupSpec.js @@ -24,7 +24,15 @@ define( ["../../src/directives/MCTPopup"], function (MCTPopup) { - var JQLITE_METHODS = [ "on", "off", "find", "parent", "css", "append" ]; + var JQLITE_METHODS = [ + "on", + "off", + "find", + "parent", + "css", + "addClass", + "append" + ]; describe("The mct-popup directive", function () { var mockCompile, @@ -48,7 +56,7 @@ define( mockPopup = jasmine.createSpyObj("popup", ["dismiss"]); mockScope = - jasmine.createSpyObj("$scope", [ "$eval", "$apply", "$on" ]); + jasmine.createSpyObj("$scope", ["$eval", "$apply", "$on"]); mockElement = jasmine.createSpyObj("element", JQLITE_METHODS); mockBody = @@ -98,7 +106,7 @@ define( it("displays as a popup", function () { expect(mockPopupService.display).toHaveBeenCalledWith( mockNewElement, - [ testRect.left, testRect.top ] + [testRect.left, testRect.top] ); }); diff --git a/platform/commonUI/general/test/directives/MCTScrollSpec.js b/platform/commonUI/general/test/directives/MCTScrollSpec.js index e1b22965c7..4f59681696 100644 --- a/platform/commonUI/general/test/directives/MCTScrollSpec.js +++ b/platform/commonUI/general/test/directives/MCTScrollSpec.js @@ -112,4 +112,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/general/test/directives/MCTSplitPaneSpec.js b/platform/commonUI/general/test/directives/MCTSplitPaneSpec.js index 75495a195b..6a4fc18634 100644 --- a/platform/commonUI/general/test/directives/MCTSplitPaneSpec.js +++ b/platform/commonUI/general/test/directives/MCTSplitPaneSpec.js @@ -203,4 +203,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/general/test/directives/MCTSplitterSpec.js b/platform/commonUI/general/test/directives/MCTSplitterSpec.js index c2465b957a..a6f4cd92ab 100644 --- a/platform/commonUI/general/test/directives/MCTSplitterSpec.js +++ b/platform/commonUI/general/test/directives/MCTSplitterSpec.js @@ -48,16 +48,16 @@ define( beforeEach(function () { mockScope = jasmine.createSpyObj( '$scope', - [ '$on', '$watch' ] + ['$on', '$watch'] ); mockElement = jasmine.createSpyObj( 'element', - [ 'addClass' ] + ['addClass'] ); testAttrs = {}; mockSplitPane = jasmine.createSpyObj( 'mctSplitPane', - [ 'position', 'toggleClass', 'anchor' ] + ['position', 'toggleClass', 'anchor'] ); mctSplitter.link( @@ -92,7 +92,7 @@ define( }); it("repositions during drag", function () { - mockScope.splitter.move([ 10, 0 ]); + mockScope.splitter.move([10, 0]); expect(mockSplitPane.position) .toHaveBeenCalledWith(testPosition + 10); }); diff --git a/platform/commonUI/general/test/directives/MCTTreeSpec.js b/platform/commonUI/general/test/directives/MCTTreeSpec.js index 80854685e6..76f1fb9b02 100644 --- a/platform/commonUI/general/test/directives/MCTTreeSpec.js +++ b/platform/commonUI/general/test/directives/MCTTreeSpec.js @@ -32,7 +32,7 @@ define([ beforeEach(function () { mockGestureService = jasmine.createSpyObj( 'gestureService', - [ 'attachGestures' ] + ['attachGestures'] ); mockParse = jasmine.createSpy('$parse'); mockExpr = jasmine.createSpy('expr'); diff --git a/platform/commonUI/general/test/services/PopupServiceSpec.js b/platform/commonUI/general/test/services/PopupServiceSpec.js index e4819ced64..79c920a164 100644 --- a/platform/commonUI/general/test/services/PopupServiceSpec.js +++ b/platform/commonUI/general/test/services/PopupServiceSpec.js @@ -33,9 +33,9 @@ define( popupService; beforeEach(function () { - mockDocument = jasmine.createSpyObj('$document', [ 'find' ]); + mockDocument = jasmine.createSpyObj('$document', ['find']); testWindow = { innerWidth: 1000, innerHeight: 800 }; - mockBody = jasmine.createSpyObj('body', [ 'append' ]); + mockBody = jasmine.createSpyObj('body', ['append']); mockElement = jasmine.createSpyObj('element', [ 'css', 'remove' @@ -49,13 +49,13 @@ define( }); it("adds elements to the body of the document", function () { - popupService.display(mockElement, [ 0, 0 ]); + popupService.display(mockElement, [0, 0]); expect(mockBody.append).toHaveBeenCalledWith(mockElement); }); describe("when positioned in appropriate quadrants", function () { it("orients elements relative to the top-left", function () { - popupService.display(mockElement, [ 25, 50 ]); + popupService.display(mockElement, [25, 50]); expect(mockElement.css).toHaveBeenCalledWith({ position: 'absolute', left: '25px', @@ -64,7 +64,7 @@ define( }); it("orients elements relative to the top-right", function () { - popupService.display(mockElement, [ 800, 50 ]); + popupService.display(mockElement, [800, 50]); expect(mockElement.css).toHaveBeenCalledWith({ position: 'absolute', right: '200px', @@ -73,7 +73,7 @@ define( }); it("orients elements relative to the bottom-right", function () { - popupService.display(mockElement, [ 800, 650 ]); + popupService.display(mockElement, [800, 650]); expect(mockElement.css).toHaveBeenCalledWith({ position: 'absolute', right: '200px', @@ -82,7 +82,7 @@ define( }); it("orients elements relative to the bottom-left", function () { - popupService.display(mockElement, [ 120, 650 ]); + popupService.display(mockElement, [120, 650]); expect(mockElement.css).toHaveBeenCalledWith({ position: 'absolute', left: '120px', diff --git a/platform/commonUI/general/test/services/PopupSpec.js b/platform/commonUI/general/test/services/PopupSpec.js index ca36bb8a4a..3f3e4c7e4e 100644 --- a/platform/commonUI/general/test/services/PopupSpec.js +++ b/platform/commonUI/general/test/services/PopupSpec.js @@ -32,7 +32,7 @@ define( beforeEach(function () { mockElement = - jasmine.createSpyObj('element', [ 'css', 'remove' ]); + jasmine.createSpyObj('element', ['css', 'remove']); testStyles = { left: '12px', top: '14px' }; popup = new Popup(mockElement, testStyles); }); diff --git a/platform/commonUI/general/test/services/UrlServiceSpec.js b/platform/commonUI/general/test/services/UrlServiceSpec.js index 38e9de8886..e956fb657d 100644 --- a/platform/commonUI/general/test/services/UrlServiceSpec.js +++ b/platform/commonUI/general/test/services/UrlServiceSpec.js @@ -36,19 +36,19 @@ define( testViews; beforeEach(function () { - // Creates a mockLocation, used to + // Creates a mockLocation, used to // do the view search mockLocation = jasmine.createSpyObj( "$location", - [ "path", "search" ] + ["path", "search"] ); - - // The mockDomainObject is initialized as a + + // The mockDomainObject is initialized as a // spy object to ultimately be passed into the // urlService urlFor function mockDomainObject = jasmine.createSpyObj( "domainObject", - [ "getId", "getCapability", "getModel", "useCapability" ] + ["getId", "getCapability", "getModel", "useCapability"] ); mockContext = jasmine.createSpyObj('context', ['getPath']); testViews = [ @@ -57,39 +57,39 @@ define( { key: 'xyz' } ]; mockMode = "browse"; - + // The mockContext is set a path // for the mockDomainObject mockContext.getPath.andReturn( [mockDomainObject] ); - + // view capability used with the testviews made mockDomainObject.useCapability.andCallFake(function (c) { return (c === 'view') && testViews; }); - + // context capability used with the mockContext created // so the variables including context in the urlFor are // initialized and reached mockDomainObject.getCapability.andCallFake(function (c) { return c === 'context' && mockContext; }); - + // Uses the mockLocation to get the current // "mock" website's view mockLocation.search.andReturn({ view: 'def' }); - + urlService = new UrlService(mockLocation); }); - + it("get url for a location using domainObject and mode", function () { urlService.urlForLocation(mockMode, mockDomainObject); }); - + it("get url for a new tab using domainObject and mode", function () { urlService.urlForNewTab(mockMode, mockDomainObject); }); }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/general/test/ui/TreeViewSpec.js b/platform/commonUI/general/test/ui/TreeViewSpec.js index 821d5489a9..c889c31090 100644 --- a/platform/commonUI/general/test/ui/TreeViewSpec.js +++ b/platform/commonUI/general/test/ui/TreeViewSpec.js @@ -36,7 +36,7 @@ define([ treeView; function makeMockDomainObject(id, model, capabilities) { - var mockDomainObject = jasmine.createSpyObj( + var mockDomainObj = jasmine.createSpyObj( 'domainObject-' + id, [ 'getId', @@ -46,24 +46,24 @@ define([ 'useCapability' ] ); - mockDomainObject.getId.andReturn(id); - mockDomainObject.getModel.andReturn(model); - mockDomainObject.hasCapability.andCallFake(function (c) { + mockDomainObj.getId.andReturn(id); + mockDomainObj.getModel.andReturn(model); + mockDomainObj.hasCapability.andCallFake(function (c) { return !!(capabilities[c]); }); - mockDomainObject.getCapability.andCallFake(function (c) { + mockDomainObj.getCapability.andCallFake(function (c) { return capabilities[c]; }); - mockDomainObject.useCapability.andCallFake(function (c) { + mockDomainObj.useCapability.andCallFake(function (c) { return capabilities[c] && capabilities[c].invoke(); }); - return mockDomainObject; + return mockDomainObj; } beforeEach(function () { mockGestureService = jasmine.createSpyObj( 'gestureService', - [ 'attachGestures' ] + ['attachGestures'] ); mockGestureHandle = jasmine.createSpyObj('gestures', ['destroy']); @@ -99,24 +99,16 @@ define([ var mockComposition; function makeGenericCapabilities() { - var mockContext = - jasmine.createSpyObj('context', [ 'getPath' ]), - mockType = - jasmine.createSpyObj('type', [ 'getGlyph' ]), - mockLocation = - jasmine.createSpyObj('location', [ 'isLink' ]), - mockMutation = - jasmine.createSpyObj('mutation', [ 'listen' ]), - mockStatus = - jasmine.createSpyObj('status', [ 'listen', 'list' ]); + var mockStatus = + jasmine.createSpyObj('status', ['listen', 'list']); mockStatus.list.andReturn([]); return { - context: mockContext, - type: mockType, - mutation: mockMutation, - location: mockLocation, + context: jasmine.createSpyObj('context', ['getPath']), + type: jasmine.createSpyObj('type', ['getGlyph']), + location: jasmine.createSpyObj('location', ['isLink']), + mutation: jasmine.createSpyObj('mutation', ['listen']), status: mockStatus }; } @@ -133,11 +125,11 @@ define([ beforeEach(function () { mockComposition = ['a', 'b', 'c'].map(function (id) { - var testCapabilities = makeGenericCapabilities(), + var testCaps = makeGenericCapabilities(), mockChild = - makeMockDomainObject(id, {}, testCapabilities); + makeMockDomainObject(id, {}, testCaps); - testCapabilities.context.getPath + testCaps.context.getPath .andReturn([mockDomainObject, mockChild]); return mockChild; @@ -207,11 +199,11 @@ define([ describe("when a context-less object is selected", function () { beforeEach(function () { - var testCapabilities = makeGenericCapabilities(), - mockDomainObject = - makeMockDomainObject('xyz', {}, testCapabilities); - delete testCapabilities.context; - treeView.value(mockDomainObject); + var testCaps = makeGenericCapabilities(), + mockDomainObj = + makeMockDomainObject('xyz', {}, testCaps); + delete testCaps.context; + treeView.value(mockDomainObj); }); it("clears all selection state", function () { @@ -231,7 +223,7 @@ define([ calledBackInner = false; newCapabilities.composition = - jasmine.createSpyObj('composition', [ 'invoke' ]); + jasmine.createSpyObj('composition', ['invoke']); newCapabilities.composition.invoke .andReturn(Promise.resolve([mockGrandchild])); mockComposition.push(mockNewChild); @@ -274,7 +266,7 @@ define([ beforeEach(function () { var mockStatus = mockComposition[1].getCapability('status'); - testStatuses = [ 'foo' ]; + testStatuses = ['foo']; mockStatus.list.andReturn(testStatuses); mockStatus.listen.mostRecentCall.args[0](testStatuses); diff --git a/platform/commonUI/inspect/src/InfoConstants.js b/platform/commonUI/inspect/src/InfoConstants.js index c50a735998..93fa863ed6 100644 --- a/platform/commonUI/inspect/src/InfoConstants.js +++ b/platform/commonUI/inspect/src/InfoConstants.js @@ -40,7 +40,7 @@ define({ offsetX: 0, offsetY: -26 }, - BUBBLE_MOBILE_POSITION: [ 0, -25 ], + BUBBLE_MOBILE_POSITION: [0, -25], // Max width and margins allowed for bubbles; // defined in /platform/commonUI/general/res/sass/_constants.scss BUBBLE_MARGIN_LR: 10, diff --git a/platform/commonUI/inspect/src/gestures/InfoButtonGesture.js b/platform/commonUI/inspect/src/gestures/InfoButtonGesture.js index c8804fa10d..045202aa7a 100644 --- a/platform/commonUI/inspect/src/gestures/InfoButtonGesture.js +++ b/platform/commonUI/inspect/src/gestures/InfoButtonGesture.js @@ -38,14 +38,13 @@ define( function InfoGestureButton($document, agentService, infoService, element, domainObject) { var dismissBubble, touchPosition, - scopeOff, body = $document.find('body'); function trackPosition(event) { // Record touch position, so bubble can be shown at latest // touch position, also offset by 22px to left (accounts for // a finger-sized touch on the info button) - touchPosition = [ event.clientX - 22, event.clientY ]; + touchPosition = [event.clientX - 22, event.clientY]; } // Hides the bubble and detaches the @@ -79,8 +78,8 @@ define( // On any touch on the body, default body touches/events // are prevented, the bubble is dismissed, and the touchstart // body event is unbound, reallowing gestures - body.on('touchstart', function (event) { - event.preventDefault(); + body.on('touchstart', function (evt) { + evt.preventDefault(); hideBubble(); body.unbind('touchstart'); }); @@ -94,10 +93,6 @@ define( element.on('click', showBubble); } - // Also make sure we dismiss bubble if representation is destroyed - // before the mouse actually leaves it - scopeOff = element.scope().$on('$destroy', hideBubble); - return { /** * Detach any event handlers associated with this gesture. @@ -109,7 +104,6 @@ define( hideBubble(); // ...and detach listeners element.off('click', showBubble); - scopeOff(); } }; } diff --git a/platform/commonUI/inspect/src/gestures/InfoGesture.js b/platform/commonUI/inspect/src/gestures/InfoGesture.js index 7cc8826706..de5324d490 100644 --- a/platform/commonUI/inspect/src/gestures/InfoGesture.js +++ b/platform/commonUI/inspect/src/gestures/InfoGesture.js @@ -71,7 +71,7 @@ define( InfoGesture.prototype.trackPosition = function (event) { // Record mouse position, so bubble can be shown at latest // mouse position (not just where the mouse entered) - this.mousePosition = [ event.clientX, event.clientY ]; + this.mousePosition = [event.clientX, event.clientY]; }; InfoGesture.prototype.hideBubble = function () { diff --git a/platform/commonUI/inspect/test/gestures/InfoButtonGestureSpec.js b/platform/commonUI/inspect/test/gestures/InfoButtonGestureSpec.js index e9737223a7..5be65650cb 100644 --- a/platform/commonUI/inspect/test/gestures/InfoButtonGestureSpec.js +++ b/platform/commonUI/inspect/test/gestures/InfoButtonGestureSpec.js @@ -44,28 +44,28 @@ define( beforeEach(function () { mockTimeout = jasmine.createSpy('$timeout'); mockDocument = jasmine.createSpyObj('$document', ['find']); - mockBody = jasmine.createSpyObj('body', [ 'on', 'off', 'scope', 'css', 'unbind' ]); + mockBody = jasmine.createSpyObj('body', ['on', 'off', 'scope', 'css', 'unbind']); mockDocument.find.andReturn(mockBody); mockAgentService = jasmine.createSpyObj('agentService', ['isMobile', 'isPhone']); mockInfoService = jasmine.createSpyObj( 'infoService', - [ 'display' ] + ['display'] ); mockElement = jasmine.createSpyObj( 'element', - [ 'on', 'off', 'scope', 'css' ] + ['on', 'off', 'scope', 'css'] ); mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getId', 'getCapability', 'useCapability', 'getModel' ] + ['getId', 'getCapability', 'useCapability', 'getModel'] ); mockEvent = jasmine.createSpyObj("event", ["preventDefault", "stopPropagation"]); mockEvent.pageX = 0; mockEvent.pageY = 0; - mockScope = jasmine.createSpyObj('$scope', [ '$on' ]); + mockScope = jasmine.createSpyObj('$scope', ['$on']); mockOff = jasmine.createSpy('$off'); - testMetadata = [ { name: "Test name", value: "Test value" } ]; + testMetadata = [{ name: "Test name", value: "Test value" }]; mockHide = jasmine.createSpy('hide'); mockDomainObject.getModel.andReturn({ name: "Test Object" }); @@ -137,6 +137,11 @@ define( ); }); + // https://github.com/nasa/openmct/issues/948 + it("does not try to access scope", function () { + expect(mockElement.scope).not.toHaveBeenCalled(); + }); + }); } ); diff --git a/platform/commonUI/inspect/test/gestures/InfoGestureSpec.js b/platform/commonUI/inspect/test/gestures/InfoGestureSpec.js index f1ed589fe0..e135a24adb 100644 --- a/platform/commonUI/inspect/test/gestures/InfoGestureSpec.js +++ b/platform/commonUI/inspect/test/gestures/InfoGestureSpec.js @@ -52,19 +52,19 @@ define( mockAgentService = jasmine.createSpyObj('agentService', ['isMobile']); mockInfoService = jasmine.createSpyObj( 'infoService', - [ 'display' ] + ['display'] ); mockElement = jasmine.createSpyObj( 'element', - [ 'on', 'off', 'scope', 'css' ] + ['on', 'off', 'scope', 'css'] ); mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getId', 'getCapability', 'useCapability', 'getModel' ] + ['getId', 'getCapability', 'useCapability', 'getModel'] ); - mockScope = jasmine.createSpyObj('$scope', [ '$on' ]); + mockScope = jasmine.createSpyObj('$scope', ['$on']); mockOff = jasmine.createSpy('$off'); - testMetadata = [ { name: "Test name", value: "Test value" } ]; + testMetadata = [{ name: "Test name", value: "Test value" }]; mockPromise = jasmine.createSpyObj('promise', ['then']); mockHide = jasmine.createSpy('hide'); @@ -101,7 +101,7 @@ define( jasmine.any(String), "Test Object", testMetadata, - [ 1977, 42 ] + [1977, 42] ); }); @@ -130,7 +130,7 @@ define( jasmine.any(String), "Test Object", testMetadata, - [ 1984, 11 ] + [1984, 11] ); }); diff --git a/platform/commonUI/inspect/test/services/InfoServiceSpec.js b/platform/commonUI/inspect/test/services/InfoServiceSpec.js index 4be6201257..de81f943e0 100644 --- a/platform/commonUI/inspect/test/services/InfoServiceSpec.js +++ b/platform/commonUI/inspect/test/services/InfoServiceSpec.js @@ -79,7 +79,7 @@ define( service.display('', '', {}, [123, 456]); expect(mockPopupService.display).toHaveBeenCalledWith( mockElements[0], - [ 123, 456 ], + [123, 456], jasmine.any(Object) ); }); @@ -102,16 +102,16 @@ define( service.display('', '', {}, [123, 456]); expect(mockPopupService.display).toHaveBeenCalledWith( mockElements[0], - [ 0, -25 ], + [0, -25], jasmine.any(Object) ); }); - [ false, true ].forEach(function (goesLeft) { - [ false, true].forEach(function (goesUp) { + [false, true].forEach(function (goesLeft) { + [false, true].forEach(function (goesUp) { var vertical = goesUp ? "up" : "down", horizontal = goesLeft ? "left" : "right", - location = [ vertical, horizontal].join('-'); + location = [vertical, horizontal].join('-'); describe("when bubble goes " + location, function () { var expectedLocation = [ goesUp ? "bottom" : "top", @@ -123,7 +123,7 @@ define( mockPopup.goesDown.andReturn(!goesUp); mockPopup.goesLeft.andReturn(goesLeft); mockPopup.goesRight.andReturn(!goesLeft); - service.display('', '', {}, [ 10, 10 ]); + service.display('', '', {}, [10, 10]); }); it("positions the arrow in the " + expectedLocation, function () { diff --git a/platform/commonUI/mobile/src/DeviceClassifier.js b/platform/commonUI/mobile/src/DeviceClassifier.js index ce34425ab8..6801c00d02 100644 --- a/platform/commonUI/mobile/src/DeviceClassifier.js +++ b/platform/commonUI/mobile/src/DeviceClassifier.js @@ -54,4 +54,4 @@ define( return MobileClassifier; } -); \ No newline at end of file +); diff --git a/platform/commonUI/mobile/src/DeviceMatchers.js b/platform/commonUI/mobile/src/DeviceMatchers.js index bfd1e80ad0..5b6452641c 100644 --- a/platform/commonUI/mobile/src/DeviceMatchers.js +++ b/platform/commonUI/mobile/src/DeviceMatchers.js @@ -55,4 +55,4 @@ define(function () { return agentService.isTouch(); } }; -}); \ No newline at end of file +}); diff --git a/platform/commonUI/mobile/test/AgentServiceSpec.js b/platform/commonUI/mobile/test/AgentServiceSpec.js index e55113810e..da8c19ddc8 100644 --- a/platform/commonUI/mobile/test/AgentServiceSpec.js +++ b/platform/commonUI/mobile/test/AgentServiceSpec.js @@ -69,7 +69,7 @@ define( }); it("detects display orientation", function () { - var agentService = new AgentService(testWindow); + agentService = new AgentService(testWindow); testWindow.innerWidth = 1024; testWindow.innerHeight = 400; expect(agentService.isPortrait()).toBeFalsy(); diff --git a/platform/commonUI/mobile/test/DeviceClassifierSpec.js b/platform/commonUI/mobile/test/DeviceClassifierSpec.js index 4513b0d926..ab6ca51433 100644 --- a/platform/commonUI/mobile/test/DeviceClassifierSpec.js +++ b/platform/commonUI/mobile/test/DeviceClassifierSpec.js @@ -34,11 +34,11 @@ define( 'isTouch' ], TEST_PERMUTATIONS = [ - [ 'isMobile', 'isPhone', 'isTouch', 'isPortrait' ], - [ 'isMobile', 'isPhone', 'isTouch', 'isLandscape' ], - [ 'isMobile', 'isTablet', 'isTouch', 'isPortrait' ], - [ 'isMobile', 'isTablet', 'isTouch', 'isLandscape' ], - [ 'isTouch' ], + ['isMobile', 'isPhone', 'isTouch', 'isPortrait'], + ['isMobile', 'isPhone', 'isTouch', 'isLandscape'], + ['isMobile', 'isTablet', 'isTouch', 'isPortrait'], + ['isMobile', 'isTablet', 'isTouch', 'isLandscape'], + ['isTouch'], [] ]; @@ -54,11 +54,11 @@ define( ); mockDocument = jasmine.createSpyObj( '$document', - [ 'find' ] + ['find'] ); mockBody = jasmine.createSpyObj( 'body', - [ 'addClass' ] + ['addClass'] ); mockDocument.find.andCallFake(function (sel) { return sel === 'body' && mockBody; diff --git a/platform/commonUI/mobile/test/DeviceMatchersSpec.js b/platform/commonUI/mobile/test/DeviceMatchersSpec.js index 387c1c8f9b..cbdce4bf91 100644 --- a/platform/commonUI/mobile/test/DeviceMatchersSpec.js +++ b/platform/commonUI/mobile/test/DeviceMatchersSpec.js @@ -76,4 +76,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/commonUI/mobile/test/MCTDeviceSpec.js b/platform/commonUI/mobile/test/MCTDeviceSpec.js index b38d91138a..aef828cf54 100644 --- a/platform/commonUI/mobile/test/MCTDeviceSpec.js +++ b/platform/commonUI/mobile/test/MCTDeviceSpec.js @@ -24,7 +24,7 @@ define( ['../src/MCTDevice'], function (MCTDevice) { - var JQLITE_METHODS = [ 'replaceWith' ]; + var JQLITE_METHODS = ['replaceWith']; describe("The mct-device directive", function () { var mockAgentService, @@ -41,7 +41,7 @@ define( beforeEach(function () { mockAgentService = jasmine.createSpyObj( "agentService", - [ "isMobile", "isPhone", "isTablet", "isPortrait", "isLandscape" ] + ["isMobile", "isPhone", "isTablet", "isPortrait", "isLandscape"] ); mockTransclude = jasmine.createSpy("$transclude"); mockElement = jasmine.createSpyObj(name, JQLITE_METHODS); diff --git a/platform/commonUI/notification/src/NotificationIndicatorController.js b/platform/commonUI/notification/src/NotificationIndicatorController.js index b6e5559196..8a1bdbca2a 100644 --- a/platform/commonUI/notification/src/NotificationIndicatorController.js +++ b/platform/commonUI/notification/src/NotificationIndicatorController.js @@ -42,7 +42,7 @@ define( /** * Launch a dialog showing a list of current notifications. */ - $scope.showNotificationsList = function(){ + $scope.showNotificationsList = function () { dialogService.getDialogResponse('overlay-message-list', { dialog: { title: "Messages", @@ -50,11 +50,11 @@ define( // from the notifications messages: notificationService.notifications }, - cancel: function(){ + cancel: function () { dialogService.dismiss(); } }); - + }; } return NotificationIndicatorController; diff --git a/platform/commonUI/notification/src/NotificationService.js b/platform/commonUI/notification/src/NotificationService.js index 868ccf6f08..8643139f39 100644 --- a/platform/commonUI/notification/src/NotificationService.js +++ b/platform/commonUI/notification/src/NotificationService.js @@ -118,7 +118,7 @@ define( function NotificationService($timeout, topic, DEFAULT_AUTO_DISMISS, MINIMIZE_TIMEOUT) { this.notifications = []; this.$timeout = $timeout; - this.highest ={ severity: "info" }; + this.highest = { severity: "info" }; this.DEFAULT_AUTO_DISMISS = DEFAULT_AUTO_DISMISS; this.MINIMIZE_TIMEOUT = MINIMIZE_TIMEOUT; this.topic = topic; @@ -143,7 +143,7 @@ define( //Check this is a known notification var index = service.notifications.indexOf(notification); - if (service.active.timeout){ + if (service.active.timeout) { /* Method can be called manually (clicking dismiss) or automatically from an auto-timeout. this.active.timeout @@ -157,10 +157,10 @@ define( } if (index >= 0) { - notification.model.minimized=true; + notification.model.minimized = true; //Add a brief timeout before showing the next notification // in order to allow the minimize animation to run through. - service.$timeout(function() { + service.$timeout(function () { service.setActiveNotification(service.selectNextNotification()); }, service.MINIMIZE_TIMEOUT); } @@ -180,7 +180,7 @@ define( //Check this is a known notification var index = service.notifications.indexOf(notification); - if (service.active.timeout){ + if (service.active.timeout) { /* Method can be called manually (clicking dismiss) or * automatically from an auto-timeout. this.active.timeout * acts as a semaphore to prevent race conditions. Cancel any @@ -219,7 +219,7 @@ define( * Returns the notification that is currently visible in the banner area * @returns {Notification} */ - NotificationService.prototype.getActiveNotification = function (){ + NotificationService.prototype.getActiveNotification = function () { return this.active.notification; }; @@ -281,8 +281,8 @@ define( "alert": 2, "error": 3 }; - this.highest.severity = this.notifications.reduce(function(previous, notification){ - if (severity[notification.model.severity] > severity[previous]){ + this.highest.severity = this.notifications.reduce(function (previous, notification) { + if (severity[notification.model.severity] > severity[previous]) { return notification.model.severity; } else { return previous; @@ -308,23 +308,23 @@ define( notification = { model: notificationModel, - minimize: function() { + minimize: function () { self.minimize(self, notification); }, - dismiss: function(){ + dismiss: function () { self.dismiss(self, notification); topic.notify(); }, - dismissOrMinimize: function(){ + dismissOrMinimize: function () { self.dismissOrMinimize(notification); }, - onDismiss: function(callback) { + onDismiss: function (callback) { topic.listen(callback); } }; notificationModel.severity = notificationModel.severity || "info"; - if (notificationModel.autoDismiss === true){ + if (notificationModel.autoDismiss === true) { notificationModel.autoDismiss = this.DEFAULT_AUTO_DISMISS; } @@ -337,7 +337,7 @@ define( notificationModel.options = notificationModel.options || []; notificationModel.options.unshift({ label: "Dismiss", - callback: function() { + callback: function () { notification.dismiss(); } }); @@ -350,10 +350,10 @@ define( /* Check if there is already an active (ie. visible) notification */ - if (!this.active.notification){ + if (!this.active.notification) { this.setActiveNotification(notification); - } else if (!this.active.timeout){ + } else if (!this.active.timeout) { /* If there is already an active notification, time it out. If it's already got a timeout in progress (either because it has had @@ -397,7 +397,7 @@ define( } else { delete this.active.timeout; } - }; + }; /** * Used internally by the NotificationService @@ -406,17 +406,17 @@ define( */ NotificationService.prototype.selectNextNotification = function () { var notification, - i=0; + i = 0; /* Loop through the notifications queue and find the first one that has not already been minimized (manually or otherwise). */ - for (; i< this.notifications.length; i++) { + for (; i < this.notifications.length; i++) { notification = this.notifications[i]; if (!notification.model.minimized && - notification!== this.active.notification) { + notification !== this.active.notification) { return notification; } @@ -425,4 +425,4 @@ define( return NotificationService; } -); \ No newline at end of file +); diff --git a/platform/commonUI/notification/test/NotificationIndicatorControllerSpec.js b/platform/commonUI/notification/test/NotificationIndicatorControllerSpec.js index a6acd28417..222c2fc87b 100644 --- a/platform/commonUI/notification/test/NotificationIndicatorControllerSpec.js +++ b/platform/commonUI/notification/test/NotificationIndicatorControllerSpec.js @@ -30,7 +30,7 @@ define( mockDialogService, controller; - beforeEach(function(){ + beforeEach(function () { mockNotificationService = jasmine.createSpy("notificationService"); mockScope = jasmine.createSpy("$scope"); mockDialogService = jasmine.createSpyObj( @@ -43,12 +43,12 @@ define( controller = new NotificationIndicatorController(mockScope, mockNotificationService, mockDialogService); }); - it("exposes the highest notification severity to the template", function() { + it("exposes the highest notification severity to the template", function () { expect(mockScope.highest).toBeTruthy(); expect(mockScope.highest.severity).toBe("error"); }); - it("invokes the dialog service to show list of messages", function() { + it("invokes the dialog service to show list of messages", function () { expect(mockScope.showNotificationsList).toBeDefined(); mockScope.showNotificationsList(); expect(mockDialogService.getDialogResponse).toHaveBeenCalled(); @@ -60,7 +60,7 @@ define( expect(mockDialogService.dismiss).toHaveBeenCalled(); }); - it("provides a means of dismissing the message list", function() { + it("provides a means of dismissing the message list", function () { expect(mockScope.showNotificationsList).toBeDefined(); mockScope.showNotificationsList(); expect(mockDialogService.getDialogResponse).toHaveBeenCalled(); diff --git a/platform/commonUI/notification/test/NotificationServiceSpec.js b/platform/commonUI/notification/test/NotificationServiceSpec.js index 7590589f0b..ebc02445c8 100644 --- a/platform/commonUI/notification/test/NotificationServiceSpec.js +++ b/platform/commonUI/notification/test/NotificationServiceSpec.js @@ -34,7 +34,7 @@ define( mockTopicObject, errorModel; - beforeEach(function(){ + beforeEach(function () { mockTimeout = jasmine.createSpy("$timeout"); mockTopicFunction = jasmine.createSpy("topic"); mockTopicObject = jasmine.createSpyObj("topicObject", ["listen", "notify"]); @@ -54,14 +54,14 @@ define( }); it("gets a new success notification, making" + - " the notification active", function() { + " the notification active", function () { var activeNotification; notificationService.notify(successModel); activeNotification = notificationService.getActiveNotification(); expect(activeNotification.model).toBe(successModel); }); - it("notifies listeners on dismissal of notification", function() { + it("notifies listeners on dismissal of notification", function () { var notification, dismissListener = jasmine.createSpy("ondismiss"); notification = notificationService.notify(successModel); @@ -75,7 +75,7 @@ define( }); it("allows specification of an info notification given just a" + - " title, making the notification active", function() { + " title, making the notification active", function () { var activeNotification, notificationTitle = "Test info notification"; notificationService.info(notificationTitle); @@ -85,7 +85,7 @@ define( }); it("gets a new success notification with" + - " numerical auto-dismiss specified. ", function() { + " numerical auto-dismiss specified. ", function () { var activeNotification; successModel.autoDismiss = 1000; notificationService.notify(successModel); @@ -99,7 +99,7 @@ define( }); it("gets a new notification with" + - " boolean auto-dismiss specified. ", function() { + " boolean auto-dismiss specified. ", function () { var activeNotification; successModel.autoDismiss = true; notificationService.notify(successModel); @@ -112,7 +112,7 @@ define( expect(activeNotification).toBeUndefined(); }); - it("allows minimization of notifications", function() { + it("allows minimization of notifications", function () { var notification, activeNotification; @@ -128,7 +128,7 @@ define( expect(notificationService.notifications.length).toBe(1); }); - it("allows dismissal of notifications", function() { + it("allows dismissal of notifications", function () { var notification, activeNotification; @@ -143,9 +143,9 @@ define( expect(notificationService.notifications.length).toBe(0); }); - describe(" gets called with multiple notifications", function(){ + describe(" gets called with multiple notifications", function () { it("auto-dismisses the previously active notification, making" + - " the new notification active", function() { + " the new notification active", function () { var activeNotification; //First pre-load with a info message notificationService.notify(successModel); @@ -165,7 +165,7 @@ define( activeNotification = notificationService.getActiveNotification(); expect(activeNotification.model).toBe(errorModel); }); - it("auto-minimizes an active error notification", function() { + it("auto-minimizes an active error notification", function () { var activeNotification; //First pre-load with an error message notificationService.notify(errorModel); @@ -187,7 +187,7 @@ define( expect(errorModel.minimized).toEqual(true); }); it("auto-minimizes errors when a number of them arrive in" + - " short succession ", function() { + " short succession ", function () { var activeNotification, error2 = { title: "Second Mock Error Notification", diff --git a/platform/commonUI/regions/src/EditableRegionPolicy.js b/platform/commonUI/regions/src/EditableRegionPolicy.js index a63bed65b1..f538a5459b 100644 --- a/platform/commonUI/regions/src/EditableRegionPolicy.js +++ b/platform/commonUI/regions/src/EditableRegionPolicy.js @@ -36,10 +36,10 @@ define( } EditableRegionPolicy.prototype.allow = function (regionPart, domainObject) { - if (!regionPart.modes){ + if (!regionPart.modes) { return true; } - if (domainObject.hasCapability('editor') && domainObject.getCapability('editor').inEditContext()){ + if (domainObject.hasCapability('editor') && domainObject.getCapability('editor').inEditContext()) { //If the domain object is in edit mode, only include a part // if it is marked editable return regionPart.modes.indexOf('edit') !== -1; @@ -52,4 +52,4 @@ define( return EditableRegionPolicy; } -); \ No newline at end of file +); diff --git a/platform/commonUI/regions/src/InspectorController.js b/platform/commonUI/regions/src/InspectorController.js index 32b0e1903d..b182e1d137 100644 --- a/platform/commonUI/regions/src/InspectorController.js +++ b/platform/commonUI/regions/src/InspectorController.js @@ -32,7 +32,8 @@ define( */ function InspectorController($scope, policyService) { var domainObject = $scope.domainObject, - typeCapability = domainObject.getCapability('type'); + typeCapability = domainObject.getCapability('type'), + statusListener; /** * Filters region parts to only those allowed by region policies @@ -41,7 +42,7 @@ define( */ function filterRegions(inspector) { //Dupe so we're not modifying the type definition. - return inspector.regions && inspector.regions.filter(function(region) { + return inspector.regions && inspector.regions.filter(function (region) { return policyService.allow('region', region, domainObject); }); } @@ -50,9 +51,14 @@ define( $scope.regions = filterRegions(typeCapability.getDefinition().inspector || new InspectorRegion()); } + statusListener = domainObject.getCapability("status").listen(setRegions); + $scope.$on("$destroy", function () { + statusListener(); + }); + setRegions(); } return InspectorController; } -); \ No newline at end of file +); diff --git a/platform/commonUI/regions/src/Region.js b/platform/commonUI/regions/src/Region.js index 3b300b28e1..4d38f1eb8d 100644 --- a/platform/commonUI/regions/src/Region.js +++ b/platform/commonUI/regions/src/Region.js @@ -67,7 +67,7 @@ define( * @param {number} [index] the position to insert the region. By default * will add to the end */ - Region.prototype.addRegion = function (region, index){ + Region.prototype.addRegion = function (region, index) { if (index) { this.regions.splice(index, 0, region); } else { @@ -82,11 +82,11 @@ define( * string, will remove the region with the matching name. If an * object, will attempt to remove that object from the Region */ - Region.prototype.removeRegion = function (region){ + Region.prototype.removeRegion = function (region) { if (typeof region === 'number') { this.regions.splice(region, 1); - } else if (typeof region === 'string'){ - this.regions = this.regions.filter(function(thisRegion) { + } else if (typeof region === 'string') { + this.regions = this.regions.filter(function (thisRegion) { return thisRegion.name !== region; }); } else { diff --git a/platform/commonUI/regions/test/EditableRegionPolicySpec.js b/platform/commonUI/regions/test/EditableRegionPolicySpec.js index e9a6a97404..ed3b9fffd3 100644 --- a/platform/commonUI/regions/test/EditableRegionPolicySpec.js +++ b/platform/commonUI/regions/test/EditableRegionPolicySpec.js @@ -37,7 +37,7 @@ define( }, mockAllModesRegionPart = {}; - beforeEach(function(){ + beforeEach(function () { editableRegionPolicy = new EditableRegionPolicy(); mockEditorCapability = jasmine.createSpyObj("editorCapability", [ @@ -50,19 +50,19 @@ define( mockDomainObject.getCapability.andReturn(mockEditorCapability); }); - it("includes only browse region parts for object not in edit mode", function() { + it("includes only browse region parts for object not in edit mode", function () { mockEditorCapability.inEditContext.andReturn(false); expect(editableRegionPolicy.allow(mockBrowseRegionPart, mockDomainObject)).toBe(true); expect(editableRegionPolicy.allow(mockEditRegionPart, mockDomainObject)).toBe(false); }); - it("includes only edit region parts for object in edit mode", function() { + it("includes only edit region parts for object in edit mode", function () { mockEditorCapability.inEditContext.andReturn(true); expect(editableRegionPolicy.allow(mockBrowseRegionPart, mockDomainObject)).toBe(false); expect(editableRegionPolicy.allow(mockEditRegionPart, mockDomainObject)).toBe(true); }); - it("includes region parts with no mode specification", function() { + it("includes region parts with no mode specification", function () { mockEditorCapability.inEditContext.andReturn(false); expect(editableRegionPolicy.allow(mockAllModesRegionPart, mockDomainObject)).toBe(true); mockEditorCapability.inEditContext.andReturn(true); diff --git a/platform/commonUI/regions/test/InspectorControllerSpec.js b/platform/commonUI/regions/test/InspectorControllerSpec.js index ad3243c348..8acd00267c 100644 --- a/platform/commonUI/regions/test/InspectorControllerSpec.js +++ b/platform/commonUI/regions/test/InspectorControllerSpec.js @@ -30,9 +30,11 @@ define( mockTypeCapability, mockTypeDefinition, mockPolicyService, + mockStatusCapability, + capabilities = {}, controller; - beforeEach(function(){ + beforeEach(function () { mockTypeDefinition = { inspector: { @@ -47,32 +49,61 @@ define( 'getDefinition' ]); mockTypeCapability.getDefinition.andReturn(mockTypeDefinition); + capabilities.type = mockTypeCapability; + + mockStatusCapability = jasmine.createSpyObj('statusCapability', [ + 'listen' + ]); + capabilities.status = mockStatusCapability; mockDomainObject = jasmine.createSpyObj('domainObject', [ 'getCapability' ]); - mockDomainObject.getCapability.andReturn(mockTypeCapability); + mockDomainObject.getCapability.andCallFake(function (name) { + return capabilities[name]; + }); mockPolicyService = jasmine.createSpyObj('policyService', [ 'allow' ]); - mockScope = { - domainObject: mockDomainObject - }; + mockScope = jasmine.createSpyObj('$scope', + ['$on'] + ); + + mockScope.domainObject = mockDomainObject; }); - it("filters out regions disallowed by region policy", function() { + it("filters out regions disallowed by region policy", function () { mockPolicyService.allow.andReturn(false); controller = new InspectorController(mockScope, mockPolicyService); expect(mockScope.regions.length).toBe(0); }); - it("does not filter out regions allowed by region policy", function() { + it("does not filter out regions allowed by region policy", function () { mockPolicyService.allow.andReturn(true); controller = new InspectorController(mockScope, mockPolicyService); expect(mockScope.regions.length).toBe(2); }); + + it("Responds to status changes", function () { + mockPolicyService.allow.andReturn(true); + controller = new InspectorController(mockScope, mockPolicyService); + expect(mockScope.regions.length).toBe(2); + expect(mockStatusCapability.listen).toHaveBeenCalled(); + mockPolicyService.allow.andReturn(false); + mockStatusCapability.listen.mostRecentCall.args[0](); + expect(mockScope.regions.length).toBe(0); + }); + + it("Unregisters status listener", function () { + var mockListener = jasmine.createSpy('listener'); + mockStatusCapability.listen.andReturn(mockListener); + controller = new InspectorController(mockScope, mockPolicyService); + expect(mockScope.$on).toHaveBeenCalledWith("$destroy", jasmine.any(Function)); + mockScope.$on.mostRecentCall.args[1](); + expect(mockListener).toHaveBeenCalled(); + }); }); } ); diff --git a/platform/commonUI/regions/test/RegionSpec.js b/platform/commonUI/regions/test/RegionSpec.js index ed7581b44b..9c2ecc296e 100644 --- a/platform/commonUI/regions/test/RegionSpec.js +++ b/platform/commonUI/regions/test/RegionSpec.js @@ -29,7 +29,7 @@ define( var region, part2 = new Region({'name': 'part2'}); - beforeEach(function(){ + beforeEach(function () { region = new Region(); region.regions = [ new Region({name: 'part1'}), @@ -39,27 +39,27 @@ define( }); it("adding a region at a specified index adds it in that" + - " position", function() { + " position", function () { - region.addRegion(part2, 1); + region.addRegion(part2, 1); - expect(region.regions.length).toBe(4); - expect(region.regions[1]).toBe(part2); - }); + expect(region.regions.length).toBe(4); + expect(region.regions[1]).toBe(part2); + }); - it("adding a region without an index adds it at the end", function() { + it("adding a region without an index adds it at the end", function () { var partN = new Region({'name': 'partN'}); region.addRegion(partN); expect(region.regions.length).toBe(4); - expect(region.regions[region.regions.length-1]).toBe(partN); + expect(region.regions[region.regions.length - 1]).toBe(partN); }); - describe("removing a region", function(){ + describe("removing a region", function () { var partName = "part2"; - beforeEach(function(){ + beforeEach(function () { region.regions = [ new Region({name: 'part1'}), part2, @@ -68,7 +68,7 @@ define( ]; }); - it("with a string matches on region name", function() { + it("with a string matches on region name", function () { expect(region.regions.length).toBe(4); expect(region.regions.indexOf(part2)).toBe(1); @@ -78,7 +78,7 @@ define( expect(region.regions.indexOf(part2)).toBe(-1); }); - it("with a number removes by index", function() { + it("with a number removes by index", function () { expect(region.regions.length).toBe(4); expect(region.regions.indexOf(part2)).toBe(1); @@ -89,7 +89,7 @@ define( }); - it("with object matches that object", function() { + it("with object matches that object", function () { expect(region.regions.length).toBe(4); expect(region.regions.indexOf(part2)).toBe(1); diff --git a/platform/commonUI/themes/espresso/bundle.js b/platform/commonUI/themes/espresso/bundle.js index b1df3f1ea5..d583481fa9 100644 --- a/platform/commonUI/themes/espresso/bundle.js +++ b/platform/commonUI/themes/espresso/bundle.js @@ -21,10 +21,10 @@ *****************************************************************************/ define([ - + 'legacyRegistry' ], function ( - + legacyRegistry ) { diff --git a/platform/commonUI/themes/espresso/res/sass/_constants.scss b/platform/commonUI/themes/espresso/res/sass/_constants.scss index 729a813a12..bb774fb7a8 100644 --- a/platform/commonUI/themes/espresso/res/sass/_constants.scss +++ b/platform/commonUI/themes/espresso/res/sass/_constants.scss @@ -32,11 +32,12 @@ $sliderColorBase: $colorKey; $sliderColorRangeHolder: rgba(black, 0.1); $sliderColorRange: rgba($sliderColorBase, 0.3); $sliderColorRangeHov: rgba($sliderColorBase, 0.5); -$sliderColorKnob: rgba($sliderColorBase, 0.6); -$sliderColorKnobHov: $sliderColorBase; +$sliderColorKnob: $sliderColorBase; +$sliderColorKnobHov: pullForward($sliderColorKnob, $ltGamma); $sliderColorRangeValHovBg: rgba($sliderColorBase, 0.1); $sliderColorRangeValHovFg: $colorKeyFg; -$sliderKnobW: nth($ueTimeControlH,2)/2; +$sliderKnobW: 15px; +$sliderKnobR: 2px; $timeControllerToiLineColor: #00c2ff; $timeControllerToiLineColorHov: #fff; @@ -69,8 +70,10 @@ $colorCreateMenuText: $colorMenuFg; $colorCheck: $colorKey; $colorFormRequired: $colorAlt1; $colorFormValid: #33cc33; -$colorFormError: #cc0000; +$colorFormError: #990000; $colorFormInvalid: #ff3300; +$colorFormFieldErrorBg: $colorFormError; +$colorFormFieldErrorFg: rgba(#fff, 0.6); $colorFormLines: rgba(#fff, 0.1); $colorFormSectionHeader: rgba(#fff, 0.1); $colorInputBg: rgba(#000, 0.1); diff --git a/platform/commonUI/themes/snow/bundle.js b/platform/commonUI/themes/snow/bundle.js index d36b961e74..6dc8b5acc0 100644 --- a/platform/commonUI/themes/snow/bundle.js +++ b/platform/commonUI/themes/snow/bundle.js @@ -21,10 +21,10 @@ *****************************************************************************/ define([ - + 'legacyRegistry' ], function ( - + legacyRegistry ) { diff --git a/platform/commonUI/themes/snow/res/sass/_constants.scss b/platform/commonUI/themes/snow/res/sass/_constants.scss index 0d8430a7ec..f85b5c328f 100644 --- a/platform/commonUI/themes/snow/res/sass/_constants.scss +++ b/platform/commonUI/themes/snow/res/sass/_constants.scss @@ -32,11 +32,12 @@ $sliderColorBase: $colorKey; $sliderColorRangeHolder: rgba(black, 0.07); $sliderColorRange: rgba($sliderColorBase, 0.2); $sliderColorRangeHov: rgba($sliderColorBase, 0.4); -$sliderColorKnob: rgba($sliderColorBase, 0.5); +$sliderColorKnob: pushBack($sliderColorBase, 20%); $sliderColorKnobHov: rgba($sliderColorBase, 0.7); -$sliderColorRangeValHovBg: $sliderColorRange; //rgba($sliderColorBase, 0.1); +$sliderColorRangeValHovBg: $sliderColorRange; $sliderColorRangeValHovFg: $colorBodyFg; -$sliderKnobW: nth($ueTimeControlH,2)/2; +$sliderKnobW: 15px; +$sliderKnobR: 2px; $timeControllerToiLineColor: $colorBodyFg; $timeControllerToiLineColorHov: #0052b5; @@ -69,8 +70,10 @@ $colorCreateMenuText: $colorBodyFg; $colorCheck: $colorKey; $colorFormRequired: $colorKey; $colorFormValid: #33cc33; -$colorFormError: #cc0000; +$colorFormError: #990000; $colorFormInvalid: #ff2200; +$colorFormFieldErrorBg: $colorFormError; +$colorFormFieldErrorFg: rgba(#fff, 0.6); $colorFormLines: rgba(#000, 0.1); $colorFormSectionHeader: rgba(#000, 0.05); $colorInputBg: $colorGenBg; diff --git a/platform/containment/test/CapabilityTableSpec.js b/platform/containment/test/CapabilityTableSpec.js index 76fbd6ffcd..fe5a833f53 100644 --- a/platform/containment/test/CapabilityTableSpec.js +++ b/platform/containment/test/CapabilityTableSpec.js @@ -32,11 +32,11 @@ define( beforeEach(function () { mockTypeService = jasmine.createSpyObj( 'typeService', - [ 'listTypes' ] + ['listTypes'] ); mockCapabilityService = jasmine.createSpyObj( 'capabilityService', - [ 'getCapabilities' ] + ['getCapabilities'] ); // Both types can only contain b, let's say mockTypes = ['a', 'b'].map(function (type) { @@ -82,4 +82,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/containment/test/ComposeActionPolicySpec.js b/platform/containment/test/ComposeActionPolicySpec.js index 3678baac57..a6cf3cd3d4 100644 --- a/platform/containment/test/ComposeActionPolicySpec.js +++ b/platform/containment/test/ComposeActionPolicySpec.js @@ -36,7 +36,7 @@ define( mockInjector = jasmine.createSpyObj('$injector', ['get']); mockPolicyService = jasmine.createSpyObj( 'policyService', - [ 'allow' ] + ['allow'] ); mockTypes = ['a', 'b'].map(function (type) { var mockType = jasmine.createSpyObj('type-' + type, ['getKey']); @@ -90,4 +90,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/containment/test/CompositionMutabilityPolicySpec.js b/platform/containment/test/CompositionMutabilityPolicySpec.js index 06819c4043..18d26d2386 100644 --- a/platform/containment/test/CompositionMutabilityPolicySpec.js +++ b/platform/containment/test/CompositionMutabilityPolicySpec.js @@ -42,4 +42,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/containment/test/CompositionPolicySpec.js b/platform/containment/test/CompositionPolicySpec.js index 94997623ab..bd2d25ba58 100644 --- a/platform/containment/test/CompositionPolicySpec.js +++ b/platform/containment/test/CompositionPolicySpec.js @@ -34,11 +34,11 @@ define( mockInjector = jasmine.createSpyObj('$injector', ['get']); mockTypeService = jasmine.createSpyObj( 'typeService', - [ 'listTypes' ] + ['listTypes'] ); mockCapabilityService = jasmine.createSpyObj( 'capabilityService', - [ 'getCapabilities' ] + ['getCapabilities'] ); // Both types can only contain b, let's say mockTypes = ['a', 'b'].map(function (type) { @@ -82,4 +82,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/containment/test/ContainmentTableSpec.js b/platform/containment/test/ContainmentTableSpec.js index 64551c9439..ac45b75804 100644 --- a/platform/containment/test/ContainmentTableSpec.js +++ b/platform/containment/test/ContainmentTableSpec.js @@ -32,11 +32,11 @@ define( beforeEach(function () { mockTypeService = jasmine.createSpyObj( 'typeService', - [ 'listTypes' ] + ['listTypes'] ); mockCapabilityService = jasmine.createSpyObj( 'capabilityService', - [ 'getCapabilities' ] + ['getCapabilities'] ); // Both types can only contain b, let's say mockTypes = ['a', 'b', 'c'].map(function (type, index) { @@ -48,7 +48,7 @@ define( mockType.getDefinition.andReturn({ // First two contain objects with capability 'b'; // third one defines no containership rules - contains: (index < 2) ? [ { has: 'b' } ] : undefined + contains: (index < 2) ? [{ has: 'b' }] : undefined }); // Return a model to drive apparant capabilities mockType.getInitialModel.andReturn({ id: type }); @@ -93,4 +93,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/core/src/actions/ActionProvider.js b/platform/core/src/actions/ActionProvider.js index 4e3973186c..b0afd3e909 100644 --- a/platform/core/src/actions/ActionProvider.js +++ b/platform/core/src/actions/ActionProvider.js @@ -81,8 +81,8 @@ define( // additionally fills in the action's getMetadata method // with the extension definition (if no getMetadata // method was supplied.) - function instantiateAction(Action, context) { - var action = new Action(context), + function instantiateAction(Action, ctxt) { + var action = new Action(ctxt), metadata; // Provide a getMetadata method that echos @@ -90,7 +90,7 @@ define( // unless the action has defined its own. if (!action.getMetadata) { metadata = Object.create(Action.definition || {}); - metadata.context = context; + metadata.context = ctxt; action.getMetadata = function () { return metadata; }; @@ -103,14 +103,14 @@ define( // applicable in a given context, according to the static // appliesTo method of given actions (if defined), and // instantiate those applicable actions. - function createIfApplicable(actions, context) { + function createIfApplicable(actions, ctxt) { function isApplicable(Action) { - return Action.appliesTo ? Action.appliesTo(context) : true; + return Action.appliesTo ? Action.appliesTo(ctxt) : true; } function instantiate(Action) { try { - return instantiateAction(Action, context); + return instantiateAction(Action, ctxt); } catch (e) { $log.error([ "Could not instantiate action", diff --git a/platform/core/src/capabilities/CompositionCapability.js b/platform/core/src/capabilities/CompositionCapability.js index c2d08cdf26..598767a422 100644 --- a/platform/core/src/capabilities/CompositionCapability.js +++ b/platform/core/src/capabilities/CompositionCapability.js @@ -82,7 +82,7 @@ define( return mutationResult && self.invoke().then(findObject); } - function addIdToModel(model) { + function addIdToModel(objModel) { // Pick a specific index if needed. index = isNaN(index) ? composition.length : index; // Also, don't put past the end of the array @@ -90,11 +90,11 @@ define( // Remove the existing instance of the id if (oldIndex !== -1) { - model.composition.splice(oldIndex, 1); + objModel.composition.splice(oldIndex, 1); } // ...and add it back at the appropriate index. - model.composition.splice(index, 0, id); + objModel.composition.splice(index, 0, id); } // If no index has been specified already and the id is already diff --git a/platform/core/src/capabilities/ContextCapability.js b/platform/core/src/capabilities/ContextCapability.js index aaa298f093..72bfb56218 100644 --- a/platform/core/src/capabilities/ContextCapability.js +++ b/platform/core/src/capabilities/ContextCapability.js @@ -82,7 +82,7 @@ define( parentContext = parentObject && parentObject.getCapability('context'), parentPath = parentContext ? - parentContext.getPath() : [ this.parentObject ]; + parentContext.getPath() : [this.parentObject]; return parentPath.concat([this.domainObject]); }; diff --git a/platform/core/src/capabilities/CoreCapabilityProvider.js b/platform/core/src/capabilities/CoreCapabilityProvider.js index 27833630a2..7e5d1e4b7b 100644 --- a/platform/core/src/capabilities/CoreCapabilityProvider.js +++ b/platform/core/src/capabilities/CoreCapabilityProvider.js @@ -62,9 +62,9 @@ define( } // Package capabilities as key-value pairs - function packageCapabilities(capabilities) { + function packageCapabilities(caps) { var result = {}; - capabilities.forEach(function (capability) { + caps.forEach(function (capability) { if (capability.key) { result[capability.key] = result[capability.key] || capability; diff --git a/platform/core/src/capabilities/MutationCapability.js b/platform/core/src/capabilities/MutationCapability.js index ec448af17c..592f613438 100644 --- a/platform/core/src/capabilities/MutationCapability.js +++ b/platform/core/src/capabilities/MutationCapability.js @@ -124,9 +124,9 @@ define( clone = JSON.parse(JSON.stringify(model)), useTimestamp = arguments.length > 1; - function notifyListeners(model) { + function notifyListeners(newModel) { generalTopic.notify(domainObject); - specificTopic.notify(model); + specificTopic.notify(newModel); } // Function to handle copying values to the actual diff --git a/platform/core/src/capabilities/PersistenceCapability.js b/platform/core/src/capabilities/PersistenceCapability.js index 2f4f3cd53b..8e1990892d 100644 --- a/platform/core/src/capabilities/PersistenceCapability.js +++ b/platform/core/src/capabilities/PersistenceCapability.js @@ -69,18 +69,18 @@ define( * Checks if the value returned is falsey, and if so returns a * rejected promise */ - function rejectIfFalsey(value, $q){ - if (!value){ + function rejectIfFalsey(value, $q) { + if (!value) { return $q.reject("Error persisting object"); } else { return value; } } - function formatError(error){ + function formatError(error) { if (error && error.message) { return error.message; - } else if (error && typeof error === "string"){ + } else if (error && typeof error === "string") { return error; } else { return "unknown error"; @@ -91,7 +91,7 @@ define( * Display a notification message if an error has occurred during * persistence. */ - function notifyOnError(error, domainObject, notificationService, $q){ + function notifyOnError(error, domainObject, notificationService, $q) { var errorMessage = "Unable to persist " + domainObject.getModel().name; if (error) { errorMessage += ": " + formatError(error); @@ -124,8 +124,8 @@ define( this.persistenceService.createObject; // Update persistence timestamp... - domainObject.useCapability("mutation", function (model) { - model.persisted = modified; + domainObject.useCapability("mutation", function (m) { + m.persisted = modified; }, modified); // ...and persist @@ -133,9 +133,9 @@ define( this.getSpace(), getKey(domainObject.getId()), domainObject.getModel() - ]).then(function(result){ + ]).then(function (result) { return rejectIfFalsey(result, self.$q); - }).catch(function(error){ + }).catch(function (error) { return notifyOnError(error, domainObject, self.notificationService, self.$q); }); }; diff --git a/platform/core/src/models/PersistedModelProvider.js b/platform/core/src/models/PersistedModelProvider.js index 7a74ebb23a..cd6fde75c4 100644 --- a/platform/core/src/models/PersistedModelProvider.js +++ b/platform/core/src/models/PersistedModelProvider.js @@ -82,9 +82,9 @@ define( } // Package the result as id->model - function packageResult(parsedIds, models) { + function packageResult(parsedIdsToPackage, models) { var result = {}; - parsedIds.forEach(function (parsedId, index) { + parsedIdsToPackage.forEach(function (parsedId, index) { var id = parsedId.id; if (models[index]) { result[id] = models[index]; @@ -93,11 +93,11 @@ define( return result; } - function loadModels(parsedIds) { - return $q.all(parsedIds.map(loadModel)) + function loadModels(parsedIdsToLoad) { + return $q.all(parsedIdsToLoad.map(loadModel)) .then(function (models) { return packageResult( - parsedIds, + parsedIdsToLoad, models.map(addPersistedTimestamp) ); }); diff --git a/platform/core/src/models/RootModelProvider.js b/platform/core/src/models/RootModelProvider.js index 9c19726922..83c9636e37 100644 --- a/platform/core/src/models/RootModelProvider.js +++ b/platform/core/src/models/RootModelProvider.js @@ -46,7 +46,9 @@ define( */ function RootModelProvider(roots, $q, $log) { // Pull out identifiers to used as ROOT's - var ids = roots.map(function (root) { return root.id; }); + var ids = roots.map(function (root) { + return root.id; + }); // Assign an initial location to root models roots.forEach(function (root) { diff --git a/platform/core/src/types/MergeModels.js b/platform/core/src/types/MergeModels.js index be9a6ebab8..a33c6dba40 100644 --- a/platform/core/src/types/MergeModels.js +++ b/platform/core/src/types/MergeModels.js @@ -58,14 +58,14 @@ define( * corresponding keys in the recursive step. * * - * @param a the first object to be merged - * @param b the second object to be merged + * @param modelA the first object to be merged + * @param modelB the second object to be merged * @param merger the merger, as described above - * @returns {*} the result of merging `a` and `b` + * @returns {*} the result of merging `modelA` and `modelB` * @constructor * @memberof platform/core */ - function mergeModels(a, b, merger) { + function mergeModels(modelA, modelB, merger) { var mergeFunction; function mergeArrays(a, b) { @@ -93,11 +93,11 @@ define( } mergeFunction = (merger && Function.isFunction(merger)) ? merger : - (Array.isArray(a) && Array.isArray(b)) ? mergeArrays : - (a instanceof Object && b instanceof Object) ? mergeObjects : + (Array.isArray(modelA) && Array.isArray(modelB)) ? mergeArrays : + (modelA instanceof Object && modelB instanceof Object) ? mergeObjects : mergeOther; - return mergeFunction(a, b); + return mergeFunction(modelA, modelB); } return mergeModels; diff --git a/platform/core/src/types/TypePropertyConversion.js b/platform/core/src/types/TypePropertyConversion.js index 3608b0ed5f..e2d1cea984 100644 --- a/platform/core/src/types/TypePropertyConversion.js +++ b/platform/core/src/types/TypePropertyConversion.js @@ -33,8 +33,12 @@ define( } }, identity: { - toModelValue: function (v) { return v; }, - toFormValue: function (v) { return v; } + toModelValue: function (v) { + return v; + }, + toFormValue: function (v) { + return v; + } } }, ARRAY_SUFFIX = '[]'; diff --git a/platform/core/src/types/TypeProvider.js b/platform/core/src/types/TypeProvider.js index d45852bb68..b30efce0d9 100644 --- a/platform/core/src/types/TypeProvider.js +++ b/platform/core/src/types/TypeProvider.js @@ -159,8 +159,8 @@ define( } function lookupTypeDef(typeKey) { - function buildTypeDef(typeKey) { - var typeDefs = typeDefinitions[typeKey] || [], + function buildTypeDef(typeKeyToBuild) { + var typeDefs = typeDefinitions[typeKeyToBuild] || [], inherits = typeDefs.map(function (typeDef) { return asArray(typeDef.inherits || []); }).reduce(function (a, b) { @@ -175,11 +175,11 @@ define( // Always provide a default name def.model = def.model || {}; def.model.name = def.model.name || - ("Unnamed " + (def.name || "Object")); + ("Unnamed " + (def.name || "Object")); return def; } - + return (self.typeMap[typeKey] = self.typeMap[typeKey] || buildTypeDef(typeKey)); } diff --git a/platform/core/src/views/ViewProvider.js b/platform/core/src/views/ViewProvider.js index 6ee1ccb4c4..7af298c7e8 100644 --- a/platform/core/src/views/ViewProvider.js +++ b/platform/core/src/views/ViewProvider.js @@ -105,15 +105,15 @@ define( // Check if an object has all capabilities designated as `needs` // for a view. Exposing a capability via delegation is taken to // satisfy this filter if `allowDelegation` is true. - function capabilitiesMatch(domainObject, capabilities, allowDelegation) { - var delegation = domainObject.getCapability("delegation"); + function capabilitiesMatch(domainObj, capabilities, allowDelegation) { + var delegation = domainObj.getCapability("delegation"); allowDelegation = allowDelegation && (delegation !== undefined); // Check if an object has (or delegates, if allowed) a // capability. function hasCapability(c) { - return domainObject.hasCapability(c) || + return domainObj.hasCapability(c) || (allowDelegation && delegation.doesDelegateCapability(c)); } @@ -128,13 +128,13 @@ define( // Check if a view and domain object type can be paired; // both can restrict the others they accept. - function viewMatchesType(view, type) { - var views = type && (type.getDefinition() || {}).views, + function viewMatchesType(view, objType) { + var views = objType && (objType.getDefinition() || {}).views, matches = true; // View is restricted to a certain type if (view.type) { - matches = matches && type && type.instanceOf(view.type); + matches = matches && objType && objType.instanceOf(view.type); } // Type wishes to restrict its specific views diff --git a/platform/core/test/actions/ActionAggregatorSpec.js b/platform/core/test/actions/ActionAggregatorSpec.js index 2b1e4adb81..09dddff5af 100644 --- a/platform/core/test/actions/ActionAggregatorSpec.js +++ b/platform/core/test/actions/ActionAggregatorSpec.js @@ -32,7 +32,7 @@ define( aggregator; function createMockActionProvider(actions, i) { - var spy = jasmine.createSpyObj("agg" + i, [ "getActions" ]); + var spy = jasmine.createSpyObj("agg" + i, ["getActions"]); spy.getActions.andReturn(actions); return spy; } @@ -69,4 +69,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/core/test/actions/ActionCapabilitySpec.js b/platform/core/test/actions/ActionCapabilitySpec.js index 0c564b0710..dd83a88082 100644 --- a/platform/core/test/actions/ActionCapabilitySpec.js +++ b/platform/core/test/actions/ActionCapabilitySpec.js @@ -37,19 +37,19 @@ define( beforeEach(function () { mockAction = jasmine.createSpyObj( "action", - [ "perform", "getMetadata" ] + ["perform", "getMetadata"] ); mockActionService = jasmine.createSpyObj( "actionService", - [ "getActions" ] + ["getActions"] ); mockQ = jasmine.createSpyObj( "$q", - [ "when" ] + ["when"] ); mockDomainObject = jasmine.createSpyObj( "domainObject", - [ "getId", "getModel", "getCapability", "hasCapability", "useCapability" ] + ["getId", "getModel", "getCapability", "hasCapability", "useCapability"] ); mockActionService.getActions.andReturn([mockAction, {}]); @@ -76,7 +76,7 @@ define( }); it("promises the result of performed actions", function () { - var mockPromise = jasmine.createSpyObj("promise", [ "then" ]); + var mockPromise = jasmine.createSpyObj("promise", ["then"]); mockQ.when.andReturn(mockPromise); mockAction.perform.andReturn("the action's result"); diff --git a/platform/core/test/actions/ActionProviderSpec.js b/platform/core/test/actions/ActionProviderSpec.js index 5740196b98..dce95dd1e5 100644 --- a/platform/core/test/actions/ActionProviderSpec.js +++ b/platform/core/test/actions/ActionProviderSpec.js @@ -33,29 +33,41 @@ define( actionProvider; function SimpleAction() { - return { perform: function () { return "simple"; } }; + return { perform: function () { + return "simple"; + } }; } function CategorizedAction() { - return { perform: function () { return "categorized"; } }; + return { perform: function () { + return "categorized"; + } }; } CategorizedAction.category = "someCategory"; function KeyedAction() { - return { perform: function () { return "keyed"; } }; + return { perform: function () { + return "keyed"; + } }; } KeyedAction.key = "someKey"; function CategorizedKeyedAction() { - return { perform: function () { return "both"; } }; + return { perform: function () { + return "both"; + } }; } CategorizedKeyedAction.key = "someKey"; CategorizedKeyedAction.category = "someCategory"; function MetadataAction() { return { - perform: function () { return "metadata"; }, - getMetadata: function () { return "custom metadata"; } + perform: function () { + return "metadata"; + }, + getMetadata: function () { + return "custom metadata"; + } }; } MetadataAction.key = "metadata"; @@ -152,7 +164,7 @@ define( } provided = new ActionProvider( - [ SimpleAction, BadAction ], + [SimpleAction, BadAction], mockLog ).getActions(); }); diff --git a/platform/core/test/actions/LoggingActionDecoratorSpec.js b/platform/core/test/actions/LoggingActionDecoratorSpec.js index e46b6aecdc..3e0e9b98e9 100644 --- a/platform/core/test/actions/LoggingActionDecoratorSpec.js +++ b/platform/core/test/actions/LoggingActionDecoratorSpec.js @@ -36,15 +36,15 @@ define( beforeEach(function () { mockAction = jasmine.createSpyObj( "action", - [ "perform", "getMetadata" ] + ["perform", "getMetadata"] ); mockActionService = jasmine.createSpyObj( "actionService", - [ "getActions" ] + ["getActions"] ); mockLog = jasmine.createSpyObj( "$log", - [ "error", "warn", "info", "debug" ] + ["error", "warn", "info", "debug"] ); mockActionService.getActions.andReturn([mockAction]); @@ -70,4 +70,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/core/test/capabilities/CompositionCapabilitySpec.js b/platform/core/test/capabilities/CompositionCapabilitySpec.js index 0b6d184ffd..ca0410123e 100644 --- a/platform/core/test/capabilities/CompositionCapabilitySpec.js +++ b/platform/core/test/capabilities/CompositionCapabilitySpec.js @@ -64,7 +64,7 @@ define( mockObjectService = jasmine.createSpyObj( "objectService", - [ "getObjects" ] + ["getObjects"] ); mockInjector = { @@ -97,7 +97,7 @@ define( }); it("requests ids found in model's composition from the object service", function () { - var ids = [ "a", "b", "c", "xyz" ]; + var ids = ["a", "b", "c", "xyz"]; mockDomainObject.getModel.andReturn({ composition: ids }); @@ -114,7 +114,9 @@ define( mockObjectService.getObjects.andReturn(mockPromise({x: mockChild})); mockChild.getCapability.andReturn(undefined); - composition.invoke().then(function (c) { result = c; }); + composition.invoke().then(function (c) { + result = c; + }); // Should have been added by a wrapper expect(result[0].getCapability('context')).toBeDefined(); @@ -153,7 +155,7 @@ define( it("does not re-add IDs which are already present", function () { var result, - testModel = { composition: [ 'a' ] }, + testModel = { composition: ['a'] }, mockChild = jasmine.createSpyObj("child", DOMAIN_OBJECT_METHODS); mockDomainObject.getModel.andReturn(testModel); @@ -184,7 +186,7 @@ define( it("can add objects at a specified index", function () { var result, - testModel = { composition: [ 'a', 'b', 'c' ] }, + testModel = { composition: ['a', 'b', 'c'] }, mockChild = jasmine.createSpyObj("child", DOMAIN_OBJECT_METHODS); mockDomainObject.getModel.andReturn(testModel); diff --git a/platform/core/test/capabilities/ContextCapabilitySpec.js b/platform/core/test/capabilities/ContextCapabilitySpec.js index 21a71e37f0..08e5ff952b 100644 --- a/platform/core/test/capabilities/ContextCapabilitySpec.js +++ b/platform/core/test/capabilities/ContextCapabilitySpec.js @@ -46,7 +46,7 @@ define( mockDomainObject = jasmine.createSpyObj("domainObject", DOMAIN_OBJECT_METHODS); mockParent = jasmine.createSpyObj("parent", DOMAIN_OBJECT_METHODS); mockGrandparent = jasmine.createSpyObj("grandparent", DOMAIN_OBJECT_METHODS); - mockContext = jasmine.createSpyObj("context", [ "getParent", "getRoot", "getPath" ]); + mockContext = jasmine.createSpyObj("context", ["getParent", "getRoot", "getPath"]); mockParent.getCapability.andReturn(mockContext); mockContext.getParent.andReturn(mockGrandparent); @@ -77,4 +77,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/core/test/capabilities/ContextualDomainObjectSpec.js b/platform/core/test/capabilities/ContextualDomainObjectSpec.js index 99b1f2a615..00b9e63746 100644 --- a/platform/core/test/capabilities/ContextualDomainObjectSpec.js +++ b/platform/core/test/capabilities/ContextualDomainObjectSpec.js @@ -79,4 +79,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/core/test/capabilities/CoreCapabilityProviderSpec.js b/platform/core/test/capabilities/CoreCapabilityProviderSpec.js index 6f904fa73b..55ec9ca303 100644 --- a/platform/core/test/capabilities/CoreCapabilityProviderSpec.js +++ b/platform/core/test/capabilities/CoreCapabilityProviderSpec.js @@ -31,16 +31,22 @@ define( var mockLog, provider; - function BasicCapability() { return; } + function BasicCapability() { + return; + } BasicCapability.key = "basic"; - function ApplicableCapability() { return; } + function ApplicableCapability() { + return; + } ApplicableCapability.key = "applicable"; ApplicableCapability.appliesTo = function (model) { return !model.isNotApplicable; }; - function KeylessCapability() { return; } + function KeylessCapability() { + return; + } beforeEach(function () { mockLog = jasmine.createSpyObj( diff --git a/platform/core/test/capabilities/DelegationCapabilitySpec.js b/platform/core/test/capabilities/DelegationCapabilitySpec.js index a529a54491..b803b64861 100644 --- a/platform/core/test/capabilities/DelegationCapabilitySpec.js +++ b/platform/core/test/capabilities/DelegationCapabilitySpec.js @@ -36,7 +36,11 @@ define( object = {}, delegation; - function capture(k) { return function (v) { captured[k] = v; }; } + function capture(k) { + return function (v) { + captured[k] = v; + }; + } function TestDomainObject(caps, id) { return { getId: function () { @@ -67,12 +71,16 @@ define( beforeEach(function () { captured = {}; typeDef = {}; - typeDef.delegates = [ "foo" ]; - type = { getDefinition: function () { return typeDef; } }; + typeDef.delegates = ["foo"]; + type = { getDefinition: function () { + return typeDef; + } }; children = []; capabilities = { type: type, - composition: { invoke: function () { return mockPromise(children); } } + composition: { invoke: function () { + return mockPromise(children); + } } }; object = new TestDomainObject(capabilities); @@ -95,4 +103,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/core/test/capabilities/InstantiationCapabilitySpec.js b/platform/core/test/capabilities/InstantiationCapabilitySpec.js index ec8cd88d3a..b65f26f368 100644 --- a/platform/core/test/capabilities/InstantiationCapabilitySpec.js +++ b/platform/core/test/capabilities/InstantiationCapabilitySpec.js @@ -38,15 +38,15 @@ define( mockInstantiate = jasmine.createSpy("instantiate"); mockIdentifierService = jasmine.createSpyObj( 'identifierService', - [ 'parse', 'generate' ] + ['parse', 'generate'] ); mockIdentifier = jasmine.createSpyObj( 'identifier', - [ 'getSpace', 'getKey', 'getDefinedSpace' ] + ['getSpace', 'getKey', 'getDefinedSpace'] ); mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getId', 'getCapability', 'getModel' ] + ['getId', 'getCapability', 'getModel'] ); mockInjector.get.andCallFake(function (key) { @@ -73,16 +73,16 @@ define( }); it("uses the instantiate service to create domain objects", function () { - var mockDomainObject = jasmine.createSpyObj('domainObject', [ + var mockDomainObj = jasmine.createSpyObj('domainObject', [ 'getId', 'getModel', 'getCapability', 'useCapability', 'hasCapability' ]), testModel = { someKey: "some value" }; - mockInstantiate.andReturn(mockDomainObject); + mockInstantiate.andReturn(mockDomainObj); expect(instantiation.instantiate(testModel)) - .toBe(mockDomainObject); + .toBe(mockDomainObj); expect(mockInstantiate) .toHaveBeenCalledWith({ someKey: "some value", diff --git a/platform/core/test/capabilities/MutationCapabilitySpec.js b/platform/core/test/capabilities/MutationCapabilitySpec.js index bb6070b154..d84a2edec1 100644 --- a/platform/core/test/capabilities/MutationCapabilitySpec.js +++ b/platform/core/test/capabilities/MutationCapabilitySpec.js @@ -35,8 +35,12 @@ define( topic, mockNow, domainObject = { - getId: function () { return "test-id"; }, - getModel: function () { return testModel; } + getId: function () { + return "test-id"; + }, + getModel: function () { + return testModel; + } }, mutation; diff --git a/platform/core/test/capabilities/PersistenceCapabilitySpec.js b/platform/core/test/capabilities/PersistenceCapabilitySpec.js index d2bafd26e6..ca37936735 100644 --- a/platform/core/test/capabilities/PersistenceCapabilitySpec.js +++ b/platform/core/test/capabilities/PersistenceCapabilitySpec.js @@ -46,10 +46,10 @@ define( then: function (callback) { return asPromise(callback(value)); }, - catch: function(callback) { + catch: function (callback) { //Define a default 'happy' catch, that skips over the // catch callback - return doCatch ? asPromise(callback(value)): asPromise(value); + return doCatch ? asPromise(callback(value)) : asPromise(value); } }; } @@ -60,16 +60,16 @@ define( mockPersistenceService = jasmine.createSpyObj( "persistenceService", - [ "updateObject", "readObject", "createObject", "deleteObject" ] + ["updateObject", "readObject", "createObject", "deleteObject"] ); mockIdentifierService = jasmine.createSpyObj( 'identifierService', - [ 'parse', 'generate' ] + ['parse', 'generate'] ); mockIdentifier = jasmine.createSpyObj( 'identifier', - [ 'getSpace', 'getKey', 'getDefinedSpace' ] + ['getSpace', 'getKey', 'getDefinedSpace'] ); mockQ = jasmine.createSpyObj( "$q", @@ -81,12 +81,16 @@ define( ); mockCacheService = jasmine.createSpyObj( "cacheService", - [ "get", "put", "remove", "all" ] + ["get", "put", "remove", "all"] ); mockDomainObject = { - getId: function () { return id; }, - getModel: function () { return model; }, + getId: function () { + return id; + }, + getModel: function () { + return model; + }, useCapability: jasmine.createSpy() }; // Simulate mutation capability @@ -107,7 +111,7 @@ define( ); }); - describe("successful persistence", function() { + describe("successful persistence", function () { beforeEach(function () { mockPersistenceService.updateObject.andReturn(happyPromise); mockPersistenceService.createObject.andReturn(happyPromise); @@ -163,9 +167,9 @@ define( }); }); - describe("unsuccessful persistence", function() { + describe("unsuccessful persistence", function () { var sadPromise = { - then: function(callback){ + then: function (callback) { return asPromise(callback(0), true); } }; diff --git a/platform/core/test/capabilities/RelationshipCapabilitySpec.js b/platform/core/test/capabilities/RelationshipCapabilitySpec.js index 6b69a9b615..4e2b8f9cc8 100644 --- a/platform/core/test/capabilities/RelationshipCapabilitySpec.js +++ b/platform/core/test/capabilities/RelationshipCapabilitySpec.js @@ -60,7 +60,7 @@ define( mockObjectService = jasmine.createSpyObj( "objectService", - [ "getObjects" ] + ["getObjects"] ); mockInjector = { @@ -85,7 +85,7 @@ define( }); it("requests ids found in model's composition from the object service", function () { - var ids = [ "a", "b", "c", "xyz" ]; + var ids = ["a", "b", "c", "xyz"]; mockDomainObject.getModel.andReturn({ relationships: { xyz: ids } }); @@ -96,7 +96,7 @@ define( it("provides a list of relationship types", function () { mockDomainObject.getModel.andReturn({ relationships: { - abc: [ 'a', 'b' ], + abc: ['a', 'b'], def: "not an array, should be ignored", xyz: [] } }); @@ -139,4 +139,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/core/test/models/CachingModelDecoratorSpec.js b/platform/core/test/models/CachingModelDecoratorSpec.js index ec7a4dd32d..73a0957b28 100644 --- a/platform/core/test/models/CachingModelDecoratorSpec.js +++ b/platform/core/test/models/CachingModelDecoratorSpec.js @@ -99,7 +99,7 @@ define( }); it("ensures a single object instance, even for multiple concurrent calls", function () { - var promiseA, promiseB, mockCallback = jasmine.createSpy(); + var promiseA, promiseB; promiseA = fakePromise(); promiseB = fakePromise(); @@ -126,7 +126,7 @@ define( }); it("is robust against updating with undefined values", function () { - var promiseA, promiseB, mockCallback = jasmine.createSpy(); + var promiseA, promiseB; promiseA = fakePromise(); promiseB = fakePromise(); diff --git a/platform/core/test/models/MissingModelDecoratorSpec.js b/platform/core/test/models/MissingModelDecoratorSpec.js index df18bd0c49..20d64f40ae 100644 --- a/platform/core/test/models/MissingModelDecoratorSpec.js +++ b/platform/core/test/models/MissingModelDecoratorSpec.js @@ -40,7 +40,7 @@ define( beforeEach(function () { mockModelService = jasmine.createSpyObj( "modelService", - [ "getModels" ] + ["getModels"] ); testModels = { @@ -61,14 +61,18 @@ define( it("provides models for any IDs which are missing", function () { var models; decorator.getModels(['testId', 'otherId']) - .then(function (m) { models = m; }); + .then(function (m) { + models = m; + }); expect(models.otherId).toBeDefined(); }); it("does not overwrite existing models", function () { var models; decorator.getModels(['testId', 'otherId']) - .then(function (m) { models = m; }); + .then(function (m) { + models = m; + }); expect(models.testId).toEqual({ someKey: "some value" }); }); diff --git a/platform/core/test/models/ModelAggregatorSpec.js b/platform/core/test/models/ModelAggregatorSpec.js index 3fc816d6db..2f5f13c053 100644 --- a/platform/core/test/models/ModelAggregatorSpec.js +++ b/platform/core/test/models/ModelAggregatorSpec.js @@ -37,18 +37,20 @@ define( aggregator; beforeEach(function () { - mockQ = jasmine.createSpyObj("$q", [ "all" ]); + mockQ = jasmine.createSpyObj("$q", ["all"]); mockProviders = modelList.map(function (models, i) { var mockProvider = jasmine.createSpyObj( "mockProvider" + i, - [ "getModels" ] + ["getModels"] ); mockProvider.getModels.andReturn(models); return mockProvider; }); mockQ.all.andReturn({ - then: function (c) { return c(modelList); } + then: function (c) { + return c(modelList); + } }); aggregator = new ModelAggregator(mockQ, mockProviders); @@ -72,4 +74,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/core/test/models/ModelCacheServiceSpec.js b/platform/core/test/models/ModelCacheServiceSpec.js index 23d1a0ce0d..97e84fa918 100644 --- a/platform/core/test/models/ModelCacheServiceSpec.js +++ b/platform/core/test/models/ModelCacheServiceSpec.js @@ -27,7 +27,7 @@ define(['../../src/models/ModelCacheService'], function (ModelCacheService) { cacheService; beforeEach(function () { - testIds = [ 'a', 'b', 'c', 'd' ]; + testIds = ['a', 'b', 'c', 'd']; testModels = testIds.reduce(function (models, id) { models[id] = { someKey: "some value for " + id }; return models; diff --git a/platform/core/test/models/RootModelProviderSpec.js b/platform/core/test/models/RootModelProviderSpec.js index aab4477b61..a3b667b963 100644 --- a/platform/core/test/models/RootModelProviderSpec.js +++ b/platform/core/test/models/RootModelProviderSpec.js @@ -57,7 +57,9 @@ define( }; } - function capture(value) { captured = value; } + function capture(value) { + captured = value; + } beforeEach(function () { diff --git a/platform/core/test/models/StaticModelProviderSpec.js b/platform/core/test/models/StaticModelProviderSpec.js index 7d7f518eff..c4073c8d55 100644 --- a/platform/core/test/models/StaticModelProviderSpec.js +++ b/platform/core/test/models/StaticModelProviderSpec.js @@ -55,7 +55,9 @@ define( }); it("provides models from extension declarations", function () { - var mockPromise = { then: function () { return; } }; + var mockPromise = { then: function () { + return; + } }; mockQ.when.andReturn(mockPromise); // Verify that we got the promise as the return value @@ -97,4 +99,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/core/test/objects/DomainObjectProviderSpec.js b/platform/core/test/objects/DomainObjectProviderSpec.js index 6da0d122b5..c8450551f4 100644 --- a/platform/core/test/objects/DomainObjectProviderSpec.js +++ b/platform/core/test/objects/DomainObjectProviderSpec.js @@ -49,7 +49,7 @@ define( beforeEach(function () { mockModelService = jasmine.createSpyObj( "modelService", - [ "getModels" ] + ["getModels"] ); mockInstantiate = jasmine.createSpy("instantiate"); @@ -64,7 +64,7 @@ define( }); it("requests models from the model service", function () { - var ids = [ "a", "b", "c" ]; + var ids = ["a", "b", "c"]; mockModelService.getModels.andReturn(mockPromise({})); provider.getObjects(ids); expect(mockModelService.getModels).toHaveBeenCalledWith(ids); @@ -72,7 +72,7 @@ define( it("instantiates objects with provided models", function () { - var ids = [ "a", "b", "c"], + var ids = ["a", "b", "c"], model = { someKey: "some value"}, result; mockModelService.getModels.andReturn(mockPromise({ a: model })); diff --git a/platform/core/test/objects/DomainObjectSpec.js b/platform/core/test/objects/DomainObjectSpec.js index 47dda4537d..de5f9a8841 100644 --- a/platform/core/test/objects/DomainObjectSpec.js +++ b/platform/core/test/objects/DomainObjectSpec.js @@ -84,4 +84,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/core/test/services/ContextualizeSpec.js b/platform/core/test/services/ContextualizeSpec.js index 583c812a30..e814033f9f 100644 --- a/platform/core/test/services/ContextualizeSpec.js +++ b/platform/core/test/services/ContextualizeSpec.js @@ -44,7 +44,7 @@ define( mockLog = jasmine.createSpyObj( "$log", - [ "error", "warn", "info", "debug" ] + ["error", "warn", "info", "debug"] ); mockDomainObject = diff --git a/platform/core/test/services/InstantiateSpec.js b/platform/core/test/services/InstantiateSpec.js index a9529c94b6..e1993060f3 100644 --- a/platform/core/test/services/InstantiateSpec.js +++ b/platform/core/test/services/InstantiateSpec.js @@ -45,7 +45,7 @@ define( ); mockIdentifierService = jasmine.createSpyObj( 'identifierService', - [ 'parse', 'generate' ] + ['parse', 'generate'] ); mockCapabilityConstructor = jasmine.createSpy('capability'); mockCapabilityInstance = {}; @@ -61,7 +61,7 @@ define( mockCacheService = jasmine.createSpyObj( 'cacheService', - [ 'get', 'put', 'remove', 'all' ] + ['get', 'put', 'remove', 'all'] ); testModel = { someKey: "some value" }; diff --git a/platform/core/test/services/NowSpec.js b/platform/core/test/services/NowSpec.js index e0da8a60f6..cb122acf78 100644 --- a/platform/core/test/services/NowSpec.js +++ b/platform/core/test/services/NowSpec.js @@ -44,4 +44,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/core/test/services/TopicSpec.js b/platform/core/test/services/TopicSpec.js index cf0b2d42b2..d683f36c6c 100644 --- a/platform/core/test/services/TopicSpec.js +++ b/platform/core/test/services/TopicSpec.js @@ -34,7 +34,7 @@ define( testMessage = { someKey: "some value"}; mockLog = jasmine.createSpyObj( '$log', - [ 'error', 'warn', 'info', 'debug' ] + ['error', 'warn', 'info', 'debug'] ); mockCallback = jasmine.createSpy('callback'); topic = new Topic(mockLog); diff --git a/platform/core/test/types/MergeModelsSpec.js b/platform/core/test/types/MergeModelsSpec.js index 3633848f68..026c263c9a 100644 --- a/platform/core/test/types/MergeModelsSpec.js +++ b/platform/core/test/types/MergeModelsSpec.js @@ -32,32 +32,32 @@ define( expect(mergeModels( { "a": "property a", - "b": [ 1, 2, 3 ], + "b": [1, 2, 3], "c": { x: 42, - z: [ 0 ] + z: [0] }, "d": "should be ignored" }, { - "b": [ 4 ], + "b": [4], "c": { y: "property y", - z: [ "h" ] + z: ["h"] }, "d": "property d" } )).toEqual({ "a": "property a", - "b": [ 1, 2, 3, 4 ], + "b": [1, 2, 3, 4], "c": { x: 42, y: "property y", - z: [ 0, "h" ] + z: [0, "h"] }, "d": "property d" }); }); }); } -); \ No newline at end of file +); diff --git a/platform/core/test/types/TypeCapabilitySpec.js b/platform/core/test/types/TypeCapabilitySpec.js index 2b5281fb3f..03a7ac4adb 100644 --- a/platform/core/test/types/TypeCapabilitySpec.js +++ b/platform/core/test/types/TypeCapabilitySpec.js @@ -36,11 +36,11 @@ define( beforeEach(function () { mockTypeService = jasmine.createSpyObj( "typeService", - [ "getType" ] + ["getType"] ); mockDomainObject = jasmine.createSpyObj( "domainObject", - [ "getId", "getModel", "getCapability" ] + ["getId", "getModel", "getCapability"] ); mockType = { someKey: "some value" }; @@ -57,4 +57,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/core/test/types/TypeImplSpec.js b/platform/core/test/types/TypeImplSpec.js index 3f95b5a8eb..9f911de157 100644 --- a/platform/core/test/types/TypeImplSpec.js +++ b/platform/core/test/types/TypeImplSpec.js @@ -36,7 +36,7 @@ define( glyph: 't', inherits: ['test-parent-1', 'test-parent-2'], features: ['test-feature-1'], - properties: [ {} ], + properties: [{}], model: {someKey: "some value"} }; type = new TypeImpl(testTypeDef); @@ -74,10 +74,14 @@ define( it("supports instance-of checks by type object", function () { expect(type.instanceOf({ - getKey: function () { return 'test-parent-1'; } + getKey: function () { + return 'test-parent-1'; + } })).toBeTruthy(); expect(type.instanceOf({ - getKey: function () { return 'some-other-type'; } + getKey: function () { + return 'some-other-type'; + } })).toBeFalsy(); }); @@ -110,4 +114,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/core/test/types/TypePropertyConversionSpec.js b/platform/core/test/types/TypePropertyConversionSpec.js index b888d25552..280134dd86 100644 --- a/platform/core/test/types/TypePropertyConversionSpec.js +++ b/platform/core/test/types/TypePropertyConversionSpec.js @@ -28,7 +28,7 @@ define( it("allows non-conversion when parameter is 'identity'", function () { var conversion = new TypePropertyConversion("identity"); - [ 42, "42", { a: 42 } ].forEach(function (v) { + [42, "42", { a: 42 }].forEach(function (v) { expect(conversion.toFormValue(v)).toBe(v); expect(conversion.toModelValue(v)).toBe(v); }); @@ -61,4 +61,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/core/test/types/TypePropertySpec.js b/platform/core/test/types/TypePropertySpec.js index 57b77c90d6..c4cdedeb42 100644 --- a/platform/core/test/types/TypePropertySpec.js +++ b/platform/core/test/types/TypePropertySpec.js @@ -57,7 +57,7 @@ define( it("sets properties by path", function () { var definition = { key: "someKey", - property: [ "some", "property" ] + property: ["some", "property"] }, model = {}, property = new TypeProperty(definition); @@ -68,7 +68,7 @@ define( it("gets properties by path", function () { var definition = { key: "someKey", - property: [ "some", "property" ] + property: ["some", "property"] }, model = { some: { property: "some value" } }, property = new TypeProperty(definition); @@ -78,7 +78,7 @@ define( it("stops looking for properties when a path is invalid", function () { var definition = { key: "someKey", - property: [ "some", "property" ] + property: ["some", "property"] }, property = new TypeProperty(definition); expect(property.getValue(undefined)).toBeUndefined(); @@ -97,7 +97,7 @@ define( it("provides empty arrays for values that are array-like", function () { var definition = { property: "someProperty", - items: [ {}, {}, {} ] + items: [{}, {}, {}] }, model = {}, property = new TypeProperty(definition); @@ -108,7 +108,7 @@ define( it("detects and ignores empty arrays on setValue", function () { var definition = { property: "someProperty", - items: [ {}, {}, {} ] + items: [{}, {}, {}] }, model = {}, property = new TypeProperty(definition); @@ -123,4 +123,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/core/test/types/TypeProviderSpec.js b/platform/core/test/types/TypeProviderSpec.js index d876c9fa08..4d2a359e33 100644 --- a/platform/core/test/types/TypeProviderSpec.js +++ b/platform/core/test/types/TypeProviderSpec.js @@ -146,4 +146,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/core/test/views/ViewCapabilitySpec.js b/platform/core/test/views/ViewCapabilitySpec.js index ec59a5bf17..b4e3b64c2a 100644 --- a/platform/core/test/views/ViewCapabilitySpec.js +++ b/platform/core/test/views/ViewCapabilitySpec.js @@ -30,17 +30,17 @@ define( describe("A view capability", function () { var mockViewService, mockDomainObject, - views = [ {key: "someView"} ], + views = [{key: "someView"}], view; beforeEach(function () { mockViewService = jasmine.createSpyObj( "viewService", - [ "getViews" ] + ["getViews"] ); mockDomainObject = jasmine.createSpyObj( "domainObject", - [ "getId", "getModel", "getCapability" ] + ["getId", "getModel", "getCapability"] ); mockViewService.getViews.andReturn(views); view = new ViewCapability(mockViewService, mockDomainObject); @@ -55,4 +55,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/core/test/views/ViewProviderSpec.js b/platform/core/test/views/ViewProviderSpec.js index 0029527bbb..6d725708da 100644 --- a/platform/core/test/views/ViewProviderSpec.js +++ b/platform/core/test/views/ViewProviderSpec.js @@ -33,11 +33,11 @@ define( }, viewB = { key: "b", - needs: [ "someCapability" ] + needs: ["someCapability"] }, viewC = { key: "c", - needs: [ "someCapability" ], + needs: ["someCapability"], delegation: true }, capabilities = {}, @@ -109,7 +109,7 @@ define( it("restricts typed views to matching types", function () { var testType = "testType", testView = { key: "x", type: testType }, - provider = new ViewProvider([testView], mockLog); + viewProvider = new ViewProvider([testView], mockLog); // Include a "type" capability capabilities.type = jasmine.createSpyObj( @@ -120,21 +120,21 @@ define( // Should be included when types match capabilities.type.instanceOf.andReturn(true); - expect(provider.getViews(mockDomainObject)) + expect(viewProvider.getViews(mockDomainObject)) .toEqual([testView]); expect(capabilities.type.instanceOf) .toHaveBeenCalledWith(testType); // ...but not when they don't capabilities.type.instanceOf.andReturn(false); - expect(provider.getViews(mockDomainObject)) + expect(viewProvider.getViews(mockDomainObject)) .toEqual([]); }); it("enforces view restrictions from types", function () { var testView = { key: "x" }, - provider = new ViewProvider([testView], mockLog); + viewProvider = new ViewProvider([testView], mockLog); // Include a "type" capability capabilities.type = jasmine.createSpyObj( @@ -146,16 +146,16 @@ define( // Should be included when view keys match capabilities.type.getDefinition .andReturn({ views: [testView.key]}); - expect(provider.getViews(mockDomainObject)) + expect(viewProvider.getViews(mockDomainObject)) .toEqual([testView]); // ...but not when they don't capabilities.type.getDefinition .andReturn({ views: ["somethingElse"]}); - expect(provider.getViews(mockDomainObject)) + expect(viewProvider.getViews(mockDomainObject)) .toEqual([]); }); }); } -); \ No newline at end of file +); diff --git a/platform/entanglement/src/actions/AbstractComposeAction.js b/platform/entanglement/src/actions/AbstractComposeAction.js index 25c9fbabf5..e81ee4361c 100644 --- a/platform/entanglement/src/actions/AbstractComposeAction.js +++ b/platform/entanglement/src/actions/AbstractComposeAction.js @@ -126,11 +126,11 @@ define( label = this.verb + " To"; - validateLocation = function (newParent) { + validateLocation = function (newParentObj) { var newContext = self.cloneContext(); newContext.selectedObject = object; - newContext.domainObject = newParent; - return composeService.validate(object, newParent) && + newContext.domainObject = newParentObj; + return composeService.validate(object, newParentObj) && self.policyService.allow("action", self, newContext); }; @@ -139,8 +139,8 @@ define( label, validateLocation, currentParent - ).then(function (newParent) { - return composeService.perform(object, newParent); + ).then(function (newParentObj) { + return composeService.perform(object, newParentObj); }); }; diff --git a/platform/entanglement/src/actions/CopyAction.js b/platform/entanglement/src/actions/CopyAction.js index bfc97cf451..2ed9725c41 100644 --- a/platform/entanglement/src/actions/CopyAction.js +++ b/platform/entanglement/src/actions/CopyAction.js @@ -69,7 +69,7 @@ define( * @param totalObjects * @param processed */ - CopyAction.prototype.progress = function(phase, totalObjects, processed){ + CopyAction.prototype.progress = function (phase, totalObjects, processed) { /* Copy has two distinct phases. In the first phase a copy plan is made in memory. During this phase of execution, the user is @@ -78,7 +78,7 @@ define( In the second phase, the copying is taking place, and the user is shown non-invasive banner notifications at the bottom of the screen. */ - if (phase.toLowerCase() === 'preparing' && !this.dialog){ + if (phase.toLowerCase() === 'preparing' && !this.dialog) { this.dialog = this.dialogService.showBlockingMessage({ title: "Preparing to copy objects", unknownProgress: true, @@ -105,15 +105,15 @@ define( * the AbstractComposeAction, but extends it to support notification * updates of progress on copy. */ - CopyAction.prototype.perform = function() { + CopyAction.prototype.perform = function () { var self = this; - function success(){ + function success() { self.notification.dismiss(); self.notificationService.info("Copying complete."); } - function error(errorDetails){ + function error(errorDetails) { var errorMessage = { title: "Error copying objects.", severity: "error", @@ -121,7 +121,7 @@ define( minimized: true, // want the notification to be minimized initially (don't show banner) options: [{ label: "OK", - callback: function() { + callback: function () { self.dialogService.dismiss(); } }] @@ -138,7 +138,7 @@ define( self.dialogService.showBlockingMessage(errorMessage); } - function notification(details){ + function notification(details) { self.progress(details.phase, details.totalObjects, details.processed); } diff --git a/platform/entanglement/src/services/CopyService.js b/platform/entanglement/src/services/CopyService.js index df284f3e20..37745501ac 100644 --- a/platform/entanglement/src/services/CopyService.js +++ b/platform/entanglement/src/services/CopyService.js @@ -22,7 +22,7 @@ define( - [ "./CopyTask" ], + ["./CopyTask"], function (CopyTask) { /** @@ -83,11 +83,11 @@ define( // Combines caller-provided filter (if any) with the // baseline behavior of respecting creation policy. - function filterWithPolicy(domainObject) { - return (!filter || filter(domainObject)) && + function filterWithPolicy(domainObj) { + return (!filter || filter(domainObj)) && policyService.allow( "creation", - domainObject.getCapability("type") + domainObj.getCapability("type") ); } diff --git a/platform/entanglement/src/services/CopyTask.js b/platform/entanglement/src/services/CopyTask.js index 0f8f421adf..0fe97d99d5 100644 --- a/platform/entanglement/src/services/CopyTask.js +++ b/platform/entanglement/src/services/CopyTask.js @@ -37,7 +37,7 @@ define( * @param $q Angular's $q, for promises * @constructor */ - function CopyTask (domainObject, parent, filter, $q){ + function CopyTask(domainObject, parent, filter, $q) { this.domainObject = domainObject; this.parent = parent; this.firstClone = undefined; @@ -89,11 +89,11 @@ define( * result in automatic request batching by the browser. */ function persistObjects(self) { - return self.$q.all(self.clones.map(function(clone){ - return clone.getCapability("persistence").persist().then(function(){ + return self.$q.all(self.clones.map(function (clone) { + return clone.getCapability("persistence").persist().then(function () { self.deferred.notify({phase: "copying", totalObjects: self.clones.length, processed: ++self.persisted}); }); - })).then(function(){ + })).then(function () { return self; }); } @@ -147,16 +147,16 @@ define( * @private * @returns {*} */ - CopyTask.prototype.copyComposees = function(composees, clonedParent, originalParent){ + CopyTask.prototype.copyComposees = function (composees, clonedParent, originalParent) { var self = this, idMap = {}; - return (composees || []).reduce(function(promise, originalComposee){ + return (composees || []).reduce(function (promise, originalComposee) { //If the composee is composed of other // objects, chain a promise.. - return promise.then(function(){ + return promise.then(function () { // ...to recursively copy it (and its children) - return self.copy(originalComposee, originalParent).then(function(clonedComposee){ + return self.copy(originalComposee, originalParent).then(function (clonedComposee) { //Map the original composee's ID to that of its // clone so that we can replace any references to it // in the parent @@ -167,17 +167,18 @@ define( // set, however linked objects will not. return composeChild(clonedComposee, clonedParent, clonedComposee !== originalComposee); }); - });}, self.$q.when(undefined) - ).then(function(){ - //Replace any references in the cloned parent to - // contained objects that have been composed with the - // Ids of the clones - self.rewriteIdentifiers(clonedParent.getModel(), idMap); + }); + }, self.$q.when(undefined) + ).then(function () { + //Replace any references in the cloned parent to + // contained objects that have been composed with the + // Ids of the clones + self.rewriteIdentifiers(clonedParent.getModel(), idMap); - //Add the clone to the list of clones that will - //be returned by this function - self.clones.push(clonedParent); - return clonedParent; + //Add the clone to the list of clones that will + //be returned by this function + self.clones.push(clonedParent); + return clonedParent; }); }; @@ -192,7 +193,7 @@ define( * duplication, then a duplicate of the object, otherwise the object * itself (to allow linking to non duplicatable objects). */ - CopyTask.prototype.copy = function(originalObject) { + CopyTask.prototype.copy = function (originalObject) { var self = this, clone; @@ -207,7 +208,7 @@ define( clone = this.parent.useCapability("instantiation", cloneObjectModel(originalObject.getModel())); //Iterate through child tree - return this.$q.when(originalObject.useCapability('composition')).then(function(composees){ + return this.$q.when(originalObject.useCapability('composition')).then(function (composees) { self.deferred.notify({phase: "preparing"}); //Duplicate the object's children, and their children, and // so on down to the leaf nodes of the tree. @@ -234,10 +235,10 @@ define( * object being copied. The clones are all full composed with * references to their own children. */ - CopyTask.prototype.buildCopyPlan = function() { + CopyTask.prototype.buildCopyPlan = function () { var self = this; - return this.copy(self.domainObject, self.parent).then(function(domainObjectClone){ + return this.copy(self.domainObject, self.parent).then(function (domainObjectClone) { if (domainObjectClone !== self.domainObject) { domainObjectClone.getModel().location = self.parent.getId(); } @@ -251,7 +252,7 @@ define( * @returns {promise} Which will resolve with a clone of the object * once complete. */ - CopyTask.prototype.perform = function(){ + CopyTask.prototype.perform = function () { this.deferred = this.$q.defer(); this.buildCopyPlan() @@ -264,4 +265,4 @@ define( return CopyTask; } -); \ No newline at end of file +); diff --git a/platform/entanglement/src/services/LinkService.js b/platform/entanglement/src/services/LinkService.js index 2a99407cdb..a8b2da4401 100644 --- a/platform/entanglement/src/services/LinkService.js +++ b/platform/entanglement/src/services/LinkService.js @@ -67,7 +67,9 @@ define( .then(function (objectInNewContext) { return parentObject.getCapability('persistence') .persist() - .then(function () { return objectInNewContext; }); + .then(function () { + return objectInNewContext; + }); }); }; diff --git a/platform/entanglement/src/services/LocationService.js b/platform/entanglement/src/services/LocationService.js index 0fa096f2af..42925b8235 100644 --- a/platform/entanglement/src/services/LocationService.js +++ b/platform/entanglement/src/services/LocationService.js @@ -77,8 +77,8 @@ define( return dialogService .getUserInput(formStructure, formState) - .then(function (formState) { - return formState.location; + .then(function (userFormState) { + return userFormState.location; }); } }; diff --git a/platform/entanglement/test/ControlledPromise.js b/platform/entanglement/test/ControlledPromise.js index 0b3fcd6cf6..94e32c7f7e 100644 --- a/platform/entanglement/test/ControlledPromise.js +++ b/platform/entanglement/test/ControlledPromise.js @@ -39,8 +39,8 @@ define( * Resolve the promise, passing the supplied value to all resolve * handlers. */ - ControlledPromise.prototype.resolve = function(value) { - this.resolveHandlers.forEach(function(handler) { + ControlledPromise.prototype.resolve = function (value) { + this.resolveHandlers.forEach(function (handler) { handler(value); }); }; @@ -49,8 +49,8 @@ define( * Reject the promise, passing the supplied value to all rejection * handlers. */ - ControlledPromise.prototype.reject = function(value) { - this.rejectHandlers.forEach(function(handler) { + ControlledPromise.prototype.reject = function (value) { + this.rejectHandlers.forEach(function (handler) { handler(value); }); }; @@ -63,11 +63,11 @@ define( var returnPromise = new ControlledPromise(); if (onResolve) { - this.resolveHandlers.push(function(resolveWith) { + this.resolveHandlers.push(function (resolveWith) { var chainResult = onResolve(resolveWith); if (chainResult && chainResult.then) { // chainResult is a promise, resolve when it resolves. - chainResult.then(function(pipedResult) { + chainResult.then(function (pipedResult) { return returnPromise.resolve(pipedResult); }); } else { @@ -77,10 +77,10 @@ define( } if (onReject) { - this.rejectHandlers.push(function(rejectWith) { + this.rejectHandlers.push(function (rejectWith) { var chainResult = onReject(rejectWith); if (chainResult && chainResult.then) { - chainResult.then(function(pipedResult) { + chainResult.then(function (pipedResult) { returnPromise.reject(pipedResult); }); } else { diff --git a/platform/entanglement/test/DomainObjectFactory.js b/platform/entanglement/test/DomainObjectFactory.js index 4a11667084..f3fbe28e87 100644 --- a/platform/entanglement/test/DomainObjectFactory.js +++ b/platform/entanglement/test/DomainObjectFactory.js @@ -153,4 +153,4 @@ define( return domainObjectFactory; } -); \ No newline at end of file +); diff --git a/platform/entanglement/test/actions/AbstractComposeActionSpec.js b/platform/entanglement/test/actions/AbstractComposeActionSpec.js index 18cf0b5560..cfa49cb758 100644 --- a/platform/entanglement/test/actions/AbstractComposeActionSpec.js +++ b/platform/entanglement/test/actions/AbstractComposeActionSpec.js @@ -45,7 +45,7 @@ define( beforeEach(function () { policyService = jasmine.createSpyObj( 'policyService', - [ 'allow' ] + ['allow'] ); selectedObjectContextCapability = jasmine.createSpyObj( diff --git a/platform/entanglement/test/actions/CopyActionSpec.js b/platform/entanglement/test/actions/CopyActionSpec.js index 30a9a18938..176b5baef8 100644 --- a/platform/entanglement/test/actions/CopyActionSpec.js +++ b/platform/entanglement/test/actions/CopyActionSpec.js @@ -51,7 +51,7 @@ define( beforeEach(function () { policyService = jasmine.createSpyObj( 'policyService', - [ 'allow' ] + ['allow'] ); policyService.allow.andReturn(true); @@ -105,12 +105,12 @@ define( ] ); - abstractComposePromise.then.andCallFake(function(success, error, notify){ + abstractComposePromise.then.andCallFake(function (success, error, notify) { notify(progress); success(); }); - locationServicePromise.then.andCallFake(function(callback){ + locationServicePromise.then.andCallFake(function (callback) { callback(newParent); return abstractComposePromise; }); @@ -191,7 +191,7 @@ define( .toHaveBeenCalledWith(selectedObject, newParent); }); - it("notifies the user of progress", function(){ + it("notifies the user of progress", function () { expect(notificationService.info).toHaveBeenCalled(); }); diff --git a/platform/entanglement/test/actions/GoToOriginalActionSpec.js b/platform/entanglement/test/actions/GoToOriginalActionSpec.js index 5c54018157..a05928239c 100644 --- a/platform/entanglement/test/actions/GoToOriginalActionSpec.js +++ b/platform/entanglement/test/actions/GoToOriginalActionSpec.js @@ -40,11 +40,11 @@ define( beforeEach(function () { mockLocationCapability = jasmine.createSpyObj( 'location', - [ 'isLink', 'isOriginal', 'getOriginal' ] + ['isLink', 'isOriginal', 'getOriginal'] ); mockOriginalActionCapability = jasmine.createSpyObj( 'action', - [ 'perform', 'getActions' ] + ['perform', 'getActions'] ); originalPromise = new ControlledPromise(); mockLocationCapability.getOriginal.andReturn(originalPromise); diff --git a/platform/entanglement/test/actions/LinkActionSpec.js b/platform/entanglement/test/actions/LinkActionSpec.js index 563aba0012..fa220831fc 100644 --- a/platform/entanglement/test/actions/LinkActionSpec.js +++ b/platform/entanglement/test/actions/LinkActionSpec.js @@ -45,7 +45,7 @@ define( beforeEach(function () { policyService = jasmine.createSpyObj( 'policyService', - [ 'allow' ] + ['allow'] ); policyService.allow.andReturn(true); diff --git a/platform/entanglement/test/actions/MoveActionSpec.js b/platform/entanglement/test/actions/MoveActionSpec.js index 25957cad2a..10c509ea54 100644 --- a/platform/entanglement/test/actions/MoveActionSpec.js +++ b/platform/entanglement/test/actions/MoveActionSpec.js @@ -45,7 +45,7 @@ define( beforeEach(function () { policyService = jasmine.createSpyObj( 'policyService', - [ 'allow' ] + ['allow'] ); policyService.allow.andReturn(true); diff --git a/platform/entanglement/test/actions/SetPrimaryLocationActionSpec.js b/platform/entanglement/test/actions/SetPrimaryLocationActionSpec.js index ca4c1671ec..fb1d8fa6ef 100644 --- a/platform/entanglement/test/actions/SetPrimaryLocationActionSpec.js +++ b/platform/entanglement/test/actions/SetPrimaryLocationActionSpec.js @@ -40,7 +40,7 @@ define( mockLocationCapability = jasmine.createSpyObj( 'location', - [ 'setPrimaryLocation', 'getContextualLocation' ] + ['setPrimaryLocation', 'getContextualLocation'] ); mockLocationCapability.getContextualLocation.andReturn(testId); diff --git a/platform/entanglement/test/policies/CrossSpacePolicySpec.js b/platform/entanglement/test/policies/CrossSpacePolicySpec.js index 603a956756..ef09a47619 100644 --- a/platform/entanglement/test/policies/CrossSpacePolicySpec.js +++ b/platform/entanglement/test/policies/CrossSpacePolicySpec.js @@ -54,7 +54,7 @@ define( // only define those in mocks. mockAction = jasmine.createSpyObj( 'action', - [ 'getMetadata' ] + ['getMetadata'] ); mockAction.getMetadata.andReturn(testActionMetadata); diff --git a/platform/entanglement/test/services/CopyServiceSpec.js b/platform/entanglement/test/services/CopyServiceSpec.js index c036de1ec6..b52e7aab6a 100644 --- a/platform/entanglement/test/services/CopyServiceSpec.js +++ b/platform/entanglement/test/services/CopyServiceSpec.js @@ -145,12 +145,12 @@ define( instantiationCapability = jasmine.createSpyObj( "instantiation", - [ "invoke" ] + ["invoke"] ); persistenceCapability = jasmine.createSpyObj( "persistenceCapability", - [ "persist", "getSpace" ] + ["persist", "getSpace"] ); persistenceCapability.persist.andReturn(persistObjectPromise); @@ -170,10 +170,12 @@ define( 'mockDeferred', ['notify', 'resolve', 'reject'] ); - mockDeferred.notify.andCallFake(function(){}); - mockDeferred.resolve.andCallFake(function(value){resolvedValue = value;}); + mockDeferred.notify.andCallFake(function () {}); + mockDeferred.resolve.andCallFake(function (value) { + resolvedValue = value; + }); mockDeferred.promise = { - then: function(callback){ + then: function (callback) { return synchronousPromise(callback(resolvedValue)); } }; @@ -187,12 +189,14 @@ define( mockQ.all.andCallFake(function (promises) { var result = {}; Object.keys(promises).forEach(function (k) { - promises[k].then(function (v) { result[k] = v; }); + promises[k].then(function (v) { + result[k] = v; + }); }); return synchronousPromise(result); }); mockQ.defer.andReturn(mockDeferred); - + }); describe("on domain object without composition", function () { @@ -238,7 +242,7 @@ define( }); instantiationCapability.invoke.andCallFake( - function(model){ + function (model) { objectCopy.model = model; return objectCopy; } @@ -254,7 +258,7 @@ define( expect(persistenceCapability.persist) .toHaveBeenCalled(); }); - + it("deep clones object model", function () { var newModel = copyFinished.calls[0].args[0].getModel(); expect(newModel).toEqual(object.model); @@ -279,7 +283,7 @@ define( objectClones; instantiationCapability.invoke.andCallFake( - function(model){ + function (model) { var cloneToReturn = objectClones[invocationCount++]; cloneToReturn.model = model; return cloneToReturn; @@ -362,8 +366,8 @@ define( copyService = new CopyService(mockQ, policyService); }); - describe("the cloning process", function(){ - beforeEach(function() { + describe("the cloning process", function () { + beforeEach(function () { copyResult = copyService.perform(object, newParent); copyFinished = jasmine.createSpy('copyFinished'); copyResult.then(copyFinished); @@ -379,23 +383,23 @@ define( expect(copyFinished).toHaveBeenCalled(); }); - it ("correctly locates cloned objects", function() { + it ("correctly locates cloned objects", function () { expect(childObjectClone.getModel().location).toEqual(objectClone.getId()); }); }); - describe("when cloning non-creatable objects", function() { + describe("when cloning non-creatable objects", function () { beforeEach(function () { - policyService.allow.andCallFake(function(category){ + policyService.allow.andCallFake(function (category) { //Return false for 'creation' policy - return category !== 'creation'; + return category !== 'creation'; }); copyResult = copyService.perform(object, newParent); copyFinished = jasmine.createSpy('copyFinished'); copyResult.then(copyFinished); }); - it ("creates link instead of clone", function() { + it ("creates link instead of clone", function () { var copiedObject = copyFinished.calls[0].args[0]; expect(copiedObject).toBe(object); expect(compositionCapability.add) @@ -412,7 +416,7 @@ define( } it("does not create new instances of objects " + - "rejected by the filter", function() { + "rejected by the filter", function () { copyService.perform(object, newParent, reject) .then(copyFinished); expect(copyFinished.mostRecentCall.args[0]) @@ -420,7 +424,7 @@ define( }); it("does create new instances of objects " + - "accepted by the filter", function() { + "accepted by the filter", function () { copyService.perform(object, newParent, accept) .then(copyFinished); expect(copyFinished.mostRecentCall.args[0]) @@ -454,17 +458,17 @@ define( }); it("throws an error", function () { - var copyService = + var service = new CopyService(mockQ, policyService); function perform() { - copyService.perform(object, newParent); + service.perform(object, newParent); } - spyOn(copyService, "validate"); - copyService.validate.andReturn(true); + spyOn(service, "validate"); + service.validate.andReturn(true); expect(perform).not.toThrow(); - copyService.validate.andReturn(false); + service.validate.andReturn(false); expect(perform).toThrow(); }); }); diff --git a/platform/entanglement/test/services/CopyTaskSpec.js b/platform/entanglement/test/services/CopyTaskSpec.js index 32302edb04..9111b08c4c 100644 --- a/platform/entanglement/test/services/CopyTaskSpec.js +++ b/platform/entanglement/test/services/CopyTaskSpec.js @@ -100,11 +100,11 @@ define( cloneIds = {}; testModel = { - composition: [ ID_A, ID_B ], + composition: [ID_A, ID_B], someObj: {}, - someArr: [ ID_A, ID_B ], + someArr: [ID_A, ID_B], objArr: [{"id": ID_A}, {"id": ID_B}], - singleElementArr: [ ID_A ] + singleElementArr: [ID_A] }; testModel.someObj[ID_A] = "some value"; testModel.someObj.someProperty = ID_B; @@ -120,7 +120,7 @@ define( mockQ = jasmine.createSpyObj('$q', ['when', 'defer', 'all']); mockDeferred = jasmine.createSpyObj( 'deferred', - [ 'notify', 'resolve', 'reject' ] + ['notify', 'resolve', 'reject'] ); mockFilter.andReturn(true); @@ -130,7 +130,9 @@ define( mockQ.all.andCallFake(function (promises) { return synchronousPromise(promises.map(function (promise) { var value; - promise.then(function (v) { value = v; }); + promise.then(function (v) { + value = v; + }); return value; })); }); diff --git a/platform/entanglement/test/services/LocatingObjectDecoratorSpec.js b/platform/entanglement/test/services/LocatingObjectDecoratorSpec.js index 8a66be5134..35412510c7 100644 --- a/platform/entanglement/test/services/LocatingObjectDecoratorSpec.js +++ b/platform/entanglement/test/services/LocatingObjectDecoratorSpec.js @@ -76,7 +76,9 @@ define( mockQ.all.andCallFake(function (promises) { var result = {}; Object.keys(promises).forEach(function (k) { - promises[k].then(function (v) { result[k] = v; }); + promises[k].then(function (v) { + result[k] = v; + }); }); return testPromise(result); }); @@ -88,7 +90,7 @@ define( Object.keys(testModels).forEach(function (id) { testObjects[id] = jasmine.createSpyObj( "domainObject-" + id, - [ "getId", "getModel", "getCapability" ] + ["getId", "getModel", "getCapability"] ); testObjects[id].getId.andReturn(id); testObjects[id].getModel.andReturn(testModels[id]); diff --git a/platform/entanglement/test/services/LocationServiceSpec.js b/platform/entanglement/test/services/LocationServiceSpec.js index 03c551fd2e..951baa71ac 100644 --- a/platform/entanglement/test/services/LocationServiceSpec.js +++ b/platform/entanglement/test/services/LocationServiceSpec.js @@ -63,7 +63,9 @@ define( beforeEach(function () { title = "Get a location to do something"; label = "a location"; - validate = function () { return true; }; + validate = function () { + return true; + }; initialLocation = { key: "a key" }; locationResult = locationService.getLocationFromUser( title, diff --git a/platform/exporters/ExportService.js b/platform/exporters/ExportService.js index cebe2b7116..05263eba9f 100644 --- a/platform/exporters/ExportService.js +++ b/platform/exporters/ExportService.js @@ -61,7 +61,7 @@ define(['csv'], function (CSV) { (Object.keys((rows[0] || {})).sort()), filename = (options && options.filename) || "export.csv", csvText = new CSV(rows, { header: headers }).encode(), - blob = new Blob([ csvText ] , { type: "text/csv" }); + blob = new Blob([csvText], { type: "text/csv" }); this.saveAs(blob, filename); }; diff --git a/platform/exporters/ExportServiceSpec.js b/platform/exporters/ExportServiceSpec.js index a984ebf818..f70a408274 100644 --- a/platform/exporters/ExportServiceSpec.js +++ b/platform/exporters/ExportServiceSpec.js @@ -45,7 +45,7 @@ define( mockSaveAs.andCallFake(function (blob) { var reader = new FileReader(); reader.onloadend = function () { - csvContents = new CSV(reader.result).parse(); + csvContents = new CSV(reader.result).parse(); }; reader.readAsText(blob); }); @@ -86,7 +86,7 @@ define( var testHeaders; beforeEach(function () { - testHeaders = [ 'a', 'b' ]; + testHeaders = ['a', 'b']; exportService .exportCSV(testRows, { headers: testHeaders }); waitsFor(finishedReadingCSV); @@ -139,4 +139,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/clock/src/actions/RestartTimerAction.js b/platform/features/clock/src/actions/RestartTimerAction.js index 30b785b332..5ddcd002c7 100644 --- a/platform/features/clock/src/actions/RestartTimerAction.js +++ b/platform/features/clock/src/actions/RestartTimerAction.js @@ -39,7 +39,7 @@ define( * @param {ActionContext} context the context for this action */ function RestartTimerAction(now, context) { - AbstractStartTimerAction.apply(this, [ now, context ]); + AbstractStartTimerAction.apply(this, [now, context]); } RestartTimerAction.prototype = diff --git a/platform/features/clock/src/actions/StartTimerAction.js b/platform/features/clock/src/actions/StartTimerAction.js index 25aff8ac2a..d683ec190b 100644 --- a/platform/features/clock/src/actions/StartTimerAction.js +++ b/platform/features/clock/src/actions/StartTimerAction.js @@ -39,7 +39,7 @@ define( * @param {ActionContext} context the context for this action */ function StartTimerAction(now, context) { - AbstractStartTimerAction.apply(this, [ now, context ]); + AbstractStartTimerAction.apply(this, [now, context]); } StartTimerAction.prototype = diff --git a/platform/features/clock/test/actions/AbstractStartTimerActionSpec.js b/platform/features/clock/test/actions/AbstractStartTimerActionSpec.js index 546c348786..bc72a00f46 100644 --- a/platform/features/clock/test/actions/AbstractStartTimerActionSpec.js +++ b/platform/features/clock/test/actions/AbstractStartTimerActionSpec.js @@ -43,7 +43,7 @@ define( mockNow = jasmine.createSpy('now'); mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getCapability', 'useCapability' ] + ['getCapability', 'useCapability'] ); mockPersistence = jasmine.createSpyObj( 'persistence', diff --git a/platform/features/clock/test/actions/RestartTimerActionSpec.js b/platform/features/clock/test/actions/RestartTimerActionSpec.js index 72d955b79a..1c98037380 100644 --- a/platform/features/clock/test/actions/RestartTimerActionSpec.js +++ b/platform/features/clock/test/actions/RestartTimerActionSpec.js @@ -44,7 +44,7 @@ define( mockNow = jasmine.createSpy('now'); mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getCapability', 'useCapability', 'getModel' ] + ['getCapability', 'useCapability', 'getModel'] ); mockPersistence = jasmine.createSpyObj( 'persistence', diff --git a/platform/features/clock/test/actions/StartTimerActionSpec.js b/platform/features/clock/test/actions/StartTimerActionSpec.js index 25e0fdfac7..67d6438eb2 100644 --- a/platform/features/clock/test/actions/StartTimerActionSpec.js +++ b/platform/features/clock/test/actions/StartTimerActionSpec.js @@ -44,7 +44,7 @@ define( mockNow = jasmine.createSpy('now'); mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getCapability', 'useCapability', 'getModel' ] + ['getCapability', 'useCapability', 'getModel'] ); mockPersistence = jasmine.createSpyObj( 'persistence', diff --git a/platform/features/clock/test/controllers/RefreshingControllerSpec.js b/platform/features/clock/test/controllers/RefreshingControllerSpec.js index cf34b46e68..c343575c55 100644 --- a/platform/features/clock/test/controllers/RefreshingControllerSpec.js +++ b/platform/features/clock/test/controllers/RefreshingControllerSpec.js @@ -45,11 +45,11 @@ define( it("refreshes the represented object on every tick", function () { var mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getCapability' ] + ['getCapability'] ), mockPersistence = jasmine.createSpyObj( 'persistence', - [ 'persist', 'refresh' ] + ['persist', 'refresh'] ); mockDomainObject.getCapability.andCallFake(function (c) { diff --git a/platform/features/clock/test/controllers/TimerControllerSpec.js b/platform/features/clock/test/controllers/TimerControllerSpec.js index 00766f9f95..79c64f941d 100644 --- a/platform/features/clock/test/controllers/TimerControllerSpec.js +++ b/platform/features/clock/test/controllers/TimerControllerSpec.js @@ -57,7 +57,7 @@ define( ); mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getCapability', 'useCapability', 'getModel' ] + ['getCapability', 'useCapability', 'getModel'] ); mockActionCapability = jasmine.createSpyObj( 'action', diff --git a/platform/features/conductor/test/ConductorRepresenterSpec.js b/platform/features/conductor/test/ConductorRepresenterSpec.js index 20647e91e8..83d37fb8a6 100644 --- a/platform/features/conductor/test/ConductorRepresenterSpec.js +++ b/platform/features/conductor/test/ConductorRepresenterSpec.js @@ -70,7 +70,7 @@ define( ['getConductor'] ); mockCompile = jasmine.createSpy('$compile'); - testViews = [ { someKey: "some value" } ]; + testViews = [{ someKey: "some value" }]; mockScope = jasmine.createSpyObj('scope', SCOPE_METHODS); mockElement = jasmine.createSpyObj('element', ELEMENT_METHODS); mockElement.parent.andReturn(mockElement); diff --git a/platform/features/conductor/test/ConductorTelemetryDecoratorSpec.js b/platform/features/conductor/test/ConductorTelemetryDecoratorSpec.js index aa7757423b..e31ec32080 100644 --- a/platform/features/conductor/test/ConductorTelemetryDecoratorSpec.js +++ b/platform/features/conductor/test/ConductorTelemetryDecoratorSpec.js @@ -36,7 +36,7 @@ define( beforeEach(function () { mockTelemetryService = jasmine.createSpyObj( 'telemetryService', - [ 'requestTelemetry', 'subscribe' ] + ['requestTelemetry', 'subscribe'] ); mockConductorService = jasmine.createSpyObj( 'conductorService', @@ -49,7 +49,7 @@ define( ); mockSeries = jasmine.createSpyObj( 'series', - [ 'getPointCount', 'getDomainValue', 'getRangeValue' ] + ['getPointCount', 'getDomainValue', 'getRangeValue'] ); mockTelemetryService.requestTelemetry.andReturn(mockPromise); diff --git a/platform/features/imagery/test/directives/MCTBackgroundImageSpec.js b/platform/features/imagery/test/directives/MCTBackgroundImageSpec.js index 75458b39e3..172708bcdf 100644 --- a/platform/features/imagery/test/directives/MCTBackgroundImageSpec.js +++ b/platform/features/imagery/test/directives/MCTBackgroundImageSpec.js @@ -36,7 +36,7 @@ define( jasmine.createSpyObj('document', ['createElement']) ]; mockScope = jasmine.createSpyObj('scope', ['$watch']); - mockElement = jasmine.createSpyObj('element', [ 'css' ]); + mockElement = jasmine.createSpyObj('element', ['css']); testImage = {}; mockDocument[0].createElement.andReturn(testImage); diff --git a/platform/features/imagery/test/policies/ImageryViewPolicySpec.js b/platform/features/imagery/test/policies/ImageryViewPolicySpec.js index bec634fee6..e4eaddb842 100644 --- a/platform/features/imagery/test/policies/ImageryViewPolicySpec.js +++ b/platform/features/imagery/test/policies/ImageryViewPolicySpec.js @@ -51,24 +51,24 @@ define( }); it("allows the imagery view for domain objects with image telemetry", function () { - testMetadata.ranges = [ { key: "foo", format: "imageUrl" } ]; + testMetadata.ranges = [{ key: "foo", format: "imageUrl" }]; expect(policy.allow(testView, mockDomainObject)).toBeTruthy(); }); it("disallows the imagery view for domain objects without image telemetry", function () { - testMetadata.ranges = [ { key: "foo", format: "somethingElse" } ]; + testMetadata.ranges = [{ key: "foo", format: "somethingElse" }]; expect(policy.allow(testView, mockDomainObject)).toBeFalsy(); }); it("disallows the imagery view for domain objects without telemetry", function () { - testMetadata.ranges = [ { key: "foo", format: "imageUrl" } ]; + testMetadata.ranges = [{ key: "foo", format: "imageUrl" }]; mockDomainObject.getCapability.andReturn(undefined); expect(policy.allow(testView, mockDomainObject)).toBeFalsy(); }); it("allows other views", function () { testView.key = "somethingElse"; - testMetadata.ranges = [ { key: "foo", format: "somethingElse" } ]; + testMetadata.ranges = [{ key: "foo", format: "somethingElse" }]; expect(policy.allow(testView, mockDomainObject)).toBeTruthy(); }); diff --git a/platform/features/layout/bundle.js b/platform/features/layout/bundle.js index fa98fb94b2..21a0f8f263 100644 --- a/platform/features/layout/bundle.js +++ b/platform/features/layout/bundle.js @@ -71,9 +71,6 @@ define([ "uses": [ "composition" ], - "gestures": [ - "drop" - ], "toolbar": { "sections": [ { diff --git a/platform/features/layout/src/FixedController.js b/platform/features/layout/src/FixedController.js index 8a3bfd9d7e..c8b5aebb2e 100644 --- a/platform/features/layout/src/FixedController.js +++ b/platform/features/layout/src/FixedController.js @@ -24,7 +24,7 @@ define( ['./FixedProxy', './elements/ElementProxies', './FixedDragHandle'], function (FixedProxy, ElementProxies, FixedDragHandle) { - var DEFAULT_DIMENSIONS = [ 2, 1 ], + var DEFAULT_DIMENSIONS = [2, 1], DEFAULT_GRID_SIZE = [64, 16]; /** @@ -271,15 +271,13 @@ define( } // Position a panel after a drop event - function handleDrop(e, id, position, editableDomainObject) { + function handleDrop(e, id, position) { // Don't handle this event if it has already been handled // color is set to "" to let the CSS theme determine the default color if (e.defaultPrevented) { return; } - if (editableDomainObject){ - $scope.setEditable(editableDomainObject); - } + e.preventDefault(); // Store the position of this element. addElement({ diff --git a/platform/features/layout/src/FixedDragHandle.js b/platform/features/layout/src/FixedDragHandle.js index 96516e9cc8..3b4e14663a 100644 --- a/platform/features/layout/src/FixedDragHandle.js +++ b/platform/features/layout/src/FixedDragHandle.js @@ -26,7 +26,7 @@ define( // Drag handle dimensions - var DRAG_HANDLE_SIZE = [ 6, 6 ]; + var DRAG_HANDLE_SIZE = [6, 6]; /** * Template-displayable drag handle for an element in fixed diff --git a/platform/features/layout/src/LayoutController.js b/platform/features/layout/src/LayoutController.js index a7e3900696..6d60738fc3 100644 --- a/platform/features/layout/src/LayoutController.js +++ b/platform/features/layout/src/LayoutController.js @@ -29,9 +29,9 @@ define( ['./LayoutDrag'], function (LayoutDrag) { - var DEFAULT_DIMENSIONS = [ 12, 8 ], - DEFAULT_GRID_SIZE = [ 32, 32 ], - MINIMUM_FRAME_SIZE = [ 320, 180 ]; + var DEFAULT_DIMENSIONS = [12, 8], + DEFAULT_GRID_SIZE = [32, 32], + MINIMUM_FRAME_SIZE = [320, 180]; /** * The LayoutController is responsible for supporting the @@ -60,15 +60,11 @@ define( } // Position a panel after a drop event - //An editableDomainObject is provided, as the drop may have - // triggered a transition to edit mode. - function handleDrop(e, id, position, editableDomainObject) { + function handleDrop(e, id, position) { if (e.defaultPrevented) { return; } - if (editableDomainObject){ - $scope.setEditable(editableDomainObject); - } + // Ensure that configuration field is populated $scope.configuration = $scope.configuration || {}; // Make sure there is a "panels" field in the @@ -103,12 +99,12 @@ define( //Keep a track of how many composition callbacks have been made var thisCount = ++callbackCount; - $scope.domainObject.useCapability('composition').then(function(composition){ + $scope.domainObject.useCapability('composition').then(function (composition) { var ids; //Is this callback for the most recent composition // request? If not, discard it. Prevents race condition - if (thisCount === callbackCount){ + if (thisCount === callbackCount) { ids = composition.map(function (object) { return object.getId(); }) || []; diff --git a/platform/features/layout/src/elements/ElementProxy.js b/platform/features/layout/src/elements/ElementProxy.js index 66f3f35985..75ed061085 100644 --- a/platform/features/layout/src/elements/ElementProxy.js +++ b/platform/features/layout/src/elements/ElementProxy.js @@ -54,7 +54,7 @@ define( * @param {Array} elements the full array of elements */ function ElementProxy(element, index, elements) { - this.resizeHandles = [ new ResizeHandle(element, 1, 1) ]; + this.resizeHandles = [new ResizeHandle(element, 1, 1)]; /** * The element as stored in the view configuration. diff --git a/platform/features/layout/test/FixedControllerSpec.js b/platform/features/layout/test/FixedControllerSpec.js index 10f723a81e..ff939a21c9 100644 --- a/platform/features/layout/test/FixedControllerSpec.js +++ b/platform/features/layout/test/FixedControllerSpec.js @@ -64,7 +64,7 @@ define( function makeMockDomainObject(id) { var mockObject = jasmine.createSpyObj( 'domainObject-' + id, - [ 'getId', 'getModel', 'getCapability' ] + ['getId', 'getModel', 'getCapability'] ); mockObject.getId.andReturn(id); mockObject.getModel.andReturn({ name: "Point " + id}); @@ -74,11 +74,11 @@ define( beforeEach(function () { mockScope = jasmine.createSpyObj( '$scope', - [ "$on", "$watch", "commit" ] + ["$on", "$watch", "commit"] ); mockHandler = jasmine.createSpyObj( 'telemetryHandler', - [ 'handle' ] + ['handle'] ); mockQ = jasmine.createSpyObj('$q', ['when']); mockDialogService = jasmine.createSpyObj( @@ -87,11 +87,11 @@ define( ); mockFormatter = jasmine.createSpyObj( 'telemetryFormatter', - [ 'formatDomainValue', 'formatRangeValue' ] + ['formatDomainValue', 'formatRangeValue'] ); mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getId', 'getModel', 'getCapability' ] + ['getId', 'getModel', 'getCapability'] ); mockHandle = jasmine.createSpyObj( 'subscription', @@ -106,10 +106,10 @@ define( ); mockEvent = jasmine.createSpyObj( 'event', - [ 'preventDefault' ] + ['preventDefault'] ); - testGrid = [ 123, 456 ]; + testGrid = [123, 456]; testModel = { composition: ['a', 'b', 'c'], layoutGrid: testGrid @@ -136,7 +136,7 @@ define( mockScope.configuration = testConfiguration; mockScope.selection = jasmine.createSpyObj( 'selection', - [ 'select', 'get', 'selected', 'deselect', 'proxy' ] + ['select', 'get', 'selected', 'deselect', 'proxy'] ); controller = new FixedController( @@ -418,7 +418,7 @@ define( expect(controller.selected().style).toEqual(oldStyle); // Drag a little - controller.moveHandle().continueDrag([ 1000, 100 ]); + controller.moveHandle().continueDrag([1000, 100]); // Style should have been updated expect(controller.selected().style).not.toEqual(oldStyle); diff --git a/platform/features/layout/test/FixedDragHandleSpec.js b/platform/features/layout/test/FixedDragHandleSpec.js index 974494ee1c..2cbaca1746 100644 --- a/platform/features/layout/test/FixedDragHandleSpec.js +++ b/platform/features/layout/test/FixedDragHandleSpec.js @@ -24,7 +24,7 @@ define( ['../src/FixedDragHandle'], function (FixedDragHandle) { - var TEST_GRID_SIZE = [ 13, 33 ]; + var TEST_GRID_SIZE = [13, 33]; describe("A fixed position drag handle", function () { var mockElementHandle, @@ -35,7 +35,7 @@ define( beforeEach(function () { mockElementHandle = jasmine.createSpyObj( 'elementHandle', - [ 'x', 'y' ] + ['x', 'y'] ); mockUpdate = jasmine.createSpy('update'); mockCommit = jasmine.createSpy('commit'); @@ -61,13 +61,13 @@ define( it("allows handles to be dragged", function () { handle.startDrag(); - handle.continueDrag([ 16, 8 ]); + handle.continueDrag([16, 8]); // Should update x/y, snapped to grid expect(mockElementHandle.x).toHaveBeenCalledWith(7); expect(mockElementHandle.y).toHaveBeenCalledWith(8); - handle.continueDrag([ -16, -35 ]); + handle.continueDrag([-16, -35]); // Should have interpreted relative to initial state expect(mockElementHandle.x).toHaveBeenCalledWith(5); @@ -84,4 +84,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/layout/test/LayoutControllerSpec.js b/platform/features/layout/test/LayoutControllerSpec.js index ebd778cb7e..06ff8b80f0 100644 --- a/platform/features/layout/test/LayoutControllerSpec.js +++ b/platform/features/layout/test/LayoutControllerSpec.js @@ -34,7 +34,7 @@ define( mockComposition, mockCompositionObjects; - function mockPromise(value){ + function mockPromise(value) { return { then: function (thenFunc) { return mockPromise(thenFunc(value)); @@ -42,12 +42,12 @@ define( }; } - function mockDomainObject(id){ + function mockDomainObject(id) { return { - getId: function() { + getId: function () { return id; }, - useCapability: function() { + useCapability: function () { return mockCompositionCapability; } }; @@ -56,11 +56,11 @@ define( beforeEach(function () { mockScope = jasmine.createSpyObj( "$scope", - [ "$watch", "$watchCollection", "$on", "commit" ] + ["$watch", "$watchCollection", "$on", "commit"] ); mockEvent = jasmine.createSpyObj( 'event', - [ 'preventDefault' ] + ['preventDefault'] ); testModel = {}; @@ -238,7 +238,7 @@ define( var styleB; // Start with a very small frame size - testModel.layoutGrid = [ 1, 1 ]; + testModel.layoutGrid = [1, 1]; // White-boxy; we know which watch is which mockScope.$watch.calls[0].args[1](testModel.layoutGrid); @@ -255,7 +255,7 @@ define( var style; // Start with a very small frame size - testModel.layoutGrid = [ 1, 1 ]; + testModel.layoutGrid = [1, 1]; mockScope.$watch.calls[0].args[1](testModel.layoutGrid); // Notify that a drop occurred diff --git a/platform/features/layout/test/LayoutDragSpec.js b/platform/features/layout/test/LayoutDragSpec.js index 6309fbc13c..23503bd16d 100644 --- a/platform/features/layout/test/LayoutDragSpec.js +++ b/platform/features/layout/test/LayoutDragSpec.js @@ -26,56 +26,56 @@ define( describe("A Layout drag handler", function () { var testPosition = { - position: [ 8, 11 ], - dimensions: [ 3, 2 ] + position: [8, 11], + dimensions: [3, 2] }; it("changes position by a supplied factor, rounding by grid size", function () { var handler = new LayoutDrag( testPosition, - [ 1, 1 ], - [ 0, 0 ], - [ 10, 20 ] + [1, 1], + [0, 0], + [10, 20] ); - expect(handler.getAdjustedPosition([ 37, 84 ])).toEqual({ - position: [ 12, 15 ], - dimensions: [ 3, 2 ] + expect(handler.getAdjustedPosition([37, 84])).toEqual({ + position: [12, 15], + dimensions: [3, 2] }); - expect(handler.getAdjustedPosition([ -37, 84 ])).toEqual({ - position: [ 4, 15 ], - dimensions: [ 3, 2 ] + expect(handler.getAdjustedPosition([-37, 84])).toEqual({ + position: [4, 15], + dimensions: [3, 2] }); }); it("changes dimensions by a supplied factor, rounding by grid size", function () { var handler = new LayoutDrag( testPosition, - [ 0, 0 ], - [ 1, 1 ], - [ 10, 20 ] + [0, 0], + [1, 1], + [10, 20] ); - expect(handler.getAdjustedPosition([ 37, 84 ])).toEqual({ - position: [ 8, 11 ], - dimensions: [ 7, 6 ] + expect(handler.getAdjustedPosition([37, 84])).toEqual({ + position: [8, 11], + dimensions: [7, 6] }); }); it("allows mixing dimension and position factors", function () { var handler = new LayoutDrag( testPosition, - [ 0, 1 ], - [ -1, 0 ], - [ 10, 20 ] + [0, 1], + [-1, 0], + [10, 20] ); - expect(handler.getAdjustedPosition([ 11, 84 ])).toEqual({ - position: [ 8, 15 ], - dimensions: [ 2, 2 ] + expect(handler.getAdjustedPosition([11, 84])).toEqual({ + position: [8, 15], + dimensions: [2, 2] }); }); }); } -); \ No newline at end of file +); diff --git a/platform/features/layout/test/elements/BoxProxySpec.js b/platform/features/layout/test/elements/BoxProxySpec.js index a0d2ac0ab7..620095619a 100644 --- a/platform/features/layout/test/elements/BoxProxySpec.js +++ b/platform/features/layout/test/elements/BoxProxySpec.js @@ -37,7 +37,7 @@ define( height: 24, fill: "transparent" }; - testElements = [ {}, {}, testElement, {} ]; + testElements = [{}, {}, testElement, {}]; proxy = new BoxProxy( testElement, testElements.indexOf(testElement), diff --git a/platform/features/layout/test/elements/ElementFactorySpec.js b/platform/features/layout/test/elements/ElementFactorySpec.js index bcd9768cea..36c9fa9b7a 100644 --- a/platform/features/layout/test/elements/ElementFactorySpec.js +++ b/platform/features/layout/test/elements/ElementFactorySpec.js @@ -24,8 +24,8 @@ define( ['../../src/elements/ElementFactory'], function (ElementFactory) { - var DIALOG_ELEMENTS = [ 'image', 'text' ], - NON_DIALOG_ELEMENTS = [ 'box', 'line' ]; + var DIALOG_ELEMENTS = ['image', 'text'], + NON_DIALOG_ELEMENTS = ['box', 'line']; describe("The fixed position element factory", function () { var mockDialogService, @@ -35,11 +35,11 @@ define( beforeEach(function () { mockDialogService = jasmine.createSpyObj( 'dialogService', - [ 'getUserInput' ] + ['getUserInput'] ); mockPromise = jasmine.createSpyObj( 'promise', - [ 'then' ] + ['then'] ); mockDialogService.getUserInput.andReturn(mockPromise); @@ -66,4 +66,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/features/layout/test/elements/ElementProxySpec.js b/platform/features/layout/test/elements/ElementProxySpec.js index acbaf3f4cf..5c7a5e5183 100644 --- a/platform/features/layout/test/elements/ElementProxySpec.js +++ b/platform/features/layout/test/elements/ElementProxySpec.js @@ -37,7 +37,7 @@ define( width: 42, height: 24 }; - testElements = [ {}, {}, testElement, {} ]; + testElements = [{}, {}, testElement, {}]; proxy = new ElementProxy( testElement, testElements.indexOf(testElement), diff --git a/platform/features/layout/test/elements/ImageProxySpec.js b/platform/features/layout/test/elements/ImageProxySpec.js index 81f1a3f3ab..2e77cfe543 100644 --- a/platform/features/layout/test/elements/ImageProxySpec.js +++ b/platform/features/layout/test/elements/ImageProxySpec.js @@ -37,7 +37,7 @@ define( height: 24, url: "http://www.nasa.gov" }; - testElements = [ {}, {}, testElement, {} ]; + testElements = [{}, {}, testElement, {}]; proxy = new ImageProxy( testElement, testElements.indexOf(testElement), diff --git a/platform/features/layout/test/elements/LineHandleSpec.js b/platform/features/layout/test/elements/LineHandleSpec.js index a113cdef55..5f682029d7 100644 --- a/platform/features/layout/test/elements/LineHandleSpec.js +++ b/platform/features/layout/test/elements/LineHandleSpec.js @@ -70,4 +70,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/layout/test/elements/LineProxySpec.js b/platform/features/layout/test/elements/LineProxySpec.js index 15d604ae25..14ba0a790e 100644 --- a/platform/features/layout/test/elements/LineProxySpec.js +++ b/platform/features/layout/test/elements/LineProxySpec.js @@ -92,4 +92,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/layout/test/elements/ResizeHandleSpec.js b/platform/features/layout/test/elements/ResizeHandleSpec.js index c48218a667..48ffed0ae3 100644 --- a/platform/features/layout/test/elements/ResizeHandleSpec.js +++ b/platform/features/layout/test/elements/ResizeHandleSpec.js @@ -75,4 +75,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/layout/test/elements/TelemetryProxySpec.js b/platform/features/layout/test/elements/TelemetryProxySpec.js index 1044dc36b3..e68c6bf173 100644 --- a/platform/features/layout/test/elements/TelemetryProxySpec.js +++ b/platform/features/layout/test/elements/TelemetryProxySpec.js @@ -38,7 +38,7 @@ define( height: 24, id: "test-id" }; - testElements = [ {}, {}, testElement, {} ]; + testElements = [{}, {}, testElement, {}]; proxy = new TelemetryProxy( testElement, testElements.indexOf(testElement), diff --git a/platform/features/layout/test/elements/TextProxySpec.js b/platform/features/layout/test/elements/TextProxySpec.js index dbabc568cf..eb808d5867 100644 --- a/platform/features/layout/test/elements/TextProxySpec.js +++ b/platform/features/layout/test/elements/TextProxySpec.js @@ -37,7 +37,7 @@ define( height: 24, fill: "transparent" }; - testElements = [ {}, {}, testElement, {} ]; + testElements = [{}, {}, testElement, {}]; proxy = new TextProxy( testElement, testElements.indexOf(testElement), diff --git a/platform/features/plot/src/Canvas2DChart.js b/platform/features/plot/src/Canvas2DChart.js index 8fdca3a9c2..7ed9e0982b 100644 --- a/platform/features/plot/src/Canvas2DChart.js +++ b/platform/features/plot/src/Canvas2DChart.js @@ -38,8 +38,8 @@ define( this.c2d = canvas.getContext('2d'); this.width = canvas.width; this.height = canvas.height; - this.dimensions = [ this.width, this.height ]; - this.origin = [ 0, 0 ]; + this.dimensions = [this.width, this.height]; + this.origin = [0, 0]; if (!this.c2d) { throw new Error("Canvas 2d API unavailable."); diff --git a/platform/features/plot/src/PlotOptionsController.js b/platform/features/plot/src/PlotOptionsController.js index d12fcae762..4ab0ee2aa7 100644 --- a/platform/features/plot/src/PlotOptionsController.js +++ b/platform/features/plot/src/PlotOptionsController.js @@ -57,7 +57,7 @@ define( Listen for changes to the domain object and update the object's children. */ - this.mutationListener = this.domainObject.getCapability('mutation').listen(function(model) { + this.mutationListener = this.domainObject.getCapability('mutation').listen(function (model) { if (self.hasCompositionChanged(self.composition, model.composition)) { self.updateChildren(); } @@ -70,7 +70,7 @@ define( $scope.xAxisForm = this.plotOptionsForm.xAxisForm; $scope.yAxisForm = this.plotOptionsForm.yAxisForm; - $scope.$on("$destroy", function() { + $scope.$on("$destroy", function () { //Clean up any listeners on destruction of controller self.mutationListener(); }); @@ -82,10 +82,10 @@ define( * Setup a number of watches for changes to form values. On * change, update the model configuration via mutation */ - $scope.$watchCollection('configuration.plot.yAxis', function(newValue, oldValue){ + $scope.$watchCollection('configuration.plot.yAxis', function (newValue, oldValue) { self.updateConfiguration(newValue, oldValue); }); - $scope.$watchCollection('configuration.plot.xAxis', function(newValue, oldValue){ + $scope.$watchCollection('configuration.plot.xAxis', function (newValue, oldValue) { self.updateConfiguration(newValue, oldValue); }); @@ -98,8 +98,8 @@ define( * child objects) * @private */ - PlotOptionsController.prototype.clearSeriesWatches = function() { - this.watches.forEach(function(watch) { + PlotOptionsController.prototype.clearSeriesWatches = function () { + this.watches.forEach(function (watch) { watch(); }); this.watches = []; @@ -109,16 +109,16 @@ define( * Attach watches for each object in the plot's composition * @private */ - PlotOptionsController.prototype.watchSeries = function() { + PlotOptionsController.prototype.watchSeries = function () { var self = this; this.clearSeriesWatches(); - (self.$scope.children || []).forEach(function(child, index){ + (self.$scope.children || []).forEach(function (child, index) { self.watches.push( self.$scope.$watchCollection( 'configuration.plot.series[' + index + ']', - function(newValue, oldValue){ + function (newValue, oldValue) { self.updateConfiguration(newValue, oldValue); } ) @@ -132,13 +132,13 @@ define( * * @private */ - PlotOptionsController.prototype.hasCompositionChanged = function(oldComposition, newComposition){ + PlotOptionsController.prototype.hasCompositionChanged = function (oldComposition, newComposition) { // Framed slightly strangely, but the boolean logic is // easier to follow for the unchanged case. var isUnchanged = oldComposition === newComposition || ( oldComposition.length === newComposition.length && - oldComposition.every( function (currentValue, index) { + oldComposition.every(function (currentValue, index) { return newComposition[index] && currentValue === newComposition[index]; }) ); @@ -163,12 +163,12 @@ define( * plot options model * @private */ - PlotOptionsController.prototype.updateChildren = function() { + PlotOptionsController.prototype.updateChildren = function () { var self = this; - this.domainObject.useCapability('composition').then(function(children){ + this.domainObject.useCapability('composition').then(function (children) { self.$scope.children = children; self.composition = self.domainObject.getModel().composition; - children.forEach(function(child, index){ + children.forEach(function (child, index) { self.configuration.plot.series[index] = self.configuration.plot.series[index] || {'id': child.getId()}; }); @@ -181,9 +181,9 @@ define( * object * @private */ - PlotOptionsController.prototype.updateConfiguration = function() { + PlotOptionsController.prototype.updateConfiguration = function () { var self = this; - this.domainObject.useCapability('mutation', function(model){ + this.domainObject.useCapability('mutation', function (model) { model.configuration = model.configuration || {}; model.configuration.plot = self.configuration.plot; }); diff --git a/platform/features/plot/src/PlotOptionsForm.js b/platform/features/plot/src/PlotOptionsForm.js index 21f1593071..3d8e534811 100644 --- a/platform/features/plot/src/PlotOptionsForm.js +++ b/platform/features/plot/src/PlotOptionsForm.js @@ -37,7 +37,7 @@ define( Defined below are the form structures for the plot options. */ this.xAxisForm = { - 'name':'x-axis', + 'name': 'x-axis', 'sections': [{ 'name': 'x-axis', 'rows': [ @@ -46,30 +46,30 @@ define( 'control': 'select', 'key': 'key', 'options': [ - {'name':'SCET', 'value': 'scet'}, - {'name':'SCLK', 'value': 'sclk'}, - {'name':'LST', 'value': 'lst'} + {'name': 'SCET', 'value': 'scet'}, + {'name': 'SCLK', 'value': 'sclk'}, + {'name': 'LST', 'value': 'lst'} ] } ] - }]}; + }]}; this.yAxisForm = { - 'name':'y-axis', - 'sections': [{ - // Will need to be repeated for each y-axis, with a - // distinct name for each. Ideally the name of the axis - // itself. 'name': 'y-axis', - 'rows': [ + 'sections': [{ + // Will need to be repeated for each y-axis, with a + // distinct name for each. Ideally the name of the axis + // itself. + 'name': 'y-axis', + 'rows': [ { 'name': 'Range', 'control': 'select', 'key': 'key', 'options': [ - {'name':'EU', 'value': 'eu'}, - {'name':'DN', 'value': 'dn'}, - {'name':'Status', 'value': 'status'} + {'name': 'EU', 'value': 'eu'}, + {'name': 'DN', 'value': 'dn'}, + {'name': 'Status', 'value': 'status'} ] }, { @@ -95,7 +95,7 @@ define( }] }; this.plotSeriesForm = { - 'name':'Series Options', + 'name': 'Series Options', 'sections': [ { rows: [ @@ -106,7 +106,7 @@ define( }] }, { - 'rows':[ + 'rows': [ { 'name': 'Markers', 'control': 'checkbox', @@ -116,7 +116,7 @@ define( ] }, { - 'rows':[ + 'rows': [ { 'name': 'No Line', 'control': 'radio', diff --git a/platform/features/plot/src/SubPlot.js b/platform/features/plot/src/SubPlot.js index d016d4730d..b0a003de38 100644 --- a/platform/features/plot/src/SubPlot.js +++ b/platform/features/plot/src/SubPlot.js @@ -67,7 +67,7 @@ define( * implies that there is no range data displayed either * @returns {boolean} true if domain data exists for the current pan/zoom level */ - SubPlot.prototype.hasDomainData = function() { + SubPlot.prototype.hasDomainData = function () { return this.panZoomStack && this.panZoomStack.getDimensions()[0] > 0; }; @@ -109,7 +109,7 @@ define( // associated with conversion to a 32-bit floating point // format (which is needed in the chart area itself, by WebGL.) SubPlot.prototype.toDisplayable = function (position) { - return [ position[0] - this.domainOffset, position[1] ]; + return [position[0] - this.domainOffset, position[1]]; }; // Update the current hover coordinates @@ -145,7 +145,7 @@ define( end: this.toDisplayable( this.mousePositionToDomainRange(this.mousePosition) ), - color: [1, 1, 1, 0.5 ] + color: [1, 1, 1, 0.5] }] : undefined; }; @@ -189,7 +189,7 @@ define( this.panZoomStack ); - delta = [ current[0] - start[0], current[1] - start[1] ]; + delta = [current[0] - start[0], current[1] - start[1]]; nextOrigin = [ this.panStartBounds.origin[0] - delta[0], this.panStartBounds.origin[1] - delta[1] diff --git a/platform/features/plot/src/elements/PlotLineBuffer.js b/platform/features/plot/src/elements/PlotLineBuffer.js index a878500dcb..5687f854ee 100644 --- a/platform/features/plot/src/elements/PlotLineBuffer.js +++ b/platform/features/plot/src/elements/PlotLineBuffer.js @@ -35,7 +35,7 @@ define( function PlotLineBuffer(domainOffset, initialSize, maxSize) { this.buffer = new Float32Array(initialSize * 2); this.rangeExtrema = - [ Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY ]; + [Number.POSITIVE_INFINITY, Number.NEGATIVE_INFINITY]; this.length = 0; this.domainOffset = domainOffset; this.initialSize = initialSize; diff --git a/platform/features/plot/src/elements/PlotPalette.js b/platform/features/plot/src/elements/PlotPalette.js index ae41d85fe1..cea1aefeae 100644 --- a/platform/features/plot/src/elements/PlotPalette.js +++ b/platform/features/plot/src/elements/PlotPalette.js @@ -30,36 +30,36 @@ define( // describe colors in several ways (as RGB 0-255, as // RGB 0.0-1.0, or as stylesheet-appropriate #-prefixed colors). var integerPalette = [ - [ 0x20, 0xB2, 0xAA ], - [ 0x9A, 0xCD, 0x32 ], - [ 0xFF, 0x8C, 0x00 ], - [ 0xD2, 0xB4, 0x8C ], - [ 0x40, 0xE0, 0xD0 ], - [ 0x41, 0x69, 0xFF ], - [ 0xFF, 0xD7, 0x00 ], - [ 0x6A, 0x5A, 0xCD ], - [ 0xEE, 0x82, 0xEE ], - [ 0xCC, 0x99, 0x66 ], - [ 0x99, 0xCC, 0xCC ], - [ 0x66, 0xCC, 0x33 ], - [ 0xFF, 0xCC, 0x00 ], - [ 0xFF, 0x66, 0x33 ], - [ 0xCC, 0x66, 0xFF ], - [ 0xFF, 0x00, 0x66 ], - [ 0xFF, 0xFF, 0x00 ], - [ 0x80, 0x00, 0x80 ], - [ 0x00, 0x86, 0x8B ], - [ 0x00, 0x8A, 0x00 ], - [ 0xFF, 0x00, 0x00 ], - [ 0x00, 0x00, 0xFF ], - [ 0xF5, 0xDE, 0xB3 ], - [ 0xBC, 0x8F, 0x8F ], - [ 0x46, 0x82, 0xB4 ], - [ 0xFF, 0xAF, 0xAF ], - [ 0x43, 0xCD, 0x80 ], - [ 0xCD, 0xC1, 0xC5 ], - [ 0xA0, 0x52, 0x2D ], - [ 0x64, 0x95, 0xED ] + [0x20, 0xB2, 0xAA], + [0x9A, 0xCD, 0x32], + [0xFF, 0x8C, 0x00], + [0xD2, 0xB4, 0x8C], + [0x40, 0xE0, 0xD0], + [0x41, 0x69, 0xFF], + [0xFF, 0xD7, 0x00], + [0x6A, 0x5A, 0xCD], + [0xEE, 0x82, 0xEE], + [0xCC, 0x99, 0x66], + [0x99, 0xCC, 0xCC], + [0x66, 0xCC, 0x33], + [0xFF, 0xCC, 0x00], + [0xFF, 0x66, 0x33], + [0xCC, 0x66, 0xFF], + [0xFF, 0x00, 0x66], + [0xFF, 0xFF, 0x00], + [0x80, 0x00, 0x80], + [0x00, 0x86, 0x8B], + [0x00, 0x8A, 0x00], + [0xFF, 0x00, 0x00], + [0x00, 0x00, 0xFF], + [0xF5, 0xDE, 0xB3], + [0xBC, 0x8F, 0x8F], + [0x46, 0x82, 0xB4], + [0xFF, 0xAF, 0xAF], + [0x43, 0xCD, 0x80], + [0xCD, 0xC1, 0xC5], + [0xA0, 0x52, 0x2D], + [0x64, 0x95, 0xED] ], stringPalette = integerPalette.map(function (arr) { // Convert to # notation for use in styles return '#' + arr.map(function (c) { diff --git a/platform/features/plot/src/elements/PlotPanZoomStackGroup.js b/platform/features/plot/src/elements/PlotPanZoomStackGroup.js index 862eaf8cea..52565b524a 100644 --- a/platform/features/plot/src/elements/PlotPanZoomStackGroup.js +++ b/platform/features/plot/src/elements/PlotPanZoomStackGroup.js @@ -50,8 +50,8 @@ define( // For other stacks, do a push, but repeat // their current range axis bounds. stack.pushPanZoom( - [ origin[0], stack.getOrigin()[1] ], - [ dimensions[0], stack.getDimensions()[1] ] + [origin[0], stack.getOrigin()[1]], + [dimensions[0], stack.getDimensions()[1]] ); } }); diff --git a/platform/features/plot/src/elements/PlotPosition.js b/platform/features/plot/src/elements/PlotPosition.js index e2b598114b..76282c5bbb 100644 --- a/platform/features/plot/src/elements/PlotPosition.js +++ b/platform/features/plot/src/elements/PlotPosition.js @@ -60,7 +60,7 @@ define( // Note that range is reversed from the y-axis in pixel space //(positive range points up, positive pixel-y points down) this.position = - [ x / width, (height - y) / height ].map(convert); + [x / width, (height - y) / height].map(convert); } } diff --git a/platform/features/plot/src/elements/PlotPreparer.js b/platform/features/plot/src/elements/PlotPreparer.js index af0f0eacae..5d6b1f001c 100644 --- a/platform/features/plot/src/elements/PlotPreparer.js +++ b/platform/features/plot/src/elements/PlotPreparer.js @@ -27,7 +27,9 @@ define( function () { - function identity(x) { return x; } + function identity(x) { + return x; + } /** * The PlotPreparer is responsible for handling data sets and diff --git a/platform/features/plot/src/elements/PlotUpdater.js b/platform/features/plot/src/elements/PlotUpdater.js index b1696c2413..9c4e7a8a92 100644 --- a/platform/features/plot/src/elements/PlotUpdater.js +++ b/platform/features/plot/src/elements/PlotUpdater.js @@ -71,7 +71,7 @@ define( // Used in the reduce step of updateExtrema function reduceExtrema(a, b) { - return [ Math.min(a[0], b[0]), Math.max(a[1], b[1]) ]; + return [Math.min(a[0], b[0]), Math.max(a[1], b[1])]; } // Convert a domain/range extrema to plot dimensions @@ -173,9 +173,9 @@ define( }).reduce(reduceExtrema); // Calculate best-fit dimensions - this.dimensions = [ this.domainExtrema, this.rangeExtrema ] + this.dimensions = [this.domainExtrema, this.rangeExtrema] .map(dimensionsOf); - this.origin = [ this.domainExtrema, this.rangeExtrema ] + this.origin = [this.domainExtrema, this.rangeExtrema] .map(originOf); // Enforce some minimum visible area diff --git a/platform/features/plot/src/modes/PlotModeOptions.js b/platform/features/plot/src/modes/PlotModeOptions.js index b876130b91..a1056ebfc4 100644 --- a/platform/features/plot/src/modes/PlotModeOptions.js +++ b/platform/features/plot/src/modes/PlotModeOptions.js @@ -89,7 +89,7 @@ define( */ function PlotModeOptions(telemetryObjects, subPlotFactory) { this.options = telemetryObjects.length > 1 ? - [ OVERLAID, STACKED ] : [ OVERLAID ]; + [OVERLAID, STACKED] : [OVERLAID]; this.mode = this.options[0]; // Initial selection (overlaid) this.telemetryObjects = telemetryObjects; this.subPlotFactory = subPlotFactory; diff --git a/platform/features/plot/src/modes/PlotOverlayMode.js b/platform/features/plot/src/modes/PlotOverlayMode.js index 2e16a972cf..d8e5c906ae 100644 --- a/platform/features/plot/src/modes/PlotOverlayMode.js +++ b/platform/features/plot/src/modes/PlotOverlayMode.js @@ -38,7 +38,7 @@ define( telemetryObjects, this.panZoomStack ); - this.subplots = [ this.subplot ]; + this.subplots = [this.subplot]; } PlotOverlayMode.prototype.plotTelemetry = function (updater) { diff --git a/platform/features/plot/test/Canvas2DChartSpec.js b/platform/features/plot/test/Canvas2DChartSpec.js index 4ab50afbee..102bdbb127 100644 --- a/platform/features/plot/test/Canvas2DChartSpec.js +++ b/platform/features/plot/test/Canvas2DChartSpec.js @@ -33,7 +33,7 @@ define( chart; beforeEach(function () { - mockCanvas = jasmine.createSpyObj("canvas", [ "getContext" ]); + mockCanvas = jasmine.createSpyObj("canvas", ["getContext"]); mock2d = jasmine.createSpyObj( "2d", [ @@ -72,8 +72,8 @@ define( }); it("allows lines to be drawn", function () { - var testBuffer = [ 0, 1, 3, 8 ], - testColor = [ 0.25, 0.33, 0.66, 1.0 ], + var testBuffer = [0, 1, 3, 8], + testColor = [0.25, 0.33, 0.66, 1.0], testPoints = 2; chart.drawLine(testBuffer, testColor, testPoints); expect(mock2d.beginPath).toHaveBeenCalled(); @@ -84,7 +84,7 @@ define( it("allows squares to be drawn", function () { var testMin = [0, 1], testMax = [10, 10], - testColor = [ 0.25, 0.33, 0.66, 1.0 ]; + testColor = [0.25, 0.33, 0.66, 1.0]; chart.drawSquare(testMin, testMax, testColor); expect(mock2d.fillRect).toHaveBeenCalled(); @@ -92,4 +92,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/plot/test/GLChartSpec.js b/platform/features/plot/test/GLChartSpec.js index 0dacf0532c..3501e60191 100644 --- a/platform/features/plot/test/GLChartSpec.js +++ b/platform/features/plot/test/GLChartSpec.js @@ -33,7 +33,7 @@ define( glChart; beforeEach(function () { - mockCanvas = jasmine.createSpyObj("canvas", [ "getContext" ]); + mockCanvas = jasmine.createSpyObj("canvas", ["getContext"]); mockGL = jasmine.createSpyObj( "gl", [ @@ -98,8 +98,8 @@ define( }); it("allows lines to be drawn", function () { - var testBuffer = [ 0, 1, 3, 8 ], - testColor = [ 0.25, 0.33, 0.66, 1.0 ], + var testBuffer = [0, 1, 3, 8], + testColor = [0.25, 0.33, 0.66, 1.0], testPoints = 2; glChart.drawLine(testBuffer, testColor, testPoints); expect(mockGL.bufferData).toHaveBeenCalledWith( @@ -116,7 +116,7 @@ define( it("allows squares to be drawn", function () { var testMin = [0, 1], testMax = [10, 10], - testColor = [ 0.25, 0.33, 0.66, 1.0 ]; + testColor = [0.25, 0.33, 0.66, 1.0]; glChart.drawSquare(testMin, testMax, testColor); @@ -140,4 +140,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/features/plot/test/MCTChartSpec.js b/platform/features/plot/test/MCTChartSpec.js index db557ff8ac..3fdd4924af 100644 --- a/platform/features/plot/test/MCTChartSpec.js +++ b/platform/features/plot/test/MCTChartSpec.js @@ -55,7 +55,7 @@ define( // mct-chart uses GLChart, so it needs WebGL API mockCanvas = - jasmine.createSpyObj("canvas", [ "getContext", "addEventListener" ]); + jasmine.createSpyObj("canvas", ["getContext", "addEventListener"]); mockGL = jasmine.createSpyObj( "gl", [ @@ -122,7 +122,7 @@ define( it("issues one draw call per line", function () { mctChart.link(mockScope, mockElement); mockScope.$watchCollection.mostRecentCall.args[1]({ - lines: [ {}, {}, {} ] + lines: [{}, {}, {}] }); expect(mockGL.drawArrays.calls.length).toEqual(3); }); diff --git a/platform/features/plot/test/PlotControllerSpec.js b/platform/features/plot/test/PlotControllerSpec.js index c189286eec..4213041387 100644 --- a/platform/features/plot/test/PlotControllerSpec.js +++ b/platform/features/plot/test/PlotControllerSpec.js @@ -63,15 +63,15 @@ define( beforeEach(function () { mockScope = jasmine.createSpyObj( "$scope", - [ "$watch", "$on", "$emit" ] + ["$watch", "$on", "$emit"] ); mockFormatter = jasmine.createSpyObj( "formatter", - [ "formatDomainValue", "formatRangeValue" ] + ["formatDomainValue", "formatRangeValue"] ); mockDomainObject = jasmine.createSpyObj( "domainObject", - [ "getId", "getModel", "getCapability" ] + ["getId", "getModel", "getCapability"] ); mockHandler = jasmine.createSpyObj( "telemetrySubscriber", @@ -96,7 +96,9 @@ define( ); mockHandler.handle.andReturn(mockHandle); - mockThrottle.andCallFake(function (fn) { return fn; }); + mockThrottle.andCallFake(function (fn) { + return fn; + }); mockHandle.getTelemetryObjects.andReturn([mockDomainObject]); mockHandle.getMetadata.andReturn([{}]); mockHandle.getDomainValue.andReturn(123); diff --git a/platform/features/plot/test/PlotOptionsControllerSpec.js b/platform/features/plot/test/PlotOptionsControllerSpec.js index caaf66182a..a95aabce7c 100644 --- a/platform/features/plot/test/PlotOptionsControllerSpec.js +++ b/platform/features/plot/test/PlotOptionsControllerSpec.js @@ -58,7 +58,7 @@ define( mockComposition = [ mockChildOne ]; - mockCompositionCapability.then.andCallFake(function (callback){ + mockCompositionCapability.then.andCallFake(function (callback) { callback(mockComposition); }); @@ -79,7 +79,7 @@ define( 'useCapability', 'getCapability' ]); - mockDomainObject.useCapability.andCallFake(function(capability){ + mockDomainObject.useCapability.andCallFake(function (capability) { return mockUseCapabilities[capability](); }); mockDomainObject.getCapability.andReturn(mockMutationCapability); @@ -120,7 +120,7 @@ define( it("on changes in form values, updates the object model", function () { var scopeConfiguration = mockScope.configuration, - model = mockDomainObject.getModel(); + objModel = mockDomainObject.getModel(); scopeConfiguration.plot.yAxis.autoScale = true; scopeConfiguration.plot.yAxis.key = 'eu'; @@ -130,10 +130,10 @@ define( mockScope.$watchCollection.calls[0].args[1](); expect(mockDomainObject.useCapability).toHaveBeenCalledWith('mutation', jasmine.any(Function)); - mockDomainObject.useCapability.mostRecentCall.args[1](model); - expect(model.configuration.plot.yAxis.autoScale).toBe(true); - expect(model.configuration.plot.yAxis.key).toBe('eu'); - expect(model.configuration.plot.xAxis.key).toBe('lst'); + mockDomainObject.useCapability.mostRecentCall.args[1](objModel); + expect(objModel.configuration.plot.yAxis.autoScale).toBe(true); + expect(objModel.configuration.plot.yAxis.key).toBe('eu'); + expect(objModel.configuration.plot.xAxis.key).toBe('lst'); }); diff --git a/platform/features/plot/test/SubPlotFactorySpec.js b/platform/features/plot/test/SubPlotFactorySpec.js index e3bb8a9b8f..5e8e3affcc 100644 --- a/platform/features/plot/test/SubPlotFactorySpec.js +++ b/platform/features/plot/test/SubPlotFactorySpec.js @@ -36,20 +36,20 @@ define( beforeEach(function () { mockDomainObject = jasmine.createSpyObj( "domainObject", - [ "getId", "getModel", "getCapability" ] + ["getId", "getModel", "getCapability"] ); mockPanZoomStack = jasmine.createSpyObj( "panZoomStack", - [ "getPanZoom" ] + ["getPanZoom"] ); mockFormatter = jasmine.createSpyObj( "formatter", - [ "formatDomainValue", "formatRangeValue" ] + ["formatDomainValue", "formatRangeValue"] ); mockPanZoomStack.getPanZoom.andReturn({ - origin: [ 0, 0 ], - dimensions: [ 100, 100 ] + origin: [0, 0], + dimensions: [100, 100] }); factory = new SubPlotFactory(mockFormatter); @@ -63,4 +63,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/features/plot/test/SubPlotSpec.js b/platform/features/plot/test/SubPlotSpec.js index 4247eddb3c..8d3fc16f67 100644 --- a/platform/features/plot/test/SubPlotSpec.js +++ b/platform/features/plot/test/SubPlotSpec.js @@ -40,7 +40,7 @@ define( beforeEach(function () { mockDomainObject = jasmine.createSpyObj( "domainObject", - [ "getId", "getModel", "getCapability" ] + ["getId", "getModel", "getCapability"] ); mockPanZoomStack = jasmine.createSpyObj( "panZoomStack", @@ -57,16 +57,16 @@ define( ); mockFormatter = jasmine.createSpyObj( "formatter", - [ "formatDomainValue", "formatRangeValue" ] + ["formatDomainValue", "formatRangeValue"] ); mockElement = jasmine.createSpyObj( "element", - [ "getBoundingClientRect" ] + ["getBoundingClientRect"] ); - testOrigin = [ 5, 10 ]; - testDimensions = [ 3000, 1000 ]; - testDomainObjects = [ mockDomainObject, mockDomainObject ]; + testOrigin = [5, 10]; + testDimensions = [3000, 1000]; + testDomainObjects = [mockDomainObject, mockDomainObject]; mockPanZoomStack.getOrigin.andReturn(testOrigin); mockPanZoomStack.getDimensions.andReturn(testDimensions); @@ -163,7 +163,7 @@ define( mockPanZoomStack.getDimensions.andReturn([0,0]); expect(subplot.hasDomainData()).toEqual(false); }); - + it("disallows marquee zoom when start and end Marquee is at the same position", function () { expect(mockPanZoomStack.pushPanZoom).not.toHaveBeenCalled(); diff --git a/platform/features/plot/test/elements/PlotAxisSpec.js b/platform/features/plot/test/elements/PlotAxisSpec.js index 0218e0b14f..922d20d1a8 100644 --- a/platform/features/plot/test/elements/PlotAxisSpec.js +++ b/platform/features/plot/test/elements/PlotAxisSpec.js @@ -88,7 +88,7 @@ define( }); it("reflects changes to applicable metadata", function () { - axis.updateMetadata([ testMetadatas[1] ]); + axis.updateMetadata([testMetadatas[1]]); expect(axis.options).toEqual([ { key: "t0", name: "T0" }, { key: "t2", name: "T2" } diff --git a/platform/features/plot/test/elements/PlotLimitTrackerSpec.js b/platform/features/plot/test/elements/PlotLimitTrackerSpec.js index d37507c628..4212f57c49 100644 --- a/platform/features/plot/test/elements/PlotLimitTrackerSpec.js +++ b/platform/features/plot/test/elements/PlotLimitTrackerSpec.js @@ -41,11 +41,11 @@ define( mockTelemetryObjects = ['a', 'b', 'c'].map(function (id, i) { var mockTelemetryObject = jasmine.createSpyObj( 'object-' + id, - [ 'getId', 'getCapability', 'getModel' ] + ['getId', 'getCapability', 'getModel'] ), mockLimitCapability = jasmine.createSpyObj( 'limit-' + id, - [ 'evaluate' ] + ['evaluate'] ); testData[id] = { id: id, value: i }; mockTelemetryObject.getId.andReturn(id); diff --git a/platform/features/plot/test/elements/PlotLineBufferSpec.js b/platform/features/plot/test/elements/PlotLineBufferSpec.js index 5b8f7a94e7..405dd4df10 100644 --- a/platform/features/plot/test/elements/PlotLineBufferSpec.js +++ b/platform/features/plot/test/elements/PlotLineBufferSpec.js @@ -38,8 +38,8 @@ define( buffer; beforeEach(function () { - testDomainValues = [ 1, 3, 7, 9, 14, 15 ]; - testRangeValues = [ 8, 0, 3, 9, 8, 11 ]; + testDomainValues = [1, 3, 7, 9, 14, 15]; + testRangeValues = [8, 0, 3, 9, 8, 11]; mockSeries = jasmine.createSpyObj( "series", ['getPointCount', 'getDomainValue', 'getRangeValue'] @@ -70,7 +70,7 @@ define( // that domain offset was adjusted for. expect( Array.prototype.slice.call(buffer.getBuffer()).slice(0, 12) - ).toEqual([ -41, 8, -39, 0, -35, 3, -33, 9, -28, 8, -27, 11]); + ).toEqual([-41, 8, -39, 0, -35, 3, -33, 9, -28, 8, -27, 11]); expect(buffer.getLength()).toEqual(6); }); @@ -84,8 +84,8 @@ define( }); it("allows insertion in the middle", function () { - var head = [ -41, 8, -39, 0, -35, 3 ], - tail = [ -33, 9, -28, 8, -27, 11]; + var head = [-41, 8, -39, 0, -35, 3], + tail = [-33, 9, -28, 8, -27, 11]; buffer.insert(mockSeries, 3); expect( Array.prototype.slice.call(buffer.getBuffer()).slice(0, 24) @@ -98,7 +98,7 @@ define( expect(buffer.getLength()).toEqual(4); expect( Array.prototype.slice.call(buffer.getBuffer()).slice(0, 8) - ).toEqual([ -35, 3, -33, 9, -28, 8, -27, 11]); + ).toEqual([-35, 3, -33, 9, -28, 8, -27, 11]); }); it("expands buffer when needed to accommodate more data", function () { diff --git a/platform/features/plot/test/elements/PlotLineSpec.js b/platform/features/plot/test/elements/PlotLineSpec.js index d0a24440d1..a6a3ed7800 100644 --- a/platform/features/plot/test/elements/PlotLineSpec.js +++ b/platform/features/plot/test/elements/PlotLineSpec.js @@ -101,7 +101,7 @@ define( }); it("allows series insertion", function () { - testSeries = [ [ 50, 42 ], [ 100, 200 ], [ 150, 12321 ] ]; + testSeries = [[50, 42], [100, 200], [150, 12321]]; line.addSeries(mockSeries); // Should have managed insertion index choices to get to... expect(testDomainBuffer).toEqual([50, 100, 150]); @@ -109,7 +109,7 @@ define( }); it("splits series insertion when necessary", function () { - testSeries = [ [ 50, 42 ], [ 100, 200 ], [ 150, 12321 ] ]; + testSeries = [[50, 42], [100, 200], [150, 12321]]; line.addPoint(75, 1); line.addSeries(mockSeries); // Should have managed insertion index choices to get to... @@ -130,4 +130,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/plot/test/elements/PlotPaletteSpec.js b/platform/features/plot/test/elements/PlotPaletteSpec.js index 4a3cf66f2d..134cf41e9b 100644 --- a/platform/features/plot/test/elements/PlotPaletteSpec.js +++ b/platform/features/plot/test/elements/PlotPaletteSpec.js @@ -120,4 +120,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/features/plot/test/elements/PlotPanZoomStackGroupSpec.js b/platform/features/plot/test/elements/PlotPanZoomStackGroupSpec.js index e236111c5b..52a47a8b10 100644 --- a/platform/features/plot/test/elements/PlotPanZoomStackGroupSpec.js +++ b/platform/features/plot/test/elements/PlotPanZoomStackGroupSpec.js @@ -49,7 +49,7 @@ define( it("synchronizes pan-zoom stack depth", function () { expect(group.getDepth()).toEqual(1); - group.getPanZoomStack(1).pushPanZoom([ 10, 20 ], [ 30, 40 ]); + group.getPanZoomStack(1).pushPanZoom([10, 20], [30, 40]); stacks.forEach(function (stack) { expect(stack.getDepth()).toEqual(2); }); @@ -58,11 +58,11 @@ define( it("synchronizes domain but not range", function () { // Set up different initial states stacks.forEach(function (stack, i) { - stack.pushPanZoom([ i, i ], [ i, i ]); + stack.pushPanZoom([i, i], [i, i]); }); // Push a new pan-zoom state onto one of the stacks - group.getPanZoomStack(1).pushPanZoom([ 99, 99 ], [ 42, 42 ]); + group.getPanZoomStack(1).pushPanZoom([99, 99], [42, 42]); // Should changed domain values for all stacks, but // only changed range values for stack 1 @@ -85,7 +85,7 @@ define( it("clears pan-zoom on request", function () { // Set up different initial states stacks.forEach(function (stack, i) { - stack.pushPanZoom([ i, i ], [ i, i ]); + stack.pushPanZoom([i, i], [i, i]); }); // Verify that we have a greater depth @@ -104,7 +104,7 @@ define( it("pops pan-zoom on request", function () { // Set up different initial states stacks.forEach(function (stack, i) { - stack.pushPanZoom([ i, i ], [ i, i ]); + stack.pushPanZoom([i, i], [i, i]); }); // Verify that we have a greater depth @@ -123,4 +123,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/plot/test/elements/PlotPanZoomStackSpec.js b/platform/features/plot/test/elements/PlotPanZoomStackSpec.js index 0e1fa320e6..7f2760cdef 100644 --- a/platform/features/plot/test/elements/PlotPanZoomStackSpec.js +++ b/platform/features/plot/test/elements/PlotPanZoomStackSpec.js @@ -46,10 +46,10 @@ define( } beforeEach(function () { - initialOrigin = [ 4, 2 ]; - initialDimensions = [ 600, 400 ]; - otherOrigins = [ [8, 6], [12, 9] ]; - otherDimensions = [ [400, 300], [200, 300] ]; + initialOrigin = [4, 2]; + initialDimensions = [600, 400]; + otherOrigins = [[8, 6], [12, 9]]; + otherDimensions = [[400, 300], [200, 300]]; panZoomStack = new PlotPanZoomStack(initialOrigin, initialDimensions); }); @@ -96,4 +96,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/features/plot/test/elements/PlotPositionSpec.js b/platform/features/plot/test/elements/PlotPositionSpec.js index 03382b61e0..61f6e2b965 100644 --- a/platform/features/plot/test/elements/PlotPositionSpec.js +++ b/platform/features/plot/test/elements/PlotPositionSpec.js @@ -29,13 +29,13 @@ define( describe("A plot position", function () { var mockPanZoom, - testOrigin = [ 10, 20 ], - testDimensions = [ 800, 10 ]; + testOrigin = [10, 20], + testDimensions = [800, 10]; beforeEach(function () { mockPanZoom = jasmine.createSpyObj( "panZoomStack", - [ "getPanZoom" ] + ["getPanZoom"] ); mockPanZoom.getPanZoom.andReturn({ origin: testOrigin, @@ -64,4 +64,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/features/plot/test/elements/PlotPreparerSpec.js b/platform/features/plot/test/elements/PlotPreparerSpec.js index 414c3b56e1..ded5c5454d 100644 --- a/platform/features/plot/test/elements/PlotPreparerSpec.js +++ b/platform/features/plot/test/elements/PlotPreparerSpec.js @@ -34,7 +34,7 @@ define( function makeMockData(scale) { var mockData = jasmine.createSpyObj( "data" + scale, - [ "getPointCount", "getDomainValue", "getRangeValue" ] + ["getPointCount", "getDomainValue", "getRangeValue"] ); mockData.getPointCount.andReturn(1000); mockData.getDomainValue.andCallFake(function (i) { @@ -90,4 +90,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/plot/test/elements/PlotSeriesWindowSpec.js b/platform/features/plot/test/elements/PlotSeriesWindowSpec.js index a3ba8646ea..eaf619751f 100644 --- a/platform/features/plot/test/elements/PlotSeriesWindowSpec.js +++ b/platform/features/plot/test/elements/PlotSeriesWindowSpec.js @@ -31,11 +31,11 @@ define( beforeEach(function () { testSeries = [ - [ 0, 42 ], - [ 10, 1 ], - [ 20, 4 ], - [ 30, 9 ], - [ 40, 3 ] + [0, 42], + [10, 1], + [20, 4], + [30, 9], + [40, 3] ]; mockSeries = jasmine.createSpyObj( @@ -90,4 +90,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/plot/test/elements/PlotTickGeneratorSpec.js b/platform/features/plot/test/elements/PlotTickGeneratorSpec.js index ae4e39c88d..b26a6a0051 100644 --- a/platform/features/plot/test/elements/PlotTickGeneratorSpec.js +++ b/platform/features/plot/test/elements/PlotTickGeneratorSpec.js @@ -35,16 +35,16 @@ define( beforeEach(function () { mockPanZoomStack = jasmine.createSpyObj( "panZoomStack", - [ "getPanZoom" ] + ["getPanZoom"] ); mockFormatter = jasmine.createSpyObj( "formatter", - [ "formatDomainValue", "formatRangeValue" ] + ["formatDomainValue", "formatRangeValue"] ); mockPanZoomStack.getPanZoom.andReturn({ - origin: [ 0, 0 ], - dimensions: [ 100, 100 ] + origin: [0, 0], + dimensions: [100, 100] }); generator = @@ -70,4 +70,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/plot/test/elements/PlotUpdaterSpec.js b/platform/features/plot/test/elements/PlotUpdaterSpec.js index 158090892c..e91da5f19a 100644 --- a/platform/features/plot/test/elements/PlotUpdaterSpec.js +++ b/platform/features/plot/test/elements/PlotUpdaterSpec.js @@ -39,19 +39,19 @@ define( function makeMockDomainObject(id) { var mockDomainObject = jasmine.createSpyObj( "object-" + id, - [ "getId", "getCapability", "getModel" ] + ["getId", "getCapability", "getModel"] ); mockDomainObject.getId.andReturn(id); return mockDomainObject; } beforeEach(function () { - var ids = [ 'a', 'b', 'c' ], + var ids = ['a', 'b', 'c'], mockObjects = ids.map(makeMockDomainObject); mockSubscription = jasmine.createSpyObj( "subscription", - [ "getDomainValue", "getRangeValue", "getTelemetryObjects" ] + ["getDomainValue", "getRangeValue", "getTelemetryObjects"] ); mockSeries = jasmine.createSpyObj( 'series', diff --git a/platform/features/plot/test/modes/PlotModeOptionsSpec.js b/platform/features/plot/test/modes/PlotModeOptionsSpec.js index 5d382d08d4..37c74cdf8f 100644 --- a/platform/features/plot/test/modes/PlotModeOptionsSpec.js +++ b/platform/features/plot/test/modes/PlotModeOptionsSpec.js @@ -34,11 +34,11 @@ define( beforeEach(function () { mockDomainObject = jasmine.createSpyObj( "domainObject", - [ "getId", "getModel", "getCapability" ] + ["getId", "getModel", "getCapability"] ); mockSubPlotFactory = jasmine.createSpyObj( "subPlotFactory", - [ "createSubPlot" ] + ["createSubPlot"] ); }); @@ -84,4 +84,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/features/plot/test/modes/PlotOverlayModeSpec.js b/platform/features/plot/test/modes/PlotOverlayModeSpec.js index 0560d428f7..877820750c 100644 --- a/platform/features/plot/test/modes/PlotOverlayModeSpec.js +++ b/platform/features/plot/test/modes/PlotOverlayModeSpec.js @@ -58,11 +58,11 @@ define( beforeEach(function () { mockDomainObject = jasmine.createSpyObj( "domainObject", - [ "getId", "getModel", "getCapability" ] + ["getId", "getModel", "getCapability"] ); mockSubPlotFactory = jasmine.createSpyObj( "subPlotFactory", - [ "createSubPlot" ] + ["createSubPlot"] ); // Prepared telemetry data mockPrepared = jasmine.createSpyObj( @@ -181,4 +181,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/features/plot/test/modes/PlotStackModeSpec.js b/platform/features/plot/test/modes/PlotStackModeSpec.js index cf4407e7e0..65e6962591 100644 --- a/platform/features/plot/test/modes/PlotStackModeSpec.js +++ b/platform/features/plot/test/modes/PlotStackModeSpec.js @@ -58,16 +58,16 @@ define( beforeEach(function () { mockDomainObject = jasmine.createSpyObj( "domainObject", - [ "getId", "getModel", "getCapability" ] + ["getId", "getModel", "getCapability"] ); mockSubPlotFactory = jasmine.createSpyObj( "subPlotFactory", - [ "createSubPlot" ] + ["createSubPlot"] ); // Prepared telemetry data mockPrepared = jasmine.createSpyObj( "prepared", - [ "getDomainOffset", "getOrigin", "getDimensions", "getLineBuffers" ] + ["getDomainOffset", "getOrigin", "getDimensions", "getLineBuffers"] ); mockSubPlotFactory.createSubPlot.andCallFake(createMockSubPlot); @@ -176,4 +176,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/plot/test/policies/PlotViewPolicySpec.js b/platform/features/plot/test/policies/PlotViewPolicySpec.js index ec01ec05bc..008d4275da 100644 --- a/platform/features/plot/test/policies/PlotViewPolicySpec.js +++ b/platform/features/plot/test/policies/PlotViewPolicySpec.js @@ -51,23 +51,23 @@ define( }); it("allows the imagery view for domain objects with numeric telemetry", function () { - testMetadata.ranges = [ { key: "foo", format: "number" } ]; + testMetadata.ranges = [{ key: "foo", format: "number" }]; expect(policy.allow(testView, mockDomainObject)).toBeTruthy(); }); it("allows the imagery view for domain objects with unspecified telemetry", function () { - testMetadata.ranges = [ { key: "foo" } ]; + testMetadata.ranges = [{ key: "foo" }]; expect(policy.allow(testView, mockDomainObject)).toBeTruthy(); }); it("disallows the imagery view for domain objects without image telemetry", function () { - testMetadata.ranges = [ { key: "foo", format: "somethingElse" } ]; + testMetadata.ranges = [{ key: "foo", format: "somethingElse" }]; expect(policy.allow(testView, mockDomainObject)).toBeFalsy(); }); it("allows other views", function () { testView.key = "somethingElse"; - testMetadata.ranges = [ { key: "foo", format: "somethingElse" } ]; + testMetadata.ranges = [{ key: "foo", format: "somethingElse" }]; expect(policy.allow(testView, mockDomainObject)).toBeTruthy(); }); diff --git a/platform/features/static-markup/bundle.js b/platform/features/static-markup/bundle.js index 5e05263619..59376ff957 100644 --- a/platform/features/static-markup/bundle.js +++ b/platform/features/static-markup/bundle.js @@ -21,11 +21,11 @@ *****************************************************************************/ define([ - + "text!./res/markup.html", 'legacyRegistry' ], function ( - + markupTemplate, legacyRegistry ) { diff --git a/platform/features/table/bundle.js b/platform/features/table/bundle.js index ee907bc963..cdcb6603d9 100644 --- a/platform/features/table/bundle.js +++ b/platform/features/table/bundle.js @@ -133,7 +133,7 @@ define([ "telemetry" ], "delegation": true, - "editable": true + "editable": false }, { "name": "Real-time Table", @@ -144,7 +144,7 @@ define([ "telemetry" ], "delegation": true, - "editable": true + "editable": false } ], "directives": [ diff --git a/platform/features/table/src/RangeColumn.js b/platform/features/table/src/RangeColumn.js index f4c5df8c76..0b0636ac16 100644 --- a/platform/features/table/src/RangeColumn.js +++ b/platform/features/table/src/RangeColumn.js @@ -56,7 +56,7 @@ define( return { cssClass: alarm && alarm.cssClass, - text: typeof(value) === 'undefined' ? undefined : this.telemetryFormatter.formatRangeValue(value) + text: typeof (value) === 'undefined' ? undefined : this.telemetryFormatter.formatRangeValue(value) }; }; diff --git a/platform/features/table/src/TableConfiguration.js b/platform/features/table/src/TableConfiguration.js index 697a4a2699..8b9363f66f 100644 --- a/platform/features/table/src/TableConfiguration.js +++ b/platform/features/table/src/TableConfiguration.js @@ -64,7 +64,7 @@ define( }); }); - if (this.columns.length > 0){ + if (this.columns.length > 0) { self.addColumn(new NameColumn(), 0); } } @@ -91,7 +91,7 @@ define( * @returns {*|string} */ TableConfiguration.prototype.getColumnTitle = function (column) { - return column.getTitle(); + return column.getTitle(); }; /** @@ -100,7 +100,7 @@ define( */ TableConfiguration.prototype.getHeaders = function () { var self = this; - return this.columns.map(function (column, i){ + return this.columns.map(function (column, i) { return self.getColumnTitle(column) || 'Column ' + (i + 1); }); }; @@ -115,11 +115,11 @@ define( */ TableConfiguration.prototype.getRowValues = function (telemetryObject, datum) { var self = this; - return this.columns.reduce(function (rowObject, column, i){ + return this.columns.reduce(function (rowObject, column, i) { var columnTitle = self.getColumnTitle(column) || 'Column ' + (i + 1), columnValue = column.getValue(telemetryObject, datum); - if (columnValue !== undefined && columnValue.text === undefined){ + if (columnValue !== undefined && columnValue.text === undefined) { columnValue.text = ''; } // Don't replace something with nothing. @@ -158,7 +158,7 @@ define( config2Keys = Object.keys(config2); return (config1Keys.length !== config2Keys.length) || - config1Keys.some(function(key){ + config1Keys.some(function (key) { return config1[key] !== config2[key]; }); } diff --git a/platform/features/table/src/controllers/HistoricalTableController.js b/platform/features/table/src/controllers/HistoricalTableController.js index 259b000e46..69446f58f4 100644 --- a/platform/features/table/src/controllers/HistoricalTableController.js +++ b/platform/features/table/src/controllers/HistoricalTableController.js @@ -49,7 +49,7 @@ define( var rowData = [], self = this; - this.handle.getTelemetryObjects().forEach(function (telemetryObject){ + this.handle.getTelemetryObjects().forEach(function (telemetryObject) { var series = self.handle.getSeries(telemetryObject) || {}, pointCount = series.getPointCount ? series.getPointCount() : 0, i = 0; diff --git a/platform/features/table/src/controllers/MCTTableController.js b/platform/features/table/src/controllers/MCTTableController.js index 0ccdfbe583..e4cfa45b23 100644 --- a/platform/features/table/src/controllers/MCTTableController.js +++ b/platform/features/table/src/controllers/MCTTableController.js @@ -32,15 +32,15 @@ define( /** * Set default values for optional parameters on a given scope */ - function setDefaults($scope) { - if (typeof $scope.enableFilter === 'undefined') { - $scope.enableFilter = true; - $scope.filters = {}; + function setDefaults(scope) { + if (typeof scope.enableFilter === 'undefined') { + scope.enableFilter = true; + scope.filters = {}; } - if (typeof $scope.enableSort === 'undefined') { - $scope.enableSort = true; - $scope.sortColumn = undefined; - $scope.sortDirection = undefined; + if (typeof scope.enableSort === 'undefined') { + scope.enableSort = true; + scope.sortColumn = undefined; + scope.sortDirection = undefined; } } @@ -89,8 +89,8 @@ define( //Use timeout to defer execution until next digest when any // pending UI changes have completed, eg. a new row in the table. if (this.$scope.autoScroll) { - this.$timeout(function (){ - self.scrollable[0].scrollTop = self.scrollable[0].scrollHeight; + this.$timeout(function () { + self.scrollable[0].scrollTop = self.scrollable[0].scrollHeight; }); } }; @@ -125,10 +125,10 @@ define( // Do a sequential search here. Only way of finding row is by // object equality, so array is in effect unsorted. indexInDisplayRows = this.$scope.displayRows.indexOf(row); - if (indexInDisplayRows !== -1) { - this.$scope.displayRows.splice(indexInDisplayRows, 1); - this.setVisibleRows(); - } + if (indexInDisplayRows !== -1) { + this.$scope.displayRows.splice(indexInDisplayRows, 1); + this.setVisibleRows(); + } }; /** @@ -222,7 +222,7 @@ define( * sorting. */ MCTTableController.prototype.setHeaders = function (newHeaders) { - if (!newHeaders){ + if (!newHeaders) { return; } @@ -234,8 +234,8 @@ define( // contain the column currently sorted on. if (this.$scope.enableSort && newHeaders.indexOf(this.$scope.sortColumn) === -1) { - this.$scope.sortColumn = undefined; - this.$scope.sortDirection = undefined; + this.$scope.sortColumn = undefined; + this.$scope.sortDirection = undefined; } this.setRows(this.$scope.rows); }; @@ -283,14 +283,14 @@ define( self = this, sortKey = this.$scope.sortColumn; - function binarySearch(searchArray, searchElement, min, max){ + function binarySearch(searchArray, searchElement, min, max) { var sampleAt = Math.floor((max - min) / 2) + min; if (max < min) { return min; // Element is not in array, min gives direction } - switch(self.sortComparator(searchElement[sortKey].text, + switch (self.sortComparator(searchElement[sortKey].text, searchArray[sampleAt][sortKey].text)) { case -1: return binarySearch(searchArray, searchElement, min, @@ -310,9 +310,9 @@ define( //Sort is enabled, perform binary search to find insertion point index = binarySearch(array, element, 0, array.length - 1); } - if (index === -1){ + if (index === -1) { array.unshift(element); - } else if (index === array.length){ + } else if (index === array.length) { array.push(element); } else { array.splice(index, 0, element); @@ -342,7 +342,7 @@ define( * @returns {*} The value cast to a Number, or the original value if * a Number representation is not possible. */ - function toNumber (value){ + function toNumber(value) { var val = !isNaN(Number(value)) && !isNaN(parseFloat(value)) ? Number(value) : value; return val; } @@ -410,7 +410,7 @@ define( currentColumnLength, largestColumn, largestColumnLength; - if (row[key]){ + if (row[key]) { currentColumn = (row[key]).text; currentColumnLength = (currentColumn && currentColumn.length) ? @@ -485,13 +485,13 @@ define( /** * Returns true if row matches all filters. */ - function matchRow(filters, row) { - return Object.keys(filters).every(function (key) { + function matchRow(filterMap, row) { + return Object.keys(filterMap).every(function (key) { if (!row[key]) { return false; } var testVal = String(row[key].text).toLowerCase(); - return testVal.indexOf(filters[key]) !== -1; + return testVal.indexOf(filterMap[key]) !== -1; }); } diff --git a/platform/features/table/src/controllers/RealtimeTableController.js b/platform/features/table/src/controllers/RealtimeTableController.js index 042ece6e61..d9a3efd559 100644 --- a/platform/features/table/src/controllers/RealtimeTableController.js +++ b/platform/features/table/src/controllers/RealtimeTableController.js @@ -58,7 +58,7 @@ define( $scope.$watch('domainObject', function (domainObject) { //When a domain object becomes available, check whether the // view should auto-scroll to the bottom. - if (domainObject && hasStringTelemetry(domainObject)){ + if (domainObject && hasStringTelemetry(domainObject)) { $scope.autoScroll = true; } }); @@ -70,11 +70,11 @@ define( * Overrides method on TelemetryTableController providing handling * for realtime data. */ - RealtimeTableController.prototype.addRealtimeData = function() { + RealtimeTableController.prototype.addRealtimeData = function () { var self = this, datum, row; - this.handle.getTelemetryObjects().forEach(function (telemetryObject){ + this.handle.getTelemetryObjects().forEach(function (telemetryObject) { datum = self.handle.getDatum(telemetryObject); if (datum) { //Populate row values from telemetry datum diff --git a/platform/features/table/src/controllers/TableOptionsController.js b/platform/features/table/src/controllers/TableOptionsController.js index 96b9eb91c1..0ca83b088c 100644 --- a/platform/features/table/src/controllers/TableOptionsController.js +++ b/platform/features/table/src/controllers/TableOptionsController.js @@ -59,7 +59,7 @@ define( }); } - $scope.$watch('domainObject', function(domainObject) { + $scope.$watch('domainObject', function (domainObject) { unlisten(); self.populateForm(domainObject.getModel()); @@ -72,10 +72,10 @@ define( * Maintain a configuration object on scope that stores column * configuration. On change, synchronize with object model. */ - $scope.$watchCollection('configuration.table.columns', function (columns){ - if (columns){ + $scope.$watchCollection('configuration.table.columns', function (columns) { + if (columns) { self.domainObject.useCapability('mutation', function (model) { - model.configuration.table.columns = columns; + model.configuration.table.columns = columns; }); self.domainObject.getCapability('persistence').persist(); } @@ -92,13 +92,13 @@ define( var columnsDefinition = (((model.configuration || {}).table || {}).columns || {}), rows = []; this.$scope.columnsForm = { - 'name':'Columns', + 'name': 'Columns', 'sections': [{ 'name': 'Columns', 'rows': rows }]}; - Object.keys(columnsDefinition).forEach(function (key){ + Object.keys(columnsDefinition).forEach(function (key) { rows.push({ 'name': key, 'control': 'checkbox', diff --git a/platform/features/table/src/controllers/TelemetryTableController.js b/platform/features/table/src/controllers/TelemetryTableController.js index 38d1551038..3f4e69db12 100644 --- a/platform/features/table/src/controllers/TelemetryTableController.js +++ b/platform/features/table/src/controllers/TelemetryTableController.js @@ -58,7 +58,7 @@ define( $scope.rows = []; // Subscribe to telemetry when a domain object becomes available - this.$scope.$watch('domainObject', function(){ + this.$scope.$watch('domainObject', function () { self.subscribe(); self.registerChangeListeners(); }); diff --git a/platform/features/table/src/directives/MCTTable.js b/platform/features/table/src/directives/MCTTable.js index 2eeb167f08..5dd8f9f03f 100644 --- a/platform/features/table/src/directives/MCTTable.js +++ b/platform/features/table/src/directives/MCTTable.js @@ -88,7 +88,7 @@ define( enableFilter: "=?", enableSort: "=?", autoScroll: "=?" - }, + } }; } diff --git a/platform/features/table/test/DomainColumnSpec.js b/platform/features/table/test/DomainColumnSpec.js index bb6debd9a3..e707c8dd0b 100644 --- a/platform/features/table/test/DomainColumnSpec.js +++ b/platform/features/table/test/DomainColumnSpec.js @@ -38,11 +38,11 @@ define( beforeEach(function () { mockDataSet = jasmine.createSpyObj( "data", - [ "getDomainValue" ] + ["getDomainValue"] ); mockFormatter = jasmine.createSpyObj( "formatter", - [ "formatDomainValue", "formatRangeValue" ] + ["formatDomainValue", "formatRangeValue"] ); testMetadata = { key: "testKey", diff --git a/platform/features/table/test/NameColumnSpec.js b/platform/features/table/test/NameColumnSpec.js index 0072b4492c..d381758330 100644 --- a/platform/features/table/test/NameColumnSpec.js +++ b/platform/features/table/test/NameColumnSpec.js @@ -34,7 +34,7 @@ define( beforeEach(function () { mockDomainObject = jasmine.createSpyObj( "domainObject", - [ "getModel" ] + ["getModel"] ); mockDomainObject.getModel.andReturn({ name: "Test object name" diff --git a/platform/features/table/test/RangeColumnSpec.js b/platform/features/table/test/RangeColumnSpec.js index 304a8a1b4b..45383fcdf7 100644 --- a/platform/features/table/test/RangeColumnSpec.js +++ b/platform/features/table/test/RangeColumnSpec.js @@ -40,7 +40,7 @@ define( testDatum = { testKey: 123, otherKey: 456 }; mockFormatter = jasmine.createSpyObj( "formatter", - [ "formatDomainValue", "formatRangeValue" ] + ["formatDomainValue", "formatRangeValue"] ); testMetadata = { key: "testKey", @@ -48,7 +48,7 @@ define( }; mockDomainObject = jasmine.createSpyObj( "domainObject", - [ "getModel", "getCapability" ] + ["getModel", "getCapability"] ); mockFormatter.formatRangeValue.andReturn(TEST_RANGE_VALUE); diff --git a/platform/features/table/test/TableConfigurationSpec.js b/platform/features/table/test/TableConfigurationSpec.js index 83dc122055..2f59fb173f 100644 --- a/platform/features/table/test/TableConfigurationSpec.js +++ b/platform/features/table/test/TableConfigurationSpec.js @@ -44,10 +44,10 @@ define( 'formatDomainValue', 'formatRangeValue' ]); - mockTelemetryFormatter.formatDomainValue.andCallFake(function(valueIn){ + mockTelemetryFormatter.formatDomainValue.andCallFake(function (valueIn) { return valueIn; }); - mockTelemetryFormatter.formatRangeValue.andCallFake(function(valueIn){ + mockTelemetryFormatter.formatRangeValue.andCallFake(function (valueIn) { return valueIn; }); @@ -87,7 +87,7 @@ define( expect(table.columns[2]).toBe(thirdColumn); }); - describe("Building columns from telemetry metadata", function() { + describe("Building columns from telemetry metadata", function () { var metadata = [{ ranges: [ { @@ -113,21 +113,21 @@ define( ] }]; - beforeEach(function() { + beforeEach(function () { table.populateColumns(metadata); }); - it("populates columns", function() { + it("populates columns", function () { expect(table.columns.length).toBe(5); }); - it("Build columns populates columns with domains to the left", function() { + it("Build columns populates columns with domains to the left", function () { expect(table.columns[1] instanceof DomainColumn).toBeTruthy(); expect(table.columns[2] instanceof DomainColumn).toBeTruthy(); expect(table.columns[3] instanceof DomainColumn).toBeFalsy(); }); - it("Produces headers for each column based on title", function() { + it("Produces headers for each column based on title", function () { var headers, firstColumn = table.columns[0]; @@ -138,16 +138,16 @@ define( }); it("Provides a default configuration with all columns" + - " visible", function() { + " visible", function () { var configuration = table.buildColumnConfiguration(); expect(configuration).toBeDefined(); - expect(Object.keys(configuration).every(function(key){ + expect(Object.keys(configuration).every(function (key) { return configuration[key]; })); }); - it("Column configuration exposes persisted configuration", function() { + it("Column configuration exposes persisted configuration", function () { var tableConfig, modelConfig = { table: { @@ -168,7 +168,7 @@ define( var datum, rowValues; - beforeEach(function() { + beforeEach(function () { datum = { 'range1': 'range 1 value', 'range2': 'range 2 value', @@ -178,14 +178,14 @@ define( rowValues = table.getRowValues(mockDomainObject, datum); }); - it("Returns a value for every column", function() { + it("Returns a value for every column", function () { expect(rowValues['Range 1'].text).toBeDefined(); expect(rowValues['Range 1'].text).toEqual('range 1' + ' value'); }); it("Uses the telemetry formatter to appropriately format" + - " telemetry values", function() { + " telemetry values", function () { expect(mockTelemetryFormatter.formatRangeValue).toHaveBeenCalled(); }); }); diff --git a/platform/features/table/test/controllers/HistoricalTableControllerSpec.js b/platform/features/table/test/controllers/HistoricalTableControllerSpec.js index a38681681c..54c213d5a6 100644 --- a/platform/features/table/test/controllers/HistoricalTableControllerSpec.js +++ b/platform/features/table/test/controllers/HistoricalTableControllerSpec.js @@ -39,7 +39,7 @@ define( function promise(value) { return { - then: function (callback){ + then: function (callback) { return promise(callback(value)); } }; @@ -53,13 +53,13 @@ define( '$watchCollection' ]); - mockScope.$on.andCallFake(function (expression, callback){ + mockScope.$on.andCallFake(function (expression, callback) { watches[expression] = callback; }); - mockScope.$watch.andCallFake(function (expression, callback){ - watches[expression] = callback; + mockScope.$watch.andCallFake(function (expression, callback) { + watches[expression] = callback; }); - mockScope.$watchCollection.andCallFake(function (expression, callback){ + mockScope.$watchCollection.andCallFake(function (expression, callback) { watches[expression] = callback; }); @@ -80,7 +80,7 @@ define( mockTable.columns = []; mockTable.buildColumnConfiguration.andReturn(mockConfiguration); - mockDomainObject= jasmine.createSpyObj('domainObject', [ + mockDomainObject = jasmine.createSpyObj('domainObject', [ 'getCapability', 'useCapability', 'getModel' @@ -118,7 +118,7 @@ define( expect(mockTelemetryHandle.request).toHaveBeenCalled(); }); - it('Unsubscribes from telemetry when scope is destroyed',function () { + it('Unsubscribes from telemetry when scope is destroyed', function () { controller.handle = mockTelemetryHandle; watches.$destroy(); expect(mockTelemetryHandle.unsubscribe).toHaveBeenCalled(); @@ -139,7 +139,7 @@ define( }); }); - it('updates the rows on scope when historical telemetry is received', function (){ + it('updates the rows on scope when historical telemetry is received', function () { var mockSeries = { getPointCount: function () { return 5; @@ -154,7 +154,7 @@ define( mockRow = {'domain': 'Domain Value', 'range': 'Range' + ' Value'}; - mockTelemetryHandle.makeDatum.andCallFake(function (){ + mockTelemetryHandle.makeDatum.andCallFake(function () { return mockRow; }); mockTable.getRowValues.andReturn(mockRow); @@ -167,7 +167,7 @@ define( expect(controller.$scope.rows[0]).toBe(mockRow); }); - it('filters the visible columns based on configuration', function (){ + it('filters the visible columns based on configuration', function () { controller.filterColumns(); expect(controller.$scope.headers.length).toBe(3); expect(controller.$scope.headers[2]).toEqual('domain1'); @@ -178,9 +178,9 @@ define( expect(controller.$scope.headers[2]).toBeUndefined(); }); - describe('creates event listeners', function (){ + describe('creates event listeners', function () { beforeEach(function () { - spyOn(controller,'subscribe'); + spyOn(controller, 'subscribe'); spyOn(controller, 'filterColumns'); }); diff --git a/platform/features/table/test/controllers/MCTTableControllerSpec.js b/platform/features/table/test/controllers/MCTTableControllerSpec.js index 84cf154abf..26578ba244 100644 --- a/platform/features/table/test/controllers/MCTTableControllerSpec.js +++ b/platform/features/table/test/controllers/MCTTableControllerSpec.js @@ -26,7 +26,7 @@ define( ], function (MCTTableController) { - describe('The MCTTable Controller', function() { + describe('The MCTTable Controller', function () { var controller, mockScope, @@ -42,7 +42,7 @@ define( }; } - beforeEach(function() { + beforeEach(function () { watches = {}; mockScope = jasmine.createSpyObj('scope', [ @@ -50,7 +50,7 @@ define( '$on', '$watchCollection' ]); - mockScope.$watchCollection.andCallFake(function(event, callback) { + mockScope.$watchCollection.andCallFake(function (event, callback) { watches[event] = callback; }); @@ -75,15 +75,15 @@ define( spyOn(controller, 'setVisibleRows').andCallThrough(); }); - it('Reacts to changes to filters, headers, and rows', function() { + it('Reacts to changes to filters, headers, and rows', function () { expect(mockScope.$watchCollection).toHaveBeenCalledWith('filters', jasmine.any(Function)); expect(mockScope.$watch).toHaveBeenCalledWith('headers', jasmine.any(Function)); expect(mockScope.$watch).toHaveBeenCalledWith('rows', jasmine.any(Function)); }); - describe('rows', function() { + describe('rows', function () { var testRows = []; - beforeEach(function() { + beforeEach(function () { testRows = [ { 'col1': {'text': 'row1 col1 match'}, @@ -104,30 +104,30 @@ define( mockScope.rows = testRows; }); - it('Filters results based on filter input', function() { - var filters = {}, - filteredRows; + it('Filters results based on filter input', function () { + var filters = {}, + filteredRows; - mockScope.filters = filters; + mockScope.filters = filters; - filteredRows = controller.filterRows(testRows); - expect(filteredRows.length).toBe(3); - filters.col1 = 'row1'; - filteredRows = controller.filterRows(testRows); - expect(filteredRows.length).toBe(1); - filters.col1 = 'match'; - filteredRows = controller.filterRows(testRows); - expect(filteredRows.length).toBe(2); + filteredRows = controller.filterRows(testRows); + expect(filteredRows.length).toBe(3); + filters.col1 = 'row1'; + filteredRows = controller.filterRows(testRows); + expect(filteredRows.length).toBe(1); + filters.col1 = 'match'; + filteredRows = controller.filterRows(testRows); + expect(filteredRows.length).toBe(2); }); - it('Sets rows on scope when rows change', function() { + it('Sets rows on scope when rows change', function () { controller.setRows(testRows); expect(mockScope.displayRows.length).toBe(3); expect(mockScope.displayRows).toEqual(testRows); }); - it('Supports adding rows individually', function() { - var addRowFunc = mockScope.$on.calls[mockScope.$on.calls.length-2].args[1], + it('Supports adding rows individually', function () { + var addRowFunc = mockScope.$on.calls[mockScope.$on.calls.length - 2].args[1], row4 = { 'col1': {'text': 'row3 col1'}, 'col2': {'text': 'ghi'}, @@ -140,8 +140,8 @@ define( expect(mockScope.displayRows.length).toBe(4); }); - it('Supports removing rows individually', function() { - var removeRowFunc = mockScope.$on.calls[mockScope.$on.calls.length-1].args[1]; + it('Supports removing rows individually', function () { + var removeRowFunc = mockScope.$on.calls[mockScope.$on.calls.length - 1].args[1]; controller.setRows(testRows); expect(mockScope.displayRows.length).toBe(3); removeRowFunc(undefined, 2); @@ -149,10 +149,10 @@ define( expect(controller.setVisibleRows).toHaveBeenCalled(); }); - describe('sorting', function() { + describe('sorting', function () { var sortedRows; - it('Sorts rows ascending', function() { + it('Sorts rows ascending', function () { mockScope.sortColumn = 'col1'; mockScope.sortDirection = 'asc'; @@ -164,7 +164,7 @@ define( }); - it('Sorts rows descending', function() { + it('Sorts rows descending', function () { mockScope.sortColumn = 'col1'; mockScope.sortDirection = 'desc'; @@ -173,7 +173,7 @@ define( expect(sortedRows[1].col1.text).toEqual('row2 col1 match'); expect(sortedRows[2].col1.text).toEqual('row1 col1 match'); }); - it('Sorts rows descending based on selected sort column', function() { + it('Sorts rows descending based on selected sort column', function () { mockScope.sortColumn = 'col2'; mockScope.sortDirection = 'desc'; @@ -218,9 +218,9 @@ define( expect(sortedRows[1].col2.text).toEqual('def'); expect(sortedRows[2].col2.text).toEqual('abc'); - expect(sortedRows[sortedRows.length-3].col2.text).toEqual('456'); - expect(sortedRows[sortedRows.length-2].col2.text).toEqual('123'); - expect(sortedRows[sortedRows.length-1].col2.text).toEqual(''); + expect(sortedRows[sortedRows.length - 3].col2.text).toEqual('456'); + expect(sortedRows[sortedRows.length - 2].col2.text).toEqual('123'); + expect(sortedRows[sortedRows.length - 1].col2.text).toEqual(''); }); describe('The sort comparator', function () { @@ -245,7 +245,7 @@ define( row5, row6; - beforeEach(function() { + beforeEach(function () { row4 = { 'col1': {'text': 'row5 col1'}, 'col2': {'text': 'xyz'}, @@ -264,33 +264,33 @@ define( }); it('Adds new rows at the correct sort position when' + - ' sorted ', function() { + ' sorted ', function () { mockScope.sortColumn = 'col2'; mockScope.sortDirection = 'desc'; mockScope.displayRows = controller.sortRows(testRows.slice(0)); mockScope.rows.push(row4); - controller.addRow(undefined, mockScope.rows.length-1); + controller.addRow(undefined, mockScope.rows.length - 1); expect(mockScope.displayRows[0].col2.text).toEqual('xyz'); mockScope.rows.push(row5); - controller.addRow(undefined, mockScope.rows.length-1); + controller.addRow(undefined, mockScope.rows.length - 1); expect(mockScope.displayRows[4].col2.text).toEqual('aaa'); mockScope.rows.push(row6); - controller.addRow(undefined, mockScope.rows.length-1); + controller.addRow(undefined, mockScope.rows.length - 1); expect(mockScope.displayRows[2].col2.text).toEqual('ggg'); //Add a duplicate row mockScope.rows.push(row6); - controller.addRow(undefined, mockScope.rows.length-1); + controller.addRow(undefined, mockScope.rows.length - 1); expect(mockScope.displayRows[2].col2.text).toEqual('ggg'); expect(mockScope.displayRows[3].col2.text).toEqual('ggg'); }); it('Adds new rows at the correct sort position when' + - ' sorted and filtered', function() { + ' sorted and filtered', function () { mockScope.sortColumn = 'col2'; mockScope.sortDirection = 'desc'; mockScope.filters = {'col2': 'a'};//Include only @@ -300,12 +300,12 @@ define( mockScope.displayRows = controller.filterRows(testRows); mockScope.rows.push(row5); - controller.addRow(undefined, mockScope.rows.length-1); + controller.addRow(undefined, mockScope.rows.length - 1); expect(mockScope.displayRows.length).toBe(2); expect(mockScope.displayRows[1].col2.text).toEqual('aaa'); mockScope.rows.push(row6); - controller.addRow(undefined, mockScope.rows.length-1); + controller.addRow(undefined, mockScope.rows.length - 1); expect(mockScope.displayRows.length).toBe(2); //Row was not added because does not match filter }); @@ -319,16 +319,16 @@ define( mockScope.displayRows = testRows.slice(0); mockScope.rows.push(row5); - controller.addRow(undefined, mockScope.rows.length-1); + controller.addRow(undefined, mockScope.rows.length - 1); expect(mockScope.displayRows[3].col2.text).toEqual('aaa'); mockScope.rows.push(row6); - controller.addRow(undefined, mockScope.rows.length-1); + controller.addRow(undefined, mockScope.rows.length - 1); expect(mockScope.displayRows[4].col2.text).toEqual('ggg'); }); it('Resizes columns if length of any columns in new' + - ' row exceeds corresponding existing column', function() { + ' row exceeds corresponding existing column', function () { var row7 = { 'col1': {'text': 'row6 col1'}, 'col2': {'text': 'some longer string'}, @@ -342,7 +342,7 @@ define( mockScope.displayRows = testRows.slice(0); mockScope.rows.push(row7); - controller.addRow(undefined, mockScope.rows.length-1); + controller.addRow(undefined, mockScope.rows.length - 1); expect(controller.$scope.sizingRow.col2).toEqual({text: 'some longer string'}); }); diff --git a/platform/features/table/test/controllers/RealtimeTableControllerSpec.js b/platform/features/table/test/controllers/RealtimeTableControllerSpec.js index ea1bb870a3..ada85baa3c 100644 --- a/platform/features/table/test/controllers/RealtimeTableControllerSpec.js +++ b/platform/features/table/test/controllers/RealtimeTableControllerSpec.js @@ -40,7 +40,7 @@ define( function promise(value) { return { - then: function (callback){ + then: function (callback) { return promise(callback(value)); } }; @@ -57,13 +57,13 @@ define( '$digest', '$broadcast' ]); - mockScope.$on.andCallFake(function (expression, callback){ + mockScope.$on.andCallFake(function (expression, callback) { watches[expression] = callback; }); - mockScope.$watch.andCallFake(function (expression, callback){ - watches[expression] = callback; + mockScope.$watch.andCallFake(function (expression, callback) { + watches[expression] = callback; }); - mockScope.$watchCollection.andCallFake(function (expression, callback){ + mockScope.$watchCollection.andCallFake(function (expression, callback) { watches[expression] = callback; }); @@ -85,7 +85,7 @@ define( mockTable.buildColumnConfiguration.andReturn(mockConfiguration); mockTable.getRowValues.andReturn(mockTableRow); - mockDomainObject= jasmine.createSpyObj('domainObject', [ + mockDomainObject = jasmine.createSpyObj('domainObject', [ 'getCapability', 'useCapability', 'getModel' @@ -93,7 +93,7 @@ define( mockDomainObject.getModel.andReturn({}); mockDomainObject.getCapability.andReturn( { - getMetadata: function (){ + getMetadata: function () { return {ranges: [{format: 'string'}]}; } }); @@ -132,7 +132,7 @@ define( }); describe('receives new telemetry', function () { - beforeEach(function() { + beforeEach(function () { controller.subscribe(); mockScope.rows = []; }); @@ -151,7 +151,7 @@ define( } mockTelemetryHandler.handle.mostRecentCall.args[1](); expect(mockScope.rows.length).toBe(controller.maxRows); - expect(mockScope.rows[mockScope.rows.length-1]).toBe(mockTableRow); + expect(mockScope.rows[mockScope.rows.length - 1]).toBe(mockTableRow); expect(mockScope.rows[0].row).toBe(1); }); }); diff --git a/platform/features/table/test/controllers/TableOptionsControllerSpec.js b/platform/features/table/test/controllers/TableOptionsControllerSpec.js index db918c9788..9ea1967b36 100644 --- a/platform/features/table/test/controllers/TableOptionsControllerSpec.js +++ b/platform/features/table/test/controllers/TableOptionsControllerSpec.js @@ -26,13 +26,13 @@ define( ], function (TableOptionsController) { - describe('The Table Options Controller', function() { + describe('The Table Options Controller', function () { var mockDomainObject, mockCapability, controller, mockScope; - beforeEach(function() { + beforeEach(function () { mockCapability = jasmine.createSpyObj('mutationCapability', [ 'listen' ]); @@ -53,11 +53,11 @@ define( controller = new TableOptionsController(mockScope); }); - it('Listens for changing domain object', function() { + it('Listens for changing domain object', function () { expect(mockScope.$watch).toHaveBeenCalledWith('domainObject', jasmine.any(Function)); }); - it('On destruction of controller, destroys listeners', function() { + it('On destruction of controller, destroys listeners', function () { var unlistenFunc = jasmine.createSpy("unlisten"); controller.listeners.push(unlistenFunc); expect(mockScope.$on).toHaveBeenCalledWith('$destroy', jasmine.any(Function)); @@ -65,21 +65,21 @@ define( expect(unlistenFunc).toHaveBeenCalled(); }); - it('Registers a listener for mutation events on the object', function() { + it('Registers a listener for mutation events on the object', function () { mockScope.$watch.mostRecentCall.args[1](mockDomainObject); expect(mockCapability.listen).toHaveBeenCalled(); }); it('Listens for changes to object composition and updates' + - ' options accordingly', function() { + ' options accordingly', function () { expect(mockScope.$watchCollection).toHaveBeenCalledWith('configuration.table.columns', jasmine.any(Function)); }); describe('Populates scope with a form definition based on provided' + - ' column configuration', function() { + ' column configuration', function () { var mockModel; - beforeEach(function() { + beforeEach(function () { mockModel = { configuration: { table: { @@ -87,7 +87,7 @@ define( 'column1': true, 'column2': true, 'column3': false, - 'column4': true, + 'column4': true } } } @@ -95,19 +95,19 @@ define( controller.populateForm(mockModel); }); - it('creates form on scope', function() { + it('creates form on scope', function () { expect(mockScope.columnsForm).toBeDefined(); expect(mockScope.columnsForm.sections[0]).toBeDefined(); expect(mockScope.columnsForm.sections[0].rows).toBeDefined(); expect(mockScope.columnsForm.sections[0].rows.length).toBe(4); }); - it('presents columns as checkboxes', function() { - expect(mockScope.columnsForm.sections[0].rows.every(function(row){ + it('presents columns as checkboxes', function () { + expect(mockScope.columnsForm.sections[0].rows.every(function (row) { return row.control === 'checkbox'; })).toBe(true); }); }); }); - }); \ No newline at end of file + }); diff --git a/platform/features/timeline/bundle.js b/platform/features/timeline/bundle.js index dda2080c71..eb66456ce4 100644 --- a/platform/features/timeline/bundle.js +++ b/platform/features/timeline/bundle.js @@ -91,7 +91,7 @@ define([ "name": "Export Timeline as CSV", "category": "contextual", "implementation": ExportTimelineAsCSVAction, - "depends": [ "exportService", "notificationService" ] + "depends": ["exportService", "notificationService"] } ], "constants": [ @@ -127,7 +127,16 @@ define([ 14400000, 28800000, 43200000, - 86400000 + 86400000, + 86400000 * 2, + 86400000 * 5, + 86400000 * 10, + 86400000 * 20, + 86400000 * 30, + 86400000 * 60, + 86400000 * 120, + 86400000 * 240, + 86400000 * 365 ], "width": 200 } diff --git a/platform/features/timeline/res/templates/tabular-swimlane-cols-tree.html b/platform/features/timeline/res/templates/tabular-swimlane-cols-tree.html index e5ca69e15c..22c4a84229 100644 --- a/platform/features/timeline/res/templates/tabular-swimlane-cols-tree.html +++ b/platform/features/timeline/res/templates/tabular-swimlane-cols-tree.html @@ -29,7 +29,7 @@ }">
@@ -102,6 +103,13 @@
+ + I + + maximum) { - values.push({ + vals.push({ domain: intercept( previous.domain, previous.range, @@ -95,19 +95,19 @@ define( // Add the new data value if (delta > 0) { - values.push({ domain: domain, range: next }); + vals.push({ domain: domain, range: next }); } slope = range; } - values.push({ domain: 0, range: initial }); + vals.push({ domain: 0, range: initial }); for (i = 0; i < graph.getPointCount(); i += 1) { addPoint(graph.getDomainValue(i), graph.getRangeValue(i)); } - return values; + return vals; } function convertToPercent(point) { @@ -149,4 +149,4 @@ define( return CumulativeGraph; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/capabilities/ResourceGraph.js b/platform/features/timeline/src/capabilities/ResourceGraph.js index d62a7cf07f..93ced78f09 100644 --- a/platform/features/timeline/src/capabilities/ResourceGraph.js +++ b/platform/features/timeline/src/capabilities/ResourceGraph.js @@ -72,13 +72,13 @@ define( // If there are sequences of points with the same timestamp, // allow only the first and last. - function filterPoint(value, index, values) { + function filterPoint(value, index, vals) { // Allow the first or last point as a base case; aside from // that, allow only points that have different timestamps // from their predecessor or successor. - return (index === 0) || (index === values.length - 1) || - (value.domain !== values[index - 1].domain) || - (value.domain !== values[index + 1].domain); + return (index === 0) || (index === vals.length - 1) || + (value.domain !== vals[index - 1].domain) || + (value.domain !== vals[index + 1].domain); } // Add a step up or down (Step 3c above) @@ -144,4 +144,4 @@ define( return ResourceGraph; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/capabilities/TimelineTimespan.js b/platform/features/timeline/src/capabilities/TimelineTimespan.js index ac07ef7071..de747764ef 100644 --- a/platform/features/timeline/src/capabilities/TimelineTimespan.js +++ b/platform/features/timeline/src/capabilities/TimelineTimespan.js @@ -57,8 +57,8 @@ define( // Set the start time associated with this object function setStart(value) { - mutation.mutate(function (model) { - model.start.timestamp = Math.max(value, 0); + mutation.mutate(function (m) { + m.start.timestamp = Math.max(value, 0); }, model.modified); } @@ -121,4 +121,4 @@ define( return TimelineTimespan; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/capabilities/TimelineUtilization.js b/platform/features/timeline/src/capabilities/TimelineUtilization.js index 7459ae7220..a4fc885734 100644 --- a/platform/features/timeline/src/capabilities/TimelineUtilization.js +++ b/platform/features/timeline/src/capabilities/TimelineUtilization.js @@ -47,4 +47,4 @@ define( return TimelineUtilization; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/capabilities/UtilizationCapability.js b/platform/features/timeline/src/capabilities/UtilizationCapability.js index 79a803a3ae..2744976615 100644 --- a/platform/features/timeline/src/capabilities/UtilizationCapability.js +++ b/platform/features/timeline/src/capabilities/UtilizationCapability.js @@ -120,13 +120,13 @@ define( } // Look up a specific object's resource utilization - function lookupUtilization(domainObject) { - return domainObject.useCapability('utilization'); + function lookupUtilization(object) { + return object.useCapability('utilization'); } // Look up a specific object's resource utilization keys - function lookupUtilizationResources(domainObject) { - var utilization = domainObject.getCapability('utilization'); + function lookupUtilizationResources(object) { + var utilization = object.getCapability('utilization'); return utilization && utilization.resources(); } diff --git a/platform/features/timeline/src/controllers/TimelineController.js b/platform/features/timeline/src/controllers/TimelineController.js index 483abb7c06..64900b586c 100644 --- a/platform/features/timeline/src/controllers/TimelineController.js +++ b/platform/features/timeline/src/controllers/TimelineController.js @@ -96,7 +96,9 @@ define( }); } } - + + $scope.$watch("configuration", swimlanePopulator.configure); + // Recalculate swimlane state on changes $scope.$watch("domainObject", swimlanePopulator.populate); diff --git a/platform/features/timeline/src/controllers/TimelineDateTimeController.js b/platform/features/timeline/src/controllers/TimelineDateTimeController.js index 249cd4d7de..01ec6cebe3 100644 --- a/platform/features/timeline/src/controllers/TimelineDateTimeController.js +++ b/platform/features/timeline/src/controllers/TimelineDateTimeController.js @@ -88,4 +88,4 @@ define( return DateTimeController; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/controllers/TimelineGanttController.js b/platform/features/timeline/src/controllers/TimelineGanttController.js index 40431e00c4..a435ac49ad 100644 --- a/platform/features/timeline/src/controllers/TimelineGanttController.js +++ b/platform/features/timeline/src/controllers/TimelineGanttController.js @@ -83,4 +83,4 @@ define( return TimelineGanttController; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/controllers/TimelineGraphController.js b/platform/features/timeline/src/controllers/TimelineGraphController.js index b069f9693d..5710e1a1c5 100644 --- a/platform/features/timeline/src/controllers/TimelineGraphController.js +++ b/platform/features/timeline/src/controllers/TimelineGraphController.js @@ -92,4 +92,4 @@ define( return TimelineGraphController; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/controllers/TimelineTickController.js b/platform/features/timeline/src/controllers/TimelineTickController.js index f49ff73d45..611828241a 100644 --- a/platform/features/timeline/src/controllers/TimelineTickController.js +++ b/platform/features/timeline/src/controllers/TimelineTickController.js @@ -113,4 +113,4 @@ define( return TimelineTickController; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/controllers/TimelineZoomController.js b/platform/features/timeline/src/controllers/TimelineZoomController.js index 43abb8419c..990a83a5b3 100644 --- a/platform/features/timeline/src/controllers/TimelineZoomController.js +++ b/platform/features/timeline/src/controllers/TimelineZoomController.js @@ -29,19 +29,29 @@ define( */ function TimelineZoomController($scope, ZOOM_CONFIGURATION) { // Prefer to start with the middle index - var zoomLevels = ZOOM_CONFIGURATION.levels || [ 1000 ], + var zoomLevels = ZOOM_CONFIGURATION.levels || [1000], zoomIndex = Math.floor(zoomLevels.length / 2), tickWidth = ZOOM_CONFIGURATION.width || 200, + bounds = { x: 0, width: tickWidth }, duration = 86400000; // Default duration in view // Round a duration to a larger value, to ensure space for editing function roundDuration(value) { // Ensure there's always an extra day or so - var sz = zoomLevels[zoomLevels.length - 1]; + var tickCount = bounds.width / tickWidth, + sz = zoomLevels[zoomLevels.length - 1] * tickCount; value *= 1.25; // Add 25% padding to start return Math.ceil(value / sz) * sz; } + function toMillis(pixels) { + return (pixels / tickWidth) * zoomLevels[zoomIndex]; + } + + function toPixels(millis) { + return tickWidth * millis / zoomLevels[zoomIndex]; + } + // Get/set zoom level function setZoomLevel(level) { if (!isNaN(level)) { @@ -53,20 +63,27 @@ define( } } - // Persist current zoom level - function storeZoom() { - var isEditMode = $scope.commit && - $scope.domainObject && - $scope.domainObject.hasCapability('editor') && - $scope.domainObject.getCapability('editor').inEditContext(); - if (isEditMode) { - $scope.configuration = $scope.configuration || {}; - $scope.configuration.zoomLevel = zoomIndex; - $scope.commit(); + function initializeZoomFromTimespan(timespan) { + var timelineDuration = timespan.getDuration(); + zoomIndex = 0; + while (toMillis(bounds.width) < timelineDuration && + zoomIndex < zoomLevels.length - 1) { + zoomIndex += 1; + } + bounds.x = toPixels(timespan.getStart()); + } + + function initializeZoom() { + if ($scope.domainObject) { + $scope.domainObject.useCapability('timespan') + .then(initializeZoomFromTimespan); } } - $scope.$watch("configuration.zoomLevel", setZoomLevel); + $scope.$watch("scroll", function (scroll) { + bounds = scroll; + }); + $scope.$watch("domainObject", initializeZoom); return { /** @@ -83,27 +100,29 @@ define( zoom: function (amount) { // Update the zoom level if called with an argument if (arguments.length > 0 && !isNaN(amount)) { + var center = this.toMillis(bounds.x + bounds.width / 2); setZoomLevel(zoomIndex + amount); - storeZoom(zoomIndex); + bounds.x = this.toPixels(center) - bounds.width / 2; } return zoomLevels[zoomIndex]; }, + /** + * Set the zoom level to fit the bounds of the timeline + * being viewed. + */ + fit: initializeZoom, /** * Get the width, in pixels, of a specific time duration at * the current zoom level. * @returns {number} the number of pixels */ - toPixels: function (millis) { - return tickWidth * millis / zoomLevels[zoomIndex]; - }, + toPixels: toPixels, /** * Get the time duration, in milliseconds, occupied by the * width (specified in pixels) at the current zoom level. * @returns {number} the number of pixels */ - toMillis: function (pixels) { - return (pixels / tickWidth) * zoomLevels[zoomIndex]; - }, + toMillis: toMillis, /** * Get or set the current displayed duration. If used as a * setter, this will typically be rounded up to ensure extra diff --git a/platform/features/timeline/src/controllers/drag/TimelineDragHandler.js b/platform/features/timeline/src/controllers/drag/TimelineDragHandler.js index 6e3272ff59..c1605a21e9 100644 --- a/platform/features/timeline/src/controllers/drag/TimelineDragHandler.js +++ b/platform/features/timeline/src/controllers/drag/TimelineDragHandler.js @@ -47,19 +47,19 @@ define( } // Get the timespan associated with this domain object - function populateCapabilityMaps(domainObject) { - var id = domainObject.getId(), - timespanPromise = domainObject.useCapability('timespan'); + function populateCapabilityMaps(object) { + var id = object.getId(), + timespanPromise = object.useCapability('timespan'); if (timespanPromise) { timespanPromise.then(function (timespan) { // Cache that timespan timespans[id] = timespan; // And its mutation capability - mutations[id] = domainObject.getCapability('mutation'); + mutations[id] = object.getCapability('mutation'); // Also cache the persistence capability for later - persists[id] = domainObject.getCapability('persistence'); + persists[id] = object.getCapability('persistence'); // And the composition, for bulk moves - compositions[id] = domainObject.getModel().composition || []; + compositions[id] = object.getModel().composition || []; }); } } @@ -199,8 +199,8 @@ define( minStart; // Update start & end, in that order - function updateStartEnd(id) { - var timespan = timespans[id], start, end; + function updateStartEnd(spanId) { + var timespan = timespans[spanId], start, end; if (timespan) { // Get start/end so we don't get fooled by our // own adjustments @@ -210,7 +210,7 @@ define( timespan.setStart(start + delta); timespan.setEnd(end + delta); // Mark as dirty for subsequent persistence - dirty[toId(id)] = true; + dirty[toId(spanId)] = true; } } @@ -228,12 +228,12 @@ define( } // Find the minimum start time - minStart = Object.keys(ids).map(function (id) { + minStart = Object.keys(ids).map(function (spanId) { // Get the start time; default to +Inf if not // found, since this will not survive a min // test if any real timespans are present - return timespans[id] ? - timespans[id].getStart() : + return timespans[spanId] ? + timespans[spanId].getStart() : Number.POSITIVE_INFINITY; }).reduce(function (a, b) { // Reduce with a minimum test @@ -253,4 +253,4 @@ define( return TimelineDragHandler; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/controllers/drag/TimelineDragPopulator.js b/platform/features/timeline/src/controllers/drag/TimelineDragPopulator.js index 985aee275e..67f26d0144 100644 --- a/platform/features/timeline/src/controllers/drag/TimelineDragPopulator.js +++ b/platform/features/timeline/src/controllers/drag/TimelineDragPopulator.js @@ -92,4 +92,4 @@ define( return TimelineDragPopulator; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/controllers/drag/TimelineEndHandle.js b/platform/features/timeline/src/controllers/drag/TimelineEndHandle.js index 317d3512f4..facbedc889 100644 --- a/platform/features/timeline/src/controllers/drag/TimelineEndHandle.js +++ b/platform/features/timeline/src/controllers/drag/TimelineEndHandle.js @@ -93,4 +93,4 @@ define( return TimelineEndHandle; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/controllers/drag/TimelineMoveHandle.js b/platform/features/timeline/src/controllers/drag/TimelineMoveHandle.js index a05ce117e5..f6b9868656 100644 --- a/platform/features/timeline/src/controllers/drag/TimelineMoveHandle.js +++ b/platform/features/timeline/src/controllers/drag/TimelineMoveHandle.js @@ -128,4 +128,4 @@ define( return TimelineMoveHandle; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/controllers/drag/TimelineSnapHandler.js b/platform/features/timeline/src/controllers/drag/TimelineSnapHandler.js index c9752a72e7..cc60e0d8f4 100644 --- a/platform/features/timeline/src/controllers/drag/TimelineSnapHandler.js +++ b/platform/features/timeline/src/controllers/drag/TimelineSnapHandler.js @@ -42,7 +42,9 @@ define( candidates; // Filter an id for inclustion - function include(id) { return id !== exclude; } + function include(id) { + return id !== exclude; + } // Evaluate a candidate timestamp as a snap-to location function evaluate(candidate) { @@ -101,4 +103,4 @@ define( return TimelineSnapHandler; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/controllers/drag/TimelineStartHandle.js b/platform/features/timeline/src/controllers/drag/TimelineStartHandle.js index e04dbada47..ce7907eeed 100644 --- a/platform/features/timeline/src/controllers/drag/TimelineStartHandle.js +++ b/platform/features/timeline/src/controllers/drag/TimelineStartHandle.js @@ -93,4 +93,4 @@ define( return TimelineStartHandle; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/controllers/graph/TimelineGraph.js b/platform/features/timeline/src/controllers/graph/TimelineGraph.js index c5e84ddaa0..5cb5ccd491 100644 --- a/platform/features/timeline/src/controllers/graph/TimelineGraph.js +++ b/platform/features/timeline/src/controllers/graph/TimelineGraph.js @@ -168,8 +168,8 @@ define( setBounds: function (offset, duration) { // We don't update in-place, because we need the change // to trigger a watch in mct-chart. - drawingObject.origin = [ offset, drawingObject.origin[1] ]; - drawingObject.dimensions = [ duration, drawingObject.dimensions[1] ]; + drawingObject.origin = [offset, drawingObject.origin[1]]; + drawingObject.dimensions = [duration, drawingObject.dimensions[1]]; }, /** * Redraw lines in this graph. @@ -186,4 +186,4 @@ define( return TimelineGraph; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/controllers/graph/TimelineGraphPopulator.js b/platform/features/timeline/src/controllers/graph/TimelineGraphPopulator.js index 91c478310f..2488d57030 100644 --- a/platform/features/timeline/src/controllers/graph/TimelineGraphPopulator.js +++ b/platform/features/timeline/src/controllers/graph/TimelineGraphPopulator.js @@ -75,11 +75,14 @@ define( // Look up resources for a domain object function lookupResources(swimlane) { - var graphs = swimlane.domainObject.useCapability('graph'); + var graphPromise = + swimlane.domainObject.useCapability('graph'); function getKeys(obj) { return Object.keys(obj); } - return $q.when(graphs ? (graphs.then(getKeys)) : []); + return $q.when( + graphPromise ? (graphPromise.then(getKeys)) : [] + ); } // Add all graph assignments appropriate for this swimlane @@ -152,4 +155,4 @@ define( return TimelineGraphPopulator; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/controllers/graph/TimelineGraphRenderer.js b/platform/features/timeline/src/controllers/graph/TimelineGraphRenderer.js index 825947599d..bd0546ab03 100644 --- a/platform/features/timeline/src/controllers/graph/TimelineGraphRenderer.js +++ b/platform/features/timeline/src/controllers/graph/TimelineGraphRenderer.js @@ -78,4 +78,4 @@ define( return TimelineGraphRenderer; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/controllers/swimlane/TimelineColorAssigner.js b/platform/features/timeline/src/controllers/swimlane/TimelineColorAssigner.js index 4e7a72a510..26d4fd7a9f 100644 --- a/platform/features/timeline/src/controllers/swimlane/TimelineColorAssigner.js +++ b/platform/features/timeline/src/controllers/swimlane/TimelineColorAssigner.js @@ -117,4 +117,4 @@ define( return TimelineColorAssigner; } -); \ 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 ecff296b64..7fa4dc2e9b 100644 --- a/platform/features/timeline/src/controllers/swimlane/TimelineProxy.js +++ b/platform/features/timeline/src/controllers/swimlane/TimelineProxy.js @@ -34,8 +34,8 @@ define( var actionMap = {}; // Populate available Create actions for this domain object - function populateActionMap(domainObject) { - var actionCapability = domainObject.getCapability('action'), + function populateActionMap(object) { + var actionCapability = object.getCapability('action'), actions = actionCapability ? actionCapability.getActions('add') : []; actions.forEach(function (action) { @@ -74,4 +74,4 @@ define( return TimelineProxy; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/controllers/swimlane/TimelineSwimlane.js b/platform/features/timeline/src/controllers/swimlane/TimelineSwimlane.js index a25448c85a..1938145d6e 100644 --- a/platform/features/timeline/src/controllers/swimlane/TimelineSwimlane.js +++ b/platform/features/timeline/src/controllers/swimlane/TimelineSwimlane.js @@ -47,9 +47,7 @@ define( depth = parent ? (parent.depth + 1) : 0, timespan, path = (!parent || !parent.parent) ? "" : parent.path + - //(parent.path.length > 0 ? " / " : "") + - parent.domainObject.getModel().name + - " > "; + parent.domainObject.getModel().name + " > "; // Look up timespan for this object domainObject.useCapability('timespan').then(function (t) { @@ -172,4 +170,4 @@ define( return TimelineSwimlane; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/controllers/swimlane/TimelineSwimlaneDecorator.js b/platform/features/timeline/src/controllers/swimlane/TimelineSwimlaneDecorator.js index dd655bcb5e..898ca119ee 100644 --- a/platform/features/timeline/src/controllers/swimlane/TimelineSwimlaneDecorator.js +++ b/platform/features/timeline/src/controllers/swimlane/TimelineSwimlaneDecorator.js @@ -45,9 +45,9 @@ define( if (arguments.length > 0 && Array.isArray(value)) { if ((model.relationships || {})[ACTIVITY_RELATIONSHIP] !== value) { // Update the relationships - mutator.mutate(function (model) { - model.relationships = model.relationships || {}; - model.relationships[ACTIVITY_RELATIONSHIP] = value; + mutator.mutate(function (m) { + m.relationships = m.relationships || {}; + m.relationships[ACTIVITY_RELATIONSHIP] = value; }).then(persister.persist); } } @@ -61,8 +61,8 @@ define( if (arguments.length > 0 && (typeof value === 'string') && value !== model.link) { // Update the link - mutator.mutate(function (model) { - model.link = value; + mutator.mutate(function (m) { + m.link = value; }).then(persister.persist); } return model.link; diff --git a/platform/features/timeline/src/controllers/swimlane/TimelineSwimlaneDropHandler.js b/platform/features/timeline/src/controllers/swimlane/TimelineSwimlaneDropHandler.js index e655741342..71648995f0 100644 --- a/platform/features/timeline/src/controllers/swimlane/TimelineSwimlaneDropHandler.js +++ b/platform/features/timeline/src/controllers/swimlane/TimelineSwimlaneDropHandler.js @@ -51,7 +51,7 @@ define( } // Check if pathA entirely contains pathB - function pathContains(swimlane, id) { + function pathContains(swimlaneToCheck, id) { // Check if id at a specific index matches (for map below) function matches(pathId) { return pathId === id; @@ -59,18 +59,18 @@ define( // Path A contains Path B if it is longer, and all of // B's ids match the ids in A. - return swimlane.idPath.map(matches).reduce(or, false); + return swimlaneToCheck.idPath.map(matches).reduce(or, false); } // Check if a swimlane contains a child with the specified id - function contains(swimlane, id) { + function contains(swimlaneToCheck, id) { // Check if a child swimlane has a matching domain object id function matches(child) { return child.domainObject.getId() === id; } // Find any one child id that matches this id - return swimlane.children.map(matches).reduce(or, false); + return swimlaneToCheck.children.map(matches).reduce(or, false); } // Initiate mutation of a domain object diff --git a/platform/features/timeline/src/controllers/swimlane/TimelineSwimlanePopulator.js b/platform/features/timeline/src/controllers/swimlane/TimelineSwimlanePopulator.js index d4b1151817..74c28b46b8 100644 --- a/platform/features/timeline/src/controllers/swimlane/TimelineSwimlanePopulator.js +++ b/platform/features/timeline/src/controllers/swimlane/TimelineSwimlanePopulator.js @@ -43,8 +43,7 @@ define( var swimlanes = [], start = Number.POSITIVE_INFINITY, end = Number.NEGATIVE_INFINITY, - colors = (configuration.colors || {}), - assigner = new TimelineColorAssigner(colors), + assigner, lastDomainObject; // Track extremes of start/end times @@ -61,8 +60,8 @@ define( swimlane; // For the recursive step - function populate(childSubgraph, index) { - populateSwimlanes(childSubgraph, swimlane, index); + function populate(childSubgraph, nextIndex) { + populateSwimlanes(childSubgraph, swimlane, nextIndex); } // Make sure we have a valid object instance... @@ -152,8 +151,15 @@ define( recalculateSwimlanes(lastDomainObject); } + function initialize() { + var colors = (configuration.colors || {}); + assigner = new TimelineColorAssigner(colors); + configuration.colors = colors; + recalculateSwimlanes(lastDomainObject); + } + // Ensure colors are exposed in configuration - configuration.colors = colors; + initialize(); return { /** @@ -188,10 +194,19 @@ define( */ end: function () { return end; + }, + /** + * Pass a new configuration object (to retrieve and store + * swimlane configuration) + * @param newConfig + */ + configure: function (newConfig) { + configuration = newConfig; + initialize(); } }; } return TimelineSwimlanePopulator; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/src/services/ObjectLoader.js b/platform/features/timeline/src/services/ObjectLoader.js index f7c9743c87..ec4d7b15c8 100644 --- a/platform/features/timeline/src/services/ObjectLoader.js +++ b/platform/features/timeline/src/services/ObjectLoader.js @@ -41,13 +41,13 @@ define( filter; // Check object existence (for criterion-less filtering) - function exists(domainObject) { - return !!domainObject; + function exists(object) { + return !!object; } // Check for capability matching criterion - function hasCapability(domainObject) { - return domainObject && domainObject.hasCapability(criterion); + function hasCapability(object) { + return object && object.hasCapability(criterion); } // For the recursive step... @@ -61,8 +61,8 @@ define( } // Avoid infinite recursion - function notVisiting(domainObject) { - return !visiting[domainObject.getId()]; + function notVisiting(object) { + return !visiting[object.getId()]; } // Put the composition of this domain object into the result @@ -130,4 +130,4 @@ define( return ObjectLoader; } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/TimelineFormatterSpec.js b/platform/features/timeline/test/TimelineFormatterSpec.js index 052730bd41..d883fa5c3f 100644 --- a/platform/features/timeline/test/TimelineFormatterSpec.js +++ b/platform/features/timeline/test/TimelineFormatterSpec.js @@ -57,4 +57,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/actions/CompositionColumnSpec.js b/platform/features/timeline/test/actions/CompositionColumnSpec.js index 87377a856f..8cf566a080 100644 --- a/platform/features/timeline/test/actions/CompositionColumnSpec.js +++ b/platform/features/timeline/test/actions/CompositionColumnSpec.js @@ -44,10 +44,10 @@ define( beforeEach(function () { mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getId', 'getModel', 'getCapability' ] + ['getId', 'getModel', 'getCapability'] ); testModel = { - composition: [ 'a', 'b', 'c', 'd', 'e', 'f' ] + composition: ['a', 'b', 'c', 'd', 'e', 'f'] }; mockDomainObject.getModel.andReturn(testModel); }); @@ -58,7 +58,7 @@ define( }); it("returns nothing when composition is exceeded", function () { - testModel.composition = [ 'foo' ]; + testModel.composition = ['foo']; expect(column.value(mockDomainObject)).toEqual(""); }); @@ -70,4 +70,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/actions/ExportTimelineAsCSVActionSpec.js b/platform/features/timeline/test/actions/ExportTimelineAsCSVActionSpec.js index 7250fd2621..e0f09c3ae6 100644 --- a/platform/features/timeline/test/actions/ExportTimelineAsCSVActionSpec.js +++ b/platform/features/timeline/test/actions/ExportTimelineAsCSVActionSpec.js @@ -36,20 +36,20 @@ define( beforeEach(function () { mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getId', 'getModel', 'getCapability', 'hasCapability' ] + ['getId', 'getModel', 'getCapability', 'hasCapability'] ); - mockType = jasmine.createSpyObj('type', [ 'instanceOf' ]); + mockType = jasmine.createSpyObj('type', ['instanceOf']); mockExportService = jasmine.createSpyObj( 'exportService', - [ 'exportCSV' ] + ['exportCSV'] ); mockNotificationService = jasmine.createSpyObj( 'notificationService', - [ 'notify', 'error' ] + ['notify', 'error'] ); mockNotification = jasmine.createSpyObj( 'notification', - [ 'dismiss' ] + ['dismiss'] ); mockNotificationService.notify.andReturn(mockNotification); @@ -149,4 +149,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/actions/ExportTimelineAsCSVTaskSpec.js b/platform/features/timeline/test/actions/ExportTimelineAsCSVTaskSpec.js index d9c6ca3c6e..0330e86397 100644 --- a/platform/features/timeline/test/actions/ExportTimelineAsCSVTaskSpec.js +++ b/platform/features/timeline/test/actions/ExportTimelineAsCSVTaskSpec.js @@ -34,7 +34,7 @@ define( beforeEach(function () { mockExportService = jasmine.createSpyObj( 'exportService', - [ 'exportCSV' ] + ['exportCSV'] ); mockDomainObject = jasmine.createSpyObj( 'domainObject', diff --git a/platform/features/timeline/test/actions/IdColumnSpec.js b/platform/features/timeline/test/actions/IdColumnSpec.js index 5aab82d11f..f44d255255 100644 --- a/platform/features/timeline/test/actions/IdColumnSpec.js +++ b/platform/features/timeline/test/actions/IdColumnSpec.js @@ -42,7 +42,7 @@ define( testId = "foo"; mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getId', 'getModel', 'getCapability' ] + ['getId', 'getModel', 'getCapability'] ); mockDomainObject.getId.andReturn(testId); }); @@ -55,4 +55,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/actions/MetadataColumnSpec.js b/platform/features/timeline/test/actions/MetadataColumnSpec.js index f9ff3f3d35..da98df5040 100644 --- a/platform/features/timeline/test/actions/MetadataColumnSpec.js +++ b/platform/features/timeline/test/actions/MetadataColumnSpec.js @@ -44,7 +44,7 @@ define( beforeEach(function () { mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getId', 'getModel', 'getCapability', 'useCapability' ] + ['getId', 'getModel', 'getCapability', 'useCapability'] ); testMetadata = [ { name: "Something else", value: 123 }, @@ -72,4 +72,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/actions/ModeColumnSpec.js b/platform/features/timeline/test/actions/ModeColumnSpec.js index 1189b30ca6..446e3b1030 100644 --- a/platform/features/timeline/test/actions/ModeColumnSpec.js +++ b/platform/features/timeline/test/actions/ModeColumnSpec.js @@ -44,11 +44,11 @@ define( beforeEach(function () { mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getId', 'getModel', 'getCapability' ] + ['getId', 'getModel', 'getCapability'] ); testModel = { relationships: { - modes: [ 'a', 'b', 'c', 'd', 'e', 'f' ] + modes: ['a', 'b', 'c', 'd', 'e', 'f'] } }; mockDomainObject.getModel.andReturn(testModel); @@ -60,7 +60,7 @@ define( }); it("returns nothing when relationships are exceeded", function () { - testModel.relationships.modes = [ 'foo' ]; + testModel.relationships.modes = ['foo']; expect(column.value(mockDomainObject)).toEqual(""); }); @@ -72,4 +72,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/actions/TimelineColumnizerSpec.js b/platform/features/timeline/test/actions/TimelineColumnizerSpec.js index d47d493ca9..d29bb14278 100644 --- a/platform/features/timeline/test/actions/TimelineColumnizerSpec.js +++ b/platform/features/timeline/test/actions/TimelineColumnizerSpec.js @@ -50,7 +50,7 @@ define( beforeEach(function () { var mockTimespan = jasmine.createSpyObj( 'timespan', - [ 'getStart', 'getEnd' ] + ['getStart', 'getEnd'] ); testMetadata = [ @@ -59,8 +59,8 @@ define( ]; mockDomainObjects = [ - { composition: [ 'a', 'b', 'c' ] }, - { relationships: { modes: [ 'x', 'y' ] } }, + { composition: ['a', 'b', 'c'] }, + { relationships: { modes: ['x', 'y'] } }, { } ].map(makeMockDomainObject); diff --git a/platform/features/timeline/test/actions/TimelineTraverserSpec.js b/platform/features/timeline/test/actions/TimelineTraverserSpec.js index 3cec488b0d..e6000c6c62 100644 --- a/platform/features/timeline/test/actions/TimelineTraverserSpec.js +++ b/platform/features/timeline/test/actions/TimelineTraverserSpec.js @@ -55,8 +55,8 @@ define([ if (!!model.composition) { mockDomainObject.useCapability.andCallFake(function (c) { return c === 'composition' && - Promise.resolve(model.composition.map(function (id) { - return mockDomainObjects[id]; + Promise.resolve(model.composition.map(function (cid) { + return mockDomainObjects[cid]; })); }); } @@ -68,8 +68,8 @@ define([ ); mockRelationships.getRelatedObjects.andCallFake(function (k) { var ids = model.relationships[k] || []; - return Promise.resolve(ids.map(function (id) { - return mockDomainObjects[id]; + return Promise.resolve(ids.map(function (objId) { + return mockDomainObjects[objId]; })); }); mockDomainObject.getCapability.andCallFake(function (c) { @@ -82,9 +82,9 @@ define([ beforeEach(function () { testModels = { - a: { composition: [ 'b', 'c' ]}, - b: { composition: [ 'c' ] }, - c: { relationships: { modes: [ 'd' ] } }, + a: { composition: ['b', 'c']}, + b: { composition: ['c'] }, + c: { relationships: { modes: ['d'] } }, d: {}, unreachable: {} }; @@ -132,4 +132,4 @@ define([ }); }); -}); \ No newline at end of file +}); diff --git a/platform/features/timeline/test/actions/TimespanColumnSpec.js b/platform/features/timeline/test/actions/TimespanColumnSpec.js index 5eea2a9281..efe8df8bff 100644 --- a/platform/features/timeline/test/actions/TimespanColumnSpec.js +++ b/platform/features/timeline/test/actions/TimespanColumnSpec.js @@ -36,11 +36,11 @@ define( }; mockTimespan = jasmine.createSpyObj( 'timespan', - [ 'getStart', 'getEnd' ] + ['getStart', 'getEnd'] ); mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'useCapability', 'hasCapability' ] + ['useCapability', 'hasCapability'] ); mockTimespan.getStart.andReturn(testTimes.start); mockTimespan.getEnd.andReturn(testTimes.end); @@ -52,7 +52,7 @@ define( }); }); - [ "start", "end" ].forEach(function (bound) { + ["start", "end"].forEach(function (bound) { describe("when referring to " + bound + " times", function () { var name = bound.charAt(0).toUpperCase() + bound.slice(1); @@ -90,4 +90,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/capabilities/ActivityTimespanCapabilitySpec.js b/platform/features/timeline/test/capabilities/ActivityTimespanCapabilitySpec.js index 88fb6e9418..dcd2170bb6 100644 --- a/platform/features/timeline/test/capabilities/ActivityTimespanCapabilitySpec.js +++ b/platform/features/timeline/test/capabilities/ActivityTimespanCapabilitySpec.js @@ -41,7 +41,7 @@ define( mockQ = jasmine.createSpyObj('$q', ['when']); mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getModel', 'getCapability' ] + ['getModel', 'getCapability'] ); mockQ.when.andCallFake(asPromise); diff --git a/platform/features/timeline/test/capabilities/ActivityTimespanSpec.js b/platform/features/timeline/test/capabilities/ActivityTimespanSpec.js index 34e3946ea7..837f0fd726 100644 --- a/platform/features/timeline/test/capabilities/ActivityTimespanSpec.js +++ b/platform/features/timeline/test/capabilities/ActivityTimespanSpec.js @@ -96,4 +96,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/capabilities/ActivityUtilizationSpec.js b/platform/features/timeline/test/capabilities/ActivityUtilizationSpec.js index 06cbe11aac..74ab27fb50 100644 --- a/platform/features/timeline/test/capabilities/ActivityUtilizationSpec.js +++ b/platform/features/timeline/test/capabilities/ActivityUtilizationSpec.js @@ -36,4 +36,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/capabilities/CostCapabilitySpec.js b/platform/features/timeline/test/capabilities/CostCapabilitySpec.js index 49aabfff65..3134d1ea58 100644 --- a/platform/features/timeline/test/capabilities/CostCapabilitySpec.js +++ b/platform/features/timeline/test/capabilities/CostCapabilitySpec.js @@ -31,7 +31,7 @@ define( beforeEach(function () { var mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getModel', 'getId' ] + ['getModel', 'getId'] ); testModel = { diff --git a/platform/features/timeline/test/capabilities/CumulativeGraphSpec.js b/platform/features/timeline/test/capabilities/CumulativeGraphSpec.js index bb03a896b2..0dacf2436c 100644 --- a/platform/features/timeline/test/capabilities/CumulativeGraphSpec.js +++ b/platform/features/timeline/test/capabilities/CumulativeGraphSpec.js @@ -30,11 +30,11 @@ define( graph; beforeEach(function () { - points = [ 0, 10, -10, -100, 20, 100, 0 ]; + points = [0, 10, -10, -100, 20, 100, 0]; mockGraph = jasmine.createSpyObj( 'graph', - [ 'getPointCount', 'getDomainValue', 'getRangeValue' ] + ['getPointCount', 'getDomainValue', 'getRangeValue'] ); mockGraph.getPointCount.andReturn(points.length * 2); @@ -83,4 +83,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/capabilities/GraphCapabilitySpec.js b/platform/features/timeline/test/capabilities/GraphCapabilitySpec.js index 3a4761fda2..bffbe21bad 100644 --- a/platform/features/timeline/test/capabilities/GraphCapabilitySpec.js +++ b/platform/features/timeline/test/capabilities/GraphCapabilitySpec.js @@ -42,7 +42,7 @@ define( mockQ = jasmine.createSpyObj('$q', ['when']); mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getId', 'getModel', 'useCapability' ] + ['getId', 'getModel', 'useCapability'] ); testModel = { diff --git a/platform/features/timeline/test/capabilities/ResourceGraphSpec.js b/platform/features/timeline/test/capabilities/ResourceGraphSpec.js index b124af9343..ed4acbc0fc 100644 --- a/platform/features/timeline/test/capabilities/ResourceGraphSpec.js +++ b/platform/features/timeline/test/capabilities/ResourceGraphSpec.js @@ -43,14 +43,14 @@ define( expect(graph.getPointCount()).toEqual(16); // Should get two values at every time stamp, for step-like appearance - [ 5, 15, 40, 50, 100, 120, 150, 180].forEach(function (v, i) { + [5, 15, 40, 50, 100, 120, 150, 180].forEach(function (v, i) { expect(graph.getDomainValue(i * 2)).toEqual(v); expect(graph.getDomainValue(i * 2 + 1)).toEqual(v); }); // Should also repeat values at subsequent indexes, but offset differently, // for horizontal spans between steps - [ 0, 42, 72, 42, 20, -22, 0, -10].forEach(function (v, i) { + [0, 42, 72, 42, 20, -22, 0, -10].forEach(function (v, i) { expect(graph.getRangeValue(i * 2)).toEqual(v); // Offset backwards; wrap around end of the series expect(graph.getRangeValue((16 + i * 2 - 1) % 16)).toEqual(v); @@ -72,4 +72,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/capabilities/TimelineTimespanCapabilitySpec.js b/platform/features/timeline/test/capabilities/TimelineTimespanCapabilitySpec.js index dc11dba72f..27b8bb2436 100644 --- a/platform/features/timeline/test/capabilities/TimelineTimespanCapabilitySpec.js +++ b/platform/features/timeline/test/capabilities/TimelineTimespanCapabilitySpec.js @@ -45,30 +45,34 @@ define( mockQ = jasmine.createSpyObj('$q', ['when', 'all']); mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getModel', 'getCapability', 'useCapability' ] + ['getModel', 'getCapability', 'useCapability'] ); mockChildA = jasmine.createSpyObj( 'childA', - [ 'getModel', 'useCapability', 'hasCapability' ] + ['getModel', 'useCapability', 'hasCapability'] ); mockChildB = jasmine.createSpyObj( 'childA', - [ 'getModel', 'useCapability', 'hasCapability' ] + ['getModel', 'useCapability', 'hasCapability'] ); mockTimespanA = jasmine.createSpyObj( 'timespanA', - [ 'getEnd' ] + ['getEnd'] ); mockTimespanB = jasmine.createSpyObj( 'timespanB', - [ 'getEnd' ] + ['getEnd'] ); mockQ.when.andCallFake(asPromise); mockQ.all.andCallFake(function (values) { var result = []; - function addResult(v) { result.push(v); } - function promiseResult(v) { asPromise(v).then(addResult); } + function addResult(v) { + result.push(v); + } + function promiseResult(v) { + asPromise(v).then(addResult); + } values.forEach(promiseResult); return asPromise(result); }); @@ -83,7 +87,7 @@ define( }); mockDomainObject.useCapability.andCallFake(function (c) { if (c === 'composition') { - return asPromise([ mockChildA, mockChildB ]); + return asPromise([mockChildA, mockChildB]); } }); mockChildA.hasCapability.andReturn(true); diff --git a/platform/features/timeline/test/capabilities/TimelineTimespanSpec.js b/platform/features/timeline/test/capabilities/TimelineTimespanSpec.js index 7cde0ec5fa..2d33035913 100644 --- a/platform/features/timeline/test/capabilities/TimelineTimespanSpec.js +++ b/platform/features/timeline/test/capabilities/TimelineTimespanSpec.js @@ -51,7 +51,7 @@ define( mutationModel = JSON.parse(JSON.stringify(testModel)); mockMutation = jasmine.createSpyObj("mutation", ["mutate"]); - mockTimespans = [ 44000, 65000, 1100 ].map(makeMockTimespan); + mockTimespans = [44000, 65000, 1100].map(makeMockTimespan); mockMutation.mutate.andCallFake(function (mutator) { mutator(mutationModel); @@ -107,4 +107,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/capabilities/TimelineUtilizationSpec.js b/platform/features/timeline/test/capabilities/TimelineUtilizationSpec.js index e229251900..0fd44795b4 100644 --- a/platform/features/timeline/test/capabilities/TimelineUtilizationSpec.js +++ b/platform/features/timeline/test/capabilities/TimelineUtilizationSpec.js @@ -36,4 +36,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/capabilities/UtilizationCapabilitySpec.js b/platform/features/timeline/test/capabilities/UtilizationCapabilitySpec.js index 71a474e4c7..0c37f3edae 100644 --- a/platform/features/timeline/test/capabilities/UtilizationCapabilitySpec.js +++ b/platform/features/timeline/test/capabilities/UtilizationCapabilitySpec.js @@ -69,8 +69,8 @@ define( resources: function () { return Object.keys(costs).sort(); }, - cost: function (c) { - return costs[c]; + cost: function (k) { + return costs[k]; } }); }, @@ -84,15 +84,15 @@ define( mockQ = jasmine.createSpyObj('$q', ['when', 'all']); mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getId', 'getModel', 'getCapability', 'useCapability' ] + ['getId', 'getModel', 'getCapability', 'useCapability'] ); mockRelationship = jasmine.createSpyObj( 'relationship', - [ 'getRelatedObjects' ] + ['getRelatedObjects'] ); mockComposition = jasmine.createSpyObj( 'composition', - [ 'invoke' ] + ['invoke'] ); mockCallback = jasmine.createSpy('callback'); diff --git a/platform/features/timeline/test/controllers/ActivityModeValuesControllerSpec.js b/platform/features/timeline/test/controllers/ActivityModeValuesControllerSpec.js index fdef2e9f09..d6eb96d81b 100644 --- a/platform/features/timeline/test/controllers/ActivityModeValuesControllerSpec.js +++ b/platform/features/timeline/test/controllers/ActivityModeValuesControllerSpec.js @@ -48,4 +48,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/controllers/TimelineControllerSpec.js b/platform/features/timeline/test/controllers/TimelineControllerSpec.js index f740c7e59b..aa88866ebc 100644 --- a/platform/features/timeline/test/controllers/TimelineControllerSpec.js +++ b/platform/features/timeline/test/controllers/TimelineControllerSpec.js @@ -68,6 +68,14 @@ define( }; } + function fireWatch(expr, value) { + mockScope.$watch.calls.forEach(function (call) { + if (call.args[0] === expr) { + call.args[1](value); + } + }); + } + beforeEach(function () { var mockA, mockB, mockUtilization, mockPromise, mockGraph, testCapabilities; @@ -99,7 +107,7 @@ define( mockScope = jasmine.createSpyObj( "$scope", - [ '$watch', '$on' ] + ['$watch', '$on'] ); mockLoader = jasmine.createSpyObj('objectLoader', ['load']); mockDomainObject = mockA; @@ -141,9 +149,15 @@ define( expect(mockScope.scroll.y).toEqual(0); }); + it("watches for a configuration object", function () { + expect(mockScope.$watch).toHaveBeenCalledWith( + "configuration", + jasmine.any(Function) + ); + }); + it("repopulates when modifications are made", function () { - var fnWatchCall, - strWatchCall; + var fnWatchCall; // Find the $watch that was given a function mockScope.$watch.calls.forEach(function (call) { @@ -151,16 +165,11 @@ define( // white-box: we know the first call is // the one we're looking for fnWatchCall = fnWatchCall || call; - } else if (typeof call.args[0] === 'string') { - strWatchCall = strWatchCall || call; } }); // Make sure string watch was for domainObject - expect(strWatchCall.args[0]).toEqual('domainObject'); - // Initially populate - strWatchCall.args[1](mockDomainObject); - + fireWatch('domainObject', mockDomainObject); // There should be to swimlanes expect(controller.swimlanes().length).toEqual(2); @@ -182,23 +191,23 @@ define( // order of $watch calls in TimelineController. // Initially populate - mockScope.$watch.calls[0].args[1](mockDomainObject); + fireWatch('domainObject', mockDomainObject); // Verify precondition - no graphs expect(controller.graphs().length).toEqual(0); // Execute the watch function for graph state - tmp = mockScope.$watch.calls[2].args[0](); + tmp = mockScope.$watch.calls[3].args[0](); // Change graph state testConfiguration.graph = { a: true, b: true }; // Verify that this would have triggered a watch - expect(mockScope.$watch.calls[2].args[0]()) + expect(mockScope.$watch.calls[3].args[0]()) .not.toEqual(tmp); // Run the function the watch would have triggered - mockScope.$watch.calls[2].args[1](); + mockScope.$watch.calls[3].args[1](); // Should have some graphs now expect(controller.graphs().length).toEqual(2); @@ -211,7 +220,7 @@ define( mockZoom.duration.andReturn(12345); // Initially populate - mockScope.$watch.calls[0].args[1](mockDomainObject); + fireWatch('domainObject', mockDomainObject); expect(controller.width(mockZoom)).toEqual(54321); // Verify interactions; we took zoom's duration for our start/end, @@ -245,4 +254,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/controllers/TimelineGanttControllerSpec.js b/platform/features/timeline/test/controllers/TimelineGanttControllerSpec.js index 2eb15a08ff..c7f16077fa 100644 --- a/platform/features/timeline/test/controllers/TimelineGanttControllerSpec.js +++ b/platform/features/timeline/test/controllers/TimelineGanttControllerSpec.js @@ -61,7 +61,9 @@ define( mockTimespan.getDuration.andReturn(50); mockTimespan.getEnd.andReturn(150); - mockToPixels.andCallFake(function (t) { return t * 10; }); + mockToPixels.andCallFake(function (t) { + return t * 10; + }); controller = new TimelineGanttController(TEST_MAX_OFFSCREEN); }); @@ -96,4 +98,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/controllers/TimelineGraphControllerSpec.js b/platform/features/timeline/test/controllers/TimelineGraphControllerSpec.js index 0fb6082a5d..51e9de94a4 100644 --- a/platform/features/timeline/test/controllers/TimelineGraphControllerSpec.js +++ b/platform/features/timeline/test/controllers/TimelineGraphControllerSpec.js @@ -32,7 +32,7 @@ define( beforeEach(function () { mockScope = jasmine.createSpyObj( '$scope', - [ '$watchCollection' ] + ['$watchCollection'] ); testResources = [ { key: 'abc', name: "Some name" }, @@ -58,7 +58,7 @@ define( // Supply new parameters mockScope.$watchCollection.mostRecentCall.args[1]({ - graphs: [ mockGraphA, mockGraphB ], + graphs: [mockGraphA, mockGraphB], origin: 9, duration: 144 }); diff --git a/platform/features/timeline/test/controllers/TimelineTableControllerSpec.js b/platform/features/timeline/test/controllers/TimelineTableControllerSpec.js index 1012476cb5..bb66becf27 100644 --- a/platform/features/timeline/test/controllers/TimelineTableControllerSpec.js +++ b/platform/features/timeline/test/controllers/TimelineTableControllerSpec.js @@ -38,7 +38,7 @@ define( // This controller's job is just to expose the formatter // in scope, so simply verify that the two agree. it("formats durations", function () { - [ 0, 100, 4123, 93600, 748801230012].forEach(function (n) { + [0, 100, 4123, 93600, 748801230012].forEach(function (n) { expect(controller.niceTime(n)) .toEqual(formatter.format(n)); }); diff --git a/platform/features/timeline/test/controllers/TimelineTickControllerSpec.js b/platform/features/timeline/test/controllers/TimelineTickControllerSpec.js index 7475061cd7..ddb53204a5 100644 --- a/platform/features/timeline/test/controllers/TimelineTickControllerSpec.js +++ b/platform/features/timeline/test/controllers/TimelineTickControllerSpec.js @@ -83,4 +83,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/controllers/TimelineZoomControllerSpec.js b/platform/features/timeline/test/controllers/TimelineZoomControllerSpec.js index d7322512d5..47e79fefa8 100644 --- a/platform/features/timeline/test/controllers/TimelineZoomControllerSpec.js +++ b/platform/features/timeline/test/controllers/TimelineZoomControllerSpec.js @@ -32,11 +32,7 @@ define( beforeEach(function () { testConfiguration = { - levels: [ - 1000, - 2000, - 3500 - ], + levels: [1000, 2000, 3500], width: 12321 }; mockScope = jasmine.createSpyObj("$scope", ['$watch']); @@ -74,30 +70,61 @@ define( expect(controller.zoom()).toEqual(3500); }); - it("does not normally persist zoom changes", function () { - controller.zoom(1); - expect(mockScope.commit).not.toHaveBeenCalled(); + it("observes scroll bounds", function () { + expect(mockScope.$watch) + .toHaveBeenCalledWith("scroll", jasmine.any(Function)); }); - it("persists zoom changes in Edit mode", function () { - mockScope.domainObject = jasmine.createSpyObj( - 'domainObject', - ['hasCapability', 'getCapability'] - ); - mockScope.domainObject.hasCapability.andCallFake(function (c) { - return c === 'editor'; + describe("when watches have fired", function () { + var mockDomainObject, + mockPromise, + mockTimespan, + testStart, + testEnd; + + beforeEach(function () { + testStart = 3000; + testEnd = 5500; + + mockDomainObject = jasmine.createSpyObj('domainObject', [ + 'getId', + 'getModel', + 'getCapability', + 'useCapability' + ]); + mockPromise = jasmine.createSpyObj('promise', ['then']); + mockTimespan = jasmine.createSpyObj('timespan', [ + 'getStart', + 'getEnd', + 'getDuration' + ]); + + mockDomainObject.useCapability.andCallFake(function (c) { + return c === 'timespan' && mockPromise; + }); + mockPromise.then.andCallFake(function (callback) { + callback(mockTimespan); + }); + mockTimespan.getStart.andReturn(testStart); + mockTimespan.getEnd.andReturn(testEnd); + mockTimespan.getDuration.andReturn(testEnd - testStart); + + mockScope.scroll = { x: 0, width: 20000 }; + mockScope.domainObject = mockDomainObject; + + mockScope.$watch.calls.forEach(function (call) { + call.args[1](mockScope[call.args[0]]); + }); }); - mockScope.domainObject.getCapability.andCallFake(function (c) { - if (c === 'editor') { - return { - inEditContext: function () {return true;} - }; - } + + it("zooms to fit the timeline", function () { + var x1 = mockScope.scroll.x, + x2 = mockScope.scroll.x + mockScope.scroll.width; + expect(Math.round(controller.toMillis(x1))) + .toEqual(testStart); + expect(Math.round(controller.toMillis(x2))) + .toBeGreaterThan(testEnd); }); - controller.zoom(1); - expect(mockScope.commit).toHaveBeenCalled(); - expect(mockScope.configuration.zoomLevel) - .toEqual(jasmine.any(Number)); }); }); diff --git a/platform/features/timeline/test/controllers/drag/TimelineDragHandleFactorySpec.js b/platform/features/timeline/test/controllers/drag/TimelineDragHandleFactorySpec.js index 982380ab5e..1ef3fe6733 100644 --- a/platform/features/timeline/test/controllers/drag/TimelineDragHandleFactorySpec.js +++ b/platform/features/timeline/test/controllers/drag/TimelineDragHandleFactorySpec.js @@ -35,19 +35,19 @@ define( beforeEach(function () { mockDragHandler = jasmine.createSpyObj( 'dragHandler', - [ 'start' ] + ['start'] ); mockSnapHandler = jasmine.createSpyObj( 'snapHandler', - [ 'snap' ] + ['snap'] ); mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getCapability', 'getId' ] + ['getCapability', 'getId'] ); mockType = jasmine.createSpyObj( 'type', - [ 'instanceOf' ] + ['instanceOf'] ); mockDomainObject.getId.andReturn('test-id'); diff --git a/platform/features/timeline/test/controllers/drag/TimelineDragHandlerSpec.js b/platform/features/timeline/test/controllers/drag/TimelineDragHandlerSpec.js index 98e610f68b..1e62983437 100644 --- a/platform/features/timeline/test/controllers/drag/TimelineDragHandlerSpec.js +++ b/platform/features/timeline/test/controllers/drag/TimelineDragHandlerSpec.js @@ -56,22 +56,22 @@ define( } function makeMockDomainObject(id, composition) { - var mockDomainObject = jasmine.createSpyObj( + var mockDomainObj = jasmine.createSpyObj( 'domainObject-' + id, ['getId', 'getModel', 'getCapability', 'useCapability'] ); - mockDomainObject.getId.andReturn(id); - mockDomainObject.getModel.andReturn({ composition: composition }); - mockDomainObject.useCapability.andReturn(asPromise(mockTimespans[id])); - mockDomainObject.getCapability.andCallFake(function (c) { + mockDomainObj.getId.andReturn(id); + mockDomainObj.getModel.andReturn({ composition: composition }); + mockDomainObj.useCapability.andReturn(asPromise(mockTimespans[id])); + mockDomainObj.getCapability.andCallFake(function (c) { return { persistence: mockPersists[id], mutation: mockMutations[id] }[c]; }); - return mockDomainObject; + return mockDomainObj; } beforeEach(function () { @@ -81,15 +81,15 @@ define( ['a', 'b', 'c', 'd', 'e', 'f'].forEach(function (id, index) { mockTimespans[id] = jasmine.createSpyObj( 'timespan-' + id, - [ 'getStart', 'getEnd', 'getDuration', 'setStart', 'setEnd', 'setDuration' ] + ['getStart', 'getEnd', 'getDuration', 'setStart', 'setEnd', 'setDuration'] ); mockPersists[id] = jasmine.createSpyObj( 'persistence-' + id, - [ 'persist' ] + ['persist'] ); mockMutations[id] = jasmine.createSpyObj( 'mutation-' + id, - [ 'mutate' ] + ['mutate'] ); mockTimespans[id].getStart.andReturn(index * 1000); mockTimespans[id].getDuration.andReturn(4000 + index); @@ -225,4 +225,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/controllers/drag/TimelineDragPopulatorSpec.js b/platform/features/timeline/test/controllers/drag/TimelineDragPopulatorSpec.js index c37c34f8b0..bfb2176e18 100644 --- a/platform/features/timeline/test/controllers/drag/TimelineDragPopulatorSpec.js +++ b/platform/features/timeline/test/controllers/drag/TimelineDragPopulatorSpec.js @@ -69,4 +69,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/controllers/drag/TimelineEndHandleSpec.js b/platform/features/timeline/test/controllers/drag/TimelineEndHandleSpec.js index a48e8ea8f5..aa87903c48 100644 --- a/platform/features/timeline/test/controllers/drag/TimelineEndHandleSpec.js +++ b/platform/features/timeline/test/controllers/drag/TimelineEndHandleSpec.js @@ -33,15 +33,15 @@ define( beforeEach(function () { mockDragHandler = jasmine.createSpyObj( 'dragHandler', - [ 'end', 'persist' ] + ['end', 'persist'] ); mockSnapHandler = jasmine.createSpyObj( 'snapHandler', - [ 'snap' ] + ['snap'] ); mockZoomController = jasmine.createSpyObj( 'zoom', - [ 'toMillis', 'toPixels' ] + ['toMillis', 'toPixels'] ); mockDragHandler.end.andReturn(12321); @@ -112,4 +112,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/controllers/drag/TimelineMoveHandleSpec.js b/platform/features/timeline/test/controllers/drag/TimelineMoveHandleSpec.js index 0ce25cc13f..fbce2d8212 100644 --- a/platform/features/timeline/test/controllers/drag/TimelineMoveHandleSpec.js +++ b/platform/features/timeline/test/controllers/drag/TimelineMoveHandleSpec.js @@ -33,15 +33,15 @@ define( beforeEach(function () { mockDragHandler = jasmine.createSpyObj( 'dragHandler', - [ 'start', 'duration', 'end', 'move', 'persist' ] + ['start', 'duration', 'end', 'move', 'persist'] ); mockSnapHandler = jasmine.createSpyObj( 'snapHandler', - [ 'snap' ] + ['snap'] ); mockZoomController = jasmine.createSpyObj( 'zoom', - [ 'toMillis', 'toPixels' ] + ['toMillis', 'toPixels'] ); mockDragHandler.start.andReturn(12321); @@ -179,4 +179,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/controllers/drag/TimelineSnapHandlerSpec.js b/platform/features/timeline/test/controllers/drag/TimelineSnapHandlerSpec.js index 2314d08cc2..36fb30188b 100644 --- a/platform/features/timeline/test/controllers/drag/TimelineSnapHandlerSpec.js +++ b/platform/features/timeline/test/controllers/drag/TimelineSnapHandlerSpec.js @@ -34,7 +34,7 @@ define( mockDragHandler = jasmine.createSpyObj( 'dragHandler', - [ 'start', 'end', 'ids' ] + ['start', 'end', 'ids'] ); mockDragHandler.ids.andReturn(['a', 'b', 'c', 'd']); @@ -76,4 +76,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/controllers/drag/TimelineStartHandleSpec.js b/platform/features/timeline/test/controllers/drag/TimelineStartHandleSpec.js index 2869a48148..de7d3cb643 100644 --- a/platform/features/timeline/test/controllers/drag/TimelineStartHandleSpec.js +++ b/platform/features/timeline/test/controllers/drag/TimelineStartHandleSpec.js @@ -33,15 +33,15 @@ define( beforeEach(function () { mockDragHandler = jasmine.createSpyObj( 'dragHandler', - [ 'start', 'persist' ] + ['start', 'persist'] ); mockSnapHandler = jasmine.createSpyObj( 'snapHandler', - [ 'snap' ] + ['snap'] ); mockZoomController = jasmine.createSpyObj( 'zoom', - [ 'toMillis', 'toPixels' ] + ['toMillis', 'toPixels'] ); mockDragHandler.start.andReturn(12321); @@ -111,4 +111,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/controllers/graph/TimelineGraphPopulatorSpec.js b/platform/features/timeline/test/controllers/graph/TimelineGraphPopulatorSpec.js index 08cddf1b24..69a5148b59 100644 --- a/platform/features/timeline/test/controllers/graph/TimelineGraphPopulatorSpec.js +++ b/platform/features/timeline/test/controllers/graph/TimelineGraphPopulatorSpec.js @@ -48,9 +48,9 @@ define( beforeEach(function () { testResources = { - a: [ 'xyz', 'abc' ], - b: [ 'xyz' ], - c: [ 'xyz', 'abc', 'def', 'ghi' ] + a: ['xyz', 'abc'], + b: ['xyz'], + c: ['xyz', 'abc', 'def', 'ghi'] }; mockQ = jasmine.createSpyObj('$q', ['when', 'all']); @@ -58,16 +58,16 @@ define( mockSwimlanes = ['a', 'b', 'c'].map(function (k) { var mockSwimlane = jasmine.createSpyObj( 'swimlane-' + k, - [ 'graph', 'color' ] + ['graph', 'color'] ), mockGraph = jasmine.createSpyObj( 'graph-' + k, - [ 'getPointCount', 'getDomainValue', 'getRangeValue' ] + ['getPointCount', 'getDomainValue', 'getRangeValue'] ); mockSwimlane.graph.andReturn(true); mockSwimlane.domainObject = jasmine.createSpyObj( 'domainObject-' + k, - [ 'getCapability', 'hasCapability', 'useCapability', 'getId' ] + ['getCapability', 'hasCapability', 'useCapability', 'getId'] ); mockSwimlane.color.andReturn('#' + k); // Provide just enough information about graphs to support @@ -148,4 +148,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/controllers/graph/TimelineGraphRendererSpec.js b/platform/features/timeline/test/controllers/graph/TimelineGraphRendererSpec.js index e4137e0807..74e9e18e79 100644 --- a/platform/features/timeline/test/controllers/graph/TimelineGraphRendererSpec.js +++ b/platform/features/timeline/test/controllers/graph/TimelineGraphRendererSpec.js @@ -72,4 +72,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/controllers/graph/TimelineGraphSpec.js b/platform/features/timeline/test/controllers/graph/TimelineGraphSpec.js index cfaeba677c..305da86334 100644 --- a/platform/features/timeline/test/controllers/graph/TimelineGraphSpec.js +++ b/platform/features/timeline/test/controllers/graph/TimelineGraphSpec.js @@ -42,9 +42,9 @@ define( beforeEach(function () { testColors = { - a: [ 0, 1, 0 ], - b: [ 1, 0, 1 ], - c: [ 1, 0, 0 ] + a: [0, 1, 0], + b: [1, 0, 1], + c: [1, 0, 0] }; mockGraphs = []; @@ -53,11 +53,11 @@ define( ['a', 'b', 'c'].forEach(function (k, i) { var mockGraph = jasmine.createSpyObj( 'utilization-' + k, - [ 'getPointCount', 'getDomainValue', 'getRangeValue' ] + ['getPointCount', 'getDomainValue', 'getRangeValue'] ); mockDomainObjects[k] = jasmine.createSpyObj( 'domainObject-' + k, - [ 'getCapability', 'useCapability' ] + ['getCapability', 'useCapability'] ); mockDomainObjects[k].useCapability.andReturn(asPromise({ testResource: mockGraph @@ -72,7 +72,7 @@ define( mockRenderer = jasmine.createSpyObj( 'renderer', - [ 'render', 'decode' ] + ['render', 'decode'] ); mockRenderer.render.andCallFake(function (utilization) { @@ -167,4 +167,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/controllers/swimlane/TimelineColorAssignerSpec.js b/platform/features/timeline/test/controllers/swimlane/TimelineColorAssignerSpec.js index 989f8153ee..5848c25deb 100644 --- a/platform/features/timeline/test/controllers/swimlane/TimelineColorAssignerSpec.js +++ b/platform/features/timeline/test/controllers/swimlane/TimelineColorAssignerSpec.js @@ -49,10 +49,14 @@ define( var colors = {}, i, ids = []; // Add item to set - function set(c) { colors[c] = true; } + function set(c) { + colors[c] = true; + } // Generate ids - for (i = 0; i < 30; i += 1) { ids.push("id" + i); } + for (i = 0; i < 30; i += 1) { + ids.push("id" + i); + } // Assign colors to each id, then retrieve colors, // storing into the set diff --git a/platform/features/timeline/test/controllers/swimlane/TimelineProxySpec.js b/platform/features/timeline/test/controllers/swimlane/TimelineProxySpec.js index 1de3a7d9e1..7490d61346 100644 --- a/platform/features/timeline/test/controllers/swimlane/TimelineProxySpec.js +++ b/platform/features/timeline/test/controllers/swimlane/TimelineProxySpec.js @@ -38,16 +38,16 @@ define( ); mockSelection = jasmine.createSpyObj( 'selection', - [ 'get' ] + ['get'] ); mockActionCapability = jasmine.createSpyObj( 'action', - [ 'getActions' ] + ['getActions'] ); mockActions = ['a', 'b', 'c'].map(function (type) { var mockAction = jasmine.createSpyObj( 'action-' + type, - [ 'perform', 'getMetadata' ] + ['perform', 'getMetadata'] ); mockAction.getMetadata.andReturn({ type: type }); return mockAction; diff --git a/platform/features/timeline/test/controllers/swimlane/TimelineSwimlaneDecoratorSpec.js b/platform/features/timeline/test/controllers/swimlane/TimelineSwimlaneDecoratorSpec.js index c4a059f7f7..56fb532f27 100644 --- a/platform/features/timeline/test/controllers/swimlane/TimelineSwimlaneDecoratorSpec.js +++ b/platform/features/timeline/test/controllers/swimlane/TimelineSwimlaneDecoratorSpec.js @@ -43,7 +43,7 @@ define( mockSwimlane.domainObject = jasmine.createSpyObj( 'domainObject', - [ 'getCapability', 'getModel' ] + ['getCapability', 'getModel'] ); mockCapabilities.mutation = jasmine.createSpyObj( @@ -158,11 +158,11 @@ define( it("fires the 'remove' action when remove is called", function () { var mockChild = jasmine.createSpyObj( 'childObject', - [ 'getCapability', 'getModel' ] + ['getCapability', 'getModel'] ), mockAction = jasmine.createSpyObj( 'action', - [ 'perform' ] + ['perform'] ); mockChild.getCapability.andCallFake(function (c) { diff --git a/platform/features/timeline/test/controllers/swimlane/TimelineSwimlaneDropHandlerSpec.js b/platform/features/timeline/test/controllers/swimlane/TimelineSwimlaneDropHandlerSpec.js index 3eed051f45..ebb01159c9 100644 --- a/platform/features/timeline/test/controllers/swimlane/TimelineSwimlaneDropHandlerSpec.js +++ b/platform/features/timeline/test/controllers/swimlane/TimelineSwimlaneDropHandlerSpec.js @@ -41,28 +41,28 @@ define( mockSwimlane = jasmine.createSpyObj( "swimlane", - [ "highlight", "highlightBottom" ] + ["highlight", "highlightBottom"] ); // domainObject, idPath, children, expanded mockSwimlane.domainObject = jasmine.createSpyObj( "domainObject", - [ "getId", "getCapability", "useCapability", "hasCapability" ] + ["getId", "getCapability", "useCapability", "hasCapability"] ); - mockSwimlane.idPath = [ 'a', 'b' ]; - mockSwimlane.children = [ {} ]; + mockSwimlane.idPath = ['a', 'b']; + mockSwimlane.children = [{}]; mockSwimlane.expanded = true; mockSwimlane.parent = {}; mockSwimlane.parent.idPath = ['a']; mockSwimlane.parent.domainObject = jasmine.createSpyObj( "domainObject", - [ "getId", "getCapability", "useCapability", "hasCapability" ] + ["getId", "getCapability", "useCapability", "hasCapability"] ); - mockSwimlane.parent.children = [ mockSwimlane ]; + mockSwimlane.parent.children = [mockSwimlane]; mockSwimlane.children[0].domainObject = jasmine.createSpyObj( "domainObject", - [ "getId", "getCapability", "useCapability", "hasCapability" ] + ["getId", "getCapability", "useCapability", "hasCapability"] ); mockAction = jasmine.createSpyObj('action', ['perform']); @@ -73,11 +73,11 @@ define( mockOtherObject = jasmine.createSpyObj( "domainObject", - [ "getId", "getCapability", "useCapability", "hasCapability" ] + ["getId", "getCapability", "useCapability", "hasCapability"] ); mockActionCapability = jasmine.createSpyObj("action", ["perform", "getActions"]); mockPersistence = jasmine.createSpyObj("persistence", ["persist"]); - mockContext = jasmine.createSpyObj('context', [ 'getParent' ]); + mockContext = jasmine.createSpyObj('context', ['getParent']); mockActionCapability.getActions.andReturn([mockAction]); mockSwimlane.parent.domainObject.getId.andReturn('a'); @@ -152,7 +152,7 @@ define( }); it("inserts into when highlighted", function () { - var testModel = { composition: [ 'c' ] }; + var testModel = { composition: ['c'] }; mockSwimlane.highlight.andReturn(true); handler.drop('d', mockOtherObject); // Should have mutated @@ -167,7 +167,7 @@ define( }); it("inserts after as a peer when highlighted at the bottom", function () { - var testModel = { composition: [ 'x', 'b', 'y' ] }; + var testModel = { composition: ['x', 'b', 'y'] }; mockSwimlane.highlightBottom.andReturn(true); mockSwimlane.expanded = false; handler.drop('d', mockOtherObject); @@ -177,11 +177,11 @@ define( // Run the mutator mockSwimlane.parent.domainObject.useCapability.mostRecentCall .args[1](testModel); - expect(testModel.composition).toEqual([ 'x', 'b', 'd', 'y']); + expect(testModel.composition).toEqual(['x', 'b', 'd', 'y']); }); it("inserts into when highlighted at the bottom and expanded", function () { - var testModel = { composition: [ 'c' ] }; + var testModel = { composition: ['c'] }; mockSwimlane.highlightBottom.andReturn(true); mockSwimlane.expanded = true; handler.drop('d', mockOtherObject); @@ -191,11 +191,11 @@ define( // Run the mutator mockSwimlane.domainObject.useCapability.mostRecentCall .args[1](testModel); - expect(testModel.composition).toEqual([ 'd', 'c' ]); + expect(testModel.composition).toEqual(['d', 'c']); }); it("inserts after as a peer when highlighted at the bottom and childless", function () { - var testModel = { composition: [ 'x', 'b', 'y' ] }; + var testModel = { composition: ['x', 'b', 'y'] }; mockSwimlane.highlightBottom.andReturn(true); mockSwimlane.expanded = true; mockSwimlane.children = []; @@ -206,11 +206,11 @@ define( // Run the mutator mockSwimlane.parent.domainObject.useCapability.mostRecentCall .args[1](testModel); - expect(testModel.composition).toEqual([ 'x', 'b', 'd', 'y']); + expect(testModel.composition).toEqual(['x', 'b', 'd', 'y']); }); it("allows reordering within a parent", function () { - var testModel = { composition: [ 'x', 'b', 'y', 'd' ] }; + var testModel = { composition: ['x', 'b', 'y', 'd'] }; mockSwimlane.highlightBottom.andReturn(true); mockSwimlane.expanded = true; @@ -227,7 +227,7 @@ define( runs(function () { mockSwimlane.parent.domainObject.useCapability.mostRecentCall .args[1](testModel); - expect(testModel.composition).toEqual([ 'x', 'b', 'd', 'y']); + expect(testModel.composition).toEqual(['x', 'b', 'd', 'y']); }); }); diff --git a/platform/features/timeline/test/controllers/swimlane/TimelineSwimlanePopulatorSpec.js b/platform/features/timeline/test/controllers/swimlane/TimelineSwimlanePopulatorSpec.js index d3eceaa27e..f9358a514e 100644 --- a/platform/features/timeline/test/controllers/swimlane/TimelineSwimlanePopulatorSpec.js +++ b/platform/features/timeline/test/controllers/swimlane/TimelineSwimlanePopulatorSpec.js @@ -42,16 +42,16 @@ define( } function makeMockDomainObject(id, composition) { - var mockDomainObject = jasmine.createSpyObj( + var mockDomainObj = jasmine.createSpyObj( 'domainObject-' + id, ['getId', 'getModel', 'getCapability', 'useCapability'] ); - mockDomainObject.getId.andReturn(id); - mockDomainObject.getModel.andReturn({ composition: composition }); - mockDomainObject.useCapability.andReturn(asPromise(false)); + mockDomainObj.getId.andReturn(id); + mockDomainObj.getModel.andReturn({ composition: composition }); + mockDomainObj.useCapability.andReturn(asPromise(false)); - return mockDomainObject; + return mockDomainObj; } function subgraph(domainObject, objects) { @@ -160,4 +160,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/controllers/swimlane/TimelineSwimlaneSpec.js b/platform/features/timeline/test/controllers/swimlane/TimelineSwimlaneSpec.js index 0a047859f2..615b6f7501 100644 --- a/platform/features/timeline/test/controllers/swimlane/TimelineSwimlaneSpec.js +++ b/platform/features/timeline/test/controllers/swimlane/TimelineSwimlaneSpec.js @@ -36,7 +36,9 @@ define( testConfiguration; function asPromise(v) { - return { then: function (cb) { cb(v); } }; + return { then: function (cb) { + cb(v); + } }; } beforeEach(function () { @@ -218,4 +220,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/features/timeline/test/directives/MCTSwimlaneDropSpec.js b/platform/features/timeline/test/directives/MCTSwimlaneDropSpec.js index 315db101db..4f7b914db3 100644 --- a/platform/features/timeline/test/directives/MCTSwimlaneDropSpec.js +++ b/platform/features/timeline/test/directives/MCTSwimlaneDropSpec.js @@ -57,11 +57,11 @@ define( testAttrs = { mctSwimlaneDrop: "mockSwimlane" }; mockSwimlane = jasmine.createSpyObj( "swimlane", - [ "allowDropIn", "allowDropAfter", "drop", "highlight", "highlightBottom" ] + ["allowDropIn", "allowDropAfter", "drop", "highlight", "highlightBottom"] ); mockElement[0] = jasmine.createSpyObj( "realElement", - [ "getBoundingClientRect" ] + ["getBoundingClientRect"] ); mockElement[0].offsetHeight = TEST_HEIGHT; mockElement[0].getBoundingClientRect.andReturn({ top: TEST_TOP }); diff --git a/platform/features/timeline/test/services/ObjectLoaderSpec.js b/platform/features/timeline/test/services/ObjectLoaderSpec.js index cc7ee70b88..8828d92a06 100644 --- a/platform/features/timeline/test/services/ObjectLoaderSpec.js +++ b/platform/features/timeline/test/services/ObjectLoaderSpec.js @@ -54,7 +54,7 @@ define( function addDomainObject(id, children, capabilities) { var mockDomainObject = jasmine.createSpyObj( 'object-' + id, - [ 'useCapability', 'hasCapability', 'getId' ] + ['useCapability', 'hasCapability', 'getId'] ); mockDomainObject.getId.andReturn(id); @@ -72,7 +72,7 @@ define( } beforeEach(function () { - mockQ = jasmine.createSpyObj('$q', [ 'when', 'all' ]); + mockQ = jasmine.createSpyObj('$q', ['when', 'all']); mockCallback = jasmine.createSpy('callback'); mockDomainObjects = {}; testCompositions = {}; @@ -82,8 +82,12 @@ define( mockQ.when.andCallFake(asPromise); mockQ.all.andCallFake(function (values) { var result = []; - function addResult(v) { result.push(v); } - function promiseResult(v) { asPromise(v).then(addResult); } + function addResult(v) { + result.push(v); + } + function promiseResult(v) { + asPromise(v).then(addResult); + } values.forEach(promiseResult); return asPromise(result); }); @@ -152,4 +156,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/forms/src/MCTForm.js b/platform/forms/src/MCTForm.js index 4e422b1c45..13c859f0e6 100644 --- a/platform/forms/src/MCTForm.js +++ b/platform/forms/src/MCTForm.js @@ -58,7 +58,7 @@ define( template: formTemplate, // Use FormController to populate/respond to changes in scope - controller: [ '$scope', FormController ], + controller: ['$scope', FormController], // Initial an isolate scope scope: { diff --git a/platform/forms/src/controllers/ColorController.js b/platform/forms/src/controllers/ColorController.js index 2bf38e0c63..f91397be82 100644 --- a/platform/forms/src/controllers/ColorController.js +++ b/platform/forms/src/controllers/ColorController.js @@ -25,16 +25,16 @@ define( function () { var BASE_COLORS = [ - [ 136, 32, 32 ], - [ 224, 64, 64 ], - [ 240, 160, 72 ], - [ 255, 248, 96 ], - [ 128, 240, 72 ], - [ 128, 248, 248 ], - [ 88, 144, 224 ], - [ 0, 72, 240 ], - [ 136, 80, 240 ], - [ 224, 96, 248 ] + [136, 32, 32], + [224, 64, 64], + [240, 160, 72], + [255, 248, 96], + [128, 240, 72], + [128, 248, 248], + [88, 144, 224], + [0, 72, 240], + [136, 80, 240], + [224, 96, 248] ], GRADIENTS = [0.75, 0.50, 0.25, -0.25, -0.50, -0.75], GROUPS = []; diff --git a/platform/forms/src/controllers/DialogButtonController.js b/platform/forms/src/controllers/DialogButtonController.js index 0e6804bccb..f6431221a4 100644 --- a/platform/forms/src/controllers/DialogButtonController.js +++ b/platform/forms/src/controllers/DialogButtonController.js @@ -71,7 +71,7 @@ define( // Prepare the form; a single row buttonForm = { name: structure.title, - sections: [ { rows: [ row ] } ] + sections: [{ rows: [row] }] }; } diff --git a/platform/forms/test/MCTControlSpec.js b/platform/forms/test/MCTControlSpec.js index 3fcdc8d5e5..a588381ddc 100644 --- a/platform/forms/test/MCTControlSpec.js +++ b/platform/forms/test/MCTControlSpec.js @@ -45,7 +45,7 @@ define( } ]; - mockScope = jasmine.createSpyObj("$scope", [ "$watch" ]); + mockScope = jasmine.createSpyObj("$scope", ["$watch"]); mockLinker = jasmine.createSpyObj("templateLinker", ["link"]); mockChangeTemplate = jasmine.createSpy('changeTemplate'); mockLinker.link.andReturn(mockChangeTemplate); @@ -83,4 +83,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/forms/test/MCTFormSpec.js b/platform/forms/test/MCTFormSpec.js index 0be985212e..d2f5fc5c09 100644 --- a/platform/forms/test/MCTFormSpec.js +++ b/platform/forms/test/MCTFormSpec.js @@ -34,7 +34,7 @@ define( } beforeEach(function () { - mockScope = jasmine.createSpyObj("$scope", [ "$watch" ]); + mockScope = jasmine.createSpyObj("$scope", ["$watch"]); mockScope.$parent = {}; mctForm = new MCTForm(); }); @@ -111,4 +111,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/forms/test/MCTToolbarSpec.js b/platform/forms/test/MCTToolbarSpec.js index 10bc0ec3a3..61f0dae01c 100644 --- a/platform/forms/test/MCTToolbarSpec.js +++ b/platform/forms/test/MCTToolbarSpec.js @@ -34,7 +34,7 @@ define( } beforeEach(function () { - mockScope = jasmine.createSpyObj("$scope", [ "$watch" ]); + mockScope = jasmine.createSpyObj("$scope", ["$watch"]); mockScope.$parent = {}; mctToolbar = new MCTToolbar(); }); @@ -111,4 +111,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/forms/test/controllers/ColorControllerSpec.js b/platform/forms/test/controllers/ColorControllerSpec.js index ba76b4a26d..3f8bce3e05 100644 --- a/platform/forms/test/controllers/ColorControllerSpec.js +++ b/platform/forms/test/controllers/ColorControllerSpec.js @@ -67,4 +67,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/forms/test/controllers/CompositeControllerSpec.js b/platform/forms/test/controllers/CompositeControllerSpec.js index bf705bfac8..bec1d3a96e 100644 --- a/platform/forms/test/controllers/CompositeControllerSpec.js +++ b/platform/forms/test/controllers/CompositeControllerSpec.js @@ -52,4 +52,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/forms/test/controllers/DateTimeControllerSpec.js b/platform/forms/test/controllers/DateTimeControllerSpec.js index e2935365af..079cd0b80f 100644 --- a/platform/forms/test/controllers/DateTimeControllerSpec.js +++ b/platform/forms/test/controllers/DateTimeControllerSpec.js @@ -29,7 +29,7 @@ define( controller; beforeEach(function () { - mockScope = jasmine.createSpyObj("$scope", [ "$watch" ]); + mockScope = jasmine.createSpyObj("$scope", ["$watch"]); controller = new DateTimeController(mockScope); }); diff --git a/platform/forms/test/controllers/DialogButtonControllerSpec.js b/platform/forms/test/controllers/DialogButtonControllerSpec.js index 68803d2768..1aecb5d941 100644 --- a/platform/forms/test/controllers/DialogButtonControllerSpec.js +++ b/platform/forms/test/controllers/DialogButtonControllerSpec.js @@ -34,15 +34,15 @@ define( beforeEach(function () { mockScope = jasmine.createSpyObj( '$scope', - [ '$watch' ] + ['$watch'] ); mockDialogService = jasmine.createSpyObj( 'dialogService', - [ 'getUserInput' ] + ['getUserInput'] ); mockPromise = jasmine.createSpyObj( 'promise', - [ 'then' ] + ['then'] ); testStructure = { name: "A Test", @@ -132,4 +132,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/forms/test/controllers/FormControllerSpec.js b/platform/forms/test/controllers/FormControllerSpec.js index 9e37388e32..06f3ea93bd 100644 --- a/platform/forms/test/controllers/FormControllerSpec.js +++ b/platform/forms/test/controllers/FormControllerSpec.js @@ -29,7 +29,7 @@ define( controller; beforeEach(function () { - mockScope = jasmine.createSpyObj("$scope", [ "$watch" ]); + mockScope = jasmine.createSpyObj("$scope", ["$watch"]); mockScope.$parent = {}; controller = new FormController(mockScope); }); @@ -85,4 +85,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/framework/bundle.js b/platform/framework/bundle.js index bcc0dbb867..89c44feade 100644 --- a/platform/framework/bundle.js +++ b/platform/framework/bundle.js @@ -21,10 +21,10 @@ *****************************************************************************/ define([ - + 'legacyRegistry' ], function ( - + legacyRegistry ) { diff --git a/platform/framework/src/FrameworkLayer.js b/platform/framework/src/FrameworkLayer.js index 1f8910fe15..d1888085f0 100644 --- a/platform/framework/src/FrameworkLayer.js +++ b/platform/framework/src/FrameworkLayer.js @@ -102,4 +102,4 @@ define([ }; return FrameworkLayer; -}); \ No newline at end of file +}); diff --git a/platform/framework/src/load/Bundle.js b/platform/framework/src/load/Bundle.js index 44849568e5..3f05e23ae3 100644 --- a/platform/framework/src/load/Bundle.js +++ b/platform/framework/src/load/Bundle.js @@ -106,8 +106,8 @@ define( */ Bundle.prototype.getSourcePath = function (sourceFile) { var subpath = sourceFile ? - [ this.definition.sources, sourceFile ] : - [ this.definition.sources ]; + [this.definition.sources, sourceFile] : + [this.definition.sources]; return this.resolvePath(subpath); }; @@ -124,8 +124,8 @@ define( */ Bundle.prototype.getResourcePath = function (resourceFile) { var subpath = resourceFile ? - [ this.definition.resources, resourceFile ] : - [ this.definition.resources ]; + [this.definition.resources, resourceFile] : + [this.definition.resources]; return this.resolvePath(subpath); }; @@ -142,8 +142,8 @@ define( */ Bundle.prototype.getLibraryPath = function (libraryFile) { var subpath = libraryFile ? - [ this.definition.libraries, libraryFile ] : - [ this.definition.libraries ]; + [this.definition.libraries, libraryFile] : + [this.definition.libraries]; return this.resolvePath(subpath); }; diff --git a/platform/framework/src/load/BundleLoader.js b/platform/framework/src/load/BundleLoader.js index b40b8998ba..e8cbe5252e 100644 --- a/platform/framework/src/load/BundleLoader.js +++ b/platform/framework/src/load/BundleLoader.js @@ -73,7 +73,9 @@ define( // loadBundleDefinition, so at this point they are safe // to discard. function filterBundles(array) { - return array.filter(function (x) { return x !== undefined; }); + return array.filter(function (x) { + return x !== undefined; + }); } // Load a definition for a bundle diff --git a/platform/framework/src/register/ExtensionRegistrar.js b/platform/framework/src/register/ExtensionRegistrar.js index 4f15a2344a..7b5ef7e096 100644 --- a/platform/framework/src/register/ExtensionRegistrar.js +++ b/platform/framework/src/register/ExtensionRegistrar.js @@ -92,7 +92,9 @@ define( // Always return a static value; used to represent plain // metadata as a single dependency in Angular. function staticFunction(value) { - return function () { return value; }; + return function () { + return value; + }; } // Utility function; create the second argument for Angular's @@ -162,15 +164,15 @@ define( // Examine a group of resolved dependencies to determine // which extension categories still need to be satisfied. - function findEmptyExtensionDependencies(extensionGroup) { + function findEmptyExtensionDependencies(extGroup) { var needed = {}, - categories = Object.keys(extensionGroup), + categories = Object.keys(extGroup), allExtensions = []; // Build up an array of all extensions categories.forEach(function (category) { allExtensions = - allExtensions.concat(extensionGroup[category]); + allExtensions.concat(extGroup[category]); }); // Track all extension dependencies exposed therefrom @@ -195,10 +197,9 @@ define( // Register any extension categories that are depended-upon but // have not been declared anywhere; such dependencies are then // satisfied by an empty array, instead of not at all. - function registerEmptyDependencies(extensionGroup) { - findEmptyExtensionDependencies( - extensionGroup - ).forEach(function (name) { + function registerEmptyDependencies(extGroup) { + findEmptyExtensionDependencies(extGroup) + .forEach(function (name) { $log.info("Registering empty extension category " + name); app.factory(name, [staticFunction([])]); }); diff --git a/platform/framework/src/resolve/ExtensionResolver.js b/platform/framework/src/resolve/ExtensionResolver.js index bac334a4a0..1abcd91a91 100644 --- a/platform/framework/src/resolve/ExtensionResolver.js +++ b/platform/framework/src/resolve/ExtensionResolver.js @@ -58,11 +58,11 @@ define( var loader = this.loader, $log = this.$log; - function loadImplementation(extension) { - var implPromise = extension.hasImplementationValue() ? - Promise.resolve(extension.getImplementationValue()) : - loader.load(extension.getImplementationPath()), - definition = extension.getDefinition(); + function loadImplementation(ext) { + var implPromise = ext.hasImplementationValue() ? + Promise.resolve(ext.getImplementationValue()) : + loader.load(ext.getImplementationPath()), + definition = ext.getDefinition(); // Wrap a constructor function (to avoid modifying the original) function constructorFor(impl) { @@ -94,7 +94,7 @@ define( result.definition = definition; // Log that this load was successful - $log.info("Resolved " + extension.getLogName()); + $log.info("Resolved " + ext.getLogName()); return result; } @@ -105,7 +105,7 @@ define( // Build up a log message from parts var message = [ "Could not load implementation for extension ", - extension.getLogName(), + ext.getLogName(), " due to ", err.message ].join(""); @@ -113,16 +113,16 @@ define( // Log that the extension was not loaded $log.warn(message); - return extension.getDefinition(); + return ext.getDefinition(); } - if (!extension.hasImplementationValue()) { + if (!ext.hasImplementationValue()) { // Log that loading has begun $log.info([ "Loading implementation ", - extension.getImplementationPath(), + ext.getImplementationPath(), " for extension ", - extension.getLogName() + ext.getLogName() ].join("")); } diff --git a/platform/framework/test/FrameworkInitializerSpec.js b/platform/framework/test/FrameworkInitializerSpec.js index a8c2a6135d..f91c7dbc93 100644 --- a/platform/framework/test/FrameworkInitializerSpec.js +++ b/platform/framework/test/FrameworkInitializerSpec.js @@ -50,13 +50,17 @@ define( it("calls injected stages in order", function () { var result; - initializer.runApplication([]).then(function (v) { result = v; }); + initializer.runApplication([]).then(function (v) { + result = v; + }); waitsFor( - function () { return result !== undefined; }, - "promise resolution", - 250 - ); + function () { + return result !== undefined; + }, + "promise resolution", + 250 + ); runs(function () { expect(result).toEqual( @@ -67,4 +71,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/framework/test/LogLevelSpec.js b/platform/framework/test/LogLevelSpec.js index ccbba5a911..00a49077c5 100644 --- a/platform/framework/test/LogLevelSpec.js +++ b/platform/framework/test/LogLevelSpec.js @@ -95,4 +95,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/framework/test/bootstrap/ApplicationBootstrapperSpec.js b/platform/framework/test/bootstrap/ApplicationBootstrapperSpec.js index 740cf3d4aa..b4a64d62b8 100644 --- a/platform/framework/test/bootstrap/ApplicationBootstrapperSpec.js +++ b/platform/framework/test/bootstrap/ApplicationBootstrapperSpec.js @@ -104,4 +104,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/framework/test/load/BundleLoaderSpec.js b/platform/framework/test/load/BundleLoaderSpec.js index 89643bdd34..914f139ea2 100644 --- a/platform/framework/test/load/BundleLoaderSpec.js +++ b/platform/framework/test/load/BundleLoaderSpec.js @@ -44,7 +44,7 @@ define( beforeEach(function () { testBundles = { - "bundles.json": [ "bundle/a", "bundle/b"], + "bundles.json": ["bundle/a", "bundle/b"], "bundle/a/bundle.json": {"someValue": 6}, "bundle/b/bundle.json": {"someValue": 7} }; @@ -54,7 +54,7 @@ define( mockLog = jasmine.createSpyObj("$log", ["error", "warn", "info", "debug"]); mockRegistry = jasmine.createSpyObj( 'legacyRegistry', - [ 'list', 'contains', 'get' ] + ['list', 'contains', 'get'] ); mockRegistry.list.andReturn([]); mockRegistry.contains.andReturn(false); @@ -145,4 +145,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/framework/test/load/BundleSpec.js b/platform/framework/test/load/BundleSpec.js index 4362393d70..ced5e91069 100644 --- a/platform/framework/test/load/BundleSpec.js +++ b/platform/framework/test/load/BundleSpec.js @@ -78,17 +78,17 @@ define( it("reports all extensions that have been declared", function () { var bundle = new Bundle(PATH, { - extensions: { things: [ {}, {}, {} ] } + extensions: { things: [{}, {}, {}] } }); expect(bundle.getExtensions("things").length).toEqual(3); }); it("reports an empty list for extensions that have not been declared", function () { var bundle = new Bundle(PATH, { - extensions: { things: [ {}, {}, {} ] } + extensions: { things: [{}, {}, {}] } }); expect(bundle.getExtensions("stuffs").length).toEqual(0); }); }); } -); \ No newline at end of file +); diff --git a/platform/framework/test/load/ExtensionSpec.js b/platform/framework/test/load/ExtensionSpec.js index b3d62bfe0b..989864bb78 100644 --- a/platform/framework/test/load/ExtensionSpec.js +++ b/platform/framework/test/load/ExtensionSpec.js @@ -104,4 +104,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/framework/test/register/ExtensionRegistrarSpec.js b/platform/framework/test/register/ExtensionRegistrarSpec.js index 36f2280f14..be8d0fa5df 100644 --- a/platform/framework/test/register/ExtensionRegistrarSpec.js +++ b/platform/framework/test/register/ExtensionRegistrarSpec.js @@ -40,7 +40,9 @@ define( mockSorter = jasmine.createSpyObj("sorter", ["sort"]); customRegistrars = {}; - mockSorter.sort.andCallFake(function (v) { return v; }); + mockSorter.sort.andCallFake(function (v) { + return v; + }); registrar = new ExtensionRegistrar( mockApp, @@ -51,7 +53,7 @@ define( }); it("registers extensions using the factory", function () { - registrar.registerExtensions({ things: [ {} ] }); + registrar.registerExtensions({ things: [{}] }); expect(mockApp.factory).toHaveBeenCalled(); }); @@ -60,7 +62,7 @@ define( mockApp.factory.andCallFake(function (name, value) { callbacks[name] = value[value.length - 1]; }); - registrar.registerExtensions({ things: [ {} ] }); + registrar.registerExtensions({ things: [{}] }); expect(callbacks["things[]"]).toBeDefined(); // Verify dependency echo behavior @@ -68,9 +70,9 @@ define( }); it("warns if multiple registrations are made for the same category of extension", function () { - registrar.registerExtensions({ things: [ {} ] }); + registrar.registerExtensions({ things: [{}] }); expect(mockLog.warn).not.toHaveBeenCalled(); - registrar.registerExtensions({ things: [ {} ] }); + registrar.registerExtensions({ things: [{}] }); expect(mockLog.warn).toHaveBeenCalled(); }); @@ -81,14 +83,14 @@ define( }); // Nobody has registered tests[], but it looks like an extension dependency, // so register it as an empty array. - registrar.registerExtensions({ things: [ { depends: [ "tests[]", "other" ] } ] }); + registrar.registerExtensions({ things: [{ depends: ["tests[]", "other"] }] }); expect(lengths["tests[]"]).toEqual(1); expect(lengths.other).toBeUndefined(); }); it("invokes custom registrars (not app.factory) when available", function () { customRegistrars.things = jasmine.createSpy("things"); - registrar.registerExtensions({ things: [ {} ] }); + registrar.registerExtensions({ things: [{}] }); expect(mockApp.factory).not.toHaveBeenCalled(); expect(customRegistrars.things).toHaveBeenCalled(); }); @@ -98,13 +100,15 @@ define( var a = { a: 'a' }, b = { b: 'b' }, c = { c: 'c' }; // Fake sorting; just reverse the array - mockSorter.sort.andCallFake(function (v) { return v.reverse(); }); + mockSorter.sort.andCallFake(function (v) { + return v.reverse(); + }); // Register the extensions - registrar.registerExtensions({ things: [ a, b, c ] }); + registrar.registerExtensions({ things: [a, b, c] }); // Verify registration interactions occurred in reverse-order - [ c, b, a ].forEach(function (extension, index) { + [c, b, a].forEach(function (extension, index) { expect(mockApp.factory.calls[index].args[1][0]()) .toEqual(extension); }); @@ -112,4 +116,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/framework/test/register/PartialConstructorSpec.js b/platform/framework/test/register/PartialConstructorSpec.js index f31105a333..6aea16adf7 100644 --- a/platform/framework/test/register/PartialConstructorSpec.js +++ b/platform/framework/test/register/PartialConstructorSpec.js @@ -93,4 +93,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/framework/test/register/ServiceCompositorSpec.js b/platform/framework/test/register/ServiceCompositorSpec.js index 7a3e872a67..0c10b87afe 100644 --- a/platform/framework/test/register/ServiceCompositorSpec.js +++ b/platform/framework/test/register/ServiceCompositorSpec.js @@ -37,8 +37,8 @@ define( beforeEach(function () { registered = {}; - mockApp = jasmine.createSpyObj("app", [ "service" ]); - mockLog = jasmine.createSpyObj("$log", [ "error", "warn", "info", "debug" ]); + mockApp = jasmine.createSpyObj("app", ["service"]); + mockLog = jasmine.createSpyObj("$log", ["error", "warn", "info", "debug"]); mockApp.service.andCallFake(function (name, value) { var factory = value[value.length - 1]; @@ -66,11 +66,21 @@ define( it("allows composite services to be registered", function () { // Prepare components that look like resolved extensions var components, name; - function MyDecorator() { return {}; } - function MyOtherDecorator() { return {}; } - function MyProvider() { return {}; } - function MyOtherProvider() { return {}; } - function MyAggregator() { return {}; } + function MyDecorator() { + return {}; + } + function MyOtherDecorator() { + return {}; + } + function MyProvider() { + return {}; + } + function MyOtherProvider() { + return {}; + } + function MyAggregator() { + return {}; + } components = [ MyDecorator, @@ -85,11 +95,13 @@ define( MyProvider.type = "provider"; MyOtherProvider.type = "provider"; MyAggregator.type = "aggregator"; - components.forEach(function (c) { c.provides = "testService"; }); + components.forEach(function (c) { + c.provides = "testService"; + }); // Add some test dependencies, to check prepending - MyOtherDecorator.depends = [ "someOtherService" ]; - MyAggregator.depends = [ "tests[]" ]; + MyOtherDecorator.depends = ["someOtherService"]; + MyAggregator.depends = ["tests[]"]; // Register! compositor.registerCompositeServices(components); @@ -117,16 +129,24 @@ define( it("allows registered composite services to be instantiated", function () { // Prepare components that look like resolved extensions var components, name; - function MyProvider() { return {}; } - function MyOtherProvider() { return {}; } - function MyAggregator() { return {}; } + function MyProvider() { + return {}; + } + function MyOtherProvider() { + return {}; + } + function MyAggregator() { + return {}; + } - components = [ MyProvider, MyAggregator, MyOtherProvider ]; + components = [MyProvider, MyAggregator, MyOtherProvider]; MyProvider.type = "provider"; MyOtherProvider.type = "provider"; MyAggregator.type = "aggregator"; - components.forEach(function (c) { c.provides = "testService"; }); + components.forEach(function (c) { + c.provides = "testService"; + }); // Register! compositor.registerCompositeServices(components); @@ -149,11 +169,17 @@ define( it("warns and skips components with no service type", function () { // Prepare components that look like resolved extensions var components; - function MyProvider() { return {}; } - function MyDecorator() { return {}; } - function MyAggregator() { return {}; } + function MyProvider() { + return {}; + } + function MyDecorator() { + return {}; + } + function MyAggregator() { + return {}; + } - components = [ MyProvider, MyAggregator, MyDecorator ]; + components = [MyProvider, MyAggregator, MyDecorator]; MyProvider.type = "provider"; MyDecorator.type = "decorator"; @@ -175,9 +201,11 @@ define( it("warns about and skips aggregators with zero providers", function () { // Prepare components that look like resolved extensions var components; - function MyAggregator() { return {}; } + function MyAggregator() { + return {}; + } - components = [ MyAggregator ]; + components = [MyAggregator]; MyAggregator.type = "aggregator"; MyAggregator.provides = "testService"; @@ -195,9 +223,11 @@ define( it("warns about and skips decorators with nothing to decorate", function () { // Prepare components that look like resolved extensions var components; - function MyDecorator() { return {}; } + function MyDecorator() { + return {}; + } - components = [ MyDecorator ]; + components = [MyDecorator]; MyDecorator.type = "decorator"; MyDecorator.provides = "testService"; @@ -214,4 +244,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/framework/test/resolve/BundleResolverSpec.js b/platform/framework/test/resolve/BundleResolverSpec.js index bad4c434db..70c12f327e 100644 --- a/platform/framework/test/resolve/BundleResolverSpec.js +++ b/platform/framework/test/resolve/BundleResolverSpec.js @@ -60,16 +60,20 @@ define( var result; resolver.resolveBundles([ - new Bundle("x", { extensions: { tests: [ {}, {}, {} ] } }), - new Bundle("y", { extensions: { tests: [ {}, {} ], others: [ {}, {} ] } }), - new Bundle("z", { extensions: { others: [ {} ] } }) - ]).then(function (v) { result = v; }); + new Bundle("x", { extensions: { tests: [{}, {}, {}] } }), + new Bundle("y", { extensions: { tests: [{}, {}], others: [{}, {}] } }), + new Bundle("z", { extensions: { others: [{}] } }) + ]).then(function (v) { + result = v; + }); waitsFor( - function () { return result !== undefined; }, - "promise resolution", - 250 - ); + function () { + return result !== undefined; + }, + "promise resolution", + 250 + ); // Should get back the result from the resolver, and // should be binned by extension category. @@ -81,9 +85,9 @@ define( it("configures require before loading implementations", function () { var bundles = [ - new Bundle("x", { extensions: { tests: [ {}, {}, {} ] } }), - new Bundle("y", { extensions: { tests: [ {}, {} ], others: [ {}, {} ] } }), - new Bundle("z", { extensions: { others: [ {} ] } }) + new Bundle("x", { extensions: { tests: [{}, {}, {}] } }), + new Bundle("y", { extensions: { tests: [{}, {}], others: [{}, {}] } }), + new Bundle("z", { extensions: { others: [{}] } }) ]; resolver.resolveBundles(bundles); @@ -93,4 +97,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/framework/test/resolve/ExtensionResolverSpec.js b/platform/framework/test/resolve/ExtensionResolverSpec.js index fdc48afe77..f635ba7972 100644 --- a/platform/framework/test/resolve/ExtensionResolverSpec.js +++ b/platform/framework/test/resolve/ExtensionResolverSpec.js @@ -33,7 +33,9 @@ define( resolver; // Test implementation, to load from the mock loader - function Constructor() { return { someKey: "some value" }; } + function Constructor() { + return { someKey: "some value" }; + } Constructor.someProperty = "some static value"; beforeEach(function () { @@ -52,18 +54,22 @@ define( it("requests implementations from the implementation loader", function () { var bundle = new Bundle("w", { sources: "x", - extensions: { tests: [ { implementation: "y/z.js" } ] } + extensions: { tests: [{ implementation: "y/z.js" }] } }), extension = bundle.getExtensions("tests")[0], result; - resolver.resolve(extension).then(function (v) { result = v; }); + resolver.resolve(extension).then(function (v) { + result = v; + }); waitsFor( - function () { return result !== undefined; }, - "promise resolution", - 250 - ); + function () { + return result !== undefined; + }, + "promise resolution", + 250 + ); runs(function () { // Verify that the right file was requested @@ -79,22 +85,26 @@ define( it("issues a warning and defaults to plain definition if load fails", function () { var bundle = new Bundle("w", { sources: "x", - extensions: { tests: [ { + extensions: { tests: [{ someOtherKey: "some other value", implementation: "y/z.js" - } ] } + }] } }), extension = bundle.getExtensions("tests")[0], result; mockLoader.load.andReturn(Promise.reject(new Error("test error"))); - resolver.resolve(extension).then(function (v) { result = v; }); + resolver.resolve(extension).then(function (v) { + result = v; + }); waitsFor( - function () { return result !== undefined; }, - "promise resolution", - 250 - ); + function () { + return result !== undefined; + }, + "promise resolution", + 250 + ); runs(function () { // Should have gotten a warning @@ -109,18 +119,22 @@ define( it("ensures implementation properties are exposed", function () { var bundle = new Bundle("w", { sources: "x", - extensions: { tests: [ { implementation: "y/z.js" } ] } + extensions: { tests: [{ implementation: "y/z.js" }] } }), extension = bundle.getExtensions("tests")[0], result; - resolver.resolve(extension).then(function (v) { result = v; }); + resolver.resolve(extension).then(function (v) { + result = v; + }); waitsFor( - function () { return result !== undefined; }, - "promise resolution", - 250 - ); + function () { + return result !== undefined; + }, + "promise resolution", + 250 + ); runs(function () { // Verify that the right file was requested @@ -136,4 +150,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/framework/test/resolve/ImplementationLoaderSpec.js b/platform/framework/test/resolve/ImplementationLoaderSpec.js index 908d180e3c..56201dfc9d 100644 --- a/platform/framework/test/resolve/ImplementationLoaderSpec.js +++ b/platform/framework/test/resolve/ImplementationLoaderSpec.js @@ -53,17 +53,21 @@ define( var result; // Load and get the result - loader.load("xyz.js").then(function (v) { result = v; }); + loader.load("xyz.js").then(function (v) { + result = v; + }); expect(result).toBeUndefined(); required.fulfill("test result"); waitsFor( - function () { return result !== undefined; }, - "promise resolution", - 250 - ); + function () { + return result !== undefined; + }, + "promise resolution", + 250 + ); runs(function () { expect(result).toEqual("test result"); @@ -76,19 +80,25 @@ define( // Load and get the result loader.load("xyz.js").then( - function (v) { result = v; }, - function (v) { rejection = v; } - ); + function (v) { + result = v; + }, + function (v) { + rejection = v; + } + ); expect(result).toBeUndefined(); required.reject("test result"); waitsFor( - function () { return rejection !== undefined; }, - "promise resolution", - 250 - ); + function () { + return rejection !== undefined; + }, + "promise resolution", + 250 + ); runs(function () { expect(result).toBeUndefined(); @@ -98,4 +108,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/framework/test/resolve/RequireConfiguratorSpec.js b/platform/framework/test/resolve/RequireConfiguratorSpec.js index 976ac9245a..6a50044a3b 100644 --- a/platform/framework/test/resolve/RequireConfiguratorSpec.js +++ b/platform/framework/test/resolve/RequireConfiguratorSpec.js @@ -31,7 +31,7 @@ define( beforeEach(function () { mockRequire = jasmine.createSpyObj( "requirejs", - [ "config" ] + ["config"] ); configurator = new RequireConfigurator(mockRequire); }); @@ -79,4 +79,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/identity/test/IdentityAggregatorSpec.js b/platform/identity/test/IdentityAggregatorSpec.js index c61e8b805b..3f34cce2e0 100644 --- a/platform/identity/test/IdentityAggregatorSpec.js +++ b/platform/identity/test/IdentityAggregatorSpec.js @@ -54,7 +54,7 @@ define( mockProviders = ['a', 'b', 'c'].map(function (id) { var mockProvider = jasmine.createSpyObj( 'provider-' + id, - [ 'getUser' ] + ['getUser'] ); mockProvider.getUser.andReturn(new Promise(function (r) { @@ -115,7 +115,7 @@ define( }); it("returns undefined when no providers expose users", function () { - testUsers = [ undefined, undefined, undefined ]; + testUsers = [undefined, undefined, undefined]; aggregator.getUser().then(mockCallback); diff --git a/platform/persistence/aggregator/src/PersistenceAggregator.js b/platform/persistence/aggregator/src/PersistenceAggregator.js index 89fe521275..bc988099a7 100644 --- a/platform/persistence/aggregator/src/PersistenceAggregator.js +++ b/platform/persistence/aggregator/src/PersistenceAggregator.js @@ -61,7 +61,9 @@ define( } this.providerMapPromise = $q.all(providers.map(addToMap)) - .then(function () { return providerMap; }); + .then(function () { + return providerMap; + }); } PersistenceAggregator.prototype.listSpaces = function () { diff --git a/platform/persistence/aggregator/test/PersistenceAggregatorSpec.js b/platform/persistence/aggregator/test/PersistenceAggregatorSpec.js index 06b29c7a0e..f7db0530ad 100644 --- a/platform/persistence/aggregator/test/PersistenceAggregatorSpec.js +++ b/platform/persistence/aggregator/test/PersistenceAggregatorSpec.js @@ -70,7 +70,9 @@ define( mockQ.all.andCallFake(function (fakePromises) { var result = []; fakePromises.forEach(function (p) { - p.then(function (v) { result.push(v); }); + p.then(function (v) { + result.push(v); + }); }); return fakePromise(result); }); diff --git a/platform/persistence/couch/src/CouchPersistenceProvider.js b/platform/persistence/couch/src/CouchPersistenceProvider.js index ac0aaca304..583d62e379 100644 --- a/platform/persistence/couch/src/CouchPersistenceProvider.js +++ b/platform/persistence/couch/src/CouchPersistenceProvider.js @@ -47,7 +47,7 @@ define( * @param {string} path the path to the CouchDB instance */ function CouchPersistenceProvider($http, $q, space, path) { - this.spaces = [ space ]; + this.spaces = [space]; this.revs = {}; this.$q = $q; this.$http = $http; @@ -57,7 +57,9 @@ define( // Pull out a list of document IDs from CouchDB's // _all_docs response function getIdsFromAllDocs(allDocs) { - return allDocs.rows.map(function (r) { return r.id; }); + return allDocs.rows.map(function (r) { + return r.id; + }); } // Check the response to a create/update/delete request; diff --git a/platform/persistence/couch/test/CouchDocumentSpec.js b/platform/persistence/couch/test/CouchDocumentSpec.js index 79e004a7c1..90f9de41ec 100644 --- a/platform/persistence/couch/test/CouchDocumentSpec.js +++ b/platform/persistence/couch/test/CouchDocumentSpec.js @@ -60,4 +60,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/persistence/couch/test/CouchIndicatorSpec.js b/platform/persistence/couch/test/CouchIndicatorSpec.js index 3c5af49300..5d056a42cf 100644 --- a/platform/persistence/couch/test/CouchIndicatorSpec.js +++ b/platform/persistence/couch/test/CouchIndicatorSpec.js @@ -33,9 +33,9 @@ define( indicator; beforeEach(function () { - mockHttp = jasmine.createSpyObj("$http", [ "get" ]); + mockHttp = jasmine.createSpyObj("$http", ["get"]); mockInterval = jasmine.createSpy("$interval"); - mockPromise = jasmine.createSpyObj("promise", [ "then" ]); + mockPromise = jasmine.createSpyObj("promise", ["then"]); testPath = "/test/path"; testInterval = 12321; // Some number @@ -127,4 +127,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/persistence/couch/test/CouchPersistenceProviderSpec.js b/platform/persistence/couch/test/CouchPersistenceProviderSpec.js index 84601c50c8..36c1a04317 100644 --- a/platform/persistence/couch/test/CouchPersistenceProviderSpec.js +++ b/platform/persistence/couch/test/CouchPersistenceProviderSpec.js @@ -71,7 +71,7 @@ define( // return values match what is expected. it("lists all available documents", function () { mockHttp.andReturn(mockPromise({ - data: { rows: [ { id: "a" }, { id: "b" }, { id: "c" } ] } + data: { rows: [{ id: "a" }, { id: "b" }, { id: "c" }] } })); provider.listObjects().then(capture); expect(mockHttp).toHaveBeenCalledWith({ @@ -187,4 +187,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/persistence/elastic/src/ElasticPersistenceProvider.js b/platform/persistence/elastic/src/ElasticPersistenceProvider.js index 970f5cca26..2fe826bb49 100644 --- a/platform/persistence/elastic/src/ElasticPersistenceProvider.js +++ b/platform/persistence/elastic/src/ElasticPersistenceProvider.js @@ -50,7 +50,7 @@ define( * @param {stirng} path the path to domain objects within ElasticSearch */ function ElasticPersistenceProvider($http, $q, space, root, path) { - this.spaces = [ space ]; + this.spaces = [space]; this.revs = {}; this.$http = $http; this.$q = $q; @@ -92,8 +92,8 @@ define( if ((response || {}).status === CONFLICT) { error.key = "revision"; // Load the updated model, then reject the promise - return this.get(key).then(function (response) { - error.model = response[SRC]; + return this.get(key).then(function (res) { + error.model = res[SRC]; return $q.reject(error); }); } diff --git a/platform/persistence/elastic/test/ElasticIndicatorSpec.js b/platform/persistence/elastic/test/ElasticIndicatorSpec.js index 0876439062..9f675c5f00 100644 --- a/platform/persistence/elastic/test/ElasticIndicatorSpec.js +++ b/platform/persistence/elastic/test/ElasticIndicatorSpec.js @@ -33,9 +33,9 @@ define( indicator; beforeEach(function () { - mockHttp = jasmine.createSpyObj("$http", [ "get" ]); + mockHttp = jasmine.createSpyObj("$http", ["get"]); mockInterval = jasmine.createSpy("$interval"); - mockPromise = jasmine.createSpyObj("promise", [ "then" ]); + mockPromise = jasmine.createSpyObj("promise", ["then"]); testPath = "/test/path"; testInterval = 12321; // Some number @@ -107,4 +107,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/persistence/elastic/test/ElasticPersistenceProviderSpec.js b/platform/persistence/elastic/test/ElasticPersistenceProviderSpec.js index b6072311c1..0961e63d74 100644 --- a/platform/persistence/elastic/test/ElasticPersistenceProviderSpec.js +++ b/platform/persistence/elastic/test/ElasticPersistenceProviderSpec.js @@ -211,4 +211,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/persistence/queue/src/PersistenceFailureDialog.js b/platform/persistence/queue/src/PersistenceFailureDialog.js index 6d5df92dbe..9ded808644 100644 --- a/platform/persistence/queue/src/PersistenceFailureDialog.js +++ b/platform/persistence/queue/src/PersistenceFailureDialog.js @@ -34,7 +34,7 @@ define( key: "cancel" } ], - OK_OPTIONS = [ { name: "OK", key: "ok" } ]; + OK_OPTIONS = [{ name: "OK", key: "ok" }]; /** * Populates a `dialogModel` to pass to `dialogService.getUserChoise` diff --git a/platform/persistence/queue/src/PersistenceFailureHandler.js b/platform/persistence/queue/src/PersistenceFailureHandler.js index f3420baf04..447519633c 100644 --- a/platform/persistence/queue/src/PersistenceFailureHandler.js +++ b/platform/persistence/queue/src/PersistenceFailureHandler.js @@ -68,7 +68,7 @@ define( } // Retry persistence (overwrite) for this set of failed attempts - function retry(failures) { + function retry(failuresToRetry) { var models = {}; // Cache a copy of the model @@ -84,23 +84,25 @@ define( var model = models[failure.id]; return failure.domainObject.useCapability( "mutation", - function () { return model; }, - model.modified - ); + function () { + return model; + }, + model.modified + ); } // Cache the object models we might want to save - failures.forEach(cacheModel); + failuresToRetry.forEach(cacheModel); // Strategy here: // * Cache all of the models we might want to save (above) // * Refresh all domain objects (so they are latest versions) // * Re-insert the cached domain object models // * Invoke persistence again - return $q.all(failures.map(refresh)).then(function () { - return $q.all(failures.map(remutate)); + return $q.all(failuresToRetry.map(refresh)).then(function () { + return $q.all(failuresToRetry.map(remutate)); }).then(function () { - return $q.all(failures.map(persist)); + return $q.all(failuresToRetry.map(persist)); }); } @@ -112,8 +114,8 @@ define( } // Discard changes associated with a failed save - function discardAll(failures) { - return $q.all(failures.map(discard)); + function discardAll(failuresToDiscard) { + return $q.all(failuresToDiscard.map(discard)); } // Handle user input (did they choose to overwrite?) diff --git a/platform/persistence/queue/src/PersistenceQueueHandler.js b/platform/persistence/queue/src/PersistenceQueueHandler.js index 3a394a1e54..511685b350 100644 --- a/platform/persistence/queue/src/PersistenceQueueHandler.js +++ b/platform/persistence/queue/src/PersistenceQueueHandler.js @@ -57,20 +57,20 @@ define( failureHandler = this.failureHandler; // Handle a group of persistence invocations - function persistGroup(ids, persistences, domainObjects, queue) { + function persistGroup(groupIds, persistenceCaps, domainObjs, pQueue) { var failures = []; // Try to persist a specific domain object function tryPersist(id) { // Look up its persistence capability from the provided // id->persistence object. - var persistence = persistences[id], - domainObject = domainObjects[id]; + var persistence = persistenceCaps[id], + domainObject = domainObjs[id]; // Put a domain object back in the queue // (e.g. after Overwrite) function requeue() { - return queue.put(domainObject, persistence); + return pQueue.put(domainObject, persistence); } // Handle success @@ -103,7 +103,7 @@ define( } // Try to persist everything, then handle any failures - return $q.all(ids.map(tryPersist)).then(handleFailure); + return $q.all(groupIds.map(tryPersist)).then(handleFailure); } return persistGroup(ids, persistences, domainObjects, queue); diff --git a/platform/persistence/queue/test/PersistenceFailureConstantsSpec.js b/platform/persistence/queue/test/PersistenceFailureConstantsSpec.js index 51fd456626..4eec1ea5e7 100644 --- a/platform/persistence/queue/test/PersistenceFailureConstantsSpec.js +++ b/platform/persistence/queue/test/PersistenceFailureConstantsSpec.js @@ -32,4 +32,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/persistence/queue/test/PersistenceFailureControllerSpec.js b/platform/persistence/queue/test/PersistenceFailureControllerSpec.js index 6f42eea183..d8053daebb 100644 --- a/platform/persistence/queue/test/PersistenceFailureControllerSpec.js +++ b/platform/persistence/queue/test/PersistenceFailureControllerSpec.js @@ -43,4 +43,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/persistence/queue/test/PersistenceFailureDialogSpec.js b/platform/persistence/queue/test/PersistenceFailureDialogSpec.js index 1933d0ee94..ab66997748 100644 --- a/platform/persistence/queue/test/PersistenceFailureDialogSpec.js +++ b/platform/persistence/queue/test/PersistenceFailureDialogSpec.js @@ -54,4 +54,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/persistence/queue/test/PersistenceFailureHandlerSpec.js b/platform/persistence/queue/test/PersistenceFailureHandlerSpec.js index 7bb0fe8a04..4157476fb9 100644 --- a/platform/persistence/queue/test/PersistenceFailureHandlerSpec.js +++ b/platform/persistence/queue/test/PersistenceFailureHandlerSpec.js @@ -113,4 +113,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/persistence/queue/test/PersistenceQueueHandlerSpec.js b/platform/persistence/queue/test/PersistenceQueueHandlerSpec.js index c9461ba726..e85fb7f34c 100644 --- a/platform/persistence/queue/test/PersistenceQueueHandlerSpec.js +++ b/platform/persistence/queue/test/PersistenceQueueHandlerSpec.js @@ -47,7 +47,7 @@ define( function makeMockPersistence(id) { var mockPersistence = jasmine.createSpyObj( 'persistence-' + id, - [ 'persist', 'refresh' ] + ['persist', 'refresh'] ); mockPersistence.persist.andReturn(asPromise(true)); return mockPersistence; @@ -56,7 +56,7 @@ define( function makeMockDomainObject(id) { var mockDomainObject = jasmine.createSpyObj( 'domainObject-' + id, - [ 'getId' ] + ['getId'] ); mockDomainObject.getId.andReturn(id); return mockDomainObject; @@ -132,4 +132,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/persistence/queue/test/PersistenceQueueImplSpec.js b/platform/persistence/queue/test/PersistenceQueueImplSpec.js index 1608e9a14d..6281f2d5ac 100644 --- a/platform/persistence/queue/test/PersistenceQueueImplSpec.js +++ b/platform/persistence/queue/test/PersistenceQueueImplSpec.js @@ -38,7 +38,7 @@ define( function makeMockDomainObject(id) { var mockDomainObject = jasmine.createSpyObj( 'domainObject-' + id, - [ 'getId' ] + ['getId'] ); mockDomainObject.getId.andReturn(id); return mockDomainObject; @@ -47,7 +47,7 @@ define( function makeMockPersistence(id) { var mockPersistence = jasmine.createSpyObj( 'persistence-' + id, - [ 'persist' ] + ['persist'] ); return mockPersistence; } @@ -149,4 +149,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/persistence/queue/test/PersistenceQueueSpec.js b/platform/persistence/queue/test/PersistenceQueueSpec.js index e9d7bb2392..fae0009835 100644 --- a/platform/persistence/queue/test/PersistenceQueueSpec.js +++ b/platform/persistence/queue/test/PersistenceQueueSpec.js @@ -51,4 +51,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/persistence/queue/test/QueuingPersistenceCapabilityDecoratorSpec.js b/platform/persistence/queue/test/QueuingPersistenceCapabilityDecoratorSpec.js index 5df12fbd67..2e1a04d611 100644 --- a/platform/persistence/queue/test/QueuingPersistenceCapabilityDecoratorSpec.js +++ b/platform/persistence/queue/test/QueuingPersistenceCapabilityDecoratorSpec.js @@ -79,4 +79,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/persistence/queue/test/QueuingPersistenceCapabilitySpec.js b/platform/persistence/queue/test/QueuingPersistenceCapabilitySpec.js index c8ce43e895..e542fe2100 100644 --- a/platform/persistence/queue/test/QueuingPersistenceCapabilitySpec.js +++ b/platform/persistence/queue/test/QueuingPersistenceCapabilitySpec.js @@ -62,4 +62,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/policy/src/PolicyActionDecorator.js b/platform/policy/src/PolicyActionDecorator.js index cc2a302b47..a8cec1442c 100644 --- a/platform/policy/src/PolicyActionDecorator.js +++ b/platform/policy/src/PolicyActionDecorator.js @@ -40,7 +40,7 @@ define( PolicyActionDecorator.prototype.getActions = function (context) { var policyService = this.policyService; - + // Check if an action is allowed by policy. function allow(action) { return policyService.allow('action', action, context); diff --git a/platform/policy/test/PolicyActionDecoratorSpec.js b/platform/policy/test/PolicyActionDecoratorSpec.js index fb9c7b6724..ed7cc8af7d 100644 --- a/platform/policy/test/PolicyActionDecoratorSpec.js +++ b/platform/policy/test/PolicyActionDecoratorSpec.js @@ -90,9 +90,9 @@ define( return candidate.someKey !== 'b'; }); expect(decorator.getActions(testContext)) - .toEqual([ testActions[0], testActions[2] ]); + .toEqual([testActions[0], testActions[2]]); }); }); } -); \ No newline at end of file +); diff --git a/platform/policy/test/PolicyProviderSpec.js b/platform/policy/test/PolicyProviderSpec.js index c228e5cdce..ac827cb0f6 100644 --- a/platform/policy/test/PolicyProviderSpec.js +++ b/platform/policy/test/PolicyProviderSpec.js @@ -43,7 +43,9 @@ define( ]; mockPolicies = testPolicies.map(function (p) { var mockPolicy = jasmine.createSpyObj("policy", ['allow']); - mockPolicy.allow.andCallFake(function () { return p.result; }); + mockPolicy.allow.andCallFake(function () { + return p.result; + }); return mockPolicy; }); mockPolicyConstructors = testPolicies.map(function (p, i) { @@ -101,4 +103,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/policy/test/PolicyViewDecoratorSpec.js b/platform/policy/test/PolicyViewDecoratorSpec.js index 91e86e9bd1..f7f698cb22 100644 --- a/platform/policy/test/PolicyViewDecoratorSpec.js +++ b/platform/policy/test/PolicyViewDecoratorSpec.js @@ -94,9 +94,9 @@ define( return candidate.someKey !== 'b'; }); expect(decorator.getViews(mockDomainObject)) - .toEqual([ testViews[0], testViews[2] ]); + .toEqual([testViews[0], testViews[2]]); }); }); } -); \ No newline at end of file +); diff --git a/platform/representation/src/MCTRepresentation.js b/platform/representation/src/MCTRepresentation.js index bcaa90e4e7..331139b793 100644 --- a/platform/representation/src/MCTRepresentation.js +++ b/platform/representation/src/MCTRepresentation.js @@ -88,7 +88,6 @@ define( toClear = [], // Properties to clear out of scope on change counter = 0, couldRepresent = false, - couldEdit = false, lastIdPath = [], lastKey, statusListener, @@ -137,14 +136,13 @@ define( }); } - function unchanged(canRepresent, canEdit, idPath, key) { + function unchanged(canRepresent, idPath, key) { return (canRepresent === couldRepresent) && (key === lastKey) && (idPath.length === lastIdPath.length) && idPath.every(function (id, i) { return id === lastIdPath[i]; - }) && - (canEdit === couldEdit); + }); } function getIdPath(domainObject) { @@ -168,11 +166,10 @@ define( representation = lookup($scope.key, domainObject), uses = ((representation || {}).uses || []), canRepresent = !!(representation && domainObject), - canEdit = !!(domainObject && domainObject.hasCapability('editor') && domainObject.getCapability('editor').inEditContext()), idPath = getIdPath(domainObject), key = $scope.key; - if (unchanged(canRepresent, canEdit, idPath, key)) { + if (unchanged(canRepresent, idPath, key)) { return; } @@ -201,7 +198,6 @@ define( // To allow simplified change detection next time around couldRepresent = canRepresent; lastIdPath = idPath; - couldEdit = canEdit; lastKey = key; // Populate scope with fields associated with the current @@ -240,25 +236,6 @@ define( // (to a different object) $scope.$watch("domainObject", refresh); - function listenForStatusChange(object) { - if (statusListener) { - statusListener(); - } - statusListener = object.getCapability("status").listen(refresh); - } - - /** - * Add a listener to the object for status changes. - */ - $scope.$watch("domainObject", function (domainObject, oldDomainObject) { - if (domainObject !== oldDomainObject){ - listenForStatusChange(domainObject); - } - }); - if ($scope.domainObject) { - listenForStatusChange($scope.domainObject); - } - // Finally, also update when there is a new version of that // same domain object; these changes should be tracked in the // model's "modified" field, by the mutation capability. diff --git a/platform/representation/src/TemplateLinker.js b/platform/representation/src/TemplateLinker.js index 8637819d63..e248ebd1de 100644 --- a/platform/representation/src/TemplateLinker.js +++ b/platform/representation/src/TemplateLinker.js @@ -154,12 +154,12 @@ define( activeTemplateUrl = templateUrl; } - function changeTemplate(ext) { - ext = ext || {}; - if (ext.templateUrl) { - changeTemplateUrl(self.getPath(ext)); - } else if (ext.template) { - showTemplate(ext.template); + function changeTemplate(templateExt) { + templateExt = templateExt || {}; + if (templateExt.templateUrl) { + changeTemplateUrl(self.getPath(templateExt)); + } else if (templateExt.template) { + showTemplate(templateExt.template); } else { removeElement(); } diff --git a/platform/representation/src/actions/ContextMenuAction.js b/platform/representation/src/actions/ContextMenuAction.js index d1d1b1b5b1..11acd0ed51 100644 --- a/platform/representation/src/actions/ContextMenuAction.js +++ b/platform/representation/src/actions/ContextMenuAction.js @@ -59,8 +59,12 @@ define( this.agentService = agentService; this.actionContext = actionContext; this.popupService = popupService; - this.getDocument = function () { return $document; }; - this.getRootScope = function () { return $rootScope; }; + this.getDocument = function () { + return $document; + }; + this.getRootScope = function () { + return $rootScope; + }; } ContextMenuAction.prototype.perform = function () { diff --git a/platform/representation/src/gestures/DropGesture.js b/platform/representation/src/gestures/DropGesture.js index f2d64024a3..966618d88c 100644 --- a/platform/representation/src/gestures/DropGesture.js +++ b/platform/representation/src/gestures/DropGesture.js @@ -40,12 +40,13 @@ define( */ function DropGesture(dndService, $q, element, domainObject) { var actionCapability = domainObject.getCapability('action'), - scope = element.scope && element.scope(), action; // Action for the drop, when it occurs - + function broadcastDrop(id, event) { // Find the relevant scope... - var rect; + var rect, + scope = element.scope && element.scope(); + if (scope && scope.$broadcast) { // Get the representation's bounds, to convert // drop position @@ -54,9 +55,6 @@ define( // ...and broadcast the event. This allows specific // views to have post-drop behavior which depends on // drop position. - // Also broadcast the editableDomainObject to - // avoid race condition against non-editable - // version in EditRepresenter scope.$broadcast( GestureConstants.MCT_DROP_EVENT, id, @@ -93,21 +91,13 @@ define( function drop(e) { var event = (e || {}).originalEvent || e, - id = event.dataTransfer.getData(GestureConstants.MCT_DRAG_TYPE), - domainObjectType = domainObject.getModel().type; + id = event.dataTransfer.getData(GestureConstants.MCT_DRAG_TYPE); // Handle the drop; add the dropped identifier to the // destination domain object's composition, and persist // the change. if (id) { e.preventDefault(); - - //Use scope.apply, drop event is outside digest cycle - scope.$apply(function () { - if (domainObjectType !== 'folder') { - domainObject.getCapability('action').perform('edit'); - } - }); $q.when(action && action.perform()).then(function () { broadcastDrop(id, event); }); diff --git a/platform/representation/src/gestures/GestureConstants.js b/platform/representation/src/gestures/GestureConstants.js index bffa8b218d..45b998d630 100644 --- a/platform/representation/src/gestures/GestureConstants.js +++ b/platform/representation/src/gestures/GestureConstants.js @@ -44,7 +44,7 @@ define({ * positioning. * @memberof platform/representation.GestureConstants */ - MCT_MENU_DIMENSIONS: [ 170, 200 ], + MCT_MENU_DIMENSIONS: [170, 200], /** * Identifier for drop events. * @memberof platform/representation.GestureConstants diff --git a/platform/representation/test/MCTRepresentationSpec.js b/platform/representation/test/MCTRepresentationSpec.js index 52d6c70d55..025ab0f14d 100644 --- a/platform/representation/test/MCTRepresentationSpec.js +++ b/platform/representation/test/MCTRepresentationSpec.js @@ -27,9 +27,9 @@ define( ["../src/MCTRepresentation"], function (MCTRepresentation) { - var JQLITE_FUNCTIONS = [ "on", "off", "attr", "removeAttr" ], - LOG_FUNCTIONS = [ "error", "warn", "info", "debug"], - DOMAIN_OBJECT_METHODS = [ "getId", "getModel", "getCapability", "hasCapability", "useCapability"]; + var JQLITE_FUNCTIONS = ["on", "off", "attr", "removeAttr"], + LOG_FUNCTIONS = ["error", "warn", "info", "debug"], + DOMAIN_OBJECT_METHODS = ["getId", "getModel", "getCapability", "hasCapability", "useCapability"]; describe("The mct-representation directive", function () { var testRepresentations, @@ -76,7 +76,7 @@ define( key: "def", bundle: { path: "d", resources: "e" }, templateUrl: "f/template.html", - uses: [ "testCapability", "otherTestCapability" ] + uses: ["testCapability", "otherTestCapability"] } ]; @@ -85,7 +85,7 @@ define( key: "uvw", bundle: { path: "u", resources: "v" }, templateUrl: "w/template.html", - gestures: [ "testGesture", "otherTestGesture" ] + gestures: ["testGesture", "otherTestGesture"] }, { key: "xyz", @@ -105,7 +105,7 @@ define( var constructor = jasmine.createSpy("Representer" + name), representer = jasmine.createSpyObj( "representer" + name, - [ "represent", "destroy" ] + ["represent", "destroy"] ); constructor.andReturn(representer); return constructor; @@ -121,7 +121,7 @@ define( mockStatusCapability = jasmine.createSpyObj("statusCapability", ["listen"]); - mockScope = jasmine.createSpyObj("scope", [ "$watch", "$on" ]); + mockScope = jasmine.createSpyObj("scope", ["$watch", "$on"]); mockElement = jasmine.createSpyObj("element", JQLITE_FUNCTIONS); mockDomainObject = jasmine.createSpyObj("domainObject", DOMAIN_OBJECT_METHODS); @@ -253,21 +253,6 @@ define( expect(mockScope.testCapability).toBeUndefined(); }); - it("registers a status change listener", function () { - mockScope.$watch.calls[2].args[1](mockDomainObject); - expect(mockStatusCapability.listen).toHaveBeenCalled(); - }); - - it("unlistens for status change on scope destruction", function () { - var mockUnlistener = jasmine.createSpy("unlisten"); - mockStatusCapability.listen.andReturn(mockUnlistener); - mockScope.$watch.calls[2].args[1](mockDomainObject); - expect(mockStatusCapability.listen).toHaveBeenCalled(); - - mockScope.$on.calls[1].args[1](); - expect(mockUnlistener).toHaveBeenCalled(); - }); - describe("when a domain object has been observed", function () { var mockContext, mockContext2, diff --git a/platform/representation/test/TemplateLinkerSpec.js b/platform/representation/test/TemplateLinkerSpec.js index d078cd00ac..c91e82e6a7 100644 --- a/platform/representation/test/TemplateLinkerSpec.js +++ b/platform/representation/test/TemplateLinkerSpec.js @@ -25,8 +25,8 @@ define( ["../src/TemplateLinker"], function (TemplateLinker) { - var JQLITE_METHODS = [ 'replaceWith', 'empty', 'html', 'contents' ], - SCOPE_METHODS = [ '$on', '$new', '$destroy' ]; + var JQLITE_METHODS = ['replaceWith', 'empty', 'html', 'contents'], + SCOPE_METHODS = ['$on', '$new', '$destroy']; describe("TemplateLinker", function () { var mockTemplateRequest, diff --git a/platform/representation/test/TemplatePrefetcherSpec.js b/platform/representation/test/TemplatePrefetcherSpec.js index 6a0ae73a42..99eda9efa7 100644 --- a/platform/representation/test/TemplatePrefetcherSpec.js +++ b/platform/representation/test/TemplatePrefetcherSpec.js @@ -36,7 +36,7 @@ define( mockTemplateLinker = jasmine.createSpyObj( 'templateLinker', - [ 'getPath', 'load' ] + ['getPath', 'load'] ); mockTemplateLinker.getPath.andCallFake(function (ext) { diff --git a/platform/representation/test/actions/ContextMenuActionSpec.js b/platform/representation/test/actions/ContextMenuActionSpec.js index bab5a311f5..4efb48d76b 100644 --- a/platform/representation/test/actions/ContextMenuActionSpec.js +++ b/platform/representation/test/actions/ContextMenuActionSpec.js @@ -28,8 +28,8 @@ define( ["../../src/actions/ContextMenuAction"], function (ContextMenuAction) { - var JQLITE_FUNCTIONS = [ "on", "off", "find", "append", "remove" ], - DOMAIN_OBJECT_METHODS = [ "getId", "getModel", "getCapability", "hasCapability", "useCapability" ]; + var JQLITE_FUNCTIONS = ["on", "off", "find", "append", "remove"], + DOMAIN_OBJECT_METHODS = ["getId", "getModel", "getCapability", "hasCapability", "useCapability"]; describe("The 'context menu' action", function () { @@ -93,7 +93,7 @@ define( action.perform(); expect(mockPopupService.display).toHaveBeenCalledWith( mockMenu, - [ mockEvent.pageX, mockEvent.pageY ], + [mockEvent.pageX, mockEvent.pageY], jasmine.any(Object) ); }); @@ -104,7 +104,7 @@ define( }); it("adds classes to menus based on position", function () { - var booleans = [ false, true ]; + var booleans = [false, true]; booleans.forEach(function (goLeft) { booleans.forEach(function (goUp) { diff --git a/platform/representation/test/gestures/ContextMenuGestureSpec.js b/platform/representation/test/gestures/ContextMenuGestureSpec.js index efcc107cc5..20e15bcbbb 100644 --- a/platform/representation/test/gestures/ContextMenuGestureSpec.js +++ b/platform/representation/test/gestures/ContextMenuGestureSpec.js @@ -28,8 +28,8 @@ define( ["../../src/gestures/ContextMenuGesture"], function (ContextMenuGesture) { - var JQLITE_FUNCTIONS = [ "on", "off", "find", "append", "remove" ], - DOMAIN_OBJECT_METHODS = [ "getId", "getModel", "getCapability", "hasCapability", "useCapability"]; + var JQLITE_FUNCTIONS = ["on", "off", "find", "append", "remove"], + DOMAIN_OBJECT_METHODS = ["getId", "getModel", "getCapability", "hasCapability", "useCapability"]; describe("The 'context menu' gesture", function () { @@ -55,15 +55,15 @@ define( mockEvent = jasmine.createSpyObj("event", ["preventDefault"]); mockContextMenuAction = jasmine.createSpyObj( "action", - [ "perform", "getActions" ] + ["perform", "getActions"] ); - + mockActionContext = {domainObject: mockDomainObject, event: mockEvent}; mockDomainObject.getCapability.andReturn(mockContextMenuAction); mockContextMenuAction.perform.andReturn(jasmine.any(Function)); mockAgentService.isMobile.andReturn(false); - - + + gesture = new ContextMenuGesture(mockTimeout, mockAgentService, mockElement, mockDomainObject); // Capture the contextmenu callback @@ -90,7 +90,7 @@ define( mockDomainObject.calls ); }); - + it("attaches a callback for context menu events on mobile", function () { // Mock touch event and set to mobile device mockTouchEvent = jasmine.createSpyObj("event", ["preventDefault", "touches"]); @@ -98,21 +98,21 @@ define( mockTouch.length = 1; mockTouchEvent.touches.andReturn(mockTouch); mockAgentService.isMobile.andReturn(true); - + // Then create new (mobile) gesture gesture = new ContextMenuGesture(mockTimeout, mockAgentService, mockElement, mockDomainObject); - + // Set calls for the touchstart and touchend gestures fireTouchStartGesture = mockElement.on.calls[1].args[1]; fireTouchEndGesture = mockElement.on.mostRecentCall.args[1]; - + // Fire touchstart and expect touch start to begin fireTouchStartGesture(mockTouchEvent); expect(mockElement.on).toHaveBeenCalledWith( "touchstart", jasmine.any(Function) ); - + // Expect timeout to begin and then fireTouchEnd expect(mockTimeout).toHaveBeenCalled(); mockTimeout.mostRecentCall.args[0](); @@ -120,4 +120,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/representation/test/gestures/DragGestureSpec.js b/platform/representation/test/gestures/DragGestureSpec.js index c756296428..6ae71754fa 100644 --- a/platform/representation/test/gestures/DragGestureSpec.js +++ b/platform/representation/test/gestures/DragGestureSpec.js @@ -27,10 +27,10 @@ define( ["../../src/gestures/DragGesture", "../../src/gestures/GestureConstants"], function (DragGesture, GestureConstants) { - var JQLITE_FUNCTIONS = [ "on", "off", "attr", "removeAttr" ], - LOG_FUNCTIONS = [ "error", "warn", "info", "debug"], - DND_FUNCTIONS = [ "setData", "getData", "removeData" ], - DOMAIN_OBJECT_METHODS = [ "getId", "getModel", "getCapability", "hasCapability", "useCapability"], + var JQLITE_FUNCTIONS = ["on", "off", "attr", "removeAttr"], + LOG_FUNCTIONS = ["error", "warn", "info", "debug"], + DND_FUNCTIONS = ["setData", "getData", "removeData"], + DOMAIN_OBJECT_METHODS = ["getId", "getModel", "getCapability", "hasCapability", "useCapability"], TEST_ID = "test-id"; @@ -135,4 +135,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/representation/test/gestures/DropGestureSpec.js b/platform/representation/test/gestures/DropGestureSpec.js index b3f043cfa9..79ed9d1139 100644 --- a/platform/representation/test/gestures/DropGestureSpec.js +++ b/platform/representation/test/gestures/DropGestureSpec.js @@ -29,8 +29,8 @@ define( // Methods to mock - var JQLITE_FUNCTIONS = [ "on", "off", "attr", "removeAttr", "scope" ], - DOMAIN_OBJECT_METHODS = [ "getId", "getModel", "getCapability", "hasCapability", "useCapability"], + var JQLITE_FUNCTIONS = ["on", "off", "attr", "removeAttr", "scope"], + DOMAIN_OBJECT_METHODS = ["getId", "getModel", "getCapability", "hasCapability", "useCapability"], TEST_ID = "test-id", DROP_ID = "drop-id"; @@ -69,9 +69,9 @@ define( mockElement = jasmine.createSpyObj("element", JQLITE_FUNCTIONS); mockDomainObject = jasmine.createSpyObj("domainObject", DOMAIN_OBJECT_METHODS); mockDraggedObject = jasmine.createSpyObj("draggedObject", DOMAIN_OBJECT_METHODS); - mockPersistence = jasmine.createSpyObj("persistence", [ "persist" ]); + mockPersistence = jasmine.createSpyObj("persistence", ["persist"]); mockEvent = jasmine.createSpyObj("event", ["preventDefault"]); - mockEvent.dataTransfer = jasmine.createSpyObj("dataTransfer", [ "getData" ]); + mockEvent.dataTransfer = jasmine.createSpyObj("dataTransfer", ["getData"]); mockScope = jasmine.createSpyObj("$scope", ["$broadcast"]); mockUnwrappedElement = jasmine.createSpyObj("unwrapped", ["getBoundingClientRect"]); mockAction = jasmine.createSpyObj('action', ['getActions']); @@ -130,11 +130,11 @@ define( expect(mockEvent.preventDefault).toHaveBeenCalled(); expect(mockEvent.dataTransfer.dropEffect).toBeDefined(); }); - + it("invokes compose on drop in edit mode", function () { // Set the mockDomainObject to have the editor capability mockDomainObject.hasCapability.andReturn(true); - + callbacks.dragover(mockEvent); expect(mockAction.getActions).toHaveBeenCalledWith({ key: 'compose', @@ -143,14 +143,14 @@ define( callbacks.drop(mockEvent); expect(mockCompose.perform).toHaveBeenCalled(); }); - - + + it("does not invoke compose on drop in browse mode for non-folders", function () { // Set the mockDomainObject to not have the editor capability mockDomainObject.hasCapability.andReturn(false); // Set the mockDomainObject to not have a type of folder mockDomainObject.getModel.andReturn({type: 'notAFolder'}); - + callbacks.dragover(mockEvent); expect(mockAction.getActions).toHaveBeenCalledWith({ key: 'compose', @@ -159,8 +159,8 @@ define( callbacks.drop(mockEvent); expect(mockCompose.perform).not.toHaveBeenCalled(); }); - - + + it("invokes compose on drop in browse mode for folders", function () { // Set the mockDomainObject to not have the editor capability mockDomainObject.hasCapability.andReturn(false); @@ -175,11 +175,11 @@ define( callbacks.drop(mockEvent); expect(mockCompose.perform).toHaveBeenCalled(); }); - + it("broadcasts drop position (in edit mode)", function () { // Set the mockDomainObject to have the editor capability mockDomainObject.hasCapability.andReturn(true); - + testRect.left = 42; testRect.top = 36; mockEvent.pageX = 52; diff --git a/platform/representation/test/gestures/GestureProviderSpec.js b/platform/representation/test/gestures/GestureProviderSpec.js index 2aa2a6551f..f4e29b66d9 100644 --- a/platform/representation/test/gestures/GestureProviderSpec.js +++ b/platform/representation/test/gestures/GestureProviderSpec.js @@ -27,9 +27,9 @@ define( ["../../src/gestures/GestureProvider"], function (GestureProvider) { - var JQLITE_FUNCTIONS = [ "on", "off", "attr", "removeAttr" ], + var JQLITE_FUNCTIONS = ["on", "off", "attr", "removeAttr"], GESTURE_KEYS = ["a", "b", "c", "d", "e"], - DOMAIN_OBJECT_METHODS = [ "getId", "getModel", "getCapability", "hasCapability", "useCapability"]; + DOMAIN_OBJECT_METHODS = ["getId", "getModel", "getCapability", "hasCapability", "useCapability"]; describe("The gesture provider", function () { var mockGestures, @@ -86,4 +86,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/representation/test/gestures/GestureRepresenterSpec.js b/platform/representation/test/gestures/GestureRepresenterSpec.js index f66696ed99..24ce81e0d0 100644 --- a/platform/representation/test/gestures/GestureRepresenterSpec.js +++ b/platform/representation/test/gestures/GestureRepresenterSpec.js @@ -33,11 +33,11 @@ define( beforeEach(function () { mockGestureService = jasmine.createSpyObj( "gestureService", - [ "attachGestures" ] + ["attachGestures"] ); mockGestureHandle = jasmine.createSpyObj( "gestureHandle", - [ "destroy" ] + ["destroy"] ); mockElement = { someKey: "some value" }; @@ -62,7 +62,7 @@ define( expect(mockGestureService.attachGestures).toHaveBeenCalledWith( mockElement, domainObject, - [ "a", "b", "c" ] + ["a", "b", "c"] ); // Should not have been destroyed yet... @@ -77,4 +77,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/representation/test/services/DndServiceSpec.js b/platform/representation/test/services/DndServiceSpec.js index 73aea175c5..ecadcc0f69 100644 --- a/platform/representation/test/services/DndServiceSpec.js +++ b/platform/representation/test/services/DndServiceSpec.js @@ -35,7 +35,9 @@ define( it("allows setting of arbitrary objects", function () { var foo = { - bar: function () { return 42; } + bar: function () { + return 42; + } }; service.setData('xyz', foo); @@ -61,4 +63,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/search/src/controllers/SearchMenuController.js b/platform/search/src/controllers/SearchMenuController.js index 2f369929ab..c46fb0657c 100644 --- a/platform/search/src/controllers/SearchMenuController.js +++ b/platform/search/src/controllers/SearchMenuController.js @@ -24,31 +24,31 @@ * Module defining SearchMenuController. Created by shale on 08/17/2015. */ define(function () { - + function SearchMenuController($scope, types) { - - // Model variables are: - // ngModel.filter, the function filter defined in SearchController + + // Model variables are: + // ngModel.filter, the function filter defined in SearchController // ngModel.types, an array of type objects - // ngModel.checked, a dictionary of which type filter options are checked - // ngModel.checkAll, a boolean of whether all of the types in ngModel.checked are checked + // ngModel.checked, a dictionary of which type filter options are checked + // ngModel.checkAll, a boolean of whether all of the types in ngModel.checked are checked // ngModel.filtersString, a string list of what filters on the results are active $scope.ngModel.types = []; $scope.ngModel.checked = {}; $scope.ngModel.checkAll = true; $scope.ngModel.filtersString = ''; - + // On initialization, fill the model's types with type keys types.forEach(function (type) { // We only want some types, the ones that are probably human readable - // Manually remove 'root', but not 'unknown' + // Manually remove 'root', but not 'unknown' if (type.key && type.name && type.key !== 'root') { $scope.ngModel.types.push(type); $scope.ngModel.checked[type.key] = false; } }); - - + + // For documentation, see updateOptions below function updateOptions() { var type, @@ -62,7 +62,7 @@ define(function () { } } } - + // Update the current filters string $scope.ngModel.filtersString = ''; if (!$scope.ngModel.checkAll) { @@ -77,7 +77,7 @@ define(function () { } } } - // If there's still nothing in the filters string, there are no + // If there's still nothing in the filters string, there are no // filters selected if ($scope.ngModel.filtersString === '') { $scope.ngModel.filtersString = 'NONE'; @@ -87,14 +87,14 @@ define(function () { // Re-filter results $scope.ngModel.filter(); } - + // For documentation, see checkAll below function checkAll() { // Reset all the other options to original/default position Object.keys($scope.ngModel.checked).forEach(function (type) { $scope.ngModel.checked[type] = false; }); - + // Change the filters string depending on checkAll status if ($scope.ngModel.checkAll) { // This setting will make the filters display hidden @@ -102,23 +102,23 @@ define(function () { } else { $scope.ngModel.filtersString = 'NONE'; } - + // Re-filter results $scope.ngModel.filter(); } - + return { /** - * Updates the status of the checked options. Updates the filtersString + * Updates the status of the checked options. Updates the filtersString * with which options are checked. Re-filters the search results after. - * Not intended to be called by checkAll when it is toggled. + * Not intended to be called by checkAll when it is toggled. */ updateOptions: updateOptions, - + /** - * Handles the search and filter options for when checkAll has been - * toggled. This is a special case, compared to the other search - * menu options, so is intended to be called instead of updateOptions. + * Handles the search and filter options for when checkAll has been + * toggled. This is a special case, compared to the other search + * menu options, so is intended to be called instead of updateOptions. */ checkAll: checkAll }; diff --git a/platform/search/src/services/GenericSearchProvider.js b/platform/search/src/services/GenericSearchProvider.js index 101c718669..b610bb022d 100644 --- a/platform/search/src/services/GenericSearchProvider.js +++ b/platform/search/src/services/GenericSearchProvider.js @@ -178,8 +178,8 @@ define([ }); if (Array.isArray(model.composition)) { - model.composition.forEach(function (id) { - provider.scheduleForIndexing(id); + model.composition.forEach(function (idToIndex) { + provider.scheduleForIndexing(idToIndex); }); } }; diff --git a/platform/search/src/services/GenericSearchWorker.js b/platform/search/src/services/GenericSearchWorker.js index a3cd34c2e2..3b6962e55a 100644 --- a/platform/search/src/services/GenericSearchWorker.js +++ b/platform/search/src/services/GenericSearchWorker.js @@ -118,7 +118,7 @@ match.matchCount += 100; } else if (match.item.vector.lowerCaseName === query.inputLowerCase) { - match.matchCount += 50; + match.matchCount += 50; } return match; }) diff --git a/platform/search/test/controllers/SearchControllerSpec.js b/platform/search/test/controllers/SearchControllerSpec.js index 9df96ab831..7f9095ebe3 100644 --- a/platform/search/test/controllers/SearchControllerSpec.js +++ b/platform/search/test/controllers/SearchControllerSpec.js @@ -51,7 +51,7 @@ define([ beforeEach(function () { mockScope = jasmine.createSpyObj( '$scope', - [ '$watch' ] + ['$watch'] ); mockScope.ngModel = {}; mockScope.ngModel.input = 'test input'; @@ -61,11 +61,11 @@ define([ mockSearchService = jasmine.createSpyObj( 'searchService', - [ 'query' ] + ['query'] ); mockPromise = jasmine.createSpyObj( 'promise', - [ 'then' ] + ['then'] ); mockSearchService.query.andReturn(mockPromise); @@ -73,11 +73,11 @@ define([ mockSearchResult = jasmine.createSpyObj( 'searchResult', - [ '' ] + [''] ); mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getModel' ] + ['getModel'] ); mockSearchResult.object = mockDomainObject; mockDomainObject.getModel.andReturn({name: 'Mock Object', type: 'mock.type'}); diff --git a/platform/search/test/controllers/SearchMenuControllerSpec.js b/platform/search/test/controllers/SearchMenuControllerSpec.js index 68f8930431..dda5f491bd 100644 --- a/platform/search/test/controllers/SearchMenuControllerSpec.js +++ b/platform/search/test/controllers/SearchMenuControllerSpec.js @@ -31,18 +31,18 @@ define( var mockScope, mockTypes, controller; - + beforeEach(function () { mockScope = jasmine.createSpyObj( "$scope", - [ "" ] + [""] ); - + mockTypes = [ {key: 'mock.type.1', name: 'Mock Type 1', glyph: 'a'}, {key: 'mock.type.2', name: 'Mock Type 2', glyph: 'b'} ]; - + mockScope.ngModel = {}; mockScope.ngModel.checked = {}; mockScope.ngModel.checked['mock.type.1'] = false; @@ -50,75 +50,75 @@ define( mockScope.ngModel.checkAll = true; mockScope.ngModel.filter = jasmine.createSpy('$scope.ngModel.filter'); mockScope.ngModel.filtersString = ''; - + controller = new SearchMenuController(mockScope, mockTypes); }); - + it("gets types on initiliztion", function () { expect(mockScope.ngModel.types).toBeDefined(); }); - + it("refilters results when options are updated", function () { controller.updateOptions(); expect(mockScope.ngModel.filter).toHaveBeenCalled(); - + controller.checkAll(); expect(mockScope.ngModel.filter).toHaveBeenCalled(); }); - + it("updates the filters string when options are updated", function () { controller.updateOptions(); expect(mockScope.ngModel.filtersString).toEqual(''); - + mockScope.ngModel.checked['mock.type.1'] = true; - + controller.updateOptions(); expect(mockScope.ngModel.filtersString).not.toEqual(''); }); - + it("changing checkAll status updates the filter string", function () { controller.checkAll(); expect(mockScope.ngModel.filtersString).toEqual(''); - + mockScope.ngModel.checkAll = false; - + controller.checkAll(); expect(mockScope.ngModel.filtersString).toEqual('NONE'); }); - + it("checking checkAll option resets other options", function () { mockScope.ngModel.checked['mock.type.1'] = true; mockScope.ngModel.checked['mock.type.2'] = true; - + controller.checkAll(); Object.keys(mockScope.ngModel.checked).forEach(function (type) { expect(mockScope.ngModel.checked[type]).toBeFalsy(); }); }); - + it("tells the user when no options are checked", function () { Object.keys(mockScope.ngModel.checked).forEach(function (type) { mockScope.ngModel.checked[type] = false; }); mockScope.ngModel.checkAll = false; - + controller.updateOptions(); - + expect(mockScope.ngModel.filtersString).toEqual('NONE'); }); - + it("tells the user when options are checked", function () { mockScope.ngModel.checkAll = false; Object.keys(mockScope.ngModel.checked).forEach(function (type) { mockScope.ngModel.checked[type] = true; }); - + controller.updateOptions(); - + expect(mockScope.ngModel.filtersString).not.toEqual('NONE'); expect(mockScope.ngModel.filtersString).not.toEqual(''); }); }); } -); \ No newline at end of file +); diff --git a/platform/search/test/services/GenericSearchProviderSpec.js b/platform/search/test/services/GenericSearchProviderSpec.js index abfe3d011d..5df794819c 100644 --- a/platform/search/test/services/GenericSearchProviderSpec.js +++ b/platform/search/test/services/GenericSearchProviderSpec.js @@ -333,7 +333,7 @@ define([ }] }); - expect(provider.pendingQueries[143]).not.toBeDefined(); + expect(provider.pendingQueries[143]).not.toBeDefined(); }); diff --git a/platform/status/test/StatusCapabilitySpec.js b/platform/status/test/StatusCapabilitySpec.js index 631c9aedb3..7da9ce259e 100644 --- a/platform/status/test/StatusCapabilitySpec.js +++ b/platform/status/test/StatusCapabilitySpec.js @@ -34,15 +34,15 @@ define( beforeEach(function () { testId = "some-id"; - testStatusFlags = [ 'a', 'b', 'c' ]; + testStatusFlags = ['a', 'b', 'c']; mockStatusService = jasmine.createSpyObj( 'statusService', - [ 'listen', 'setStatus', 'listStatuses' ] + ['listen', 'setStatus', 'listStatuses'] ); mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getId', 'getCapability', 'getModel' ] + ['getId', 'getCapability', 'getModel'] ); mockUnlisten = jasmine.createSpy('unlisten'); diff --git a/platform/status/test/StatusRepresenterSpec.js b/platform/status/test/StatusRepresenterSpec.js index cc815be963..b9c048e511 100644 --- a/platform/status/test/StatusRepresenterSpec.js +++ b/platform/status/test/StatusRepresenterSpec.js @@ -50,7 +50,7 @@ define( } beforeEach(function () { - testStatusFlags = [ 'x', 'y', 'z' ]; + testStatusFlags = ['x', 'y', 'z']; mockScope = {}; mockElement = jasmine.createSpyObj('element', [ @@ -60,11 +60,11 @@ define( testRepresentation = { key: "someKey" }; mockDomainObject = jasmine.createSpyObj( 'domainObject', - [ 'getModel', 'getId', 'getCapability' ] + ['getModel', 'getId', 'getCapability'] ); mockStatusCapability = jasmine.createSpyObj( 'status', - [ 'list', 'get', 'set', 'listen' ] + ['list', 'get', 'set', 'listen'] ); mockUnlisten = jasmine.createSpy(); diff --git a/platform/status/test/StatusServiceSpec.js b/platform/status/test/StatusServiceSpec.js index d0490057f8..e530fd53d8 100644 --- a/platform/status/test/StatusServiceSpec.js +++ b/platform/status/test/StatusServiceSpec.js @@ -40,7 +40,7 @@ define( mockTopic = jasmine.createSpy('topic'); mockTopicInstance = jasmine.createSpyObj( 'topicInstance', - [ 'notify', 'listen' ] + ['notify', 'listen'] ); mockUnlisten = jasmine.createSpy('unlisten'); mockCallback = jasmine.createSpy('callback'); @@ -75,7 +75,7 @@ define( it("notifies listeners of changes", function () { statusService.setStatus(testId, testStatus, true); expect(mockTopicInstance.notify) - .toHaveBeenCalledWith([ testStatus ]); + .toHaveBeenCalledWith([testStatus]); statusService.setStatus(testId, testStatus, false); expect(mockTopicInstance.notify) .toHaveBeenCalledWith([ ]); diff --git a/platform/telemetry/src/TelemetryCapability.js b/platform/telemetry/src/TelemetryCapability.js index 57fc603afd..02b74806e8 100644 --- a/platform/telemetry/src/TelemetryCapability.js +++ b/platform/telemetry/src/TelemetryCapability.js @@ -27,7 +27,9 @@ define( [], function () { - var ZERO = function () { return 0; }, + var ZERO = function () { + return 0; + }, EMPTY_SERIES = { getPointCount: ZERO, getDomainValue: ZERO, diff --git a/platform/telemetry/src/TelemetryController.js b/platform/telemetry/src/TelemetryController.js index 69ff357a7a..73f474d11e 100644 --- a/platform/telemetry/src/TelemetryController.js +++ b/platform/telemetry/src/TelemetryController.js @@ -176,7 +176,7 @@ define( "telemetry" )).then(function (result) { var head = domainObject.hasCapability("telemetry") ? - [ domainObject ] : [], + [domainObject] : [], tail = result || []; return head.concat(tail); }); diff --git a/platform/telemetry/src/TelemetryDelegator.js b/platform/telemetry/src/TelemetryDelegator.js index d0ccb9575f..594b98397d 100644 --- a/platform/telemetry/src/TelemetryDelegator.js +++ b/platform/telemetry/src/TelemetryDelegator.js @@ -45,7 +45,7 @@ define( */ TelemetryDelegator.prototype.promiseTelemetryObjects = function (domainObject) { var $q = this.$q; - + // If object has been cleared, there are no relevant // telemetry-providing domain objects. if (!domainObject) { @@ -59,7 +59,7 @@ define( "telemetry" )).then(function (result) { var head = domainObject.hasCapability("telemetry") ? - [ domainObject ] : [], + [domainObject] : [], tail = result || []; return head.concat(tail); }); diff --git a/platform/telemetry/src/TelemetryQueue.js b/platform/telemetry/src/TelemetryQueue.js index c6092cc603..dadb34d3df 100644 --- a/platform/telemetry/src/TelemetryQueue.js +++ b/platform/telemetry/src/TelemetryQueue.js @@ -37,22 +37,22 @@ define( function TelemetryQueue() { // General approach here: // * Maintain a queue as an array of objects containing key-value - // pairs. Putting values into the queue will assign to the - // earliest-available queue position for the associated key + // pairs. Putting values into the queue will assign to the + // earliest-available queue position for the associated key // (appending to the array if necessary.) // * Maintain a set of counts for each key, such that determining // the next available queue position is easy; O(1) insertion. - // * When retrieving objects, pop off the queue and decrement + // * When retrieving objects, pop off the queue and decrement // counts. This provides O(n+k) or O(k) retrieval for a queue // of length n with k unique keys; this depends on whether // the browser's implementation of Array.prototype.shift is // O(n) or O(1). - + // Graphically (indexes at top, keys along side, values as *'s), // if we have a queue that looks like: // 0 1 2 3 4 // a * * * * * - // b * * + // b * * // c * * * // // And we put a new value for b, we expect: @@ -93,11 +93,11 @@ define( // Look up an object in the queue that does not have a value // assigned to this key (or, add a new one) - function getFreeObject(key) { - var index = counts[key] || 0, object; + function getFreeObject(k) { + var index = counts[k] || 0, object; // Track the largest free position for this key - counts[key] = index + 1; + counts[k] = index + 1; // If it's before the end of the queue, add it there if (index < queue.length) { diff --git a/platform/telemetry/src/TelemetrySubscription.js b/platform/telemetry/src/TelemetrySubscription.js index 0334c29455..7cf524b184 100644 --- a/platform/telemetry/src/TelemetrySubscription.js +++ b/platform/telemetry/src/TelemetrySubscription.js @@ -84,8 +84,8 @@ define( // Look up domain objects which have telemetry capabilities. // This will either be the object in view, or object that // this object delegates its telemetry capability to. - function promiseRelevantObjects(domainObject) { - return delegator.promiseTelemetryObjects(domainObject); + function promiseRelevantObjects(domainObj) { + return delegator.promiseTelemetryObjects(domainObj); } function updateValuesFromPool() { @@ -114,16 +114,16 @@ define( // Look up metadata associated with an object's telemetry - function lookupMetadata(domainObject) { + function lookupMetadata(domainObj) { var telemetryCapability = - domainObject.getCapability("telemetry"); + domainObj.getCapability("telemetry"); return telemetryCapability && telemetryCapability.getMetadata(); } // Update the latest telemetry data for a specific // domain object. This will notify listeners. - function update(domainObject, series) { + function update(domainObj, series) { var count = series && series.getPointCount(); // Only schedule notification if there isn't already @@ -136,21 +136,21 @@ define( // Update the latest-value table if (count > 0) { - pool.put(domainObject.getId(), { + pool.put(domainObj.getId(), { domain: series.getDomainValue(count - 1), range: series.getRangeValue(count - 1), - datum: self.makeDatum(domainObject, series, count - 1) + datum: self.makeDatum(domainObj, series, count - 1) }); } } // Prepare a subscription to a specific telemetry-providing // domain object. - function subscribe(domainObject) { + function subscribe(domainObj) { var telemetryCapability = - domainObject.getCapability("telemetry"); + domainObj.getCapability("telemetry"); return telemetryCapability.subscribe(function (telemetry) { - update(domainObject, telemetry); + update(domainObj, telemetry); }); } diff --git a/platform/telemetry/test/TelemetryAggregatorSpec.js b/platform/telemetry/test/TelemetryAggregatorSpec.js index 76a3a2cbb7..39ac5a9c9a 100644 --- a/platform/telemetry/test/TelemetryAggregatorSpec.js +++ b/platform/telemetry/test/TelemetryAggregatorSpec.js @@ -38,10 +38,10 @@ define( }; } - function mockProvider(key, index) { + function makeMockProvider(key, index) { var provider = jasmine.createSpyObj( "provider" + index, - [ "requestTelemetry", "subscribe" ] + ["requestTelemetry", "subscribe"] ), unsubscribe = jasmine.createSpy("unsubscribe" + index); provider.requestTelemetry.andReturn({ someKey: key }); @@ -53,11 +53,11 @@ define( } beforeEach(function () { - mockQ = jasmine.createSpyObj("$q", [ "all" ]); + mockQ = jasmine.createSpyObj("$q", ["all"]); mockQ.all.andReturn(mockPromise([])); mockUnsubscribes = []; - mockProviders = [ "a", "b", "c" ].map(mockProvider); + mockProviders = ["a", "b", "c"].map(makeMockProvider); aggregator = new TelemetryAggregator(mockQ, mockProviders); }); @@ -121,4 +121,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/telemetry/test/TelemetryCapabilitySpec.js b/platform/telemetry/test/TelemetryCapabilitySpec.js index 440a577e96..e5b57cb365 100644 --- a/platform/telemetry/test/TelemetryCapabilitySpec.js +++ b/platform/telemetry/test/TelemetryCapabilitySpec.js @@ -49,11 +49,11 @@ define( mockLog = jasmine.createSpyObj("$log", ["warn", "info", "debug"]); mockDomainObject = jasmine.createSpyObj( "domainObject", - [ "getId", "getCapability", "getModel" ] + ["getId", "getCapability", "getModel"] ); mockTelemetryService = jasmine.createSpyObj( "telemetryService", - [ "requestTelemetry", "subscribe" ] + ["requestTelemetry", "subscribe"] ); mockReject = jasmine.createSpyObj("reject", ["then"]); mockUnsubscribe = jasmine.createSpy("unsubscribe"); @@ -119,7 +119,9 @@ define( it("provides an empty series when telemetry is missing", function () { var series; mockTelemetryService.requestTelemetry.andReturn(mockPromise({})); - telemetry.requestData({}).then(function (s) { series = s; }); + telemetry.requestData({}).then(function (s) { + series = s; + }); expect(series.getPointCount()).toEqual(0); }); @@ -147,7 +149,9 @@ define( it("warns if no telemetry service can be injected", function () { - mockInjector.get.andCallFake(function () { throw ""; }); + mockInjector.get.andCallFake(function () { + throw ""; + }); // Verify precondition expect(mockLog.warn).not.toHaveBeenCalled(); diff --git a/platform/telemetry/test/TelemetryControllerSpec.js b/platform/telemetry/test/TelemetryControllerSpec.js index 8dc60ef231..b5dd7ea847 100644 --- a/platform/telemetry/test/TelemetryControllerSpec.js +++ b/platform/telemetry/test/TelemetryControllerSpec.js @@ -45,9 +45,9 @@ define( beforeEach(function () { mockScope = jasmine.createSpyObj( "$scope", - [ "$on", "$broadcast", "$watch" ] + ["$on", "$broadcast", "$watch"] ); - mockQ = jasmine.createSpyObj("$q", [ "all", "when" ]); + mockQ = jasmine.createSpyObj("$q", ["all", "when"]); mockTimeout = jasmine.createSpy("$timeout"); mockLog = jasmine.createSpyObj("$log", ["warn", "info", "debug"]); @@ -64,7 +64,7 @@ define( mockTelemetry = jasmine.createSpyObj( "telemetry", - [ "requestData", "subscribe", "getMetadata" ] + ["requestData", "subscribe", "getMetadata"] ); mockUnsubscribe = jasmine.createSpy("unsubscribe"); @@ -239,4 +239,4 @@ define( }); }); } -); \ No newline at end of file +); diff --git a/platform/telemetry/test/TelemetryHandleSpec.js b/platform/telemetry/test/TelemetryHandleSpec.js index 4ede2a4b5d..aedf734807 100644 --- a/platform/telemetry/test/TelemetryHandleSpec.js +++ b/platform/telemetry/test/TelemetryHandleSpec.js @@ -71,7 +71,9 @@ define( mockQ.all.andCallFake(function (values) { return values.map(function (v) { var r; - asPromise(v).then(function (value) { r = value; }); + asPromise(v).then(function (value) { + r = value; + }); return r; }); }); diff --git a/platform/telemetry/test/TelemetryQueueSpec.js b/platform/telemetry/test/TelemetryQueueSpec.js index d81221f95f..af4f866048 100644 --- a/platform/telemetry/test/TelemetryQueueSpec.js +++ b/platform/telemetry/test/TelemetryQueueSpec.js @@ -71,4 +71,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/telemetry/test/TelemetrySubscriberSpec.js b/platform/telemetry/test/TelemetrySubscriberSpec.js index 7ca7b054ad..f79cb608fc 100644 --- a/platform/telemetry/test/TelemetrySubscriberSpec.js +++ b/platform/telemetry/test/TelemetrySubscriberSpec.js @@ -40,7 +40,7 @@ define( mockTimeout = jasmine.createSpy("$timeout"); mockDomainObject = jasmine.createSpyObj( "domainObject", - [ "getCapability", "useCapability", "hasCapability" ] + ["getCapability", "useCapability", "hasCapability"] ); mockCallback = jasmine.createSpy("callback"); mockPromise = jasmine.createSpyObj("promise", ["then"]); @@ -70,4 +70,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/platform/telemetry/test/TelemetrySubscriptionSpec.js b/platform/telemetry/test/TelemetrySubscriptionSpec.js index 7665a823b9..c3e4b23be2 100644 --- a/platform/telemetry/test/TelemetrySubscriptionSpec.js +++ b/platform/telemetry/test/TelemetrySubscriptionSpec.js @@ -52,7 +52,7 @@ define( mockTimeout = jasmine.createSpy("$timeout"); mockDomainObject = jasmine.createSpyObj( "domainObject", - [ "getCapability", "useCapability", "hasCapability", "getId" ] + ["getCapability", "useCapability", "hasCapability", "getId"] ); mockCallback = jasmine.createSpy("callback"); mockTelemetry = jasmine.createSpyObj( @@ -67,7 +67,7 @@ define( mockUnlisten = jasmine.createSpy("unlisten"); mockSeries = jasmine.createSpyObj( "series", - [ "getPointCount", "getDomainValue", "getRangeValue" ] + ["getPointCount", "getDomainValue", "getRangeValue"] ); mockQ.when.andCallFake(mockPromise); @@ -223,7 +223,7 @@ define( subscription.promiseTelemetryObjects().then(mockCallback2); expect(mockCallback2) - .toHaveBeenCalledWith([ mockDomainObject ]); + .toHaveBeenCalledWith([mockDomainObject]); }); it("reinitializes on mutation", function () { @@ -252,8 +252,8 @@ define( mockSeries.getDomainValue.andCallFake(lookup); mockSeries.getRangeValue.andCallFake(lookup); - testMetadata.domains = [ { key: 'a' }, { key: 'b'} ]; - testMetadata.ranges = [ { key: 'c' }, { key: 'd'} ]; + testMetadata.domains = [{ key: 'a' }, { key: 'b'}]; + testMetadata.ranges = [{ key: 'c' }, { key: 'd'}]; mockTelemetry.subscribe.mostRecentCall.args[0](mockSeries); mockTimeout.mostRecentCall.args[0](); diff --git a/platform/telemetry/test/TelemetryTableSpec.js b/platform/telemetry/test/TelemetryTableSpec.js index cc7bcf6cd2..c787a5ec93 100644 --- a/platform/telemetry/test/TelemetryTableSpec.js +++ b/platform/telemetry/test/TelemetryTableSpec.js @@ -69,4 +69,4 @@ define( }); } -); \ No newline at end of file +); diff --git a/src/BundleRegistry.js b/src/BundleRegistry.js index d87b23e34f..f55d3fcd4c 100644 --- a/src/BundleRegistry.js +++ b/src/BundleRegistry.js @@ -47,4 +47,4 @@ define(function () { }; return BundleRegistry; -}); \ No newline at end of file +}); diff --git a/src/BundleRegistrySpec.js b/src/BundleRegistrySpec.js index e60a76fef3..208e9d4fcc 100644 --- a/src/BundleRegistrySpec.js +++ b/src/BundleRegistrySpec.js @@ -85,4 +85,4 @@ define(['./BundleRegistry'], function (BundleRegistry) { }); -}); \ No newline at end of file +}); diff --git a/src/legacyRegistry.js b/src/legacyRegistry.js index 39af6673f4..25bf1b40fe 100644 --- a/src/legacyRegistry.js +++ b/src/legacyRegistry.js @@ -22,4 +22,4 @@ define(['src/BundleRegistry'], function (BundleRegistry) { return new BundleRegistry(); -}); \ No newline at end of file +});