Update view provider to allow metadata definitions and to play
nicely with old style views.
Spec out some updates to ViewProviders and ViewRegistry to
support further use of views.
* [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;
This change is based on the following code review:
- Display the entire list of timezones, regardless of what's currently entered.
- As soon as the user typed (or deleted chars in the input) then that filtration would take over the list display
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 the prepublish step, run bower and gulp via node, instead of
relying on shebang interpretation. (Forward-slash path separators
appear to get normalized by node itself before executing the scripts.)
* In the gulp build, replace hard-coded *nix-style separators with
path.sep; this allows stylesheets to be output to expected locations
when building on Windows.
Addresses #827.
Add default values to model, such that editing which occurs
before user supplies these properties does not cause errors
to occur. Directly addresses #717, indirectly addresses
remaining errant behavior associated with #790.
#445
Markup enhanced in wait-node.html;
More wait-spinner constants added;
Normalized appearance between tree-based
.loading and .s-status-pending;
Fixed .s-status-pending to work now that
mct-representation is gone from tree;
#445
New wait-spinner constants;
Markup fixed in wait-node.html;
Styles for .loading when applied to
.tree-item.wait-node;
Changed from percent-of-parent-
width sizing of spinner to fixed size;
Track whether an object is in the cache based on whether it is
in the cache instead of utilizing a separate object for tracking
contents of cache.
See comment on https://github.com/nasa/openmct/pull/773/files
...to restore suppression of Move for objects being edited
(relaxed for the specific case of moving one object being
edited into another object being edited, for use in Timelines.)
Remove step where Added objects are persisted via the editor
capability; instead, persist via the usual persistence capability,
such that Edit mode may intervene (or not) as necessary.
As instantiated models are cached at least until persisted,
this workaround to allow newly-created models to be available
during editing is no longer necessary (and undesired consequences
such as #770 no longer occur)
Specify requirejs minor version of 2.1, as 2.2 is not compatible
with karma-requirejs.
Fixes build problems that appeared after latest requirejs version bump.
#750
Moved l-plot-resource cursor: pointer
to a more specific selector;
Added user-select: none to l-header;
Fixed s-status-editing styling so
that tabular labels only appear draggable
while editing;
#700#689#740
Removed _selects.scss and moved classes
into _controls.scss;
Reorg'd _controls;
Moved classes into _elems.scss;
Added and fixed cssclass defs in multiple
bundle.js files to allow better field widths
in overlay dialogs;
Fixed overlay custom scrollbar colors;
Fixed alignment of required glyphs in forms;
open #729
open #498
Fixed markup to use proper CSS classes
to allow tree items in Inspector Elements to
ellipsize properly, and to apply scroll regions
to the proper elements;
open #729
In-progress!
Markup and CSS mods continued;
Config params added to PlotOptionsForm.js to
allow control-first layout per form row;
Changed titles of Inspector parts;
open #729
In-progress!
Markup and CSS modified to cleanup control layout
and styling in Plot and Table config options;
gulpfile.js modified to include SASS source line numbers
in rendered CSS;
Pass model directly when indexing is triggered via object mutation,
to avoid issuing an extra, unnecessary request to the server.
Additionally supports indexing of objects which have been created
but not yet persisted.
Addresses #377.
#442
Removed white space from markup;
Moved getGlyphClass up to status-block-holder
element out of status-block;
CSS mods to selectors and style defs
in _messages.scss;
...add to TimelineSwimlanePopulator to reflect changes to
time at which selection object may become available as
a consequence to changes in the way templates are normally
loaded. #673
...to reflect changes to how selection object is obtained,
which in turn reflects change to using templates obtained
via RequireJS text plugin, instead of loading by URL.
Loading templates via RequireJS text plugin means they are
immediately available; appears to have caused a change in
ordering wherein controllers for views may be initialized
before representers have installed things like selection
state. As such, need to watch for changes instead of simply
checking for a selection object when the controller is
initialized.
Minor change to readme
Fixed JSLint errors
More JSLint errors
[Example] Rems data integration - disabled bundle by default.
[Examples] REMS data integration - added newlines at end of files
[Example] Added time conductor support to REMS data integration
Added caching of results
[Examples] Added domain format to REMS data #359
[Example] #637 Added local proxy to app.js to allow cross-origin requests
Updated readme
#164https://github.jpl.nasa.gov/MissionControl/vista/issues/299
App logo and bg files renamed;
Added openmct.scss to hold openmct-specific styles;
Renamed _startup.scss to startup-base.scss
which now renders its own .css file;
Still to-do: apply to WARP including needed
mods to its About dialog screen;
#164
Markup in index.html and about-dialog.html
changed to simplify and use :before/:after psuedos;
CSS in _logo-and-bg.scss modded for same;
Added _startup.scss to hold general CSS for
the startup screen;
Renamed startup.scss to startup-open.scss;
Modified SplashScreenManager.js to target renamed
outer container .l-splash-holder;
Added media query for startup screen on phone;
Cleanup: moved classes out of _effects into _global;
Still to-do: apply to WARP and VISTA, including needed
mods to their About dialog screens;
Add a runtime extension that detects the splash screen and triggers a fade out
after the application has loaded. Once the fade out has ended, it removes the
element from the page.
Related to https://github.com/nasa/openmctweb/issues/164
open #442
Fixed white space problem with .status-block-holder
applied to mct-include; Added new status 'available'
class and updated theme constants files;
Reinstantiate compass wrapper for each task execution. Allows stylesheets
task to be run multiple times by watch. Fixes a bug that prevents watch
from working properly.
Updates the stylesheet task to output CSS in the correct locations. Remove
config.rb for running compass manually, and remove compiled css files from
project. Add a .gitignore to ensure they don't get included accidentally.
Add a gulp task for running the development server and watching for scss
changes at the same time.
resolves https://github.com/nasa/openmctweb/issues/238
open #639
open #683
open #169
open #335
Fixed wrong application of body.desktop.mini-tab...;
Increased size of pane collapse/expand icons;
Removed max-width applied to search input holder;
open #639
open #683
open #169
open #494
Replaced MQ around mobile/_tree.scss ul.tree;
Removed MQ desktop around hover in mixin btnBase;
Reversed orientation of mobile tree arrows for #494;
open #639
Refactored all usage of @include desktop to use CSS selector body.desktop
instead; Still to-do: deal with desktopandtablet usage with hover bubbles
and mixins btnBase;
open #659
CSS for .rep-object-label modified; Added CSS class
to tabular-swimlane-cols-tree.html markup;
Also cleaned up .s-status-pending styles for related
label elements;
Add an optional parameter to method signature of
copyService, used to determine if a domain object should
or should not be cloned.
This will be used to support usages of copyService
where links should remain links;
https://github.com/nasa/openmctweb/pull/666/files#r52525612
open #638
Added custom radio button control and modified
PlotOptionsController / plotOptionsStructure
accordingly; spacing, borders, etc. are
all as finally intended;
Allow bundles to be removed by:
* Waiting for explicit activation before bootstrapping,
providing a time period when bundles could be removed.
* Adding a remove method to BundleRegistry
Acquire reference to moment as an argument instead of
assuming global availability; this appears to be no longer
be present globally after build changes
[New Edit Mode] #480 fixed JSLint errors
[New Edit Mode] #480 do not show locator for sub objects
[New Edit Mode] Modified persistence in SaveAction
Removed redundant variable
Fixed Failing Test
Fixed JSLint errors
Improved some documentation
Switch Karma to use PhantomJS to run tests. CI machines no longer
need to have Chrome installed.
Implemented after changes to build process due to imperative registration.
https://github.com/nasa/openmctweb/issues/450
Remove depencendies necessary to build docs from package.json and
specify them in the readme. Due to difficulty managing dependencies
for nomnoml on different platforms, this reduces dependency requirements
to only those needed for building the package.
open #445
Mods and simplifications to wait-spinner classes;
Simplification and cleanup in plot.html to use loading
class instead of hide/show DOM element;
open #337
Tick label strings are now reversed in their char order in
PlotTickGenerator.js, then reversed again via CSS in
_plots-main.scss. This forces the browser to clip the label
at the left 'start' side, rather than the end, resulting in
the least significant portion of the label getting clipped.
open #342
Now using CSS hover on pertinent plot areas;
Refining of select styling, tweaks for Firefox Linux;
Tweaks to local-control positioning in plots;
Changed *-options controls to use length > 1
instead of > 0;
Allow injection of a validator for numeric values of
the date-time fields, to allow for these to be displayed
as invalid in cases where the text itself may be parsed
but the resulting value is not valid (e.g. when start
is greater than end.)
https://github.com/nasa/openmctweb/issues/325
Many tweaks to fix some issues with tree, labels and Inspector.
Conflicts:
platform/commonUI/edit/res/templates/elements.html
platform/commonUI/general/res/sass/search/_search.scss
platform/commonUI/general/res/sass/tree/_tree.scss
platform/commonUI/general/res/templates/object-inspector.html
platform/commonUI/themes/espresso/res/css/theme-espresso.css
platform/commonUI/themes/snow/res/css/theme-snow.css
platform/search/res/templates/search.html
open #468
Removed ng-show="editMode" in object-inspector.html;
Refactored CSS as required in _inspector.scss;
Added opacity transition to splitter-inspect-panel and
split-pane-component pane bottom, but not working as desired currently:
entire inspector seems to be destroyed and recreated when switching into
and out of edit mode;
Moved <style> def for .location-item in object-inspector.html into .scss;
open #468
Remove ng-class statements in favor of upstream .s-status-editing;
Restructure CSS accordingly;
NOTE: because edit.html has NOT been changed,
changes here will cause old edit mode to no longer display properly.
Don't integrate this CSS with old edit mode!
Write HTML reports of test successes/failures to simplify
handling of test failures; pre-existing HTML test runner
is incompatible with changes to the way bundles are loaded.
Declare external dependencies up-front in RequireJS
config; avoids problems due to changes in ordering
(since RequireJS config may be modified by bundle
contents.)
Remove obsolete split-pane container and associated
controller; this behavior is now handled by the
mct-split-pane directive.
Part of updates to tests for the mct-split-pane
directive, WTD-1400
Test ability to look up datum object by index (used to
support evaluation of limit state in Fixed Position and
similar single-value views while time conducting.)
Merge in latest from master into topic branch for
https://github.com/nasa/openmctweb/issues/116
Conflicts:
platform/features/layout/test/FixedControllerSpec.js
platform/features/plot/test/PlotControllerSpec.js
Update RangeColumn spec. Changes appear to have been related
to limits (WTD-1337), but making changes in the context of
updating tests for time conductor,
https://github.com/nasa/openmctweb/issues/116
Add classes describing device characteristics to the
body of the current document at start-up. Refactor
device matchers out of the mct-device directive for
reuse and consistency here.
https://github.com/nasa/openmctweb/issues/169
warp #1596
open #425
Changes to autoflow styles, particularly in header;
Cleanup in effects.scss; CSS to be re-compiled;
(cherry picked from commit 5848077)
* Add spaces to 'Open MCT Web' for consistency
* Use term 'platform' instead of 'framework' for consistency
with the developer guide
* Avoid the term 'capabilities' (could be ambiguous in the context
of other documentation)
* Use canonical casing for JSDoc and JavaScript
* Simplify phrasing of first sentence
* Change casing of 'Developer Guide' for consistency with
other bullets
From review of https://github.com/nasa/openmctweb/pull/412
When handling a drop into the layout, store the panel's
new position to the LayoutController's internal table of
raw positions (in addition to writing it to the configuration.)
Avoids https://github.com/nasa/openmctweb/issues/384
open #199
open #278
Changed CSS to use s-status-editing instead of .active
class;
Refined style defs to explicitly target tree and
search-results children in order to avoid items in
Inspector Elements pool from being designated as
being edited;
Removed {{searchText}} div from input-filter;
...when determining if a representation needs to be
refreshed. Avoids representations becoming stale
when switching or navigating among linked instances
of the same domain object.
https://github.com/nasa/openmctweb/issues/302
...on watches triggered from the picker. Only want to
trigger a submit when this actually constitutes a change from
the datetime field's underlying model (to avoid triggering
form submission when datetime picker is initialized.)
Timeline uses a custom date-time control on creation;
use a distinct key for this to avoid a naming collision
with platform's datetime. Addresses abnormal behavior
identified in nasa/openmctweb#208
open #208
Unit tested in both themes;
.s-icon-btn refactored slightly to focus on usage
as an icon-only element, removed overlap designations
with .s-btn in markup;
Colors normalized for theming;
Code cleanup;
open #208
Espresso and Snow now supported; bulk of
work done except for minor cleanups, like zoom
buttons; Dragging not working currently in Timelines;
open #251
Fixed markup and CSS to remove erroneously
applied "select" class;
Modified .select to not use overflow: hidden;
Better positioning for *-options elements;
open #169
Significant simplification of media query device detection
to focus on width only; tablet max-width and desktop
min-width modified to create gapless ranges;
Add status tracking for domain objects, and decoration of
representations with status-related classes. Supports WTD-1575
by allowing pending state of taxonomy to be handled by
status tracking and custom CSS, instead of by overriding platform
templates.
open #199
open #279
Last commit didn't fully take...
Integrated inspector changes from open279 into
new edit mode work from open199; _layout.scss
had a bit of difficult conflict resolution but seems
good at this point...
open #199
open #279
Integrated inspector changes from open279 into
new edit mode work from open199; _layout.scss
had a bit of difficult conflict resolution but seems
good at this point...
Define applicability of Move/Copy/Link using appliesTo, to avoid
errors being thrown due to lack of context during instantiation.
Addresses immediate cause of nasa/openmctweb#120.
open #250
Removed un-needed markup around treeview
includes and mct-reps; moved CSS class defs into
mct-include and mct-rep for search and tree
respectively;
open #250
Fixed min and max widths for panes to prevent
weird pane expand/collapse behaviors, like
Inspector covering the main view area;
Added min-width to .holder-all element;
open #250
Snow theme constants missing were causing the Snow
theme CSS to not compile - this commit restores those
values;
TO-DO: values defined are a bit out of sync between Espresso
and Snow and need to be realigned;
open #250
open #260
vista#132
Major refactoring to markup and CSS to apply
flex layout strategy to object headers;
Flex necessary to fix 'overflow: hidden' setting
applied in open90 to object-browse-bar that
was preventing the view switcher menu from
appearing;
Browse, edit, mobile, frames in layouts, etc. all
visually checked in a first go round;
Mobile classes tweaked to fix left and right
margin problems resulting from open90 changes;
z-indexing of Inspector pane and splitters changed
to allow primary pane elements to overflow beneath
when primary pane width is severely constrained;
open #250
Fixed margin/spacing problems with results element;
Added transition to results display;
Begin adding # results found / no results messaging;
Moved class .off to _globals.scss;
open #250
Significant changes to flex classes, markup in
browse.html and search.html to support better
flex layout;
Search results now scrolls properly;
Significant refactoring and cleanups in search and _search.scss;
open #244
Fixing scroll issue in Inspector via flex layout;
Added new _archetypes.scss file for .l-flex* and .col styles;
moved .col and associated mixin out of _layout.scss
and into _archetypes;
open #208
Copied SASS styles from /warp and created
new platform/features/timeline/themes/espresso;
Styling looks complete, but Timeline itself has
functional issues;
TO-DO: remove styles from /warp/.../sass/ as needed;
Declare Search UI components as templates instead of
representations so that they are not removed from the
DOM when no domain object is supplied. Fixes
nasa/openmctweb#234
open #90
IN-PROGRESS
Merged in latest from github/master;
Fixed margins when in edit mode;
Fixed edit area not utilizing overflow: auto properly;
TO-DO: verify mobile is Ok;
Update compilation approach for templateLinker to more
closely resemble ng-include; minimizes likelihood of
subtle behavioral differences (e.g. incorrect size
selection for split pane)
Destroy representation scope before adding elements back into
the DOM; avoids having a momentary activation of watches and
listeners on those scopes before they are replaced with newly
compiled content for new scopes.
An mct-representation may have a refresh triggered either by
a key change or a domain object change; both will typically
happen in the same digest cycle. Track what prior state was
an abort refreshes if nothing will change.
Create new scopes on every changeTemplate request, even if
the same template is being viewed; presume that we want a
new instance of the same template. Avoids scope reuse for
cases such as switching from a plot of one object to a
plot of another object.
open #90
IN-PROGRESS
mini-tab location in markup in browse.html changed;
Single menu icon for collapsed treeview;
Close 'x' boxes instead of arrow icons;
TO-DO: verify mobile is Ok;
Use default format when no format is specified, and throw an
error when a specified format is unrecognized, from both
date-time field controller and time range controller.
The event is already listened-for at the representation
level to trigger cleanup, including gestures, so the info gesture
does not need to listen for it as well.
Per code review feedback, nasa/openmctweb#222
open #90
IN-PROGRESS
To support desired edge-to-edge styling of Inspector pane;
Removed superflous .scss file;
Enhancements to splitter .scss to allow flush edging and
edge shadows;
Handle edge cases (e.g. directive priorities, race conditions)
to ensure that mct-representation and mct-include display correctly
when added to or removed from the DOM.
element.scope() may be undefined when wiring in the info
gesture, so check for that.
That this is sometimes undefined appears to be a consequence
of changes to mct-representation, but which changes influence
this are unclear. In any event, it appears that this cannot
be relied-upon per https://github.com/angular/angular.js/issues/9515
...of templateLinker into mct-representation. Not working currently
due to prevalence of mct-representation instances with transcluding
directives (hitting a multiple transclusion error.)
Remove usage of ng-include and template from mct-include for
compatibility with element-level transclusion. Has useful
side effect of pre-fetching templates and reducing watch
count.
...to add/remove conditionally depending on the existence of
certain templates.
Note that this currently breaks mct-include due to an incompatibility
between element transclusion and directive templates; see
https://github.com/angular/angular.js/issues/3368.
...from mct-include. Improves behavior of that directive and supports
testing of changes to remove whole elements when inapplicable,
nasa/openmctweb#195.
When including/excluding a DOM element via mct-device,
use replaceWith() instead of parent().append() to preserve
original ordering of DOM elements from template.
nasa/openmctweb#213.
open #90
Major work in-progress on switching to .t-item-icon from
.type-icon to get item icons working better, especially
in .inspector-location in Inspector;
Significant mods to label.html;
open #90
Squashed commit of the following:
commit a2d06583ca
Merge: 74f289c5d5425d
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Tue Oct 27 14:04:49 2015 -0700
Merge pull request #216 from nasa/open-vista54a
Review and integrate open-vista54a into master
commit 5d5425db04
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Tue Oct 27 11:50:16 2015 -0700
[Frontend] Finessing and verifying CSS
vista#54
Verified against fixed position and scrolling views
using SineWave generator;
font-size of glyph tweaked;
commit a8856c0612
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date: Tue Oct 27 11:40:35 2015 -0700
[Frontend] Platform-specific mods to limits
vista#54
Refactor limits into multiple classes, separating
upr/lwr from red/yellow;
Modded SineWaveLimitCapability accordingly;
Normalized upr/lwr glyphs;
(cherry picked from commit a26d71b)
commit 74f289cb34
Merge: 4ec243c29bdc9d
Author: akhenry <akhenry@gmail.com>
Date: Tue Oct 27 10:48:33 2015 -0700
Merge pull request #206 from nasa/open150b
[Plot] Ignore empty lines
commit 4ec243c6fb
Merge: 407d9883d996ac
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Sat Oct 24 07:48:45 2015 -0700
Merge pull request #212 from nasa/open211
[RequireJS] Specify path for uuid
commit 407d9881ff
Merge: 6ee622b21739ff
Author: akhenry <akhenry@gmail.com>
Date: Fri Oct 23 19:16:51 2015 -0700
Merge pull request #200 from nasa/open-toc
[Documentation] Add table of contents
commit 6ee622b3f5
Merge: 099d70b87e317a
Author: akhenry <akhenry@gmail.com>
Date: Fri Oct 23 17:04:04 2015 -0700
Merge pull request #192 from nasa/open153
[CI] Remove non-existent bundle from procfile
commit 099d70b8d9
Merge: 90828ef8e2a2ee
Author: akhenry <akhenry@gmail.com>
Date: Fri Oct 23 17:00:46 2015 -0700
Merge pull request #175 from nasa/open147
[Entanglement] Add "Go To Original" action
commit 3d996ac466
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Fri Oct 23 16:32:05 2015 -0700
[RequireJS] Specify path for uuid
Specify path for uuid, making it available for any code that would require it,
without that code needing to know the path to it.
Fixes https://github.com/nasa/openmctweb/issues/211.
commit 90828ef63d
Merge: bf24ac7dbebf08
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Fri Oct 23 16:23:29 2015 -0700
Merge remote-tracking branch 'github-open/open181' into open-master
commit 29bdc9d574
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Fri Oct 23 13:04:06 2015 -0700
[Plot] Ignore empty lines
Ignore empty lines (plot lines with no data) when determining
domain extrema; avoids failure to draw multiple plot lines in
a telemetry panel, nasa/openmctweb#150.
commit bf24ac7c93
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Fri Oct 23 12:14:46 2015 -0700
[Search] Update field name
Update field name in GenericSearchProvider to reflect changes
from nasa/openmctweb#193. Avoids exceptions on mutation.
Additionally, add test case exercising relevant code and verifying
that reindexing is scheduled upon mutation as expected.
commit 59f094763b
Merge: 3080861496cf85
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Thu Oct 22 16:58:02 2015 -0700
Merge pull request #193 from nasa/search-performance
Search performance
commit dbebf08500
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Wed Oct 21 15:38:58 2015 -0700
[Time Controller] Add test cases
...to verify behavior on text entry of dates.
commit 847c356063
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Wed Oct 21 15:26:42 2015 -0700
[Time Controller] Change color when input is invalid
nasa/openmctweb#181
commit 06bcd28558
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Wed Oct 21 15:22:00 2015 -0700
[Time Controller] Keep inputs in sync
Keep inputs in sync with displayed data in time controller,
without overwriting user-entered text. nasa/openmctweb#181
commit f88e8ebb51
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Wed Oct 21 15:08:44 2015 -0700
[Time Controller] Update model state for text entry
commit 6d2b2fd81e
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Wed Oct 21 14:46:12 2015 -0700
[Time Controller] Parse user-entered timestamps
nasa/openmctweb#181.
commit 608800ae63
Merge: 07818b0fb0ce1e
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Wed Oct 21 14:40:42 2015 -0700
Merge remote-tracking branch 'github/master' into open181
Conflicts:
platform/commonUI/general/res/templates/controls/time-controller.html
commit 07818b0a6d
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Wed Oct 21 14:35:18 2015 -0700
[Time Controller] Show bounds in a text field
Show bounds in a text field to allow user editing; supports manual
editing of time controller bounds, nasa/openmctweb#181.
commit 496cf85b7e
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Wed Oct 21 09:46:32 2015 -0700
[JSDoc] Correct mistake
commit 833f57e284
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Wed Oct 21 07:39:59 2015 -0700
[Search] Don't block UI between requests
Timeout subsequent calls to keepIndexing at the end of a
indexRequest, so that UI operations are not blocked.
commit 9a63e99710
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Tue Oct 20 16:01:42 2015 -0700
[Search] Add spec for ElasticSearchProvider
Add spec coverage for ElasticSearchProvider. Also remove
unneeded guards for max number of results, as the aggregator
will always provide a max number of results.
commit 21739fffd9
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Tue Oct 20 15:52:49 2015 -0700
[Documentation] Add table of contents
Add table of contents to generated documents, without
modifying document sources; nasa/openmctweb#189.
commit 77d81f899b
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Tue Oct 20 15:31:33 2015 -0700
[Style] JSLint compliance
commit fe3263fdfe
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Tue Oct 20 15:27:46 2015 -0700
[Search] Remove invalid specs
commit ce42429fbd
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Tue Oct 20 15:14:43 2015 -0700
[Search] expose constants, add fudge factor
The SearchAggregator exposes it's constants to add stability to
tests.
It also has a fudge factor which increaases the number of results
it requests from providers to better support pagination when using
client side filtering.
commit 76151d09a0
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Tue Oct 20 15:13:37 2015 -0700
[Search] use service for filters, add spec
Add a spec for the SearchController, and use the SearchService to
execute filters by supplying a filterPredicate.
commit ec7e6cc5b4
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Tue Oct 20 13:55:46 2015 -0700
[Search] Update spec for Generic Search Worker
commit 1ddce48f7e
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Tue Oct 20 13:12:04 2015 -0700
[Search] Specs for GenericSearchProvider
Write specs for GenericSearchProvider and resolve some implementation
bugs they uncovered.
commit 98b5ff3c77
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Fri Oct 16 18:14:33 2015 -0700
[Search] Decrement number of pending requests
commit 14094a48fc
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Fri Oct 16 17:33:23 2015 -0700
[Search] Remove old specs in prep for rewrite
Remove old specs in prep for rewrite.
commit 8e2a2eeba5
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Mon Oct 19 12:08:49 2015 -0700
[Entanglement] Add license headers
...per code review feedback from nasa/openmctweb#175
commit 0f63e4dde9
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Fri Oct 16 17:06:23 2015 -0700
[Tests] Rewrite search aggregator specs
commit 12efb47be7
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Fri Oct 16 16:09:51 2015 -0700
[Search] Remove timeouts and timestamps
Remove timeouts and timestamps which were not effectively doing anything.
commit a2fce8e56c
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Fri Oct 16 16:05:31 2015 -0700
[Search] Rewrite elasticsearch provider with prototype
Rewrite the elasticsearch provider to use prototypes and clean up the implementation.
Now returns a modelResults object to keep it in line with the general search
provider.
commit 78e5c0143b
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Fri Oct 16 15:26:46 2015 -0700
[Search] Overhaul generic search provider
Rewrite the generic search provider to use prototypes. Increase performance
by utilizing the model service instead of the object service, and use a
simplified method of request queueing.
commit 099591ad2e
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Fri Oct 16 15:26:04 2015 -0700
[Search] Aggregator returns objects, providers return models
Search providers return search results as models for domain objects, as the
actual number of max results is enforced by the aggregator, and because the
individual providers store and return the models for their objects already.
This lowers the amount of resources consumed instantiating domain objects, and
also allows the individual search providers to implement function-based
filtering on domain object models, which is beneficial as it allows the search
filtering in the search controller to be done before paginating of results.
commit b5505f372f
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Fri Oct 16 12:39:41 2015 -0700
[Search] Generic Worker Performance Tweaks
The generic search worker now does indexing work during the index operation,
ensuring that queries do not have to do extraneous or repeat calculations.
Change the return format slightly and fixed a bug in the GenericSearchProvider
which caused more objects than intended to be returned from the provider.
commit 9ad860babd
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Fri Oct 16 12:34:47 2015 -0700
[Search] Rewrite search controller, tidy
Rewrite the search controller, making numerous changes and using prototypical
style.
First, the search controller immediately hides previous results when a new
search is started. Secondly, the search controller ensures that search results
displayed match the currently entered query, preventing race conditions. Finally,
the search controller uses a poor filtering option that means it may not display
all results.
commit 87e317a6f5
Author: Pete Richards <peter.l.richards@nasa.gov>
Date: Fri Oct 16 11:33:42 2015 -0700
[CI] Remove non-existent bundle from procfile
Remove the example/localstorage bundle from the procfile.
Fixes#153.
commit bf41d82a78
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Tue Oct 6 16:50:35 2015 -0700
[Entanglement] Restore missing specs
Restore specs which had been omitted from suite.json (but currently
succeed for the relevant scripts); done in the context of
nasa/openmctweb#147
commit a4944717a1
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Tue Oct 6 16:47:37 2015 -0700
[Location] Test getOriginal method
commit 70bbd3cf97
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Tue Oct 6 16:37:37 2015 -0700
[Entanglement] Add test cases for Go To Original
commit e3afaf0842
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Tue Oct 6 16:22:16 2015 -0700
[Entanglement] Add Go To Original
nasa/openmctweb#147
commit 60f2f9fb6c
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date: Tue Oct 6 16:08:48 2015 -0700
[Location] Add getOriginal method
Add a getOriginal method to the location capability, to simplify
loading of original versions of objects. nasa/openmctweb#147
...to reflect ability to change domain selection without
reinstantiation, supporting integration of domain-driven
formatting of X axis values in a plot.
Rename platform/time to platform/commonUI/formatting; nothing
particularly specific to time about these interfaces, and
removal of non-formatting-related methods makes this essentially
a UI concern.
Avoid various cases where domain selection is temporarily
overwritten due to transient plot state (e.g. because no
telemetry metadata is yet available due to asynchronous
retrieval of delegates.)
...such that the delta domain exposes its format, and its format
is exposed correctly under the formats extension category.
Supports testing of time conductor support for alternative
time formatting.
Begin adding a more timelike alternately-formatted domain
to sine waves; the 'delta' can be expressed as UTC timestamps
but will be formatted for display as a time relative to
when sine wave generation began.
open #90
Create and Search controls now properly change
to mini-tabs when treeview is collapsed;
Mods to .create-btn to use :before for symbol instead of span;
TO-DO: why does mct-device alter the order of items in the rendered
markup?
Specify path for uuid, making it available for any code that would require it,
without that code needing to know the path to it.
Fixes https://github.com/nasa/openmctweb/issues/211.
Ignore empty lines (plot lines with no data) when determining
domain extrema; avoids failure to draw multiple plot lines in
a telemetry panel, nasa/openmctweb#150.
Update field name in GenericSearchProvider to reflect changes
from nasa/openmctweb#193. Avoids exceptions on mutation.
Additionally, add test case exercising relevant code and verifying
that reindexing is scheduled upon mutation as expected.
open #90
Added code to MCTSplitter and MCTSplitPane to allow
toggling of CSS class 'resizing' on pane elements when
the user is actively using the splitter;
Added resize transition animation to split pane elements
when user not actively resizing;
open #90
Major work on new .mini-tab elements, used
as controls to expand/collapse panes;
Cleaned up splitter hover behavior;
Changed mixin controlGrippy to not be tied
to :before;
Remove dependency on now (current time can be retrieved via
timeService); fix domain-switching behavior such that changes
to time systems are reflected in changes to default bounds.
Add typedefs relevant to the date aggregator; in particular,
document properties used to determine how to format timestamps
associated with a telemetry point.
Add spec coverage for ElasticSearchProvider. Also remove
unneeded guards for max number of results, as the aggregator
will always provide a max number of results.
The SearchAggregator exposes it's constants to add stability to
tests.
It also has a fudge factor which increaases the number of results
it requests from providers to better support pagination when using
client side filtering.
Rewrite the elasticsearch provider to use prototypes and clean up the implementation.
Now returns a modelResults object to keep it in line with the general search
provider.
Rewrite the generic search provider to use prototypes. Increase performance
by utilizing the model service instead of the object service, and use a
simplified method of request queueing.
Search providers return search results as models for domain objects, as the
actual number of max results is enforced by the aggregator, and because the
individual providers store and return the models for their objects already.
This lowers the amount of resources consumed instantiating domain objects, and
also allows the individual search providers to implement function-based
filtering on domain object models, which is beneficial as it allows the search
filtering in the search controller to be done before paginating of results.
The generic search worker now does indexing work during the index operation,
ensuring that queries do not have to do extraneous or repeat calculations.
Change the return format slightly and fixed a bug in the GenericSearchProvider
which caused more objects than intended to be returned from the provider.
Rewrite the search controller, making numerous changes and using prototypical
style.
First, the search controller immediately hides previous results when a new
search is started. Secondly, the search controller ensures that search results
displayed match the currently entered query, preventing race conditions. Finally,
the search controller uses a poor filtering option that means it may not display
all results.
Merge in latest from master into topic branch for
nasa/openmctweb#115
Conflicts:
platform/features/conductor/src/ConductorRepresenter.js
platform/features/conductor/src/ConductorTelemetrySeries.js
platform/features/conductor/src/TimeConductor.js
platform/features/conductor/test/ConductorRepresenterSpec.js
platform/features/conductor/test/ConductorTelemetrySeriesSpec.js
open #159
open #170
Added Cancel button to Messages dialog in DialogService.js;
Important tweaks to layout of messages to allow
bottom-bar to align to bottom in singleton dialog view;
Revised status colors in theme's constants files;
open #159
open #170
CSS, markup and JS test files initially complete;
Templates renamed for consistency;
message-type icons styled;
Added severity constant "alert";
TO-DO: check refactored CSS against mobile,
see what's broken;
open #159
open #170
Thank you @akhenry;
launchMessages function added to DialogLaunchController.js;
New message-list.html template;
message.html is now its own include;
blocking-message.html renamed to
overlay-blocking-message.html;
open #159
open #170
Restructured overlay size and positioning approach
for better flexibility;
Getting new dialogs and the overlay to
play nicely in mobile context;
open #159
open #170
OverlayService can now be passed typeClass,
which is added to the CSS class of the overlay's
mct-include tag - intent is to allow the overlay
to size itself based on the type of content to be
displayed;
open #159
open #170
Properly re-cast model.hint and added model.actionText;
Moved progressText into progress-bar.html;
Tweaks to dialog styles;
Tweaked styles for progress bar;
Normalized various dialog templates markup;
Per discussion from nasa/openmctweb#141, minimize the
interval at which new objects get indexed, instead of
presuming requirements for CPU utilization.
open #159
open #170
Moved classes from _bottom-bar.scss into _layout.scss
and new file _messages.scss;
Removed _bottom-bar.scss;
Revised display behavior of .status.block to show label on
hover;
Added semicolon
Added test for hasDomainData()
Added test for negative case on domain data check
Removed label test due to mocked telemetry formatter
Uncommented test commented by accident
Removed extra space
When indexing for generic search, issue new batches of
requests as individual requests finish (instead of waiting
for whole batches to finish) varying size to keep the
number of outstanding requests below some maximum.
nasa/openmctweb#141
Add digest indicator to example/profiling to aid in diagnosing
digest-related performance issues (or ruling out excessive digest
cycles as a cause of performance issues.)
This reverts commit 4b8a5ac0b257737ee33effc966816afca6c11b94.
Performance measurements indicates this is harmful for performance,
although this is not well-explained.
Move function used to listen for mutation changes (to trigger
reindexing) up in scope, to avoid retaining references to
domain objects via closure. nasa/openmctweb#141
Also, includes misc. whitespace normalization (provided by
code editor.)
open #1515
open #117
Markup changed to utilize mct-representation via CSS;
time-controller now uses list-based _constants values;
ConductorRepresenter.js modded to remove inline styling
and to add CSS classes to enclosing mct-representation;
open #1515
open #117
Layout styling in datetime picker;
Modded picker to hide time selects area
when time options are null;
(cherry picked from commit 6721093)
...to any domain object models loaded from persistence
which do not have one. The presence of this timestamp
is necessary for the persistence capability to determine
whether an object should be created or updated when a
request to persist is made. nasa/openmctweb#139.
open #1515
open #117
Fixing selects;
Tweaks to constants and mixins to better
handle button dropshadowing across
themes;
(cherry picked from commit 3e34d06)
open #1515
open #117
Significant new vals added to constants files
for datetime picker/calendar;
Styling for calendar, hover and selected states;
Modded DateTimePickerController.js and markup
to allow selection of out-of-month cells;
open #1515
open #117
Significant re-org in menus.scss continued:
Refactored s-menu to s-menu-btn;
moved look-related style def's into .s-menu;
.menu now extends .s-menu;
Don't invoke from mct-resize when first observing
an element's size during linking; observed issue in the
context of adding domain selector to time conductor.
Don't invoke from mct-resize when first observing
an element's size during linking; observed issue in the
context of adding domain selector to time conductor.
Move check for composition up higher in the sequence of
if-blocks in the validation step of linking; remove
fallback to [] for undefined composition, which is no
longer necessary as a consequence of this.
nasa/openmctweb#98
Remove redundant test case; modify composition-checking
test case to expose correct capability information.
In response to feedback from nasa/openmctweb#98
Reoder validation to consider the composition capability
first; refactor to express as a single expression to clarify
validation logic (explicitly say 'and' instead of implying
it with control flow.)
Based on feedback from nasa/openmctweb#98
Changed tmpBorder mixin to specify '@include' instead of '@iclude'. This
does not change the output CSS which means the tmpBorder mixin is not
used anywhere and could be removed.
Collapse tree any time a user does an action in the
tree that would select an object; don't only do this
on navigation changes, because this fails to detect
occasions where user clicks the already-navigated-to
object.
Make mobile variant of BrowseTreeController the regular version
of that controller; Browse mode has a dependency on mobile by
way of the mct-device directive anyway.
Use ng-show instead of ng-if to suppress the
'Select One' option after user has chosen something
in a select box; the latter appears to be incompatible
with Angular 1.4.x. nasa/openmct#113
Tweak approach to requerying in plot, and track
pending state so there is a visual indication
that plotted data may be incomplete during
panning with time conductor. WTD-1515
Don't look up domain values while subsetting a
telemetry series until after checking to ensure
that there is some segment of the series left
to search. WTD-1515
Don't show domain object id in info bubble; this is not
useful information to non-developers. (For developers,
this information can be retrieved from the URL by
navigating to a domain object.) WTD-1252
open #95
Shadow and color normalization: fixed-position, tabular;
Updated paint bucket and icon-box in symbols font;
Custom checkboxes now use inset shdw;
Rename TimeConductorController to TimeRangeController, to
reflect that this is intended to serve as a more general
control. Additionally, stop using arrays for inner and
outer bounds and instead use explicit start/end properties,
for clarity. WTD-1515
Retain reference to scope in ConductorRepresenter
directly via this, instead of revealing via
a closure-bound function. This approach is not necessary
to avoid https://docs.angularjs.org/error/ng/cpws in
this circumstance. WTD-1515
Check for existence of context capability from Remove action
during navigation check. This avoids an exception that
appears to have been swallowed in earlier versions of
Angular.
Invoke the destroy methods of any active representers when
a scope is destroyed; supports time controller, which needs
to accurately track when it has or hasn't been attached to
a view. WTD-1515
Provide an undefined identity by default, instead of
an Unknown User. This suppresses display of identity-related
features (such as the identity indicator) while still
providing a default implementation of the identityService
for platform components to utilize. nasa/openmctweb#99
open #95
New themes bundle files, .scss and directories;
Moved constants definitions (mainly colors) from commonUI/.../_constants
to individual themes _constants files;
tweaks to mixins files;
changed pathways to font and images in commonUI/.../_constants;
open #95
IN-PROGRESS!;
Mostly buttons and menus classes (s-btn and s-menu);
Removed unused templates and .css files;
Normalized some button containers;
[Identity] Add identity service
1. Changes appear to address issue? Y
2. Appropriate unit tests included? Y
3. Code style and in-line documentation are appropriate? Y
4. Commit messages meet standards? Y
Separate out location property from the CreationService,
instead handle in the entanglement bundle; this is
consistent with changes for identity management (attaching
a creator to newly-created domain object models).
for nasa/openmctweb#92
Expose creation service as a provider of a composite service;
this allows it to be decorated by the identity bundle to
attach a creator, for nasa/openmct#92
open #95
Moved styles from initialization.scss to user-environ/_layout;
forms.scss, items.scss, tree.scss includes moved into main.scss;
Removed forms.css, items.css, tree.css,
Removed initialization.scss, tree.scss
...when an object hasn't been previously persisted. This allows
for compatibility with persistence services which disallow
updates for nonexistent objects (which is not abnomal behavior.)
nasa/openmctweb#92
open #74
New mixins to prefix '-webkit-' to props and vals;
'flex' classes use new webkit mixins;
Fixed flex layout of .object-browse-bar and
.context-available element;
Migrated CSS to remove small .scss include files;
Checks the Back Arrow in both checkRoot and
navigateToParent, also checks grandparent in both.
This allows the back arrow to hide in search when
context is unavailable.
Domainobjects that can hold an array of
domain objects return '[]' instead of
undefined, when checking for model.composition.
Now checks for empty array and navigates to layout/
folder that has no children.
open #74
Removed all styles for search-result-item
in search/_search.scss and significantly re-orged .tree-item in
_tree.scss and mobile/_tree.scss to control
search-result-item styles;
open #74
Re-applied changes to browse.html;
Added mobile/.../_search.scss;
Removed unused mobile/search/layout.scss;
Moved inclusion of search/_search.scss from tree.scss to main.scss;
open #74
.section-header and form-row styles changed in forms/_elems.scss;
significant changes to overlay in mobile: full-screen, close button, more;
tree hover bg changed to use rgba(#fff, 0.1);
removed "Hide title by default" in core/bundle.json;
open #74
Treeview pane darkened;
Spacing in frame tweaked;
#content-area in right pane hidden
when treeview expanded for
phone portrait only;
Removed mobile-pane and
desktop-browse classes from markup;
Tweaked remove action to return
on finding the object that is being removed and
checking if it can be navigated to. Also completed
tests for RemoveAction.
open #74
Widths and layout strategy fixed for label and
controls in form when appearing in mobile;
Overlay margins adjusted;
Cleaned up font size, line-height in tree items;
Adjusted the getOrientation of agentService to
inject the window instead of calling for it in
agentService. Also adjusted treeNodeController
for this. Added tests for the agentService's
getOrientation function.
open #74
Added name for "base" (unknown) type in core/bundle.json;
Fixes to grid-item .details element:
- ellipsize,
- type now displayed properly;
- number of items with correct plural syntax;
open #74
Made view-switcher visible when browsing via mobile;
Fixed class in browse.html markup from left-menu to left;
Moved object-browse-bar, top-bar classes from _controls into _layout;
Renamed and simplified menu widths in mobile _constants;
Really significant refactor of mobiles/_layout;
Tweaks in user-environ/_layout;
TO-DO: figure out why object-browse-bar flex styles not
working in mobile;
open #74
view-switcher in object browse and edit moved to precede
action buttons, with margin;
Re-located CSS for .btn, etc. from _controls.scss to _layout.scss;
Cleaned up line-spacing in object-header in .frame;
Remove Action merged to allow removal of
parent or current selected object, then
navigation to lowest existing parent if
currently located in deleted object.
On selecting a node in the tree, if the
user is on phone and in portrait, than
emit up to the browse controller to call
treeSlide(), which will hide the tree menu.
Also adjusted the agent service to properly
check for orientation using window.innerHeight/
Width. Also created function for the selection
of an object in BrowseController.
open #74
Attempting to layout using flex - not working;
See http://jsfiddle.net/charlesh88/cpf9zjts/9/ for working example;
New _flex.scss added;
This commit is changed elements that are mostly solid;
When an ascendant or parent or currently
selected object is removed the user is navigated
to the parent of the object being removed. Added variables
to RemoveAction test to test removing currently selected
domainObject.
open #74
CSS and markup changes for split pane holders;
drop shadow added to tree area;
Tree item cleanups;
This or earlier commit broke treeview nav action;
TO-DO: fix treeview nav action to hide menu;
open #74
CSS and markup changes for mobile,
particularly on grid-item;
Mod to behavior in tree for mobile nav:
leaf node grid-item click now navs to item;
Fixed info-button to work properly with mod to
infoButtonGesture.js;
Merge in latest in preparation to merge; WTD-1482
Conflicts:
platform/commonUI/browse/src/creation/CreationService.js
platform/core/src/models/RootModelProvider.js
platform/entanglement/src/services/LinkService.js
platform/entanglement/src/services/MoveService.js
Clarify naming of method for retrieving contextual location of a domain
object.
Default behavior for objects that do not have a context is to return
undefined. Note that default behavior is not specified and could change
if needed.
Updated the generic provider test. Removed index
checking from the generic search worker, because
that checking is already done (more efficiently)
in the generic search provider.
Created a search-menu template and corresponding controller.
Moved functions out of SearchController to SearchMenuController.
The two controllers share information through ngModel.
Set up bundle.json so that the search bar could
be a mct-control, but left the control itself
commented out because then CSS styling would not
work due to lack of access to parent elements.
The search menu now opens to having none of the types
checked, but 'ALL' checked. Checking anything besides
'ALL' unchecks 'ALL' and begins filtering search by
type.
Clicking on names of options in the search
menu will now toggle the checkboxes. The
filter options display now says when no
filters are selected. Slightly moved the
search menu to the left.
The scroll bar for the search results changes
height according to how many filter options
are displayed above it, without dissapearing
below the bottom of the page.
Make the 'Load more' button work with the
new filtered results. Added 'ALL' to the top
of the search menu which allows the user to
toggle all of the filtering options easily.
Use CHROME_BIN as the environment variable for nonstandard
Google Chrome binary locations; this is the same variable
used by Karma, so configuration is simplified. WTD-1505.
Addresses WTD-1506 (context menu does not disappear after
action is chosen); listen for click events on the menu
itself and dismiss the menu when these occur.
Use the parent id as the location for a model.
This greatly reduces the recursive work that must be done
during move operations to keep the location accurate.
Additionally, the locationService now implements a method
`persistLocation` which can be used to persist the current object
location as it's original location.
When moving an object that supports composition, child objects which
are originals must have their location updated as well. Children which
are links should not have their location updated, nor should any of
their children be updated.
MockLinkService.perform returns a promise for the linked domainObject.
When resolving the promise and not specifying an object to resolve it
with, it will resolve it with the domainObject that was originally
passed to it.
Add a script (to be executed with `npm run-script watch`) that
runs karma and watches for changes; rerunning tests whenever a
file is changed. Useful for local development.
When indexing items initially, the generic
provider listens for mutations in case an
item's composition changes, so it can then
index the new children.
When indexing items initially, the generic
provider listens for mutations in case an
item's composition changes, so it can then
index the new children.
Changed the controller to update the tree
display status when the search result
promise is fufilled, not before making the
search query.
Also chagned the loading increment from
5 to 20.
Moved the elasticsearch provider to
platform/persistence/elastic. Then moved
the search aggregator and the generic
provider into a services folder within
the search folder.
DomainObjects with a context capability also gain a LocationCapability.
This capability allows you to determine the location of the current
instance of a domain object, and also provides methods for determining
if the current instance of a domain object is a link, or if it is an
original.
Added styling to back and selection
arrow (tree). Also increased the space
allowed for selection arrow on tree item.
Info Button created on grid items for mobile.
Info bubble appears on tablet like desktop.
Also on mobile, info bubble fits to width.
New QueryService that returns if on iPhone.
Also formatted dialog box so that their is no
margin and takes up fullscreen on mobile.
Add initial architecture docs; remove docs folder
from gitignore, as the generated docs (which should
be ignored) have been moved to target/docs.
MissionControl/vista#21.
Slight tweak to the padding of the search view,
which affects where the top of the scroll bar
appears. Also removed the search scroll div
because it was unused.
The controller's loadMore function now sends
new queries to the search service if the
controller's full results list does not have
enough results in it to load more.
Added info button to grid/list items
on mobile. When the button is pressed,
info bubble appears for 750ms or the
same infobutton is pressed to dismiss
immediately.
The elasticsearch provider returns an empty
result when elasticsearch throws an error
(probably a bad request). This prevents the
aggregator from thinking that ES is loading
infinitely.
The aggregator now returns a result object similar
to that of the providers, but the hits array contains
domain objects rather than searchResult objects.
Also removed overly complicated filterRepeats
function from the aggregator and replaced it with a
simpler one.
The provider now returns an object that has
a hits property which contains what it
previously returned, and also a total property
which contains the total number of results.
Removed the name field from the ElasticSearch provider
search query string, so now it will check all of the
fields of the domain object (such as type).
Updated comments and documentation. Changed the generic
worker to return results as {id: score} key value pairs
rather than {id: {score: score}} format. Removed unused
getLatestResults and getLatestTimestamps functions from
the providers.
Removed the timestamp as an optional parameter
of the search aggregator's query(), and now it
instead automattically generates one before
querying the providers.
Also attempted to fix loading, but did not
complete (commented out).
The search service's interface now just consists
of the two functions query() and isLoading().
query() returns a promise for an array or results,
which eliminates the need for timeout polling like
was previously done. The search providers
have also been changed to reutrn promises.
When you are at the highest level the
back button fades out and is unclickable.
When you are able to go up a level the
back button appears/fades in and is
pressable. Also removed the object type
name from the header.
Cleaning up code in generic serach provider. Removed
unnecissary return statements. Moved indexing via web
worker from getItems() loop to within itemsHelper().
Commented out timeout, becuase seems unnecissary.
Changed all date.getTime() to Date.now(). Indexing
has undefined checking.
Removed the user-select option
for the context menu and bottom bar
on mobile. Also edited the folder
grid item so that its icon rep
size is not overly large.
Changed the generic search provider to index the
file tree only once when it is initially called.
This assumes that the contents of the file tree
will not change significantly within the course
of a use session (and some changes may be caught
by other search providers).
Context menu next to object header
now dismisses when touching away
from it. Also, when long touching
an object, the context menu appears.
Set on 500ms timeout.
Cleaned the unused code for the
backArrow and long touch gestures.
Commented out functions for later use
Currently shows the back arrow, however,
only will print to console on press.
Edited tests where mobile checks were breaking
and fixed.
Updated documentation. Removed most unused funtions.
Removed references to the search service in the
search template -- necissary functions added to
the search controller.
(Search in a 'working' state again.)
Moved the polling for most recent results
from the search controller to the search
aggregator.
Also changed ng-change back to ng-keyup
in the search template.
Added check to make sure
user is touching only one object.
Started contextmenugesture to be
long touch, however currently long
touch is still infogesture.
Rough touch hold gesture added
to the info gesture. Currently
if you hold on an item (that you
would normally hover over) for
500ms, you get the info gesture pop
up.
Made the search bar text input go to ngModel.input,
rather than getting the text manually from the DOM
element. Additionally, removed the search service
from the search controller's scope.
Moving the responsibility of polling for updates
from the search controller to the search aggregator.
In progress. Previously this prototype was what
could be called semi-stable, but now it is no longer.
Context menu only shown with contextmenu
click on desktops (non-mobile devices). Also
edited items list in a folder's representation
to show the icon on the left side, with text
centered horizontally (only mobile).
The tree is now hidden whenever there is
text in the search bar. (This allows for
the case when there are no search results,
but text in the search bar.)
Attempted to make the search results scroll,
but failed for now. Created a div for the
search results, load icon, and load more
button, which are the elements desired to
be scrolled. Did not work because search
result labels have absolute position text.
Removed the hover coloring on
the tree menu on mobile by changing
original** scss code. Also added
check in ContextMenuGesture that
will only allow context menu to appear
in non-mobile browser.
The search item highlight when selected or
hovered over is now talled, and the margin
between search items is reduced to
counteract any effect to spacing.
Added tests inside spec files
for the QueryService, TreeNodeController,
and InfoGesture. Also cleaned up the
tree so that padding is used between
buttons instead of margins.
Selecting something in the search results now
also makes it selected in the filetree. It
remains selected even when the search results
are cleared. (The filetree does not
automatically expand to that position though.)
Changed how frequently the search controller
checks for updates. This makes the load icon
dissapear faster, and looks more natural. But,
may affect performance.
Also changed the point at which the loading
status becomes 'true'. Made it earlier, at
the beginning of the controller's update().
The selected object in the search results now
remains selected even after a new search is made.
It also will remain selected if it is clicked
on the file tree, but the file tree version is
not yet selected if it is clicked on the search
results list.
Removed the awkward spacing between the filetree
and the search bar. Now 'My Items' appears just
below the search bar.
Also added .search-holder to the sass, but haven't
done anything with it yet.
More correctly centered the load more button,
so that when the left panel is resized,
the button remains in the middle.
Additionally, added more comments to the sass.
When there is no input into the search bar
no results are displayed/displayed results
are removed. This is because the search
providers were changed to return empty
arrays for empty search strings.
Starting to modify the front-end so that
the searchbar appears in the tree view
area. Made the tree holder have relative
position so that the searchbar is visibile
for now. (Later will be different.)
Updating the searchbar to be again more
similar to the search view. It now has
a 'load more' button, but it is not
clickable for some reason. In progress.
Previously had removed the elasticsearch provider
from bundle.json so could work on the generic
search web worker. Now have modified the
elasticsearch provider to match the new interface
with the aggregator, and it works.
At this point, search is 'working'
The interface remains the same, but the web worker
returns a pseudo dictionary (actually an object)
after being told the search. The key value pairs
for this dictionary are ids and scores.
The search controller now updates the display
results list, then repeatedly asks the
aggregator to update until the timestamps
all are at least as new as the one that the
controller originally gave for the query.
Basically, the search now updates correctly
without having to press enter again.
Reformats menu to move the
arrow to the right and now
that is what selects an object.
Pressing the actual menu item will
enact the dropdown menu. This
only happens on mobile platforms.
The search aggregator now correctly gets
from the providers, but because of not
sync, the display is effectively one press
behind the correct search results.
Still, working to some extent.
Removed the paging from the search view,
because later instead of paging there will
be a 'view more' option.
Also made the generic search provider
return searchResult objects instead of
raw domain objects.
(Temporariliy removed the elasticsearch provider
from bundle.json)
Added a timestamp parameter to the query so that
the aggregator can tell when the results were last
updated. Created a separate function for getting
the results list. GenericSearch now converts back
from models to domain objects after the web worker
does its work.
Connecting GenericSearch to the web worker is still
in progress. The aggregator currently gets the
results before the web worker is finished. In process
of fixing sync issue.
Changed the search aggregator's filterRepeats
function to choose the version of the searchResult
object that has the higher score, when it
encounters multiple searchResult objects
corresponding to a domain object ID.
Also changed the search providers and aggregator
such that the validType parameter is now optional,
with a function that always returns true as the
defualt.
Changed the providers to return only the first
search result. Each searchResult object has a
function next() which returns the next search
result. This allows the search aggregator to
load more results without making a whole new
search query. (Still requuires some cleaning
up.)
Added a time limit for generic search's indexing
of the filetree, at which point it will just
return the portion of the filetree it has
indexed.
Additioanlly attempted to move this part of
the functionality to a webworker, but is not
working because of unclonability of the
objects. (Commented out)
Also updated some documentation comments.
Right pane sets the size of itself,
causing the left pane to re-adjust
to fit the screen based on it. Also
transitions work on the slide and the
fade in.
Changed how the generic search provider determines
search matches. It now splits the search input into
search terms by spliting at spaces, and then scores
the results by how many of the terms appear as
substrings in the result.
Added validType() as a callback parameter to the search
providers. It is defined in the search aggregator, and
is used to put any restrictions on object type in the
displayed search results.
Renamed EverythingSearchProvider to GenericSearchProvider.
Changed the controller for the search input
to respond on keypress rather than keyup.
Added comments better explaining searchResult
objects to the search aggregator.
Set the width of the create menu
text/components to fit the menu
however it gets cuttoff sometimes.
Next steps are to Clean up screen,
change the create menu to fit the left side,
and fix bottom space.
The search aggregator now merges search
results from different providers better.
It removed duplicate results, and orders
the list of results from highest to
lowest score.
Specifies amounts based on phone and tablet's
orientation. Not tested for the actual device,
but emulator. Also currently makes the create
button appear/disappear instead of smoothly sliding.
Renamed QueryService as SearchService and changed
the corresponding references to it. Added a
SearchAggregator file and related files. Not
yet begun with the implementation.
Changed the default number of results to be
a max of 25, and added a parameter to allow
the user to set this. (May be used in an
advaned search later?) Because folders are
filtered out, the number displayed is not
necissarily exact.
Seaching any substring of a domain
object title now will give the domian
object as a search result. Still not
case sensitive. Empty string will
return all results. Special characters
do not search correctly. Still has
result number cap.
Seach now searches using terms, which
are the domain objects' names split
at the spaces. Still does not work with
any substring, must be space separated.
Not case sensitive.
Adjusted the desktop to accomodate browser
orientation changes. Done so by forgoing
checking the orientation because the
actual device can be in landscape, but it
reads orientation based on the viewport.
Adds 2 landscape conditions for tablets and
phones to check if they are in landscape, in
the actual tablet, or in an emulate of the tablet,
then it displays.
Now instead of min-width, max-width,
... etc, uses the device-width/height.
This allows the devices to use the slide
menu while the browser on a desktop
consistently stays as desktop mode, no
matter if it is resized. As a result of this
the rwd is clear on phones/tablets, but not if
user resizes browser super small.
Menu slides, but not transition
css slides out on click. Currently
uses document, which needs to be
replaced with angular version using
and/or and/or
ng-class and/or ng-click.
Previously any click on the context menu would
close the context menu rather than doing the
appropriate action. This is now fixed. The menu
only closes when a click happens not on the
menu. #33.
Splitting up the context menu gesture's functionality into
separate context menu gesture and context menu actions.
The gesture watches for right-clicks, while the action
displays the menu. #33.
Reload the bundle file from disk when requested, re-applying any
includes or excludes that were specified on the command line.
Allows a developer to make changes to bundles.json without having to
restart the server for them to take effect.
The context menu gesture is called when the user clicks
the arrow next to the title of a domain object. This does
not yet display the context menu. It also does not yet
distinguish between edit and browse mode. #33.
WTD-1392
WTD-1360
WTD-1394
New minus symbol added to font;
Updated folder symbols art;
CSS tweaked for reset button (WTD-1394) and direction sign;
Font project file updated;
(cherry picked from commit f6c7d8e)
WTD-1392
WTD-1367
WTD-1391
Some significant reorging in _menus.scss and _constants;
Create menu normalized with context menu styles;
Bottom bar of overlay overflow set to visible to prevent button clipping;
WTD-1392
WTD-1359
Set "Open in new tab" button to have priority "preferred";
Set fullscreen mode button to priority "default";
Tweaked full screen button tooltip text;
urlService added to the edit action
bundle.json in addition to being
implemented, however 2nd time edit
bug still occurring. Also fixed urlService
test suite. WTD 23.
WTD-1341
(cherry picked from commit 5151637 in warp1341)
telemetry.html now uses data-value instead of class;
Mods to effects.scss to add customKeyframes mixin;
Added default transition time to mixin trans-prop-nice in mixins.scss;
Mark default as prevented and check for prevention of
default when handling mctDrop events (which allow
views to follow up on drop gestures by positioning
objects within themselves) avoiding redundant drops
into embedded views. WTD-1233.
Added Unit test adjustments for
the change in urlService (addition
of a separate function for getting
the url for a location, used by browse
controller. WTD 23.
The URL malformation was caused by the same
function returning the view and index path for
both the newtab window and the browse controller
window. As a result, the BrowseController now only
uses a path that excludes the view and index paths,
like before the UrlService was added. Another,
separate function uses this url for the location
and includes the view and index paths for new
tabs, in order to maintain the current view. WTD 23.
The Messages view policy now will allow any object
that has a telemetry type of string to have access
to the Messages view, not just Event List
Generators. (The test for this still does not work
though.) #18.
Adjusted BrowseController's useRoute
to use the urlService instead. Also
adds urlService as a depency through
bundle. Unit test also adjusted to
account for a mockUrlService and
a different value being passed into
mockLocation.path(). WTD 16.
WTD-980
WTD-396
Changed glyph for stacked plots;
Normalized button line-heights and size of required symbol;
Updated symbol art in symbols font;
Restored mistakenly removed "menu" gesture to grid-item;
Changed where in the code the row are reveresd
(wrt scrolling lists) so that the most recent
messages are on the bottom. The rows are now in
the correct order from getRows, rather then
updateRows. #18.
Allow listeners to register with a domain object's
mutation capability to detect changes to that
domain object. Allows other components to respond
to these changes without resorting to polling on
timestamp or similar. WTD-1329.
Event telemetry generator now works again, giving a timestamp
and a message string. Additionally, removed excess files which
previously were used for the EventListController. #18.
Made the EventListController use domain and range types, rather
than severity, domain, and event message. This allows it to be
more generalized, which should be helpful with different data
formats later on. #18.
The scroll position now moves down when a new row is added
to the data table. This means that when the scroll position
is at the bottom, it will stay there, even with new updates
adding onto the botton. #18.
Changed scrollDirection to ascendingScroll, which acts like
a boolean. Now there is proper communication between the
html and the directive itself. #18.
Created an mct-data-table directive. We are able to detect changes in
the height of the table now, which will be used to determine
any corresponding scrolling. #18.
Alerts user of the current path
using an alert window, however
the path is partially shown.
It is the part of the current
path after index.html#. WTD-16.
Completes Unit Test. Added a new file:
NewWindowActionSpec.js, which performs the
Jasmine test for NewWindowAction.js. The
test specifies a mockWindow with a mockUrl
and then adds both to a NewWindowAction.
Also suite.json contains the NewWindowActon
path. In order for NewWindowAction.jsWTD-16.
to be reached. WTD-16.
Adjusted the SASS file to
not hide the new window button. Also
removed the overwrite metadata function
that was used to temprarily allow us to
view the new window button. WTD-16.
When viewing an event message generator new messages are now added to the
bottom of the display, rather than being added to the top and pushing
the other messages down by one. #18.
Currently overwrites metadata
similar to the FullScreenAction in order
to temporarily display the new window button
until the css is modified to do so. WTD-16
Added CSS class "bubble-container" to BUBBLE_TEMPLATE;
bubble-container utilizes CSS "pointer-events: none";
Changed INFO_HOVER_DELAY constant from 500ms to 2000ms;
Removed commented out code that
alerts the user if they cannot
perform a drag and drop. Inserted a
comment marking where an alert can be placed
Issue 11.
GitHub-12
Added CSS class "bubble-container" to BUBBLE_TEMPLATE;
bubble-container utilizes CSS "pointer-events: none";
Changed INFO_HOVER_DELAY constant from 500ms to 2000ms;
Trust resource URLs to skip SCE-checking (which profiling
flags as a performance problem) for mct-include and
mct-representation; these URLs are pulled from bundles and
not user-entered, so should be trusted. WTD-1256.
Disallows drag and drop during browse mode,
unless dragging and dropping into a folder
view. Allows drag and drop into a layout view
only in edit mode also. Can be unit tested now.
WTD-11.
In Edit mode, don't bother wrapping domain objects which should
not be edited even in principle. Avoids insulating these objects
from updates which occur asynchronously, which in turn avoids
WTD-1291.
Work around normal behavior of Angular when path changes;
instead of reinstantiating controller for Browse mode
when Browse-initiated path changes occur, act as if the
route hadn't changed (so that the URL updates but the
currently-displayed state, e.g. tree expansion, is
preserved.) WTD-1149.
WTD-951
layout.html:
Added classes to and removed inline styles from drag handles,
Removed edge handles, leaving corner handles in NW, SW and SE only;
Added hover classes to display corner handles while editing;
Modified z-indexing to allow view switcher to be accessed while editing;
WTD-1247
WTD-884
Changed CSS .l-infobubble-wrapper abs > relative;
Added display: block class for mct-container;
Tweaked bubble evaluation JS for 'goLeft' behavior;
Added constants for bubble max width and left/right margin;
WTD-1248
WTD-884
Changed z-index of context menus and bubbles to put the menus above;
Changed text wrapping of 'value' td to no-wrap;
Changed min and max-width of .l-infobubble;
WTD-839
.t-view-switcher > .view-switcher;
Added CSS transition to hide/show of view-switcher;
Moved .view-switcher hide/show to _frame.scss;
Tweaked .frame:hover to raise z-index to show complete border;
WTD-839
Removal of 'icon-btn' class from *.html;
Cleanup of markup in switcher.html;
'name' span is now hidden when switcher is within frame;
Commented out unused css classes in _controls.scss,
Normalization of markup in object header when in main view and framed objects;
Icon sizing fixed in menus and switcher control;
Tightened up spacing in menus;
WTD-839
Refactoring in advance of style mods to switcher when in frame;
Moved btn styles from _controls.scss to _buttons.scss;
Markup cleaned up with css classing simplified;
Remove linear search for unused positions when queuing telemetry
updates; instead, track available positions such that insertion
is more performant at a modest cost (bound to the number of subscriptions)
of retrieval. Additionally, add implementation notes in-line.
WTD-1202.
Add a bundle which contains view for image telemetry.
Template is a placeholder; view is restricted by policy
to telemetry-providing domain objects which actually have
image telemetry. WTD-1170.
Merge in latest from master branch into topic branch for
limits, WTD-1223.
Conflicts:
platform/commonUI/general/res/css/forms.css
platform/commonUI/general/res/css/plots.css
platform/commonUI/general/res/css/theme-espresso.css
platform/commonUI/general/res/css/tree.css
platform/commonUI/general/res/sass/_fixed-position.scss
platform/commonUI/general/res/sass/plots/_plots-main.scss
platform/features/scrolling/res/templates/scrolling.html
Change the path used to import moment for the telemetryFormatter.
Previously, a relative path was used; since telemetryFormatter was
initially implemented, however, moment has been made available as
simply moment by require configuration changes elsewhere. Inconsistent
usage of moment here can result in load timeouts under certain
script load orderings. Changed in the context of WTD-884 (which does
use moment elsewhere.)
Refine positioning to behave correctly when mouse is on
right and/or lower part of screen; listen for scope
destruction to avoid cases where an element is removed
before mouseleave is ever called. WTD-884.
When switching among domain objects and/or views, avoid
reusing the same information is scope. The wrong information
in scope can cause various failures in views, such as WTD-1182.
WTD-1172
Added stale CSS in _data-status.scss;
Added pulse animation in _effects.scss, not used;
Removed temp-limits directory and files;
Sanding and refining of limits styles and in .tabular;
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
@ -135,7 +135,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
* Link: http://requirejs.org/
* Version: 2.1.9
* Version: 2.1.22
* Author: The Dojo Foundation
@ -153,13 +153,49 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
---
### requirejs-text
#### Info
* Link: https://github.com/requirejs/text
* Version: 2.0.14
* Author: The Dojo Foundation
* Description: Text loading plugin for RequireJS
#### License
Copyright (c) 2010-2014, The Dojo Foundation
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.
---
### AngularJS
#### Info
* Link: http://angularjs.org/
* Version: 1.2.26
* Version: 1.4.4
* Author: Google
@ -167,7 +203,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
#### License
Copyright (c) 2010-2014 Google, Inc. http://angularjs.org
Copyright (c) 2010-2015 Google, Inc. http://angularjs.org
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:
@ -183,7 +219,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
* Link: http://angularjs.org/
* Version: 1.2.26
* Version: 1.4.4
* Author: Google
@ -191,7 +227,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
#### License
Copyright (c) 2010-2014 Google, Inc. http://angularjs.org
Copyright (c) 2010-2015 Google, Inc. http://angularjs.org
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:
@ -207,7 +243,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
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.
---
### Modernizr
#### Info
* Link: http://modernizr.com
* Version: 2.6.2
* Author: Faruk Ateş
* Description: Browser/device capability finding
#### License
Copyright (c) 2009–2015
Copyright (c) 2010-2012 Robert Kieffer
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:
@ -327,7 +339,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
* Link: http://momentjs.com
* Version: 2.7.0
* Version: 2.11.1
* Authors: Tim Wood, Iskren Chernev, Moment.js contributors
@ -345,6 +357,139 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
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.
---
### Zepto
#### Info
* Link: http://zeptojs.com/
* Version: 1.1.6
* Authors: Thomas Fuchs
* Description: DOM manipulation
#### License
Copyright (c) 2010-2016 Thomas Fuchs
http://zeptojs.com/
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.
---
### Json.NET
#### Info
@ -415,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,83 +113,33 @@ 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.
### Bundle Contents
A bundle directory will contain:
*`bundle.json`, the declaration of the bundles contents.
* A source code directory, named `src` by convention. This contains all
JavaScript sources exposed by the bundle. These are declared as
AMD modules.
* A directory for other resources, named `res` by convention. This
contains all HTML templates, CSS files, images, and so forth to be
used within a given bundle.
* A library directory, named `lib` by convention. This contains all
external libraries used and/or exposed by the bundle.
* A test directory, named `test` by convention. This contains all unit
tests declared for the bundle, as well as a `suite.json` that acts
as a listing of these dependencies. See the section on unit testing
below.
Following these bundle conventions is required, at present, to ensure
that Open MCT Web (and its build and tests) execute correctly.
## Tests
The repository for Open MCT Web includes a test suite that can be run
directly from the web browser, `test.html`. This page will:
Tests are written for [Jasmine 1.3](http://jasmine.github.io/1.3/introduction.html)
and run by [Karma](http://karma-runner.github.io). To run:
* Load `bundles.json` to determine which bundles are in the application.
* Load `test/suite.json` to determine which source files are to be tested.
This should contain an array of strings, where each is the name of an
AMD module in the bundle's source directory. For each source file:
* Code coverage instrumentation will be added, via Blanket.
* The associated test file will be loaded, via RequireJS. These will
be located in the bundle's test folder; the test runner will presume
these follow a naming convention where each module to be tested has a
corresponding test module with the suffix `Spec` in that folder.
* Jasmine will then be invoked to run all tests defined in the loaded
test modules. Code coverage reporting will be displayed at the bottom
of the test page.
`npm test`
At present, the test runner presumes that bundle conventions are followed
as above; that is, sources are contained in `src`, and tests are contained
in `test`. Additionally, individual test files must use the `Spec` suffix
as described above.
The test suite is configured to load any scripts ending with `Spec.js` found
in the `src` hierarchy. Full configuration details are found in
`karma.conf.js`. By convention, unit test scripts should be located
alongside the units that they test; for example, `src/foo/Bar.js` would be
tested by `src/foo/BarSpec.js`. (For legacy reasons, some existing tests may
be located in separate `test` folders near the units they test, but the
naming convention is otherwise the same.)
An example of this is expressed in `platform/framework`, which follows
bundle conventions.
### Test Reporting
## Build
Open MCT Web includes a Maven command line build. Although Open MCT Web
can be run as-is using the repository contents (that is, by viewing
`index.html` in a web browser), and its tests can be run in-place
similarly (that is, by viewing `test.html` in a browser), the command
line build allows machine-driven verification and packaging.
This build will:
* Check all sources (excluding those in directories named `lib`) with
JSLint for code style compliance. The build will fail if any sources
do not satisfy JSLint.
* Run unit tests. This is done by running `test.html` in a PhantomJS
browser-like environment. The build will fail if any tests fail.
* Package the application as a `war` (web archive) file. This is
convenient for deployment on Tomcat or similar. This archive will
include sources, resources, and libraries for bundles, as well
as the top-level files used to initiate running of the application
(`index.html` and `bundles.json`).
Run as `mvn clean install`.
When `npm test` is run, test results will be written as HTML to
`target/tests`. Code coverage information is written to `target/coverage`.
# Glossary
Certain terms are used throughout Open MCT 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
@ -115,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
@ -136,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)
- [Get rid of views, representations, and templates.](#get-rid-of-views-representations-and-templates)
- [Reducing interface depth (The angular discussion)](#reducing-interface-depth-the-angular-discussion)
- [More angular: for all services](#more-angular-for-all-services)
- [Less angular: only for views](#less-angular-only-for-views)
- [Standard packaging and build system](#standard-packaging-and-build-system)
- [Use systemjs for module loading](#use-systemjs-for-module-loading)
- [Use gulp or grunt for standard tooling](#use-gulp-or-grunt-for-standard-tooling)
- [Package openmctweb as single versioned file.](#package-openmctweb-as-single-versioned-file)
- [Misc Improvements](#misc-improvements)
- [Refresh on navigation](#refresh-on-navigation)
- [Move persistence adapter to promise rejection.](#move-persistence-adapter-to-promise-rejection)
- [Remove bulk requests from providers](#remove-bulk-requests-from-providers)
- [Notes on current API proposals:](#notes-on-current-api-proposals)
- [[1] Footnote: The angular debacle](#1-footnote-the-angular-debacle)
- ["Do or do not, there is no try"](#do-or-do-not-there-is-no-try)
- [A lack of commitment](#a-lack-of-commitment)
- [Commitment is good!](#commitment-is-good)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
# Reducing interface depth (the bundle.json version)
## 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 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.
The concept of an "extension category" is itself an extraneous concept-- an extra layer of interface depth, an extra thing to learn before you can say "hello world". Extension points should be clearly supported and documented with whatever interfaces make sense. Developers who wish to add something that is conceptually equivalent to an extension category can do so directly, in the manner that suites their needs, without us forcing a common method on them.
## Reduce number and depth of extension points
Clearly specify supported extension points (e.g. persistence, model providers, telemetry providers, routes, time systems), but don't claim that the system has a clear and perfect repeatable solution for unknown extension types. New extension categories can be implemented in whatever way makes sense, without prescribing "the one and only system for managing extensions".
The underlying problem here is we are predicting needs for extension points where none exist-- if we try and design the extension system before we know how it is used, we design the wrong thing and have to rewrite it later.
## Composite services should not be the default
Understanding composite services, and describing services as composite services can confuse developers. Aggregators are implemented once and forgotten, while decorators tend to be hacky, brittle solutions that are generally needed to avoid circular imports. While composite services are a useful construct, it reduces interface depth to implement them as registries + typed providers.
You can write a provider (provides "thing x" for "inputs y") with a simple interface. A provider has two or more methods:
* a method which takes "inputs y" and returns True if it knows how to provide "thing x", false otherwise.
* one or more methods which provide "thing x" for objects of "inputs y".
Actually checking whether a provider can respond to a request before asking it to do work allows for faster failure and clearer errors when no providers match the request.
## Get rid of views, representations, and templates.
Templates are an implementation detail that should be handled by module loaders. Views and representations become "components," and a new concept, "routes", is used to exposing specific views to end users.
`components` - building blocks for views, have clear inputs and outputs, and can be coupled to other components when it makes sense. (e.g. parent-child components such as menu and menu item), but should have ZERO knowledge of our data models or telemetry apis. They should define data models that enable them to do their job well while still being easy to test.
`routes` - a view type for a given domain object, e.g. a plot, table, display layout, etc. Can be described as "whatever shows in the main screen when you are viewing an object." Handle loading of data from a domain object and passing that data to the view components. Routes should support editing as it makes sense in their own context.
To facilitate testing:
* routes should be testable without having to test the actual view.
* components should be independently testable with zero knowledge of our data models or telemetry APIs.
Component code should be organized side by side, such as:
```
app
|- components
|- productDetail
| |- productDetail.js
| |- productDetail.css
| |- productDetail.html
| |- productDetailSpec.js
|- productList
|- checkout
|- wishlist
```
Components are not always reusable, and we shouldn't be overly concerned with making them so. If components are heavily reused, they should either be moved to a platform feature (e.g. notifications, indicators), or broken off as an external dependency (e.g. publish mct-plot as mct-plot.js).
# Reducing interface depth (The angular discussion)
Two options here: use more angular, use less angular. Wrapping angular methods does not reduce interface depth and must be avoided.
The primary issue with angular is duplications of concerns-- both angular and the openmctweb platform implement the same tools side by side and it can be hard to comprehend-- it increases interface depth. For other concerns, see footnotes[1].
Wrapping angular methods for non-view related code is confusing to developers because of the random constraints angular places on these items-- developers ultimately have to understand both angular DI and our framework. For example, it's not possible to name the topic service "topicService" because angular expects Services to be implemented by Providers, which is different than our expectation.
To reduce interface depth, we can replace our own provider and registry patterns with angular patterns, or we can only utilize angular view logic, and only use our own DI patterns.
## More angular: for all services
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:
If we wish to use less angular, I would recommend discontinuing use of all angular components that are not view related-- services, factories, $http, etc, and implementing them in our own paradigm. Otherwise, we end up with layered interfaces-- one of the goals we would like to avoid.
# Standard packaging and build system
Standardize the packaging and build system, and completely separate the core platform from deployments. Prescribe a starting point for deployments, but allow flexibility.
## Use systemjs for module loading
Allow developers to use whatever module loading system they'd like to use, while still supporting all standard cases. We should also use this system for loading assets (css, scss, html templates), which makes it easier to implement a single file deployment using standard build tooling.
## 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.
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.
## Package openmctweb as single versioned file.
Deployments should depend on a specific version of openmctweb, but otherwise be allowed to have their own deployment and development toolsets.
Customizations and deployments of openmctweb should not use the same build tooling as the core platform; instead they should be free to use their own build tools as they wish. (We would provide a template for an application, based on our experience with warp-for-rp and vista)
Installation and utilization of openmctweb should be as simple as downloading the js file, including it in your own html page, and then initializing an app and running it. If a developer would prefer, they could use bower or npm to handle installation.
Then, if we're using imperative methods for extending the application we can use the following for basic customization:
This packaging reduces the complexity of managing multiple deployed versions, and also allows us to provide users with incredibly simple tutorials-- they can use whatever tooling they like. For instance, a hello world tutorial may take the option of "exposing a new object in the tree".
```javascript
varmyApp=newOpenMCTWeb();
myApp.roots.addRoot({
id:'myRoot',
name:'Hello World!',
});
myApp.routes.setDefault('myRoot');
myApp.run();
```
# Misc Improvements
## Refresh on navigation
In cases where navigation events change the entire screen, we should be using routes and location changes to navigate between objects. We should be using href for all navigation events.
At the same time, navigating should refresh state of every visible object. A properly configured persistence store will handle caching with standard cache headers and 304 not modified responses, which will provide good performance of object reloads, while helping us ensure that objects are always in sync between clients.
View state (say, the expanded tree nodes) should not be tied to caching of data-- it should be something we intentionally persist and restore with each navigation. Data (such as object definitions) should be reloaded from server as necessary to restore state.
## Move persistence adapter to promise rejection.
Simple: reject on fail, resolve on success.
## Remove bulk requests from providers
Aggregators can request multiple things at once, but individual providers should only have to implement handling at the level of a single request. Each provider can implement it's own internal batching, but it should support making requests at a finer level of detail.
Excessive wrapping of code with $q.all causes additional digest cycles and decreased performance.
For example, instead of every telemetry provider responding to a given telemetry request, aggregators should route each request to the first provider that can fulfill that request.
# Notes on current API proposals:
* [RequireJS for Dependency Injection](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#requirejs-as-dependency-injector): requires other topics to be discussed first.
* [Arbitrary HTML Views](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#arbitrary-html-views): think there is a place for it, requires other topics to be discussed first.
* [Wrap Angular Services](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#wrap-angular-services): No, this is bad.
* [Bundle definitions in Javascript](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#bundle-declarations-in-javascript): Points to a solution, but ultimately requires more discussion.
* [pass around a dependency injector](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#pass-around-a-dependency-injector): No.
* [remove partial constructors](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#remove-partial-constructors): Yes, this should be superseded by another proposal though. The entire concept was a messy solution to dependency injection issues caused by declarative syntax.
* [Rename views to applications](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#rename-views-to-applications): Points to a problem that needs to be solved but I think the name is bad.
* [Provide classes for extensions](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#provide-classes-for-extensions): Yes, in specific places
* [Expose no third-party APIs](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#expose-no-third-party-apis): Completely disagree, points to a real problem with poor angular integration.
* [Register Extensions as Instances instead of Constructors](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#register-extensions-as-instances-instead-of-constructors): Superseded by the fact that we should not hope to implement a generic construct.
* [Nomenclature Change](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#nomenclature-change): Yes, hope to discuss the implications of this more clearly in other proposals.
* [Capabilities as mixins](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#capabilities-as-mixins): Yes.
* [Remove appliesTo methods](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#remove-applies-to-methods): No-- I think some level of this is necessary. I think a more holistic approach to policy is needed. it's a rather complicated system.
* [Revise telemetry API](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#revise-telemetry-api): If we can rough out and agree to the specifics, then Yes. Needs discussion.
* [Allow composite services to fail gracefully](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#allow-composite-services-to-fail-gracefully): No. As mentioned above, I think composite services themselves should be eliminated for a more purpose bound tool.
* [Plugins as angular modules](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#plugins-as-angular-modules): Should we decide to embrace Angular completely, I would support this. Otherwise, no.
* [Contextual Injection](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#contextual-injection): No, don't see a need.
* [Add New Abstractions for Actions](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#add-new-abstractions-for-actions): Worth a discussion.
* [Add gesture handlers](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#add-gesture-handlers): Yes if we can agree on details. We need a platform implementation that is easy to use, but we should not reinvent the wheel.
# [1] Footnote: The angular debacle
## "Do or do not, there is no try"
A commonly voiced concern of embracing angular is the possibility of becoming dependent on a third party framework. This concern is itself detrimental-- if we're afraid of becoming dependent on a third party framework, then we will do a bad job of using the framework, and inevitably will want to stop using it.
If we're using a framework, we need to use it fully, or not use it at all.
## A lack of commitment
A number of the concerns we heard from developers and interns can be attributed to the tenuous relationship between the OpenMCTWeb platform and angular. We claimed to be angular, but we weren't really angular. Instead, we are caught between our incomplete framework paradigm and the angular paradigm. In many cases we reinvented the wheel or worked around functionality that angular provides, and ended up in a more confusing state.
## Commitment is good!
We could just be an application that is built with angular.
An application that is modular and extensible not because it reinvents tools for providing modularity and extensibility, but because it reuses existing tools for modularity and extensibility.
There are benefits to buying into the angular paradigm: shift documentation burden to external project, engage a larger talent pool available both as voluntary open source contributors and as experienced developers for hire, and gain access to an ecosystem of tools that we can use to increase the speed of development.
There are negatives too: Angular is a monolith, it has performance concerns, and an unclear future. If we can't live with it, we should look at alternatives.
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.