* Display layout plugin test coverage to 20% or more
Resolves#3157
* Changes address original issue? Yes
* Unit tests included and/or updated with changes? Yes
* Command line build passes? Yes
* Changes have been smoke-tested? Yes
* Testing instructions included? Yes
* Add disable-dev-shm-usage flag to ChromeHeadless launcher config in karma
* Adding disable dev shm usage flag to chromeheadless launcher and setting log level to debug
* Adding np activity timeout to 60000
* Adding no-sandbox flag for headless chrome
* Run tests without headless chrome to see if that fixes the fonts issue
* Fix typo
* Trying chrome headless with increased memory
* Reset karma.conf back to master
* Trying karma chrome launcher 3.1.0
* Revert to master code for package.json and karma.conf.js
* Trying node 12 browsers
* Revert back to node:13 browsers
* Revert to 10.2.1-browsers circle ci node browsers variant image for docker
* Rebuild node-sass for node 10.x
* Upgrading to 13.14.0 node
* Remove node options
* Don't restore cache before npm install
* Comment out tests with setTimeout
* Trying node 8-browsers
* Try firefox headless
* Firefox version typo
* Revert focused tests
* Exclude setTimeout tests
* Increase browser connectivity timeout
* Trying large timeout with Chromeheadless
* Going back to Firefox and setting browser timeout to 1.5 mins
* Fixes linting issues
* Fix broken tests and add some null checks in the code
* Change double quotes to single quotes
* added unit columns in telemetry tables
* added unit column hiding in telemetry tables, added units to lad tables and sets
* added units to plots and plot legends
* 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;
@ -427,8 +427,8 @@ Each telemetry value description has an object defining hints. Keys in this thi
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.
@ -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:
* 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
(e.g. SomeClassName).
* Methods, variables, fields, and function names should use camel case,
first letter lower-case (e.g. someVariableName).
* 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
(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
(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
code, and present these in the following order:
* First, variable declarations and initialization.
* Second, function declarations.
* Third, imperative statements.
* Finally, the returned value.
The following guidelines are provided for anyone contributing source code to the Open MCT project:
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, first letter capitalized
(e.g. SomeClassName).
1. Methods, variables, fields, events, and function names should use camelCase,
first letter lower-case (e.g. someVariableName).
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). 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).
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).
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.
* 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-2019, United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All rights reserved.
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.
@ -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.
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.