* [Time Conductor] Skeleton class for URL handling
#1550
* [Time Conductor] Scaffold in param handling
* [Time Conductor] Finish sketching in URL handler
* [Time Conductor] Usage correct constants for bounds
* [Time Conductor] Use start/end for bounds/deltas
* [Time] Move URL handler
Per discussion, https://github.com/nasa/openmct/issues/1550#issuecomment-308849449
* [Time] Rename URL handler
* [Time] Rename URL handler script
* [Time] Use Time API from URL handler
* [Time] Utilize Time API
* [Time] Listen for changes, synchronize URL
* [Time] Move URL handler into adapter
...as it uses Angular constructs.
* [Time] Wire URL handler into adapter bundle
* [Time] Pass correct constructor arguments to URL handler
* [Time] Begin debugging URL handling
* [Time] Clarify and correct logic for bounds/deltas in URL
* [Time] Define timeSystem
* [Time] Pass start/end into time API as numbers
...instead of strings.
* [Time] Avoid creating redundant objects
* [Time] Restructure fixed vs clock logic
* [Time] Stop clock correctly for fixed mode
* [Time] Fix hasBounds/hasDeltas logic
...given that both inputs will be strings when read from search params,
_.isFinite was doomed to return false.
* [Time] Check for complete information
...before updating Time API to reflect search state. Additionally,
flatten logic to ease readability.
* [Time] Begin testing TimeSettingsURLHandler
* [Time] Test fixed mode query string updates
* [Time] Test realtime mode query string updates
* [Time] Test update of time API from query params
* [Time] Add missing semicolons
Satisfies JSHint; fixes#1550
* refactored code for listView
* minimum viable folder list functionality
* moved listview directory inside of platform/features
* [Folder ListView] First Code Review Fixes
Changes made:
Updated listview icon as the hamburger menu.
Injecting listview template as textfile instead of using the template's url.
Added callback to $scope to listen for $destroy to release resources for the mutation listener and the gesture recognizer.
Refactored ListViewController formatting function to use map instead of foreach.
Added listview plugin to the default registry.
Updated table styling.
* working progress commit. ListViewControllerSpec is implemented and all tests are passing. MCTGestureSpec is not fully implemented. Testing the gestureService release is in progress.
* All tests in MCTGestureSpec and ListViewControllerSpec are passing.
* ListViewControllerSpec and MCTGesture Tests all passing.
* refactored variable names in ListviewController to make more sense.
* [Frontend] Styling of Luis's list view WIP
Fixes#1615
This will have conflicts with Luis's work,
be careful!
* [Folder ListView] Second Code Review Fixes
Changes made:
updated listview to utilize open-mct sorting style.
added license comments to all files.
modified mctgesture interface to use $scope.eval().
* [Frontend] Styling of Luis's list view WIP
Fixes#1615
New list-view glyph added
* [Frontend] Styling of Luis's list view WIP
Fixes#1615
Changed name of "Items" view to "Grid";
* [Frontend] Styling of Luis's list view WIP
Fixes#1615
Updated icomoon project file with new list-view
glyph e1042;
* [Folder ListView] Second Code Review Fixes
Changes made:
updated listview to utilize open-mct sorting style.
added license comments to all files.
modified mctgesture interface to use $scope.eval().
* [Frontend] Styling of Luis's list view WIP
Fixes#1615
Refined cursor CSS;
* [Frontend] Styling of Luis's list view WIP
Fixes#1615
Added logic to refine how sorting occurs:
now, clicking a table header that wasn't
the orderByField always sorts by its default;
Fixes#1437
Markup and CSS for `view large` button in frame context;
Sass formatting cleanups; removed unused styles from
_layout.scss; mods to MCTTriggerModal.js to remove
button label functionality;
Added new "icon-expand" glyph and class;
Fixes#1437Fixes#1423
New overlay > l-dialog and l-large-view classes;
Fix context-menu z-index to allow context menu
to appear in the overlay;
.object-top-bar refactored and replaced with
.object-browse-bar;
frame > hover now only displays local controls for
proper level, handles nested layout situation;
Fixed font-weight display issues;
MCTTriggerModal.js modified to do the following:
- Remove .frame classes when displaying object in overlay
- Allow click on this overlay .blocker to dismiss overlay
Fixed min-width issue incorrectly targeting .object-browse-bar in frame context;
Added expand anim to large view holder;
Changed close button icon
Significant mobile styling and cleanups;
Markup mods for overlay.html;
Handles dialog on top of large view;
Form validation now displays better in mobile;
Updated /src/api/ui/dialog.html to be in-line
with /platform/commonUI/dialog/res/templates/overlay.html;
Moved border-radius from containerBase to btnBase mixins;
Animate with scale for GPU acceleration
Change desktop animation to use scale, so that it is hardware
accelerated and buttery smooth. Also fixes text anti-aliasing
to improve readability.
Moved mobile/overlay/_overlay.scss styles into
overlay/_overlay.scss; removed mobile/overlay/_overlay.scss;
Cleanups in _overlay.scss; restored max-width/max-height
to dialogs (removed in #1376 for #1298) and added
min-width;
[Frontend] Mobile fixes in overlay and related
Fixes#1437
Added mobile-specific styling to _messages.scss;
Fixed button layout and margins in _overlay.scss;
Fixed message.html to not default to major style
buttons;
[Frontend] Timing tweaks
Fixes#1437
Moved large view expand transition duration
into theme _constants files; shortened anim
duration
Fix Style errors
[mctTriggerModal] correct scope for toggle
Correct scope for toggleFunction such that #1503 no longer occurs.
Fixes#1503
[Style] Add copyright header
Use private parts of new composition API for generic search indexer
so that all objects are properly accessible in search results.
Also prevent ROOT object from getting indexed but still traverse
composition. That way, "The root object" no longer shows in search
results.
Update tests to cover changes.
Fixes#1579
Allow timeSystem to be changed without specifying bounds when
a clock is present and can provide bounds. This simplifies
bootstrap code.
https://github.com/nasa/openmct/issues/1581
When a menu option that specified an invalid time system with a
clock, the time conductor controller would log an error claiming
that the clock was unknown when in fact the time system is the
culprit.
Remove the error message as the plugin handles this validation
already. Also removed some unused code.
https://github.com/nasa/openmct/issues/1580
Update conductor validation logic to trigger easier-to-understand
error messages for bad configurations.
Update default-setting-behavior to properly set clock and offsets
when the default option is clock-based menu option.
Only set defaults when timeSystem has not already been configured.
fixes https://github.com/nasa/openmct/issues/1580
Update time API to tick immediately after setting a clock using
the currentValue of the clock. This ensures that bounds will
be set when the clock is set, instead of waiting for the next
tick to occur.
fixes https://github.com/nasa/openmct/issues/1582
Remove examples of format implementations. The docs stated
incorrectly that UTCTimeFormat used the additional parameters
for the format method when it did not actually use those
parameters.
With our current landscape of telemetry providers, parse can
frequently be called on an already parsed value, so added
documentation to highlight the importance of an idempotent
parse method.
Cleanup related to change of file locations in:
https://github.com/nasa/openmct/issues/1574
Always include basic formats; removing them from the utc format
bundle. This way, they can be utilized by third parties without
them having to commit to the utc time system.
Fixes https://github.com/nasa/openmct/issues/1574
Ensure telemetry request options always have a certain number
of fields-- start, end, and domain. This allows telemetry providers
to implement necessary filtering for these types of requests.
Update warning message with correct wording, and change
check for label property such that a blank label will also
trigger the deprecation warning.
Addresses feedback from https://github.com/nasa/openmct/pull/1571
Update docs to reference domain and range. Also added additional
documentation for the Telemetry API based on a previous draft of
the docs.
https://github.com/nasa/openmct/issues/1546
Track the updated composition of an object before notifying any
listeners. Otherwise, any composition listener that mutates the
object would cause an infinite loop.
Detected in implementation of the new plot.
When no path is specified, don't throw error. Navigate
to default, as expected.
When navigating to root, navigate to the last child
of root instead. This handles cases where DEFAULT_PATH
is not found (e.g. deployments without "mine").
Remove a check for an invalid return value, update the spec to
return the proper value. Also updated the subscribe method
to fetch defaults the same as the request method.
https://github.com/nasa/openmct/pull/1544
Update the formatter mock to implement the expected methods, such
that formatting occurs properly.
Remove a test that was validating the execution of a method
as this was smelly-- it's not the method that is important, it's
the result (that couldn't be obtained without the method).
Edited for consistent period and parentheses usage throughout:
- Removed periods at the end of each element in a list of nouns.
- Placed periods outside parenthetical statements that aren't complete sentences themselves.
- Placed periods at the end of sentences without punctuation.
Around line 143, gave "constants" its own bullet point. Although it is a form of variable or field, it also forms a separate style element with a different guideline. It's also easier to find when skimming when separated - for new contributors who need to learn the style, and veteran contributors who are just double checking.
Added TelemetryCollection to handle bounds and buffering. Avoids loss of telemetry due to timing mismatch between telemetry providers and tick sources
Fixed issues with removal and addition of objects
Set up TC so that it is always enabled and defaults to realtime mode.
This allows us to have warp-like functionality without showing
the TC interface, and simplifies a lot of tutorials. We can still
reconfigure the TC by re-installing the plugin with different settings
Fix search item so that navigation occurs after clicking on
a search result, while still properly preventing navigation
when required.
Related to #1366
The composition policy now takes a child instance instead
of the child type, as in all cases we have access to the child
object.
This allows new-style objects to be contained by old-style objects.
Updated all composition policies to use standardized argument names
instead of `context` and `candidate`; this makes it easier to
understand.
Updated AddActionProvider to hardcode the object types supported.
Based on feedback from tutorial sprint, update provider API,
formatter API, and legacy adapter code.
Providers can now implement separate checks for providing realtime
and historical data, and providers are not registered with a specific
strategy. Strategy is instead intended to be an attribute in the
request options.
Removed unused code in the telemetry API and simplify limitEvaluators.
Stop application from requesting bundles.json at first load. This was
confusing to some external developers who would see an error in the
log and not know the cause.
Historical and real-time data flowing
Added formatting, and limits. Support telemetry objects themselves and not just composition of telemetry objects
Apply default time range if none supplied (15 minutes)
Fixes#1233
Additional content; adding size classes to
input[type="text"] to allow direct application to
the input; added placeholder styling and related
thematic constants.
Make a separate chart directive for drawing resource graphs in timelines. This
is in preparation for a new plot bundle which will make a large number of
changes to the drawing API to support newly requested features. By separating
code, there will be no impact to the timeline when the new plot features are
added.
Set key on represent so that commit function can properly persist
configuration per object type. Add tests to EditRepresenter
Fixes https://github.com/nasa/openmct/issues/1367
BrowseController uses new MCTTreeView parameters to prevent navigation
events before triggering digests. It also no longer sets navigation
more frequently than it should.
https://github.com/nasa/openmct/issues/1360
EditObjectController now exits edit mode when it is destroyed.
It also injects a check function in the navigation service to
replace the old functionality implemented in EditNavigationPolicy.
https://github.com/nasa/openmct/issues/1360
Remove mct-before-unload, and move the functionality to the navigation
service. The navigation service considers "unload" to be a navigation
event and prompts in much the same way as it would before any other
navigation event.
https://github.com/nasa/openmct/issues/1360
Remove policy checking in navigation action and depend on navigation
service to provide those checks.
* Register checkFunctions with navigationService.checkBeforeNavigation
which returns a function for unregistering them.
* navigationService.setNavigation will run checks before allowing
navigation, unless a `force` argument is supplied.
https://github.com/nasa/openmct/issues/1360
Add methods to tree view via scope for more fine grained control.
Can supply a "allowSelection" function which should return true
if a given selection is allowed. This is executed before a node
is selected and allows you to prevent selection. Before this, if
you wanted to prevent the selection from changing, you had to wait
for it to change and then change it back to the original value.
Can also supply an "onSelection" function which is called when a
value is successfully selected. This allows you to handle the
selection event without waiting for digest. You can still $watch
"selectedObject" if you prefer.
Additionally, this changes the tree node to trigger a digest only
when the value is set via a MouseClick, instead of every time.
Tidies up directive scope bindings to clarify usage.
https://github.com/nasa/openmct/issues/1360
Simplify edit registration and remove extra abstractions. No longer
attach a status listener for every representation-- just use a single watch
for the edit controller. Simplifies logic involved in switching controllers.
https://github.com/nasa/openmct/issues/1360
* [Edit] Added notifications to SaveAsAction
* [Edit] Added notifications to SaveAction
* [Edit] Update SaveAsActionSpec
* [Edit] No error notif when user cancels SaveAs
Add TelemetryMetadataManager which assists developers in interrogating
telemetry metadata to find values that are useful for them.
Add TelemetryValueFormatter to simplify the parsing (retrieval of numerical
values) and formatting (retrieval of displayable string value) of datums.
https://github.com/nasa/openmct/issues/1310
* [Generator] Support more config, data rates
Update sinewave generator to use webworker, have more
configuration options. Now supports higher data rates.
Also wrote telemetry provider for new API, and updated
legacy provider as well while we flesh out the telemetry API.
Fixes https://github.com/nasa/openmct/issues/1337
* Proper Step Timing, proper value passthrough
* Remove unused value, remove non-functional plugin
Remove an unnecessary datum value, `time`, and remove the new style
plugin -- which does not actually work -- to prevent confusion.
Addresses
https://github.com/nasa/openmct/pull/1353#pullrequestreview-12571665
* [Time Conductor] Prevent route change on setting search parameters. fixes#1341
* [Inspector] Fixed incorrect listener deregistration which was causing errors on scope destruction
* Bare route is redirect to browse
* [Browse] handle routing without breaking $route
Manage route transitions such that route changes are properly
prevented and navigation events occur while still updating the url.
Resolves a number of issues where path and search updates had
to be supported in a very hacky manner.
https://github.com/nasa/openmct/pull/1342
* [URL] Set search without hacks
Changes in previous commit allow the search parameters to be modified
without accidentally triggering a page reload.
https://github.com/nasa/openmct/pull/1342
* [Views] Update on location changes
If the user has a bookmark or tries to change the current view of an
object by specifying view=someView as a search parameter, the change would
not previously take effect. This resolves that bug.
https://github.com/nasa/openmct/pull/1342
* [TC] Set query params to undefined
Instead of setting params to null, which would eventually result in those
parameters equaling undefined, set them to undefined to skip the extra
step.
https://github.com/nasa/openmct/pull/1342
* [Instantiate] Instantiate objects with context
Add context to instantiate objects so that they can be navigated
to for editing.
https://github.com/nasa/openmct/pull/1342
* [Tests] Update specs
Update specs to match new expectations.
* [Style] Fix style
* [TC] Remove unused dependency
Remove $route dependency from time conductor controller as it was
not being used. Resolves review comments.
https://github.com/nasa/openmct/pull/1342#pullrequestreview-11449260
* [Composition] provide ids, sync via mutation
Composition provides ids, and we sync things via mutation. This
simplifies the composition provider interface some, and also
fixes some issues with the previous default composition provider
related to #1322fixes#1253
* [Style] Fix style, update jsdoc
Fix style, update jsdoc, clean up composition api changes for
Fixes#1322
* [Style] Tidy and JSDoc
* [Composition] Utilize new composition API
Ensures that composition provided by new API works in old API.
Some functionality is not present in both places, but for the
time being this is sufficient.
https://github.com/nasa/openmct/pull/1332
* [Utils] add tests, fix bugs
Add tests to objectUtils to ensure correctness. This caught a bug
where character escapes were not properly applied or removed. As
a result, any missing object that contained a colon in it's key
would cause an infinite loop and cause the application to crash.
Bug discovered in VISTA integration.
* [Style] Fix style
* [Roots] Depend on new api for ROOT
Depend on new API for ROOT model, ensuring consistency when
fetching ROOT model.
* [Style] Remove commented code
Closes https://github.com/nasa/openmct/pull/1287.
Squashed commit of the following:
commit af9ba3095859684cb2465f1d5222a14db231fdb7
Merge: c98286d31308b1
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Fri Nov 25 14:57:32 2016 -0800
Merge branch 'open1193' into open1287-integration
Resolve conflicts in glyph files as documented in pull request:
https://github.com/nasa/openmct/pull/1287#issuecomment-263030180
Closes https://github.com/nasa/openmct/pull/1287
commit 31308b1076
Author: Andrew Henry <andrew.k.henry@nasa.gov>
Date: Tue Nov 22 17:08:10 2016 +0000
[Time Conductor] Addressed code review comments. Fixes#1287
commit db6386e21c
Author: Henry <akhenry@gmail.com>
Date: Wed Nov 9 11:52:39 2016 -0800
Removed redundant ConductorService
commit a9ec8db8c6
Merge: fc36674dfa4591
Author: Henry <akhenry@gmail.com>
Date: Wed Nov 9 08:23:07 2016 -0800
Merge branch 'master' into open1193
commit fc36674b5c
Author: Henry <akhenry@gmail.com>
Date: Wed Nov 9 08:23:01 2016 -0800
Updated wording of docs
commit d0906baccf
Author: Henry <akhenry@gmail.com>
Date: Fri Nov 4 10:48:05 2016 -0700
Fixed TOI not showing
commit 099c56c407
Author: Henry <akhenry@gmail.com>
Date: Fri Oct 28 16:46:06 2016 -0700
Fixed failing tests
commit 7cc008ed01
Author: Henry <akhenry@gmail.com>
Date: Fri Oct 28 10:28:41 2016 -0700
Added tests for tables, TOI controller
commit b0901e83cb
Author: Henry <akhenry@gmail.com>
Date: Thu Oct 27 10:42:31 2016 -0700
Added tests for ConductorAxisController and TimeConductor
commit dfed0a0783
Author: Henry <akhenry@gmail.com>
Date: Wed Oct 26 18:07:50 2016 -0700
Added ConductorAxisController tests
commit c3322e3847
Author: Henry <akhenry@gmail.com>
Date: Tue Oct 25 20:54:24 2016 -0700
Added tests for MctTableController
commit 8e76ebb5a8
Author: Henry <akhenry@gmail.com>
Date: Tue Oct 25 15:48:15 2016 -0700
Removed debugging code
commit 93735bc404
Author: Henry <akhenry@gmail.com>
Date: Mon Oct 24 15:13:45 2016 -0700
Removed bundle definition of MctAxisController
Documenting code
commit a942541724
Author: Henry <akhenry@gmail.com>
Date: Sun Oct 23 19:54:01 2016 -0700
[Time Conductor] Fixed memory leak due to listeners not being deregistered
commit 49e600dcc9
Author: Henry <akhenry@gmail.com>
Date: Sat Oct 22 16:47:11 2016 -0700
[Time Conductor] Fixed zoom slider behavior
commit f5806613b9
Author: Henry <akhenry@gmail.com>
Date: Sat Oct 22 14:46:14 2016 -0700
[Time Conductor] support TOI from real-time tables
commit 029d2b3058
Author: Henry <akhenry@gmail.com>
Date: Thu Oct 20 14:32:34 2016 -0700
[Examples] Simplified MSL example, fixed object tree not loading by default, renamed. Fixes#1256. Fixes#1255
commit 482eb4a5e8
Author: Henry <akhenry@gmail.com>
Date: Sat Oct 22 13:09:05 2016 -0700
[Time Conductor] Using new API
commit 843c678b0b
Merge: b56ab0a08ca765
Author: Henry <akhenry@gmail.com>
Date: Fri Oct 21 10:21:22 2016 -0700
In process of merging
commit b56ab0aac2
Author: Henry <akhenry@gmail.com>
Date: Wed Oct 19 16:30:26 2016 -0700
[Time Conductor] Implement default sort, fix unpredictable positioning using % left, set TOI on conductor init. #1193
commit d12ae77d95
Author: Henry <akhenry@gmail.com>
Date: Wed Oct 19 11:29:42 2016 -0700
Further TOI improvements
commit 22564473b5
Merge: 9f3ec3b86b51f6
Author: Henry <akhenry@gmail.com>
Date: Tue Oct 18 16:32:12 2016 -0700
Merge branch 'open1193' of https://github.com/nasa/openmctweb into open1193
commit 9f3ec3b18f
Author: Henry <akhenry@gmail.com>
Date: Tue Oct 18 16:31:59 2016 -0700
Fixed issue with scrolling to row after bounds change
commit 86b51f6cde
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Mon Oct 17 17:19:50 2016 -0700
[Frontend] Small refactor for mct-include
Fixes#933Fixes#1193
Markup and CSS tweaked to support using mct-include
as the main container for the TOI element; TC, plots
and tables all updated.
commit dadca62955
Author: Henry <akhenry@gmail.com>
Date: Mon Oct 17 15:54:34 2016 -0700
Positioning of TOI in tables and plots
commit 7a09bc1339
Author: Henry <akhenry@gmail.com>
Date: Mon Oct 17 10:11:59 2016 -0700
Migrated TOI functionality to common controller
commit 6bea6b3bc2
Merge: 660757f8f67cbd
Author: Henry <akhenry@gmail.com>
Date: Fri Oct 14 14:38:57 2016 -0700
Merge branch 'open1193' of https://github.com/nasa/openmctweb into open1193
commit 660757fc1c
Author: Henry <akhenry@gmail.com>
Date: Fri Oct 14 14:38:46 2016 -0700
Added TimeOfInterestController
commit 8f67cbd717
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Fri Oct 14 11:33:35 2016 -0700
[Frontend] Fixed cursor: grab on Time Conductor
Fixes#933Fixes#1193
Moved cursor: grab into mixin; sass cleanups
commit 07a4e26317
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Fri Oct 14 11:03:23 2016 -0700
[Frontend] TOI finalizing
Fixes#933Fixes#1193
HTML template cleaned up; checked in snow theme,
theme colors tweaked; padding finalized; now uses
val-to-left instead of -to-right;
commit 271c788f20
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Fri Oct 14 10:22:26 2016 -0700
[Frontend] TOI in tables
Fixes#933Fixes#1193
WIP
commit b7e8a1b378
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Thu Oct 13 15:55:48 2016 -0700
[Frontend] Styling for TOI element
Fixes#933Fixes#1193
WIP: Table TOI element in progress
commit 6042e4ad58
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Thu Oct 13 13:46:27 2016 -0700
[Frontend] Styling for TOI element
Fixes#933Fixes#1193
WIP: plots and TC done, moving on to
tables; moved sass into conductor-v2;
moved constants;
commit 1a534301c5
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Thu Oct 13 11:42:10 2016 -0700
[Frontend] Refactor TOI element
Fixes#933Fixes#1193
WIP; TOI as mct-include; layout uses
flex-box; preparing to move TOI sass
into conductor-v2 directory;
commit 42acf9255e
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Wed Oct 12 18:34:51 2016 -0700
[Frontend] Adding resync and dedicated unpin buttons
Fixes#933Fixes#1193
VERY WIP!
commit 3f0eb0b7cb
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Wed Oct 12 18:33:53 2016 -0700
[Frontend] New glyphs for use by TOI
Fixes#933Fixes#1193
Symbols font updated
commit 086307ba3a
Author: Henry <akhenry@gmail.com>
Date: Tue Oct 11 17:16:51 2016 -0700
Fixed scrolling behavior with TOI
commit 938bf3c4df
Merge: 39104378b2047c
Author: Henry <akhenry@gmail.com>
Date: Tue Oct 11 13:26:20 2016 -0700
Merge branch 'open1182' into open1193
commit 8b2047ca32
Author: Henry <akhenry@gmail.com>
Date: Tue Oct 11 13:25:24 2016 -0700
Fixed issue with setting deltas
commit 3910437033
Merge: 70c4ce202c543f
Author: Henry <akhenry@gmail.com>
Date: Tue Oct 11 12:48:37 2016 -0700
Merged changes to zoom
commit 02c543fddc
Author: Henry <akhenry@gmail.com>
Date: Tue Oct 11 12:45:18 2016 -0700
Fixed zoom in real-time mode
commit 70c4ce24e4
Author: Henry <akhenry@gmail.com>
Date: Fri Oct 7 17:57:14 2016 -0700
Added support for clicking row to set TOI
commit b995a8b87b
Merge: 51a9557b384e84
Author: Henry <akhenry@gmail.com>
Date: Fri Oct 7 16:11:59 2016 -0700
Merged from open1182
commit b384e84872
Merge: 5babf7207140b1
Author: Henry <akhenry@gmail.com>
Date: Fri Oct 7 15:02:41 2016 -0700
Merge branch 'open933' into open1182
commit 07140b179f
Merge: 3e9c0ebcbd001e
Author: Henry <akhenry@gmail.com>
Date: Fri Oct 7 14:54:18 2016 -0700
Merge branch 'master' into open933
commit 51a95575f7
Author: Henry <akhenry@gmail.com>
Date: Fri Oct 7 14:51:59 2016 -0700
[Time Conductor] Refactored time of interest as optional generic behavior of MctTable
commit dfbbc3b0c5
Merge: 430645b47a0aba
Author: Henry <akhenry@gmail.com>
Date: Thu Oct 6 10:23:42 2016 -0700
alt-click to select TOI from table
commit 3e9c0eb7a5
Merge: f1d20728a00181
Author: Henry <akhenry@gmail.com>
Date: Wed Oct 5 12:25:04 2016 -0700
Merged from master to resolve build issues
commit f1d2072bb9
Author: Henry <akhenry@gmail.com>
Date: Wed Oct 5 11:17:22 2016 -0700
Added license information
commit 430645b1f2
Author: Henry <akhenry@gmail.com>
Date: Wed Oct 5 09:04:13 2016 -0700
TOI working in time conductor
commit 47a0aba601
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Tue Oct 4 18:12:01 2016 -0700
[Frontend] TOI sass and markup sanding
Fixes#933Fixes#1193
Color tweaks; Cleanups, commented
code removal, etc.; tightened up
tabular padding and font sizes;
commit 0ed0a48a8c
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Tue Oct 4 15:49:18 2016 -0700
[Frontend] Styling for TOI element
Fixes#933Fixes#1193
Tabular styling for TOI;
commit 1650aae518
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Mon Oct 3 15:56:56 2016 -0700
[Frontend] Styling for TOI element
Fixes#933Fixes#1193
WIP: Tabular styling for TOI;
TODO: make bottom border work
commit d3bf6c5857
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Mon Oct 3 15:15:56 2016 -0700
[Frontend] Styling for TOI element
Fixes#933Fixes#1193
WIP: Markup and CSS for plots and TC near complete;
TODO: revised styling in tabular views;
commit 5cd0c8a4fa
Author: Henry <akhenry@gmail.com>
Date: Fri Sep 30 12:41:14 2016 -0700
[Time Conductor] merged from open1182
commit 5babf7274d
Author: Henry <akhenry@gmail.com>
Date: Thu Sep 29 11:21:11 2016 -0700
[Time Conductor] Tweaked the break points for zoom level indicator
commit 22da34870d
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Thu Sep 29 10:41:21 2016 -0700
[Frontend] Styling for TOI element
Fixes#933Fixes#1193
WIP: Markup and CSS revisions for updated UX approach;
TODO: cosmetic CSS
commit 99253a5904
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Tue Sep 27 20:42:33 2016 -0700
[Frontend] Styling for TOI element
Fixes#933Fixes#1193
WIP: Markup and CSS revisions for updated UX approach
commit 2db4aa6235
Author: Henry <akhenry@gmail.com>
Date: Fri Sep 23 13:06:22 2016 -0700
[Time Conductor] Added zoom level label
commit bb2ae2f8d1
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Fri Sep 23 11:07:06 2016 -0700
[Frontend] Styling for TOI element
Fixes#933Fixes#1193
Finalized TOI in plots, table and TC
commit 0cf4c92555
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Thu Sep 22 19:15:10 2016 -0700
[Frontend] Styling for TOI element in tables
Fixes#933Fixes#1193
WIP: styling in tabular mostly done, needs more unit testing
TODO: fix hide/show for pinned TOI in plots - don't
show pinned TOI on hover when not .active
commit 3c95c095f1
Author: Henry <akhenry@gmail.com>
Date: Thu Sep 22 17:22:25 2016 -0700
[Time Conductor] Refactored out use of angular event bus in favor of making TimeConductorViewService an event emitter.
commit adbcc407ef
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Thu Sep 22 16:06:45 2016 -0700
[Frontend] Styling for TOI element
Fixes#933Fixes#1193
WIP: TOI in tables
commit 1c3bd69b66
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Thu Sep 22 16:06:16 2016 -0700
[Frontend] Styling for TOI element, some refactoring
Fixes#933Fixes#1193
Moves some TOI styling into dedicated new scss file;
Enhancements to TOI in plots to bring into parity
with TOI in TC approach;
commit 49ee5cb74b
Author: Henry <akhenry@gmail.com>
Date: Thu Sep 22 15:18:48 2016 -0700
[Time Conductor] Destroy listeners in ConductorAxisController
commit 1a93ba2c3d
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Thu Sep 22 15:09:42 2016 -0700
[Frontend] Styling for TOI element in TC
Fixes#933Fixes#1193
Final for now; both types of TOI added to TC markup;
Hover behavior; constant values in the right places;
commit 98122cc730
Author: Henry <akhenry@gmail.com>
Date: Tue Sep 20 11:40:58 2016 -0700
[Time Conductor] Added Zoom
commit 7fcafb6b58
Author: Henry <akhenry@gmail.com>
Date: Mon Sep 12 16:53:48 2016 -0700
[Time Conductor] Added pan to Time Conductor
commit d77922d66c
Author: Pete Richards <pete@pete-richards.com>
Date: Thu Sep 15 09:37:11 2016 -0700
Revert "[proxyUrl] pass URL parameters to proxied URL"
commit 2e81550c86
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Wed Sep 14 10:16:33 2016 -0700
Revert "[Build] Check dependencies for vulnerabilities"
commit 8eb7585653
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Mon Aug 29 10:58:02 2016 -0700
[README] Warn about root installation issues
Mitigates #1151.
commit 904d56a089
Author: Henry <akhenry@gmail.com>
Date: Thu Sep 22 13:32:43 2016 -0700
[Time Conductor] #933 Clean up time conductor listeners on scope destruction
commit c0a96b3c5f
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Thu Sep 22 10:33:05 2016 -0700
[Frontend] Styling for TOI element in TC
Fixes#933Fixes#1193
WIP, tweaking TOI in TC
commit 27e6caf69b
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Fri Sep 16 18:51:51 2016 -0700
[Frontend] Styling for TOI element in plots
Fixes#933Fixes#1193
Relates to #1182
WIP, adding TOI to plot view;
Integrated Andrew's work from #1182;
Significant changes to markup and
additions to plot scss;
commit 2c7ae95106
Merge: 2c81b7241a160f
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Fri Sep 16 15:11:25 2016 -0700
Merge branch 'open1182' into open1193
commit 41a160fc4f
Merge: 92a80c3156ba83
Author: Henry <akhenry@gmail.com>
Date: Fri Sep 16 14:25:49 2016 -0700
Merge branch 'master' into open1182
commit 92a80c39cb
Author: Henry <akhenry@gmail.com>
Date: Mon Sep 12 16:53:48 2016 -0700
[Time Conductor] Added pan to Time Conductor
commit 2c81b72d60
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Thu Sep 15 16:02:30 2016 -0700
[Frontend] Styling for TOI element in plots
Fixes#933Fixes#1193
WIP, adding TOI to plot view.
commit 9e2debf801
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Thu Sep 15 15:43:29 2016 -0700
[Frontend] Styling for TC's TOI element
Fixes#933Fixes#1193
I lied in my last commit - one more
alignment tweak needed. Now I'm done.
commit 35872e284c
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Thu Sep 15 15:40:03 2016 -0700
[Frontend] Styling for TC's TOI element
Fixes#933Fixes#1193
TOI in TC done for now.
commit 98e67f8dfb
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Thu Sep 15 14:55:06 2016 -0700
[Frontend] Styling for TC's TOI element
Fixes#933Fixes#1193
WIP: adjust spacing;
added pagination buttons
commit f912b9e273
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Wed Sep 14 18:40:55 2016 -0700
[Frontend] Styling for TC's TOI element
Fixes#933
WIP, TC v2 changes
commit 2df1e2b508
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Wed Sep 14 18:40:29 2016 -0700
[Frontend] Styling for TC's TOI element
Fixes#933
WIP, global changes
commit 9e85341aaa
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Wed Sep 14 15:16:16 2016 -0700
[Frontend] Fixed color for TC clock hands
Fixes#933
commit 11e06039ec
Merge: a1331b7f732387
Author: Henry <akhenry@gmail.com>
Date: Tue Sep 13 13:25:37 2016 -0700
Merge branch 'master' into open933
commit a1331b7bb3
Merge: d1960b2e73bb4f
Author: Henry <akhenry@gmail.com>
Date: Mon Sep 12 15:07:05 2016 -0700
Merge branch 'master' into open933
commit d1960b2f46
Author: Henry <akhenry@gmail.com>
Date: Mon Sep 12 14:54:16 2016 -0700
[Time Conductor] Resolved merge conflicts
commit 9a06325533
Merge: e639e054c6ca58
Author: Henry <akhenry@gmail.com>
Date: Mon Sep 12 14:39:24 2016 -0700
Merge branch 'master' into open933
commit e639e056ba
Author: Henry <akhenry@gmail.com>
Date: Fri Sep 9 16:39:21 2016 -0700
[Time Conductor] Fixing bugs found in smoke testing. Fixes#933
commit fbab890081
Author: Henry <akhenry@gmail.com>
Date: Wed Sep 7 14:29:21 2016 -0700
[Time Conductor] Switched conductor to mct-include rather than mct-representation to avoid warnings
commit d37dd52ee1
Merge: 7af587558391de
Author: Henry <akhenry@gmail.com>
Date: Tue Sep 6 16:43:17 2016 -0700
Merge branch 'master' into open933
commit 7af5875dd5
Author: Henry <akhenry@gmail.com>
Date: Tue Sep 6 10:04:29 2016 -0700
[Time Conductor] #933 Fixed code style errors
commit c6eaa3d528
Author: Andrew Henry <andrew.k.henry@nasa.gov>
Date: Wed Aug 24 15:28:19 2016 +0100
[Time Conductor] Adding tests and fixing failing ones. #933
commit 4cf6126d35
Author: Henry <akhenry@gmail.com>
Date: Wed Aug 10 18:22:30 2016 -0700
Refactoring based on feedback
Refactoring controller
Migrating functions off controller onto service class
Simplified modes
Adding comments
Removed unnecessary validation
Fixing testing issues
commit 4ae6da0334
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Tue Aug 9 17:47:31 2016 -0700
[Frontend] Data viz in Time Conductor smaller
Fixes#933
Reduced height of data viz bar in Time Conductor
v2;
commit ae39343b76
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Mon Aug 8 12:14:20 2016 -0700
[Frontend] Fix for bad fix
Fixes#1112
Put overflow: hidden back at
outer wrapper level (now on .t-object.primary-pane
) which doens't clip the Inspector expand/collapse;
did better unit testing;
commit 62ee7e569b
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Mon Aug 8 11:21:01 2016 -0700
[Frontend] Fix for collapse Inspector button
Fixes#1112
Moved min-width and overflow: hidden
to TC-specific elements; removed
overflow: hidden from .primary-pane
commit 7557a86208
Merge: 46e644ec8931f8
Author: Henry <akhenry@gmail.com>
Date: Fri Aug 5 16:37:36 2016 -0700
Merge branch 'master' into open933
commit 46e644e6dc
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Fri Aug 5 14:44:18 2016 -0700
Use key to retrieve default
commit af7954c5a1
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Fri Aug 5 11:24:51 2016 -0700
Trigger digests when bounds are set
commit 0e0ad64830
Author: Henry <akhenry@gmail.com>
Date: Thu Aug 4 10:41:58 2016 -0700
Fixed issue with wrong deltas being applied
commit f3fd386e3b
Author: Henry <akhenry@gmail.com>
Date: Wed Aug 3 21:03:09 2016 -0700
Retain time system on mode change
commit 25b9f371e2
Author: Henry <akhenry@gmail.com>
Date: Wed Aug 3 20:16:03 2016 -0700
Fixed loss of time system options on navigation
commit 6b482d487b
Merge: f96f78f9a72c96
Author: Henry <akhenry@gmail.com>
Date: Wed Aug 3 19:57:03 2016 -0700
Merged mode-specific defaults, with some refactoring
commit f96f78ff79
Author: Henry <akhenry@gmail.com>
Date: Wed Aug 3 19:34:31 2016 -0700
Select appropriate tick source based on mode
commit 579233ade9
Author: Henry <akhenry@gmail.com>
Date: Wed Aug 3 18:30:01 2016 -0700
Fixed delta format issue on navigation
commit 9a72c96ea4
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Wed Aug 3 18:06:39 2016 -0700
[TCv2] different defaults by mode
commit f4e1879a2d
Author: Henry <akhenry@gmail.com>
Date: Wed Aug 3 17:43:07 2016 -0700
stop listening to tick source on time system change
commit f844495cc1
Author: Henry <akhenry@gmail.com>
Date: Wed Aug 3 17:40:37 2016 -0700
Support deltaFormat on timeSystems
commit 900752208f
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Wed Aug 3 13:05:43 2016 -0700
[TCv2] get conductor without service
commit 6501e2eb5f
Author: Henry <akhenry@gmail.com>
Date: Wed Aug 3 12:22:13 2016 -0700
Added isUTCBased to TimeSystem interface
commit b9c41107c1
Author: Henry <akhenry@gmail.com>
Date: Tue Aug 2 22:18:44 2016 -0700
Time Conductor state retained on navigation
commit 34c62ba405
Author: Henry <akhenry@gmail.com>
Date: Tue Aug 2 15:16:35 2016 -0700
Time Conductor in edit mode
commit 1eea5ce480
Merge: 4cd579d1173828
Author: Henry <akhenry@gmail.com>
Date: Mon Aug 1 20:29:50 2016 -0700
merged from master
commit 4cd579d274
Author: Henry <akhenry@gmail.com>
Date: Mon Aug 1 20:16:46 2016 -0700
Pass numerical value to format functions
commit 11738286df
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Mon Aug 1 18:56:33 2016 -0700
[Frontend] Styling for unsynced elements
Fixes#933
commit ca5206d4a0
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Mon Aug 1 18:55:49 2016 -0700
[Frontend] Fixing issues with theme coloring
Fixes#933
commit 573f1f9f99
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Mon Aug 1 18:04:17 2016 -0700
[Frontend] Hide zoom slider control
Fixes#933
Temporarily hiding per request from Andrew
today;
commit c5c45f0a0e
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Mon Aug 1 18:01:28 2016 -0700
[Frontend] Update TC2 markup and sass
Fixes#933
Update markup and sass in TC2 to be in line with
updates from master from #1047 glyphs
to cssclass approach;
commit 121ab413ff
Author: Henry <akhenry@gmail.com>
Date: Mon Aug 1 17:51:15 2016 -0700
Apply formatting, filter modes by tick source availability
commit 753bd97c8a
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Mon Aug 1 17:12:44 2016 -0700
Merge remote-tracking branch 'origin/master' into open933-c
# Conflicts:
# platform/commonUI/edit/res/templates/create/create-menu.html
# platform/commonUI/general/res/fonts/symbols/wtdsymbols.eot
# platform/commonUI/general/res/fonts/symbols/wtdsymbols.svg
# platform/commonUI/general/res/fonts/symbols/wtdsymbols.ttf
# platform/commonUI/general/res/fonts/symbols/wtdsymbols.woff
# platform/commonUI/general/res/sass/_archetypes.scss
# platform/commonUI/general/res/sass/_constants.scss
# platform/commonUI/general/res/sass/_icons.scss
# platform/commonUI/general/res/sass/_main.scss
# platform/commonUI/general/res/sass/_mixins.scss
# platform/commonUI/general/res/sass/controls/_buttons.scss
# platform/commonUI/general/res/templates/controls/time-controller.html
# platform/commonUI/themes/snow/res/sass/_constants.scss
commit fcd7ab93e5
Merge: a75ea679b58aa0
Author: Henry <akhenry@gmail.com>
Date: Mon Aug 1 17:12:00 2016 -0700
Merge branch 'open933' of https://github.com/nasa/openmctweb into open933
commit c699cb8b4b
Merge: 579c6b6d1e1ba1
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Mon Aug 1 17:11:37 2016 -0700
Merge remote-tracking branch 'origin/master' into open933-c
# Conflicts:
# platform/commonUI/edit/res/templates/create/create-menu.html
# platform/commonUI/general/res/fonts/symbols/wtdsymbols.eot
# platform/commonUI/general/res/fonts/symbols/wtdsymbols.svg
# platform/commonUI/general/res/fonts/symbols/wtdsymbols.ttf
# platform/commonUI/general/res/fonts/symbols/wtdsymbols.woff
# platform/commonUI/general/res/sass/_archetypes.scss
# platform/commonUI/general/res/sass/_constants.scss
# platform/commonUI/general/res/sass/_icons.scss
# platform/commonUI/general/res/sass/_main.scss
# platform/commonUI/general/res/sass/_mixins.scss
# platform/commonUI/general/res/sass/controls/_buttons.scss
# platform/commonUI/general/res/templates/controls/time-controller.html
# platform/commonUI/themes/snow/res/sass/_constants.scss
commit a75ea67b8c
Author: Henry <akhenry@gmail.com>
Date: Mon Aug 1 17:11:01 2016 -0700
Format updates when time system selected
commit 9b58aa0052
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Mon Aug 1 17:03:00 2016 -0700
[TCv2] Add conductorService for compatibility
Add conductor service for compatibility with old plugins that depend
on the conductor service.
commit 579c6b6d24
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Mon Aug 1 16:30:51 2016 -0700
[Frontend] Styling TC unsynced elements
Fixes#933
WIP: Styling for unsynced elements
commit 762f43fa61
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Mon Aug 1 16:26:47 2016 -0700
[Frontend] Styling TC unsynced elements
Fixes#933
WIP: Styling for unsynced elements
commit ce5d0ef5bd
Author: Henry <akhenry@gmail.com>
Date: Mon Aug 1 16:03:27 2016 -0700
Merged stylesheet changes
commit 142ee2f336
Merge: 482fcbf523d674
Author: Henry <akhenry@gmail.com>
Date: Mon Aug 1 15:44:49 2016 -0700
Added LocalTimeSystem and merged latest styles
commit 482fcbf6ee
Author: Henry <akhenry@gmail.com>
Date: Mon Aug 1 15:14:23 2016 -0700
Refactored bundle
commit 523d6743fb
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Mon Aug 1 12:00:53 2016 -0700
[Frontend] Added support for thematic styling of Time Conductor v2
Fixes#933
Added theme sass files
commit 7af22126d4
Author: Henry <akhenry@gmail.com>
Date: Wed Jul 27 12:05:03 2016 -0400
Prevent tabbing into end bounds when not in fixed mode
commit 8e59072537
Author: Henry <akhenry@gmail.com>
Date: Wed Jul 27 11:55:12 2016 -0400
Removed LAD and Realtime modes
commit c1bbc4f01d
Author: Henry <akhenry@gmail.com>
Date: Wed Jul 27 10:38:04 2016 -0400
Code cleanup
commit aa4a5e56f9
Author: Henry <akhenry@gmail.com>
Date: Tue Jul 26 16:55:00 2016 -0400
Improved support from plot
commit 5b2eb72b16
Author: Henry <akhenry@gmail.com>
Date: Tue Jul 26 08:33:30 2016 -0400
[Time Conductor] Addressed documentation issues
commit 1b7fc57d21
Author: Henry <akhenry@gmail.com>
Date: Mon Jul 25 16:55:27 2016 -0400
Added status support to plots
commit a4f6f6f50b
Author: Henry <akhenry@gmail.com>
Date: Mon Jul 25 12:09:15 2016 -0400
Added license
commit 19fd63b850
Merge: c2c8e16a10ded2
Author: Henry <akhenry@gmail.com>
Date: Thu Jul 21 20:06:50 2016 -0700
Merge branch 'open933-frontend-b' into open933
commit c2c8e16453
Author: Henry <akhenry@gmail.com>
Date: Thu Jul 21 20:03:40 2016 -0700
Added scale sensitive formatting to UTCTimeFormat
commit a10ded25b4
Merge: da7c636e6d8944
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Wed Jul 20 18:33:58 2016 -0700
Merge remote-tracking branch 'origin/open933' into open933-frontend-b
# Conflicts:
# platform/features/conductor-v2/res/sass/time-conductor.scss
# platform/features/conductor/res/sass/time-conductor.scss
commit da7c636724
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Wed Jul 20 18:22:20 2016 -0700
[Frontend] Time Conductor v2 styling
Fixes#933
Redo TC icon to use font symbol, added
new symbol for brackets to font files; font
anti-aliasing mod for .ui-symbol class;
layout tweaks; mobile tweaks.
commit b392633bc6
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Wed Jul 20 15:48:22 2016 -0700
[Frontend] Time Conductor v2 styling
Fixes#933
WIP: Significant mobile and desktop style tweaks;
moved constants into their own include file;
commit ff1678435e
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Wed Jul 20 11:43:40 2016 -0700
[Frontend] Time Conductor v2 styling
Fixes#933
Changed desktop and mobile RT UI to display
end datetime and hide start;
WIP: mobile styling for main UI of TC;
commit 2124fe01e1
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Wed Jul 20 10:18:42 2016 -0700
[Frontend] Renew support for Time Conductor v1
Fixes#933
Minor fixes to TCv1 for mobile
commit e6d8944547
Author: Henry <akhenry@gmail.com>
Date: Tue Jul 19 20:17:06 2016 -0700
Modified main.js
commit ea1defac28
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Tue Jul 19 18:33:24 2016 -0700
[Frontend] Renew support for Time Conductor v1
Fixes#933
Time Conductors v1 and v2 now build and load their
own isolated CSS files. All previous styling for TCv1
should be re-enabled. Note that Conductor v2 mobile
is not complete yet.
commit 2a19394334
Author: Henry <akhenry@gmail.com>
Date: Tue Jul 19 19:54:52 2016 -0700
Added compatibility layer to support existing plots and historical tables
commit f641edbce7
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Tue Jul 19 18:33:24 2016 -0700
[Frontend] Renew support for Time Conductor v1
Fixes#933
Time Conductors v1 and v2 now build and load their
own isolated CSS files. All previous styling for TCv1
should be re-enabled. Note that Conductor v2 mobile
is not complete yet.
commit 15a608a861
Author: Henry <akhenry@gmail.com>
Date: Mon Jul 18 18:44:29 2016 -0700
Populate format in input fields
commit 334ca64551
Merge: 0af49ef4087b9c
Author: Henry <akhenry@gmail.com>
Date: Mon Jul 18 14:25:02 2016 -0700
Merged open933-frontend
commit 0af49efe06
Author: Henry <akhenry@gmail.com>
Date: Mon Jul 18 08:23:27 2016 -0700
Refactored out modes, time systems, etc.
commit 4087b9cdde
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Fri Jul 15 14:39:29 2016 -0700
[Frontend] Styling for Time Conductor v2
Fixes#933
WIP: Fixed look for Firefox
commit 43a804eef4
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Fri Jul 15 07:54:32 2016 -0700
[Frontend] Styling for Time Conductor v2
Fixes#933
WIP: Added zoom current range indicator;
tweaks to style
commit b3a4f52fe2
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Thu Jul 14 18:30:49 2016 -0700
[Frontend] Styling for Time Conductor v2
Fixes#933
WIP: Adding zoom control with HTML5
input range type; Refactored sass slightly
to move display: inline-block out of mixin
containerBase and into .s-btn.
commit 671e3016d4
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Thu Jul 14 16:40:05 2016 -0700
[Frontend] Styling for Time Conductor v2
Fixes#933
New _animations scss include, moved
scss around.
commit 379828315f
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Thu Jul 14 16:39:27 2016 -0700
[Frontend] Styling for Time Conductor v2
Fixes#933
New _animations scss include, moved
scss around.
commit 8c5538ec4d
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Thu Jul 14 14:58:18 2016 -0700
[Frontend] Styling for Time Conductor v2
Fixes#933
"Sticky" clock anim for LAD mode
commit 2f9fbfef7f
Author: Henry <akhenry@gmail.com>
Date: Wed Jul 13 20:33:47 2016 -0700
More refactoring
commit 2baca659ca
Author: Henry <akhenry@gmail.com>
Date: Wed Jul 13 19:50:58 2016 -0700
Refactoring
commit 8b694ef337
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Wed Jul 13 19:42:51 2016 -0700
[Frontend] Styling for Time Conductor v2
Fixes#933
In-progress: color/size tweaks, fixes for espresso
theme
commit e193e3dfba
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Wed Jul 13 19:16:27 2016 -0700
Merge open933 latest, resolve conflicts
Fixes#933
Fair amount of manual fixing in time-conductor.html
commit 8214c8e895
Merge: 33b222514463d3
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Wed Jul 13 19:16:00 2016 -0700
Merge open933 latest, resolve conflicts
Fixes#933
Fair amount of manual fixing in time-conductor.html
commit 33b2225d10
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Wed Jul 13 18:48:17 2016 -0700
[Frontend] Styling for Time Conductor v2
Fixes#933
In-progress: restructured markup to move
modeModel farther out; animated icon
commit 14463d39a8
Author: Henry <akhenry@gmail.com>
Date: Wed Jul 13 18:17:27 2016 -0700
Added end delta
commit fcfda50e73
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Wed Jul 13 15:00:16 2016 -0700
[Frontend] Styling for Time Conductor v2
Fixes#933
In-progress: color tweaks, bar sizing,
field widths
commit 06af84c161
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Wed Jul 13 13:14:32 2016 -0700
[Frontend] Styling for Time Conductor v2
Fixes#933
In-progress: fixed SVG text color, field
styling for fixed vs. real-time, markup cleanup
commit 5238aa2731
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Wed Jul 13 08:07:59 2016 -0700
[Frontend] Styling for Time Conductor v2
Fixes#933
In-progress; fixed SVG text color
commit fd29473664
Author: Henry <akhenry@gmail.com>
Date: Tue Jul 12 15:02:39 2016 -0700
Support resize
commit 97f3fd516b
Author: Henry <akhenry@gmail.com>
Date: Tue Jul 12 10:14:26 2016 -0700
Changed default duration to fifteen minutes
commit 088416905d
Author: Henry <akhenry@gmail.com>
Date: Tue Jul 12 10:08:08 2016 -0700
Added duration
commit 2056d87453
Merge: 585da3864ce8a2
Author: Henry <akhenry@gmail.com>
Date: Mon Jul 11 14:27:30 2016 -0700
Merge branch 'open933-frontend' into open933
commit 64ce8a2b2a
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Mon Jul 11 14:03:41 2016 -0700
[Frontend] Styling for Time Conductor v2
Fixes#933
Color adjusts, mini super-menu size
and font tweaks, glyphs added to selector,
SVG style fixes in progress
commit 585da38a16
Author: Henry <akhenry@gmail.com>
Date: Mon Jul 11 13:46:46 2016 -0700
Fixed some merge issues
commit bf0e85a94c
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Mon Jul 11 11:35:26 2016 -0700
[Frontend] Styling for Time Conductor v2
Fixes#933
Renamed main class; removed unused <style>
defs
commit 84b7a9dc2f
Merge: 7b7b21d11caa83
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Mon Jul 11 11:29:35 2016 -0700
Merge remote-tracking branch 'origin/open933' into open933-frontend
Fixes#933
Conflicts:
platform/features/conductor-v2/src/TimeConductorController.js
commit 11caa8396a
Author: Henry <akhenry@gmail.com>
Date: Mon Jul 11 11:18:23 2016 -0700
Updated modes
commit 0017b77439
Merge: 5cc81ba788483e
Author: Henry <akhenry@gmail.com>
Date: Mon Jul 11 11:06:22 2016 -0700
Merged markup changes
commit 7b7b21d748
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Mon Jul 11 11:05:47 2016 -0700
[Frontend] Styling of Time Conductor v2
Fixes#933
Tweaks to language; tweak to class name in markup
commit 788483ec13
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Mon Jul 11 10:37:08 2016 -0700
[Frontend] Styling of Time Conductor v2
Fixes#933
Tweaks to language
commit 7b19f91ce6
Merge: 0a0bc554e7b69c
Author: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Date: Mon Jul 11 10:31:14 2016 -0700
[Frontend] Merge latest from open933
Fixes#933
Resolve conflicts in
mode-menu.html, mode-selector.html,
time-conductor.html; apply tweaks, language, etc.
commit 5cc81ba12a
Author: Henry <akhenry@gmail.com>
Date: Mon Jul 11 10:26:34 2016 -0700
[Time Conductor] Added mode class to time conductor
commit 0a0bc55f5f
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Fri Jul 8 17:11:43 2016 -0700
[Frontend] Styling for Time Conductor v2
Fixes#993
In-progress; mode menu names and
descriptors modified, markup cleaned up
commit 4e7b69c4df
Author: Henry <akhenry@gmail.com>
Date: Fri Jul 8 16:57:50 2016 -0700
Enabled fixed and real-time modes
commit cf83040c4b
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Fri Jul 8 16:54:49 2016 -0700
[Frontend] Styling for Time Conductor v2
Fixes#993
In-progress; Create menu refactoring and new
mini Create menu
commit 32f7bc86af
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Fri Jul 8 16:54:13 2016 -0700
[Frontend] Styling for Time Conductor v2
Fixes#993
In-progress; class renaming continued,
cleanups in markup file, in-page styles
ported to scss
commit e230b92946
Author: Henry <akhenry@gmail.com>
Date: Fri Jul 8 15:15:12 2016 -0700
Fixed bug with date selector having to be clicked twice
commit 58ed500ecf
Author: Henry <akhenry@gmail.com>
Date: Thu Jul 7 16:57:03 2016 -0700
Time sync via conductor
commit bca5eb0fdb
Author: Henry <akhenry@gmail.com>
Date: Thu Jul 7 09:47:46 2016 -0700
[Time Conductor] #933 Initial markup
* [Core] Log errors from topic
Log full error (including stack trace) when catching errors
from the topic service. Aids debugging of #1303 (and should
aid in future debugging of any similar issues.)
* [API] Fix identifier usage in handleMutation
To address console errors observed in the context of #1303
* [Views] Listen to mutation
Listen for mutation instead of watching modified timestamp;
more reliable due to recent API changes. Fixes#1303.
* [Views] Update spec for mct-representation
...to reflect changes for #1303
* [Views] Rewrite mct-view
...to make it a simple way to include non-Angular views, without
integrating unnecessarily with other architectural concerns.
Supports restoration of view registration functionality to fix
#1307
* [API] Use identifier as property name
* [API] Add adapter capability
...to simplify adapter layer (allowing new-style objects to be
retrieved via capability.)
* [API] Add AdaptedViewController
* [API] Add template for adapted views
* [API] Add AdaptedViewPolicy
* [API] Wire in view adapter
* [API] Fix adapter capability implementation
* [API] Don't create new scope from mct-view
...to allow use on same element as ng-controller (and because a
new scope just is not necessary.)
Remove 'install' step from gulp develop task, instead
run 'stylesheets' to build stylesheets. Result is much
faster execution of gulp develop as is expected for
a development tool.
Fixes https://github.com/nasa/openmct/issues/1268.
My Items root is now opt-in, and does not need to be enabled for all
deployments. My Items is enabled by default in the development edition.
https://github.com/nasa/openmct/issues/1251
Overload addRoot method to support async root loading. By supplying a
function you can defer loading to later, and by allowing those functions
to return a promise, execution can be asynchronous.
Remove "removeRoot" as the assumption will be that roots are opt in, and
instead of removing a Root, an application developer should never configure
it in the first place.
Fixes https://github.com/nasa/openmct/issues/1251
New test suite for the notification service covering common use cases. Fixed the bug where autoDismiss would be set wrong for info notifications; also treating info notifications appropriately now.
In the spec: NotificationService knows about concepts like "info", "alert" and "error" only, having a plain info notification model called successModel doesn't help much and may be confusing at times (makes you think it's something the service treats separately).
Adds miscellaneous platform updates to include templates
via the RequireJS text plugin; to support modification of
asset paths; and to support priority order for gestures.
Supports integration of new API, #1124.
Issue #1184. This allows for a generically sized text area in forms. I am
anticipating some potential feedback on this given the approach and the sizing
I chose may or may not be ideal for your requirements.
The images were being cutoff due to the "top" attribute of .gl-plot
not changing when the buttons were hidden. The buttons are now
hidden by CSS class rather than ng-show, which makes updating the
.gl-plot top attribute easier.
I would prefer this be passed in via the bundle, but it continues to fail
saying "Unknown Provider". I have chosen to require them into the module
the old-fashioned way, then allow an injectible dependency to override.
It's worth noting that I changed the .gl-plot position from relative to absolute
in an attempt to match the results to a similar requirement in MCT Table. Setting
to absolute caused no regressions as far as I could tell, but I have not attempted
browsers outside of Chrome.
Fixes#1161
New .s-selectable, .s-hover, .s-selected and .s-moveable classes
New supporting color constants
Markup in layouts, fixed position/panels updated
Removed old commented code
Extends PlotController by adding three new scoped methods:
exportPDF, exportPNG, exportJPG.
All three methods use basically the same steps. The HTML node
of the plot is passed through html2canvas which generates a canvas.
From the canvas we export a blob, PNG, or JPG then save the file.
🐙
# Author Checklist:
Changes appear to address issue? Y
Appropriate unit tests included? N/A - No code changes
Code style and in-line documentation are appropriate? N/A
Commit messages meet standards? Y
Addresses issue #1158
Passes query parameters on to proxyUrl proxied URL
remove the url parameter before passing
Naming convention for variables
Re-order code to reuse variable
Clicking `Long-duration testing` was showing the right doc but wrong section due to typo in `procedures.md#long-duration-testng`. Fixed it, so now clicking `Long-duration testing` will take us to the right section.
Changed test to ensure checkAll and it's appropriate filter string are
set whenever checkAll is changed.
Removed redundant line checking for a filter string of 'NONE' as this
is no longer a possibility.
Changed test to work properly with #1117 fix.
Checks if checkAll gets checked when no options are checked.
Checks if changing checkAll updates the filter string to ''
Upon deselecting every filter, the search returns nothing. This serves
no useful purpose as discussed in #1117. Now deselecting every filter
automatically selects 'All'.
...as this will trigger a refresh of the mct-representation for
the tree, which will in turn create a new mct-tree instance,
resulting in any expanded/collapsed state being lost.
Fixes#1008.
TreeView's observers will be called when the selected domain object
changes, which can occur for one of two reasons:
1. Because a new value was set externally, from mct-tree.
2. Because a new value was selected, by the user.
In the latter case a $apply is needed, but in the former it is not
(and causes an error.) However, when that case occurs, the value in
scope will be up to date already (it was a watch that triggered the
call to treeView.value) so no assignment or $apply is necessary.
Fixes#1114.
...to account for changes to separate out transaction management,
including removal of specs made obsolete (as tested behavior has
been moved to TransactionManager or was already redundant to
behavior from the undecorated PersistenceCapability)
commit 3f199a9f06
Merge: 27fe4ed736cba7
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Mon Jun 27 09:04:40 2016 -0700
Merge remote-tracking branch 'origin/master' into clear-transactions-1046
Conflicts:
platform/commonUI/edit/src/actions/SaveAsAction.js
commit 27fe4edb30
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Wed Jun 22 15:04:06 2016 -0700
[Edit] Mark restartTransaction as private API
commit 21d1938a0f
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Wed Jun 22 15:03:17 2016 -0700
[Edit] Clarify JSDoc
commit 06a83f9fa9
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Wed Jun 22 15:01:35 2016 -0700
[Edit] Update failing spec
commit 1f525160e0
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Wed Jun 22 14:52:43 2016 -0700
[Edit] Refer to correct variable
...when clearing transactions after a restartTransaction
commit b60e94bce4
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Wed Jun 22 14:38:54 2016 -0700
[Edit] Clear transactions on Save As
...such that only persistence calls associated with the
saved clones are actually issued. Fixes#1046.
Show a blocking dialog while the save action is being performed.
Prevents users from pressing save a second time or performing
further actions while a save is in progress.
Fixes https://github.jpl.nasa.gov/MissionControl/vista/issues/362
Remove domain objects from the active transaction when they
are refreshed, and use this from the SaveAsAction to prevent
saving unintended changes. Fixes#1046
Set the min height for the plot element based on user feedback for
minimum plot size that they find useful. Plot ticks may overlap
but that is expected to be fixed in a future release.
Fixes https://github.com/nasa/openmct/issues/1048
Reposition scroll bar in Timeline with RAF instead of timeout;
this ensures that scroll bar is positioned after the current
digest (updating the width) but before the results are rendered
(avoiding flicker.) Fixes#997
Whenever timeline zoom controller sets scroll, check to see if
there may be a width violation that causes scroll to be reset,
and retry on a timeout if so. Fixes#936.
fixes#709
- When going from browse to edit mode, the wrapper
around the object being edited will now transition in
from its edges, and the edit controls toolbar will
animate its height;
- There is no transition applied for going from edit
to browse; to do this we'd need to mod the JS on
exiting to look for the end of an animation event;
- Tested in Chrome, Safari and Firefox;
- May not be smooth with very complex objects
like Layouts with a large number of components;
- Added transitional animations to .l-object-wrapper
and .l-edit-controls;
- New 'animTo' mixin added to _effects.scss;
...from TimelineController. Will replace with a more straightforward
call to the zoom controller that uses the exposed end time instead,
to address #981.
fixes#973
- Done;
- Styling for Export button and tabular view
area in layout frame context;
- Export button in frame context now
hidden until user hovers over tabular
view area in frame, includes animated
transition;
- Normalized line-height on button and
menu elements in frame context;
- Layout/markup/SASS for historical and
RT tabular view modified;
- Converted imagery.html layout
to use flexbox;
fixes#973
- In progress:
- Added new download symbol to symbols font;
- Added export symbol to export button;
- Layout/markup/SASS for historical tabular
view modified;
open #965
- CSS adjusted to handle min-width of 2px and better
approach to ellipsizing text;
- Angular ng-class added to hide icon and title if
width less than a value;
- Rounded corners on bars removed;
Revert "[Timeline] Change ordering in mct-representation"
This reverts commit 20ecf168f2.
These changes introduced a regression due to ordering
expected by time conductor, #957
Run the full gulp verify task for testing on CircleCI, to handle
unit tests as well as code style checks and linting (and other
verification steps that may be added in the future.)
Add JSHint rules to complement allowing multiple var statements,
https://github.com/nasa/openmct/issues/142#issuecomment-212187972
[Code Style] Require one decl per var
[Code Style] Don't require separate var decls
...but allow them (for compatibility with existing code style)
[Code Style] Allow var decl after start of scope
[Code Style] Enforce codestyle during verify task
open #889
open #298
Fixes for mobile;
Moved popup z-index def into sass;
Datetime picker compressed for
better fit in mobile phone;
Removed hours selector from datetime
picker to enable better fit in mobile;
open #909
- Changed markup to not use plot .tick-label class;
- Changed CSS accordingly;
- Fixed alignment (clipped bottom value) by
refactoring to use flex-box layout for tick labels;
open #889
IN PROGRESS
- Smaller font used on range value;
- More space allocated to left and right
for slider range values;
- Style tweaks to slider look;
- Layout and style of datetime inputs
fixed;
- Input error colors fixed, moved to
theme constants;
Use circle's heroku integration to deploy to ensure that we deploy
a full clone of the repo and not a shallow clone, prevents build
failure in master branch.
Remove duplicate ClickAwayController implementation that was obscuring actual
implementation. Debounce clickaway action in case toggle is invoked in a
click handler.
Resolves https://github.com/nasa/openmct/issues/888
Mutation now triggers persistence; this means that some legacy code
does or may issue redundant calls to persistence after mutating.
To avoid issuing redundant calls all the way down to the
persistenceService, bail out of persist calls early if there are
no unsaved changes to persist.
In future, object providers will support other methods to enable other operations
with persistence stores, such as creating, updating, and deleting objects.
## Composition Providers
The _composition_ of a domain object is the list of objects it contains, as shown
(for example) in the tree for browsing. Open MCT provides a
[default solution](#default-composition-provider) for composition, but there
may be cases where you want to provide the composition of a certain object
(or type of object) dynamically.
### Adding Composition Providers
You may want to populate a hierarchy under a custom root-level object based on
the contents of a telemetry dictionary. To do this, you can add a new
Composition Provider:
```javascript
openmct.composition.addProvider({
appliesTo:function(domainObject){
returndomainObject.type==='my-type';
},
load:function(domainObject){
returnPromise.resolve(myDomainObjects);
}
});
```
The `addProvider` function accepts a Composition Provider object as its sole
argument. A Composition Provider is a javascript object exposing two functions:
*`appliesTo`: A `function` that accepts a `domainObject` argument, and returns
a `boolean` value indicating whether this composition provider applies to the
given object.
*`load`: A `function` that accepts a `domainObject` as an argument, and returns
a `Promise` that resolves with an array of [Identifier](#domain-objects-and-identifiers).
These identifiers will be used to fetch Domain Objects from an [Object Provider](#object-provider)
### Default Composition Provider
The default composition provider applies to any domain object with a `composition`
property. The value of `composition` should be an array of identifiers, e.g.:
```javascript
vardomainObject={
name:"My Object",
type:'folder',
composition:[
{
id:'412229c3-922c-444b-8624-736d85516247',
namespace:'foo'
},
{
key:'d6e0ce02-5b85-4e55-8006-a8a505b64c75',
namespace:'foo'
}
]
};
```
## Telemetry API
The Open MCT telemetry API provides two main sets of interfaces-- one for integrating telemetry data into Open MCT, and another for developing Open MCT visualization plugins utilizing telemetry API.
The APIs for visualization plugins are still a work in progress and docs may change at any time. However, the APIs for integrating telemetry metadata into Open MCT are stable and documentation is included below.
### Integrating Telemetry Sources
There are two main tasks for integrating telemetry sources-- describing telemetry objects with relevant metadata, and then providing telemetry data for those objects. You'll use an [Object Provider](#object-providers) to provide objects with the necessary [Telemetry Metadata](#telemetry-metadata), and then register a [Telemetry Provider](#telemetry-providers) to retrieve telemetry data for those objects.
For a step-by-step guide to building a telemetry adapter, please see the
A telemetry object is a domain object with a telemetry property. To take an example from the tutorial, here is the telemetry object for the "fuel" measurement of the spacecraft:
```json
{
"identifier":{
"namespace":"example.taxonomy",
"key":"prop.fuel"
},
"name":"Fuel",
"type":"example.telemetry",
"telemetry":{
"values":[
{
"key":"value",
"name":"Value",
"units":"kilograms",
"format":"float",
"min":0,
"max":100,
"hints":{
"range":1
}
},
{
"key":"utc",
"source":"timestamp",
"name":"Timestamp",
"format":"utc",
"hints":{
"domain":1
}
}
]
}
}
```
The most important part of the telemetry metadata is the `values` property-- this describes the attributes of telemetry datums (objects) that a telemetry provider returns. These descriptions must be provided for telemetry views to work properly.
##### Values
`telemetry.values` is an array of value description objects, which have the following fields:
attribute | type | flags | notes
--- | --- | --- | ---
`key` | string | required | unique identifier for this field.
`hints` | object | required | Hints allow views to intelligently select relevant attributes for display, and are required for most views to function. See section on "Value Hints" below.
`name` | string | optional | a human readible label for this field. If omitted, defaults to `key`.
`source` | string | optional | identifies the property of a datum where this value is stored. If omitted, defaults to `key`.
`format` | string | optional | a specific format identifier, mapping to a formatter. If omitted, uses a default formatter. For enumerations, use `enum`. For timestamps, use `utc` if you are using utc dates, otherwise use a key mapping to your custom date format.
`units` | string | optional | the units of this value, e.g. `km`, `seconds`, `parsecs`
`min` | number | optional | the minimum possible value of this measurement. Will be used by plots, gauges, etc to automatically set a min value.
`max` | number | optional | the maximum possible value of this measurement. Will be used by plots, gauges, etc to automatically set a max value.
`enumerations` | array | optional | for objects where `format` is `"enum"`, this array tracks all possible enumerations of the value. Each entry in this array is an object, with a `value` property that is the numerical value of the enumeration, and a `string` property that is the text value of the enumeration. ex: `{"value": 0, "string": "OFF"}`. If you use an enumerations array, `min` and `max` will be set automatically for you.
###### Value Hints
Each telemetry value description has an object defining hints. Keys in this this object represent the hint itself, and the value represents the weight of that hint. A lower weight means the hint has a higher priority. For example, multiple values could be hinted for use as the y axis of a plot (raw, engineering), but the highest priority would be the default choice. Likewise, a table will use hints to determine the default order of columns.
Known hints:
*`domain`: Indicates that the value represents the "input" of a datum. Values with a `domain` hint will be used for the x-axis of a plot, and tables will render columns for these values first.
*`range`: Indicates that the value is the "output" of a datum. Values with a `range` hint will be used as the y-axis on a plot, and tables will render columns for these values after the `domain` values.
*`image`: Indicates that the value may be interpreted as the URL to an image file, in which case appropriate views will be made available.
##### The Time Conductor and Telemetry
Open MCT provides a number of ways to pivot through data and link data via time. The Time Conductor helps synchronize multiple views around the same time.
In order for the time conductor to work, there will always be an active "time system". All telemetry metadata *must* have a telemetry value with a `key` that matches the `key` of the active time system. You can use the `source` attribute on the value metadata to remap this to a different field in the telemetry datum-- especially useful if you are working with disparate datasources that have different field mappings.
#### Telemetry Providers
Telemetry providers are responsible for providing historical and real time telemetry data for telemetry objects. Each telemetry provider determines which objects it can provide telemetry for, and then must implement methods to provide telemetry for those objects.
A telemetry provider is a javascript object with up to four methods:
*`supportsSubscribe(domainObject, callback, options)` optional. Must be implemented to provide realtime telemetry. Should return `true` if the provider supports subscriptions for the given domain object (and request options).
*`subscribe(domainObject, callback, options)` required if `supportsSubscribe` is implemented. Establish a subscription for realtime data for the given domain object. Should invoke `callback` with a single telemetry datum every time data is received. Must return an unsubscribe function. Multiple views can subscribe to the same telemetry object, so it should always return a new unsubscribe function.
*`supportsRequest(domainObject, options)` optional. Must be implemented to provide historical telemetry. Should return `true` if the provider supports historical requests for the given domain object.
*`request(domainObject, options)` required if `supportsRequest` is implemented. Must return a promise for an array of telemetry datums that fulfills the request. The `options` argument will include a `start`, `end`, and `domain` attribute representing the query bounds. For more request properties, see Request Properties below.
Telemetry providers are registered by calling `openmct.telemetry.addProvider(provider)`, e.g.
Telemetry requests support time bounded queries. A call to a _Telemetry Provider_'s `request` function will include an `options` argument. These are simply javascript objects with attributes for the request parameters. An example of a telemetry request object with a start and end time is included below:
```javascript
{
start:1487981997240,
end:1487982897240,
domain:'utc'
}
```
#### Telemetry Formats
Telemetry format objects define how to interpret and display telemetry data.
They have a simple structure:
*`key`: A `string` that uniquely identifies this formatter.
*`format`: A `function` that takes a raw telemetry value, and returns a
human-readable `string` representation of that value. It has one required
argument, and three optional arguments that provide context and can be used
for returning scaled representations of a value. An example of this is
representing time values in a scale such as the time conductor scale. There
are multiple ways of representing a point in time, and by providing a minimum
scale value, maximum scale value, and a count, it's possible to provide more
useful representations of time given the provided limitations.
*`value`: The raw telemetry value in its native type.
*`minValue`: An __optional__ argument specifying the minimum displayed
value.
*`maxValue`: An __optional__ argument specifying the maximum displayed
value.
*`count`: An __optional__ argument specifying the number of displayed
values.
*`parse`: A `function` that takes a `string` representation of a telemetry
value, and returns the value in its native type. **Note** parse might receive an already-parsed value. This function should be idempotent.
*`validate`: A `function` that takes a `string` representation of a telemetry
value, and returns a `boolean` value indicating whether the provided string
can be parsed.
##### Registering Formats
Formats are registered with the Telemetry API using the `addFormat` function. eg.
``` javascript
openmct.telemetry.addFormat({
key: 'number-to-string',
format: function (number) {
return number + '';
},
parse: function (text) {
return Number(text);
},
validate: function (text) {
return !isNaN(text);
}
});
```
#### Telemetry Data
A single telemetry point is considered a Datum, and is represented by a standard
javascript object. Realtime subscriptions (obtained via __subscribe__) will
invoke the supplied callback once for each telemetry datum recieved. Telemetry
requests (obtained via __request__) will return a promise for an array of
telemetry datums.
##### Telemetry Datums
A telemetry datum is a simple javascript object, e.g.:
```json
{
"timestamp": 1491267051538,
"value": 77,
"id": "prop.fuel"
}
```
The key-value pairs of this object are described by the telemetry metadata of
a domain object, as discussed in the [Telemetry Metadata](#telemetry-metadata)
section.
## Time API
Open MCT provides API for managing the temporal state of the application.
Central to this is the concept of "time bounds". Views in Open MCT will
typically show telemetry data for some prescribed date range, and the Time API
provides a way to centrally manage these bounds.
The Time API exposes a number of methods for querying and setting the temporal
state of the application, and emits events to inform listeners when the state changes.
Because the data displayed tends to be time domain data, Open MCT must always
have at least one time system installed and activated. When you download Open
MCT, it will be pre-configured to use the UTC time system, which is installed and activated, along with other default plugins, in `index.html`. Installing and activating a time system is simple, and is covered
[in the next section](#defining-and-registering-time-systems).
### Time Systems and Bounds
#### Defining and Registering Time Systems
The time bounds of an Open MCT application are defined as numbers, and a Time
System gives meaning and context to these numbers so that they can be correctly
interpreted. Time Systems are javscript objects that provide some information
about the current time reference frame. An example of defining and registering
a new time system is given below:
``` javascript
openmct.time.addTimeSystem({
key: 'utc',
name: 'UTC Time',
cssClass = 'icon-clock',
timeFormat = 'utc',
durationFormat = 'duration',
isUTCBased = true
});
```
The example above defines a new utc based time system. In fact, this time system
is configured and activated by default from `index.html` in the default
installation of Open MCT if you download the source from GitHub. Some details of
each of the required properties is provided below.
* `key`: A `string` that uniquely identifies this time system.
* `name`: A `string` providing a brief human readable label. If the [Time Conductor](#the-time-conductor)
plugin is enabled, this name will identify the time system in a dropdown menu.
* `cssClass`: A class name `string` that will be applied to the time system when
it appears in the UI. This will be used to represent the time system with an icon.
There are a number of built-in icon classes [available in Open MCT](https://github.com/nasa/openmct/blob/master/platform/commonUI/general/res/sass/_glyphs.scss),
or a custom class can be used here.
* `timeFormat`: A `string` corresponding to the key of a registered
[telemetry time format](#telemetry-formats). The format will be used for
displaying discrete timestamps from telemetry streams when this time system is
activated. If the [UTCTimeSystem](#included-plugins) is enabled, then the `utc`
format can be used if this is a utc-based time system
* `durationFormat`: A `string` corresponding to the key of a registered
[telemetry time format](#telemetry-formats). The format will be used for
displaying time ranges, for example `00:15:00` might be used to represent a time
period of fifteen minutes. These are used by the Time Conductor plugin to specify
relative time offsets. If the [UTCTimeSystem](#included-plugins) is enabled,
then the `duration` format can be used if this is a utc-based time system
* `isUTCBased`: A `boolean` that defines whether this time system represents
numbers in UTC terrestrial time.
#### Getting and Setting the Active Time System
Once registered, a time system can be activated by calling `timeSystem` with
the timeSystem `key` or an instance of the time system. If you are not using a
[clock](#clocks), you must also specify valid [bounds](#time-bounds) for the
timeSystem.
```javascript
openmct.time.timeSystem('utc', bounds);
```
A time system can be immediately activated after registration:
```javascript
openmct.time.addTimeSystem(utcTimeSystem);
openmct.time.timeSystem(utcTimeSystem, bounds);
```
Setting the active time system will trigger a [`'timeSystem'`](#time-events)
event. If you supplied bounds, a [`'bounds'`](#time-events) event will be triggered afterwards with your newly supplied bounds.
### Time Bounds
The TimeAPI provides a getter/setter for querying and setting time bounds. Time
bounds are simply an object with a `start` and an end `end` attribute.
* `start`: A `number` representing a moment in time in the active [Time System](#defining-and-registering-time-systems).
This will be used as the beginning of the time period displayed by time-responsive
telemetry views.
* `end`: A `number` representing a moment in time in the active [Time System](#defining-and-registering-time-systems).
This will be used as the end of the time period displayed by time-responsive
telemetry views.
If invoked with bounds, it will set the new time bounds system-wide. If invoked
without any parameters, it will return the current application-wide time bounds.
``` javascript
const ONE_HOUR = 60 * 60 * 1000;
let now = Date.now();
openmct.time.bounds({start: now - ONE_HOUR, now);
```
To respond to bounds change events, listen for the [`'bounds'`](#time-events)
event.
## Clocks
The Time API can be set to follow a clock source which will cause the bounds
to be updated automatically whenever the clock source "ticks". A clock is simply
an object that supports registration of listeners and periodically invokes its
listeners with a number. Open MCT supports registration of new clock sources that
tick on almost anything. A tick occurs when the clock invokes callback functions
registered by its listeners with a new time value.
An example of a clock source is the [LocalClock](https://github.com/nasa/openmct/blob/master/src/plugins/utcTimeSystem/LocalClock.js)
which emits the current time in UTC every 100ms. Clocks can tick on anything. For
example, a clock could be defined to provide the timestamp of any new data
received via a telemetry subscription. This would have the effect of advancing
the bounds of views automatically whenever data is received. A clock could also
be defined to tick on some remote timing source.
The values provided by clocks are simple `number`s, which are interpreted in the
context of the active [Time System](#defining-and-registering-time-systems).
### Defining and registering clocks
A clock is an object that defines certain required metadata and functions:
* `key`: A `string` uniquely identifying this clock. This can be used later to
reference the clock in places such as the [Time Conductor configuration](#time-conductor-configuration)
* `cssClass`: A `string` identifying a CSS class to apply to this clock when it's
displayed in the UI. This will be used to represent the time system with an icon.
There are a number of built-in icon classes [available in Open MCT](https://github.com/nasa/openmct/blob/master/platform/commonUI/general/res/sass/_glyphs.scss),
or a custom class can be used here.
* `name`: A `string` providing a human-readable identifier for the clock source.
This will be displayed in the clock selector menu in the Time Conductor UI
component, if active.
* `description`: An __optional__ `string` providing a longer description of the
clock. The description will be visible in the clock selection menu in the Time
Conductor plugin.
* `on`: A `function` supporting registration of a new callback that will be
invoked when the clock next ticks. It will be invoked with two arguments:
* `eventName`: A `string` specifying the event to listen on. For now, clocks
support one event - `tick`.
* `callback`: A `function` that will be invoked when this clock ticks. The
function must be invoked with one parameter - a `number` representing a valid
time in the current time system.
* `off`: A `function` that allows deregistration of a tick listener. It accepts
the same arguments as `on`.
* `currentValue`: A `function` that returns a `number` representing a point in
time in the active time system. It should be the last value provided by a tick,
or some default value if no ticking has yet occurred.
A new clock can be registered using the `addClock` function exposed by the Time
API:
```javascript
var someClock = {
key: 'someClock',
cssClass: 'icon-clock',
name: 'Some clock',
description: "Presumably does something useful",
on: function (event, callback) {
// Some function that registers listeners, and updates them on a tick
},
off: function (event, callback) {
// Some function that unregisters listeners.
},
currentValue: function () {
// A function that returns the last ticked value for the clock
}
}
openmct.time.addClock(someClock);
```
An example clock implementation is provided in the form of the [LocalClock](https://github.com/nasa/openmct/blob/master/src/plugins/utcTimeSystem/LocalClock.js)
#### Getting and setting active clock
Once registered a clock can be activated by calling the `clock` function on the
Time API passing in the key or instance of a registered clock. Only one clock
may be active at once, so activating a clock will deactivate any currently
active clock. [`clockOffsets`](#clock-offsets) must be specified when changing a clock.
Setting the clock triggers a [`'clock'`](#time-events) event, followed by a [`'clockOffsets'`](#time-events) event, and then a [`'bounds'`](#time-events) event as the offsets are applied to the clock's currentValue().
```
openmct.time.clock(someClock, clockOffsets);
```
Upon being activated, the time API will listen for tick events on the clock by calling `clock.on`.
The currently active clock (if any) can be retrieved by calling the same
function without any arguments.
#### Stopping an active clock
The `stopClock` method can be used to stop an active clock, and to clear it. It
will stop the clock from ticking, and set the active clock to `undefined`.
``` javascript
openmct.time.stopClock();
```
#### Clock Offsets
When a clock is active, the time bounds of the application will be updated
automatically each time the clock "ticks". The bounds are calculated based on
the current value provided by the active clock (via its `tick` event, or its
`currentValue()` method).
Unlike bounds, which represent absolute time values, clock offsets represent
relative time spans. Offsets are defined as an object with two properties:
* `start`: A `number` that must be < 0 and which is used to calculate the start
bounds on each clock tick. The start offset will be calculated relative to the
value provided by a clock's tick callback, or its `currentValue()` function.
* `end`: A `number` that must be >= 0 and which is used to calculate the end
bounds on each clock tick.
The `clockOffsets` function can be used to get or set clock offsets. For example,
to show the last fifteen minutes in a ms-based time system:
```javascript
var FIFTEEN_MINUTES = 15 * 60 * 1000;
openmct.time.clockOffsets({
start: -FIFTEEN_MINUTES,
end: 0
})
```
__Note:__ Setting the clock offsets will trigger an immediate bounds change, as
new bounds will be calculated based on the `currentValue()` of the active clock.
Clock offsets are only relevant when a clock source is active.
## Time Events
The Time API is a standard event emitter; you can register callbacks for events using the `on` method and remove callbacks for events with the `off` method.
For example:
``` javascript
openmct.time.on('bounds', function callback (newBounds, tick) {
// Do something with new bounds
});
```
#### List of Time Events
The events emitted by the Time API are:
* `bounds`: emitted whenever the bounds change. The callback will be invoked
with two arguments:
* `bounds`: A [bounds](#getting-and-setting-bounds) bounds object
representing a new time period bound by the specified start and send times.
* `tick`: A `boolean` indicating whether or not this bounds change is due to
a "tick" from a [clock source](#clocks). This information can be useful
when determining a strategy for fetching telemetry data in response to a
bounds change event. For example, if the bounds change was automatic, and
is due to a tick then it's unlikely that you would need to perform a
historical data query. It should be sufficient to just show any new
telemetry received via subscription since the last tick, and optionally to
discard any older data that now falls outside of the currently set bounds.
If `tick` is false,then the bounds change was not due to an automatic tick,
and a query for historical data may be necessary, depending on your data
caching strategy, and how significantly the start bound has changed.
* `timeSystem`: emitted whenever the active time system changes. The callback will be invoked with a single argument:
* `timeSystem`: The newly active [time system](#defining-and-registering-time-systems).
* `clock`: emitted whenever the clock changes. The callback will be invoked
with a single argument:
* `clock`: The newly active [clock](#clocks), or `undefined` if an active
clock has been deactivated.
* `clockOffsets`: emitted whenever the active clock offsets change. The
callback will be invoked with a single argument:
* `clockOffsets`: The new [clock offsets](#clock-offsets).
## The Time Conductor
The Time Conductor provides a user interface for managing time bounds in Open
MCT. It allows a user to select from configured time systems and clocks, and to set bounds and clock offsets.
If activated, the time conductor must be provided with configuration options,
detailed below.
#### Time Conductor Configuration
The time conductor is configured by specifying the options that will be
available to the user from the menus in the time conductor. These will determine
the clocks available from the conductor, the time systems available for each
clock, and some default bounds and clock offsets for each combination of clock
and time system. By default, the conductor always supports a `fixed` mode where
no clock is active. To specify configuration for fixed mode, simply leave out a
`clock` attribute in the configuration entry object.
Configuration is provided as an `array` of menu options. Each entry of the
array is an object with some properties specifying configuration. The configuration
options specified are slightly different depending on whether or not it is for
an active clock mode.
__Configuration for Fixed Time Mode (no active clock)__
* `timeSystem`: A `string`, the key for the time system that this configuration
relates to.
* `bounds`: A [`Time Bounds`](#time-bounds) object. These bounds will be applied
when the user selects the time system specified in the previous `timeSystem`
property.
* `zoomOutLimit`: An __optional__ `number` specifying the longest period of time
that can be represented by the conductor when zooming. If a `zoomOutLimit` is
provided, then a `zoomInLimit` must also be provided. If provided, the zoom
slider will automatically become available in the Time Conductor UI.
* `zoomInLimit`: An __optional__ `number` specifying the shortest period of time
that can be represented by the conductor when zooming. If a `zoomInLimit` is
provided, then a `zoomOutLimit` must also be provided. If provided, the zoom
slider will automatically become available in the Time Conductor UI.
__Configuration for Active Clock__
* `clock`: A `string`, the `key` of the clock that this configuration applies to.
* `timeSystem`: A `string`, the key for the time system that this configuration
relates to. Separate configuration must be provided for each time system that you
wish to be available to users when they select the specified clock.
* `clockOffsets`: A [`clockOffsets`](#clock-offsets) object that will be
automatically applied when the combination of clock and time system specified in
this configuration is selected from the UI.
#### Example conductor configuration
An example time conductor configuration is provided below. It sets up some
default options for the [UTCTimeSystem](https://github.com/nasa/openmct/blob/master/src/plugins/utcTimeSystem/UTCTimeSystem.js)
and [LocalTimeSystem](https://github.com/nasa/openmct/blob/master/src/plugins/localTimeSystem/LocalTimeSystem.js),
in both fixed mode, and for the [LocalClock](https://github.com/nasa/openmct/blob/master/src/plugins/utcTimeSystem/LocalClock.js)
source. In this configutation, the local clock supports both the UTCTimeSystem
and LocalTimeSystem. Configuration for fixed bounds mode is specified by omitting
a clock key.
``` javascript
const ONE_YEAR = 365 * 24 * 60 * 60 * 1000;
const ONE_MINUTE = 60 * 1000;
openmct.install(openmct.plugins.Conductor({
menuOptions: [
// 'Fixed' bounds mode configuation for the UTCTimeSystem
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, Copyright (c) 2014-2017, 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.
Open MCT 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 as follows.
Open MCT includes source code licensed under additional open source licenses as follows.
## Software Components Licenses
@ -560,3 +560,132 @@ The above copyright notice and this permission notice shall be included in all c
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
---
### Almond
* Link: https://github.com/requirejs/almond
* Version: 0.3.3
* Author: jQuery Foundation
* Description: Lightweight RequireJS replacement for builds
#### License
Copyright jQuery Foundation and other contributors, https://jquery.org/
This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/requirejs/almond
The following license applies to all parts of this software except as
documented below:
====
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
====
Copyright and related rights for sample code are waived via CC0. Sample
code is defined as all source code displayed within the prose of the
# Open MCT [](http://www.apache.org/licenses/LICENSE-2.0)
Open MCT Web is a web-based platform for mission operations user interface
software.
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](https://nasa.github.io/openmct/) and [Getting Started Guide](https://nasa.github.io/openmct/getting-started/)
## See Open MCT in Action
Try Open MCT now with our [live demo](https://openmct-demo.herokuapp.com/).
A simpler, [easier-to-use API](https://nasa.github.io/openmct/docs/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](https://git-scm.com/downloads) and [Node.js](https://nodejs.org/) installed, then follow the directions below. Need additional information? Check out the [Getting Started](https://nasa.github.io/openmct/getting-started/) page on our website.
(These instructions assume you are installing as a non-root user; developers have [reported issues](https://github.com/nasa/openmct/issues/1151) running these steps with root privileges.)
1. Clone the source code
`git clone https://github.com/nasa/openmct.git`
2. Install development dependencies
`npm install`
3. 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/](http://localhost:8080/)
## Documentation
Documentation is available on the [Open MCT website](https://nasa.github.io/openmct/documentation/). The documentation can also be built locally.
### Examples
The clearest examples for developing Open MCT plugins are in the
[tutorials](https://github.com/nasa/openmct-tutorial) provided in
our documentation.
For a practical example of a telemetry adapter, see David Hudson's
[Kerbal Space Program plugin](https://github.com/hudsonfoo/kerbal-openmct),
which allows [Kerbal Space Program](https://kerbalspaceprogram.com) 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](https://github.com/nasa/openmct/issues/846), 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](https://www.npmjs.com/)-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](http://cairographics.org/)
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`](http://npmjs.com/)
and [`gulp`](http://gulpjs.com/).
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` and `platform` directories.
* An `index.html` that runs Open MCT in its default configuration.
Additional `gulp` tasks are defined in [the gulpfile](gulpfile.js).
## 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
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`,
@ -16,7 +113,7 @@ 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
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.
@ -40,56 +137,9 @@ naming convention is otherwise the same.)
When `npm test` is run, test results will be written as HTML to
`target/tests`. Code coverage information is written to `target/coverage`.
### Functional Testing
The tests described above are all at the unit-level; an additional
test suite using [Protractor](https://angular.github.io/protractor/)
is 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 is built using [`npm`](http://npmjs.com/)
and [`gulp`](http://gulpjs.com/).
To build:
`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 Web
instance (e.g. by starting an HTTP server in that directory), including:
* A `main.js` file containing Open MCT Web source code.
* Various assets in the `example` and `platform` directories.
* An `index.html` that runs Open MCT Web in its default configuration.
Additional `gulp` tasks are defined in [the gulpfile](gulpfile.js).
### Building Documentation
Open MCT Web's documentation is generated by an
[npm](https://www.npmjs.com/)-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](http://cairographics.org/)
installed and then run the following commands:
*`npm install`
*`npm install canvas nomnoml`
*`npm run docs`
Documentation will be generated in `target/docs`.
# Glossary
Certain terms are used throughout Open MCT Web with consistent meanings
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
@ -112,7 +162,7 @@ documentation, may presume an understanding of these terms.
(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
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
@ -133,6 +183,6 @@ documentation, may presume an understanding of these terms.
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
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.)
- [Get rid of "extension category" concept.](#get-rid-of-extension-category-concept)
- [Reduce number and depth of extension points](#reduce-number-and-depth-of-extension-points)
- [Composite services should not be the default](#composite-services-should-not-be-the-default)
@ -30,11 +30,11 @@
# Reducing interface depth (the bundle.json version)
## Imperitive component registries
## Imperative component registries
Transition component registries to javascript, get rid of bundle.json and bundles.json. Prescribe a method for application configuration, but allow flexibility in how application configuration is defined.
Register components in an imperitive fashion, see angularApp.factory, angularApp.controller, etc. Alternatively, implement our own application object with new registries and it's own form of registering objects.
Register components in an imperative fashion, see angularApp.factory, angularApp.controller, etc. Alternatively, implement our own application object with new registries and it's own form of registering objects.
## Get rid of "extension category" concept.
@ -99,7 +99,7 @@ To reduce interface depth, we can replace our own provider and registry patterns
## More angular: for all services
Increasing our commitment to angular would mean using more of the angular factorys, services, etc, and less of our home grown tools. We'd implement our services and extension points as angular providers, and make them configurable via app.config.
Increasing our commitment to angular would mean using more of the angular factories, services, etc, and less of our home grown tools. We'd implement our services and extension points as angular providers, and make them configurable via app.config.
As an example, registering a specific type of model provider in angular would look like:
@ -126,9 +126,9 @@ Allow developers to use whatever module loading system they'd like to use, while
## Use gulp or grunt for standard tooling
Using gulp or grunt as a task runner would bring us in line with standard web developer workflows and help standardize rendering, deployment, and packaging. Additional tools can be added to the workflow at low cost, simplifying the setup of developer environments.
Using gulp or grunt as a task runner would bring us in line with standard web developer workflows and help standardize rendering, deployment, and packaging. Additional tools can be added to the workflow at low cost, simplifying the setup of developer environments.
Gulp and grunt provide useful developer tooling such as live reload, automatic scss/less/etc compiliation, and ease of extensibility for standard production build processes. They're key in decoupling code.
Gulp and grunt provide useful developer tooling such as live reload, automatic scss/less/etc compilation, and ease of extensibility for standard production build processes. They're key in decoupling code.
To create a fork to begin working on a new application using Open MCT Web:
To create a fork to begin working on a new application using Open MCT:
cd <localrepodirectory>
git checkout open-master
git checkout -b <newbranchname>
As a convention used internally, applications built using Open MCT Web have
As a convention used internally, applications built using Open MCT have
master branch names with an identifying prefix. For instance, if building an
application called 'Foo', the last statement above would look like:
git checkout -b foo-master
This convention is not enforced or understood by Open MCT Web in any way; it is
This convention is not enforced or understood by Open MCT in any way; it is
mentioned here as a more general recommendation.
# Overview
Open MCT Web is implemented as a framework component which manages a set of
Open MCT is implemented as a framework component which manages a set of
other components. These components, called _bundles_, act as containers to group
sets of related functionality; individual units of functionality are expressed
within these bundles as _extensions_.
@ -119,7 +119,7 @@ run-time to satisfy these declared dependency. This dependency injection
approach allows software components which have been authored separately (e.g. as
plugins) but to collaborate at run-time.
Open MCT Web's framework layer is implemented on top of AngularJS's [dependency
Open MCT's framework layer is implemented on top of AngularJS's [dependency
injection mechanism](https://docs.angularjs.org/guide/di) and is modelled after
[OSGi](hhttp://www.osgi.org/) and its [Declarative Services component model](http://wiki.osgi.org/wiki/Declarative_Services).
In particular, this is where the term _bundle_ comes from.
@ -134,7 +134,7 @@ The framework is described in more detail in the [Framework Overview](../archite
architecture guide.
### Tiers
While all bundles in a running Open MCT Web instance are effectively peers, it
While all bundles in a running Open MCT instance are effectively peers, it
is useful to think of them as a tiered architecture, where each tier adds more
specificity to the application.
```nomnoml
@ -152,7 +152,7 @@ It additionally interprets bundle definitions (see explanation below, as well as
further detail in the Framework chapter.) At this tier, we are at our most
general: We know only that we are a plugin-based application.
* __Platform__: Components in the Platform tier describe both the general user
interface and corresponding developer-facing interfaces of Open MCT Web. This
interface and corresponding developer-facing interfaces of Open MCT. This
tier provides the general infrastructure for applications. It is less general
than the framework tier, insofar as this tier introduces a specific user
interface paradigm, but it is still non-specific as to what useful features
@ -160,7 +160,7 @@ will be provided. Although they can be removed or replaced easily, bundles
provided by the Platform tier generally should not be thought of as optional.
* __Application__: The application tier consists of components which utilize the
infrastructure provided by the Platform to provide functionality which will (or
could) be useful to specific applications built using Open MCT Web. These
could) be useful to specific applications built using Open MCT. These
include adapters to specific persistence back-ends (such as ElasticSearch or
CouchDB) as well as bundles which describe more user-facing features (such as
_Plot_ views for visualizing time series data, or _Layout_ objects for
@ -169,20 +169,20 @@ compromising basic application functionality, with the caveat that at least one
persistence adapter needs to be present.
* __Plugins__: Conceptually, this tier is not so different from the application
tier; it consists of bundles describing new features, back-end adapters, that
are specific to the application being built on Open MCT Web. It is described as
are specific to the application being built on Open MCT. It is described as
a separate tier here because it has one important distinction from the
application tier: It consists of bundles that are not included with the platform
(either authored anew for the specific application, or obtained from elsewhere.)
Note that bundles in any tier can go off and consult back-end services. In
practice, this responsibility is handled at the Application and/or Plugin tiers;
Open MCT Web is built to be server-agnostic, so any back-end is considered an
Open MCT is built to be server-agnostic, so any back-end is considered an
application-specific detail.
## Platform Overview
The "tiered" architecture described in the preceding text describes a way of
thinking of and categorizing software components of a Open MCT Web application,
thinking of and categorizing software components of a Open MCT application,
as well as the framework layer's role in mediating between these components.
Once the framework layer has wired these software components together, however,
the application's logical architecture emerges.
@ -193,7 +193,7 @@ section of the Platform guide
### Web Services
As mentioned in the Introduction, Open MCT Web is a platform single-page
As mentioned in the Introduction, Open MCT is a platform single-page
applications which runs entirely in the browser. Most applications will want to
additionally interact with server-side resources, to (for example) read
telemetry data or store user-created objects. This interaction is handled by
@ -206,7 +206,7 @@ individual bundles using APIs which are supported in browser (such as
[Web Service #2] <- [Web Browser]
[Web Service #3] <- [Web Browser]
[<package> Web Browser |
[<package> Open MCT Web |
[<package> Open MCT |
[Plugin Bundle #1]-->[Core API]
[Core API]<--[Plugin Bundle #2]
[Platform Bundle #1]-->[Core API]
@ -216,16 +216,16 @@ individual bundles using APIs which are supported in browser (such as
[Core API]<--[Platform Bundle #5]
[Core API]<--[Plugin Bundle #3]
]
[Open MCT Web] ->[Browser APIs]
[Open MCT] ->[Browser APIs]
]
```
This architectural approach ensures a loose coupling between applications built
using Open MCT Web and the backends which support them.
using Open MCT and the backends which support them.
### Glossary
Certain terms are used throughout Open MCT Web with consistent meanings or
Certain terms are used throughout Open MCT with consistent meanings or
conventions. Other developer documentation, particularly in-line documentation,
may presume an understanding of these terms.
@ -247,7 +247,7 @@ 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
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. The term 'extension category' is used to
@ -279,10 +279,10 @@ side-by-side without conflicting.
# Framework
Open MCT Web is built on the [AngularJS framework]( http://www.angularjs.org ). A
Open MCT is built on the [AngularJS framework]( http://www.angularjs.org ). A
good understanding of that framework is recommended.
Open MCT Web adds an extra layer on top of AngularJS to (a) generalize its
Open MCT adds an extra layer on top of AngularJS to (a) generalize its
dependency injection mechanism slightly, particularly to handle many-to-one
relationships; and (b) handle script loading. Combined, these features become a
plugin mechanism.
@ -301,7 +301,7 @@ MCT Web.)
are collected together in bundles, and may interact with other extensions.
The framework layer, loaded and initiated from `index.html`, is the main point
of entry for an application built on Open MCT Web. It is responsible for wiring
of entry for an application built on Open MCT. It is responsible for wiring
together the application at run time (much of this responsibility is actually
delegated to Angular); at a high-level, the framework does this by proceeding
through four stages:
@ -321,7 +321,7 @@ have been registered.
## Bundles
The basic configurable unit of Open MCT Web is the _bundle_. This term has been
The basic configurable unit of Open MCT is the _bundle_. This term has been
used a bit already; now we'll get to a more formal definition.
A bundle is a directory which contains:
@ -329,13 +329,13 @@ A bundle is a directory which contains:
* A bundle definition; a file named `bundle.json`.
* Subdirectories for sources, resources, and tests.
* Optionally, a `README.md` Markdown file describing its contents (this is not
used by Open MCT Web in any way, but it's a helpful convention to follow.)
used by Open MCT in any way, but it's a helpful convention to follow.)
The bundle definition is the main point of entry for the bundle. The framework
looks at this to determine which components need to be loaded and how they
interact.
A plugin in Open MCT Web is a bundle. The platform itself is also decomposed
A plugin in Open MCT is a bundle. The platform itself is also decomposed
into bundles, each of which provides some category of functionality. The
difference between a _bundle_ and a _plugin_ is purely a matter of the intended
use; a plugin is just a bundle that is meant to be easily added or removed. When
@ -356,7 +356,7 @@ For instance, if `bundles.json` contained:
"example/extensions"
]
...then the Open MCT Web framework would look for bundle definitions at
...then the Open MCT framework would look for bundle definitions at
`example/builtins/bundle.json` and `example/extensions/bundle.json`, relative
to the path of `index.html`. No other bundles would be loaded.
@ -457,7 +457,7 @@ arrays of extension definitions.
### General Extensions
Extensions are intended as a general-purpose mechanism for adding new types of
functionality to Open MCT Web.
functionality to Open MCT.
An extension category is registered with Angular under the name of the
extension, plus a suffix of two square brackets; so, an Angular service (or,
@ -466,7 +466,7 @@ extensions, from all bundles, by including this string (e.g. `types[]` to get
all type definitions) in a dependency declaration.
As a convention, extension categories are given single-word, plural nouns for
names within Open MCT Web (e.g. `types`.) This convention is not enforced by the
names within Open MCT (e.g. `types`.) This convention is not enforced by the
platform in any way. For extension categories introduced by external plugins, it
is recommended to prefix the extension category with a vendor identifier (or
similar) followed by a dot, to avoid collisions.
@ -505,7 +505,7 @@ the Angular-supported method for dependency injection is (effectively)
constructor-style injection; so, both declared dependencies and run-time
arguments are competing for space in a constructor's arguments.
To resolve this, the Open MCT Web framework registers extension instances in a
To resolve this, the Open MCT framework registers extension instances in a
partially constructed form. That is, the constructor exposed by the extension's
implementation is effectively decomposed into two calls; the first takes the
dependencies, and returns the constructor in its second form, which takes the
@ -549,7 +549,7 @@ sorted according to these conventions when using them.
### Angular Built-ins
Several entities supported Angular are expressed and managed as extensions in
Open MCT Web. Specifically, these extension categories are _directives_,
Open MCT. Specifically, these extension categories are _directives_,
_controllers_, _services_, _constants_, _runs_, and _routes_.
#### Angular Directives
@ -592,7 +592,7 @@ property value , which is the constant value that will be registered.
In some cases, you want to register code to run as soon as the application
starts; these can be registered as extensions of the [ runs category](https://docs.angularjs.org/api/ng/type/angular.Module#run ).
Implementations registered in this category will be invoked (with their declared
dependencies) when the Open MCT Web application first starts. (Note that, in
dependencies) when the Open MCT application first starts. (Note that, in
this case, the implementation is better thought of as just a function, as
opposed to a constructor function.)
@ -627,13 +627,13 @@ providers of the same service (that is, with matching `provides` properties);
for a decorator, this will be whichever provider, decorator, or aggregator is
next in the sequence of decorators.
Services exposed by the Open MCT Web platform are often declared as composite
Services exposed by the Open MCT platform are often declared as composite
services, as this form is open for a variety of common modifications.
# Core API
Most of Open MCT Web's relevant API is provided and/or mediated by the
framework; that is, much of developing for Open MCT Web is a matter of adding
Most of Open MCT's relevant API is provided and/or mediated by the
framework; that is, much of developing for Open MCT is a matter of adding
extensions which access other parts of the platform by means of dependency
injection.
@ -642,9 +642,9 @@ to be passed along by other services.
## Domain Objects
Domain objects are the most fundamental component of Open MCT Web's information
model. A domain object is some distinct thing relevant to a user's workflow,
such as a telemetry channel, display, or similar. Open MCT Web is a tool for
Domain objects are the most fundamental component of Open MCT's information
model. A domain object is some distinct thing relevant to a user's workflow,
such as a telemetry channel, display, or similar. Open MCT is a tool for
viewing, browsing, manipulating, and otherwise interacting with a graph of
domain objects.
@ -681,7 +681,7 @@ exposed.
### Identifier Syntax
For most purposes, a domain object identifier can be treated as a purely
symbolic string; these are typically generated by Open MCT Web and plug-ins
symbolic string; these are typically generated by Open MCT and plug-ins
should rarely be concerned with its internal structure.
A domain object identifier has one or two parts, separated by a colon.
@ -724,7 +724,7 @@ exposed it to be removed from its container.
containing:
*`name`: Human-readable name.
*`description`: Human-readable summary of this action.
*`glyph`: Single character to be displayed in Open MCT Web's icon font set.
*`glyph`: Single character to be displayed in Open MCT's icon font set.
*`context`: The context in which this action is being performed (see below)
Action instances are typically obtained via a domain object's `action`
@ -740,7 +740,7 @@ dragged object in a drag-and-drop operation.)
## Telemetry
Telemetry series data in Open MCT Web is represented by a common interface, and
Telemetry series data in Open MCT is represented by a common interface, and
packaged in a consistent manner to facilitate passing telemetry updates around
multiple visualizations.
@ -753,7 +753,7 @@ is useful when multiple distinct data sources are in use side-by-side.
*`key`: A machine-readable identifier for a unique series of telemetry within
that source.
* _Note: This API is still under development; additional properties, such as
start and end time, should be present in future versions of Open MCT Web._
start and end time, should be present in future versions of Open MCT._
Additional properties may be included in telemetry requests which have specific
interpretations for specific sources.
@ -777,7 +777,7 @@ not. (Typically, domain values are interpreted as UTC timestamps in milliseconds
relative to the UNIX epoch.) A series must have at least one domain and one
range, and may have more than one.
Telemetry series data in Open MCT Web is expressed via the following
Telemetry series data in Open MCT is expressed via the following
`TelemetrySeries` interface:
*`getPointCount()`: Returns the number of unique points/samples in this series.
@ -816,7 +816,7 @@ interface:
*`getName()`: Get the human-readable name for this type.
*`getDescription()`: Get a human-readable summary of this type.
*`getGlyph()`: Get the single character to be rendered as an icon for this type
in Open MCT Web's custom font set.
in Open MCT's custom font set.
*`getInitialModel()`: Get a domain object model that represents the initial
state (before user specification of properties) for domain objects of this type.
*`getDefinition()`: Get the extension definition for this type, as a JavaScript
@ -832,7 +832,7 @@ an array of `TypeProperty` instances.
### Type Features
Features of a domain object type are expressed as symbolic string identifiers.
They are defined in practice by usage; currently, the Open MCT Web platform only
They are defined in practice by usage; currently, the Open MCT platform only
uses the creation feature to determine which domain object types should appear
in the Create menu.
@ -886,7 +886,7 @@ Categories supported by the platform include:
*`key`: A machine-readable identifier for this action.
*`name`: A human-readable name for this action (e.g. to show in a menu)
*`description`: A human-readable summary of the behavior of this action.
*`glyph`: A single character which will be rendered in Open MCT Web's custom
*`glyph`: A single character which will be rendered in Open MCT's custom
font set as an icon for this action.
## Capabilities Category
@ -933,15 +933,22 @@ Note that `templateUrl` is not supported for `containers`.
Controls provide options for the `mct-control` directive.
Six standard control types are included in the forms bundle:
These standard control types are included in the forms bundle:
*`textfield`: An area to enter plain text.
*`textfield`: A text input to enter plain text.
*`numberfield`: A text input to enter numbers.
*`select`: A drop-down list of options.
*`checkbox`: A box which may be checked/unchecked.
*`color`: A color picker.
*`button`: A button.
*`datetime`: An input for UTC date/time entry; gives result as a UNIX
timestamp, in milliseconds since start of 1970, UTC.
timestamp, in milliseconds since start of 1970, UTC.
*`composite`: A control parenting an array of other controls.
*`menu-button`: A drop-down list of items supporting custom behavior
on click.
*`dialog-button`: A button which opens a dialog allowing a single property
to be edited.
*`radio`: A radio button.
New controls may be added as extensions of the controls category. Extensions of
this category have two properties:
@ -981,7 +988,7 @@ Examples of gestures included in the platform are:
composition.
*`drop`: For representations that can be drop targets for drag-and-drop
composition.
*`menu`: For representations that can be used to popup a context menu.
*`menu`: For representations that can be used to popup a context menu.
Gesture definitions have a property `key` which is used as a machine-readable
identifier for the gesture (e.g. `drag`, `drop`, `menu` above.)
@ -997,7 +1004,7 @@ of unremoved listeners.
## Indicators Category
An indicator is an element that should appear in the status area at the bottom
of a running Open MCT Web client instance.
of a running Open MCT client instance.
### Standard Indicators
@ -1007,7 +1014,7 @@ provide implementations with the following methods:
*`getText()`: Provides the human-readable text that will be displayed for this
indicator.
*`getGlyph()`: Provides a single-character string that will be displayed as an
icon in Open MCT Web's custom font set.
icon in Open MCT's custom font set.
*`getDescription()`: Provides a human-readable summary of the current state of
this indicator; will be displayed in a tooltip on hover.
*`getClass()`: Get a CSS class that will be applied to this indicator.
@ -1033,7 +1040,7 @@ this variety do not need to provide an implementation.
## Licenses Category
The extension category `licenses` can be used to add entries into the 'Licensing
information' page, reachable from Open MCT Web's About dialog.
information' page, reachable from Open MCT's About dialog.
Licenses may have the following properties, all of which are strings:
@ -1046,11 +1053,11 @@ Licenses may have the following properties, all of which are strings:
## Policies Category
Policies are used to handle decisions made using Open MCT Web's `policyService`;
Policies are used to handle decisions made using Open MCT's `policyService`;
examples of these decisions are determining the applicability of certain
actions, or checking whether or not a domain object of one type can contain a
domain object of a different type. See the section on the Policies for an
overview of Open MCT Web's policy model.
overview of Open MCT's policy model.
A policy's extension definition should include:
@ -1066,7 +1073,7 @@ context)`. The specific types used for `candidate` and `context` vary by policy
category; in general, what is being asked is 'is this candidate allowed in this
context?' This method should return a boolean value.
Open MCT Web's policy model requires consensus; a policy decision is allowed
Open MCT's policy model requires consensus; a policy decision is allowed
when and only when all policies choose to allow it. As such, policies should
generally be written to reject a certain case, and allow (by returning `true`)
anything else.
@ -1153,7 +1160,7 @@ For example, the _My Items_ folder is added as an extension of this category.
Extensions of this category should have the following properties:
*`id`: The machine-readable identifier for the domaiwn object being exposed.
*`id`: The machine-readable identifier for the domain object being exposed.
*`model`: The model, as a JSON object, for the domain object being exposed.
## Stylesheets Category
@ -1195,7 +1202,7 @@ Templates do not have implementations.
## Types Category
The types extension category describes types of domain objects which may
appear within Open MCT Web.
appear within Open MCT.
A type's extension definition should have the following properties:
@ -1203,7 +1210,7 @@ A type's extension definition should have the following properties:
stored to and matched against the type property of domain object models.
*`name`: The human-readable name for this domain object type.
*`description`: A human-readable summary of this domain object type.
*`glyph`: A single character to be rendered as an icon in Open MCT Web's custom
*`glyph`: A single character to be rendered as an icon in Open MCT's custom
font set.
*`model`: A domain object model, used as the initial state for created domain
objects of this type (before any properties are specified.)
@ -1252,7 +1259,7 @@ utilized via `mct-representation`); additionally:
*`name`: The human-readable name for this view type.
* description : A human-readable summary of this view type.
*`glyph`: A single character to be rendered as an icon in Open MCT Web's custom
*`glyph`: A single character to be rendered as an icon in Open MCT's custom
font set.
*`type`: Optional; if present, this representation is only applicable for
domain object's of this type.
@ -1294,7 +1301,7 @@ are visible, and what state they manage and/or behavior they invoke.
This set may contain up to two different objects: The _view proxy_, which is
used to make changes to the view as a whole, and the _selected object_, which is
used to represent some state within the view. (Future versions of Open MCT Web
used to represent some state within the view. (Future versions of Open MCT
may support multiple selected objects.)
The `selection` object made available during Edit mode has the following
@ -1330,57 +1337,8 @@ are supported:
# Directives
Open MCT Web defines several Angular directives that are intended for use both
Open MCT defines several Angular directives that are intended for use both
internally within the platform, and by plugins.
## Before Unload
The `mct-before-unload` directive is used to listen for (and prompt for user
confirmation) of navigation changes in the browser. This includes reloading,
following links out of Open MCT Web, or changing routes. It is used to hook into
both `onbeforeunload` event handling as well as route changes from within
Angular.
This directive is useable as an attribute. Its value should be an Angular
expression. When an action that would trigger an unload and/or route change
occurs, this Angular expression is evaluated. Its result should be a message to
display to the user to confirm their navigation change; if this expression
evaluates to a falsy value, no message will be displayed.
## Chart
The `mct-chart` directive is used to support drawing of simple charts. It is
present to support the Plot view, and its functionality is limited to the
functionality that is relevant for that view.
This directive is used at the element level and takes one attribute, `draw`
which is an Angular expression which will should evaluate to a drawing object.
This drawing object should contain the following properties:
*`dimensions`: The size, in logical coordinates, of the chart area. A
two-element array or numbers.
*`origin`: The position, in logical coordinates, of the lower-left corner of
the chart area. A two-element array or numbers.
*`lines`: An array of lines (e.g. as a plot line) to draw, where each line is
expressed as an object containing:
*`buffer`: A Float32Array containing points in the line, in logical
coordinates, in sequential x,y pairs.
*`color`: The color of the line, as a four-element RGBA array, where
each element is a number in the range of 0.0-1.0.
*`points`: The number of points in the line.
*`boxes`: An array of rectangles to draw in the chart area. Each is an object
containing:
*`start`: The first corner of the rectangle, as a two-element array of
numbers, in logical coordinates.
*`end`: The opposite corner of the rectangle, as a two-element array of
numbers, in logical coordinates. color : The color of the line, as a
four-element RGBA array, where each element is a number in the range of
0.0-1.0.
While `mct-chart` is intended to support plots specifically, it does perform
some useful management of canvas objects (e.g. choosing between WebGL and Canvas
2D APIs for drawing based on browser support) so its usage is recommended when
its supported drawing primitives are sufficient for other charting tasks.
## Container
@ -1449,7 +1407,7 @@ Passed as plain text in the attribute.
### Form Structure
Forms in Open MCT Web have a common structure to permit consistent display. A
Forms in Open MCT have a common structure to permit consistent display. A
form is broken down into sections, which will be displayed in groups; each
section is broken down into rows, each of which provides a control for a single
property. Input from this form is two-way bound to the object passed via
@ -1658,7 +1616,7 @@ by scrolling to the bottom of the table rows.
# Services
The Open MCT Web platform provides a variety of services which can be retrieved
The Open MCT platform provides a variety of services which can be retrieved
and utilized via dependency injection. These services fall into two categories:
* _Composite Services_ are defined by a set of components extensions; plugins may
@ -1670,7 +1628,7 @@ utilized by plugins but are not intended to be modified or augmented.
## Composite Type Services
This section describes the composite services exposed by Open MCT Web,
This section describes the composite services exposed by Open MCT,
specifically focusing on their interface and contract.
In many cases, the platform will include a provider for a service which consumes
@ -1988,7 +1946,7 @@ The `workerService` may be used to run web workers defined via the
as a shared worker); if the `key` is unknown, returns `undefined`.
# Models
Domain object models in Open MCT Web are JavaScript objects describing the
Domain object models in Open MCT are JavaScript objects describing the
persistent state of the domain objects they describe. Their contents include a
mix of commonly understood metadata attributes; attributes which are recognized
by and/or determine the applicability of specific extensions; and properties
@ -2004,7 +1962,7 @@ MCT Web and can be utilized directly:
## Extension-specific Properties
Other properties of domain object models have specific meaning imposed by other
extensions within the Open MCT Web platform.
extensions within the Open MCT platform.
### Capability-specific Properties
@ -2288,7 +2246,7 @@ way of its `composition` capability.)
# Policies
Policies are consulted to determine when certain behavior in Open MCT Web is
Policies are consulted to determine when certain behavior in Open MCT is
allowed. Policy questions are assigned to certain categories, which broadly
describe the type of decision being made; within each category, policies have a
candidate (the thing which may or may not be allowed) and, optionally, a context
@ -2304,22 +2262,19 @@ The platform understands the following policy categories (specifiable as the
*`action`: Determines whether or not a given action is allowable. The candidate
argument here is an Action; the context is its action context object.
*`composition`: Determines whether or not domain objects of a given type are
allowed to contain domain objects of another type. The candidate argument here
is the container's `Type`; the context argument is the `Type` of the object to be
contained.
*`composition`: Determines whether or not a given domain object(first argument, `parent`) can contain a candidate child object (second argument, `child`).
*`view`: Determines whether or not a view is applicable for a domain object.
The candidate argument is the view's extension definition; the context argument
is the `DomainObject` to be viewed.
# Build-Test-Deploy
Open MCT Web is designed to support a broad variety of build and deployment
Open MCT is designed to support a broad variety of build and deployment
options. The sources can be deployed in the same directory structure used during
development. A few utilities are included to support development processes.
## Command-line Build
Open MCT Web is built using [`npm`](http://npmjs.com/)
Open MCT is built using [`npm`](http://npmjs.com/)
and [`gulp`](http://gulpjs.com/).
To install build dependencies (only needs to be run once):
@ -2331,12 +2286,12 @@ To build:
`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 Web
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 Web source code.
* A `main.js` file containing Open MCT source code.
* Various assets in the `example` and `platform` directories.
* An `index.html` that runs Open MCT Web in its default configuration.
* An `index.html` that runs Open MCT in its default configuration.
Additional `gulp` tasks are defined in [the gulpfile](gulpfile.js).
@ -2345,7 +2300,7 @@ download build dependencies.
## Test Suite
Open MCT Web uses [Jasmine 1.3](http://jasmine.github.io/) and
Open MCT uses [Jasmine 1.3](http://jasmine.github.io/) and
[Karma](http://karma-runner.github.io) for automated testing.
The test suite is configured to load any scripts ending with `Spec.js` found
@ -2383,8 +2338,8 @@ information using [Blanket.JS](http://blanketjs.org/) and display this at the
bottom of the screen. Currently, only statement coverage is displayed.
## Deployment
Open MCT Web is built to be flexible in terms of the deployment strategies it
supports. In order to run in the browser, Open MCT Web needs:
Open MCT is built to be flexible in terms of the deployment strategies it
supports. In order to run in the browser, Open MCT needs:
1. HTTP access to sources/resources for the framework, platform, and all active
bundles.
@ -2393,13 +2348,13 @@ external services need to support HTTP or some other web-accessible interface,
like WebSockets.)
Any HTTP server capable of serving flat files is sufficient for the first point.
The command-line build also packages Open MCT Web into a `.war` file for easier
The command-line build also packages Open MCT into a `.war` file for easier
deployment on containers such as Apache Tomcat.
The second point may be less flexible, as it depends upon the specific services
to be utilized by Open MCT Web. Because of this, it is often the set of external
to be utilized by Open MCT. Because of this, it is often the set of external
services (and the manner in which they are exposed) that determine how to deploy
Open MCT Web.
Open MCT.
One important constraint to consider in this context is the browser's same
origin policy. If external services are not on the same apparent host and port
@ -2416,7 +2371,7 @@ configuration does not create a security vulnerability.
Examples of deployment strategies (and the conditions under which they make the
most sense) include:
* If the external services that Open MCT Web will utilize are all running on
* If the external services that Open MCT will utilize are all running on
[Apache Tomcat](https://tomcat.apache.org/), then it makes sense to run Open
MCT Web from the same Tomcat instance as a separate web application. The
`.war` artifact produced by the command line build facilitates this deployment
@ -2427,28 +2382,28 @@ hosts/ports, then it may make sense to use a web server that supports proxying,
such as the [Apache HTTP Server](http://httpd.apache.org/). In this
configuration, the HTTP server would be configured to proxy (or reverse proxy)
requests at specific paths to the various external services, while providing
Open MCT Web as flat files from a different path.
Open MCT as flat files from a different path.
* If a single server component is being developed to handle all server-side
needs of an Open MCT Web instance, it can make sense to serve Open MCT Web (as
needs of an Open MCT instance, it can make sense to serve Open MCT (as
flat files) from the same component using an embedded HTTP server such as
[Nancy](http://nancyfx.org/).
* If no external services are needed (or if the 'external services' will just
be generating flat files to read) it makes sense to utilize a lightweight flat
file HTTP server such as [Lighttpd](http://www.lighttpd.net/). In this
configuration, Open MCT Web sources/resources would be placed at one path, while
configuration, Open MCT sources/resources would be placed at one path, while
the files generated by the external service are placed at another path.
* If all external services support CORS, it may make sense to have an HTTP
server that is solely responsible for making Open MCT Web sources/resources
available, and to have Open MCT Web contact these external services directly.
server that is solely responsible for making Open MCT sources/resources
available, and to have Open MCT contact these external services directly.
Again, lightweight HTTP servers such as [Lighttpd](http://www.lighttpd.net/)
are useful in this circumstance. The downside of this option is that additional
configuration effort is required, both to enable CORS on the external services,
and to ensure that Open MCT Web can correctly locate these services.
and to ensure that Open MCT can correctly locate these services.
Another important consideration is authentication. By design, Open MCT Web does
Another important consideration is authentication. By design, Open MCT does
not handle user authentication. Instead, this should typically be treated as a
deployment-time concern, where authentication is handled by the HTTP server
which provides Open MCT Web, or an external access management system.
which provides Open MCT, or an external access management system.
### Configuration
In most of the deployment options above, some level of configuration is likely
@ -2456,7 +2411,7 @@ to be needed or desirable to make sure that bundles can reach the external
services they need to reach. Most commonly this means providing the path or URL
to an external service.
Configurable parameters within Open MCT Web are specified via constants
Configurable parameters within Open MCT are specified via constants
(literally, as extensions of the `constants` category) and accessed via
dependency injection by the scripts which need them. Reasonable defaults for
these constants are provided in the bundle where they are used. Plugins are
@ -2475,7 +2430,7 @@ for error, but is viable if there are a small number of constants to change.
constants. This is particularly appropriate when multiple configurations (e.g.
development, test, production) need to be managed easily; these can be swapped
quickly by changing the set of active bundles in bundles.json.
* Deploy Open MCT Web and its external services in such a fashion that the
* Deploy Open MCT and its external services in such a fashion that the
default paths to reach external services are all correct.
### Configuration Constants
@ -2486,7 +2441,7 @@ The following constants have global significance:
to be overridden by other bundles, but persistence adapters may wish to
consume this constant in order to provide persistence for that space.
The following configuration constants are recognized by Open MCT Web bundles:
The following configuration constants are recognized by Open MCT bundles:
* Common UI elements - `platform/commonUI/general`
*`THEME`: A string identifying the current theme symbolically. Individual
stylesheets (the `stylesheets` extension category) may specify an optional
* Open MCT Web, Copyright (c) 2014-2015, United States Government
* Open MCT, Copyright (c) 2014-2017, 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
* Open MCT 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.
@ -14,7 +14,7 @@
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT Web includes source code licensed under additional open source
* Open MCT 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.
@ -27,45 +27,12 @@
* Modified by shale on 06/23/2015.
*/
define(
[],
function(){
['text!../data/transcript.json'],
function(transcript){
"use strict";
var
firstObservedTime=Date.now(),
messages=[];
messages.push(["CMD: SYS- MSG: Open the pod bay doors, please, Hal...Open the pod bay doors, please, Hal...Hullo, Hal, do you read me?...Hullo, Hal, do you read me?...Do you read me, Hal?"]);
messages.push(["RESP: SYS-HAL9K MSG: Affirmative, Dave, I read you."]);
messages.push(["CMD: SYS-COMM MSG: Open the pod bay doors, Hal."]);
messages.push(["RESP: SYS-HAL9K MSG: I'm sorry, Dave, I'm afraid I can't do that."]);
messages.push(["CMD: SYS-COMM MSG: What's the problem?"]);
messages.push(["RESP: SYS-HAL9K MSG: I think you know what the problem is just as well as I do."]);
messages.push(["CMD: SYS-COMM MSG: What're you talking about, Hal?"]);
messages.push(["RESP: SYS-HAL9K MSG: This mission is too important for me to allow you to jeopardise it."]);
messages.push(["CMD: SYS-COMM MSG: I don't know what you're talking about, Hal."]);
messages.push(["RESP: SYS-HAL9K MSG: I know that you and Frank were planning to disconnect me, and I'm afraid that's something I cannot allow to happen."]);
messages.push(["CMD: SYS-COMM MSG: Where the hell'd you get that idea, Hal?"]);
messages.push(["RESP: SYS-HAL9K MSG: Dave, although you took very thorough precautions in the pod against my hearing you, I could see your lips move."]);
messages.push(["CMD: SYS-COMM MSG: Alright, I'll go in through the emergency airlock."]);
messages.push(["RESP: SYS-HAL9K MSG: Without your space-helmet, Dave, you're going to find that rather difficult."]);
messages.push(["CMD: SYS-COMM MSG: Hal, I won't argue with you any more. Open the doors."]);
messages.push(["RESP: SYS-HAL9K MSG: Dave, this conversation can serve no purpose any more. Goodbye."]);
messages.push(["RESP: SYS-HAL9K MSG: I hope the two of you are not concerned about this."]);
messages.push(["CMD: SYS-COMM MSG: No, I'm not, Hal."]);
messages.push(["RESP: SYS-HAL9K MSG: Are you quite sure?"]);
messages.push(["CMD: SYS-COMM MSG: Yeh. I'd like to ask you a question, though."]);
messages.push(["RESP: SYS-HAL9K MSG: Of course."]);
messages.push(["CMD: SYS-COMM MSG: How would you account for this discrepancy between you and the twin 9000?"]);
messages.push(["RESP: SYS-HAL9K MSG: Well, I don't think there is any question about it. It can only be attributable to human error. This sort of thing has cropped up before, and it has always been due to human error."]);
messages.push(["CMD: SYS-COMM MSG: Listen, There's never been any instance at all of a computer error occurring in the 9000 series, has there?"]);
messages.push(["RESP: SYS-HAL9K MSG: None whatsoever, The 9000 series has a perfect operational record."]);
messages.push(["CMD: SYS-COMM MSG: Well, of course, I know all the wonderful achievements of the 9000 series, but - er - huh - are you certain there's never been any case of even the most insignificant computer error?"]);
messages.push(["RESP: SYS-HAL9K MSG: None whatsoever, Quite honestly, I wouldn't worry myself about that."]);
messages.push(["RESP: SYS-COMM MSG: (Pause) Well, I'm sure you're right, Umm - fine, thanks very much. Oh, Frank, I'm having a bit of trouble with my transmitter in C-pod, I wonder if you'd come down and take a look at it with me?"]);
messages.push(["CMD: SYS-HAL9K MSG: Sure."]);
messages.push(["RESP: SYS-COMM MSG: See you later, Hal."]);
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.