2016-07-21 21:39:02 +00:00
|
|
|
# Open MCT API
|
|
|
|
|
2016-09-06 20:46:02 +00:00
|
|
|
The Open MCT framework public api can be utilized by building the application
|
|
|
|
(`gulp install`) and then copying the file from `dist/main.js` to your
|
|
|
|
directory of choice.
|
2016-07-21 21:39:02 +00:00
|
|
|
|
2016-09-06 20:28:49 +00:00
|
|
|
Open MCT supports AMD, CommonJS, and loading via a script tag; it's easy to use
|
|
|
|
in your project. The [`openmct`]{@link module:openmct} module is exported
|
|
|
|
via AMD and CommonJS, and is also exposed as `openmct` in the global scope
|
|
|
|
if loaded via a script tag.
|
2016-07-21 21:39:02 +00:00
|
|
|
|
|
|
|
## Overview
|
|
|
|
|
2016-09-06 20:46:02 +00:00
|
|
|
Open MCT's goal is to allow you to browse, create, edit, and visualize all of
|
|
|
|
the domain knowledge you need on a daily basis.
|
2016-07-21 21:39:02 +00:00
|
|
|
|
2016-09-06 20:31:07 +00:00
|
|
|
To do this, the main building block provided by Open MCT is the _domain object_.
|
|
|
|
The temperature sensor on the starboard solar panel,
|
|
|
|
an overlay plot comparing the results of all temperature sensor,
|
|
|
|
the command dictionary for a spacecraft,
|
|
|
|
the individual commands in that dictionary, your "my documents" folder:
|
|
|
|
All of these things are domain objects.
|
|
|
|
|
|
|
|
Domain objects have Types, so a specific instrument temperature sensor is a
|
|
|
|
"Telemetry Point," and turning on a drill for a certain duration of time is
|
|
|
|
an "Activity". Types allow you to form an ontology of knowledge and provide
|
|
|
|
an abstraction for grouping, visualizing, and interpreting data.
|
|
|
|
|
|
|
|
And then we have Views. Views allow you to visualize domain objects. Views can
|
|
|
|
apply to specific domain objects; they may also apply to certain types of
|
|
|
|
domain objects, or they may apply to everything. Views are simply a method
|
|
|
|
of visualizing domain objects.
|
|
|
|
|
|
|
|
Regions allow you to specify what views are displayed for specific types of
|
|
|
|
domain objects in response to different user actions. For instance, you may
|
|
|
|
want to display a different view while editing, or you may want to update the
|
|
|
|
toolbar display when objects are selected. Regions allow you to map views to
|
|
|
|
specific user actions.
|
|
|
|
|
|
|
|
Domain objects can be mutated and persisted, developers can create custom
|
|
|
|
actions and apply them to domain objects, and many more things can be done.
|
|
|
|
For more information, read on!
|
2016-07-21 21:39:02 +00:00
|
|
|
|
2016-09-06 23:18:42 +00:00
|
|
|
## Running Open MCT
|
|
|
|
|
|
|
|
Once the [`openmct`](@link module:openmct) module has been loaded, you can
|
|
|
|
simply invoke [`start`]{@link module:openmct.MCT#start} to run Open MCT:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
openmct.start();
|
|
|
|
```
|
|
|
|
|
|
|
|
Generally, however, you will want to configure Open MCT by adding plugins
|
|
|
|
before starting it. It is important to install plugins and configure Open MCT
|
|
|
|
_before_ calling [`start`]{@link module:openmct.MCT#start}; Open MCT is not
|
|
|
|
designed to be reconfigured once started.
|
|
|
|
|
|
|
|
## Configuring Open MCT
|
|
|
|
|
|
|
|
The [`openmct`]{@link module:openmct} module (more specifically, the
|
2016-09-06 23:30:05 +00:00
|
|
|
[`MCT`]{@link module:openmct.MCT} class, of which `openmct` is an instance)
|
2016-09-06 23:18:42 +00:00
|
|
|
exposes a variety of methods to allow the application to be configured,
|
|
|
|
extended, and customized before running.
|
|
|
|
|
2016-09-06 23:30:05 +00:00
|
|
|
Short examples follow; see the linked documentation for further details.
|
2016-09-06 23:18:42 +00:00
|
|
|
|
2016-09-06 23:30:05 +00:00
|
|
|
### Adding Domain Object Types
|
|
|
|
|
|
|
|
Custom types may be registered via
|
|
|
|
[`openmct.type`]{@link module:openmct.MCT#type}:
|
|
|
|
|
|
|
|
```
|
|
|
|
openmct.type('my-type', new openmct.Type({
|
|
|
|
label: "My Type",
|
|
|
|
description: "This is a type that I added!"
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
### Adding Views
|
|
|
|
|
|
|
|
Custom views may be registered via
|
|
|
|
[`openmct.type`]{@link module:openmct.MCT#type}:
|
|
|
|
|
|
|
|
```
|
|
|
|
openmct.view(openmct.regions.main, {
|
|
|
|
canView: function (domainObject) {
|
|
|
|
return domainObject.type === 'my-type';
|
|
|
|
},
|
|
|
|
view: function (domainObject) {
|
|
|
|
return new MyView(domainObject);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
```
|
2016-09-06 23:18:42 +00:00
|
|
|
|
|
|
|
## Plugins
|
2016-07-25 21:38:44 +00:00
|
|
|
|
2016-09-06 23:30:05 +00:00
|
|
|
While you can register new features with Open MCT directly, it is generally
|
|
|
|
more useful to package these as a plugin. A plugin is a function that takes
|
|
|
|
[`openmct`]{@link module:openmct} as an argument, and performs configuration
|
|
|
|
upon `openmct` when invoked.
|
|
|
|
|
|
|
|
### Installing Plugins
|
|
|
|
|
|
|
|
To install plugins, use the [`install`]{@link module:openmct.MCT#install}
|
|
|
|
method:
|
|
|
|
|
|
|
|
```
|
|
|
|
openmct.install(myPlugin);
|
|
|
|
```
|
|
|
|
|
|
|
|
The plugin will be invoked to configure Open MCT before it is started.
|
|
|
|
|
|
|
|
### Writing Plugins
|
|
|
|
|
|
|
|
Plugins configure Open MCT, and should utilize the
|
|
|
|
[`openmct`]{@link module:openmct} to do so, as summarized above in
|
|
|
|
"Configuring Open MCT."
|
|
|
|
|
|
|
|
### Distributing Plugins
|
|
|
|
|
|
|
|
Hosting or downloading plugins is outside of the scope of this documentation.
|
|
|
|
We recommend distributing plugins as UMD modules which export a single
|
|
|
|
function.
|
|
|
|
|