commit f1dc1ce152e186da0d10c8e77d920ac0a76c9bc2 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 14:35:38 2017 -0700 [Timers] Rewrite JSDoc for FollowTimerAction https://github.com/nasa/openmct/pull/1694/files#r137604769 commit 7ab0693cc983f8a04ac8ee9002f4d776b06a869a Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 14:27:53 2017 -0700 [Timer] Expect domain objects from FollowIndicator test commit ff89c0849d16ab451bfd2fddd9202cf36940f599 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 14:26:28 2017 -0700 [Timer] Add JSDoc for new method commit 2a0343352eca241dfc28a4aa0b3832e3e6928864 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 14:24:59 2017 -0700 [Timeline] Update TOI tests ...to account for refactoring out of tick handling. commit 01cbaafc72870fab4ada5894637ae5721214933d Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 14:17:25 2017 -0700 [Timeline] Update dependencies for TOI test commit 6bd5c378566362dce331e7c200dea87f0b08ecc6 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 14:15:21 2017 -0700 [Timers] Update timerService tests with dependencies commit b0793865c5131e17a58786ec356d67f2f2bba4c5 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 14:09:54 2017 -0700 [Timers] Declare vars to satisfy JSHint commit 9d2a63f7fe61dadf68255d795512ec55f532c533 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 14:07:12 2017 -0700 [Timeline] Handle stopped timer commit 30871270514730f3f2f12482075e5140bb97fa1f Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 13:59:08 2017 -0700 [Timer] Tweak refactored timer logic commit 53ad127ba7cf679377dc865301612a1d78399324 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 13:53:36 2017 -0700 [Timer] Convert times from timerService ...to reduce resposibilities for TOI controller. commit f8341133cf23df383b8f6e4815b88e0066ebd2bc Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 13:03:37 2017 -0700 [Timeline] Factor out timer knowledge commit aebd9e0ac223971b868b03343dbe4c61c6eb4849 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 12:34:58 2017 -0700 [Timeline] Consistently use this commit 48ac427a20c5c343aecdbd54b068d8691f7830b6 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 12:33:57 2017 -0700 [Timeline] Remove unused tick binding/call commit ea62f0a15ba4ab5de53213bbed14599eaf878d70 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 12:10:59 2017 -0700 [Timeline] Retrieve timestamp on demand commit f53bd04b5e343b22ea52b431785ade891577bb6a Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 12:07:55 2017 -0700 [Timeline] Update clocks on bounds events https://github.com/nasa/openmct/pull/1694/files#r137603081 commit 51d8e376ee46aafa13cd9a969c6f03885e10dafb Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 11:40:33 2017 -0700 [Timeline] Don't listen for non-existing tick events commit 5cc40c488cec5e7453c2fe1dea5e5a4fa3509ecd Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 11:39:21 2017 -0700 [Time] Revert Time API changes https://github.com/nasa/openmct/pull/1694/files#r137603081 commit c55c8bc627bf0a7f3cfd04b604b82d15ff469ab9 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 11:37:40 2017 -0700 [Timeline] Finish testing TOI controller commit af5cea5f2f172a309568d477dfdf11b8d45e74bb Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 11:06:47 2017 -0700 [Timeline] Test TOI controller commit ba64db68b132fa431e8ccdb533024bf2850f9712 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 10:06:41 2017 -0700 [Timers] Test timerService commit 247e663b326ec5b8145b832af9b26086204baea3 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 10:05:24 2017 -0700 [Timers] Remove unused timerService method commit 8d741ad5744e1b7deb669dbaa0f3d30e4eb5866e Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 09:59:32 2017 -0700 [Timers] Remove unused timerService dependency commit b59c8917bdef5ec3e54c8857d993d86547cfe177 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 09:58:10 2017 -0700 [Timers] Remove unused timerService event commit f15dd9827f835a814dc40a6201c90268a60ed64a Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 09:49:09 2017 -0700 [Timers] Test timer-following indicator commit 2501f11af8c0b2aed9ebf16ffd28c0003b2701c2 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 09:42:54 2017 -0700 [Timer] Complete test coverage for FollowTimerAction commit aa2be83fc15cd68ee6de4d9f8205dc2fcba8c35b Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Thu Sep 7 09:35:37 2017 -0700 [Timers] Begin testing Follow Timer action commit d9062e0b0ff351b141dcb646972053ec72292d53 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 16:45:18 2017 -0700 [Timeline] Remove unused variables commit 79ebe4dd2b2aefc1e83ea8142588ed0715b3c269 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 16:39:22 2017 -0700 [Timeline] JSDoc for TOI controller commit 330f6b465188555e8e59f4eaf8ce1875b5335846 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 16:30:58 2017 -0700 [Timeline] Use different icon to follow time bounds commit f0a3b628e6d1d843324085edd563b68997f5a215 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 16:30:46 2017 -0700 [Timeline] Simplify TOI following initialization commit e76f3d1d525e0d19845b4c5b457995e60c416ad0 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 16:27:07 2017 -0700 [Timeline] Add toggle to follow time bounds commit 8ec072c0a2a953c074e0c327430dd68f27894ffb Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 16:19:25 2017 -0700 [Timeline] Follow TC bounds based on boolean commit 206a26734dedc267af6d298a77658aa261ca4fea Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 15:37:12 2017 -0700 [Timeline] Tune bounds following commit 19563bdf53a036c7bf09c52924425a1902b243bb Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 15:19:19 2017 -0700 [Timeline] Remove unused method commit 293981ec55ad115d7bd90b92f5bd090df64bd7c2 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 15:18:59 2017 -0700 [Timeline] Only update timestamp on tick Leave bounds-following to the bounds event commit 9180e15971d2043f0999a16f0aa8794273bcfc74 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 14:43:01 2017 -0700 [Time] Document tick event commit c7b163dff0d94aaea86b76647501f21623b353e1 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 14:39:57 2017 -0700 [Timeline] Stop listening on destroy ...from the TOI controller. commit ca7def3cf98e1eaf6c3aeb16cf9fd79452c86bd0 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 14:32:40 2017 -0700 [Timeline] Remove surplus watches commit 367e7afa94ae1ed448e39f13be804c62e2bfcf00 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 14:30:14 2017 -0700 [Timeline] Very deltas are valid before panning commit 7ee94f316e90d046015266a2a9168e349ff73345 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 14:28:10 2017 -0700 [Timeline] Scroll with TOI only while in view commit 9d7bb431119b7bc6ddc86f0058718e4385478518 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 10:36:46 2017 -0700 [Timeline] Utilize zoomController.bounds commit f151b9e8adfd235c31e32bef5fddab835efa7c8f Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 10:35:57 2017 -0700 [Timeline] Add methods to set zoom bounds commit c3d0b9876ab79c18003838ed3315045c5fb2ddbb Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 10:32:08 2017 -0700 [Timelines] Observe bounds changes ...to synchronize zoom with Time Conductor, #1688 commit 58adafc46f231b0fd92827d10c377131166ff39c Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 09:37:07 2017 -0700 [Timers] JSDoc for TimerService commit a325a8d5085bf1a4c9aa3ab20771308d4789765a Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 09:12:50 2017 -0700 [Timeline] Re-tweak follow scroll calculations ...for visibility. commit 41e4bf153607b081aaf92253fa2b21300e2f0ea7 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 09:03:45 2017 -0700 [Timeline] Tweak follow scroll calculations ...for visibility. commit 08a5b9f14ab629a310dc27a3771ca454f1187327 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 08:59:45 2017 -0700 [Timeline] Replace debug output with scroll updates commit 26585ecd61341b4ee89abd8ee866e705a02bbc9a Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 08:59:07 2017 -0700 [Timeline] Move TOI to scrollable area commit 654eda027c3c67a3a0ff33136109ca27d14762ba Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 08:56:07 2017 -0700 [Timeline] Begin implementing TOI following commit 552f67a11ce439be58ab7ca7884c46241a25adee Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Sep 6 08:55:51 2017 -0700 [Timeline] At zoom-to-time method For use by time-of-interest controller, #1688 commit 37acbfd458740b2c3176875f83d37f0fdf57e727 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Aug 30 12:46:33 2017 -0700 [Timeline] Remove other excess $apply calls ...although this should make us nervy about those callbacks being invoked in different ways. commit 0e72847c9ba59f957efa2d412cb77c024afa9e63 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Aug 30 12:44:27 2017 -0700 [Timeline] Remove $apply from $watch callback ...to avoid an infinite digest loop. commit bade0fd9f60101d5b1b782cd28e608af493c9076 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Aug 30 12:42:18 2017 -0700 [Timeline] Begin adding TOI line to template commit f94034a3b4136f6b174155397084f8cdb22ce544 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Aug 30 12:11:25 2017 -0700 [Timers] Add missing semicolon, satisfy JSHint commit cb465b94011e7432cc7e4d9e815641f97dc61d7a Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Aug 30 12:08:45 2017 -0700 [Time] Verify that tick event is emitted commit 7c84a86a33ceb73ba6a06801374ea3f89793c450 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Aug 30 11:59:06 2017 -0700 [Time] Emit tick events from Time API https://github.com/nasa/openmct/pull/1694 commit d319a783fcd882c03eb7d9a81fec33898016384e Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Wed Aug 30 11:56:28 2017 -0700 [Timeline] Sketch in TOI controller ...to position/follow time-of-interest, relative to the active timer. commit 2dbdb2627450039d69dbfd10eed2c100207e061a Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Aug 29 12:57:47 2017 -0700 [Timers] Use timerService ...to coordinate between action and indicator commit f94a2358eaf0366bd4da2b44e69ccb62b153c5db Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Aug 29 12:52:22 2017 -0700 [Timers] Use TimerService from Follow Timer action commit a720c2ec2cda4a300d26167f4717f0571bedcbfd Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Aug 29 12:50:31 2017 -0700 [Timers] Expose TimerService through bundle commit e32bbc3e232d25f7c5dba98674781e4f263c4870 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Aug 29 12:49:03 2017 -0700 [Timers] Sketch in timer service ...which will keep track of the active timer used to interpret SET for Timelines. commit a038c2b1d8fd34c2874fa8fc0421fa7ba53e11ab Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Aug 29 12:41:05 2017 -0700 [Timers] Register indicator commit 0e93ae87a1cccc4f3a0636844625b64ccb77a7ae Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Aug 29 12:39:21 2017 -0700 [Timers] Skeleton for time following indicator commit e806386891639740e9fe3d8641c2f60ab5a88eac Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Aug 29 09:37:14 2017 -0700 [Timers] Register the Follow Timer action commit 008aa95932070459dcc6fa1d918a23dac8df7592 Author: Victor Woeltjen <victor.woeltjen@nasa.gov> Date: Tue Aug 29 09:35:08 2017 -0700 [Timers] Skeleton for Follow Timer action ...to synchronize the time conductor with a particular Timer. #1688
Open MCT
Open MCT (Open Mission Control Technologies) is a next-generation mission control framework for visualization of data on desktop and mobile devices. It is developed at NASA's Ames Research Center, and is being used by NASA for data analysis of spacecraft missions, as well as planning and operation of experimental rover systems. As a generalizable and open source framework, Open MCT could be used as the basis for building applications for planning, operation, and analysis of any systems producing telemetry data.
Please visit our Official Site and Getting Started Guide
See Open MCT in Action
Try Open MCT now with our live demo.
New API
A simpler, easier-to-use API has been added to Open MCT. Changes in this API include a move away from a declarative system of JSON configuration files towards an imperative system based on function calls. Developers will be able to extend and build on Open MCT by making direct function calls to a public API. Open MCT is also being refactored to minimize the dependencies that using Open MCT imposes on developers, such as the current requirement to use AngularJS.
This new API has not yet been heavily used and is likely to contain defects. You can help by trying it out, and reporting any issues you encounter using our GitHub issue tracker. Such issues may include bugs, suggestions, missing documentation, or even just requests for help if you're having trouble.
We want Open MCT to be as easy to use, install, run, and develop for as possible, and your feedback will help us get there!
Building and Running Open MCT Locally
Building and running Open MCT in your local dev environment is very easy. Be sure you have Git and Node.js installed, then follow the directions below. Need additional information? Check out the Getting Started page on our website. (These instructions assume you are installing as a non-root user; developers have reported issues running these steps with root privileges.)
- Clone the source code
git clone https://github.com/nasa/openmct.git
- Install development dependencies
npm install
- Run a local development server
npm start
Open MCT is now running, and can be accessed by pointing a web browser at http://localhost:8080/
Documentation
Documentation is available on the Open MCT website. The documentation can also be built locally.
Examples
The clearest examples for developing Open MCT plugins are in the tutorials provided in our documentation.
For a practical example of a telemetry adapter, see David Hudson's Kerbal Space Program plugin, which allows Kerbal Space Program players to build and use displays for their own missions in Open MCT.
Additional examples are available in the examples
hierarchy of this
repository; however, be aware that these examples are
not fully-documented, so
the tutorials will likely serve as a better starting point.
Building the Open MCT Documentation Locally
Open MCT's documentation is generated by an npm-based build. It has additional dependencies that may not be available on every platform and thus is not covered in the standard npm install. Ensure your system has libcairo installed and then run the following commands:
npm install
npm install canvas nomnoml
npm run docs
Documentation will be generated in target/docs
.
Deploying Open MCT
Open MCT is built using npm
and gulp
.
To build Open MCT for deployment:
npm run prepublish
This will compile and minify JavaScript sources, as well as copy over assets.
The contents of the dist
folder will contain a runnable Open MCT
instance (e.g. by starting an HTTP server in that directory), including:
- A
main.js
file containing Open MCT source code. - Various assets in the
example
andplatform
directories. - An
index.html
that runs Open MCT in its default configuration.
Additional gulp
tasks are defined in the gulpfile.
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 is intended to be added or removed as a single unit. A plug-in for Open MCT 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. Adding or
removing paths from this list will add or remove bundles from the running
application.
Tests
Tests are written for Jasmine 1.3 and run by Karma. To run:
npm test
The test suite is configured to load any scripts ending with Spec.js
found
in the src
hierarchy. Full configuration details are found in
karma.conf.js
. By convention, unit test scripts should be located
alongside the units that they test; for example, src/foo/Bar.js
would be
tested by src/foo/BarSpec.js
. (For legacy reasons, some existing tests may
be located in separate test
folders near the units they test, but the
naming convention is otherwise the same.)
Test Reporting
When npm test
is run, test results will be written as HTML to
target/tests
. Code coverage information is written to target/coverage
.
Glossary
Certain terms are used throughout Open MCT 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. 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 will 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.)