* no-implicit-coercion and no-unneeded-ternary
* End every line with a semicolon
* Spacing and formatting
* Enabled semi-spacing
* Applies npm run lint:fix to code after master merge
* Fix merge issues
* Switched operator-linebreak to 'before'
Co-authored-by: Joshi <simplyrender@gmail.com>
* [Snapshots] Are holding on to outdated domainObjects when clicking on preview #3078
* #3250 : [Preview] Preview window should not have any context menu actions
* cleanup: removed redundant code
- Fixed incorrect CSS naming: `c-frame-edit__move` changed to
`c-frame__move-bar`;
- Fixed `display: contents` that was erroneously applied to
`u-angular-object-view-wrapper` and preventing styling from being
applied to plots, renamed class to `.l-angular-ov-wrapper`;
- Removed commented CSS;
* add ability to remove tabs from tabs view interface (#3147)
* an "X" on each tab is visible in edit mode
* replaced custom removeDialog with openmct.overlays.dialog
* Minor mods to markup and CSS
- Changed tab from button to div to allow a cleaner approach to the
nested close button;
- Changed close "icon-x" span to a button and added `c-click-icon` style
tag;
- Tweaked class naming to simplify and align with a more functional/
descriptive approach;
* use ES6 arrow func to avoid self=this
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
Co-authored-by: charlesh88 <charlesh88@gmail.com>
- Added min-width and min-height to Display Layout lines to allow
easier selection and move when line is purely vertical or horizontal;
- Fixed spacing, size and icon of overlay close button;
* UI enhancements for #3176
- Large overlay now displays fullscreen;
* UI enhancements for #3176
- Adding new ".is-in-small-container" CSS - VERY WIP!
- TODO: fix table implementation;
* UI fixes for NIRVSS client #170
- Hide table header filter inputs when table is in small container;
* UI fixes for NIRVSS client #170
- Fixing legends and plot layout when small, and within a stacked plot;
- Add new `hideLegendWhenSmall` property;
- Remove 'hidden' from plot legend position options;
- Reduced opacity of tabular headers in Espresso theme;
- VERY, VERY WIP right now!
* UI fixes for NIRVSS client #170
- Fixing legends and plot layout when small, and within a stacked plot;
- Cleanups, indention, removed commented CSS;
- Tightened up spacing in plot Y axis;
* UI enhancements for #3176
- Move local controls for plots and imagery, prevent overlapping with
view large button when in a hidden frame in a layout;
- Finesse local control styling for increased legibility;
- Move l-state-indicators to avoid overlap with repositioned local
controls, finesse styling;
* UI enhancements for #3176
- Tweak large overlay close button for better visual alignment;
* UI enhancements for #3176
- Significant improvements to lines in Display Layouts;
- Increased border-width for lines and boxes;
- Code enhanced for proper handling of horizontal and
vertical lines - but still isn't working properly;
- Renamed box-view.scss to box-and-line-views.scss;
- VERY WIP!
* Fixed incorrect grid array reference
* UI enhancements for #3176
- Fixed final issue with Display Layout line drawing object, thank you
@deeptailor!;
* UI enhancements for #3176
- Contrast enhancements and markup normalization for `c-object-label`
elements in main view, Layout frames, Inspector and overlay;
- Enhanced `l-overlay-large` layout;
- Tightened up margins and spacing in plots;
- Refined `is-paused` styling in Telemetry Tables;
- Now hide Telemetry Tables 'Export Data' button if rows are selected,
which use a separate export button;
- Layout frames now hide button's text labels when small;
- Layout frames spacing tightened up and improved;
* UI enhancements for #3176
- Tweak Snow theme constants;
* UI enhancements for #3176
- Fixed ObjectFrame getOverlayElement method, added a wrapper div
around the viewed object to properly control resulting layout in the
overlay;
- Simplified preview CSS to remove background, border and padding;
- Layout tweaks to add space between scrollbar and thumbs in Imagery
view;
- Removed dev "-info" element in LineView.vue;
* UI enhancements for #3176
- Improved styling for 'edit lock' button;
* UI enhancements for #3176
- Show Display Layout frame "-move" bar on hover, rather than select, to
make it easier to select items with hidden frames, and only show -move
bar's drag grippy when that frame is selected;
- `pointer-events: none` applied to table's body and plot's plot areas
when placed in a Layout and being edited, prevents distracting
interactions (plot zoom/pan, table row selection) when selecting and
moving elements in a Layout;
- Refined hover styles for c-button to use $filterHov, simplified and
normalized hover styling;
- Converted a number of old `<a>` tags to `<buttons>` to normalize
styling and use the appropriate control;
- Edit lock button is now colored when locked;
* Fix linting issue
* Minor tweaks
- Tweaked control positioning;
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
### Reviewer Checklist
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
5. Has associated issue been labelled `unverified`? (only applicable if this PR closes the issue) Y
* Implement 'save' method in Object API
* Refactor legacy persistence code to work with new save object API
* Added 'isPersistable' check to object API
* Fixed incompatibility between object API changes and composition policies
* Make save method private
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
* Don't allow editor edit if object is locked
* Adds log statement
* Use capture phase for onDragOver
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
- Fix Inspector `__content` to properly use flex column layout;
- Change `u-angular-object-view-wrapper` to `display: contents`;
- Fix `gl-plot` to properly use `flex: 1 1 auto` instead of width and
height;
* check for alt key pressed on mouse events
* allows for release of alt key during drag
* eliminates non-browser event states like alt-tab switching apps in windows
* do not listen to plot mouse events on browser context (ctrl) click
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
* Missing objects styling WIP
- Grabbing prior work from `missing-items` branch;
* Missing objects styling WIP
- Grabbing prior work on hover and missing theme constants from
`missing-items` branch;
- Refined theme constants values;
- Renamed relevant mixins and classes from "isUnknown" to "isMissing";
- Applied new hover and missing/unknown styling to Folder-view grid
items;
* Missing objects styling WIP
- Significant refinements and additions to `is-missing`;
- Normalize object type icons as a markup `*__type-icon` to support
styling and positioning of `is-missing__indicator` as a markup element;
- Application to tree items, l-browse-bar in main view, c-object-label,
grid view;
- Change hover approach in grid-items and tree to use filters;
* Missing objects styling WIP
- Styles added to object-name component in Inspector, markup simplified;
- Styles added to Tabs view;
* Missing objects styling WIP
- Simplified and consolidated `is-missing` approach into
`.c-object-label` class;
- Modded `.c-object-label` class to use flex 1 1 auto, instead of 0 1
auto - be on the outlook for regression problems!;
- TODO: wire up `is-missing` for real and Folder List view;
* Missing objects styling WIP
- Added `is-missing` styling to Folder list view;
- Cleanups, simplification and normalization with tree items in
list-item and list-view.scss;
- Using `c-object-label` now in Folder list view;
- Removed too-broad `<a>` color definition in table.scss;
* Missing objects styling WIP
- `is-missing` added to layout frames, with support for hidden
frames and telemetry views.
- Further styles enhancement;
- Continued added wiring points into markup;
* Missing objects styling WIP
- `is-missing` added to mct-plot;
- Significant improvements for cursor lock indicators in plots;
* Missing objects styling WIP
- Plot legend fixes, added overflow scrolling for collapsed and expanded
legends;
- Removed conmmented code;
* Wire up 'is-missing'
- Added property checks on domainObject for status 'missing';
* Fix linting issues
* remove carat from eslint package
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
* lineWidth is not supported in modern browsers
* allow marker shape selection in plot inspector
add shapes for canvas2d - point, cross, star
* change line style to line method in anticipation of adding true line style attribute
* add canvas2d circle marker shape
* allow point shapes for webGL plots
add circle shape
* refactor for clarity
* refactor shape to shape code
* add missing semi-colon
* helper function for marker options display in inspector
refactor for clarity
* access correct file
* add diamond marker shape
* add triangle shape to canvas
* add webgl draw triangle marker shape
* refactor fragment shader for clarity
* basic brush prototype visible
* require alt pressed for grab handle. display only
* pan and zoom now co-exist
* revert selection to times
* make LocalTimeSystem UTCBased (Earth based)
* add LocalTimeSystem
* make isTimeFixed check reusable
* linting
* zoom axis sets start and end times
* pass isFixed as props so we can watch for change from parent
* disable cursor for local time and enable for fixed time
* linting
* resize brush on window resize
* just use d3-brush instead of entire d3 package
* WIP prototyping conductor history
* set global bounds before emitting change event
* WIP conductor history
* WIP save history to and pull history from local storage
* WIP persistence works
* reset axis height after prototyping
* conductor history functionality complete
* clean up refactoring
* add presets
code cleanup
* axis visual tuning
* remove unused function calls
* change tick to timespan to avoid confusion
* fix bounds to use for timespans on pan axis
* linting
* linting
* more linting
* linting
* change realtime end bound to 30 secondes
* add max duration validation
* Tweaks to Time Conductor History menu
- Enhanced styles for `.c-menu`;
- Added hint messaging and separator;
- Reversed displayed history array so that latest entry is always first;
* refactor to use browser mouse events instead of d3brush
* Styling Time Conductor axis area
- Styles for `is-zooming` state and brush;
- Styles for `is-alt-key-down` for panning;
- Styles for hover modified;
* resolve merge conflicts
* Styling Time Conductor axis and inputs
- Moved panning and zooming styles up into `conductor.scss`;
- Stubbed in :class names in Conductor.vue;
- New theme constants;
* fix merge conflict
* move zoom/pan styling up to conductor
* WIP almost there
* fix zoom
* move altPressed up to parent
* handle no drag on pan
* rename inMode vars for clarity
* Styling for Time Conductor zoom and pan
- Minor fix to hover cursor for alt-pressed panning;
* add configurable bounds limit to time conductor
* add presets and records
* fixes for history
* remove lodash
* add default configurables for examples
* do not install local time system
* cleanup
* fix indentation
remove logging
* remove comments
* section-hint without section-separator styling
* provide reasonable defaults for conductor configuration
* specify input to check validation on
* improve validation
* first check both inputs for valid formats
* clear each valid input on new entry
* tear down listeners
* add user instructions
* allow preset bounds to be declared as callback function
* set this.left on resize
code refactoring
Co-authored-by: charlesh88 <charlesh88@gmail.com>
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
* working lock and unlock
* prevent flexible layout drop hints from showing
* fix lint issue
* wip
* disable mousedown when not editing in DisplayLayout
* continued wip
* Cherrypick new glyphs from add-new-glyphs-062320
* More new glyphs, updated art
- New glyphs: icon-unlocked and icon-target;
- Updated art for icon-lock glyph;
* Edit toggle refinements WIP
- Markup, CSS in BrowseBar.vue;
* More new glyphs, updated art
- New glyphs: icon-unlocked and icon-target;
- Updated art for icon-lock glyph;
* Edit toggle refinements
- Replaced toggle switch with button;
* prevent styling changes when locked
* fix lint issues
* fix tests
* make reviewer suggested changes
Co-authored-by: charlesh88 <charlesh88@gmail.com>
* added LAD Table composition policy, with a check for lad table sets, child can only be lad table
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
[Example Imagery] Console error on pause when start and end date is in future #3103
* added some checks for no image
* some code style updates and removing a nested if statement
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
* Update testing plan document with description of testathon process
* Add instructions on unverified issues + link to instructions on pull requests.
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* Added new test to telemetry tables to check that telemetry data is correctly rendered in rows
* Added test tools for mocking builtins
* Changed order that promises are resolved to address race condition
* Remove duplicate installation of UTC Time System
* Added additional test telemetry
* Start Open MCT headless
* Added headless mode start option. Fixes#3064
* Added new non-angular URL handler
* Removed legacy Angular TimeSettingsURLHandler
* Added function to testTools to reset application state
* Use resetApplicationState function from telemetry table spec
* Added new TimeSettingsURLHandler to plugins
* Added missing semicolons
* #2826 Refactored code into separate class
* Handling of hash-relative URLs
* Refactoring URL sync code
* Refactored to external class
* Moved utils to new 'utils' directory. Refactored location util functions from class to exported functions
* Added test specs for openmctLocation
* Added new function to destroy instances of Open MCT between test runs
* Ensure test specs are cleaning up after themselves
* Added test spec for new URLTimeSettingsSynchronizer
* Removed use of shell script as it doesn't work in windows
* Pushed test coverage to 100%
* Added missing copyright statement
* Removed debugging output
* Fixed linting error
* Upgrade node version
* Clear cache
* Re-enabled tests
Co-authored-by: Melanie Lean <melanielean@Melanies-MacBook-Pro.local>
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
Conditional Styles for multiple items #3076
* Preview condition styles on selecting that condition or one of it's styles
Do not evaluate conditional styles in edit mode
* Conditions styling tweaked
- Condition match `is-current` styling for browse and edit modes;
- Disallowed pointer events on Conditions to prevent selection in
Inspector when not editing;
* Highlight current condition in conditionSet view
* Addresses review comments.
* Condition matching highlighting tweaked
- Enable match highlighting during Editing;
- Tweaks to `is-current` styling;
* Don't reset the callback on destroy
* Combine multiple and single selection styling of objects
* Fix issue with applying styles in edit mode
* Fix item styles bug
* Remove comment
* Adds back visibility toggle
* Set isEditing on initialization.
* Addresses review comments - removes use of lodash.
Co-authored-by: charlesh88 <charlesh88@gmail.com>
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
[Notifications] Need a clear all notifications option #3006
* create new notifications indicator in vue, and sunset old one
* add notifications list overlay
* working notifications
* add support for progress notifications
* update percentage on mounted
* Markup cleanups in new Vue Notifications files
- Removed unneeded markup and class wrappers;
- Removed unneeded inline styling;
* remove example notifications
* fix lint errors
* make reviewer requested changes, remove old not needed files, add test
* update testTools to testUtils
Co-authored-by: charlesh88 <charlesh88@gmail.com>
* prevent plots from breaking when more than one NaN is received.
* fix y axis label issue
* dont emit a viewport change event when marquee doesnt happen
* Upgrades lodash
* Replaces some usage of lodash with native functions.
* Adds linting to catch cases where native functions could be used instead of lodash functions
* Renamed testTools to testUtils
Co-authored-by: Joshi <simplyrender@gmail.com>
Co-authored-by: David Tsay <david.e.tsay@nasa.gov>
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Resolves issue #30307
Don't compute the result of a condition if telemetry datum is not being used by that condition
* Adds tests for condition results
* lazy load tabs
* remove listener on destroy
* fix lint error
* Store current tab position on domainObject
* remove lodash dependency and use keystring
* [Notebook] Save snapshot dropdown should be available from "view large" overlay #2922\
* Significant improvements to Snapshot styling
* [Notebook] Embed links aren't navigating #2979
Co-authored-by: charlesh88 <charlesh88@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Preview condition styles on selecting that condition or one of it's styles
* Do not evaluate conditional styles in edit mode
Co-authored-by: charlesh88 <charlesh88@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* change single output to state and value
* do not send telemetryObjects to telemetry api request cal
* normalize data on requests
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
* use correct id for telemetry requests
* request and subscription data cache should be mutually exclusive
use latest timestamp for any/all requests
* do not add prop to datum
remove unnecessary if check
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
* successfully upgraded to v1.6 with $compileProvider.preAssignBindingsEnabled(true)
* removed $compileProvider.preAssignBindingsEnabled(true), wrapped constructors for plot and chart inside onInit function
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Ensures that results for a specific datapoint are evaluated atomically.
* Removes timestamp based evalutation from conditionManager
* Remove unused code
* remove generating timestamp for telemetry data
* get results directly instead of using events
* remove unused listeners, events, and helpers
* linting
* remove commented code
* telemetry criterion stores its own result
* refactor all/any telemetry criterion to use new evaluator
* tie in requests and eliminate unused code
* use current timesystem to compare latest
* scope function names
* AllTelemetryCriterion extends TelemetryCriterion
* fix telemetrycriterion and unit testing
* fix unit tests
* check if telemetry is used at condition manager level
* move check to condition manager
* remove whitespace
Co-authored-by: Joshi <simplyrender@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Ensures that results for a specific datapoint are evaluated atomically.
* Remove generating timestamp for telemetry data
* Get results directly instead of using events
* Refactor all/any telemetry criterion to use new evaluator
* Use current timesystem to compare latest
* AllTelemetryCriterion extends TelemetryCriterion
Co-authored-by: David Tsay <david.e.tsay@nasa.gov>
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Show non specific styles when updating multiple item styles
* Save sub object styles to it's domain object
* Layout UI tweak
* Fixes flexible layout bug.
* Fixes font size bug in telemetry view
* Fixes issues with newly places TVOs including transparent properties.
* Fixes#2908
* Say NO to 'transparent' === '__no_value'
- Fixes#2895;
* Ensure styles are correctly applied to domain objects and drawing objects when selected individually
* Ensure none treatment is correctly applied to objects when multple selecting
* Fix intial box border
* Tweaks to c-text-view layout
- Vertically center text;
- Normalize padding;
- Overflow: hidden;
* Tweaks to Clock and Timer layout
- Fixes#2893;
- Vertically center text;
- Normalize padding;
- Overflow: hidden;
- `position: absolute` when in Layout;
Co-authored-by: charlesh88 <charlesh88@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* wip: changing to condition as drag target
* wip
* wip
* wip
* fixed dragging issues
* fixed dragging classes and added temp border on condition with dragging class
* Conditionals sanding and shimming
- CSS and `all-dragging`;
* wip
* fixed drag end issue and changed dragging class to go on parent condition h
* drag with counter
* wip
* wip
* wip
* return to logic in ConditionCollection.vue
* wip
* completed js part with highlighted c-condition-h on dragover
* restored grippy as draggable elem, improved isValidTarget
* fixed drag text bug
* added moveIndex prop in Condition.vue
* Conditionals drag reorder styling
- Moved `.is-drag-target` class up to conditions-h element;
- Renamed `.all-dragging` to `is-active-dragging`;
- Styling for `__drop-target` elements;
* fixed incorrect default for moveIndex in condition collection, unnecessary reset in condition
* fixed downward move reorder
* removed prevent from dragenter and drag leave, changed @blur to @change for name and output fields
* removed console log
* Repair merge-damaged conditionals.scss
- Manual merge from latest master;
* Test data layout tweaked
- Prevent c-cs__test-data__controls from collapsing;
Co-authored-by: Joel McKinnon <joel.g.mckinnon@nasa.gov>
Co-authored-by: Joel McKinnon <JoelMcKinnon@users.noreply.github.com>
* wip: changing to condition as drag target
* wip
* wip
* wip
* fixed dragging issues
* fixed dragging classes and added temp border on condition with dragging class
* Conditionals sanding and shimming
- CSS and `all-dragging`;
* wip
* fixed drag end issue and changed dragging class to go on parent condition h
* drag with counter
* wip
* wip
* wip
* return to logic in ConditionCollection.vue
* wip
* completed js part with highlighted c-condition-h on dragover
* restored grippy as draggable elem, improved isValidTarget
* fixed drag text bug
* added moveIndex prop in Condition.vue
* Conditionals drag reorder styling
- Moved `.is-drag-target` class up to conditions-h element;
- Renamed `.all-dragging` to `is-active-dragging`;
- Styling for `__drop-target` elements;
* fixed incorrect default for moveIndex in condition collection, unnecessary reset in condition
* fixed downward move reorder
* removed prevent from dragenter and drag leave, changed @blur to @change for name and output fields
* removed console log
Co-authored-by: charlesh88 <charlesh88@gmail.com>
- Significant fixes for Safari-compatible Flex layout in Condition Set
view;
- Changed visual approach to current-value section;
- Firefox scrollbar coloring
- Fix layout issues in Firefox;
- Consolidate Conditionals styles into single scss file;
- Fix test datum elements layout, better wrapping;
- Better approach to presence/absence of URL property in Condition
Widget;
- Fixes#2853;
- Fix errors in URL property handling in Condition Widget;
- Fixes#2853;
- Fixes#2867 - hide the View Switcher when an object is being edited;
- Refined titling on View Switcher and Notebook menu button;
- Cleaned up styles in l-browse-bar and moved into
ui/layout/layout.scss;
- Removed styles/_layout.scss;
- Hide the main view Edit button when in mobile
- Restore updated symbols font file for Condition Widget icon glyph;
- Change "All telemetry | Any telemetry" to all lowercase;
- Fix cursor styles for Condition Widget;
- Fix Safari layout problems with Condition Set/section styles;
* Test Data
* Persist testData and apply it to the conditionSet
* Do not persist the applied flag, but persist test data
Co-authored-by: charlesh88 <charlesh88@gmail.com>
* Use parsed telemetry data values for condition evaluations
* Addresses comments - handles undefined value and implements format and validate formatter methods
* Merge topic-conditionals
- Fixes#2772;
- Remove styling toolbar icons in Display Layouts;
- Fix regression error in tree items that was only allowing clicks on
the name to navigate;
- Legacy wrapper fixes to allow color styling to be applied as expected;
- New `$mainViewPad` constant;
- Fix `c-control-bar` element spacing in plots;
- TODO: check for regressions, particularly with plot views;
- Fixes#2772: better `is-style-invisible` css for `c-style-thumbs`;
* Hardcoded prototype - conditional styles for display layout or generator domain objects only.
Needs Architectural review
* Updates to ConditionalStylesView
* Adds background colors list
* Show conditional styles for subObjectViews and telemetryViews
* Uses telemetry provider to determine which style is active
Removes hardcoded conditionSet work used for prototype
* Fixes failing test
* Add default styles to conditionalStyles when a condition set is added to the domain object.
* Use EventEmitter alias instead of eventEmitter3 in imports
Change variable name for better readability and clarity
Remove unused code
* Change StyleRuleManager to accept conditionStyle objects instead of domainObjects
* Uses a map for conditional styles instead of a list in order to improve performance
* Use in-built api to check for identifier equality
Pass missing arguments
* Removes unnecessary object get call.
* Conditionals styling WIP
- Tweaks for layout/overflow issues;
- Better header alignment;
- Much better approach to "accordion" spacing;
* Adds conditional styles for drawing objects
* Fixes small bugs while adding or removing nested conditional styling
* Removes hard coded conditionSetIdentifier
* Fixes small conditionManager bug
* WIP - Adds condition set selection dialog
* WIP - Add condition set
* Styling for tree dialog in selector
- New `.c-selector` class;
- Markup added to tree-item.vue to fix missing `c-object-label` wrapper;
* Adds image url to styles inspector view
* Adds highlight for selected conditionSet in selection dialog.
* Conditionals Inspector styling WIP
- Simplified Inspector markup;
- Refined `.c-inspector` layout strategy;
- Refined `.l-multipane` classes for better layout and scroll handling;
- TODOs: styling for 'styles' section; unit test, find regressions, fix;
* Read-only mode changes for the styles inspector
* Adds basic styling for styles inspector view
* Removes unused code
* Displays condition set name
* Display description for conditions
* Conditionals Inspector styling WIP
- Add new ObjectName component to Inspector;
- Add supporting styles;
* Conditionals Inspector styling WIP
- Refactor for better usage of c-object-label;
- Refactor `c-properties` classes to `c-inspect-properties`;
* Conditionals Inspector styling WIP
- Introduce `c-inspect-styles` class;
- Markup refined in ConditionalStylesView.vue;
* Conditionals Inspector styling WIP
- Fix unintended regression in `c-object-label`;
* Makes inspector view tabs sticky.
Shows errors if either telemetry or conditions are missing
Refresh conditionStyles when styles inspector is loaded to show new conditions that might be added to the conditionSet
* Conditionals styling WIP
- Added title to Condition Set selector dialog;
* Conditionals styling WIP
- CSS and markup changes;
* Conditionals styling WIP
- Markup changes;
* Componentize conditional style editor, condition description and condition error
* Conditionals styling WIP
- Conditional styling elements in Inspector, significant refinements;
- Condition description formatting;
- Significant markup simplification in StyleEditor.vue;
- Moved `.c-inspect-styles` into conditional-styles.scss;
* Conditionals styling WIP
- Added menu positioning css;
* Conditionals styling WIP
- Display images in StyleEditor `c-style-thumb` element;
* Use the condition description component to show the condition description in condition set views
* Conditionals styling WIP
- New `u-alert` and `u-error` classes and mixin;
- New $colorError theme constants;
* Conditionals styling WIP
- Fixed background: cover or c-style-thumbs;
* Conditionals styling WIP
- Add navigate-or-preview functionality to attached Condition Set used
for conditional styling (thank you Deep!);
- Better theme-compliant box-shadowing on c-style-thumb;
- Added default color property to cClickIcon SCSS mixin;
* Fixes ConditionDescription and ConditionErrors views
* Allow static styles for domain Objects and display layout items
* Consolidate handling of 'none' style to the object styles mixin
* Adds visibility option to child items
* Conditionals styling WIP
- Add `is-style-invisible` class;
- Better color approach for table headers to support domain object
styling;
* Change visibility to isInvisible class
* Fixes visibility for object views and telemetry views
* Fixes selection of condition set from tree view
* Conditionals styling WIP
- Added new $glyph-icon-eye-disabled font symbol and related class;
- Modded glyphs used for visibility toggle button;
- Modded StyleEditor thumb preview to reflect visibility setting;
- Tweaked `is-style-invisible` opacity property;
- Code cleanup;
* Conditionals styling WIP
- Display disabled toolbar for Inspector styles in Browse mode;
- Better approach to 'is-style-invisible' `c-style-thumb` with new
bgCheckerboard mixin;
- Moved `$controlDisabledOpacity` into a theme constant;
- Refined spacing in Inspector grid;
* Fixes linting issues
* Fixes telemetry metadata name
* criterion descriptions is now an array of strings
* Fixes spacing
* Removes commented out code.
* Remove v-if
Co-authored-by: charlesh88 <charlesh88@gmail.com>
* Hardcoded prototype - conditional styles for display layout or generator domain objects only.
* Adds background colors list
* Show conditional styles for subObjectViews and telemetryViews
* Uses telemetry provider to determine which style is active
* Removes hardcoded conditionSet work used for prototype
* Add default styles to conditionalStyles when a condition set is added to the domain object.
* Use EventEmitter alias instead of eventEmitter3 in imports
* Change StyleRuleManager to accept conditionStyle objects instead of domainObjects
* Uses a map for conditional styles instead of a list in order to improve performance
* Use in-built api to check for identifier equality
* Removes unnecessary object get call.
* Adds conditional styles for drawing objects
* Removes hard coded conditionSetIdentifier
* Fixes small conditionManager bug
* Add a recalculate Column width button
* Tweaks to telemetry table for recalculateColumnWidths
- Recalc button now hidden if isAutosizeEnabled === false;
- Recalc button label, title edited for clarity;
- Normalized button titles for other table buttons;
- Fixed `.c-separator` height issue;
* toggle between expand and autosize
* Tweaked button title text
* remove nested loop
* fix lint errors
* remove unecessary promise and use clientWidth instead of offsetWidth
Co-authored-by: charlesh88 <charlesh88@gmail.com>
* Styling for Conditionals WIP
- Condition Set markup and styling WIP;
* Styling for Conditionals WIP
- Condition Set markup and styling WIP;
* Styling for Conditionals WIP
- Main layout and container styling refinement, simplification and
normalization;
* Styling for Conditionals WIP
- Begin styling for individual condition elements;
* Styling for Conditionals WIP
- Condition styling, very initial;
* Conditionals styling WIP
- Redo work done previously and lost due to merging;
- Overall layout in edit mode;
- Styling for hint element;
* Conditionals styling WIP
- Major progress on Conditionals edit-view styling;
- Grid layout WIP in condition element;
- Added new `.c-grippy` class;
* Conditionals styling WIP
- discreteItem theme constants refined, add
`$colorDiscreteItemCurrentBg` color value;
- `.c-grippy` enhanced;
- Condition layout significantly refined;
* Conditionals styling WIP
- Styling for browse view in Condition Set;
- Refined alignment and styles for condition header;
* Conditionals styling WIP
- Cleanups;
- Significant improvements to flex layout;
- Test Data layout and element formatting;
* Conditionals styling WIP
- Better approach to condition set hinting;
* Conditionals styling WIP
- Merge and integrate changes from Joel;
- 'Add Criteria' button now disabled until telemetry has been added;
- Fix JS configuration error with help from Joel;
* Conditionals styling WIP
- Much better flex approach to sections layout;
- Sanding and shimming;
* Conditionals styling WIP
- Fixed some linting;
* Conditionals styling WIP
- Tweaks for layouts issues;
* Hardcoded prototype - conditional styles for display layout or generator domain objects only.
Needs Architectural review
* Updates to ConditionalStylesView
* Adds background colors list
* Show conditional styles for subObjectViews and telemetryViews
* Uses telemetry provider to determine which style is active
Removes hardcoded conditionSet work used for prototype
* Fixes failing test
* Add default styles to conditionalStyles when a condition set is added to the domain object.
* Use EventEmitter alias instead of eventEmitter3 in imports
Change variable name for better readability and clarity
Remove unused code
* Change StyleRuleManager to accept conditionStyle objects instead of domainObjects
* Uses a map for conditional styles instead of a list in order to improve performance
* Use in-built api to check for identifier equality
Pass missing arguments
* Removes unnecessary object get call.
* update telemetry table to ingest marked row data, add a new alterntate bar with includes row name, selected rows and show selected rows toggle
* Enhancements for alternate toolbar in telem tables
- .c-control-bar adds style enhancements and `__label` element;
- Added `label` prop, markup and styling to ToggleSwitch;
- ToggleSwitch layout enhanced;
- Unit tested in main view and placed in Display Layout;
* made improvements to row marking
* bug fixes for marking
* fix linting issues
* -Make reviewer requested changes
-Clarify prop for marking
-Include alternateControlBar in the marking prop
- - since it only makes sense for making
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
* Fix imagery-related styles and markup
- VERY WIP!!!
- Style modernizing;
- Also, padding fixes for pane.scss - unit test for regressions!
* Fix imagery-related styles and markup
- VERY WIP!!!
- Style modernizing WIP;
- Fixes to pane classes for better padding in vertical panes;
* Fix imagery-related styles and markup
- Migrated all imagery CSS into imagery-view-layout.scss from _legacy
.scss;
- CSS cleanups;
- Refactoring/simplification of thumb layout;
- Color fixed for $colorPausedFg in theme constants;
* Scroll to right instead of bottom, on autoscroll.
* Fix imagery-related styles and markup
- Make the most recent thumb visually distinct;
- Clicking a selected thumb now deselects it and unpauses the view;
* Imagery fixes
- Fixed thumb click logic to properly toggle paused when clicking a selected thumb;
- Improved CSS so that `selected` updates more quickly when selecting the latest thumb;
- Clicking the main image pause button now selects the proper thumb;
* Fix linting errors
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
* resolved conflicts
* Revert "Condition reorder"
* Adds conditional style inspector provider
Adds condition style tabbed view (this needs to be extended to allow more than one pane per tab in a separate issue)
* Fixes linting issues
* Merge from topic-conditionals
* In order to accomodate two tab layout for the Conditionals feature, rename the following:
- openmct.inspectorViews registry to openmct.propertiesInspector
- InspectorViewRegistry.prototype.addProvider to InspectorViewRegistry.prototype.addViewProvider.
Replace occurances of the same to the new names.
In a subsequent commit expect a new view registry for the styles inspector view registry.
* Use 'styles' property on domain objects to indicate that they should have a styles inspector tab - Note that this will not show up on existing objects but only ones that are created after this feature is added.
Use 'styles' property on domain objects to determine if a styles view can be viewed
Removed the TabbedInspectorView and repurposed the InspectorViews to show both a properties or a styles registry.
Simplified markup in Inspector.vue
* Addresses review comments:
1. Go back to using inspectorViews
2. Remove stylesInspector registry
3. Hardcode Styles Inspector component view
4. Styles tab can be viewed for all creatable objects except for the folders, webPages and conditionSets
5. ConditionalStylesInspectorViewProvider is no longer needed because we are hardcoding the styles view component.
Co-authored-by: Joel McKinnon <JoelMcKinnon@users.noreply.github.com>
* Set criteria options on condition edit
* Persists telemetry options correctly and loads them on mount
* Fixes saving the input value for criteria
* Display active condition's output in read only view
* Destroy classes and unsubscribe when condition set view is destroyed
* Fixes saving the input value for a criteria
* Handle telemetry removal
* Fixes tests
* Addresses comments - change function names, consolidate compute function
* Addresses review comments
- Use camelCase for events (did not change properties as eslint complains)
- Reduce repeated property access by assigning to a variable
- Use descriptive variable name
* Addressing comments - improves input value field visibility logic
* Change variable name to reflect intent
- Use camelCase for events (did not change properties as eslint complains)
- Reduce repeated property access by assigning to a variable
- Use descriptive variable name
* use one navigated local storage item instead one per node
* use one expanded local storage item instead of one per node
* fix navigated
* collapse children when node collapsed
2. Persist the condition identifier only in configuration.conditionCollection array, not the domain object — done
3. WIP - Retrieve the condition domain object and instantiate the condition classes on load
* Separate Vue component styles out from SFCs.
* Added 'MCT.prototype.getAssetPath' and using 'openmct.setAssetPath' to get relative path for assets.
* Re-implements `openmct.plugins.Snow()`, and `openmct.plugins.Espresso()` (as well as a new theme `openmct.plugins.Maelstron()`)
* Updates to README in topic-core-refactor
In preparation for merge into Master
* Added section on v1.0.0 and link to Migration Guide
* Minor wording change
* More minor wording changes
* Save and Finish blocking modal dialog Refactor and Styles #2500
* created new template for ProgressDialogComponent
* Tweaks for #2501
- Normalized dialog icon size;
- Enhanced text formatting in dialog;
- Changed "Saving..." to remove ellipsis;
## Reviewer Checklist
* Changes appear to address issue? Y
* Appropriate unit tests included? N/A - Icon changes only
* Code style and in-line documentation are appropriate? Y
* Commit messages meet standards?
* Mods to support NIRVSS spectra plot enhancements
- Plot legend can display a header element, related styles;
- Remove unneeded margin from propertiesHeader mixin;
* Mods to support NIRVSS spectra plot enhancements
- Finessing plot legend header styling;
- New theme constants for plot legend header;
- Increased size of plot color swatches;
* Mods to support NIRVSS spectra plot enhancements
- Major progress on Plotly style overrides;
* New glyphs for Spectra and Commands
* Icon backgrounds added for new glyphs
- bg-icon-spectra, -spectra-telemetry and -command;
* Plot legend enhancements
- Make selector for .hover-value-enabled less selective;
* Move plotly SCSS into its own file
* Push test
* Enhance plot legend placement for #2486
- Left and right legends now maintain position when expanded;
* Update index.html
- Remove erroneously committed temp change ;
* Initial commit of telemetry table spec
* Fix errors found by running Open MCT app headless
* Do not double install import-export plugin
* Changes to allow Open MCT to be initialized more than once without binding to window.document
* Remove table spec accidentally added
* Add a sticky telemetry point select to on-click plot behavior #2379
* changed class 'lock-highlight-point' on parent element to drive lock/unlock feature on highlight points.
* Styling for sticky-telemetry-point
- New glyph: icon-cursor-lock;
- Better layout and SCSS for overlaid state indicators in plot area;
* single click on plot, lock/unlock highlight points.
* cleanup + added lock icon on legends.
* fixed panning does not end on mouse up.
* [Summary Widgets] Adding a new condition to a rule deletes the input value from previous ones #2411
* Summary Widget Rule conditions not persisting numeric values #2491
- Fixes icon-gear margin for #2477;
- Now applies mixed visual style to toggle frame visibility button in
Layout toolbar for #2460;
- Change Status area Indicators to right-justify;
- Adjust Status area collapse toggle button margin;
* Fix Y axis plot label control
* Now uses writing-mode: vertical-lr instead of transform for vertical
text;
* Text overflow: hidden prevents scrollbars;
* Select displayed on hover over Y axis area;
* Dynamically adds icon-gear when Y axis can be configured;
* use child plot div for image exports
* Misc UI 10
- Add .c-input--sm CSS class for VISTA auto-clear input;
* Misc UI 10
- WIP!
- Add new glyohs: suitcase and clear data;
- Change icon-database to icon-suitcase;
- Need to unit test!
* Misc UI 10
- Refinements to shell__head Indicators layout;
- Refinements to collapse-buttons;
- Better color for Snow theme caution;
* Misc UI 10
- Better Open MCT logo for Snow theme;
- Renamed logo-app.svg to logo-openmct.svg;
- Removed unused image files;
* Misc UI 10
- Remove title attr from Angular indicator, interferes with hover
element;
* Misc UI 10
- Fix favicons, updated art;
- Removed favicon.ico;
* Misc UI 10
- Rebuild of Icomoon JSON file, which appeared to have gotten
damaged, probably due to merging;
- Font files updated, added .svg font back to repo;
- Font metrics modified to now use 20% baseline height;
* Misc UI 10
- Fix class in plot for control-bar element;
- Fix CSS in ObjectFrame.vue;
* Misc UI 10
- Rename folder styles-new to styles;
* Misc UI 10
- Remove unused src/fonts folder;
* Misc UI 10
- Symbols font now using baseline of 20%;
* Adds global filtering
* Markup changes to support global filtering
* Adds toggle button
* Added row item spacing for tree__item in mct-tree.vue;
* Significant mods to tree-based properties displays in Inspector:
* Padding in c-object-label tweaked;
* Class naming normalized, legacy classes removed;
* Layout fixed for filters in Browse mode
* add context menu capability to table rows, add view switcher to preview
* add an option to limit context menu actions to the ones requested, and modify preview action to also include a view historical data action
* extend preview action into view historical data action
* add context menu to LAD Table
* add keys to context menu actions, allow tables to conditionally attach context menu handler
* working switch y axis label
* New vertical select element for Y axis configuration in plots
- CSS for vertically rotated selects for Y axis label selection;
- New theme constants;
- Removed themedSelect theme mixins;
- New SASS svgColorFromHex function;
* use keys in lad table context menu options
* show historical view context menu on alpha-numerics
* make reviewer requested changes
* pass contextual object path from object view down etc
* made reviewer requested changes: removed options object, pass in object path instead
* remove redundant function from LADRow.vue
* first pass
* add a unmark all rows button
* enable shift click to select multiple rows
* support row selection backwards
* Styling for marked table rows
- CSS class applied;
- Export button label modified;
* working pause
* working multi select
tables are paused when user selects a row
* Layout improvements for table and control bar elements
- Table markup re-org'd;
- New .c-separator css class;
- Renamed .c-table__control-bar to .c-table-control-bar;
- Added label to Pause button;
- TODO: refine styling for table within frame in Layouts;
* Refined styling for c-button in an object frame
- More compact, better alignment, font sizing and padding;
* change logic to marking/selecting
* use command key to mark multiple
* Fixed regression errors in markup
* add isSelectable functionality
* make reviewer requested changes
* remove key from v-for in table.vue
* first proto of global clear, working on tables
* global clear works on plots
* styling
* Status bar migration to top of layout, WIP
- Refine and remove legacy styles for Indicators;
- Significant cleanup in Indicator markup;
- Remove unnecessary wrapper component StatusBar.vue;
- Move collapse-button styles to a more general location in _controls
.scss;
- New hasMenu mixin to allow easier application of disclosure control
styling;
* Status bar migration to top of layout, WIP
- Refine styles and markup for Indicators;
- Better separation of styles for clickable and non-clickable
Indicators;
* Status bar migration to top of layout, WIP
- Added tracking style to indicator-template;
- Moved click action to button in label of globalClearIndicator;
- Removed unnecessary markup in Indicators.vue;
- Commented out __head collapse button for now in Layout.vue;
* Status Bar Migration WIP
- Significant progress styling Indicators and their hover bubbles;
- Pull back from clickable Indicators to hover approach;
- Better theme-based constants for Indicator menu-related colors;
* Status Bar Migration WIP
- Significant refactor of label element naming in multiple indicator
markup files;
- Refactor label-related CSS;
- Better class naming: no-collapse > no-minify;
- Refactor example *-launch files to use buttons instead of <a> tags;
- Significant progress on expanding shell head and button styling;
* Status Bar Migration WIP
- Cleanups, sanding on Indicator CSS;
- Added local storage retention for head expanded state;
- Adjust dark theme colors for $colorWarningHi for better legibility;
- Other minor tweaks and fixes;
* Status Bar Migration WIP
- Suppress background in Indicators;
- Restore Snow as default theme;
* add a local clear action, rename plugin
* objectViews extends eventemitter, table view provider provides an onClearData function that is called from ObjectView when clear event is emitted. TODO - support plots
* add support for plots via legacy view provider
* add test for clearDataAction
* remove focus from test file
* install the following plugins by default:
Import Export
Folder View
Tabs View
Flexible Layout
LAD Table
Go To Original Action
* update test to include plugin level tests
* remove focus from unit test
* Update the filters object properly when both checkboxes are deselected. Check composition before loading. Modify logic for mixed filters.
* Get compostion from the global context
* Use Set to store keyStrings
* Rename variables for clarity and add comment. Also add keystring to telemetryKeyStrings when an object is added.
* Use size to get the size of the set instead of length. Remove telemetry keystring from the configuration filters when object is removed from the composition and update the indicator label.
* Display a list of filters that are applied to telemetry objects in a telemetry table.
* - Display 'Mixed' if filters have mixed values.
- Use table configuration domain object to get composition.
* Filter indicator styling WIP
- Markup, class names added;
- TODO: 'Mixed' and commas to be added via CSS, icon and bg coloring;
* Filter indicators styling
- CSS, markup;
- Added dynamic labeling and titling for mixed/non-mixed filter states;
- Theme colors defined and added;
- Added new filter icon glyphs for both 16px and 12px fonts;
- Revised/normalized font project and glyph file names;
* Filter indicators styling
- Adding missed Icomoon project file;
* Filter indicators styling
- Reverting mistakenly changed file;
* Filter indicators styling
- Minor fix to theme sass;
- Sync maelstrom theme;
* Fix indentation
* Set label and title to empty string initially.
* Keep the default snow.
* mutation listener adds via transaction manager
Update the TransactingMutationListener to add items to a transaction
using the transactionManager so that they can be properly removed
from the transaction at a later date.
Prevents showing error dialogs during successful save, and also
prevents persisting duplicate objects.
Fixes#1468
* dont show error dialog when user moves an object from one location to another
* add test for not showing blocking message on remove action
Fixes#2141
Fixes#2132
- flex styles applied;
- CSS reorganized for better DRY;
- Set height on <tr> so that <td>'s won't collapse when
all cells of a row have empty values. This can occur when columns are
hidden in a Telemetry Table.
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 yaxis 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.
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.
*`domain`: 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`: 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
@ -511,7 +505,7 @@ example:
}
```
This strategy says "I want the lastest data point in this time range". A provider which recognizes this request should return only one value-- the latest-- in the requested time range. Depending on your back-end implementation, performing these queries in bulk can be a large performance increase. These are generally issued by views that are only capable of displaying a single value and only need to show the latest value.
This strategy says "I want the latest data point in this time range". A provider which recognizes this request should return only one value-- the latest-- in the requested time range. Depending on your back-end implementation, performing these queries in bulk can be a large performance increase. These are generally issued by views that are only capable of displaying a single value and only need to show the latest value.
##### `minmax` request strategy
@ -606,7 +600,7 @@ evaluator, take a look at `examples/generator/SinewaveLimitProvider.js`.
### Telemetry Consumer APIs **draft**
The APIs for requesting telemetry from Open MCT -- e.g. for use in custom views -- are currently in draft state and are being revised. If you'd like to experiement with them before they are finalized, please contact the team via the contact-us link on our website.
The APIs for requesting telemetry from Open MCT -- e.g. for use in custom views -- are currently in draft state and are being revised. If you'd like to experiment with them before they are finalized, please contact the team via the contact-us link on our website.
## Time API
@ -994,7 +988,7 @@ A common use case for indicators is to convey the state of some external system
persistence backend or HTTP server. So long as this system is accessible via HTTP request,
Open MCT provides a general purpose indicator to show whether the server is available and
returing a 2xx status code. The URL Status Indicator is made available as a default plugin. See
[Included Plugins](#included-plugins) below for details on how to install and configure the
the [documentation](./src/plugins/URLIndicatorPlugin) for details on how to install and configure the
URL Status Indicator.
### Creating a Simple Indicator
@ -1033,7 +1027,7 @@ different colors to indicate status.
### Custom Indicators
A completely custom indicator can be added by simple providing a DOM element to place alongside other indicators.
A completely custom indicator can be added by simply providing a DOM element to place alongside other indicators.
``` javascript
var domNode = document.createElement('div');
@ -1046,59 +1040,3 @@ A completely custom indicator can be added by simple providing a DOM element to
element: domNode
});
```
## Included Plugins
Open MCT is packaged along with a few general-purpose plugins:
* `openmct.plugins.Conductor` provides a user interface for working with time
within the application. If activated, configuration must be provided. This is
detailed in the section on [Time Conductor Configuration](#time-conductor-configuration).
* `openmct.plugins.CouchDB` is an adapter for using CouchDB for persistence
of user-created objects. This is a constructor that takes the URL for the
* `openmct.plugins.Espresso` and `openmct.plugins.Snow` are two different
themes (dark and light) available for Open MCT. Note that at least one
of these themes must be installed for Open MCT to appear correctly.
* `openmct.plugins.URLIndicator` adds an indicator which shows the
availability of a URL with the following options:
- `url` : URL to indicate the status of
- `iconClass`: Icon to show in the status bar, defaults to `icon-database`, [list of all icons](https://nasa.github.io/openmct/style-guide/#/browse/styleguide:home?view=items)
- `interval`: Interval between checking the connection, defaults to `10000`
- `label` Name showing up as text in the status bar, defaults to url
```javascript
openmct.install(openmct.plugins.URLIndicator({
url: 'http://localhost:8080',
iconClass: 'check',
interval: 10000,
label: 'Localhost'
})
);
```
* `openmct.plugins.LocalStorage` provides persistence of user-created
objects in browser-local storage. This is particularly useful in
development environments.
* `openmct.plugins.MyItems` adds a top-level folder named "My Items"
when the application is first started, providing a place for a
user to store created items.
* `openmct.plugins.UTCTimeSystem` provides a default time system for Open MCT.
Generally, you will want to either install these plugins, or install
different plugins that provide persistence and an initial folder
@ -103,7 +103,7 @@ the name chosen could not be mistaken for a topic or master branch.
### Merging
When development is complete on an issue, the first step toward merging it
back into the master branch is to file a Pull Request. The contributions
back into the master branch is to file a Pull Request (PR). The contributions
should meet code, test, and commit message standards as described below,
and the pull request should include a completed author checklist, also
as described below. Pull requests may be assigned to specific team
@ -114,6 +114,15 @@ request. When the reviewer is satisfied, they should add a comment to
the pull request containing the reviewer checklist (from below) and complete
the merge back to the master branch.
Additionally:
* Every pull request must link to the issue that it addresses. Eg. “Addresses #1234” or “Closes #1234”. This is the responsibility of the pull request’s __author__. If no issue exists, create one.
* Every __author__ must include testing instructions. These instructions should identify the areas of code affected, and some minimal test steps. If addressing a bug, reproduction steps should be included, if they were not included in the original issue. If reproduction steps were included on the original issue, and are sufficient, refer to them.
* A pull request that closes an issue should say so in the description. Including the text “Closes #1234” will cause the linked issue to be automatically closed when the pull request is merged. This is the responsibility of the pull request’s __author__.
* When a pull request is merged, and the corresponding issue closed, the __reviewer__ must add the tag “unverified” to the original issue. This will indicate that although the issue is closed, it has not been tested yet.
* Every PR must have two reviewers assigned, though only one approval is necessary for merge.
* Changes to API require approval by a senior developer.
* When creating a PR, it is the author's responsibility to apply any priority label from the issue to the PR as well. This helps with prioritization.
## Standards
Contributions to Open MCT are expected to meet the following standards.
@ -122,97 +131,104 @@ changes.
### Code Standards
JavaScript sources in Open MCT must satisfy JSLint under its default
settings. This is verified by the command line build.
JavaScript sources in Open MCT must satisfy the ESLint rules defined in
this repository. This is verified by the command line build.
#### Code Guidelines
JavaScript sources in Open MCT should:
The following guidelines are provided for anyone contributing source code to the Open MCT project:
* Use four spaces for indentation. Tabs should not be used.
* Include JSDoc for any exposed API (e.g. public methods, constructors).
* Include non-JSDoc comments as-needed for explaining private variables,
methods, or algorithms when they are non-obvious.
* Define one public class per script, expressed as a constructor function
returned from an AMD-style module.
* Follow “Java-like” naming conventions. These includes:
* Classes should use camel case, first letter capitalized
1. Write clean code. Here’s a good summary - https://github.com/ryanmcdermott/clean-code-javascript.
1. Include JSDoc for any exposed API (e.g. public methods, classes).
1. Include non-JSDoc comments as-needed for explaining private variables,
methods, or algorithms when they are non-obvious. Otherwise code
should be self-documenting.
1. Classes and Vue components should use camel case, firstletter capitalized
(e.g. SomeClassName).
* Methods, variables, fields, and function names should use camel case,
1. Methods, variables, fields, events, and function names should use camelCase,
first letter lower-case (e.g. someVariableName).
* Constants (variables or fields which are meant to be declared and
1. Source files that export functions should use camelCase, first letter lower-case (eg. testTools.js)
1. Constants (variables or fields which are meant to be declared and
initialized statically, and never changed) should use only capital
letters, with underscores between words (e.g. SOME_CONSTANT).
* File names should be the name of the exported class, plus a .js extension
letters, with underscores between words (e.g. SOME_CONSTANT). They should always be declared as `const`s
1. File names should be the name of the exported class, plus a .js extension
(e.g. SomeClassName.js).
* Avoid anonymous functions, except when functions are short (a few lines)
and/or their inclusion makes sense within the flow of the code
(e.g. as arguments to a forEach call).
* Avoid deep nesting (especially of functions), except where necessary
1. Avoid anonymous functions, except when functions are short (one or two lines)
and their inclusion makes sense within the flow of the code
(e.g. as arguments to a forEach call). Anonymous functions should always be arrow functions.
1. Named functions are preferred over functions assigned to variables.
eg.
```JavaScript
function renameObject(object, newName) {
Object.name = newName;
}
```
is preferable to
```JavaScript
const rename = (object, newName) => {
Object.name = newName;
}
```
1. Avoid deep nesting (especially of functions), except where necessary
(e.g. due to closure scope).
* End with a single new-line character.
* Expose public methods by declaring them on the class's prototype.
* Within a given function's scope, do not mix declarations and imperative
1. End with a single new-line character.
1. Always use ES6 `Class`es and inheritence rather than the pre-ES6 prototypal
pattern.
1. Within a given function's scope, do not mix declarations and imperative
code, and present these in the following order:
* First, variable declarations and initialization.
* Second, function declarations.
* Third, imperative statements.
* Finally, the returned value.
* Secondly, imperative statements.
* Finally, the returned value. A single return statement at the end of the function should be used, except where an early return would improve code clarity.
1. Avoid the use of "magic" values.
eg.
```JavaScript
Const UNAUTHORIZED = 401
if (responseCode === UNAUTHORIZED)
```
is preferable to
```JavaScript
if (responseCode === 401)
```
1. Use the ternary operator only for simple cases such as variable assignment. Nested ternaries should be avoided in all cases.
1. Test specs should reside alongside the source code they test, not in a separate directory.
1. Organize code by feature, not by type.
eg.
```
- telemetryTable
- row
TableRow.js
TableRowCollection.js
TableRow.vue
- column
TableColumn.js
TableColumn.vue
plugin.js
pluginSpec.js
```
is preferable to
```
- telemetryTable
- components
TableRow.vue
TableColumn.vue
- collections
TableRowCollection.js
TableColumn.js
TableRow.js
plugin.js
pluginSpec.js
```
Deviations from Open MCT code style guidelines require two-party agreement,
typically from the author of the change and its reviewer.
#### Code Example
```js
/*global define*/
/**
* Bundles should declare themselves as namespaces in whichever source
* file is most like the "main point of entry" to the bundle.
* @namespace some/bundle
*/
define(
['./OtherClass'],
function(OtherClass){
"use strict";
/**
* A summary of how to use this class goes here.
*
* @constructor
* @memberof some/bundle
*/
functionExampleClass(){
}
// Methods which are not intended for external use should
// not have JSDoc (or should be marked @private)
ExampleClass.prototype.privateMethod=function(){
};
/**
* A summary of this method goes here.
* @param {number} n a parameter
* @returns {number} a return value
*/
ExampleClass.prototype.publicMethod=function(n){
returnn*2;
}
returnExampleClass;
}
);
```
### Test Standards
Automated testing shall occur whenever changes are merged into the main
development branch and must be confirmed alongside any pull request.
Automated tests are typically unit tests which exercise individual software
components. Tests are subject to code review along with the actual
implementation, to ensure that tests are applicable and useful.
Automated tests are tests which exercise plugins, API, and utility classes.
Tests are subject to code review along with the actual implementation, to
ensure that tests are applicable and useful.
Examples of useful tests:
* Tests which replicate bugs (or their root causes) to verify their
@ -222,8 +238,26 @@ Examples of useful tests:
* Tests which verify expected interactions with other components in the
system.
During automated testing, code coverage metrics will be reported. Line
coverage must remain at or above 80%.
#### Guidelines
* 100% statement coverage is achievable and desirable.
* Do blackbox testing. Test external behaviors, not internal details. Write tests that describe what your plugin is supposed to do. How it does this doesn't matter, so don't test it.
* Unit test specs for plugins should be defined at the plugin level. Start with one test spec per plugin named pluginSpec.js, and as this test spec grows too big, break it up into multiple test specs that logically group related tests.
* Unit tests for API or for utility functions and classes may be defined at a per-source file level.
* Wherever possible only use and mock public API, builtin functions, and UI in your test specs. Do not directly invoke any private functions. ie. only call or mock functions and objects exposed by openmct.* (eg. openmct.telemetry, openmct.objectView, etc.), and builtin browser functions (fetch, requestAnimationFrame, setTimeout, etc.).
* Where builtin functions have been mocked, be sure to clear them between tests.
* Test at an appropriate level of isolation. Eg.
* If you’re testing a view, you do not need to test the whole application UI, you can just fetch the view provider using the public API and render the view into an element that you have created.
* You do not need to test that the view switcher works, there should be separate tests for that.
* You do not need to test that telemetry providers work, you can mock openmct.telemetry.request() to feed test data to the view.
* Use your best judgement when deciding on appropriate scope.
* Automated tests for plugins should start by actually installing the plugin being tested, and then test that installing the plugin adds the desired features and behavior to Open MCT, observing the above rules.
* All variables used in a test spec, including any instances of the Open MCT API should be declared inside of an appropriate block scope (not at the root level of the source file), and should be initialized in the relevant beforeEach block. `beforeEach` is preferable to `beforeAll` to avoid leaking of state between tests.
* A `afterEach` or `afterAll` should be used to do any clean up necessary to prevent leakage of state between test specs. This can happen when functions on `window` are wrapped, or when the URL is changed. [A convenience function](https://github.com/nasa/openmct/blob/master/src/utils/testing.js#L59) is provided for resetting the URL and clearing builtin spies between tests.
* If writing unit tests for legacy Angular code be sure to follow [best practices in order to avoid memory leaks](https://www.thecodecampus.de/blog/avoid-memory-leaks-angularjs-unit-tests/).
#### Examples
* [Example of an automated test spec for an object view plugin](https://github.com/nasa/openmct/blob/master/src/plugins/telemetryTable/pluginSpec.js)
* [Example of an automated test spec for API](https://github.com/nasa/openmct/blob/master/src/api/time/TimeAPISpec.js)
### Commit Message Standards
@ -292,6 +326,7 @@ checklist).
2. Unit tests included and/or updated with changes?
3. Command line build passes?
4. Changes have been smoke-tested?
5. Testing instructions included?
### Reviewer Checklist
@ -299,3 +334,4 @@ checklist).
2. Appropriate unit tests included?
3. Code style and in-line documentation are appropriate?
4. Commit messages meet standards?
5. Has associated issue been labelled `unverified`? (only applicable if this PR closes the issue)
Open MCT, Copyright (c) 2014-2020, United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All rights reserved.
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, Copyright (c) 2014-2017, United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All rights reserved.
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 includes source code licensed under additional open source licenses as follows.
## Software Components Licenses
This software includes components released under the following licenses:
SuperSocket 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.
---
### SuperWebSocket
#### Info
* Link: https://superswebocket.codeplex.com/
* Version: 0.9.0.2
* Author: Kerry Jiang
* Description: WebSocket implementation for client-server communication
SuperWebSocket 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.
log4net 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.
---
### Blanket.js
#### Info
* Link: http://blanketjs.org/
* Version: 1.1.5
* Author: Alex Seville
* Description: Code coverage measurement and reporting
#### License
Copyright (c) 2013 Alex Seville
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.
---
### Jasmine
#### Info
* Link: http://jasmine.github.io/
* Version: 1.3.1
* Author: Pivotal Labs
* Description: Unit testing
#### License
Copyright (c) 2008-2011 Pivotal Labs
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.
---
### RequireJS
#### Info
* Link: http://requirejs.org/
* Version: 2.1.22
* Author: The Dojo Foundation
* Description: Script loader
#### License
Copyright (c) 2010-2015, 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.
---
### 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.4.4
* Author: Google
* Description: Client-side web application framework
#### License
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:
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.
---
### Angular-Route
#### Info
* Link: http://angularjs.org/
* Version: 1.4.4
* Author: Google
* Description: Client-side view routing
#### License
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:
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.
* Authors: Yehuda Katz, Tom Dale, Stefan Penner and contributors
* Description: Promise polyfill for pre-ECMAScript 6 browsers
#### License
Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors
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.
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.
---
### Math.uuid.js
#### Info
* Link: https://github.com/broofa/node-uuid
* Version: 1.4.7
* Author: Robert Kieffer
* Description: Unique identifer generation.
#### License
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:
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.
---
### Normalize.css
#### Info
* Link: https://github.com/necolas/normalize.css
* Version: 1.1.2
* Authors: Nicolas Gallagher, Jonathan Neal
* Description: Browser style normalization
#### License
Copyright (c) Nicolas Gallagher and Jonathan Neal
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.
---
### Moment.js
#### Info
* Link: http://momentjs.com
* Version: 2.11.1
* Authors: Tim Wood, Iskren Chernev, Moment.js contributors
* Description: Time/date parsing/formatting
#### License
Copyright (c) 2011-2014 Tim Wood, Iskren Chernev, Moment.js contributors
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.
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
* Link: http://www.newtonsoft.com/json
* Version: 6.0.8
* Author: Newtonsoft
* Description: JSON serialization/deserialization
#### License
Copyright (c) 2007 James Newton-King
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.
---
### Nancy
#### Info
* Link: http://nancyfx.org
* Version: 0.23.2
* Author: Andreas Håkansson, Steven Robbins and contributors
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.
---
### Nancy.Hosting.Self
#### Info
* Link: http://nancyfx.org
* Version: 0.23.2
* Author: Andreas Håkansson, Steven Robbins and contributors
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.
---
### 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
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.
@ -48,9 +28,14 @@ Building and running Open MCT in your local dev environment is very easy. Be sur
Open MCT is now running, and can be accessed by pointing a web browser at [http://localhost:8080/](http://localhost:8080/)
## Open MCT v1.0.0
This represents a major overhaul of Open MCT with significant changes under the hood. We aim to maintain backward compatibility but if you do find compatibility issues, please let us know by filing an issue in this repository. If you are having major issues with v1.0.0 please check-out the v0.14.0 tag until we can resolve them for you.
If you are migrating an application built with Open MCT as a dependency to v1.0.0 from an earlier version, please refer to [our migration guide](https://nasa.github.io/openmct/documentation/migration-guide).
## Documentation
Documentation is available on the [Open MCT website](https://nasa.github.io/openmct/documentation/). The documentation can also be built locally.
Documentation is available on the [Open MCT website](https://nasa.github.io/openmct/documentation/).
### Examples
@ -58,48 +43,29 @@ 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.
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! Feedback can be provided via [GitHub issues](https://github.com/nasa/openmct/issues), or by emailing us at [arc-dl-openmct@mail.nasa.gov](mailto:arc-dl-openmct@mail.nasa.gov).
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 Applications With Open MCT
### 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:
Open MCT is built using [`npm`](http://npmjs.com/) and [`webpack`](https://webpack.js.org/).
*`npm install`
*`npm install canvas nomnoml`
*`npm run docs`
See our documentation for a guide on [building Applications with Open MCT](https://github.com/nasa/openmct/blob/master/API.md#starting-an-open-mct-application).
Documentation will be generated in `target/docs`.
## Plugins
## Deploying Open MCT
Open MCT can be extended via plugins that make calls to the Open MCT API. A plugin is a group
of software components (including source code and resources such as images and HTML templates)
that is intended to be added or removed as a single unit.
Open MCT is built using [`npm`](http://npmjs.com/)
As well as providing an extension mechanism, most of the core Open MCT codebase is also
written as plugins.
To build Open MCT for deployment:
`npm run prepare`
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:
*`openmct.js` - Open MCT source code.
*`openmct.css` - Basic styles to load to prevent a FOUC.
*`index.html`, an example to run Open MCT in the basic configuration.
For information on writing plugins, please see [our API documentation](https://github.com/nasa/openmct/blob/master/API.md#plugins).
## Tests
Tests are written for [Jasmine 3](http://jasmine.github.io/)
Tests are written for [Jasmine 3](https://jasmine.github.io/api/3.1/global)
and run by [Karma](http://karma-runner.github.io). To run:
`npm test`
@ -115,7 +81,7 @@ naming convention is otherwise the same.)
### Test Reporting
When `npm test` is run, test results will be written as HTML to
`target/tests`. Code coverage information is written to `target/coverage`.
`dist/reports/tests/`. Code coverage information is written to `dist/reports/coverage`.
# Glossary
@ -125,11 +91,8 @@ addressed (either by updating this glossary or changing code to reflect
correct usage.) Other developer documentation, particularly in-line
documentation, may presume an understanding of these terms.
* _bundle_: A bundle is a removable, reusable grouping of software elements.
The application is composed of bundles. Plug-ins are bundles. For more
information, refer to framework documentation (under `platform/framework`.)
* _capability_: An object which exposes dynamic behavior or non-persistent
state associated with a domain object.
* _plugin_: A plugin is a removable, reusable grouping of software elements.
The application is composed of plugins.
* _composition_: In the context of a domain object, this refers to the set of
other domain objects that compose or are contained by that object. A domain
object's composition is the set of domain objects that should appear
@ -144,13 +107,8 @@ documentation, may presume an understanding of these terms.
* _domain object_: A meaningful object to the user; a distinct thing in
the work support by Open MCT. Anything that appears in the left-hand
tree is a domain object.
* _extension_: An extension is a unit of functionality exposed tothe
platform in a declarative fashion by a bundle. For more
information, refer to framework documentation (under `platform/framework`.)
* _id_: A string which uniquely identifies a domain object.
* _key_: When used as an object property, this refers to the machine-readable
identifier for a specific thing in a set of things. (Most often used in the
context of extensions or other similar application-specific object sets.)
* _identifier_: A tuple consisting of a namespace and a key, which together uniquely
identifies a domain object.
* _model_: The persistent state associated with a domain object. A domain
object's model is a JavaScript object which can be converted to JSON
without losing information (that is, it contains no methods.)
@ -162,7 +120,5 @@ documentation, may presume an understanding of these terms.
a user clicks on a domain object in the tree, they are _navigating_ to
it, and it is thereafter considered the _navigated_ object (until the
user makes another such choice.)
* _space_: A name used to identify a persistence store. Interactions with
persistence will generally involve a `space` parameter in some form, to
distinguish multiple persistence stores from one another (for cases
where there are multiple valid persistence locations available.)
* _namespace_: A name used to identify a persistence store. A running open MCT
application could potentially use multiple persistence stores, with the
@ -125,3 +125,22 @@ A release is not closed until both categories have been performed on
the latest snapshot of the software, _and_ no issues labelled as
["blocker" or "critical"](https://github.com/nasa/openmctweb/blob/master/CONTRIBUTING.md#issue-reporting)
remain open.
### Testathons
Testathons can be used as a means of performing per-sprint and per-release testing.
#### Timing
For per-sprint testing, a testathon is typically performed at the beginning of the third week of a sprint, and again later that week to verify any fixes. For per-release testing, a testathon is typically performed prior to any formal testing processes that are applicable to that release.
#### Process
1. Prior to the scheduled testathon, a list will be compiled of all issues that are closed and unverified.
2. For each issue, testers should review the associated PR for testing instructions. See the contributing guide for instructions on [pull requests](https://github.com/nasa/openmct/blob/master/CONTRIBUTING.md#merging).
3. As each issue is verified via testing, any team members testing it should leave a comment on that issue indicating that it has been verified fixed.
4. If a bug is found that relates to an issue being tested, notes should be included on the associated issue, and the issue should be reopened. Bug notes should include reproduction steps.
5. For any bugs that are not obviously related to any of the issues under test, a new issue should be created with details about the bug, including reproduction steps. If unsure about whether a bug relates to an issue being tested, just create a new issue.
6. At the end of the testathon, triage will take place, where all tested issues will be reviewed.
7. If verified fixed, an issue will remain closed, and will have the “unverified” label removed.
8. For any bugs found, a severity will be assigned.
9. A second testathon will be scheduled for later in the week that will aim to address all issues identified as blockers, as well as any other issues scoped by the team during triage.
10. Any issues that were not tested will remain "unverified" and will be picked up in the next testathon.
<buttonng-repeat="dialogAction in ngModel.dialog.actions"
class="c-button c-button--major"
ng-click="dialogAction.action()">
{{dialogAction.label}}
{{dialogAction.label}}
</button>
</div>
</div>
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.