open #90 Squashed commit of the following: commita2d06583ca
Merge:74f289c
5d5425d
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Oct 27 14:04:49 2015 -0700 Merge pull request #216 from nasa/open-vista54a Review and integrate open-vista54a into master commit5d5425db04
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Tue Oct 27 11:50:16 2015 -0700 [Frontend] Finessing and verifying CSS vista#54 Verified against fixed position and scrolling views using SineWave generator; font-size of glyph tweaked; commita8856c0612
Author: Charles Hacskaylo <charlesh88@gmail.com> Date: Tue Oct 27 11:40:35 2015 -0700 [Frontend] Platform-specific mods to limits vista#54 Refactor limits into multiple classes, separating upr/lwr from red/yellow; Modded SineWaveLimitCapability accordingly; Normalized upr/lwr glyphs; (cherry picked from commit a26d71b) commit74f289cb34
Merge:4ec243c
29bdc9d
Author: akhenry <akhenry@gmail.com> Date: Tue Oct 27 10:48:33 2015 -0700 Merge pull request #206 from nasa/open150b [Plot] Ignore empty lines commit4ec243c6fb
Merge:407d988
3d996ac
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Sat Oct 24 07:48:45 2015 -0700 Merge pull request #212 from nasa/open211 [RequireJS] Specify path for uuid commit407d9881ff
Merge:6ee622b
21739ff
Author: akhenry <akhenry@gmail.com> Date: Fri Oct 23 19:16:51 2015 -0700 Merge pull request #200 from nasa/open-toc [Documentation] Add table of contents commit6ee622b3f5
Merge:099d70b
87e317a
Author: akhenry <akhenry@gmail.com> Date: Fri Oct 23 17:04:04 2015 -0700 Merge pull request #192 from nasa/open153 [CI] Remove non-existent bundle from procfile commit099d70b8d9
Merge:90828ef
8e2a2ee
Author: akhenry <akhenry@gmail.com> Date: Fri Oct 23 17:00:46 2015 -0700 Merge pull request #175 from nasa/open147 [Entanglement] Add "Go To Original" action commit3d996ac466
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Fri Oct 23 16:32:05 2015 -0700 [RequireJS] Specify path for uuid Specify path for uuid, making it available for any code that would require it, without that code needing to know the path to it. Fixes https://github.com/nasa/openmctweb/issues/211. commit90828ef63d
Merge:bf24ac7
dbebf08
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Fri Oct 23 16:23:29 2015 -0700 Merge remote-tracking branch 'github-open/open181' into open-master commit29bdc9d574
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Fri Oct 23 13:04:06 2015 -0700 [Plot] Ignore empty lines Ignore empty lines (plot lines with no data) when determining domain extrema; avoids failure to draw multiple plot lines in a telemetry panel, nasa/openmctweb#150. commitbf24ac7c93
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Fri Oct 23 12:14:46 2015 -0700 [Search] Update field name Update field name in GenericSearchProvider to reflect changes from nasa/openmctweb#193. Avoids exceptions on mutation. Additionally, add test case exercising relevant code and verifying that reindexing is scheduled upon mutation as expected. commit59f094763b
Merge:3080861
496cf85
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Oct 22 16:58:02 2015 -0700 Merge pull request #193 from nasa/search-performance Search performance commitdbebf08500
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Oct 21 15:38:58 2015 -0700 [Time Controller] Add test cases ...to verify behavior on text entry of dates. commit847c356063
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Oct 21 15:26:42 2015 -0700 [Time Controller] Change color when input is invalid nasa/openmctweb#181 commit06bcd28558
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Oct 21 15:22:00 2015 -0700 [Time Controller] Keep inputs in sync Keep inputs in sync with displayed data in time controller, without overwriting user-entered text. nasa/openmctweb#181 commitf88e8ebb51
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Oct 21 15:08:44 2015 -0700 [Time Controller] Update model state for text entry commit6d2b2fd81e
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Oct 21 14:46:12 2015 -0700 [Time Controller] Parse user-entered timestamps nasa/openmctweb#181. commit608800ae63
Merge:07818b0
fb0ce1e
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Oct 21 14:40:42 2015 -0700 Merge remote-tracking branch 'github/master' into open181 Conflicts: platform/commonUI/general/res/templates/controls/time-controller.html commit07818b0a6d
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Oct 21 14:35:18 2015 -0700 [Time Controller] Show bounds in a text field Show bounds in a text field to allow user editing; supports manual editing of time controller bounds, nasa/openmctweb#181. commit496cf85b7e
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Wed Oct 21 09:46:32 2015 -0700 [JSDoc] Correct mistake commit833f57e284
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Wed Oct 21 07:39:59 2015 -0700 [Search] Don't block UI between requests Timeout subsequent calls to keepIndexing at the end of a indexRequest, so that UI operations are not blocked. commit9a63e99710
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Tue Oct 20 16:01:42 2015 -0700 [Search] Add spec for ElasticSearchProvider Add spec coverage for ElasticSearchProvider. Also remove unneeded guards for max number of results, as the aggregator will always provide a max number of results. commit21739fffd9
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Oct 20 15:52:49 2015 -0700 [Documentation] Add table of contents Add table of contents to generated documents, without modifying document sources; nasa/openmctweb#189. commit77d81f899b
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Tue Oct 20 15:31:33 2015 -0700 [Style] JSLint compliance commitfe3263fdfe
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Tue Oct 20 15:27:46 2015 -0700 [Search] Remove invalid specs commitce42429fbd
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Tue Oct 20 15:14:43 2015 -0700 [Search] expose constants, add fudge factor The SearchAggregator exposes it's constants to add stability to tests. It also has a fudge factor which increaases the number of results it requests from providers to better support pagination when using client side filtering. commit76151d09a0
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Tue Oct 20 15:13:37 2015 -0700 [Search] use service for filters, add spec Add a spec for the SearchController, and use the SearchService to execute filters by supplying a filterPredicate. commitec7e6cc5b4
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Tue Oct 20 13:55:46 2015 -0700 [Search] Update spec for Generic Search Worker commit1ddce48f7e
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Tue Oct 20 13:12:04 2015 -0700 [Search] Specs for GenericSearchProvider Write specs for GenericSearchProvider and resolve some implementation bugs they uncovered. commit98b5ff3c77
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Fri Oct 16 18:14:33 2015 -0700 [Search] Decrement number of pending requests commit14094a48fc
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Fri Oct 16 17:33:23 2015 -0700 [Search] Remove old specs in prep for rewrite Remove old specs in prep for rewrite. commit8e2a2eeba5
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Mon Oct 19 12:08:49 2015 -0700 [Entanglement] Add license headers ...per code review feedback from nasa/openmctweb#175 commit0f63e4dde9
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Fri Oct 16 17:06:23 2015 -0700 [Tests] Rewrite search aggregator specs commit12efb47be7
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Fri Oct 16 16:09:51 2015 -0700 [Search] Remove timeouts and timestamps Remove timeouts and timestamps which were not effectively doing anything. commita2fce8e56c
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Fri Oct 16 16:05:31 2015 -0700 [Search] Rewrite elasticsearch provider with prototype Rewrite the elasticsearch provider to use prototypes and clean up the implementation. Now returns a modelResults object to keep it in line with the general search provider. commit78e5c0143b
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Fri Oct 16 15:26:46 2015 -0700 [Search] Overhaul generic search provider Rewrite the generic search provider to use prototypes. Increase performance by utilizing the model service instead of the object service, and use a simplified method of request queueing. commit099591ad2e
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Fri Oct 16 15:26:04 2015 -0700 [Search] Aggregator returns objects, providers return models Search providers return search results as models for domain objects, as the actual number of max results is enforced by the aggregator, and because the individual providers store and return the models for their objects already. This lowers the amount of resources consumed instantiating domain objects, and also allows the individual search providers to implement function-based filtering on domain object models, which is beneficial as it allows the search filtering in the search controller to be done before paginating of results. commitb5505f372f
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Fri Oct 16 12:39:41 2015 -0700 [Search] Generic Worker Performance Tweaks The generic search worker now does indexing work during the index operation, ensuring that queries do not have to do extraneous or repeat calculations. Change the return format slightly and fixed a bug in the GenericSearchProvider which caused more objects than intended to be returned from the provider. commit9ad860babd
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Fri Oct 16 12:34:47 2015 -0700 [Search] Rewrite search controller, tidy Rewrite the search controller, making numerous changes and using prototypical style. First, the search controller immediately hides previous results when a new search is started. Secondly, the search controller ensures that search results displayed match the currently entered query, preventing race conditions. Finally, the search controller uses a poor filtering option that means it may not display all results. commit87e317a6f5
Author: Pete Richards <peter.l.richards@nasa.gov> Date: Fri Oct 16 11:33:42 2015 -0700 [CI] Remove non-existent bundle from procfile Remove the example/localstorage bundle from the procfile. Fixes #153. commitbf41d82a78
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Oct 6 16:50:35 2015 -0700 [Entanglement] Restore missing specs Restore specs which had been omitted from suite.json (but currently succeed for the relevant scripts); done in the context of nasa/openmctweb#147 commita4944717a1
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Oct 6 16:47:37 2015 -0700 [Location] Test getOriginal method commit70bbd3cf97
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Oct 6 16:37:37 2015 -0700 [Entanglement] Add test cases for Go To Original commite3afaf0842
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Oct 6 16:22:16 2015 -0700 [Entanglement] Add Go To Original nasa/openmctweb#147 commit60f2f9fb6c
Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Oct 6 16:08:48 2015 -0700 [Location] Add getOriginal method Add a getOriginal method to the location capability, to simplify loading of original versions of objects. nasa/openmctweb#147
Open MCT Web
Open MCT Web is a web-based platform for mission operations user interface software.
Bundles
A bundle is a group of software components (including source code, declared as AMD modules, as well as resources such as images and HTML templates) that are intended to be added or removed as a single unit. A plug-in for Open MCT Web will be expressed as a bundle; platform components are also expressed as bundles.
A bundle is also just a directory which contains a file bundle.json
,
which declares its contents.
The file bundles.json
(note the plural), at the top level of the
repository, is a JSON file containing an array of all bundles (expressed as
directory names) to include in a running instance of Open MCT Web. Adding or
removing paths from this list will add or remove bundles from the running
application.
Bundle Contents
A bundle directory will contain:
bundle.json
, the declaration of the bundles contents.- A source code directory, named
src
by convention. This contains all JavaScript sources exposed by the bundle. These are declared as AMD modules. - A directory for other resources, named
res
by convention. This contains all HTML templates, CSS files, images, and so forth to be used within a given bundle. - A library directory, named
lib
by convention. This contains all external libraries used and/or exposed by the bundle. - A test directory, named
test
by convention. This contains all unit tests declared for the bundle, as well as asuite.json
that acts as a listing of these dependencies. See the section on unit testing below.
Following these bundle conventions is required, at present, to ensure that Open MCT Web (and its build and tests) execute correctly.
Tests
The repository for Open MCT Web includes a test suite that can be run
directly from the web browser, test.html
. This page will:
- Load
bundles.json
to determine which bundles are in the application. - Load
test/suite.json
to determine which source files are to be tested. This should contain an array of strings, where each is the name of an AMD module in the bundle's source directory. For each source file:- Code coverage instrumentation will be added, via Blanket.
- The associated test file will be loaded, via RequireJS. These will
be located in the bundle's test folder; the test runner will presume
these follow a naming convention where each module to be tested has a
corresponding test module with the suffix
Spec
in that folder.
- Jasmine will then be invoked to run all tests defined in the loaded test modules. Code coverage reporting will be displayed at the bottom of the test page.
At present, the test runner presumes that bundle conventions are followed
as above; that is, sources are contained in src
, and tests are contained
in test
. Additionally, individual test files must use the Spec
suffix
as described above.
An example of this is expressed in platform/framework
, which follows
bundle conventions.
Functional Testing
The tests described above are all at the unit-level; an additional
test suite using Protractor
us under development, in the protractor
folder.
To run:
- Install protractor following the instructions above.
cd protractor
npm install
npm run all
Build
Open MCT Web includes a Maven command line build. Although Open MCT Web
can be run as-is using the repository contents (that is, by viewing
index.html
in a web browser), and its tests can be run in-place
similarly (that is, by viewing test.html
in a browser), the command
line build allows machine-driven verification and packaging.
This build will:
- Check all sources (excluding those in directories named
lib
) with JSLint for code style compliance. The build will fail if any sources do not satisfy JSLint. - Run unit tests. This is done by running
test.html
in a PhantomJS browser-like environment. The build will fail if any tests fail. - Package the application as a
war
(web archive) file. This is convenient for deployment on Tomcat or similar. This archive will include sources, resources, and libraries for bundles, as well as the top-level files used to initiate running of the application (index.html
andbundles.json
).
Run as mvn clean install
.
Building Documentation
Open MCT Web's documentation is generated by an npm-based build:
npm install
(only needs to run once)npm run docs
Documentation will be generated in target/docs
. Note that diagram
generation is dependent on having Cairo
installed; see
node-canvas's
documentation for help with installation.
Glossary
Certain terms are used throughout Open MCT Web with consistent meanings or conventions. Any deviations from the below are issues and should be addressed (either by updating this glossary or changing code to reflect correct usage.) Other developer documentation, particularly in-line documentation, may presume an understanding of these terms.
- bundle: A bundle is a removable, reusable grouping of software elements.
The application is composed of bundles. Plug-ins are bundles. For more
information, refer to framework documentation (under
platform/framework
.) - capability: An object which exposes dynamic behavior or non-persistent state associated with a domain object.
- composition: In the context of a domain object, this refers to the set of other domain objects that compose or are contained by that object. A domain object's composition is the set of domain objects that should appear immediately beneath it in a tree hierarchy. A domain object's composition is described in its model as an array of id's; its composition capability provides a means to retrieve the actual domain object instances associated with these identifiers asynchronously.
- description: When used as an object property, this refers to the human-readable description of a thing; usually a single sentence or short paragraph. (Most often used in the context of extensions, domain object models, or other similar application-specific objects.)
- domain object: A meaningful object to the user; a distinct thing in the work support by Open MCT Web. Anything that appears in the left-hand tree is a domain object.
- extension: An extension is a unit of functionality exposed to the
platform in a declarative fashion by a bundle. For more
information, refer to framework documentation (under
platform/framework
.) - id: A string which uniquely identifies a domain object.
- key: When used as an object property, this refers to the machine-readable identifier for a specific thing in a set of things. (Most often used in the context of extensions or other similar application-specific object sets.)
- model: The persistent state associated with a domain object. A domain object's model is a JavaScript object which can be converted to JSON without losing information (that is, it contains no methods.)
- name: When used as an object property, this refers to the human-readable name for a thing. (Most often used in the context of extensions, domain object models, or other similar application-specific objects.)
- navigation: Refers to the current state of the application with respect to the user's expressed interest in a specific domain object; e.g. when a user clicks on a domain object in the tree, they are navigating to it, and it is thereafter considered the navigated object (until the user makes another such choice.)
- space: A name used to identify a persistence store. Interactions with
persistence with generally involve a
space
parameter in some form, to distinguish multiple persistence stores from one another (for cases where there are multiple valid persistence locations available.)