* Account for right y-axes when calculating now line position.
Don't show the now line if it's out of bounds of the time axis
* Add test for now marker in realtime and out of bounds modes
* Ensure that the mode set when independent time conductor is enabled/disabled is propagated correctly.
Also ensure that global time conductor changes are not picked up by the independent time conductor when the user has enabled it at least once before
* Use structuredClone instead of deep copy
* Add e2e test
* Assert that you're in fixed mode after sync time conductor
* Comment explaining new time context test
* Change test to be a little less complicated
* Fix linting errors
* Allow highlights and locking highlight points for plots in compact mode, but still disallow pan and zoom.
* Remove unnecessary watch on cursor guides and grid lines
* Test for cursor guides in compact mode
- Sanding and shimming on imagery and events TS look and feel.
- Fixed scrollbar issue in imagery TS view when thumb goes beyond the right edge of the time frame.
- WIP prepping activities view for adjustable swimlane height.
- Refactored ActivityTimeline.vue to not draw SVG if no activities in timeframe.
- ActivityTimeline.vue `leftOffset` now uses absolute position `left` instead of `left-margin`.
- Significant improvements for Time Strip imagery view ahead of user-settable swimlane heights.
- Imagery container height, image height and width no longer set in code.
- Imagery swimlane now uses styles and hover behavior consistent with events.
- Fixed previous change that broke grid layout of Stacked Plots in Time Strip.
- Re-enabled code that sets min-height for Stacked Plots in Time Strip based
on the number of children.
- Changed SEVERE to use `is-event--purple` style.
- Mods to EventTelemetryProvider.js:
- Adds a more random start time to each event.
- Reduces frequency at which a severity is applied to events.
- Moved all event line styling into events-view.scss.
- Refactor `*__event-wrapper` to `*__event-line`.
- Event line color styling for hover and `s-select`.
- New theme constants for `$colorEvent<color>Line`.
- Removed `--no-style` CSS class; created unnecessary need to override.
- Layout converted to set `min-height` on top-most `c-swimlane` element.
Interior containers now use 100% height or absolute positioning.
- Removed `c-timeline-holder` from `c-events-tsv` in EventTimelineView.vue;
Refactored `c-events-tsv__contents` to be `js-events-tsv` as that was being used as a reference.
- New theme constant `eventLineW` sets event lines to be 1px wide for more precision.
- Removed bad `}` in TimeSystemAxis.vue.
- Removed `.u-contents` from line 129 of ganttChart.e2e.spec.js.
- Removed `event-handle` element; not needed.
- Changed `__event-wrapper` to not set height explicitly; uses absolute positioning.
- Added :before element to event-wrapper for better hit area.
- Improved hover styling.
- $colorEvent* style constants added to theme constant SCSS files.
- Removed in-page `style` defs from ExtendedLinesOverlay.vue; CSS actually located in timeline.scss.
- Improved sizing and style for Marcus Bains ("now") line.
- Removed extraneous padding at bottom of plot view when in Time Strip.
- Added missing header info to timeline.scss.
- CSS refinements.
* moving rename methods to appActions
* importing back into original test
* reverting
* add the ability to change the name in the browse bar
* add test to verify entries are not being lost
* addding aria labels for tests
* when an object is changed, store the whole new object, not just the name
* typo!
* initial implementation
* cleaning up a bit
* adding the hash method back as we dont want gigantic keys
* adding a line
* added filtering to state generator, updated filters readme to fix error, more robust hash function
* removing unnecessary changes in wrong file
* adding a test to confirm each endpoint has a separate subscription based of filtering
* lint
* adding back in hints, accidentally removed
* remove some redundant code and convert sanitization method into a replacer function for stringify
* tweaking serialize replacer to handle arrays correctly, adding more determinative row addition check to test
* more focused selector for the table
* simplified the serialization method even further and added some more docs
* checking if the metadata exists before acting on it
* added a test to catch missing object errors in gauges
* remove waitForTimeout and add in check for time conductor successful start offset update
* hardening the test by checking for the time before the time change
* add "pageerror" to cspell
* Use the disabled attribute on a valid tag - the button.
* Add e2e test to check for add criteria button being enabled
* Improve test
* Check for add criteria button to have attribute disabled
* Remove focused test
* Add new utility to encode urls.
Use the encode urls utility to encode all background images in css
* need a commit to pull exampleimagery from
* skip and fix on otherside
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Initialize alignment offset to 0. (it was undefined). Also handle a small bug with swimlane configuration not getting replaced when the plan used by a gantt chart was changed
* lint: fix
* test: update visual tests to mock clock and show now line
---------
Co-authored-by: Mazzella, Jesse D. (ARC-TI)[KBR Wyle Services, LLC] <jesse.d.mazzella@nasa.gov>
* Use the planObject to get ordered swimlane names
* If there is no plan object, don't try to render the chart
---------
Co-authored-by: Jamie V. <jamie.j.vigliotta@nasa.gov>
* refactor: `Indefinite` -> `Unlimited`
* refactor: remove unused const
* fix: use the selected shelveDuration
* fix: set and use default if none selected
* fix: bad optional chaining
* fix: handle the case of no provider
* fix: don't assign defaults if no provider
* Script for locking an object tree
* Show lock button if locked
* Do not allow properties editing of locked objects
* Remove package-lock.json
* Added p-debounce
* Allow duplication of locked objects
* Better user feedback
* Add semaphores to prevent file handle exhaustion
* Leverage official Apache Couch library - nano. Clean up dependencies. Default to environment variables for couch config. Simplify batching mechanism to make it synchronouse
* Added lock user attribution
* Remove unused code
* Modify open script for adding auth design doc
* Added script for creating auth design doc
* Add css class for disallow unlock
* Add user attribution to lock button
* Fix import
* Typo
* User it was locked by, not current user. Wow.
* Closes#7877
- Front-end sanding and shimming: displays <span> instead of button when domainObject.disallowUnlock.
* Fixed bug where lock is shown even if object is not locked
---------
Co-authored-by: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Issue where immutable objects sort order was not being set correctly in telemetry tables.
* Configuration couldn't be saved and the sort order was not being saved in memory.
* Telemetry was not being re-requested when the sort order of a table was changed and the table was in performance (limited) mode.
* We've moved sort order to both configuration and in-memory and we will re-request telemetry if changing sort order in performance mode.
---------
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* feat: add function to generate a seeded random value
* fix: produce the same compass orientation per timestamp
- helps for consistent visual tests
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Clock
* pass in default timeContext in request options
* observe for clock tick, instead of polling, to determine if clock has time set
Progress Bars
* use scale instead of move animation
Plan
* use a ResizeObserver instead of polling for size changes
---------
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
When adding sorted arrays to the beginning, make sure to insert them in the same order and not accidentally reverse them while inserting.
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* adding telemetry collections to condition manager
* handling telemetry collection data not datum
* adding from maaster
* addressing PR comments
* update unit test to work with telemetry collections
* fixing tests
* removing unnecessary addition
* removing focused describe
* removing focused it
* fix weird test bleed
* adding test for conditional styling
* removing some auto fix es-lint
* got a bit overzealous
* clarification
* using raf utility which handles it correctly and moving visiblity handling into the raf for consistency and performance
* using raf correctly
* removing raf, was causing issues
* move the test and add some determinism
* oops only
* missed lint
* got it!
* fix comments
* test(condStyling): stabilize test
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* refactor: clean up FaultManagementView code
* feat: providers can now provide "Shelve Duration" options
* fix(exampleFaultSource): support `getShelveDurations`
* a11y: aria label for fault management list item
* a11y(FaultManagement): more labels
* refactor: eliminate some faultUtils and refactor locator() out of tests
* docs: add some more docs to fault management api
* refactor: make for loop more readable
* test: use static faults when testing
* fix: set a timestamp for static faults and subtract so we get faults in order
* refactor: autoformat
* chore: add missing copyright header
* fix: use as default parameter to get value as method is called
* refactor: make magic number a const
* fix(codecov): use codecov github action to upload
* fix: generate the report
* build: update circleci yml to use codecov orb
* build: remove codecov scripts and package
* build: don't use the orb because things can't be easy
- nasa org disallows "third party" orbs
* build: only use `sudo` if we ain't da root user
---------
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Simplifies the implementation of telemetry buffering in Open MCT.
* Switches from per-parameter buffering to a shared queue. Per-parameter buffering is too easily overwhelmed by bursts of telemetry from high-frequency parameters. A single shared buffer has more overhead to grow when a burst arrives without overflowing, because the buffer is shared across all parameters.
* Removes the need for plugins to pass serialized code to a worker.
* Switched to a "one-size-fits-all" batching strategy removing the need for plugins to define a batching strategy at all.
* Captures buffering statistics for display in the PerformanceIndicator.
* Closes#7820
- Fix 0 opacity fill in theme constants files for Gauge type needle.
* move gauge plugin to its own suite
* add two more snapshots
* driveby: fix some flake
* bug: update linting rule
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* more readable
* unpause explicitly
* fix jsdoc
* e2e testing multiple image removal
* prettier
* fix to remove multiple images from history
* move tests that use playwright clock api into own file
* fix playwright clock tests
* add aria-label to element
* prevent straggler debounced function call on unmount
* clean up and fix tests
* update paths
* lint fix
* lint fix
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Only as for latest historical telemetry
* Add test for size 1 request when a bar graph is loaded
* Use strategy latest instead of size 1 for historical request
* Fix linting issues
* Add size and strategy
* Remove bar graph tests
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* bugfix: update tsconfig to set module to NodeNext and exclude openmct/e2e
* chore: remove unnecessary paths from exclude
- the `exclude` option only excludes files in the context of the `include` paths, if there are any. We can remove some of these because they don't match anything in the include paths.
* chore: fix capitalization for consistency
---------
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* adding an option to no swap order to initiatSort
* debug
* defaulting to desc order for requests if there is not saved order
* adding some common constants
* replace all got into a comment
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* fix: apply `is-style-invisible` className to image and alphanumeric items
* test: generate storagestate file with basic condition set
* refactor: small a11y additions for Toolbars
* test: add suite for display layout conditional styling
* fix: make condition true half of the time
* fix: use a period of 5 so tests are more stable
* test: mark as slow
* test: use inline base64 image text instead of a url
* fix: use vue reactivity system to conditionally show these objects
* test: use tiny base64 image
* fix: condition for v-show
* fix: use both v-if and v-show to toggle visibility
* refactor: convert to ES6 class
* fix: remove focused test
* fix: switch back to a div due to visual artifacts. settle for an aria role instead
- IT'S CALLED COMPROMISE!
* test: fix broken locator in imagery perf test
* Prevent this from happening
* make rule explicit
* test: maintain `locator()` pattern for contract tests
* test(couchdb): try some new techniques to stabilize the test
* Revert "test(couchdb): try some new techniques to stabilize the test"
This reverts commit 9aa1ea95a1.
* chore: revert to `networkidle` and disable eslint rule
* test: add `@network` annotation for tests with real network requests
---------
Co-authored-by: Hill, John (ARC-TI)[KBR Wyle Services, LLC] <john.c.hill@nasa.gov>
* fix: update broken locator
* update eslint package
* first pass of lint fixes
* update package
* change ruleset
* update component tests to match linting rules
* driveby
* start to factor out bad locators
* update gauge component
* update notebook snapshot drop area
* Update plot aria
* add draggable true to tree items
* update package
* driveby to remove dead code
* unneeded
* unneeded
* tells a screenreader that this is a row and a cell
* adds an id for dragondrops
* this should be a button
* first pass at fixing tooltip selectors
* review comments
* Updating more tests
* update to remove expect expect given our use of check functions
* add expand component
* move role around
* update more locators
* force
* new local storage
* remove choochoo steps
* test: do `lint:fix` and also add back accidentally removed code
* test: add back more removed code
* test: remove `unstable` annotation from tests which are not unstable
* test: remove invalid test-- the "new" time conductor doesn't allow for millisecond changes in fixed time
* test: fix unstable gauge test
* test: remove useless asserts-- this was secretly non-functional. now that we've fixed it, it makes no sense and just fails
* test: add back accidentally removed changes
* test: revert changes that break test
* test: more fixes
* Remove all notion of the unstable/stable e2e tests
* test: eviscerate the flake with FACTS and LOGIC
* test: fix anotha one
* lint fixes
* test: no need to wait for save dialog
* test: fix more tests
* lint: fix more warnings
* test: fix anotha one
* test: use `toHaveLength` instead of `.length).toBe()`
* test: stabilize tabs view example imagery test
* fix: more tests be fixed
* test: more `toHaveCount()`s please
* test: revert more accidentally removed fixes
* test: fix selector
* test: fix anotha one
* update lint rules to clean up bad locators in shared fixtures
* update and remove bad appActions
* test: fix some restricted notebook tests
* test: mass find/replace to enforce `toHaveCount()` instead of `.count()).toBe()`
* Remove some bad appActions and update text
* test: fix da tree tests
* test: await not await await
* test: fix upload plan appAction and add a11y
* Updating externalFixtures with best practice locators and add missing appAction framework tests
* test: fix test
* test: fix appAction test for plans
* test: yum yum fix'em up and get rid of some dragon drops
* fix: alas, a `.only()` got my hopes up that i was done fixing tests
* test: add `setTimeConductorMode` test "suite" which covers most TC related appActions
* test: fix arg
* test(couchdb): fix some network tests via expect polling
* Stabalize visual test
* getCanasPixels
* test: stabilize tooltip telemetry table test, better a11y for tooltips
* chore: update to use `docker compose` instead of `docker-compose`
* New rules, new tests, new me
* fix sort order
* test: add `waitForPlotsToRender` framework test, passthru timeout override
* test: remove `clockOptions` test as we have `page.clock` now
* test: refactor out `overrideClock`
* test: use `clock.install` instead
* test: use `clock.install` instead
* time clock fix
* test: fix timer tests
* remove ever reference to old base fixture
* test: stabilize restricted notebook test
* lint fixes
* test: use clock.install
* update timelist
* test: update visual tests to use `page.clock()`, update snapshots
* test: stabilize tree renaming/reordering test
* a11y: add aria-label and role=region to object view
* refactor: use `dragTo`
* refactor: use `dragTo`, other small fixes
* test: use `page.clock()` to stabilize tooltip telemetry table test
* test: use web-first assertion to stabilize staleness test
* test: knock out a few more `page.click`s
* test: destroy all `page.click()`s
* refactor: consistently use `'Ok'` instead of `'OK'` and `'Ok'` mixed
* test: remove gauge aria label
* test: more test fixes
* test: more fixes and refactors
* docs: add comment
* test: refactor all instances of `dragAndDrop`
* test: remove redundant test (covered in previous test steps)
* test: stabilize imagery operations tests for display layout
* chore: remove bad unicorn rule
* chore(lint): remove unused disable directives
---------
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* docs: fix type imports in openmct.js
* docs: fix type imports
* docs: fix types for eventHelpers
* docs: types for TypeRegistry
* docs: types for StatusAPI
* docs: fix ObjectAPI types and docs
* docs: more types
* docs: improved types for main entry
* docs: improved types
* fix: unbreak the linting
* chore: remove EventEmitter webpack alias as it hide types
* fix: return type
* fix: parameter type
* fix: types for composables
* chore: add webpack consts to eslintrc
* fix: remove usage of deprecated timeAPI methods and add a ton of docs and types
* docs: update README.md
* lint: clean up API.md
* chore: upgrade eventemitter to v5.0.2
* refactor: update imports for EventEmitter to remove alias
* format: lint
* docs: update types for Views and ViewProviders
* docs: expose common types at the base import level
* docs(types): remove unnecessary tsconfig options
* docs: ActionAPI
* docs: AnnotationAPI
* docs: import common types from the same origin
* docs: FormsAPI & TelemetryAPI types
* docs: FormController, IndicatorAPI
* docs: MenuAPI, ActionsAPI
* docs: `@memberof` is not supported by `tsc` and JSDoc generation so remove it
* docs: RootRegistry and RootObjectProvider
* docs: Transaction + Overlay
* lint: words for the word god
* fix: review comments
* fix(#7791): tc form shouldn't submit bounds changes on dismiss
* test(e2e): add tests for validating time conductor popup
- update appAction for setting time conductor in fixed mode
- add a11y to time conductor in fixed mode
- update tests using `setTimeConductorBounds`
* fix(#7791): actually fix the problem. Also, add a test.
* test: add annotation to regression test
* docs: comments
* test: fix the reset image button flake ONCE AND FOR ALL
- wait for the rightmost image thumbnail to be in the viewport :D
* test: add tests for `setTimeConductorMode` and `setTimeConductorBounds`
* DRAFT - alignment for axes
* Use alignmentContext to manage tick widths instead of passing around as props
* Remove log statements
* Add ability to remove alignment widths for a given y axis
* Fix computation of left margin and width of plan when in the timestrip
* Remove excess padding when there is no left y axis
* Use alignment composable to adjust left margin and width of time system axis
* Fix now marker visibility
* refactor: use built in `Map()` data structure
* refactor: improve readability and conciseness
* docs: improve jsdocs
* refactor: move jsdoc typedefs to bottom of file
* refactor: axis to use vue reactivity
* fix: return alignment as an object of refs
* alignmentMap needs to be shared state, move it out of the useAlignment composable.
* Fix now marker offset
* Add new visual test for time strips
* update with animation stabilization
* Fix failing test due to changed injected property (path -> objectPath)
* change injected property from path to objectPath
* Fix spelling
* Remove unused arguments to function call
---------
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
Co-authored-by: Hill, John (ARC-TI)[KBR Wyle Services, LLC] <john.c.hill@nasa.gov>
* For telemetry that cannot have it's own configuration, ensure that it is correct initialized by the parent.
* stacked plot test checks that config properties for immutable telemetry points are applied correctly
* add tab navigation to inspector tabs
* add accessibility metadata to this component
* Update title to be on the correct component. Add expand/collapse logic
* clean up test
* refactor: better a11y for plot forms, fix "expand by default" test, refactor out `plotActions.js`
* a11y: aria label for plotOptionsItem
* refactor(a11y): PlotOptionsBrowse structure to have better a11y
* fixed tests
* address comment
* reverted to match previous commit
---------
Co-authored-by: Hill, John (ARC-TI)[KBR Wyle Services, LLC] <john.c.hill@nasa.gov>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* update imagery to be static
* bump versions
* doesn't do anything
* does this do anything
* undo only
* update the hardcoded urls
* add ignore CI logs push
* downgrade to test
* update the package lock
* Add some more noise reduction
* move to elements tab so that there is no time-based component
* stability
* re-enable main test
* Enable tests and fix some failing ones
* revert accidental changes
* test(a11y): on failure, take a screenshot to disk
* test(visual): wait for the snapshot indicator to stop flashing
* Fix all failing tests
* test: disable a11y checks for planning suite
* lint:fix
* fix pathing issues
* build: increase visual-a11y parallelism from 2 to 4
* test: darkmatter theme a11y checks + snapshots-- ACTIVATE!
* test: fix file name and path
* fix(#7317): scott bell prophecy
* jk no credit for u
* chore: disable parallelism until we figure out what's going on
* chore: set parallelism to 2 in hopes it fixes percy
---------
Co-authored-by: Hill, John (ARC-TI)[KBR Wyle Services, LLC] <john.c.hill@nasa.gov>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* Use setMode API to set the time span as well as the bounds instead of the old bounds time API.
* Add test for synchronized time conductor via plots
* Fix linting issue
* If we're paused, don't purge data out of bounds
* Refactor auto scale utility functions for reuse
* Create new test spec for plot controls
* Move plot related actions into it's own file
* Fix typo for imports
* Remove named exposedFunction as it is causing errors when the method is used on the same page more than once.
* Fix spelling
* clear any staleness subscriptions before viewing a new object
* add checkbox to options for createDomainObjectWithDefaults, update swg staleness provider to use new time api, add test
* revert
* modified for simplification and to remove the need to update helper methods
* consistent naming convention
* Update e2e/tests/functional/staleness.e2e.spec.js
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* adding back vars that were removed
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* chore: upgrade eventemitter to v5.0.2
* fix: pass context to eventHelpers
* fix: no need to destroy router as it is destroyed during openmct teardown
* fix: register `CreateAction` and retrieve it from the registry
* test: fix tests
* refactor: import action key consts
* fix: update usage. don't use getters
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
---------
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
* run scroll method to scroll to top after initial load of historical data
* clarifying comment
* added e2e test to make sure tables auto scroll on mount
* adding descriptive comments
* adding in ascending check as well
* added new appAction for navigating to/in realtime, using it in table scroll test
* lint
---------
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
* this is 2024. `*` observers no more.
* add edit and save domain object helper functions
* add aria-labels and fix e2e tests to use new labels
* generate and save in local storage a condition set with telemetry and condition
* rename const
* move creation code out of generateLocalStorage since it is immutable
* remove function abstractions
* remove @localStorage test label
* Update e2e/tests/functional/plugins/conditionSet/conditionSet.e2e.spec.js
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Update e2e/tests/functional/plugins/conditionSet/conditionSet.e2e.spec.js
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Update e2e/tests/functional/plugins/conditionSet/conditionSet.e2e.spec.js
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Update e2e/tests/functional/plugins/conditionSet/conditionSet.e2e.spec.js
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* remove unneccesary aria text
* remove unneccessary aria text
* use recommended playwright locators
* lint fix
* remove unneccesary steps now that child created directly in parent
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* initial theme plugin setup, changes to layout frames
* update visual tests
* Changes to gauge, layout borders, and background
* Make background image a DIY theme variable. Fixes made to gauges. Deleted custom font.
* More changes to overall background colors. Added glass layer effect to menus
* changes to menu
* Fix to make theme easy to run
* Fix tab colors and add glass background to menus
* make highlightd corners longer
* Initial changes to font styles
* Add temporary numeric font style. Test numeric font in gauges.
* Initial changes to alphanumerics in layouts
* Updated variables
* update plugin.js file
* Fix highlighted corners on frames such that it uses outermost frame
* renaming theme plugin and rename branch
* fix button colors to be more readable
* change background image
* Fix bad merges from other theme files. Fix gauge and alphanumerics such that they dont have darkmatter borders
* more fixes
* Fix where mixin is used such that when an object's frame is hidden, highlgihts disappear
* remove blur from meter gauges
* Add comment about this theme being in beta mode
* Delete draft .scss file that is no longer needed
* Fix major accessibility issues
* Fix PR review comments
* ✨ fix: Correct import file name for DarkMatter theme.
* Fix other theme code that was failing e2e tests
* Revert index.html
* Fix linting error
* Fix for failing percy test regarding padding
* Fix for failing percy test regarding padding part 2
* Fix for failing percy test regarding padding part 3
* Remove mixin that may be causing percy issue
* Another fix to resolve percy issue
* Add back some code that was deleted during debugging, and create new variables for the object padding
* Fix gradient clipping in inspector
* Restructure all constants-.scss files
* Change bg image to be square and NASA official picture
* Final fixes to darkmatter variable layouts
* Address PR comments
* Change darkmatter to darkmatterTheme
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* Closes#7635
- More specific approach to CSS class application for column vs. row layouts.
- Added layout direction CSS classing to `c-fl-container__frames-holder`.
- Switched toolbar icon and titling for better parity with
'toggle' approach used elsewhere.
- Cleaned up duped property def in mixin.
* Addressing PR change requests
- Updated e2e test.
- New computed properties for layout direction.
- CSS code cleanup.
* fix selector in test
* fix more bad selectors
* fix changed title
---------
Co-authored-by: David Tsay <david.e.tsay@nasa.gov>
* add progress bar
* improves performance a lot
* fix test
* remove old function
* fix legit bug from test - well done tests
* add constant, better comments
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* chore: remove all usage of deprecated Time API methods
* test: update unit test
* docs: Fix spacing and add clarity to TimeConductorBounds definition.
* test: add unit test coverage for new time api methods
* enable eval source maps for debugging
* split image and text paste handling
better event handling
* change back source maps
* image takes precedence over text
* break up notebook entry functions for re-use
* create hotkeys utils
add clipboard functions
* add notebook paste test
* add test for pasting to selected but not editing entry
* link tests to issue
* jsdoc addition
* jsdocs
* no need to import then export
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* fix changed path
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Handle the case where the pasted data is not an image or it is image AND text
* Change method name for paste handling
---------
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* source maps
* do not persist if obj is not persistable
* nope
* prevent mutation of configuration
* static roots are read only by nature
* helps to use functions correctly
* update persistModeChange logic
* remove debug
* remove unnecessary change
* fix: remove mystery webpack code
* fix: remove type:module and specify exports
- we aren't a module... yet
* fix: rename webpack*.js to webpack*.mjs so we can use import/export. fix imports
* fix: exports format
* fix: woops, need to add `start` script back
* chore: split e2e into its own module
* fix: use normal Painterro import
* fix: update e2e pathing
* fix: copy over helper functions
* chore: specify `cwd` for playwright configs so that openmct npm commands work as intended in any environment
* chore: add pretest script to e2e package.json
* chore: don't package e2e
* refactor: tidy up webpack common config
* chore: compile types to a single file
* chore: fix visual test npm scripts
* chore: fix import pathing
* chore: define package exports, move test specific dependencies to the subpackage
* chore: export test framework from openmct-e2e
* chore: export baseFixtures also
* chore: let `openmct` and `openmct-e2e` share `node_modules/`
* chore: use `--workspace`, remove pretest script
* Revert "fix: remove mystery webpack code"
This reverts commit eb14d52569ffa27ab1a090b883694f4707b59cd0.
* chore: update package-lock
* chore: add `.npmignore`
* fix: *js -> mjs
* fix: resize conductor properly
* refactor: more computed properties, unregister listener
* fix: beforeUnmounted hook
* test(visual): add time conductor visual test for fixed mode
* fix: initialize to `null`
* feat: extend the base `screenshot` function to mask elements which will always create variance in an Open MCT screenshot
* docs: add types for fixtures
* fix: remove unneeded await
* chore: add sinon timers types package back
* docs: remove unused docs
* doc: remove unused docs
* test: add visual realtime url, update imports
* feat: provide wrapped page.screenshot fixture that applies defaults
* test: add basic timeConductor snapshot tests
* chore: update eslint config
* lint: remove unused disable directives
* test: remove redundant navigation
* fix: remove listeners
* fix: maybe stabilize unit tests
* docs: remove
* fix: provide sourcemaps in unit tests
* test: add regression snapshot test for time conductor axis
* lint: remove unused imports
* feat(e2e): add fixture to manually tick the clock and use it
* test: reactivate test now that we don't use deploysentinel :(
* test: update snapshots
* test: add test for clockOptions and tick fixtures
* test: add afterEach stub and fixme
* test: try and stabilize fault management flake
* lint: defy the word gods
* chore: ignore `*-darwin.png` screenshots
* chore: remove darwin screenshot binaries
* docs: markdownlint
* docs: remove MacOS specific instructions from snapshot testing
* fix: remove a11y
* chore: update tsconfig to target modern ES
* docs: update UserProvider
* docs: update UserAPI, make openmct private
* docs: update StatusAPI
* refactor: convert ViewRegistry to ES6 class
* docs: finish type imports for openmct api
* docs: minor doc improvements
* docs: add UserIndicator readme
* docs: add User API section to API docs
* docs: document Mission Status
* docs(JSDoc): primitive types should be lowercase, otherwise TitleCase
* request telemetry when subscribing to data in case we have cached subscription
* change back to >=
* revert
* update tests
* fixing tests
* add metadata
* fix test
* another mock required
* one more function needed
* attempt to fix some afterall errors
* add fixme for e2e test
* fail fast on request
---------
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* source maps
* any tables without configuration will default to either default options or configured options
* prevent double unsubscribese
* remove source maps
* update coment
* moving defaults to plugin level
* whoops
* missed a spot, updated omment
* adding config values
* lint
* typos
* fixing broken ref
* fixing broken ref
* actually fixing ref
* setting rowLimit so initial change does not trigger a resubscribe of telemetry that was not subscribed yet
* include package lock
* migrate to npm ci
* remove cache busting doc and replace with npm run clean
---------
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
https://github.com/nasa/openmct/pull/7565 Modified Stacked Plots to not show Missing Objects. Added a check in Telemetry Collections for missing objects before displaying telemetry metadata time system error.
* fix: painterro import
* test(snapshotAnnotation): add minimal e2e test
* chore: add e2e test annotation
* fix: notebook snapshot test
* refactor: put `v-else` on template
* small changes to the test and a visual one
* additional a11y
* fix: html structure
* test(e2e): fix notebook snapshot tests
* Update documentation for file download and JSON testing
* Update stubs and add jpg/png export
* refactor(TimelistComponent): tidy up
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* allow content to scroll vertically
* add framework for inspector content scrollable e2e test
* fix paths and spelling error
* add aria-label to properties list
* add scroll check to test
* use click, which scrolls if needed
* use scrollbar to scroll
* Closes#7566
- Fixed scrolling to only apply to the area below the Inspector tabs.
- Removed unneeded padding in pane.scss.
- Alignment fixes to related scroll elements in tree.
* cspell: ignore this file because it doesn't understand latin
* fix selectors and test
* lint fix
* driveby: wait for thumbnail bar to finish scrolling before taking snapshot
---------
Co-authored-by: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* refactor: url tools use named exports
* fix: refactor method and remove customUrlParams
* test(e2e): verify bounds are preserved in data pivoting
* test: remove test as feature is no longer needed
- dataVisualization logic has moved from MMGIS plugin to the open source. As such, we can just use the time conductor bounds
* refactor: autoformat keeps changing this so i'mma just commit it
* refactor: remove unnecessary code
* refactor: simplify, add docs
* Revert "refactor: remove unnecessary code"
This reverts commit 87aef35c510230835fb682b80e89a6006ef2d923.
* a11y: improve aria labels for ITC
* fix: simplify url method
* fix: update ITC app actions
* test: add test to generate test data for display layout w/ overlay plot + ITC enabled
* test(e2e): add suite + test for open in new tab from subobject
- needs cleanup
* a11y: various a11y improvement drivebys
* a11y: clock indicator needs to be quiet
* a11y: add `aria-live` to SuperMenu details
* a11y: greatly improve a11y of Menus and SuperMenus
* test(e2e): clean up test
* fix: improve a11y for context menus, fix test
* chore: remove nop-longer-recommended extension
* feat: provide one more bound option for example data viz
* fix: no need for `mount`, use dynamic rendering instead
* Revert "fix: simplify url method"
This reverts commit b24c7dabc783a9a1c3f2460eada99f452259f566.
* fix: correct time conductor bounds when opening in a new tab from a plot in the inspector
* test: fix e2e tests
* Revert "test: remove test as feature is no longer needed"
This reverts commit 759ebd4667bffb1979d5f62af6b47f349dcd9f77.
* test: move 2p annotation to test
* test: fix e2e
* fix: no words for the word god today
* test: fix e2e
* fix: e2e test
* test: fix test
* driveby: fix perf test
* fix: revert required prop change
---------
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Initial changes to refactor Time Conductor
* Finish refactor using grid-template
* Finish total refactor of Time Conductor
* Initial mobile changes
* Fix TC on mobile by changing grid template
* Fix more mobile stuff
* Add ellipsize to TC popup options and rearrange popup inputs and labels
* Small final changes so TC is adaptive to extreme cases
* Add e2e mobile test
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* refactor: merge FaultManagementListView into FaultManagementView
* refactor: make `selectedFaults` a computed property
* refactor: use named exports
* fix: reset fault map AFTER selectedFaults have been acknowledged
* a11y: add aria labels for fault management toolbar buttons
* refactor: use named import/exports
* a11y: add label
* a11y: add aria label for checkboxes
* fix: acknowledging or shelving single fault from context menu should only apply to selected fault
* refactor: use change event instead of input event for checkbox
* test: fix e2e tests, remove expect.softs
* test: stabilize fault management e2e tests
* d3 implementation of progress pie chart
* Handle 0% and 100% cases
* PR #7485
- Minor tweaks to `s-selected` styling.
* add in-progress class for compact view
* Fix issue where updating progress for pie chart wasn't working till at least one clock tick.
Write tests for progress pie
* update documentation for clock annotation
* Update clock annotation in tests
* split long testfile
* driveby missing test
* driveby fix flake
* temp: fix flake and prep for visual test
* Fix linting errors
* this should be resolved
* these keep popping up
* moving some of this around
* moving this around
* the test
* Fix imports for tests
* no longer need constant
* move to front
* Stabalize name
* test(missionStatus): fix visual test
---------
Co-authored-by: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* Fix error when removing staleness subscription due to incorrect parameter
* On resize, clear the drawing API to reset the height and width for point calculation.
* Add e2e test to test limit lines after resizing the plot view.
* We need to update viewport when drawing limits in case there is no data for plots.
* Address review comments. change event naming convention and reduce debounce time.
* Use limit line and label seriesKeys to make ids unique
* Improve locator for limit lines checkbox
* Add a check for network requests when limit lines are redrawn
* Make overlay messages centered
* Fix changes so that only dialogs and not forms are affected
* Fix buttons such that they are right-aligned
* Reduce to one worker for stability
* Add test to cover new capabilities
* lint fixes
* Closes#7343
- Fixed an oversight that caused the top of form dialogs to
be scrolled out of view by default.
- Fixed approach to vertical centering for `-fit` type confirmation dialogs.
- Reduced size of confirmation dialog icons.
- Smoke tested in Chrome mobile emulator in a large variety of mobile
viewport sizes and orientations.
* Closes#7343
- Removes extra margin unintentionally added to `l-overlay-large`.
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
* Add the disabled class instead of the disabled property
* Add test for condition set test data
* Use computed property for css class
* Use array syntax for class instead of computed value
* Fix .getByTitle locators to use .getByLabel instead
---------
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* fix(#7456): check if object is an identifier
* refactor: use v-show, remove unnecessary deep copy, set yAxes array to empty in a way that preserves reactivity
* refactor: use ESM exports
* refactor: use ESM imports
* test(e2e): add test for element item removal from overlay plot
* a11y: add accessible name for object labels
* refactor: move overlayPlot creation to beforeAll, use getByLabel
* Add status area back to mobile
* Make search results responsive to width
* Make clear search button always visible, regardless of hover
* Make clear search button visible, and fix weird margin in top left corner
* Fix input width, add logic to make close button work properly, fix margin on results so there is room for close button, fix various landscape mode issues
* update mobile testing
* Fix dropdown sizes, remove shadows and corners to make it look less like a popup and more full screen
* Add animation and persist search bar in mobile
* Fix linting issues
* Fix padding in Desktop
* fix padding in status area
* fix bad merge
* lint fixes
* fix bad merge... again
* again
* fixes to mobile
* update tests
* lint fix
* test fixes
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* chore: upgrade prettier and eslint libraries to latest
- upgrade prettier
- upgrade eslint
- upgrade eslint-plugin-prettier
- upgrade eslint-config-prettier
* chore: run lint:fix
* chore: add `prettier-eslint` devDependency
- The `prettier-eslint` vscode plugin sinc v6.0.0 no longer provides this package so we must install it as a devDependency so that autoformat works.
* chore: add recommended extensions file for vscode users
* Update extensions.json
* Revert "Update extensions.json"
This reverts commit 942f341a75.
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* feat: enable mission status in example user
* test: add initial missionStatus suite
* test(WIP): mission status e2e suite
* test(e2e): add e2e and visual tests for mission status + a11y
* test(a11y): scan for a11y violations
* a11y: remove labels for non-interactive elements
* fix large view in tree
* remove existing view concept
* fix plots in overlays
* remove debug and actually remove overlays when dismissed
* add test
* improve tests
* move test
* Push the value of a property to the activity as a string if it is not undefined.
* Add documentation for sourceMap filterMetadata
* Allow . for filtering. Check for null values
* refactor: `UserIndicator` use vue component directly
* style(WIP): filler styles for user-indicator
* feat(WIP): working on mission status indicators
* feat: support mission statuses
* feat(WIP): can display mission statuses now
* feat(WIP): add composables and dynamically calculate popup position
* feat(WIP): dismissible popup, use moar compositionAPI
* Closes#7420
- Styling and markup for mission status control panel.
- Tweaks and additions to some common style elements.
* feat: set/unset mission status for role
* refactor: rename some functions
* feat: more renaming, get mission role statuses working
* refactor: more method renaming
* fix: remove dupe method
* feat: hook up event listeners
* refactor: convert to CompositionAPI and listen to events
* fix: add that back in, woops
* test: fix some existing tests
* lint: words for the word god
* refactor: rename
* fix: setting mission statuses
* style: fix go styling
* style: add mission status button
* refactor: rename `MissionRole` -> `MissionAction`
* test: fix most existing tests
* test: remove integration tests already covered by e2e
- These tests are going to be wonky since they depend on the View. Any unit tests depending on Vue / the View will become increasingly volatile over time as we migrate more of the app into the main Vue app. Since these LOC are already covered by e2e, I'm going to remove them. We will need to move towards a more component / Vue-friendly testing framework to stabilize all of this.
* docs: add documentation
* refactor: rename
* fix: a comma
* refactor: a word
* fix: emit parameter format
* fix: correct emit for `missionStatusActionChange`
---------
Co-authored-by: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Add activity states domain object and interceptor to auto create one
* Add activity state inspector option
* Only save status if we have a unique ids for activities
* Include the id in the activity properties
* Don't show activity state section in the inspector if multiple activities are selected
* Display activity properties when an activity row is selected in the timelist
* Add compact view for timelist
* Add inspector configuration for compact view
* Set colors based on time relation of activity
* Use activity id as key if it is available
* Ensure the correct option is selected for activity states
* Closes#7377
- Markup and CSS sanding and polishing.
- Still WIP!
* Closes#7377
- Markup and CSS sanding and polishing.
- Still WIP!
* Add status label
* Rename to Expanded view and isExpanded as properties. Add display style dropdown configuration in the inspector.
* Refactor activity selection. Display activity properties
* Closes#7377
- Label formatting Todo notes about states.
- Computed values and `v-ifs` added to control display for progress pie and countdown 'hero'.
- Still WIP!
* Closes#7377
- Add svg icons and some stubbed in logic.
- Still WIP!
* Remove activity states plugin. Move the activity states interceptor to the plan plugin.
* Change activity states interceptor parameters to options
* Rename constants
* Fix activity states test
* Addresses review comments making code more readable.
* Closes#7377
- Significant adds for large Time List element styling for activity states.
- `$color*` Time List-related theme constants remapped and significantly enhanced.
- Code cleanup and removal of stubbed-in SCSS vars.
* Closes#7377
- Unit testing and colors in Snow in progress.
- Fixed erroneous checkin in ExpandedViewItem.vue.
* Remove ExpandedView component and pull the ExpandedViewItem up to the top level.
Same for ListView, pulling the ListItem up one level.
* Fix sorting for compact view.
Hardcode options for switching compact/expanded views.
* Closes#7377
- Snow Time List colors finalized and smoke tested.
- New graphic SVG for skipped activity.
- Added aria labels to SVG graphics.
* Closes#7377
- Fixed div with no class.
* Add e2e test for activity states feature.
* Address review comments. Rename variables, documentation.
* No shallow copy
* Merge updates to activity-state
* Sync with activity states PR
* Draft of progress-pie
* - Add `s-selected` styling for Expanded Time List elements.
* Add 2 new date formats
* Look and feel enhancements for pie, zero duration events and start and end time formats
* Fix pie show/hide condition
* Final touches to the pie and labels
* Refactor label logic
* Closes#7377
- Added `sweep-hand` animation element to progress pie graphic SVG.
* Remove use of ListView - no point passing arrays around since we are already using sortedItems and itemProperties for expandedViewItems
* We addded a new column for duration and changed the previous duration to countdown. This required adjustment of the test
* Fix expanded view for timelist tests
* Closes#7377
- Fixed display logic for inferred execution states.
* Closes#7377
- Fixed a bug that threw console errors when a value was undefined.
* Optimize rendering of timelist activities
* Remove focused test
* Address review comments
* Remove reactive selection for plan activities
* destructure props into individual item properties for render performance benefits
* Use local variables and remove JSON utility methods
* Change cancelled to skipped
* Focus the activity tab when shown
* Fix label updates
* Add countup to cspell
* Remove progress pie due to licensing unknowns
---------
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
* flakefinder gha
* Update e2e-flakefinder.yml
* driveby
* skip visual
* first attempt at sharding with circle
* Updated config.yml
* fixes
* missing quote
* re-enable old jobs and update to 7x
* max failures
* destructure the npm script
* missing quote
* revert
* uncomment and re-add 7 parallel
* add unit tests
* add p flag
* skip the flaky test
* Closes#7304
- Change colors to increase contrast.
- New base level theme color var: `$colorBodyFgSubtle`.
- Minor CSS cleanups.
- WARNING: this appears to have added a regression in selects
that colors the arrow black in Espresso.
* Closes#7304
- Fix dropdown arrow colors, whew.
- Normalize font sizes in Status area.
- More color changes for contrast, including new theme constants.
- TODO: compare and sync Espresso with other themes.
- TODO: check for regressions!
* disable ruleset
* Closes#7304
- Normalize font sizes in multiple spots.
- More color changes for contrast, including more new theme constants.
- TODO: compare and sync Espresso with other themes.
- TODO: check for regressions!
* Closes#7304
- Reorganize CSS files for more uniformity.
* Closes#7304
- CSS normalized across all themes via Google Sheet at https://docs.google.com/spreadsheets/d/1SEEtuNSq6I7gvVHKpHW8_fp8Ltc-HOAWxrSAkUzS6Kw/edit?usp=sharing
* Closes#7304
- Color tweaks, normalization.
* Closes#7304
- Color tweaks, normalization.
- Search layout, contrast and font-size improvements.
- Added '+' icons to collapsed pane buttons.
* Closes#7304
- Shell head layout improvements.
* Update ColorKey for Take Snapshot Failures and Opacity labels. Also fix create menu
* Closes#7410
- CHERRY PICK FROM event-colors-7410.
- Event display approach modified to include background color.
- Theme colors modified and constrast verified via Wave a11y browser plugin.
* Closes#7304
- Set back to install Espresso theme by default.
* temporarily skip
* remove comment
* lint
* Update default colors
* update snapshot
* missed
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* attempt to fix
* reenable test
* going to revert most of this, but works
* slowly reverting changes
* further reversions to the mean
* reversion to the mean
* revert
* change to use openmct element
* reference issue
* reference issue
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Support subscription batching from API, Tables, and Plots
* Added batching worker
* Added configurable batch size and throttling rate
* Support batch size based throttling
* Default to latest strategy
* Don't hide original error
* Added copyright statement
* Renamed BatchingWebSocketProvider to BatchingWebSocket
* Adding docs
* renamed class. changed throttling strategy to be driven by the main thread
* Renamed classes
* Added more documentation
* Fixed broken tests
* Addressed review comments
* Clean up and reconnect on websocket close
* Better management of subscription strategies
* Add tests to catch edge cases where two subscribers request different strategies
* Ensure callbacks are invoked with telemetry in the requested format
* Remove console out. Oops
* Fix linting errors
* convert tabs plugin to use es6 import/export
* default of eager load is false but configurable
* change true/false select to toggleSwitch
* add and clean up unit tests
* Update test
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Add activity states domain object and interceptor to auto create one
* Add activity state inspector option
* Only save status if we have a unique ids for activities
* Include the id in the activity properties
* Don't show activity state section in the inspector if multiple activities are selected
* Display activity properties when an activity row is selected in the timelist
* Use activity id as key if it is available
* Ensure the correct option is selected for activity states
* Add status label
* Refactor activity selection. Display activity properties
* Remove activity states plugin. Move the activity states interceptor to the plan plugin.
* Change activity states interceptor parameters to options
* Rename constants
* Fix activity states test
* Add e2e test for activity states feature.
* Address review comments. Rename variables, documentation.
* No shallow copy
* Suppress lint warning for conditionals
* Remove check for abort controller
* Move classes to components
* number primitive
* Closes#7369
- WIP tweaks to simplify the Inspector view.
* Ensure 'notStarted' is the default state for activities
* Remove extra quotes
* Closes#7369
- Mod to `s-selected` styling to allow selection visiblity on Time List rows.
* Use generated key for vue
* Fix e2e tests
* Fix timelist test
---------
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Add filtering by metadata. Add new sourceMap property to get a list of properties for metadata filtering.
* Change filter label names
* Add aria-labels
* Closes#7389
- Added a "No filters applied" message for both input areas.
- Added additional detail about how it works in the hint text visible while editing.
* Restore valid state if there is an error
* Fix linting error
* Tests for filtering by metadata
---------
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
* Closes#7322
- New CSS for `aria-disabled = true` property.
- Changed multiple items to use aria-disabled instead of .disabled, including:
- Action menu
- Super menu
- Notebook drag area
- Tree item style modded to only italicize when is-navigated and is being edited.
* Closes#7322
- New CSS for `aria-disabled = true` property.
- Changed multiple items to use aria-disabled instead of .disabled, including:
- Action menu
- Super menu
- Notebook drag area
- Tree item style modded to only italicize when is-navigated and is being edited.
- Create button sets itself to `disabled` when the editor is in use.
* Closes#7322
- Create button now _actually_ sets itself to `aria-disabled` when the editor is in use.
- CSS removes selector for `.is-editing`.
* fix conflict
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* dereactifying the row before passing it to the commponent
* debouncin
* i mean... throttle
* initial
* UI functionality, switching between modes, prevention of export in performance mode, respect size option in swgs
* added limit maintenance in table row collectins, autoscroll respecting sort order
* updating the logic to work correctly :)
* added handling for overflow rows, this way if an object is removed, we can go back to the most recent rows for all remaining items and repopulate the table if necessary
* removing debug row numbers
* Closes#7268
- Layout and style sanding and polishing.
- Added title to button.
- More direct button labeling.
* Closes#7268
Partially closes#7147
- Removed footer hover behavior: table footer now always visible.
- Tweaks to style, margin etc. to make footer more compact.
* moved row limiting out of table row collections and into telemetry collections, table row collections will only limit what they return in getRows, handling sorting when in different modes
* have swgs return enough data to fill the requested bounds
* support minmax in swgs
* using undefined for more clarity
* clearing up boolean typo
* Address lint fixes
* removing autoscroll for descending, it is not necessary
* update snapshots
* lint
---------
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Get actions collection on Preview Container update
* Added fixme and link to initial ticket
* Stubbed out preview mode e2e test
* Lint fix
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* add reload action plugin
* checking for domain object before reloading
* check if objects are equal before refreshing
* add test
* lint
* change to label
* ensure object styles are initialized
* resubscribe to staleness too
* add better labels for tabels
* ensure tab uses exact for label now due to table aria changes
* fix table tests
* make tabs exact
* update conflicts
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* feat(IndicatorAPI): accept Vue components
- Adds a new property to Indicators, `component`, which is a synchronous or asynchronous Vue component.
- Adds `wrapHtmlElement` utility function to create anonymous Vue components out of `HTMLElement`s (for backwards compatibility)
- Refactors StatusIndicators.vue to use dynamic components, allowing us to dynamically render indicators (and keep it all within Vue's ecosystem).
* refactor(indicators): use dynamic Vue components instead of `mount()`
- Refactors some indicators to use Vue components directly as async components
* refactor: use Vue reactivity for timestamps in clock indicator
* fix(test): fix unit tests and remove some console logs
* test(e2e): stabilize ladSet e2e test
* test: mix in some Vue indicators in indicatorSpec
* refactor: cleanup variable names
* docs: update IndicatorAPI docs
* fix(e2e): wait for async status bar components to load before snapshot
* a11y(e2e): add aria-labels and wait for status bar to load
* test(e2e): add exact: true
* fix: initializing indicators
* fix(typo): uhhh.. how did that get there? O_o
* fix: use synchronous components for default indicators
* test: clean up, remove unnecessary `nextTick()`s
* test: remove more `nextTick()`s
* refactor: lint:fix
* fix: `on` -> `off`
* test(e2e): stabilize tabs test
* test(e2e): attempt to stabilize limit lines tests with `toHaveCount()` assertion
* Provide renderWhenVisible for LadTables
* fix open in new tab
* add test for open in new tab
* fix test to include renderWhenVisible
* refactor test
* fix tests
* fix tests
* having timing issues now
* if role is removed from user, reprompt
* add some basic user login tests
* add more robust user tests
* add more robust user tests
* resolve PR comments
* setup event listener earlier
* Add double click event to expand image view
* Add performance tests for large view and close
button
* Add example imagery in flexible layout to test double-click functionality
* Remove click event listener in ImageryView.vue
* Move test to 'Example Imagery in Flexible layout'
* Refactor exampleImagery.e2e.spec.js
* Remove unnecessary code for opening and closing
large view in imagery.contract.per.spec.js
* Replace pageSelector with getByRole on double-click image test
* Add role and aria-label to focused image
* Remove unnecessary code and role attribute from ImageryView.vue
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Change the centering algorithm for timelist
Make duration formatting better
* test: add time list countdown and countup test
* test: respond to comments
* chore: lint fix
* fix: lint errors and visual suite failures
* Change parameters to options object
* Fix regression with auto scroll. Improve code readability
* Add defaults for getPreciseDuration options object
* Defaults for options
* Add missing await
---------
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* refactor to es6 class
* change URL on path or params change
* add test for url
* put into edit mode for test
* es6 module export
* a11y: add `status` role to clock component
* a11y: add label to overlay
* a11y: update roles for search results
* a11y: add `dialog` role and label for PreviewContainer
* refactor(e2e): get rid of a bunch of `page.locator()`s
* refactor(e2e): spruce up locators
* test: fix unit tests
* fix tests with new aria labels
* fix tests with new aria labels
* fix tests with new aria labels
---------
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* refactor: move package.json to type: module
this is where the fun begins
* chore: move webpack common and prod to esm
* chore: move webpack to esm, eslint to explicit cjs
* refactor: migrate all files to esm
* style: lint
* refactor: begin moving karma to cjs, use dynamic esm import
* refactor: move index-test to cjs
* refactor: begin moving e2e to ESM
this was manual. I'm committing this because I'm about to try the `cjstoesm` tool
* refactor: move all to esm
* fix: make all e2e tests use .js imports
* refactor: begin moving exports to esm
* refactor: use URL transforms instead of __dirname
* fix: use libraryExport: default to properly handle openmct
* fix: export all playwright configs as modules
* refactor: move all instances of __dirname to import.meta.url
* refactor: lint, drop unnecessary URL call
* fix: use correct URL path on helper/addNoneditableObject.js
* fix: more incorrect URL resolve issues
* fix: parse json after reading it
* refactor: fix issues arose from #7029
* refactor: move replaceAll -> replace in makeKeyString
* fix: move order of escape to backslash first
* style: lint
* chore: use ESModule imports for d3 libraries
* chore: add d3 types
* chore: use minified plotly
* chore: use ESModule style imports for printj
* chore: use `terser-webpack-plugin` to minimize
* Revert "chore: use minified plotly"
This reverts commit 0ae9b39d41b6e38f0fe38cd89a2cd73869f31c36.
* Revert "Revert "chore: use minified plotly""
This reverts commit 08973a2d2e6675206907f678d447717ac6526613.
* fix: use default minification options
* test: stabilize notebook image drop e2e test
* test(fix): remove .only()
* refactor: convert TelemetryValueFormatter to es6 class
---------
Co-authored-by: Scott Bell <scott@traclabs.com>
* Add a VISUAL_URL constant and remove all vestiges of hide inspector and tree
* hide timer and add concurrency
* turn off concurrency
* factor out old appAction
* Add expand button to panes
* remove old slow annotations
* fix fault
* update domcontentloaded
* missed refactor
* driveby: setTimeBounds private
* add comments to the percyCSS
* suggest MISSION_TIME
* more notes
* regen
* clean up test
* driveby: clean up order
* restructure
* add new suite now that i'ts hidden
* use mission time everywhere possible
* driveby
* rerun generatedata
* comments
* lint fix
* add inital pass of a11y tests
* first pass for fixing a11y problems
* update build
* add copyright
* check for slashes
* rename files
* update testcases
* update to latest
* updates
* section 508
* final version
* remove leftover
* comments
* documentation
* bad merge
* comment
* use current ruleset
* typo
* feedback
* remove time conductor due to false positives
* default to closed tabs
* add some more accessiblity checking
* change to a condition widget and update search
* lint fix
* turns this into a single function
* update doc to match single function
* update to single function
* update to new function
* lint
* update locator for search input
* fix extra page
* why
* comments
* comments
* refacotr
* wrong paths and fixes
* inspector view needs renderWhenVisible function
* add a default visualization source
* add plugin to exercise data pivotting
* use correct key string
* test skeleton
* add e2e test
---------
Co-authored-by: David Tsay <david.e.tsay@nasa.gov>
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
* add new objects for navigation testing
* add test for remaining objects
* cleanup plotly on dismount
* lint
* remove vestigial object
* do not need to call destroy here
* do not need to call destroy here
* refactor: ensure path to test file always resolves
* refactor: better locators
---------
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
Closes#7105
- Removed `:not(:focus)` CSS check for hover.
- New theme constant for a more subdued hover effect to differentiate
from active editing mode.
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Use specified group order for plans
* Allow groupIds to be a function
* Fix typo in if statement
* Check that activities are present for a given group
* Change refresh to emit the new model
* Update domainobject on change
* Revert changes for domainObject
* Revert groupIds as functions. Check if groups are objects with names instead.
* Add e2e test for plan swim lane order
* Address review comments - improve if statement
* Move function to right util helper
* Fix path for imported code
* Remove focused test
* Change the name of the ordered group configuration
* fix opacity issue
* wip, though selection still weird
* remove debugging
* plots still have issue with last tag
* add some better tests
* Apply suggestions from code review
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
* remove hardlined classnames
* case sensitivity
* good job tests finding issue
---------
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* wrote an e2e test for can create a notebook object
* made suggested changes to notebook.e2e.spec.js
* made suggested changes to notebook.e2e.spec.js
* made changes to newly created notebook
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* first draft
* add some more debugging
* add test and remove debug
* Remove debug function
* consolidate destroy
* add better canvas name and handle if gl has gone missing
* extra check for extension
* fix: use the correct event name for frame deletion
* test: add test for frame removal
* refactor: update test locators, add a11y
* test: upgrade locator
* test: assert dialog text
* Closes#5536, #5538
- Significant changes to code flow for better handling of missing telemetry values; closes#5538.
- Changes to flow to handle range display when updating composition and when ranges are set by limits.
- Added `GaugeCompositionPolicy.js`; closes#5536.
* Closes#5536, #5538
- Code cleanup, linting.
* Closes#5538
- Linting fixes.
* Closes#5538
- Added test for 'Gauge does not display NaN when data not available'.
* Closes#5538
- Refined test.
* Closes#5538
- Refined 'NaN' test.
- Added test for 'Gauge enforces composition policy';
* Closes#5538
- Fix linting issues.
* Closes#5538
- Suggested changes from PR review.
* Closes#5538
- Suggested changes from PR review.
* Update e2e/tests/functional/plugins/gauge/gauge.e2e.spec.js
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* chore: lint:fix
---------
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* only show marquee for selected item
* Revert "only show marquee for selected item"
This reverts commit d17af210c2.
* revert change made in #6767
* create framework for displayLayout visual test
* WIP create display layout for test
* only show marquee for selected
* fix selection of object in nested layout
* fix grid and code cleanup
* add child layouts side by side
* code cleanup
* externalize setup for reuse in multiple tests
* write marquee and grid tests
* fix object in layout locator
* fix nested layout selector
* add aria label to layouts
* fix layout locator
* add jsdoc for test setup function
* make test more efficient
* cleanup and linting
* update locator
* update locators
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* simple prototype
* add a few examples
* revert to original
* only check first element
* only print when we're firing
* need to return status
* ignore polling logic if not visible
* convert to es6 classes
* add private variables
* remove debug code
* revert on this branch webgl changes
* fix draw loader import
* do not use v-model for search component
* remove flakey unit tests and add e2e tests for same behavior
* remove fdescribe
* add test word
* add simple functional test for tabs
* add performance test for tabs
* make tab selection more explict
* better describe expects
* lint
* switch back to fixed time
* fix perf test for webpacked version
* lint
* relax condition
* relax condition
* resolve PR comments
* address PR review comments
* typo on role vs locator
* limits shown
* use more verbose way for uniqueness
* when adding items, check for what columns we need
* make header logic much simpler
* add test coverage
* fix test and lint
* Update e2e/tests/functional/plugins/lad/lad.e2e.spec.js
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Update e2e/tests/functional/plugins/lad/lad.e2e.spec.js
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* change to getByTitle
* lint and change to getByLabel
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* refactor: convert to ES6 function
* fix: include `keyString` in event name
- This negates the need for complicated logic in determining which objectView the action was intended for
* fix: handle the case of currentView being null
* fix: add keyString to flexibleLayout toolbar events
* fix: properly unregister listeners
* fix: remove unused imports
* fix: revert parameter reorder
* refactor: replace usage of `arguments` with `...args`
* fix: add a11y to display layout + toolbar
* test: add first cut of layout toolbar suite
* test: cleanup a bit and add Image test
* test: add stubs
* fix: remove unused variable
* refactor(DisplayLayoutToolbar): convert to ES6 class
* test: generate localStorage data for display layout tests
* fix: clarify "Add" button label
* test: cleanup and don't parameterize tests
* test: fix path for recycled_local_storage.json
* fix: path to local storage file
* docs: add documentation for
utilizing localStorage in e2e
* fix: path to recycled_local_storage.json
* docs: add note hyperlink
* Apply sort settings immediately - even when in edit mode.
* Adds test for sort order
* Enable independent time conductor for time list view
* Remove time frame duration options.
* Remove immediate sorting in edit mode.
* Closes#7113
- Color of current events changed to bring more in-line with color conventions.
- Changed Time List rgba colors to solids.
- Removed bolding on current events text.
* Fix tests to include new changes
---------
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
* WIP
* guaranteeing float32breaking values for swgs when option is set
* cleaning up and clarity
* more clarity
* removing randomization of float breaking number, as it is not necessary
* logging the values that could not be plotted for awareness
* remving auto-added imports
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* chore: remove custom `compatConfig` settings
* chore: remove `vue-compat` and adjust webpack config
* chore: explicitly define Vue feature flags
* fix: `_data` property moved to `_.data`
* fix(e2e): revert to original test procedures
* refactor: replace final instances of `$set`
* refactor: remove `Vue` imports from tests
* refactor: `Vue.ref()` -> `ref()`
* refactor: actually push the changes...
* test: replace unit test with e2e test
* test: remove test as it's already covered by e2e
* fix(test): use `$ref`s instead of `$children`
* test(fix): more `$refs`
* fix(test): more `$refs`
* fix(test): use `$refs` in InspectorStyles tests
* fix(SearchComponent): use `$attrs` correctly
---------
Co-authored-by: Scott Bell <scott@traclabs.com>
* handle unknown files and deal with copy/paste
* add some nice errors if couch pukes
* added how to adjust couchdb limits
* throw error on anntotation change
* keep blockquotes
* add test for blockquotes
* allow multi-file drop of images too
* add test for big files
* spell check
* check for null
* need to ignore console errors
* reorder tests so we can ignore console errors
* when creating new entry, ready it for editing
* fix tests and empty embeds
* fix tests
* found similar issue from notebooks in plots
* Update staleness mixin
* Fix listeners and add guard
* Add check to make sure staleness only shows for correct clock
* Add guard for time api
* Cleanup the setting of isStale in ObjectView
* Cleanup use of combinedKey on LadTableSet
* Revert Date.now() purge change
Check that the request is using realtime before using the remote-clock start and end timestamps for telemetry requests
* docs: clarify comment
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
Listen to ALL changes for a plan since couchdb feed updates does not trigger a property only event. It triggers a catchall '*' event.
Co-authored-by: Scott Bell <scott@traclabs.com>
* try marked out
* fix url validation
* now rendering blockquotes properly
* add abbrv, link titles, and strikethrough
* fix tests and lint
* Closes#6060
- CSS resets and styling for markdown-related HTML markup in Notebook entries.
- Better styling and cursor affordances for Notebook entry selection and editing interaction flow.
* add line breaks option
* Closes#6060
- Tab
* Closes#6060
- Conversion of contenteditable-div to textarea started.
- Stubbed in textarea with styles.
* have it markdown with a textarea and adjust size automatically
* Closes#6060
- Padding added back to text `div` area.
* Closes#6060
- Styles added to support Shift Log and hover behavior for entries on locked pages.
- Removed `--major` styling from Shift Log Commit Entries button
to reduce confusion with entry commit button.
- CSS code cleanups.
* two step focus/edit. also scroll into view for editing
* add markdown, strip all tags, and truncate
* lint
* remove unneeded code
* fix notebook entry, selected page may also be null
* fix existing notebook tests
* lint
* fix whitelist
* readd whitelist
* lint
* fix link tests
* fix tests
* fix tagging test
* add some markdown test
* get rid of pause
* add another sanitization step
---------
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* add script
* add package.json and script to delete annotations
* amend help
* fix issues
* added explicit runs
* add design document and index creation to script
* update tests to wait for url to change
* i think we can remove this deprecated function now
* migrating to new structure - wip
* notebooks work, now to plots and images
* resolve conflicts
* fix search
* add to readme
* spelling
* fix unit test
* add search by view for big search speedup
* spelling
* fix out of order search
* improve reliability of plot tagging tests
* Change the mount utility to use Vue's createApp and defineComponent methods
* Fix display layout memory leaks caused by `getSelectionContext`
* fix some display layout leaks due to use of slots
* Fix imagery memory leak (removed span tag). NOTE: CompassRose svg leaks memory - must test on firefox to see if this is a Chrome leak.
* Fix ActionsAPI action collection and applicable actions leak.
* Fix flexible layout memory leaks - remove listeners on unmount. NOTE: One type of overlay plot (Rover Yaw) is still leaking.
* pass in the el on mount
* e2e test config and spec changes
* Remove mounting of limit lines. Use components directly
* test: remove `.only()`
* Fix display layout memory leaks
* Enable passing tests
* e2e README and appActions should be what master has.
* lint: add word to cspell list
* lint: fixes
* lint:fix
* fix: revert `el` change
* fix: remove empty span
* fix: creating shapes in displayLayout
* fix: avoid `splice` as it loses reactivity
* test: reduce timeout time
* quick fixes
* add prod mode and convert the test config to select the correct mode
* Fix webpack prod config
* Add launch flag for exposing window.gc
* never worked
* explicit naming
* rename
* We don't need to destroy view providers
* test: increase timeout time
* test: unskip all mem tests
* fix(vue-loader): disable static hoisting
* chore: run `test:perf:memory`
* Don't destroy view providers
* Move context menu once listener to beforeUnmount instead.
* Disconnect all resize observers on unmount
* Delete Test vue component
* Use beforeUnmount and remove splice(0) in favor of [] for emptying arrays
* re-structure
* fix: unregister listener in pane.vue
* test: tweak timeouts
* chore: lint:fix
* test: unskip perf tests
* fix: unregister events properly
* fix: unregister listener
* fix: unregister listener
* fix: unregister listener
* fix: use `unmounted()`
* fix: unregister listeners
* fix: unregister listener properly
* chore: lint:fix
* test: fix imagery layer toggle test
* test: increase timeout
* Don't use anonymous functions for listeners
* Destroy objects and event listeners properly
* Delete config stores that are created by components
* Use the right unmount hook. Destroy mounted view on unmount.
* Use unmounted, not beforeUnmounted
* Lint fixes
* Fix time strip memory leak
* Undo unneeded change for memory leaks.
* chore: combine common webpack configs
---------
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* initial drag drop, wip
* images work as snapshots, but need to disable navigate to actions
* embed image name
* works now with images, need to be refactor so can duplicate code for entries too
* works dropping on entries too
* handle remote images too
* add e2e test
* spelling
* address most PR comments
* Add a VISUAL_URL constant and remove all vestiges of hide inspector and tree
* hide timer and add concurrency
* turn off concurrency
* factor out old appAction
* Add expand button to panes
* remove old slow annotations
* fix fault
* update domcontentloaded
* missed refactor
* driveby: setTimeBounds private
* add comments to the percyCSS
* suggest MISSION_TIME
* more notes
* regen
* clean up test
* driveby: clean up order
* restructure
* add new suite now that i'ts hidden
* use mission time everywhere possible
* driveby
* rerun generatedata
* comments
* lintfix
* remove series object from highlights
* remove series models from legend reactive data
* drawing all annotations at once is way faster
* fix multi annotations
* lots of reactive things depending on config
* make annotation lookup faster
* lint
* readd perf test
* address PR comments
* fix highlight typo
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* fix: register event listeners etc in `created()` hook
* fix: initialize `stalenessSubscription` before composition load and in `created()` hook
* refactor(test): make `openmct` const
* refactor: update overlayPlot spec to Vue 3 and fix tests
* refactor: fix eslint errors
* refactor: move initialization steps to `created()` hook
* test: re-enable and fix stackedPlot test suite
* fix: `hideTree=true` hides the tree again
* fix: add back in check on mount
* test: fix Layout tests
* fix: BarGraph test
* fix: plot inspector tests
* fix: reenable grand search tests
* fix: inspectorStyles test suite
* fix: re-enable most timeline tests
* fix: no need to hideTree in appactions
* fix: re-enable more tests
* test: re-enable more tests
* test: re-enable most plot tests
* chore: `lint:fix`
* test: re-enable timelist suite
* fix(#7016): timers count down or up to a target date
* test: add regression tests to cover disabled unit tests
* refactor: lint:fix
* refactor: no need for momentjs here
* fix: timerAction missed refactor
* fix: ensure timestamp is always UTC string
* test: use role selectors
* docs: add instructions for clock override in e2e
* docs: update
* Update readme
* lint
* spelling fixes
---------
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* debug
* abort any pending requests on router "change:path" event, this should catch cases where the UI is bogged down and doesnt destroy the tc first
* english
* cant always be on
* adding abort to limits requests
* finally-ing off the promise
* need to just return the object not the property
* sticking with the try/catch structure we use elsewhere
* removing abort on nav, as views should be calling destroy
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* Fix getTelemetryPath to handle cases where parent is the same as the child, handle yamcs aggregate telemetry, and fix how identifiers are passed in
* Cleanup getTelemetryPath
* Switch to filter instead of forEach
* Get path item names
* Remove tooltips on scroll of tree
* Remove handing for scroll
* Allow break-words
* Cleanup
* fix tree name issue
* add name to key, and name observers to recent objects
* no need to change key
* make more of app reactive to name changes
* fix browse bar and document title
* listen in properties for name changes
* add tests for renaming
* yeah spelling linter
* add semantic tags to forms and fixup tests
* change purpose
* actually delete the listener
* ensuring deletion
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* refactor: use `getBounds()` instead of `bounds()`
* fix: use `loadDelay` in generator subscription
* refactor: fix up e2e test
* fix: remove `.only()`
* refactor: lint
* Start to fix up conditionSet test with comments
* test: edit conditionSet to add delay value
* test: tests the case where telemetry is available
* fix: remove `.only()`
* test: add comments, clarify assertion
* refactor: lint:fix
* test: fix conditionSet default condition name test
* test: add assertions to stabilize tags tests
---------
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Don't set conductor popup to null unless the view is being destroyed
* Replace beforeDestroy with beforeUnmount
* Propagate plot tick widths to timeline view
* Check if conductor popup exists before trying to remove it from the dom
* Fix imagery e2e test
* Revert accidental commit
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Closes#6864
- CSS fixes to remove problematic duplicate overflow handling.
* fix(e2e): stabilize autoscale test
* fix(e2e): mark overlay plot tagging test as slow
* fix(e2e): stabilize ITC e2e test
* fix(e2e): don't use hard wait
* fix: remove .only 😳
---------
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* fix annotations load to not happen on start
* remove range checking per annotated point
* back to local variable
* reduce tagging size to improve reliability of test
* remove .only
* remove .only
* reduce hz rate for functional test and keep high frequency test in performance
* remove console.debugs
* this test runs pretty fast now
* fix network request tests to match new behavior
* created a throttle util and using it in timer plugin to throttle refreshing the timer domain object
* Simplify timer logic
* Clarify code a little
* refactor: lint:fix
* Fix linting issue
---------
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Set the raw series limits so that we can get the raw series limits
* fix: `toRaw()` the other gets/sets/deletes
---------
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* Reset and re-request telemetry only after receiving bounds following a mode change
* Don't check for tick - just in case the mode is set without bounds
* Use the imagery view timeContext to get related telemetry.
---------
Co-authored-by: Khalid Adil <khalidadil29@gmail.com>
* fix: remove `tree-item-destroyed` event
- Composition listeners should only be removed if the item has been deleted or its parent has been collapsed. Both are handled by `mct-tree` already, so doing this additionally when tree-items unmount is redundant.
- In addition to that, any time the `visibleTreeItems` array changes, all tree-items will unmount, so this just doesn't work as intended-- it will unregister all composition listeners whenever the tree changes!
* test: stabilize imagery test
- Use keyboard gestures to navigate
* fix: lint:fix
* Use the width and height of the container of the plan to set the activity widths and now markers
* Use the right parent to determine height and width
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Use the current timestamp from the global clock. Use mode changes to set if the view is fixed time or real time
* Reload the page after adding a plan and then change the url params.
* clock, timeConductor and appActions fixes
* Ensure realtime uses upstream context when available
Eliminate ambiguity when looking for time conductor locator
* Fix log plot e2e tests
* Fix displayLayout e2e tests
* Specify global time conductor to fix issues with duplicate selectors with independent time contexts
* a11y: ARIA for conductor and independent time conductor
* a11y: fix label collisions, specify 'Menu' in label
* Add watch mode
* fix(e2e): update appActions and tests to use a11y locators for ITC
* Don't remove the itc popup from the DOM. Just show/hide it once it's added the first time.
* test(e2e): disable one imagery test due to known bug
* Add fixme to tagging tests, issue described in 6822
* Fix locator for time conductor popups
* Improve how time bounds are set in independent time conductor.
Fix tests for flexible layout and timestrip
* Fix some tests for itc for display layouts
* Fix Inspector tabs remounting on change
* fix autoscale test and snapshot
* Fix telemetry table test
* Fix timestrip test
* e2e: move test info annotations to within test
* 6826: Fixes padStart error due to using it on a number rather than a string
* fix(e2e): update snapshots
* fix(e2e): fix restricted notebook locator
* fix(restrictedNotebook): fix issue causing sections not to update on lock
* fix(restrictedNotebook): fix issue causing snapshots to not be able to be deleted from a locked page
- Using `this.$delete(arr, index)` does not update the `length` property on the underlying target object, so it can lead to bizarre issues where your array is of length 4 but it has 3 objects in it.
* fix: replace all instances of `$delete` with `Array.splice()` or `delete`
* fix(e2e): fix grand search test
* fix(#3117): can remove item from displayLayout via tree context menu while viewing another item
* fix: remove typo
* Wait for background image to load
* fix(#6832): timelist events can tick down
* fix: ensure that menuitems have the raw objects so emits work
* fix: assign new arrays instead of editing state in-place
* refactor(timelist): use `getClock()` instead of `clock()`
* Revert "refactor(timelist): use `getClock()` instead of `clock()`"
This reverts commit d888553112.
* refactor(timelist): use new timeAPI
* Stop ticking when the independent time context is disabled (#6833)
* Turn off the clock ticket for independent time conductor when it is disabled
* Fix linting issues
---------
Co-authored-by: Khalid Adil <khalidadil29@gmail.com>
* test: update couchdb notebook test
* fix: codeQL warnings
* fix(tree-item): infinite spinner issue
- Using `indexOf()` with an object was failing due to some items in the tree being Proxy-wrapped and others not. So instead, use `findIndex()` with a predicate that compares the navigationPaths of both objects
* [Timer] Remove "refresh" call, it is not needed (#6841)
* removing an unneccessary refresh that waas causing many get requests
* lets just pretend this never happened
* fix(mct-tree): maintain reactivity of all tree items
* Hide change role button in the indicator in cases where there is only… (#6840)
Hide change role button in the indicator in cases where there is only a single role available for the current user
---------
Co-authored-by: Shefali <simplyrender@gmail.com>
Co-authored-by: Khalid Adil <khalidadil29@gmail.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: David Tsay <david.e.tsay@nasa.gov>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
* Replacing all instances of the new Vue() component creation pattern
* In Vue 3, components cannot be created on the fly and mounted off-DOM. The suggested fix from Vue is to use createApp, but in the context of Open MCT this means dozens of Vue apps being created and destroyed at any given moment. Instead, we have used a community hack for creating individual components.
* beforeDestroy() -> beforeUnmount()
* destroyed() -> unmounted()
* The addition of deep: true option on Array listeners is now required to detect Array changes
* Open MCT is now mounted on a child div instead of directly on document.body
---------
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Fixed#4975 - Compact Time Conductor styling
* Fixed#5773 - Ubiquitous global clock
* Mode functionality added to TimeAPI
* TimeAPI modified to always have a ticking clock
* Mode dropdown added to independent and regular time conductors
* Overall conductor appearance modifications and enhancements
* TimeAPI methods deprecated with warnings
* Significant updates to markup, styling and behavior of main Time Conductor and independent version.
---------
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Shefali <simplyrender@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Scott Bell <scott@traclabs.com>
* Add subscription for limits for domain objects
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* cherry-pick(#6602) : [ExportAsJson] Multiple Aliases in Export and Co… (#6658)
cherry-pick(#6602) : [ExportAsJson] Multiple Aliases in Export and Conditional Styles Fixes (#6602)
Fixes issues that prevent import and export from being completed successfully. Specifically:
* if multiple aliases are detected, the first is created as a new object and and added to it's parent's composition, any subsequent aliases of the same object will not be recreated, but the originally created one will be added to the current parent's composition, creating an alias.
* Also, there are cases were conditionSetIdentifiers are stored in an object keyed by an item id in the configuration.objectstyles object, this fix will handle these as well.
* Replaces an errant `return` statement with a `continue` statement to prevent early exit from a recursive function.
---------
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* chore: bump version to `2.2.3` (#6685)
* Add configuration detection to update table rows in place
* Fix typo for datum access
* First add new rows to the table and then update rows in place
* Each row much be checked for in place updates and inserted as needed
* Fix typo. Remove unused code.
* Update datum only. And don't allow undefined values for columns
* Fix typo
* Rename function for clarity
* Use telemetry metadata to indicate datum property to use for in place updates
* Fix typo for method call
* Fix typo for return value
* fullDatum is the datum BEFORE normalizing.
---------
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Selectively filter activities only for realtime
* Remove unnecessary logic
* Adjust hideAll and showAll flags for non-realtime mode
* Filter out past events for fixed time
* Set the timestamp on bounds change
* Cleanup
* Removed duplicated listing since handled by different method
* Inverted variable
* removed setting showAll flag
* Remove unusued showAll value
* Removed noCurrent state and isCurrent logic check based on noCurrent
* Set formatted start / end to utc mode to synchronize with current time counductor value
* Add missed file
* Lint fixes
* Formatter improvements to use the Time API and lint fix
* Updated test to use Time API formatter instead of moment directly
* Linting fix to pluginSpec
* Prettier one line
---------
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* Add additional test roles to example user
* Add session storage and role to user indicator
* Update example user provider
* Added selection dialog to overlays and implemented for operator status
* Display role in user indicator
* Updates to broadcast channel lifecycle
* Update comment
* Comment width
* UserAPI role updates and UserIndicator improvement
* Moved prompt to UserIndicator
* Reconnect channel on error and UserIndicator updates
* Updates to status api canPRovideStatusForRole
* Cleanup
* Store status roles in an array instead of a singular value
* Added success notification and cleanup
* Lint
* Removed unused role param from status api call
* Remove default status role from example user plugin
* Removed status.getStatusRoleForCurrentUser
* Cleanup
* Cleanup
* Moved roleChannel to private field
* Separated input value from active role value
* More flight like status role names and parameter names
* Update statusRole parameter name
* Update default selection for roles if input is not chosen
* Update OperatorStatusIndicator install to hide if an observer
* console.log
* Return null instead of undefined
* Remove unneccesary filter on allRoles
* refactor: format with prettier
* Undid merge error
* Merge conflict extra line
* Copyright statement
* RoleChannelProvider to RoleChannel
* Throw error on no provider
* Change RoleChannel to ActiveRoleSynchronizer and update method calls to match
* iconClass to alert
* Add role selection step to beforeEach
* example-role to flight
* Dismiss overlay from exampleUser plugin which affected menu api positioning
---------
Co-authored-by: Scott Bell <scott@traclabs.com>
* adding abortSignal back to composition load
* suppress AbortError console.errors from couch, delay requests for test to trigger abort
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Add tooltip api, extend object api to add telemetry composition lookups, and add tooltips to gauges/notebook embeds/plot legends/object frames/object names/time strips/recent objects/search results/object tree
* Add tooltips to telemetry/lad tables
* Styling normalization, sanding and polishing.
* Add tooltips for Conditional widgets and Tab Views
* Add tests
* Switch to using enum-ish consts for tooltip locations
* Trim LAD table row name to account for spacing required by linting rules
---------
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
* Fix CouchDBSearchFolder plugin to have unique identifiers.
Allow ttt-reports to be viewed as web pages
* Remove ttt-report type from WebPage view provider. This is being moved to the viper-openmct repo instead
* Adds check for classList
* Add WebPage to the components list
* Remove uuid and use the folder name as the identifier instead
* Remove focused test
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
* New option to show/hide stacked plot aggregate legend - defaulted to not show.
Use the Plot component in the StackedPlotItem component for simplicity and show/hide sub-legends as needed.
* Fix position and expanded classes when children are showing their legends
* Fix broken tests and ensure gridlines and cursorguides work.
* Adds e2e test for new legend configuration for stacked plot
* Address review comments - Remove commented out code, optimize property lookup, fix bug with staleness
* Remove the isStale icon in the legend when a plot is inside a stacked plot.
---------
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
* Run nightly, fix triggers
* contains
* driveby: remove github reporter
* update tests to match
* redo opened logic
* don't run pr:e2e and pr:platform
* de-dupe method
* there can be only one... input per label
* there can be only one... id but we need none
* there can be only one... input
* create test and add multiple images to display
* WIP test written but not passing
* fix test
* Update e2e/tests/functional/plugins/imagery/exampleImagery.e2e.spec.js
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Update e2e/tests/functional/plugins/imagery/exampleImagery.e2e.spec.js
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* remove await from synchronous code
* linting
---------
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Ensure timelist scrolling happens correctly for clock as well as fixed time
* If an activity has already started, show the duration as time to/since the end of the activity
* Addresses review comments: Reverse +/- indicators, removes milliseconds from times.
* Fix linting issues
* Add e2e test for timelist display
* Scroll to 'now' if available
* feat: `getAnnotations` can take an `abortSignal`
* feat: add `MAP` annotationType
* fix: handle `MAP` annotations in search results
* fix: have `loadAnnotationForTargetObject` take an `abortSignal`
* fix(#5646): abort pending annotations requests on nav away from notebooks or plots
* fix: handle AbortErrors gracefully
* fix: remove redundant `MAP` annotation type
* docs: add comment
* fix: navigate before selection for geospatial results
* feat: comparators for annotation target equality
- Adds `addTargetComparator()` to the Annotation API, allowing plugins to define additional comparators for certain annotation types.
- Update usage of `_.isEqual()` for targets to use the `areAnnotationTargetsEqual()` method, which uses any additional comparators before falling back to a deep equality check.
- Handle aborted `getAnnotations()` calls gracefully in the AnnotationInspectorView
* test: add unit tests for target comparators
---------
Co-authored-by: Scott Bell <scott@traclabs.com>
* add time context for telemetry collections
* move time context to options
* clean up jsdoc
* clean up jsdoc
* Update src/api/telemetry/TelemetryAPI.js
* clean up comments
* use time context bounds if defined for start and end
* refactor: format with prettier
* hide tab if not editing and fix issue where configuration is null
* show filters tab if editing
* works with dropdown
* add a none filter to remove 'filters applied' styling'
* pass appropriate comparator
* openmct side is ready
* clear filter still not working
* fix clearing of procedures
* add filters
* add some basic documentation
* add some basic documentation
* add some basic documentation
* fix grammar issues and convert away from amd pattern
* convert to permanent links
* refactor: format with prettier
* add aria labels for selects
Fixes issues that prevent import and export from being completed successfully. Specifically:
* if multiple aliases are detected, the first is created as a new object and and added to it's parent's composition, any subsequent aliases of the same object will not be recreated, but the originally created one will be added to the current parent's composition, creating an alias.
* Also, there are cases were conditionSetIdentifiers are stored in an object keyed by an item id in the configuration.objectstyles object, this fix will handle these as well.
* Replaces an errant `return` statement with a `continue` statement to prevent early exit from a recursive function.
---------
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* fix: setStatus when add/replace a plan in composition
* test: add regression test
* chore: lint:fix
* test: add visual tests for plan and gantt chart drafts
* fix: trigger e2e-couchdb run on sync
* fix: remove `e2e-couchdb` label if present after run
* fix: remove `synchronize` trigger
- this is intended behavior
* refactor: update GHA to use octokit action
* docs: add note about GHA warnings
* fix: remove `pr:e2e` label after run
* fix: use github-script
* chore: bump version to `2.2.2` (#6615)
* persisting lad configuration in the view when it changes
---------
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* fix spelling error
* apply changes after dynamic component updates
* remove * listener
* react to url change
* es6 mode
* fix html structure
* Closes#6614
- CSS fixes for revised widget approach.
* include url prop for vue component reactivity
* disable a tag overriding font color
* provide a reactive object for component reactivity
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
* test: add appActions, stabilize overlayPlot test
- Adds `waitForPlotsToRender`, a function that waits for all active `.plot` elements on the page to load and draw their series data
- Adds `getCanvasPixels`, a function that takes a canvas selector and retrieves an array of canvas pixel data.
- Modifies `getCanvasPixels` to use `page.evaluateHandle()` so that the canvas handle lifetime exists throughout the test (this was causing flakiness before)
* test: refactor and stabilize `plotRendering` tests
* test: remove redundant test suite
* test: stabilize plot legend color swatch test
* docs: mention `waitForPlotsToLoad()` in e2e docs
* refactor: have getCanvasPixels return actual rgba values
* docs: fix typo
* test: use appAction and fix reload wait condition
* docs: add additional context for `waitForPlotsToRender()`
* refactor: one-liner
* docs: tidy up docs
* fix: preserve truthy namespaces and unmapped values
- Fixes the issue of the Static Root provider overriding existing namespaces, such as those from a telemetry dictionary
- Fixes the issue of keys of child objects NOT present in the idMapping (such as those from a telemetry dictionary) being overwritten as undefined
- TODO: This will not work for objects exported from an environment that has the "MyItems" namespace defined to anything other than an empty string. Need to figure out how to handle this.
* fix: handle the case of rootId having a namespace !== ""
* refactor: use `parseKeyString`
* fix: StaticRootPlugin object mapping for non-empty namespaces
* fix: use index, fix location identifiers
* tets: add non-empty namespace tests (wip)
* refactor: rename and move test files
* test: update StaticModelProvider tests
* fix: remap to identifiers for config, not keystring
---------
Co-authored-by: Khalid Adil <khalidadil29@gmail.com>
* test(visual): add theme to notification banner test name
* test: rename file
* test: switch to small example plan
* test: snapshot object-view only
* test: fix selectors
* refactor: chain locators together
* add e2e test
* fix: remove slow function
* test: After deactivating the button, new objects must be inserted and the button becomes active again
* test: ensure clear recent objects button is active or inactive
* add an event to notify when an object is inserted in the recents list
* add an event to notify when an object is inserted in the recents list
* fix: adjusting function name and add validation for triggering the event
* fix: add event to disable button only when user click ok to clear list of recents
* test: fix failing e2e + better assertions
---------
Co-authored-by: Jesse Mazzella <jessemazzella@gmail.com>
* Refactor string to stream
* add to restricted notebooks and allow for blank users
* forgot to add notebook
* use better types and fix test
* move streamToString
* add export group
* catch blank pages
* add simple prototype
* tags and metadata now exported
* add form for options
* revert notebook
* add simple e2e test
* add test stubs
* death to debug
* Remove ticker for timelist and rename a function for readability
* Use formatting for remote clock if available.
* throttle updates to the timestamp and listing activities
---------
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Closes#6321
- Set `user-select: none` on LAD Table td elements.
- Added hover effect to LAD Table rows as affordance of the Action
menu's availability.
* Add test to ensure rows cannot be selected but do show context menus
---------
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* call update style after view is update with current style rule manager styles for components (namely condition widget) that have DOM changes after the element is grabbed to style
* target blank yo
---------
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* Change logic so that the rectangle is only drawn on one axis
* Filter firstDrawableAxis before the rest of the logic
* Update to filter yAxisIds by the canDraw function
Splits the parent and child navigationPaths into arrays of keystrings and then checks to ensure that every keystring in the parent path is included in the child path in order
* Don't initialize the selected condition style when a view is loaded
* Ensure selection of styles in Edit mode works as expected. When out of edit mode, only a computed style should be chosen to display.
* Add a view action buttons to toggle on class to control fixed layout
* Add configuration watcher and initial view action
* Added next tick in mount and updated action key
* Updated the view action key
* fix(#6455): fix infinite loop
- When the Create modal is opened, it defaults the object selected in the tree to the parent of the currently selected object. However, if this object is static, it can sometimes have a weird navigationPath and an edge case where we try to infinitely walk up the path to find the parent.
- This adds a fail-safe to verify that the navigationPath by this point contains `/browse/mine` (thus is within a creatable path). If not, it sets the default selected tree item to the "My Items" folder
---------
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* free plot on search selection and remove rectangles when resuming
* add test
* remove rectanges
* update test
* more reliable way to load annotations
* use event to wait for axes and update tests
* restore test
* cancel selection in plots if clicking outside plot
* Revert "cancel selection in plots if clicking outside plot"
This reverts commit 82ea50152b.
* Listen to the navigation triggered selection of the target object before selecting the annotations for the object
* remove commented out code
* check if we've already navigated to the object
---------
Co-authored-by: Khalid Adil <khalidadil29@gmail.com>
Co-authored-by: Shefali <simplyrender@gmail.com>
* Only use default if we've evaluated as default
* Add e2e test for conditional sets
---------
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Allow move action for locked shift logs.
* Allow remove action for links to locked shift logs.
---------
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* refactor: convert Type API to ES6 module
- Another AMD module bites the dust 🧹
* feat: add initial configurable plan type
- Name change TBD
* feat: add `clipActivityNames` property
- refactor: initialize data to `null`
* refactor: general code cleanup
* feat(WIP): name clipping via clipPath elements
* feat: compose a Gantt Chart using a Plan
- Allows Plans to be dragged into Gantt Charts (name tentative) to create a configurable Activity View
- Clip/Unclip activity names by editing domainObject property
* feat: replace Plan if another is dragged in
- SImilar to Gauges or Scatter Plots, launch a confirmation dialog to replace the existing Plan with another, if another Plan is dragged into the chart.
* test: fix tests, add basic tests for gantt
* tes(e2e): fix plan test
* docs: add TODO
* refactor: clean up more string literals
* style: remove `rx`, increase min width
- round widths to nearest integer
* refactor: extract timeline creation logic
- extracts the logic for creating the timeline into its own component, `ActivityTimeline.vue`. This will save us a lot of re-renders, as we were manually creating elements / clearing them on each tick
* style: fix text y-pos and don't round
* fix: make activities clickable again
* docs: add copyright docs
* feat: swimlane visibility
- configure plan view from inspector
fix: update plans when file changes
- fix gantt chart display in time strips
- code cleanup
* fix: gantt chart embed in time strip
* remove viewBox for now
* fix: make `clipPath` ids more unique
* refactor: more code cleanup
* refactor: more code cleanup
* test: fix existing Plan unit tests
* refactor: rename variables
* fix: respond to code review comments
- Move config manipulation to PlanViewConfiguration.js/.vue
- Variable renames, code refactoring
* fix: unique, reproducible clipPathIds
* fix: only mutate swimlaneVisibility once on init
* fix: really make clipPathId unique this time
* refactor: use default config
* Closes#6113
- Refined CSS class naming and application.
- Set cursor to pointer for Activity elements.
- Added <title> node to Activity elements.
- Styling for selected Activities.
- Better Inspector tab name.
* fix: make Plan creatability configurable and false by default
* test: fix existing tests and add a couple new ones
* Closes#6113
- Now uses SVG <symbol> instead of rect within Activity element.
- Passes in `rowHeight` as a prop from Plan.vue.
- SWIMLANE_PADDING const added and used to create margin at top and bottom
edges of swimlanes.
- Refined styling for selected activities.
- New `$colorGanttSelectedBorder` theme constant.
- Smoke tested in Espresso and Snow themes.
* fix: default swimlaneWidth to clientWidth
* test: fix test
* feat: display selected activity name as header
* fix: remove redundant listener
* refactor: move `examplePlans.js` into `test-data/`
* docs: remove copyright header
* refactor: move `helper.js` into `helper/`
* refactor: `helper.js` -> `planningUtils.js`
* fix: update pathing
* test: add tests for gantt/plan
- add visual tests for gantt / plan
- add test for clicking a single activity and verifying its contents in the inspector
---------
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
* do not show loaded tabs before showing current tab
* clean up logic to show added tabs
* fix unit tests
* remove unnecessary mocks
* handle objects current tab when last tab removed
---------
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* fix: inspector view tab priority
- fixes issue where inspector view priorities were not being passed to the view registry
* chore: run lint:fix
- eslint sez no danglin' commas! EVER!
* fix: update more viewProviders
---------
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* fix(#6391): refresh composition on treeItem open
- On treeItem open, gets the latest composition from persistence
- Composition was being refreshed, but only within the same instance (mutables)
* test: regression tests for localStorage and couch
---------
Co-authored-by: Scott Bell <scott@traclabs.com>
* Changed tooltip text to be Shift+Alt drag to pan
* Updated e2e test to match alt text change
* Updated panHotKey to match changed alt text
---------
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* allow lad tables rows to be selected
* rows now clickable and previewable
* trying to add type column
* aggregate and telemetry
* if aggregate, use blank for value and timestamps
* remove extraneous path lookup
* cleanup css
* add tests
* allow hiding of type column
* adjust tests to include type column
* Add minimize to the notification model and minimize missing object notifications
* Add test
* Short circuit telemetry api functions if passed in domainObject is missing/type unknown
* Clear notifications properly after test
* adding lad table configuration, specifically column visibility
* making sure units column checkbox is updated when lad tables are removed from lad table sets
* fixes based on PR feedback, copyright, consts, code, oh my!
* added a test for column hiding
* remove .only
* add a notification for inspector view that must be editing, move selection logic to vue component as it was not being triggered after navigating away in the inspector tabs
* Closes#6354 Notebook Enter key adds new lines
- Removed enter key handlers from Vue component.
- Added "Save" button.
* entry must be selected before editing
* focus on newly created entry
* Closes#6354 Notebook Enter key adds new lines
- Removed enter key handlers from Vue component.
- Added "Save" button.
* do not allow edit unless entry is selected
* remove css for disabled cass
---------
Co-authored-by: David Tsay <david.e.tsay@nasa.gov>
* framework for all inspector views being provided
* move elements view to plugin
* move location view into plugin
* move styles view into plugin
* move properties view into plugin
* install inspector views in index.html
* rename filters inspector view provider for tab
* finish elements view as plugin
* finish location view as plugin
* finish properties view as plugin
* finish styles view as plugin
* point main styles to new plugins
* finish inspector tab and views components
* fix paths for styles views
* fix path issues
* rename fault management inspector view
fix unit test
* fix paths for unit tests
* rename bar graph inspector view
fix unit test
* rename plots inspector view
fix unit test
* inspector views installed in mct.js
* sort inspector views by priority
* make name required for inspector tabs
* priority changes
* only show filters tab if filters exist
* object renamed to domainObject
* remove dead code
* select first tab if selected tab becomes hidden
* bandaid fix to get e2e working
* also apply bandaid to this test
* [a11y] Basic ARIA tab role for Inspector panels
* test(e2e): better selectors for scatterPlot test
* test(e2e): fix search test selector
* pass key and glyph to views
* use key for tabs identification
* high + 1 priority for object specific views
* Closes#6118
- Significant layout and behavior refinements to Inspector tabs.
- New theme constants for tabs.
- Tabs in Tab Views updated to use theme constants.
* Closes#6118
- Refinement to look of Inspector tabs.
- Shortened names in many *InspectorViewProvider.js files.
- WIP adding glyph capability, display not yet wired up.
* Closes#6118
- Tightened H2 spacing in Inspector.
* move annotations into plugin
* register annotations view provider
* move tags inside annotations
* fix paths
* move element item group into plugin
* move PlotElementsPool view into plugin
* plots has a different element view
* fix paths for plot elements pool
* fix: `role=` instead of `aria-role=` 🤦♂️
* test(e2e): fix tab locators
* move location views into properties tab view
* include location.scss
* move location into properties tab
* fix html for location within properties view
* retain selected tab on new selection
* refresh view of same tab with new selection
* add browse mode inspector view for alphanumerics
* fix prop passing
* removed vestigial code
* fix inspector tab selection
* remove timeouts and unnessecary awaits
* test: assert checkbox status before checking
* add selectInspectorTab to general app actions
* use selectInspectorTabs from appActions
* need to pass page to playwright function
* select the correct tab
* fix plan unit test
* fix plots tests by clicking on correct tab
---------
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Scott Bell <scott@traclabs.com>
* fix: Transaction-ify the CreateAction
* test: add regression test and update tree locators
* test: make object search test less flaky
* test: revert locator
* freeze if annotation is selected
* add test
* add stacked plot test
* actually test ticket issue
* wait for canvas to stabalize
* wait for canvas to stabalize
* address PR comments
* fix: ensure Vue can react to stacked plot item reorders
- Use Vue.$set instead of assignment so Vue can pick up StackedPlot composition reorders immediately
* test(e2e): add test for stacked plot item reorder
* docs: specify plot item order in comments
* fix: correct page.goto() url
* throttle search results to one a second
* changed to use custom debounce due to async
* attempt to fix flakey test
* attempt to fix flakey test
* revert test changes
* reduce debounce time and add e2e test
* allow canceling of timeout
* removed debug
* make search result e2e tests more stable
* make drop down selector a constant
* address pr comments
* Decouple removing the context for a view from refreshing the context of views to get their upstream contexts
* Add test for clicking on an item in the elements pool for a preview
* Add test to ensure independent time context for items with no parents works as expected
* won't mount if cameraAngleOfView undefined
* fix non-gimbling camera azimuth
correct pan to azimuth
* reorganize shared props passing
* enable hud for non-gimbling cameras
* fix unit tests
* rotate function needs to work with numbers
* avoid -0
* fix: don't delete imagery size, update related telemetry on focusedImage change
* refactor: remove unused prop
* fix: ensure thumbnail key is unique
* fix: watch `focusedImage`, not `focusedImageIndex`
- Corrects a false assumption that if the `focusedImageIndex` changes, the `focusedImage` has changed. This was causing us to mistakenly reset a lot of display props that control whether or not the Compass shows.
- For example, if an image falls out of bounds, the `focusedImageIndex` will change as the old image is removed from the array.
---------
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
- Fixes an inconsistency in the docs with regards to the docker command for spinning up a Playwright container
- Closes an unclosed markdown code block
* adding urlWhitelist to data so when/if it is updated it triggers link formatting
* removing dupe notebook and restricted notebook checks and just moving it to base notebook functionality install checks
* nullthing to see here
* Fix independent time context to check first object in path (self) for upstream content instead of last object in path
* Revert changes that don't allow unregistering independent time context
---------
Co-authored-by: Shefali <simplyrender@gmail.com>
* fix: show yAxis properties when series is moved
- Shows the correct yAxis properties immediately when a series is moved to another yAxis
* test: check for correct yAxis properties
- refactor test to use unique autogenerated object names
- update Elements pool pane handle selector
* test: fix goto and move to beforeEach
* test: ☠️ disable GrandSearch and ApplicationRouterSpec ☠️
---------
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Fix typo when saving the user specified range
* Ensure range is specified when autoscale is turned off
* Don't redraw unless absolutely necessary
* Add 'stats' to the handled attributes for redrawing plots
* Handle x axis displayRange, marker shape and size to redraw
* If there are is no closest data point for a plot, skip annotation gathering
* Ensure that min and max user defined ranges are valid when autoscale is disabled. Otherwise, enable autoscale to true.
* Fix autoscale e2e test
* updated snapshot
* Update e2e/README.md
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Add cancel adding tag mechanism and fix persistent options visible
* Add functional test for cancel adding a tag
* Create addtag.visual.spec.js and move createNotebookAndEntry to appActions.js
* Remove createDomainObjectWithDefaults function from tags.e2e.spec.js
* Integrate Percy snapshots and remove assertions
* Move createNotebookAndEntry function back to tags.e2e.spec.js
* Update locator of Annotations tab, split helper function and add test.beforeEach
* add handling for composition items (ex overlay plot) in stacked plots, fix swg staleness provider isStale method response
* typo
* removing staleness listeners when ladtable is remove
* addressing pr comments for this component
* address changes requested for lad table sets
* had to update is-stale for the row since we used combined keys in lad table sets now
* test(e2e): add test for recent objects target
* test(e2e): Add RecentObjects tests
- Test for 'target button' scroll and animation
- Test for persistence on refresh
- Test for displaying objects and aliases uniquely
* test(e2e): add test for recent objects limit
* refactor: compress to a single line
* test(e2e): recents max limit test nests objects
- Do deep nesting of objects instead of flat objects
- Collapse the tree completely and then test the "target" button for the most deeply nested item
* test(e2e): update locator to not use `nth(i)`
* Fix selections for different scenarios
* Ensure plot selection in stacked plots works when there are no selected or found annotations
* Adds e2e test for stacked plot selection and fixes the old e2e test which was testing overlay plots instead.
* Fix selection of plots while in Edit mode
* Improve tests for stacked plots
* refactor: remove unnecessary `await`s
* a11y: move aria-label to StackedPlotItem
* refactor(e2e): combine like tests, unique object names
- Use unique object names in `text=` selectors
- Combine like tests to reduce execution time
- Use `getByRole` selectors where able
* docs(e2e): add comments to test
* fix: add class back for unit test selector
---------
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* fixing error from plots when removing swg and making methods and props private for swg staleness provider
* removing unsubscribes from destroy hooks if the item has been removed already and reverting an unneccesary change
* checking for undefined staleness response
* removed un-neccesary code
* Ensure enabling log mode does not reset series that don't belong to that yaxis.
propagate both left and right y axes widths so that plots can adjust accordingly
* Revert code
Handle second axis resizing
* Fixes issue where logMode was getting initialized incorrectly for multiple y axes
* Get the yAxisId of the series from the model.
* Address review comments - rename params for readability
* Fix number of log ticks expected and the tick values since we reduced the number of secondary ticks
* Fix log plot test
* Add guard code during destroy
* Add missing remove callback
* removing dupe nb install, adding whitelist nb init script, testing whitelist urls
* updating from copy
* addressing PR comments for cleaner tests
* removing .only
* added a secure url test and a subdomain url test and simplified some code
* not messin with protocols atm
* update variable name
* Add listeners to remove stacked plot series and make keys unique
* don't add overlay plots to stacked plot legends
* Ensure series colors are drawn correctly in the plot legend
* Remove legend from mct plot. Remove series reactivity from stackd plot and add them to the legend instead.
* Clean up stacked plots so that the plot legend needs fewer props
Also make sure that plot selection inside a stacked plot works - this had regressed due to plot annotations
* Fix console error in plot elements pool and plot legend - reset arrays to empty
* Ensure color in the y axis swatch updates correctly
* Fix small issues with removing objects from STacked plots
* Fix selection for annotations and also select stacked plot child items
* fix notebook tagging
* remove unused annotation editor and change selection to single object
* remove reference to deleted css
* fix e2e tests
* Fix small typos into the selection context for Notebooks.
* Add a typ that identifies that an annotation selection is coming from a search result
---------
Co-authored-by: Scott Bell <scott@traclabs.com>
- Markup cleanups, CSS placement improvements for tags.
- Better approach to tag layout.
- CSS prop migrated to _constants.scss.
- Style and layout improvements for `.c-autocomplete*` input.
Co-authored-by: Scott Bell <scott@traclabs.com>
* fix: provide hashUrl for ObjectPath breadcrumbs
* a11y: add `navigation` role and aria-label to breadcrumb
* test(e2e): add regression test for breadcrumb nav
---------
Co-authored-by: Scott Bell <scott@traclabs.com>
* Fixed composition
* Remove unnecessary guard code
* Removing deprecated code
* Use valid key for stacked plot v-for
* Fixed object API specs to expect old values as well as new values in mutation callbacks
* Fixed existing tests
* Added E2E test
* Fixed linting error
---------
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* style: add `visibility` to tree expand triangles
- The purpose of this is so that Playwright can perform actionability checks on the tree items. This will make operations involving expanding tree items much easier to perform in e2e.
* feat(e2e): Add AppAction to expand the entire tree
* fix: wait for loading indicator
* test: add test for `expandEntireTree`
* test: update `expandEntireTree` and tree selectors
- Use dynamic aria-label for different tree implementations
- Get rid of CSS ids which are only for testing
- Update percy tree scope selector
* chore(lint): remove unused variable
* refactor(e2e): update tree locators
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* First pass
* Get bounding box min and max values based on the y axis that a series belongs to.
Handle removal of telemetry from an overlay plot
Handle addition of telemetry after annotations have been saved to an overlay plot
* Fix showing the rectangle for a given target's bounding box.
* remove invalid comment
Co-authored-by: Scott Bell <scott@traclabs.com>
* initial telemetry api updates for staleness support
* modifying staleness to a subsription style
* fixing variable name
* debuggin
* put the subscribe in the wrong place
* stale class for object views
* temp cyan border for testing
* added staleness to swg, working on stacked plot staleness
* WIP: stacked plot staleness
* reverting, going a different route
* staleness on stacked plots
* plot legend staleness
* remove debug code
* staleness for alphanumerics
* lad table and table set staleness
* overlay plot staleness
* remove debug code
* hardened lad staleness functionality fixed plots without composition bug
* adding staleness to gauges
* renaming telemetry age check functionality so it does not conflict with new staleness functionality
* couple one-off fixes here and there, and WIP for condition sets, moving to telemetry tables to facilitate styling of completed components
* small fix on lad tables, added staleness functionality to tables
* finishing up condition sets
* some cleaning up
* adding border to condition sets when an item is stale
* fixing dub sub
* addressing PR comment, moving repeated code to a function
* robustified the SWG stalenes provider, little fixes here and there as far as cleaning up listeners and... whatnot
* removing debug code
* typo fixes
* cleanin up debug code
* created a simple stalenes mixin for more basic usage in components
* more robustification, if a new staleness subscription happens, will now send the current staleness value if we have it, beefed up example stalenes swg provider
* beefed up staleness mixin a bit to give it more use
* copyright
* cleanin up ladtable code
* cleanin up ladtable code
* cleaning up lad table sets
* some minor updates
* Closes#6109
- New staleness glyph and font CSS added.
* Closes#6109
- Normalized staleness colors as theme constants.
- New mixins for staleness application to view elements.
- Applied staleness styling to all relevant view elements.
- TODO: smoke-test in Show theme.
* adding staleness utils helper, mixin and isStale functionalirty for telemtry api
* Closes#6109
- Refined style for Snow theme.
* need to have one domainObject per stalenes utility
* making sure we handle domains correctly while dealing with staleness
* couple fixes
* moving abort controller logic to a spot where it makes more sense
* added some more info for the StalenesProvider interface docs
* returning undefinded for ifStale requests with no provider
* debuggin
* debuggin
* missed "isStale" call in condtioncollections
* removing debug code and using mixin unsubscribe in gauge
* fixing tests
* more targeted tree item click
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Scott Bell <scott@traclabs.com>
* fix: get image thumbnail formatter
* refactor: ImageryView cleanup
* docs: add comment
* feat: Support thumbnails in ImageryView
- Prefer an image's thumbnail URL if its available
* feat: Support thumbnails in ImageryTimeView
* refactor: rename variable
* test(WIP): add thumbnail unit test, not working yet
* test: temp disable test
* feat: imagery thumbnail urls for example imagery
* test: add unit test for imagery thumbnails
* test(e2e): check for thumbnail urls
- Update imagery view tests to check for use of thumbnail urls
* Fixes 6139
- Markup changes and improvements in CompassRose.vue.
- Improved sun and edge gradients.
- Related CSS styles updated.
- Changed compass key color from cyan to white to avoid conflict with staleness color.
* change var def to avoid collision
* compass rose should size itself based on image
* allow heading or camera pan for fixed cameras
* suppress HUD if no camera pan
* allow image to display compass rose for other cams
* update example imagery to accept transformations
* remove comments
Co-authored-by: David Tsay <david.e.tsay@nasa.gov>
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
* added new menu and actions to notebook embed as well as new information on embed
* fix method name case
* Add action messages. Fix margins
* Added bg icons. Change sizing of icons and thumbnails. Add scrolling to overflow embeds
* Rename embed wrapper
* adding dynamce class for scrolling the embeds wrapper based on need
* Add styling to embed scrolling container
* Change tag margin for better spacing between rows. Class rename. Minor styling changes to embed container. Change supermenu icon size
* Change action menu size
* Fix inner shadows. Revert tag code change. Create new theme constants. Make embed container constant
* Fix scroll and snow theme colors
* Fix overflow bug in entries and embed container. Refactor code so that containers optimize space of each entry
* Fix lint error
* Fix so embed container goes full width
* Fix input container to extend full width. Fix margin between notebook elements
* Addressed PR review comments.
* Address PR changes. Fix text overflow for long words.
* address pr review comments
* fixing tests
* first pass
* i've wasted too much time on this
Co-authored-by: Rukmini Bose <rukmini.bose15@gmail.com>
Co-authored-by: rukmini-bose <48999852+rukmini-bose@users.noreply.github.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Implement new search and tagging for notebooks
* Add inspector and plot annotations
* Clean up inspector for plots and other views
* Bump webpack defaults for windows
* Notebook annotations are shown in inspector now
* Only allow annotations if plot is paused or in fixed time. also do not mutate if immutable
* Key off local events instead of remote (for now)
* Added clear poll button to clear all statuses
* Clear current poll question
* Added table for operator status
Co-authored-by: Michael Rogers <contact@mhrogers.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* get imagery view context and externally set pause and thumbnail index
* Test pause/play state in realtime mode
* Created an onPreviewMode change handler to be invoked from view large
* Add optional chaining to method invocation
* Change onItemClicked to invoke to resolve repeat large view action error
* Show NotificationIndicator also if NotificationsList is shown
* Create Notification Overlay Regression Test
* Move notification regression test under notification.e2e.spec.js
* Update selector of Notification Banner
* Rename test to "Notification Overlay"
* making a revert on failed save more clear
* only notify conflicts for non sync items in object api, spruce up notebook with better transaction tracking and observing and unobserving during transactions, structuredClone backup in monkeypatch
* WIP
* WIP debuggin
* fresh start
* dont observe in transaction objects, small changes to notebook vue to indicate saving/prevent spamming, added forceRemote flag to objects.get
* updating readability of code as well as fix issue of stuck transaction for same value entry edits
* once entry is created, click out to blur
* quick revert
;
* click outside of entry to blur and commit
* switched to enter... as suggested :)
* removing unused variable
* initializing transaction to null as we are using that now for no transaction
* fix: ensure EventSource is closed so it recovers
- Make sure to close the CouchDB EventSource as well, so that it can recover in the case where two tabs or windows are on Open MCT and one refreshes. The check on line 81 was preventing recovery since the EventSource was not closed properly.
* enhance, enhance, enhance readability
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* fix: use ephemeral timeContext for thumbnail metadata requests
* fix(TEMP): use `eval-source-map`
- **!!! REVERT THIS CHANGE BEFORE MERGE !!!**
* fix: only mutate if object supports mutation
* fix: pass identifier instead of whole domainObject
* fix: add start and end bounds to request
* Revert "fix(TEMP): use `eval-source-map`"
This reverts commit 7972d8c33a.
* docs: add comments
* fix: refresh object after conflict error
* fix: recover from error thrown during create
- Ensure that the "Saving" modal dialog is closed
- Notify user of the error, and also print to console to catch in e2e
* fix: default selector tree item to 'mine' folder
- If create fails due to a conflict or otherwise, and the user immediately tries to "Create" again, default the selector tree's selected item to the "mine" folder (which we know exists).
* fix: don't listen to composition if Selector Tree
* refactor: remove dead code
* fix: use MutableDomainObjects in the tree
- Only use mutables and observers if NOT a SelectorTree
- Properly clean up observers and mutables when a parent item is removed from the tree
* test: verify conflicts don't break object creation
* test: verify dialog closes and object is created
* refactor(e2e): update test
- Error notification on 'My Items' folder missing was removed, so don't check for it
* test: increase timeout
* refactor(e2e): use Promise.any()
* refactor(e2e): use Promise instead of polling
* test: add 2p annotation
* test: use `waitForRequest` instead of promise
- tidy up test, add comments describing our pattern
* docs(e2e): add best practices for network tests
* refactor(e2e): avoid using Promise.any
* fix: de-reactify observer and mutable maps
* fix: destroy by path on treeItem close
* fix: don't refresh for synchronized objects
* docs: fix a typo 🔥
* fix: remove existing mutable before adding
* fix: fail fast if these aren't functions
- Remove check for typeof 'function' to not hide any potential coding errors
* fix: walk up navigationPath if item not found
* chore: fix lint errors
* fix: parse conflicted object name correctly
* fix: re-throw conflict error
* fix: Cancel edit mode on conflict
* Setup a scroll handler to avoid using scrollIntoView when in a layout
* Implement a separate scroll to action when in layouts
* Simplified scroll reset event and logic
* Adjust test to capture new scroll handler
* Remove done invocation after converting to async fn
* Prevent default for arrow keys to avoid scrolling layoyut
* await scrollToFocused
* Logical or to nullish coalescing
* Removed set in favor of using isNavigatedObject api
* Apply animation style after image history has length
* Lint fixes
Co-authored-by: Scott Bell <scott@traclabs.com>
* Change approach to filter positive and negative infinity values when updating stats
* Change filter when there are no plot stats and a positive/negative infinity value occurs
* Add check for negative infinity
* Name the unplottable values array and move it to the constructor
* Add option to render infinity values
* Add e2e test to render plot with infinity values
* Add accessibility labels to help locate items in tests
Refactor tests
* refactor(e2e): stabilize plotRendering test
Co-authored-by: Shefali <simplyrender@gmail.com>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* Expose overlay plot so that it can be imported by an external plugin
* If the current object has an independentContext, ignore any upstream independentContext
* Accept any custom url param in open in new tab action
* Bump version to `2.1.3` (#5973)
* Preserve Gauge configuration changes on create/edit (#5986)
* fix(#5985): deep merge on create/edit properties
- Perform a deep merge of old and new properties on Create/Edit properties actions
* refactor(e2e): improve selector in appActions
* test(e2e): add tests for gauges
- test creating a non-default gauge (checks only for console errors)
- test updating a gauge (checks only for console errors)
* fix(e2e): use pluginFixtures for gauge tests
* fix(e2e): prevent fail if testNotes is undefined
* Make the tree key unique (#5989)
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* Use composition API in RemoveAction
* refactor: ScatterPlotView to use composition API
* fix: initialize transaction to null and reset
* fix: remove seriesKey and correct found condition
* refactor: Gauge to use composition API
* refactor: DisplayLayout to use composition API
* test: RemoveAction starts and ends transactions
* test: add ScatterPlot add/remove telemetry test
* test: fix e2e test and add annotation
* test: remove unnecessary awaits
* test: make some displayLayout tests stable
* test{displayLayout}: navigate to objects via url
* test(gauge): add test for add/remove telemetry
* fix(#3117): init layoutItems within transaction
* refactor: add clearSelection() method
* test: remove unstable tag
* fix(#3117): init frames and use transactions
- fixes#3117 for flexible layouts by syncing frames and composition
- also uses transactions now to avoid race condition
* test(flexibleLayout): removing items via context menu
- add test for removing items via context menu while focusing the layout
- add test for removing items via context menu while not focusing the layout
* fix(e2e): use pluginFixtures
* refactor(e2e): improve selectors
* refactor: use async/await for saving transactions
* docs(e2e): fix comments
* test: use soft expects
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
* feat: sort interceptors by priority
* fix(#5914): high priority for MyItemsInterceptor
* fix: create myItems if object is falsy
* test(e2e): update snapshots
Co-authored-by: Scott Bell <scott@traclabs.com>
* [e2e][couchdb] Add test for mct5616
- Add test to verify that modifying object properties generates a single persistence operation with CouchDB
* [e2e] Poll for 1 sec to allow time for request
* [e2e] ignore expected console error
* add comments
* add `aria-label`s to form select fields
* add `aria-label` for clock format select
* [e2e] Improve selector
* make property name less ambiguous
* refactor(e2e): use default object name
* feat(e2e): default unique names for new objects
* refactor(e2e): reference generated object names
- Fixes the tests that were locating "Unnamed <object_type>" to use the generated unique names
* feat(e2e): add testInfo into domainObject notes
- adds info about the currently running test and its project to notes
* fix(e2e): fix selector for notes section
* feat: ARIA: menu role for menus and SuperMenus
- Implements the [ARIA: menu role](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/roles/menu_role) for Menus and SuperMenus,
* refactor(e2e): use role selectors for menu items
* refactor(e2e): better selectors for "OK" button
* refactor(e2e): better selectors for menu items
* refactor(e2e): improve selector
* refactor(e2e): update test to use appActions
* refactor(e2e): update test to use object name
* refactor(e2e): improve selectors for menu items
* test(e2e): fix search test
* refactor(e2e): update more plain 'text=' selectors
* fix: resolve codeQL error
- remove superfluous argument
* refactor(e2e): move testNotes to `pluginFixtures` and update imports
* refactor(e2e): remove unused fixture from test
* refactor: add dynamic id to form textareas
* refactor(e2e): improve notes textarea selector
* refactor(e2e): remove unused fixture
* Bump version to `2.1.2`
* Ensure properties stay in sync and are committed only once (#5717)
* Ensure form properties stay in sync
* Separate out overlay based forms and custom forms
* Use a transaction to save properties
* Fix GaugeController to not depend on event emitted from FormsAPI
* refactor showForms to call showCustomForm
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Fix persistence timestamp (#5916)
* Calculate persisted timestamp last
* Added regression tests
* Correct transaction handling code
* Code cleanup
* Fix typo for publish (#5936)
* Add e2e tests to npm package (#5930)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* add typescript
* update tsconfig
* convert to es6 class
* Convert more stuff to es6 class
* skip checking libs, test files
* more es6 classes!
* Fix some jsdocs
* Rename file
* Improve jsdoc types
* Rename references as well
* more types
* types for CompositionAPI
* Types for CompositionCollection
* Types for CompositionProvider
* type
* types for api
* nvm
* cleanup MCT
* Fix API type definition
* Generate types before publish
* fix openmct 👀
* rename PublicAPI -> OpenMCT and document methods
* try and fix visual test ?
* Make private methods private
* more private methods!!
* import all es6 api's so we get more types for free
* convert Selection to es6 class
* remove redundant docs
* fix Branding types
* fix openmct.start() types
* Remove useless `@memberof`
* Add parameter name
* [docs] Add a section on Types
* markdownlint
* word
* Add section on limitations / contibuting types
* Let these methods be private
* make private members private, fix a type
* fix another type
* Make method private
* Update docs for `skipMutate` and related methods
* Rename file and fix references
* `DefaultCompositionProvider` extends `CompositionProvider`
* Make private members private
* Type for `AbortSignal`
* `domainObject` must be accessible for perf tests
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* initial changes adding modified and created by fields to domain objects and updating properties inspector
* adding created date to object creation
* added a test for created timestamp
* updating remove action to hold the transaction and disregard edit state when handling transactions, also updated object api to return transaction when starting and ignore edit state when determining if transaction is active
* updating docs for object api "startTransaction"
* updating incorrect use of edit and transaction in our appActions for testing
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Shefali <simplyrender@gmail.com>
* [ConditionWidget] Center label text
Addresses #5799
* [ConditionWidget] Wrap label text
Addresses #5799
* [ConditionWidget] Add padding to label
Addresses #5799
* [ConditionWidget] Use interiorMargin value for padding
Addresses #5799
* add time context to telemetry requests
* change to empty array
* refactor telemetry api to use time context
* removed unused function
* add tests
* add test, rename function
* make function public
* Update version
* Don't delete annotations if there aren't any (#5829)
* don't delete annotations if there aren't any
* add test and align playwright-test
* align core with test
* added annotation describing test
* Add `aria-label` for time conductor history button (#5830)
* [Overlay Plot] Inspector series and legend sync fix (#5835)
* fixed overlay plots to react to series removals correctly, added alias visual to elements pool aliased items
* Keep transaction open on failed editor save (#5840)
* do not end a transaction on a failed editor save
* add unit tests for successful editor save and unsuccessful editor save
* If no matching tags, do not attempt tag search (#5839)
* do not attempt search if no matching tags
* fix timing on test
* commit again in hopes that github will run checks
* add back null tag check
* add some better documentation to tests
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Update version for master
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Add release to codeql and queries to match lgtm
* Add lgtm config file
* Custom codeQL config to ignore app.js
* Custom config for lgtm
* Remove query filter for lgtm
* Updated the security test docs
* Remove lgtm.yml and delete app.js references
* Update codeql-config.yml
Co-authored-by: Alize Nguyen <alizenguyen@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Implementation of user attribution of object changes
* Adds created date to object creation
* Updating remove action to wait for save before navigationg
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Imagery thumbnail regression fixes - 5327 (#5591)
* Add an active class to thumbnail to indicate current focused image
* Differentiate bg color between real-time and fixed
* scrollIntoView inline: center
* Added watcher for bounds change to trigger thumbnail scroll
* Resolve merge conflict with requestHistory change to telemetry collection
* Split thumbnail into sub component
* Monitor isFixed value to unpause playback status
Co-authored-by: Khalid Adil <khalidadil29@gmail.com>
* [e2e] Improve appActions (#5592)
* update selectors to use aria labels
* Update appActions
- Create new function `getHashUrlToDomainObject` to get the browse url to a given object given its uuid
- Create new function `getFocusedObjectUuid`... self explanatory :)
- Update `createDomainObjectWIthDefaults` to make use of the new url generation
- Update `createDomainObject...`'s arguments to be more organized, and accept a parent object
- Update some docs, still need to clarify some
* Update appActions e2e tests
- Refactor for organization
- Test our new appActions in one go
* Update existing usages of `createDomainObject...` to match the new API
* fix accidental renamed export
* Fix jsdoc return types
* refactor telemetryTable test to use appActions
* Improve selectors
* Refactor test
* improve selector
* add clock mode appActions
* lint
* Fix jsdoc
* Code review comments
* mark failing visual tests as fixme temporarily
* Update package.json (#5601)
* Fix menu style in Snow theme (#5557)
* Include the plan source map when generating the time list/plan hybrid object (#5604)
* Search should indicate in progress and no results states, filter orphaned results (#5599)
* no matching result implemented
* now filtering annotations that are orphaned
* filter object results without valid paths
* add progress bar
* added e2e tests
* removed extraneous click
* fix typos
* fix unit tests
* lint
* address pr comments
* fix tests
* fix tests, centralize logic to object api, check for root instead
* remove debug statement
* lint
* fix documentation
* lint
* fix doc
* made some optimizations after talking with akhenry
* fix test
* update docs
* fix docs
* Have in-memory search indexer use composition API (#5578)
* need to remove tags and objects on composition removal
* had to separate out emits from load as it was causing memory indexer to loop upon itself
* Add parsing for areIdsEqual util to consistently remove folders (#5589)
* Add parsing util to identifier for ID comparison
* Moved firstIdentifier to top of function
* Lint fix
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Revert "Have in-memory search indexer use composition API (#5578)" (#5609)
This reverts commit 7cf11e177c.
* [e2e] Tests for Display Layout and LAD Tables and telemetry (#5607)
* Check for circular references in originalPath - 5615 (#5619)
* check for circular references
* add test
* fix test
* address PR comments by making comments better
* fix docs...again
* Don't request data if there is a mouse click with no action
Don't request data if width gets smaller or if the change is less than the threshold of 50.
* Update version number
* Prevent cyclic references in link & move actions (#5635)
* do not create circular refs
* add negative validation test
* move to plugin
* add link test too
* fix docs
* refactored per john request
* fix path
* use appAction lib
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* [Fault Management] New Example Provider, Unit and e2e tests (#5579)
* added unit tests for fault management plugin
* modified the example fault provider to work out of the box
* updating for new e2e folder structure
* part of the e2e tests
* WIP
* Imagery thumbnail regression fixes - 5327 (#5569)
* Add an active class to thumbnail to indicate current focused image
* Differentiate bg color between real-time and fixed
* scrollIntoView inline: center
* Added watcher for bounds change to trigger thumbnail scroll
* Resolve merge conflict with requestHistory change to telemetry collection
* Split thumbnail into sub component
* Monitor isFixed value to unpause playback status
* updated search to include name, namespace and description added some more e2e tests
* added rest of e2e tests
* fixed my init script, had to disable lint for no-force because it was not working without it, saw online this may be a pw bug
* fix: removing maelstrom theme from application (#5600)
* added some tests for no faults
* visual tests
* added visual tests for fault management
* created utils file for shared functionality between function and visual tests
* updating to 2.0.8
* tryin to remove imagery changes from master
* trying to trigger a refresh
* tryin to refresh
* updated search to include name, namespace and description added some more e2e tests
* added rest of e2e tests
* fix: removing maelstrom theme from application (#5600)
* fixed my init script, had to disable lint for no-force because it was not working without it, saw online this may be a pw bug
* added some tests for no faults
* visual tests
* added visual tests for fault management
* created utils file for shared functionality between function and visual tests
* updating to 2.0.8
* no clue
* still no clue
* removing imports and chaning to requires
* updating utils file to work with require
* fixing paths
* fixing a test I had messed up when adding static exmaple faults
* ONE LAST PATH FIX... hopefully
* typo in files fix
* fix folder typo
* thought I got this one, but apparently not, well I did now! who is laughing now!?
Co-authored-by: Michael Rogers <contact@mhrogers.com>
Co-authored-by: Vitor Henckel <vitor@henckel.com.br>
* Sort tree items locally on rename (#5643)
* fix typo
* Sort the tree items locally on object rename
* Use the navigationPath as a key
- This ensures that objects AND linked objects will be sorted
* add 'tree' and 'treeitem' roles to mct-tree
* WIP tree item reordering test
* Select the first object that matches
* Test that all object links are also reordered
* Get the final uuid before queryParams as notebook sections have uuids
* Make `openObjectTreeContextMenu` more deterministic and update usage
* Add `expandPathToTreeItem` and `expandTreeItemByName` appActions
* add `#tree-pane` id for the tree view
* Add tree visual component test suite and bump percy-cli
* Remove tree appActions
* Better variable name
Co-authored-by: Scott Bell <scott@traclabs.com>
* Mct5549 fix indexer composition error (#5610)
* [Display Layout] Composition and configuration sync (#5669)
LGTM
* [e2e] Stabilize notebook tag tests (#5681)
* Use more deterministic selector
* Hover first to "slow down" e2e actions while in headless mode
* Moves condition set fix into 2.0.8 (#5673)
* Remove flag that determines if data should be reloaded on interactions.
Separate logic to clear history and reload data.
* Rename method to clarify intention
* Set Focused Image index after a imagery is selected from a timestrip - 5632 (#5664)
* Set focused image when timestamp prop is passed in
* Unused var
* Create timestrip with imagery child
* Add equality check for hovered image and view large image url
* Cleanup
* Time List 5534 for release/2.0.8 (#5678)
* Changes to Time List view. Closes#5534.
- Compacted table row spacing.
- Set all timeframes to display by default when creating a new Time List.
- Removed 'Upload plan' file button from properties.
* Changes to Time List view. Closes#5534.
- Better hint text for editing Timeframe Inspector section.
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* [CI] Enable couchdb e2e testing in open source (#5655)
* Reduce threshold to 10px - Chrome resizes to about 7 pixes and Firefox to 0.
* boilerplate for coverage
* add stubs
* Update version
* Remove debugging code
* [Flexible Layout] Fix draggable status for layout items while in browse mode (#5750)
* Modify flexible layout pages to make them not draggable in browse mode and add e2e test
* Don't destroy mutable if the domain object is not ready yet (#5695)
* Check if the domain object is set (mounted is done) before trying to destroy the mutable
* Use optional chaining. Add mutable promise check to prevent memory leaks
* Don't request data if there is a mouse click with no action
Don't request data if width gets smaller or if the change is less than the threshold of 50.
* Remove flag that determines if data should be reloaded on interactions.
Separate logic to clear history and reload data.
* Rename method to clarify intention
* Reduce threshold to 10px - Chrome resizes to about 7 pixes and Firefox to 0.
* boilerplate for coverage
* add stubs
* Remove debugging code
* Remove unused import
* Request priority (#5737)
* Set priority of couch requests to high
* Set priority of image requests to low
* Add e2e test for low-priority images
* Add test for re-requests on clicking a plot
* Adding new tests for testing plot requests for historical data
* Clean up e2e test for plot requesting historical data
* Write tests to ensure resizing the plot makes requests for data appropriately
* Remove fdescribe
* Fix resizing plot tests
Co-authored-by: Michael Rogers <contact@mhrogers.com>
Co-authored-by: Khalid Adil <khalidadil29@gmail.com>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: Alize Nguyen <alizenguyen@gmail.com>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Vitor Henckel <vitor@henckel.com.br>
* trying this again
* wip
* wip
* wip
* one annotation per tag
* fixed too many events firing
* syncing works mostly
* syncing properly across existing annotations
* search with multiple tags
* resolve conflicts between different tag editors
* resolve conflicts
* fix annotation tests
* combine search results
* modify tests
* prevent infinite loop creating annotation
* add modified and deleted
* revert index checkin
* change to standard couch deleted flag
* revert throwing of error
* resolve conflict issues
* work in progress, but load annotations once from notebook
* works to add
* attempt 1
* wip
* last changes
* listening works, though still getting conflicts
* rename to annotationLastCreated
* use local mutable again
* works with new tags syncing
* listeners wont fire if modification is null
* clean up code
* fixed local search
* cleaned up log messages
* remove on more log
* add e2e test for network traffic
* lint
* change to use good old for each
* add some local variables for clarity
* Update src/api/objects/ObjectAPI.js
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Update src/api/objects/ObjectAPI.js
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Update src/plugins/notebook/components/Notebook.vue
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* press enter for last entry
* add test explanation of numbers
* fix spread typo
* add some nice jsdoc
* throw some errors
* use really small integer instead
* remove unneeded binding
* make method public and jsdoc it
* use mutables
* clean up tests
* clean up tests
* use aria labels for tests
* add some proper tsdoc to annotation api
* add undelete test
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Reviewer to smoke test PRs before merge
* Update PULL_REQUEST_TEMPLATE.md
* Update PULL_REQUEST_TEMPLATE.md
* Update PULL_REQUEST_TEMPLATE.md
Changes based on feedback
* Update PULL_REQUEST_TEMPLATE.md
Tweaking the language slightly for clarity.
* Update PULL_REQUEST_TEMPLATE.md
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Closes#5640
- Layout frame edit handle visually tweaked, no longer resizes frame contents on hover when editing.
- Gauge now centers in its container instead of left flush.
- Added large bg-icon for aggregate telemetry.
- Removed 'no class' single wrapper div in mct-tree.vue.
- Refinements to appearance of locator in save/edit overlay dialog.
- Better styling for search in progress and 'no results' messaging.
- Revised art and glyph for `icon-tabular-scrolling`.
- Change TelemetryTableType to use icon-tabular-scrolling icon and bg-icon.
- Fix bad/erroneous descriptions for Telemetry Table, LAD Table and LAD Table Set.
- Fix descriptions for multiple view types.
- Removed unused .bg-icon class.
- Fixed bad value check that was causing panes not to collapse when dragged
(by design) to a very narrow width.
- Visual style for grippy adjusted for better clarity on some monitors.
- Normalize size of alphanumeric's labels and values in Display Layouts.
- Fix margin strategy for object label in main view.
- Fixed Locator to dynamically size itself to use available vertical space.
- Added new `l-overlay-dialog` size parameter.
- Better approach to overlay sizing to make Properties dialogs larger vertically
and fullscreen overlays more apparent to the user.
- Normalized approach to numeric inputs to fix cross-browser
inconsistency with input spinners.
- Fixed layout problem in `Datetime.vue` component due to
numeric input spinners changes.
- Added object types for Display Layout drawing objects.
- Code modded in `ObjectName.vue` to grab layout object cssClass from
layoutItem.type.
- Big thanks to @jvigliotta for the assist with this!
- update snapshots
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* notebook embed visual test initial
* waiting for createNewEmbed util function to finish before adding embed
* removing debug code
* adding unstable tag to visual test
* added e2e embed tests for existing and new entriesupdated some test utils as well
* removing test artifacts
* removing more test artifacts
* adding test data back in
* removing debug code
* adding back in test artifacts
* updated test I broke
* removing focused test
* removing unsed variable
* fix lint issues
* adding unstable tag for new e2e tests
* Update version
* [Flexible Layout] Fix draggable status for layout items while in browse mode (#5750)
* Modify flexible layout pages to make them not draggable in browse mode and add e2e test
* Don't destroy mutable if the domain object is not ready yet (#5695)
* Check if the domain object is set (mounted is done) before trying to destroy the mutable
* Use optional chaining. Add mutable promise check to prevent memory leaks
* Request priority (#5737)
* Set priority of couch requests to high
* Set priority of image requests to low
* Add e2e test for low-priority images
* Timelist views support fixed time - 5629 (#5726)
* Initialize full view for fixed time
* Clean up
* Add back in ticker after merge
* Check for undefined clock instead of timestamp
* Cleanup
* Initialize full view for fixed time
* Clean up
* Add back in ticker after merge
* Check for undefined clock instead of timestamp
* Cleanup
* Update timestamp method and remove from beforeDestroy
* Shorten ternary to optional chaining
* Cleanup unused var
* Moved duplicated logic to method
* Reorder methods
* Update Timelist.vue
Set timestamp to clock start when in fixed time
* Added blank line
* Lint fix
* Update pluginSpec.js
* Invoke currentValue method properly
Co-authored-by: Khalid Adil <khalidadil29@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Michael Rogers <contact@mhrogers.com>
* docs for chrome
* Tidy up formatting, spelling/grammar, update snippet
* more readme fixes
* Update example test suite
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
- Fixes erroneous TS language server warnings showing up in the VSCode terminal
- Ensures TypeScript language server features (such as refactor) are able to work properly by excluding build files
* Update `IndependentTimeContext` only if its `objectPath` differs
* Ensure independent time conductor, fixed and realtime inputs have the right objectPath
* [e2e] Add Plan creation test
* [e2e] add Create TimeStrip test
* mark new faultManagement suite with @unstable
* Upgrade to @playwright/test v1.25.0
* Extract `createPlanFromJSON` to appActions
* [e2e] Add TimeStrip test for Plans, Independent Time Contexts
* [e2e] Move test annotation to the top
* [e2e] fix timestrip test
* Update docker image so the tests run
* update playwright on GHA as well
* [e2e] Fix menu test
* Error if no objectPath provided
Co-authored-by: Shefali <simplyrender@gmail.com>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* try fix visual test failure
* disable actionTimeout
* increase percy loglevel
* comment
* Remove `@percy/cli` dependency as it may be conflicting
* Upgrade `percy/cli` to 1.10.2
* drop percy/cli version down to 1.7.2
* enable timeouts for actions again
* Add check to hide any old popup items when showing a new one
* Use more deterministic selector
* Hover first to "slow down" e2e actions while in headless mode
* Add notebook tests
* Combine the section tests
* Set focused image when timestamp prop is passed in
* Unused var
* Create timestrip with imagery child
* Add equality check for hovered image and view large image url
* Cleanup
* add annotation and checks
* [e2e] Minor locator improvements
* Update button title
* skipping with context
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* Imagery thumbnail regression fixes - 5327 (#5591)
* Add an active class to thumbnail to indicate current focused image
* Differentiate bg color between real-time and fixed
* scrollIntoView inline: center
* Added watcher for bounds change to trigger thumbnail scroll
* Resolve merge conflict with requestHistory change to telemetry collection
* Split thumbnail into sub component
* Monitor isFixed value to unpause playback status
Co-authored-by: Khalid Adil <khalidadil29@gmail.com>
* [e2e] Improve appActions (#5592)
* update selectors to use aria labels
* Update appActions
- Create new function `getHashUrlToDomainObject` to get the browse url to a given object given its uuid
- Create new function `getFocusedObjectUuid`... self explanatory :)
- Update `createDomainObjectWIthDefaults` to make use of the new url generation
- Update `createDomainObject...`'s arguments to be more organized, and accept a parent object
- Update some docs, still need to clarify some
* Update appActions e2e tests
- Refactor for organization
- Test our new appActions in one go
* Update existing usages of `createDomainObject...` to match the new API
* fix accidental renamed export
* Fix jsdoc return types
* refactor telemetryTable test to use appActions
* Improve selectors
* Refactor test
* improve selector
* add clock mode appActions
* lint
* Fix jsdoc
* Code review comments
* mark failing visual tests as fixme temporarily
* Update package.json (#5601)
* Fix menu style in Snow theme (#5557)
* Include the plan source map when generating the time list/plan hybrid object (#5604)
* Search should indicate in progress and no results states, filter orphaned results (#5599)
* no matching result implemented
* now filtering annotations that are orphaned
* filter object results without valid paths
* add progress bar
* added e2e tests
* removed extraneous click
* fix typos
* fix unit tests
* lint
* address pr comments
* fix tests
* fix tests, centralize logic to object api, check for root instead
* remove debug statement
* lint
* fix documentation
* lint
* fix doc
* made some optimizations after talking with akhenry
* fix test
* update docs
* fix docs
* Have in-memory search indexer use composition API (#5578)
* need to remove tags and objects on composition removal
* had to separate out emits from load as it was causing memory indexer to loop upon itself
* Add parsing for areIdsEqual util to consistently remove folders (#5589)
* Add parsing util to identifier for ID comparison
* Moved firstIdentifier to top of function
* Lint fix
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Revert "Have in-memory search indexer use composition API (#5578)" (#5609)
This reverts commit 7cf11e177c.
* [e2e] Tests for Display Layout and LAD Tables and telemetry (#5607)
* Check for circular references in originalPath - 5615 (#5619)
* check for circular references
* add test
* fix test
* address PR comments by making comments better
* fix docs...again
* Update version number
* Prevent cyclic references in link & move actions (#5635)
* do not create circular refs
* add negative validation test
* move to plugin
* add link test too
* fix docs
* refactored per john request
* fix path
* use appAction lib
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* swallow abort errors in search
* [Fault Management] New Example Provider, Unit and e2e tests (#5579)
* added unit tests for fault management plugin
* modified the example fault provider to work out of the box
* updating for new e2e folder structure
* part of the e2e tests
* WIP
* Imagery thumbnail regression fixes - 5327 (#5569)
* Add an active class to thumbnail to indicate current focused image
* Differentiate bg color between real-time and fixed
* scrollIntoView inline: center
* Added watcher for bounds change to trigger thumbnail scroll
* Resolve merge conflict with requestHistory change to telemetry collection
* Split thumbnail into sub component
* Monitor isFixed value to unpause playback status
* updated search to include name, namespace and description added some more e2e tests
* added rest of e2e tests
* fixed my init script, had to disable lint for no-force because it was not working without it, saw online this may be a pw bug
* fix: removing maelstrom theme from application (#5600)
* added some tests for no faults
* visual tests
* added visual tests for fault management
* created utils file for shared functionality between function and visual tests
* updating to 2.0.8
* tryin to remove imagery changes from master
* trying to trigger a refresh
* tryin to refresh
* updated search to include name, namespace and description added some more e2e tests
* added rest of e2e tests
* fix: removing maelstrom theme from application (#5600)
* fixed my init script, had to disable lint for no-force because it was not working without it, saw online this may be a pw bug
* added some tests for no faults
* visual tests
* added visual tests for fault management
* created utils file for shared functionality between function and visual tests
* updating to 2.0.8
* no clue
* still no clue
* removing imports and chaning to requires
* updating utils file to work with require
* fixing paths
* fixing a test I had messed up when adding static exmaple faults
* ONE LAST PATH FIX... hopefully
* typo in files fix
* fix folder typo
* thought I got this one, but apparently not, well I did now! who is laughing now!?
Co-authored-by: Michael Rogers <contact@mhrogers.com>
Co-authored-by: Vitor Henckel <vitor@henckel.com.br>
* Sort tree items locally on rename (#5643)
* fix typo
* Sort the tree items locally on object rename
* Use the navigationPath as a key
- This ensures that objects AND linked objects will be sorted
* add 'tree' and 'treeitem' roles to mct-tree
* WIP tree item reordering test
* Select the first object that matches
* Test that all object links are also reordered
* Get the final uuid before queryParams as notebook sections have uuids
* Make `openObjectTreeContextMenu` more deterministic and update usage
* Add `expandPathToTreeItem` and `expandTreeItemByName` appActions
* add `#tree-pane` id for the tree view
* Add tree visual component test suite and bump percy-cli
* Remove tree appActions
* Better variable name
Co-authored-by: Scott Bell <scott@traclabs.com>
* Mct5549 fix indexer composition error (#5610)
* [Display Layout] Composition and configuration sync (#5669)
LGTM
* [e2e] Stabilize notebook tag tests (#5681)
* Use more deterministic selector
* Hover first to "slow down" e2e actions while in headless mode
* flush hash in case other requests are awaiting debounce
* flush hash in case other requests are awaiting debounce
* the debounce will cause this resolve function to never fire, so force a flush
* lint
* remove debug statements
* add a comment
* Moves condition set fix into 2.0.8 (#5673)
* Set Focused Image index after a imagery is selected from a timestrip - 5632 (#5664)
* Set focused image when timestamp prop is passed in
* Unused var
* Create timestrip with imagery child
* Add equality check for hovered image and view large image url
* Cleanup
* Time List 5534 for release/2.0.8 (#5678)
* Changes to Time List view. Closes#5534.
- Compacted table row spacing.
- Set all timeframes to display by default when creating a new Time List.
- Removed 'Upload plan' file button from properties.
* Changes to Time List view. Closes#5534.
- Better hint text for editing Timeframe Inspector section.
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* [CI] Enable couchdb e2e testing in open source (#5655)
* Handle couch db not found errors so that interceptors are still invoked. (#5654)
* Fix tests for interceptors
* [e2e] Add test for 'mine' folder initialization
* [e2e] don't fail on expected console errors
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* [Docs] Update CouchDB local install documentation (#5692)
* Update local CouchDB install docs to include docker workflow
* reformat to source configuration scripts where possible
* correct couchdb case
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* [Time Conductor] History not working correctly (#5687)
* the check for fixed time vs realtime was not updating, have fixed this
* merging in related changes from master pr #4414
* lint fixes
* Update src/plugins/timeConductor/ConductorHistory.vue
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* setting time mode directly on load
* fixing issue where realtime history was being wiped on reloads while viewing fixed time
* formatting
* stubbed in some tests
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Only index if provider does not support search - mct5690 (#5693)
* only index if provider does not support search
* add some tests
* fix tests
* [e2e] Add search couchdb test for duplicates
* [e2e] Modify existing search test instead
* lint
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* fixed flakey test maybe?
* fixed flakey test maybe?
* fail on console errors
* turn on console errors for search
* revert karma code cov change
* couchdb scripting artifacts gitignore
* keep couchdb tests separate
* remove console true as this is the default
* cleanup tests
* [e2e][couchdb] fix docker-compose command
* [e2e][couchdb] ensure script is run using bash
* [e2e][couchdb] try to debug curl in gha
* [e2e][couchdb] try 0.0.0.0
* [e2e][couchdb] add debug step
* [e2e][couchdb] try -L option
* [e2e][couchdb] try 127.0.0.1
* [e2e][couchdb] add http
* [e2e][couchdb] provide initial config
* [e2e][couchdb] bind to 0.0.0.0
* [e2e][couchdb] debug
* [e2e][couchdb] wait for couchdb to start, remove failed hacks
* fix typo
Co-authored-by: Michael Rogers <contact@mhrogers.com>
Co-authored-by: Khalid Adil <khalidadil29@gmail.com>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Alize Nguyen <alizenguyen@gmail.com>
Co-authored-by: Shefali <simplyrender@gmail.com>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Vitor Henckel <vitor@henckel.com.br>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* Imagery thumbnail regression fixes - 5327 (#5591)
* Add an active class to thumbnail to indicate current focused image
* Differentiate bg color between real-time and fixed
* scrollIntoView inline: center
* Added watcher for bounds change to trigger thumbnail scroll
* Resolve merge conflict with requestHistory change to telemetry collection
* Split thumbnail into sub component
* Monitor isFixed value to unpause playback status
Co-authored-by: Khalid Adil <khalidadil29@gmail.com>
* [e2e] Improve appActions (#5592)
* update selectors to use aria labels
* Update appActions
- Create new function `getHashUrlToDomainObject` to get the browse url to a given object given its uuid
- Create new function `getFocusedObjectUuid`... self explanatory :)
- Update `createDomainObjectWIthDefaults` to make use of the new url generation
- Update `createDomainObject...`'s arguments to be more organized, and accept a parent object
- Update some docs, still need to clarify some
* Update appActions e2e tests
- Refactor for organization
- Test our new appActions in one go
* Update existing usages of `createDomainObject...` to match the new API
* fix accidental renamed export
* Fix jsdoc return types
* refactor telemetryTable test to use appActions
* Improve selectors
* Refactor test
* improve selector
* add clock mode appActions
* lint
* Fix jsdoc
* Code review comments
* mark failing visual tests as fixme temporarily
* Update package.json (#5601)
* Fix menu style in Snow theme (#5557)
* Include the plan source map when generating the time list/plan hybrid object (#5604)
* Search should indicate in progress and no results states, filter orphaned results (#5599)
* no matching result implemented
* now filtering annotations that are orphaned
* filter object results without valid paths
* add progress bar
* added e2e tests
* removed extraneous click
* fix typos
* fix unit tests
* lint
* address pr comments
* fix tests
* fix tests, centralize logic to object api, check for root instead
* remove debug statement
* lint
* fix documentation
* lint
* fix doc
* made some optimizations after talking with akhenry
* fix test
* update docs
* fix docs
* Have in-memory search indexer use composition API (#5578)
* need to remove tags and objects on composition removal
* had to separate out emits from load as it was causing memory indexer to loop upon itself
* Add parsing for areIdsEqual util to consistently remove folders (#5589)
* Add parsing util to identifier for ID comparison
* Moved firstIdentifier to top of function
* Lint fix
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Revert "Have in-memory search indexer use composition API (#5578)" (#5609)
This reverts commit 7cf11e177c.
* [e2e] Tests for Display Layout and LAD Tables and telemetry (#5607)
* Check for circular references in originalPath - 5615 (#5619)
* check for circular references
* add test
* fix test
* address PR comments by making comments better
* fix docs...again
* Update version number
* Prevent cyclic references in link & move actions (#5635)
* do not create circular refs
* add negative validation test
* move to plugin
* add link test too
* fix docs
* refactored per john request
* fix path
* use appAction lib
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* [Condition Set] Add check for empty string being passed to the makeKeyString util by TelemetryCriterion (#5636) (#5663)
* Check telemetry is defined before using makeKeyString util
* Add optional chaining in the check
* Add e2e test
* Add check for undefined
Co-authored-by: Khalid Adil <khalidadil29@gmail.com>
* [Fault Management] New Example Provider, Unit and e2e tests (#5579)
* added unit tests for fault management plugin
* modified the example fault provider to work out of the box
* updating for new e2e folder structure
* part of the e2e tests
* WIP
* Imagery thumbnail regression fixes - 5327 (#5569)
* Add an active class to thumbnail to indicate current focused image
* Differentiate bg color between real-time and fixed
* scrollIntoView inline: center
* Added watcher for bounds change to trigger thumbnail scroll
* Resolve merge conflict with requestHistory change to telemetry collection
* Split thumbnail into sub component
* Monitor isFixed value to unpause playback status
* updated search to include name, namespace and description added some more e2e tests
* added rest of e2e tests
* fixed my init script, had to disable lint for no-force because it was not working without it, saw online this may be a pw bug
* fix: removing maelstrom theme from application (#5600)
* added some tests for no faults
* visual tests
* added visual tests for fault management
* created utils file for shared functionality between function and visual tests
* updating to 2.0.8
* tryin to remove imagery changes from master
* trying to trigger a refresh
* tryin to refresh
* updated search to include name, namespace and description added some more e2e tests
* added rest of e2e tests
* fix: removing maelstrom theme from application (#5600)
* fixed my init script, had to disable lint for no-force because it was not working without it, saw online this may be a pw bug
* added some tests for no faults
* visual tests
* added visual tests for fault management
* created utils file for shared functionality between function and visual tests
* updating to 2.0.8
* no clue
* still no clue
* removing imports and chaning to requires
* updating utils file to work with require
* fixing paths
* fixing a test I had messed up when adding static exmaple faults
* ONE LAST PATH FIX... hopefully
* typo in files fix
* fix folder typo
* thought I got this one, but apparently not, well I did now! who is laughing now!?
Co-authored-by: Michael Rogers <contact@mhrogers.com>
Co-authored-by: Vitor Henckel <vitor@henckel.com.br>
* Sort tree items locally on rename (#5643)
* fix typo
* Sort the tree items locally on object rename
* Use the navigationPath as a key
- This ensures that objects AND linked objects will be sorted
* add 'tree' and 'treeitem' roles to mct-tree
* WIP tree item reordering test
* Select the first object that matches
* Test that all object links are also reordered
* Get the final uuid before queryParams as notebook sections have uuids
* Make `openObjectTreeContextMenu` more deterministic and update usage
* Add `expandPathToTreeItem` and `expandTreeItemByName` appActions
* add `#tree-pane` id for the tree view
* Add tree visual component test suite and bump percy-cli
* Remove tree appActions
* Better variable name
Co-authored-by: Scott Bell <scott@traclabs.com>
* Mct5549 fix indexer composition error (#5610)
* [Display Layout] Composition and configuration sync (#5669)
LGTM
* [e2e] Stabilize notebook tag tests (#5681)
* Use more deterministic selector
* Hover first to "slow down" e2e actions while in headless mode
* Moves condition set fix into 2.0.8 (#5673)
* Set Focused Image index after a imagery is selected from a timestrip - 5632 (#5664)
* Set focused image when timestamp prop is passed in
* Unused var
* Create timestrip with imagery child
* Add equality check for hovered image and view large image url
* Cleanup
* Time List 5534 for release/2.0.8 (#5678)
* Changes to Time List view. Closes#5534.
- Compacted table row spacing.
- Set all timeframes to display by default when creating a new Time List.
- Removed 'Upload plan' file button from properties.
* Changes to Time List view. Closes#5534.
- Better hint text for editing Timeframe Inspector section.
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* [CI] Enable couchdb e2e testing in open source (#5655)
* Handle couch db not found errors so that interceptors are still invoked. (#5654)
* Fix tests for interceptors
* [e2e] Add test for 'mine' folder initialization
* [e2e] don't fail on expected console errors
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* [Docs] Update CouchDB local install documentation (#5692)
* Update local CouchDB install docs to include docker workflow
* reformat to source configuration scripts where possible
* correct couchdb case
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* [Time Conductor] History not working correctly (#5687)
* the check for fixed time vs realtime was not updating, have fixed this
* merging in related changes from master pr #4414
* lint fixes
* Update src/plugins/timeConductor/ConductorHistory.vue
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* setting time mode directly on load
* fixing issue where realtime history was being wiped on reloads while viewing fixed time
* formatting
* stubbed in some tests
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Only index if provider does not support search - mct5690 (#5693)
* only index if provider does not support search
* add some tests
* fix tests
* [e2e] Add search couchdb test for duplicates
* [e2e] Modify existing search test instead
* lint
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* Don't re-request historical data on ticks (#5701)
Don't rerequest telemetry on ticks.
* Fix duplicate declaration from merge
Co-authored-by: Michael Rogers <contact@mhrogers.com>
Co-authored-by: Khalid Adil <khalidadil29@gmail.com>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: Alize Nguyen <alizenguyen@gmail.com>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Vitor Henckel <vitor@henckel.com.br>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* [Plot] Rename the `units` attribute to `unit` (#5540)
Rename the `units` attribute to `unit` when referencing the telemetry
data "unit" within:
- the legend-form vue for setting the `valueToShowWhenCollapsed` and
`showUnitsWhenExpanded` and displaying the available choices in write
mode,
- the plot-options-browse vue for displaying the selected choices
within the form in read mode,
- the plot-legend-item-collapsed when checking which field to display.
* [Documentation] Update API documentation (#3562)
* 5413 - [Notebook] Various visual issues with renaming sections/pages
* 5413 - [Notebook] Various visual issues with renaming sections/pages - 3rd Expectation
* 5413 - [Notebook] Various visual issues with renaming sections/pages - requested changes
* 5413 - [Notebook] Various visual issues with renaming sections/pages - remove a magic number (ENTER)
* 5413 - [Notebook] Various visual issues with renaming sections/pages - key codes
* 5413 - [Notebook] Various visual issues with renaming sections/pages - Separate selectability and editability actions for `Section` and `Page` components
* Fix layout of Notebook nav item to align affordance arrow
* Add e2e test stubs
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* Add an active class to thumbnail to indicate current focused image
* Differentiate bg color between real-time and fixed
* scrollIntoView inline: center
* Added watcher for bounds change to trigger thumbnail scroll
* Resolve merge conflict with requestHistory change to telemetry collection
* Split thumbnail into sub component
* Monitor isFixed value to unpause playback status
* Detect remote changes to notebook object and re-render entries. Detect changes to tags as well
* Do not throw an error when getCurrentUser is called, just return undefined. Code needs a way of testing whether there is a valid user
* Support remote sync of annotations for notebook entries
* Fix bug in notebook spec that prevented multi-user notebook regression being detected
* Fixes edge case where an annotation does not initially exist
* Use structuredClone instead of JSON functions. Fix logical error in entry modification attribution. Address magical value
Co-authored-by: Scott Bell <scott@traclabs.com>
* use identifier from domain object to tell vue to rerender, also show object in annotations
* fix annotation result clicks
* use key string instead
* add nice e2e test
* add some more search types
* added negative expect
* extract zoom logic to functions and update test
* Refactor other tests to use new button zoom fns
* e2e:ci ++exampleImagery
* try polling
* try wait for animations
* code review comments
* fix syntax
* Bump d3-selection from 1.3.2 to 3.0.0
Bumps [d3-selection](https://github.com/d3/d3-selection) from 1.3.2 to 3.0.0.
- [Release notes](https://github.com/d3/d3-selection/releases)
- [Commits](https://github.com/d3/d3-selection/compare/v1.3.2...v3.0.0)
---
updated-dependencies:
- dependency-name: d3-selection
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
* Remove snapshot
* Fix imagery filter slider drag in flexible layouts (#5326) (#5350)
* Dont' mutate a stacked plot unless its user initiated (#5357)
* Port grid icons and imagery test to release 2.0.5 from master (#5360)
* Port grid icons to release 2.0.5 from master
* Port imagery test to release/2.0.5
* Restrict timestrip composition to time based plots, plans and imagery (#5161)
* Restrict timestrip composition to time based plots, plans and imagery
* Adds unit tests for timeline composition policy
* Addresses review comments
Improves tests
* Reuse test objects
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
* Include objectStyles reference to conditionSetIdentifier in imports (#5354)
* Include objectStyles reference to conditionSetIdentifier in imports
* Add tests for export
* Refactored some code and removed console log
* Remove workarounds for chrome 'scrollTop' issue (#5375)
* Fix naming of method (#5368)
* Imagery View does not discard old images when they fall out of bounds (#5351)
* change to using telemetry collection
* fix tests
* added more unit tests
* Cherrypicked commits (#5390)
Co-authored-by: unlikelyzero <jchill2@gmail.com>
* [Timer] Update 3dot menu actions appropriately (#5387)
* Call `removeAllListeners()` after emit
* Manually show/hide actions if within a view
* remove sneaky `console.log()`
* Add Timer e2e test
* Add to comments
* Avoid hard waits in Timer e2e test
- Assert against timer view state instead of menu options
* Let's also test actions from the Timer view
* 5391 Add preview and drag support to Grand Search (#5394)
* add preview and drag actions
* added unit test, simplified remove action
* do not hide search results in preview mode when clicking outside search results
* add semantic aria labels to enable e2e tests
* readd preview
* add e2e test
* remove commented out url
* add percy snapshot and add search to ci
* make percy stuff work
* linting
* fix percy again
* move percy snapshots to a visual test
* added separate visual test and changed test to fixtures
* fix fixtures path
* addressing review comments
* 5361 tags not persisting locally (#5408)
* fixed typo
* remove unneeded lookup
* fix tags adding and deleting
* more reliable way to remove tags
* break tests up for parallel execution
* fixed notebook tagging test
* enable e2e tests
* made schedule index comment more clear and fix uppercase/lowercase issue
* address e2e changes
* add unit test to bump coverage
* fix typo
* need to check on annotation creation if provider exists or not
* added fixtures
* undo silly couchdb commit
* Plot progress bar fix for 2.0.5 (#5386)
* Add .bind(this) to stopLoading() in loadMoreData()
* Replace load spinner with progress bar for plots
* Add loading delay prop to swg
* fix linting errors
* match load order
* Update accessibility
* Add Math.max to timeout to handle negative inputs
* Moved math.max to load delay variable
* Add loading fix for stacked plots
* Move loadingUpdate func into plot item for update
* Merge conflict resolve
* Check if delay is 0 and send, put post in a func
* Put obj directly to model, removed computed prop
* Lint fix
* Fix template where legend was not displayed
* Remove commented out template
* Fixed failing test
Co-authored-by: unlikelyzero <jchill2@gmail.com>
* Make plans non editable. (#5377)
* Make plans non editable.
* Add unit test for fix
* [CouchDB] Better determination of indicator status (#5415)
* Add unknown state, remove maintenance state
* Handle all CouchDB status codes
- Set unknown status if we receive an unhandled code
* Include status code in error messages
* SharedWorker can send unknown status
* Add test for unknown status
* Gauge fixes for Firefox and units display (#5369)
* Closes#5323, #5325. Parent branch is release/2.0.5.
- Significant work refactoring SVG markup and CSS for dial gauge;
- Fixed missing `v-if` to control display of units for #5325;
- Fixed bad `.length` test for limit properties;
* Closes#5323, #5325
- Add 'value out of range' indicator
* Closes#5323, #5325
- More accurate element naming;
- Fix cross-browser problems with current value display in dial gauge;
- Refinements to "out of range" indicator approach;
- Fixed size of "Amplitude" input in Sine Wave Generator;
* Closes#5323, #5325
- Styles and stubbed in code to support needle meter type;
* Closes#5323, #5325
- Stubbed in markup and CSS for needle-style meter;
* Closes#5323, #5325
- Fixed missing `js-*` classes that were failing npm run test;
* Closes#5323, #5325
- Fix to not display meter value bar unless a data value is expected;
* Addressing PR comments
- Renamed method for clarity;
- Added null value check in method `valueExpected`;
* [Static Root] Return leafValue if null/undefined/false (#5416)
* Return leafValue if null/undefined/false
* Added a null to the test json
* Show a better default poll question (#5425)
* 5361 Tags not persisting when several notebook entries are created at once (#5428)
* add end to end test to catch multiple entry errors
* click expansion triangle instead
* fix race condition between annotation creation and mutation
* make sure notebook tags run in e2e
* address PR comments
* Handle missing objects gracefully (#5399)
* Handle missing object errors for display layouts
* Handle missing object errors for Overlay Plots
* Add check for this.config
* Add try/catch statement & check if obj is missing
* Changed console.error to console.warn
* Lint fix
* Fix for this.metadata.value is undefined
* Add e2e test
* Update comment text
* Add reload check and @private, verify console.warn
* Redid assignment and metadata check
* Fix typo
* Changed assignment and metadata check
* Redid checks for isMissing(object)
* Lint fix
* Backmerge e2e code coverage changes and fixes into release/2.0.5 (#5431)
* [Telemetry Collections] Respect "Latest" Strategy Option (#5421)
* Respect latest strategy in Telemetry Collections to limit potential memory growth.
* fix sourcemaps (#5373)
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Debounce status summary (#5448)
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* No gauge (#5451)
* Installed gauge plugin by default
* Make gauge part of standard install in e2e suite and add restrictednotebook
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* [CouchDB] Always subscribe to the CouchDB changes feed (#5434)
* Add unknown state, remove maintenance state
* Handle all CouchDB status codes
- Set unknown status if we receive an unhandled code
* Include status code in error messages
* SharedWorker can send unknown status
* Add test for unknown status
* Always subscribe to CouchDB changes feed
- Always subscribe to the CouchDB changes feed, even if there are no observable objects, since we are also checking the status of CouchDB via this feed.
* Update indicator status if not using SharedWorker
* Start listening to changes feed on first request
* fix test
* adjust test to hopefully avoid race condition
* lint
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Scott Bell <scott@traclabs.com>
* Fix for Fault Management Visual Bugs (#5376)
* Closes#5365
* General visual improvements
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* fix pathing (#5452)
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* [Static Root] Static Root Plugin not loading (#5455)
* Log if hitting falsy leafValue
* Add some logging
* Remove logs and specify null/undefined
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* Allow endpoints with a single enum metadata value in Bar/Line graphs (#5443)
* If there is only 1 metadata value, set yKey to none. Also, fix bug for determining the name of a metadata value
* Update tests for enum metadata values
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* [Remote Clock] Wait for first tick and recalculate historical request bounds (#5433)
* Updated to ES6 class
* added request intercept functionality to telemetry api, added a request interceptor for remote clock
* add remoteClock e2e test stub
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Fix for missing object for LADTableSet (#5458)
* Handle missing object errors for display layouts
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* removing the call for default import now that TelemetryAPI is an ES6 class (#5461)
* [Remote Clock] Fix requestInterceptor typo (#5462)
* Fix typo in telemetry request interceptor
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Lock model (#5457)
* Lock event Model to prevent reactification
* de-reactify all the things
* Make API properties writable to allow test mocks to override them
* Fix merge conflict
* Added plot interceptor for missing series config (#5422)
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* Remove performance marks (#5465)
* Remove performance marks
* Retain performance mark in view large. It doesn't happen very often and it's needed for an automated performance test
* Use timeKey for time comparison (#5471)
* Fix couchdb no response (#5474)
* Update the creation date only when the document is created for the first time
* If there is no response from a bulk get, couch db has issues
* Check the response - if it's null, don't apply interceptors
* Fix shelved alarms (#5479)
* Fix the logic around shelved alarms
* Remove application router listener
* Release 2.0.5 UI and Gauge fixes (#5470)
* Various UI fixes
- Tweak to Gauge properties form for clarity and usability.
- Fix Gauge 'dial' type not obeying "Show units" property setting, closes#5325.
- Tweaks to Operator Status UI label and layout for clarity.
- Changed name and description of Graph object for clarity and consistency.
- Fixed CSS classing that was coloring Export menu items text incorrectly.
- Fixed icon-to-text vertical alignment in `.c-object-label`.
- Fix for broken layout in imagery local controls (brightness, layers, magnification).
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Stacked plot interceptor rename (#5468)
* Rename stacked plot interceptor and move to folder
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Clear data when time bounds are changed (#5482)
* Clear data when time bounds are changed
Also react to clear data action
Ensure that the yKey is set to 'none' if there is no range with array Values
* Refactor trace updates to a method
* get rid of root (#5483)
* Do not pass onPartialResponse option on to upstream telemetry (#5486)
* Fix all of the e2e tests (#5477)
* Fix timer test
* be explicit about the warnings text
* add full suite to CI to enable CircleCI Checks
* add back in devtool=false for CI env so firefox tests run
* add framework suite
* Don't install webpack HMR in CI
* Fix playwright version installs
* exclude HMR if running tests in any environment
- use NODE_ENV=TEST to exclude webpack HMR
- deparameterize some of the playwright configs
* use lower-case 'test'
* timer hover fix
* conditionally skip for firefox due to missing console events
* increase timeouts to give time for mutation
* no need to close save banner
* remove devtool setting
* revert
* update snapshots
* disable video to save some resources
* use one worker
* more timeouts :)
* Remove `browser.close()` and `page.close()` as it was breaking other tests
* Remove unnecessary awaits and fix func call syntax
* Fix image reset test
* fix restrictedNotebook tests
* revert playwright-ci.config settings
* increase timeout for polling imagery test
* remove unnecessary waits
* disable notebook lock test for chrome-beta as its unreliable
- remove some unnecessary 'wait for save banner' logic
- remove unused await
- mark imagery test as slow in chrome-beta
* LINT!! *shakes fist*
* don't run full e2e suite per commit
* disable video in all configs
* add flakey zoom comment
* exclude webpack HMR in non-development modes
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
* lint fix
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Joshi <simplyrender@gmail.com>
Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: unlikelyzero <jchill2@gmail.com>
Co-authored-by: Alize Nguyen <alizenguyen@gmail.com>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Khalid Adil <khalidadil29@gmail.com>
Co-authored-by: rukmini-bose <48999852+rukmini-bose@users.noreply.github.com>
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* Fix imagery filter sliders within flexible layout
* Add image filter value checks to e2e test
- Tests if filter values are updated correctly when dragging contrast/brightness sliders on imagery embedded in a flexible layout
* More e2e tests, add aria-role and update selectors
- Add 'toolbar' role for Image controls
* Created Example Imagery in Flexible layout test
* Updated test to have describe and rebased
* added image to flexview
* Removed old comments
* Cant figure out how to zoom once in flexable layout
* Zoom in and pan left, right, up and down
* Finished
* Lint indentation fix
* Removed dangle comma
* DRY up tests made functions
* Fix lint errors
* Functions failing
* Zoom and pan functions
* Replaced zoom in with function
* Fixed lint errors
* white space
* Removed xpath using css for flexable layout click
* Fixed bug which prevented historical images from loading.
imageLoadDelay variable would be initialized as a string when it's supposed to be initialized as an integer.
* Updated image load delay in E2E test.
* Implemented suggested tweak for parsing image delay.
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Release 2.0.3
* Fix tick values for plots ticks in log mode and null check (#5119)
* [2297] When there is no display range or range, skip setting the range value when auto scale is turned off.
* If the formatted value is a number and a float, set precision to 2 decimal points.
* Fix value assignment
* Use whole numbers in log mode
* Revert whole numbers fix - need floats for values between 0 and 1.
* Handle scrolling to focused image on resize/new data (#5121)
* Scroll to focused image when view resizes - this will force scrolling to focused image when going to/from view large mode
* Scroll to the right if there is no paused focused image
* [LAD Tables] Use Telemetry Collections (#5127)
* Use telemetry collections to handle bounds checks
* added telemetry collection to alphanumeric telemetry view (#5131)
* Added animation styling for POS and CAM; adjusted cutoff for isNewImage (#5116)
* Added animation styling for POS and CAM; adjusted cutoff for isNewImage
* Remove animation from POS and CAM
* Fix transactions overwriting latest objects with stale objects on save (#5132)
* use object (map) instead of set to track dirty objects
* fix tests due to internals change
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
* Gauge edit enabled 2.0.3 (#5133)
* Gauge plugin #4896, add edit mode
* Dynamic dial-type Gauge sizing by height and width (#5129)
* Improve sizing strategy for gauges.
* Do not install gauge by default for now
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
Co-authored-by: Jamie Vigliotta <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* [Telemetry Collections] Include data with start and end bounds (#5145)
* Reverts forced precision for log plots axis labels (#5147)
* Condition Widgets trigger hundreds of persistence calls (#5146)
Co-authored-by: unlikelyzero <jchill2@gmail.com>
* Update version for 2.0.4 (#5255)
* Eliminate NaN conditions and clear stale duration (#5248)
* Temp source map fix 2.0.4 (#5267)
* use dev mode for production
* mode -> production
* added extra devtool options
* wip
* Imagery Fixes for release/2.0.4 (#5282)
* Fallback for height
* Remove duplicated requestHistory call since setDataTimeContext already invokes it on mount
* Inverted datumIsNotValid and refactored requestHistory
* Remove old datumIsNotValid func
* Return false if datum is falsy
* Corrected brightness/contrast input
* Clone default values to avoid mutation
* Changed index of imageTelemetry to an item within bounds
* Implement clearData test for imagery differently
* x-out clearData tests
Co-authored-by: Joshi <simplyrender@gmail.com>
* Imagery test fixes (#5293)
* Fallback for height
* Remove duplicated requestHistory call since setDataTimeContext already invokes it on mount
* Inverted datumIsNotValid and refactored requestHistory
* Remove old datumIsNotValid func
* Return false if datum is falsy
* Corrected brightness/contrast input
* Clone default values to avoid mutation
* Changed index of imageTelemetry to an item within bounds
* Implement clearData test for imagery differently
* x-out clearData tests
* Set bounds on each test rather than the wrapper
Co-authored-by: Michael Rogers <contact@mhrogers.com>
* Imagery validation fix (#5295)
* Remove check for duplicate images
* Remove commented out code and add TODO
* lint fix
* Add missing tests
* Use the master version and ignore release/2.0.4 changes
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Michael Rogers <contact@mhrogers.com>
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: unlikelyzero <jchill2@gmail.com>
* Adds stacked plot inspector view provider for non subObjects
* Initialize config for telemetry objects that cannot be persisted with the config in the stacked plot
Use events to save telemetry object config changes to the stacked plot
Remove changes that weren't relevant anymore
* Ensure the telemetry objects that cannot be persisted are initialized correctly
* Fixes for selection indication in Stacked Plots
- Better theme constant colors.
- Fixed broken selectors.
- Changes also improve selection editing UI for Display and Flex Layouts.
* Ensure unique colors for stacked plot if they are auto assigned
* Fix bug hiding legend when viewing plots nested within a stacked plot
* Move stacked plots tests to it's own pluginSpec to simplify tests
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Rukmini Bose <rukmini.bose15@gmail.com>
* Bump d3-selection from 1.3.2 to 3.0.0
Bumps [d3-selection](https://github.com/d3/d3-selection) from 1.3.2 to 3.0.0.
- [Release notes](https://github.com/d3/d3-selection/releases)
- [Commits](https://github.com/d3/d3-selection/compare/v1.3.2...v3.0.0)
---
updated-dependencies:
- dependency-name: d3-selection
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
* Don't require a plan file for timelist
Allow dropping a plan to timelist
* Rename methods and remove unused code
* Fix typo
* Boost test coverage to get over 52%
* Adds tests for webPage plugin
* Adds more tests for filtering
* Adds more filtering tests
* Removes one test
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Add CouchStatusIndicator
* Remove stray console log
* convert `request()` to async
* refactor
* Fix typo
* Instantiate indicator outside of object provider
- Add 'Maintenance' CouchDB status
- Add text and description for all CouchDB statuses
- Some code cleanup
* Update comments
* Add default cases to switches, make method private
* Small status text change
* Make jsdoc @private methods actually private
* Handle commonly encountered CouchDB errors
- Handle 400, 401, 404, 412, 500 status codes
- Remove `MAINTENANCE` status from this logic since that can only be assumed if receiving a 404 status from GET `{db}/_up`
* Fix tests: avoid directly calling private method
* Add some tests for indicator status
* Update docs for `CouchStatusIndicator`
* Update docs for new `CouchObjectProvider` method
* Make method private
* fix the oopsie
* Add test for 'pending' state
Co-authored-by: Scott Bell <scott@traclabs.com>
* added/removed status for locked, will not work with current one status per domain object setup
* setting restricted right away based on nb type
* added confirmation dialog for locking a page
* Styling for restricted Notebook
- Markup, CSS and content changes for lock button and locked message.
- Removed "Note book Type" property from NotebookType.js.
* have a version of entry template that has no listeners for locked items
* cleaning up page and section components
* making sure basic notebook stuff is installed at least once
* updating data transfer values for locked page entries, fixing page and section selection from edits
* adding locked flag to search result entries
* fixing uneditable section/page names
* cleaning up updateName function for page/section names
* removing install of restricted notebook
* updating confirmation dialog
* updating tests for new export structur
- New symbols glyph and SVG for the Shift Log. IMPORTANT: OVERRIDE ANY MERGE CONFLICTS WITH THIS COMMIT!
* made create button items dynamic each time the button is clicked, this will pick up any new types added after the create menu is created
* removing dynamic create menu list
* found a way to add the plugin before openmct.start is called
* making create items dynamic to include types added after openmct is started
* more e2e tests for restricted notebook
* updates from PR reviews, also fixed error in mct-tree thrown by not checking for an element
* plain notebook tests
* More testcase definition
* actually removing notebook object to test
* removing dupes
* checking if agent exists before relying on it... it was breaking tests with errors
* updating for new browser agent code
* fixing linting errors
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: unlikelyzero <jchill2@gmail.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* Moved imagery controls to a separate component
* Zoom pan controls moved to component
* Implement adjustments to encapsulate state into ImageryControls
* Track modifier key pressed for layouts
* image control popup open/close fix
* Styling for imagery local controls
Co-authored-by: Michael Rogers <contact@mhrogers.com>
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: unlikelyzero <jchill2@gmail.com>
Co-authored-by: Jamie Vigliotta <jamie.j.vigliotta@nasa.gov>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* implement new search and tagging for notebooks
* add example tags, remove inspector reference
* include annotations in mct
* fix performance tests
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: unlikelyzero <jchill2@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Fixes#3197
- Moved position of hide/show units toggle button.
- Added labels to many toolbar buttons, including hide/show units, hide/show frame, edit text, more.
- Added label to toolbar-toggle-button.vue.
- Added separator between stackOrder button and position inputs.
* Fixes#3197
- Removed unwanted margin in alphanumerics when label is hidden.
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* [4864] Fixes cancelling edit properties console error
* Get the style receiver when the styleRuleManager is initialized. This prevents any ambiguity about which element should receive the style
* Don't subscribe if the styleRuleManager has been destroyed
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
Co-authored-by: Andrew Henry <andrew.k.henry@nasa.gov>
* Removed Zepto
* Added utility functions for compiling HTML templates and toggling classes on and off
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Added click event to simple indicator
* Moved operator status plugin to Open
* Implementing user role status API
* Support adding indicators asynchronously
* Adding user status API
* Updated example user provider
* Update icon with status
* Adding admin indicator
* Apply config options
* Set status class on indicator. Clear all statuses
* Show poll question in op stat indicator
* Implementing status summary
* Get statuses from providers. Reset statuses when poll question set
* Styling for operator status
- New icon glyph - IMPORTANT: OVERRIDE ANY MERGE CONFLICTS USING THIS COMMIT!
- Fixed erroneous font glyph mapping;
- Added default color for indicator icon;
- Changed user indicator to display response when set to other than "NO_STATUS".
- Standardized icon display.
* Cherrypick symbols font updates from restricted-notebook branch. This is the most full and complete version of the symbols font - OVERRIDE ANY MERGE CONFLICTS WITH THIS COMMIT!
* Fix positioning of popups
* Also fix positioning of status indicator
* Get roles by status instead of users
* Refactor how status summary is determined to simplify API
* Re-fetch status summary on status change
* Implemented status reset
* Move status into separate API
* Refactor user status to its own sub-API
* Create RAF utility class
* Error handling
* Add copyright notices
* Fix test issues
* Added jsdocs
* Additional tests for raf utility function
* Move status style configuration into Open
* Move styling from the API into the view
* Added some docs
* Added some unit tests and fixed a bug found in the process. Tests work\!
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Unpause telemetry table on user bounds change (#5113)
* Add tests for table pause and unpause (#5113)
* Add test (#5113)
- Add test for scenario where table is paused by button but unpaused by user bounds change
* Add test (#5113)
- Add test for table does not unpause on a bounds change caused by a tick
* Add e2e test (#5113)
- Add test for scenario where table is paused by button but unpaused by user bounds change
* Add test (#5113)
- Correctly simulate clock tick
- Exclude datum with new bounds and ensure the correct tableRow count
* Remove 'wait for save banner' logic from e2e test
* Use augmented `test` object in e2e test
- Imports `test` object from `fixtures.js`
* e2e: Add workarounds for chromium issue
* Refactor per code review comments
- Simplify `userBoundsChanged()` logic, get rid of duplicate code
* Just get rid of the unnecessary method
* Respond to code review comments
- `destroyed()` --> `beforeDestroy()`
- Rename `unpausedByButton` parameter to include user bounds change condition
- Remove unused parameter
* [e2e] Remove unnecessary step with force click
* `test.skip()` -> `test.fixme()`
* Bypass `no-wait-for-timeout` rule for visual tests
* Fail lint step if warnings > 0
* Set default value for `imageUrl`
- Resolves `vue/require-default-prop` warning
* Disable eslint rule `you-dont-need-lodash-underscore/get`
- Disable the rule for now as the implementation they suggest doesn't match lodash `_.get()` functionality, and fails a bunch of our tests. See https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore/issues/311 and https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore/issues/294
* Disable `no-wait-for-timeout` warning for `visual` folder
* Add rule exception and comments in logPlot test
- Add exception and FIXME for timeout
- Add comment on fixme test to discourage community contribution
* clean up tests
- remove unnecessary awaits
- update locators to use data-testid where possible
- remove unnecessary wait
* Wait for image count condition instead of timeout
* code review comments: use expect.poll()
* readability
* .fixme() + comment instead of .skip()
* disable `.skip()` warning for memleak test suite
* Renamed test files
* temp push of performance branch
* comma
* stash
* final
* rename to imagery
* remove old
* stash
* fix name
* Add plain notebook e2e and perf test
* Shard and add perf to ci
* Import fixtures
* 3
* also off by one?
* forgive me, father
* update perf test name
* SHARD
* one mo shot
* add suites
* failfast
* remove allure
* add more testsuites
* full
* skip
* ignore glob
* headless?
* skip audit to save ci time
* temp push
* remove allure
* remove doubled test and update snapshots
* update snapthos 2
* back to ci
* update comments
* remove notebook
* updates
* remove npx playwright install
* Prevent deleting browsers
* circleci comment
* re-enable audit
* Add html reporter
* speed up execution
* speed up CI
* Add performance line to bug report
* PR Comments
* change dir of report
* remove test
* Update Tracepath. Update playwright-percy
* Remove shim
* Improve stability and move html report
* fix space
* Add more slowdown for moveObjects
* Get rid of navigation event
* fix missing events
* review comments
* last change!
Co-authored-by: unlikelyzero <jchill2@gmail.com>
* Fix tick values for plots ticks in log mode and null check (#5119)
* [2297] When there is no display range or range, skip setting the range value when auto scale is turned off.
* If the formatted value is a number and a float, set precision to 2 decimal points.
* Fix value assignment
* Use whole numbers in log mode
* Revert whole numbers fix - need floats for values between 0 and 1.
* Reverts forced precision for log plots axis labels (#5147)
* [Gauge Plugin] Limits and Composition Issues #5155
* default current value as '--'
* updated as per review comments.
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Move image export actions to 3-dot menu
* Move cursor guide and toggle grid lines to local controls for plots (on hover)
* toggle cursor and gridlines affect all plots in a stacked plot
* Fix tests
* Better message when exporting plots, fixed typo
Co-authored-by: Joe Pea <trusktr@gmail.com>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
* Created new project file
* click previous image button
* Zooms left, right, up, down
* Rebased and added my tests back
* Removed expected pause from zoom
* printing var
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* New view for plot underlays
* Update to show markers from data
* Add scatter plot x and y axes configuration
* Add color properties for scatter plots
* Add x and y axis min and max to work with underlays
* Use request API for telemetry (telemetry collections bug)
* Allow zero values
* Add pan and zoom functionality
* Glyphs and text changes for Scatter Plots
IMPORTANT: ANY MERGE CONFLICTS WITH FONT FILES SHOULD OVERRIDE USING THIS COMMIT - DO NOT MERGE CHANGES!
- Changed name to 'Scatter Plot', refined description;
- New icon glyph and SVG bg for `icon-plot-scatter`, font-files updated;
- More clarity added to underlay min/max form labels for clarity;
* Glyphs and text changes for Scatter Plots
- Add updated Icomoon file;
* Inspector refinements for Scatter Plots
- Consolidated Inspector section layout;
- Improved ColorSwatch.vue code using <template> tags to allow less brittle CSS styling;
- Improved Inspector CSS to remove overly specific selectors for `grid-row` elements;
* Enable indeendent time conductor
* Add button to remove scatter plot underlay
* Adds tests for scatter plot
* Modded look and icon of file remove button
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Notebook entry tweaks for #4954
- Standardized entry layout;
- Colors, styles and padding refinements for entry elements;
Co-authored-by: Andrew Henry <andrew.k.henry@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Remove pause on pan/zoom wheel or button input
* Test to ensure that pause mode is not activated during zoom
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* warn user if telemetry not all telemetry metadata matches time system
* create spec file for telemetry collections
* Add tests (#4999)
- Test for warn if metadata does not match active TimeSystem
- Test for no warn if metadata matches active TimeSystem
* unset timeKey if no matching domain found
* Extract errors to constants file and update tests
Co-authored-by: Jesse Mazzella <jesse.d.mazzella@nasa.gov>
* Created Time counductor input fields real-time mode
* Added click timespan button and click local clock button
* Click time offset button, input time offset in seconds
* Click the check button
* Verify time was updated on start time offset, click preceding now button
* Verify time was updated on preceding time offset button
* Added testing instructions as comment as testcase guide
* Typo in test name
* Updated Verify time was updated on time offset button to awaits
* Updated Verify time was updated on preceding time offset button to awaits
* added test for creating and moving objects
* Refactored and cleaned up test code
* Removed extra await in expect
* Clean up playwright default text in waits and nav
* Finished test file with second test
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* small general fixes
* Rename testsuite and use snapshot alias
* remove only
* Add some more determinism by waiting for Save Banner
* rename
* reduce time to fail
* add determinism
* log the process
Co-authored-by: unlikelyzero <jchill2@gmail.com>
* Release 2.0.3
* Fix tick values for plots ticks in log mode and null check (#5119)
* [2297] When there is no display range or range, skip setting the range value when auto scale is turned off.
* If the formatted value is a number and a float, set precision to 2 decimal points.
* Fix value assignment
* Use whole numbers in log mode
* Revert whole numbers fix - need floats for values between 0 and 1.
* Handle scrolling to focused image on resize/new data (#5121)
* Scroll to focused image when view resizes - this will force scrolling to focused image when going to/from view large mode
* Scroll to the right if there is no paused focused image
* [LAD Tables] Use Telemetry Collections (#5127)
* Use telemetry collections to handle bounds checks
* added telemetry collection to alphanumeric telemetry view (#5131)
* Added animation styling for POS and CAM; adjusted cutoff for isNewImage (#5116)
* Added animation styling for POS and CAM; adjusted cutoff for isNewImage
* Remove animation from POS and CAM
* Fix transactions overwriting latest objects with stale objects on save (#5132)
* use object (map) instead of set to track dirty objects
* fix tests due to internals change
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
* Gauge edit enabled 2.0.3 (#5133)
* Gauge plugin #4896, add edit mode
* Dynamic dial-type Gauge sizing by height and width (#5129)
* Improve sizing strategy for gauges.
* Do not install gauge by default for now
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
Co-authored-by: Jamie Vigliotta <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* [Telemetry Collections] Include data with start and end bounds (#5145)
* Reverts forced precision for log plots axis labels (#5147)
* Condition Widgets trigger hundreds of persistence calls (#5146)
Co-authored-by: unlikelyzero <jchill2@gmail.com>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Michael Rogers <contact@mhrogers.com>
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: unlikelyzero <jchill2@gmail.com>
* Regex match the linux platform and display separate message
* Added test for different alt test based on OS in userAgent
* Simplify to use full navigator string instead of navigator.platform or userAgentData.platform
* Use userAgent string
* Test.skip depending on OS
* Remove .only after confirming test
* Adjust the skip logic
* Fix Flake
* halfbaked implementation
* Updated test to use os specific hotkeys and check for correct text
* Remove test.only
* Delete old tests
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
Co-authored-by: unlikelyzero <jchill2@gmail.com>
* use sort and merge sorted strategy for incoming data
* add shortcut for merging to beginning or end of existing rows
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Only show thumbnails if image view is > 400px high
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
* use identifier not key for object get calls
* re-index on composition or name changes only
* search should account for namespaces
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
* add some types to XAxisModel
* Add UI to toggle log mode.
* handle autoscale toggle for logMode
* add log plot tests
* test log ticks work after refresh
* add an initial manually-created visual snapshot test of log plot chart
* update plot unit tests for log mode
* remove scale variable for now
* make v-for keys unique per template to avoid a small performance hazard of v-for markup in the same subtree of a template having clashing keys (Vue quirk)
Co-authored-by: unlikelyzero <jchill2@gmail.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* fix: forgot to increase maxDiffPixels for one snapshot test, making it more chance to flake. let's see if this work
* hopefully fix PerformanceIndicator test flakes
* hopefully actually fix PerfIndicator test this time
* ok, *finally* fix PerfIndicator test... hopefully...
* simplify PerfIndicator test to check only for positive fps value
* [5058] Change the unit if the yKey changes after initialization
* [5057] Show y axis label when more than one series is present with the same range value
* Fix typo for model length check
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
* fix: autoscale turned off could cause errors
* remove commented code
* add tests for plot ticks
* make sure autoscale tests use a certain window size so they work consistently
* add commented code to use once playwright snapshot testing is fixed
* default the user selected range to the current range prior to when they turn off autoscale
* add snapshot tests for plots autoscale turned off test
* Added animation-delay and animation-duration properties to inline styles
* Accept config options from plugin
* Lint fix
* Lint remove trailing space
* Lint: blank line
* Make default values consistent
* Removal of default css and cleanup
* Updated the default values for image freshness
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Add new timelist view and plugin
* Add inspector properties
* calculate list bounds to show/hide events
* Add timer to track 'Now' for timelist
* Styling for Timelist view
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
* add some types to XAxisModel
* some more type defs and small code tweaks while getting familiar with plots
* more type annotations and a few small tweaks
* more type annotations and small tweaks to make types show
* add mocha types
* Add karma and jasmine, too
* further simplify plot canvas creation
* further simplify plot canvas creation
* update types, avoid runtime behavior in type definition that breaks SeriesCollection
* undo the changes to MctChart, improve it later
* lint fix
Co-authored-by: unlikelyzero <jchill2@gmail.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
* Remove all node12 testing other than platform
* add lighthouse to our deps now that 12 is deprecated
* removing 12 from platform pr
* Updated config.yml
Co-authored-by: unlikelyzero <jchill2@gmail.com>
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* Fix timezone dropdown collapse issue
* Dropdown should collapse when click outside
* Fix Lint error
* add e2e test for autocomplete
* updates based of code review
* Typo fixed
* Modification based on review
Co-authored-by: Scott Bell <scott@traclabs.com>
* invert npmignore to include what we want
* remove line for no-longer-existent src/**/*.spec.js files from npmignore
* cleanup npmignore comments
* remove platform dirs from npmignore, they were removed from the repo
* remove one more platform reference from npmignore
* publish example/ and app.js, at least for now
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
* Correctly use creatable attribute and persistability when working with domainObjects (#4898) (#4936)
* making move action location check persistability
* adding persistence check instead of creatability for styles
* added check for link action to make sure parent is persistable
* debug
* adding parent to link action and move action form location controls so they can be used in the form
* adding parent persistability check for duplicate
* updating multilple actions appliesTo methods to check for persistability
* updated the tree to not require an initial selection if being used in a form
* remove noneditable folder plugin
* added persistence check for the parent, in the create wizard
* minor name change
* removing noneditabl folder from default plugins as well
* checking the correct parent for persistability in create wizard
* importing file-saver correctly
* updated tests for import as json
* changes addressing PR review: using consts, removing comments, removing unneccessary code
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Scott Bell <scott@traclabs.com>
* Fix display layout items getting cut off on the bottom (like plots) (#4903)
* Fix display layout items getting cut off on the bottom (like plots)
Also fix Vue warnings
* Add partial e2e test for this bug fix. WIP.
* Address review comments
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Link action fix (#4945)
* handling edge case for linking a root item
* added location to viper plans (couch search folder) set to ROOT, added a check to remove action for alias (so you can remove linked nonpersistable items)
* added check for no parent in remove action (which means it is a root item)
* updating test
* Update time conductor inputs realtime (#4877)
* Update time conductor inputs realtime
* Update moveObjects.e2e.spec.js
* Update importAsJson.e2e.spec.js
* Update default.spec.js
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* WIP add instanbul code coverage to vue files
* move webpack coverage config to a separate file for test:coverage, pin dependencies, remove istanbul-instrumenter-loader
* dont include node_modules in babel config, it breaks istanbul for some reason
* ignore spec files from coverage
* document coverage files, remove unused karma config
* use test instead of test:coverage in config.yml, disable code and link to issue to enable coverage in Vue <template>s
* initial setup for createButton e2e test
* insignificant change
* export as json
* import tests
* added first of two tests
* add stub
* fixme
* move objects
* added test for menu options for non persistable items
* removing "only" for debuggin test
* removing debug code
* soft assertion for multiple expects
Co-authored-by: unlikelyzero <jchill2@gmail.com>
* Domain object properties validation not working always #4849
* stub of a test
* set local execution to chrome
* skip visual test
* use input event for changes and throttle update.
* moved file to correct location
* fixed e2e tests.
Co-authored-by: unlikelyzero <jchill2@gmail.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* making move action location check persistability
* adding persistence check instead of creatability for styles
* added check for link action to make sure parent is persistable
* debug
* adding parent to link action and move action form location controls so they can be used in the form
* adding parent persistability check for duplicate
* updating multilple actions appliesTo methods to check for persistability
* updated the tree to not require an initial selection if being used in a form
* remove noneditable folder plugin
* added persistence check for the parent, in the create wizard
* minor name change
* removing noneditabl folder from default plugins as well
* checking the correct parent for persistability in create wizard
* importing file-saver correctly
* updated tests for import as json
* changes addressing PR review: using consts, removing comments, removing unneccessary code
Co-authored-by: Scott Bell <scott@traclabs.com>
* if user provider, user added to notebook enntries and snapshot entries, updated code to work with asynnc nature of user api
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
* Add clearData listener for imageryData module
* Remove commented out code
* Updated imagery clear data test
* Adjusted telemetry stub to return empty array if data cleared
* Remove forced test
* Restub telemetry before
* Cleanup and reset clear data boolean after
* Remove double blank line
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Update e2e tests to run on windows and linux
* Add pr-platform to run against all supported archictures
* Update dependabot to run pr:platform
* Update to run in fail-fast false
* remove x86
* Update pr-platform.yml
Co-authored-by: unlikelyzero <jchill2@gmail.com>
* [CI] Add lighthouse to our deps to track with dependabot
lighthouse ci is still actively maintained and will be following a traditional release model. We should continue to use this package until it's functionality is replaced in playwright
* Add lighthouse to dependencies to track with dependabot
* Allow lighthouse to be triggered from PRs
* Update lighthouse.yml
* add lhci scrript
* bump to 16
* remove from deps until node 18
* document steps and add caching. Revert to 14
* ignore exit codes
* add secret for app
* remove env for baseline
Co-authored-by: unlikelyzero <jchill2@gmail.com>
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
* [Docs] Update Github Bug Report Template with envinfo
* Moving Impact Checklist to bottom so that folks can file and click without markdown x
* Add to npm run scripts
* Remove legacy codebase
* Remove legacy docs
* Fixed memory leak in timer spec
* Remove Angular dependency
* Removed adapter layer
* Removed legacy support plugin from main Open MCT repo
* Restored TelemetryAPI.js which had been inexplicably deleted?
* Fix linting error
* Drop line coverage threshold due to removed code
* Added a section on Open MCT 2.0.0 to the readme
- Add objectTypeClass property to allow new CSS selector to target Plan object types in Timestrip views.;
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* [CI] Dependabot to run on all packages
* Pin dependencies
Co-authored-by: unlikelyzero <jchill2@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Update version number (#4759)
* update copyright (#4775)
* Observe changes to sub-objects in flexible layouts. (#4780)
* Get child of flex layout as mutable if possible
* Fix bug when no default notebook defined
* Follow domain object changes for Independent time conductor (#4783)
* Track if domain object changes when independent time conductor is in use.
* fix typo when using fallback template (#4784)
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* removed selector tree, using mct-tree for selctor now, updated style view to use new forms api, update mct-tree to be a selector if need be
* added some extra calculations for height when the tree is being used as a selector in forms
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* Do not keep fetching default notebook
* Fixes issue where notebooks would stop listening for remote changes.
* Fix issue with notebook merge conflicts
* Fix object creation (#4675)
* Save the object before adding it to the parent so that transaction committing works properly
* Fix object creation - composition policy changes
* use relative path (#4683)
* Notebook Snapshotting to the default Notebook isn't working (#4475)
* Notebook Snapshotting to the default Notebook isn't working #4469
* Check for ref when trying to get the style receiver. (#4687)
Also ensure that the property being displayed in Properties is actually a part of the domainObject.
* Mct 4555 rebased v3 (#4689)
* Preserve the previousFocusedImage for subscription updates, bound change for local and fixed time
* Only preserve previous focused image if paused
* Forcibly reset imageContainer size to prevent aspect ratio distortion
* Remove unneccesary mixin invocation
* Use image history instead of imagehistory size for watcher. Revert other changes
* Added check if last image index is selected
* isPaused instead of paused
Co-authored-by: Michael Rogers <contact@mhrogers.com>
* Snapshot notice link not navigating as expected #4194 (#4686)
* Fix Link Action to accept the right input for validation (#4696)
* Remove snapshot from release version (#4721)
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
Co-authored-by: Michael Rogers <contact@mhrogers.com>
* Run full regression suite on PR
* Limit concurrency to 2 workers
* Update PULL_REQUEST_TEMPLATE.md
* Added prcop config
Co-authored-by: unlikelyzero <jchill2@gmail.com>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Updates Event Generator to ES6 classes and current API.
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* touch every file on earth to update copyright
* update one more
* pick up 2017 2018 2019
* revert fuchs copyright
* revert other bundle copyrights
* somehow missed one
* wrote little script
* wrote little script
* added script to update copyright
* include html
* include md
* update script
* captures all copyright now
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Move off node10 and bring in node16
* Update engine lock
* update webpack and add the output.hashFunction option to avoid a potential issue with Node 17 in case the config changes closer to defaults
At the moment there is no error with Node 17 because the config strays from the defaults and avoids the common case.
Also add a tsconfig.json file that enables VS Code and other IDEs to perform type checking on the side. For example now the webpack config file is type checked. This does not impact any existing processes, our build scripts are left untouched and only IDEs will use it for live intellisense and type checking when viewing files (f.e. showing helpful red squiggly underlines on type errors)
* mini-css-extract-plugin
* Update webpack.prod.js
* Update webpack.prod.js
* 15
* Update config.yml
* Updated config.yml
* Updated config.yml
* Updated config.yml
* Update package.json
* comment and EOF
Co-authored-by: Joe Pea <joe.pea@nasa.gov>
Co-authored-by: Joe Pea <trusktr@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Enable independent time conductor for stacked plot and overlay plot.
* Lint fixes
* Fixes for #4503 and #4606
- Added `flex: 0 0 auto` to toggle switch when in ITC to prevent
element from being crunched when window or frame is very small;
* Add independent time conductor to bar graphs
* Add timeContext to bar graphs
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
* Show condition set label for condition widgets
* CSS changes
* Ensure condition set output as labels also works when condition widget is part of a display layout
* Adds tests for conditionWidget
* Tests for condition label output. Fix breaking tests.
* Don't remove event listeners when conditionset changes
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
* Run full regression suite on PR
* rename job
* specify new testsuites to run
* use newer objects types
* Limit concurrency to 2 workers
* CI!
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: John Hill <jchill2.spam@gmail.com>
* Updated objectAPI to support root priority
* Updated to new ES6 module for root registry and updated docs for new priority API and root object priority
* Set "My Items" to default priority of low, for root object order
Co-authored-by: Andrew Henry <akhenry@gmail.com>
- New `c-object-view` class;
- Removed CSS class special-casing in ObjectView.vue;
- Removed unused `l-shell__main-object-view` class;
- Fixed CSS selector for Condition Widget display in main view;
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* Make legacy support optional
* Fix order of legacy plugin registration
* Added 'supportComposition' function
* Add composition policy to check that parent supports composition
* Fix memory leaks in timer
* Use a fixed version number for vue-loader to avoid a webpack build issue in some system configurations
* Ask dependabot to keep an eye out for vue-loader updates
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Release 1.8.2
* Trasactions tests are ids equal fix 1.8.2 (#4593)
* test fix
* return promise on 'onSave'
* "Export as JSON" yielding corrupted data #4577 (#4585)
https://github.com/nasa/openmct/issues/4577
* Fix date picker default time setting (#4581)
Fix mode dropdown position
Fix unlistening of upstream events
* Bar graph composition policy fix to allow condition set creation. (#4598)
* Use image timestamp instead of image index to show large view (#4591)
* Use image timestamp instead of image index to show large view
* Fix failing test
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
* Reimplementation of Local Storage provider
* Added tests
* Remove identifierService mocks from all test specs
* Do not persist identifiers in couch
* Constant rename
* Fix broken test
* Clean up mock window functions
* Updated copyright notice
* Fixed bug in in-memory search indexer
* Remove legacy bundles
* Replace legacy format management with vanilla JS
* Redefine legacy formats in plugins instead of bundles
* Remove 'draft' from API documentation
* Remove focus from test spec
* Register local time system using new API
* Fixed broken custom formatter test spec
* Make capitalization consistent
* Rewrite test for terse formatting for time conductor
* Make dependency on UTCTimeFormat explicit
Co-authored-by: John Hill <john.c.hill@nasa.gov>
* Remove type service from the DefaultMetadataProvider
* Added tests
* Move unknown types to new type registry
* Migrate legacy type telemetry information to new types to obviate need to use type service from new API
* Remove default object, it's not needed any more
* Remove injector from spec
* Transaction fix (#4421) (#4461)
* When transaction is active, objects.get should search in dirty object first.
* Bugfix/create tree node (#4472)
* Transaction fix (#4421)
* When transaction is active, objects.get should search in dirty object first.
* find insert location prior to adding item to tree
* no need to resort
* add item should only add to direct descendants
* remove unused function
* copy composition before sorting
* remove unused var
* remove master pollution
* Revert "remove master pollution"
* add item to correct location
* Changed descending to ascending in sort order method (#4480)
* adding RAF to display layout alphanumerics (#4486)
* [Tabs] Sizing of offscreen tabs causing issues (#4444)
* [LAD Tables] Use RAF for updating template (#4500)
* Fixes LAD rows for string telemetry (#4508)
* Fixes LAD rows for string telemetry
* saving the object if it was missing (#4471)
* 4328 - Maintain reference to a focusedImage if the bounds change (#4545)
* WIP: adding assertions to catch negative index state
* just testing the flow
* SUpdate the image history index to previous selected image
* Cleaning up spacing and log statements
* Converted focusedImageIndex assignment to ternary and general cleanup
* imported objects are not persisting (#4477)
* imported objects are not persisting #4470
* disabled karma spec reporter suppressErrorSummary
* update version number
* Delete importFromJsonAction directory since it was empty
* Use bare bones search worker using native Worker
* Remove worker service
* remove unused workers pulled into search bundle
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* added persistance check to edit properties action
* adding persistence check in browse bar as well as reverting passing in openmct in bundle and now passing it in through appliesTo method
* adding other actions that need to be persistable
* adding persistance check to set primary location action
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* 4390 - [UTCTimeFormat] Convert to ES6 Plugin
* Added test for the plugin
* change the key propery name from ISO_KEY to UTC_KEY
Co-authored-by: John Hill <john.c.hill@nasa.gov>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
* Add a requestAbortController for the telemetryAPI and trigger an abort of all requests on navigation via the router.
* Check for the rejection and make sure it's not an abort error to show the error
* Add canView logic for telemtry and compositon
* AUse PriorityAPI to set high priority for LADTable views
* Changed high to constant case
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
* Change document title on BrowseBar or PropertiesDialog change
* Revert update name title mutation
* Added listener for object name mutation
* Remove properties action approach and scope to * instead of name
* Remove extra line break
* npm-prerelease.yml
Workflow to automatically publish an npmjs package when a Github pre-release is created
* Changes to name and jobs
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* First example of playwright
* Move config
* set junit output
* fix config and update version
* staged changes
* new files
* update to remote dir
* remove remote
* smoke
* Update smoke.spec.js
* Add eslint for playwright
* Add dependabot rule for playwright
* Add adhoc GHA for playwright
* Update tests and fix eslint
* move playwright eslint config to e2e dir
* Add to circle config
* store artifacts
* wrong location for storing artifacts
* slash?
* build before start
* increase timeouts in circle
* remove duplicate build step
* timeout values
* add retries
* reduce retries
* add percy emblem
* added percy
* Adds GHA for adhoc trigger and baseline visual
* Bump and Rev dependabot separte from karma
* update e2e label for additional pr logic
* Ignore playwright changes for codeql
* Update documentation
* Add ability to run all tests on pr label
* eof
* yamlamlaml
* issue instead of pull api
* archive results and include a link in the PR comment
* log context and attempt string concat
* concat fix
* add success/failure options
* add alure reporting
* lock playwright image
Co-authored-by: unlikelyzero <jchill2@gmail.com>
* Add plan state indicators
* Changes to simplify timeline view
* Styling for draft plans
* Adds status to Plan.vue
* Adds tests
* Mods for #4309
- New font and icomoon JSON file - when merging, please override with this version if any conflicts!
- New glyph and bg-icon svg style for plan;
- Updated glyph and bg-icon svg style for timestrip;
- Modified visual approach, glyph, color for `is-status--draft`;
- Updated icon usage for Plan views;
- Updated description for Plan and Timestrip views;
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
Co-authored-by: Khalid Adil <khalidadil29@gmail.com>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: Michael Rogers <michael@mhrogers.com>
* Create SECURITY.md
* Remove unused template
* Add security template to our issue chooser
* Add new issue type for maintenance
* eslint changes
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Re-implemented timer and clock and installed as a plugin
* Clock indicator is installed as configuration to clock plugin
* Uses moment
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
* removed legacy my items, created my items plugin, moved relevant code to new plugin
* added object api method for checking if a domainObject is a missing object
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Sort MyItems alphabetically when building the tree
* Fixed brace indentation
* Modified tree-item to accept is-new prop for initial highlighting
* Adjusted sort function and properly sort children before splicing treetItems
* Mods for #1717
- Refined color and timing, color is now theme-compliant;
- Added new theme color constants;
- Smoke tested in Espresso and Snow themes;
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
* Notebook conflict auto retry 1.7.7 (#4230)
* Use timeFormatter.parse to get the timestamp of imagery since the source could be something other than key (#4238)
* If there is a pending create request for an id, queue a duplicate request. (#4243)
* [Telemetry Tables] Handling Request Loading (#4245)
* Fix file selection on pressing enter key (#4246)
* starting loading as false, since that makes sense (#4247)
* Hide independent time conductor mode if only 1 mode option is available. (#4250)
* Fix bargraph color selection (#4253)
* snapshot clicked while in edit mode should open in preview mode #4115 (#4257)
* Fix missing object handling in several vues (#4259)
* Flexible Layouts display Condition Sets as their editing/browsing interface (#4179)
* Flexible Layouts display Condition Sets as their editing/browsing interface #4141
* [Telemetry Table] Progress bar tests (#4249)
* Remove alert styling and hide pause button if in Fixed Time mode. (#4263)
* [Table/Collection Fixes] Clearing correctly, no mutating options, no duplicate requests (#4261)
* Condition sets only persist if actively editing (#4262)
* Imagery views should follow time context (#4264)
* Equal stacked plot y widths for all it's sub-plots (#4267)
* Fix Bar Graph related CSS (#4270)
* Bar graph review comment fixes (#4232)
* Mct4196 - Fixes Conditional Styling not being applied when editing a Condition Widget (#4255)
* Fix plot zoom when child of time strip (#4272)
* Resume plot if no pan, zoom, or drag action is taken (#4138) (#4256)
* [Telemetry Collection] No duplicate requests on load (#4274)
* doing the easy thing first (#4278)
* Bargraph time metadata should consider 'source' (#4289)
* Show clicked image in large view (#4280)
* added icon for inspector (#4275)
* Bar graph style nullcheck (#4291)
* Stacked plots need to align the Y axis (#4286)
* Duplicate Request Fixes (#4295)
* Add braintree sanitize url lib and sanitize form urls (#4296)
* Mct4177 fix for telemetry endpoints with '.' in the key (#4308)
* Remove additional request to load plots when mounted. (#4314)
* Fix plots dup requests (#4324)
* Merging 1.7.8 into master.
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
Co-authored-by: Khalid Adil <khalidadil29@gmail.com>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Scott Bell <scott@traclabs.com>
Co-authored-by: Michael Rogers <michael@mhrogers.com>
* added priority api with an enum for sane priority defaults
openmct.priority.LOW: -1000. Should always run last.
openmct.priority.DEFAULT: 0. This is the default unless you specify something else.
openmct.priority.HIGH: 1000. Should always run first.
* allow indicators to be sorted by priority
* added rough first draft on installing and configuring couchdb
* second draft of couchdb manual
* made explict the roles to delete
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Implement transactions in Object API and retire legacy transactions #4089
* Added `objectAPI.refresh`
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Added some extra test for the new implementation of Time Conductor History on PR 4287
* Refractor on testing and Time Conductor
* Update duration.js
Refractor on getPreciseDuration()
* removed DEPRECATION warnings
* test fixes
* added spec reporter to debug failing tests and fixed couple specs
* disabled failFast to see all failing tests
* disabled fail test and change timeoutInterval to 5000
* removed unused debounce import
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Fix#3981
- Mods to markup and CSS for better approach to overflowing and min-heights;
- WIP!
* Fix#3981
- Refinements to min-height approach;
- CSS cleanups;
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
- HTML/CSS mods to remove button holding element that was blocking clicks,
instead position buttons independently;
- Disabled style now handled better in `show-on-hover` class;
- Removed overly-specific size and positioning defs from cArrowButtonBase mixin;
* added processor generator to request options in the telemetry API. Allows progressive yielding of request results.
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Add linear progress bar to tables
- Stubbed in markup;
- Better CSS anim for clarity;
* Indeterminate progress bar for telemetry tables
- Significant refinements to use ProgressBar.vue component;
- Stubbed in temp computed property for `progressLoad`;
- Better animation approach for indeterminate progress;
- Refined markup and CSS for `c-progress-bar`;
* Indeterminate progress bar for telemetry tables
- Refinements for determinate progress as shown in notification banners;
- Refined look of progress bar for clarity;
- Vue component now uses progressPerc === undefined instead of 'unknown';
- Animation tweaked;
* Changed progress-bar v-if test
- Per PR change suggestion, replace `v-if=progressLoad.progressPerc !== 100`
to `v-if=loading`;
* Added NotebookMenuSwitcher in preview header
* Use preview component inside viewLargeAction
* Added autoHide flag to overlay API that allows developers to specify whether an overlay should remain visible if other overlays are subsequently triggered (eg. the snapshot overlay)
* When in edit mode, disable navigation link to notebook entry.
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Snapshot images should use the namespace of the notebook they are being saved to, or LocalStorage #4007
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
It's still not clear which jobs pass/fail on tests. This change will update the name of the job which is run to be more explicit that it only pass/fails on the build step
* if default section/page is missing then clear default notebook and hide option from dropdown.
* handle edge case when section is null/undefined.
* refactored notebook localstorage data + fixed some edge cases when default section/page gets deleted.
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* remove can edit from hyperlink (#4076)
* Add check for stop observing before calling it (#4080)
* Set the yKey value on the series when it's changed (#4083)
* [Imagery] Click on image to get a large view #3582 (#4085)
fixed issue where large imagery view opens only once.
Co-authored-by: Henry Hsu <hhsu0219@gmail.com>
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
* added vue hyperlink plugin
* remove angular code. update target attribute
* Polishing on form styles
- Remove `display: flex` from `.l-shell__main-container` and
`.c-so-view__object-view` CSS - IMPORTANT: NEEDS REGRESSION TESTING!
- Improvements to `.c-hyperlink` CSS;
- Markup cleanups and simplification;
- Remove duped CSS in object-frame.scss, probably result of prior bad
past merge;
* Fixes for object-frame and preview.scss
* Refinement to make hyperlink button have same display behavior as
Condition Widget;
* refactor layout template. update tests
* remove legacy hyperlink
* Updating firefox launcher
Co-authored-by: Henry Hsu <henry.hsu@nasa.gov>
Co-authored-by: charlesh88 <charles.f.hacskaylo@nasa.gov>
Re-implements ImageExportService as ES6 class instead of Angular managed service.
Co-authored-by: John Hill <jchill2.spam@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* [Imagery] Click on image to get a large view #3582
* Created new viewLargeAction.
* Changes in view registry to add parent element property inside view object.
* Separate class for views and added missing changes for LadTableSet.
* Renamed callBack to onItemClicked.
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Remote-clock plugin
* Added a default clock class that can be extended by other classes
* Updated local clock to use the parent default clock class
* added a period check to make sure its been a certain amount of time before emitting
Co-authored-by: John Hill <jchill2.spam@gmail.com>
* Add checks and hide panes accordingly, toggle hide params when toggling panes, add params on change event
* add tests
Co-authored-by: Henry Hsu <henry.hsu@nasa.gov>
Co-authored-by: John Hill <jchill2.spam@gmail.com>
* Update all unit test packages, set node engine rules, new circleci workflow
Co-authored-by: unlikelyzero <jchill2@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
catching any errors from a user canceling from dialog (#3968)
Fix navigation errors (#3970)
Only add listeners to observables on creation
Do not double destroy mutable objects
Disallow pause and play in time strip view for plots. (#3972)
Update version
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* add logs for testing
* check autoScroll value
* Add auto scroll button at thumbnails
* add auto scroll button functionality
* turn on auto scroll whenever scroll bar is not at the right end
* check if scroll right when the page load
* update scroll to right condition
* remove resetScroll method, refactor scrollToRight and some cleaning
* check initial status
* remove logs
* Styling for imagery thumbs 'autoscroll resume' button
- Refined look and feel of the approach;
- CSS classes now assigned at the wrapper level;
- Markup changed to allow wrapping of scroll area and button;
- TODO: prevent a drag resize of the main view area from forcing
autoscroll to pause;
* Add tests for auto scroll
* add resize observer for thumb wrapper
* reset scroll bar position when window is resized
* Revert "upgrade to webpack5 (#3871)" (#3907) (#3908)
This reverts commit e1e0eeac56.
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
* Check for getlimits api (#3910)
* add debounce and resizing observer to thumbwrapper
* handling resizing window and auto scroll
* 1.clean up comments and logs 2.make variable names more descriptive 3.add scroll to right for play button
* fix eslint formate issue
* update class name in test
* fix eslint format error
* remove a couple variables that were created but not used.
Co-authored-by: Henry Hsu <henry.hsu@nasa.gov>
Co-authored-by: Henry Hsu <hhsu0219@gmail.com>
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
Co-authored-by: Jamie Vigliotta <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Overlay-related fixes
- Prevent navigation when a folder's grid or list view is displayed in
an overlay;
* Overlay-related fixes
- Get rid of theme-based special overlay coloring that was making the
overlay hard to use;
- Add margin to `l-overlay-large` to make it clearer that user is in an
overlay when interacting with that view;
- Refinements to colors and layout in About screens;
* Stub in static HTML for Timestrip Activity Inspection
- Added static markup with placeholder values and display logic;
- Refined approach for Links;
* Refactor duration formatting
* Display activity name when it's available
* Don't use indices for keys
* Don't show properties with no labels
* unit tests for inspector styles feature
* add mock capability for local storage
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Styling for plot limits and colors
* Updates to limit provider and css
* Change limits related CSS "*--upper" and "*--lower" to "*--upr" and
"*--lwr" for better parity with legacy naming;
* Refactor limit class to util
* Use new classes for sine wave generator for red-low and yellow-high
* Added modifier classes for right and below-aligned labels;
* Prevent label overlap of limits as much as possible
* Add border colors to limit labels for better visual ties to their lines
* Add documentation for limit level specification API change
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Create and store image data into new domain object of type 'notebookSnapshotImage'
* Reduced thumbnail size to 30px
* Image migration script for old notebooks.
* Saves thumbnail image on notebook instead of new object.
* Update notebook automatically when modified by another user
* Don't persist selected and default page and section IDs on notebook object
* Fixing object synchronization bugs
* Adding unit tests
* Synchronize notebooks AND plans
* Removed observeEnabled flag
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* Changed text of form labels;
* Corrected case of "Location" in Duplicate action;
* changed from objects.mutate to objects.save for duplicate action name change
* handling cancel of move
Co-authored-by: charlesh88 <charles.f.hacskaylo@nasa.gov>
* Revert "upgrade to webpack5 (#3871)" (#3907) (#3908)
* [Navigation Tree] Fix composition on closed folders and scrolling for items NOT in tree (#3920)
* Update package.json version and version documentation to include tags for npmjs
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
* Updates to the sprint cycle and end of sprint release process
* Adds reviewer checklist item for labelling an issue as a bug
* Update Cycle doc with test process changes.
* Update static.md references, add Issue templates
* Updated criticality definition
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: John Hill <jchill2.spam@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* When a mutation is requested, the LegacyObjectAPIInterceptor triggers a second mutatation request - ensure that the model for this 2nd request has some diff from the current model before saving the object.
Co-authored-by: Andrew Henry <akhenry@gmail.com>
- `pointer-events: none` added to `c-compass` wrapper (which was
blocking the image from catching mouse events), and
`pointer-events: all` added to `c-direction-rose` element;
- Unit tested locally in main view and both types of layouts;
- Fixed indention spacing in file;
* Adds play and pause functionality for plots (not for legacy plots)
* Add time conductor sync gesture to actions. Also fix status css.
Co-authored-by: charlesh88 <charles.f.hacskaylo@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Dynamic sizing for compass rose based on image size
- Compass rose now sizes and positions proportionally to the containing
image, with min and max sizes;
- Refactored computed `compassDimensionsStyle` as
`sizedImageDimensions` for reusability;
- Tweaked sizing of compass ordinals text and North arrow for better
legibility;
- Minor tweaks to element positioning and opacity for better legibility;
- TODO: add unit tests;
* Fix linting and code style
- Fixed lint errors;
- Better variable names;
* Address comments from PR #3826 review:
- Renamed `compassRoseSizing` to `compassRoseSizingClasses` and fixed
function logic;
- Fixed line breaks for code style;
* [NIRVSS] Encode imagery metadata into image file names
* added image name metadata to example.imagery plugin.
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* added durations to conductor history
* removing commented out moment import
* removing unneccary const
* little change
* reusing code
* addressing pr comments, change 24 hours to one day :) and some formatting issues
* better formatting and deduping
* name change
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* Implemented search in couch provider
* Promises, not await
* Batch requests
* Only batch if > 1
* Remove legacy Couch adapter
* Cleaned up couch request batching code
* Added test cases
* Code cleanup
* Changes to new and legacy objects API to remove redundant persists due to mutation of modified and persisted timestamps
* Cleaned up couch unit tests
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* [#3789] Don't observe objects if they are already mutable objects. Add some null checks.
* Don't destroy mutable in Selection.js if it wasn't created in that context.
* Remove * listeners and add null checks
* Don't delete _observers and _globalEventEmitters on $destroy. Pop all items off the _observers list for a mutable domain object.
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* "Import as JSON" dialog is not intuitive #3761
* Fixed styling in Angular form builder
- Fixed select file button;
- Fixed required asterisk color in hint text;
- Updated markup and refined CSS selector;
Co-authored-by: charlesh88 <charles.f.hacskaylo@nasa.gov>
* WIP: added color, was not sure correct sass variable, charles... take it from here!
* adding charles name to the comment for posterity
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
* heading, sun heading, and camera pan are all absolute directions
* removing roll and pitch keys as they will not be necessary
* proofing against empty historical or realtime ids from config
* adding checks in imagerylayout for missing properties
Co-authored-by: Jamie Vigliotta <jamie.j.vigliotta@nasa.gov>
* added new spacecraftPosition keys and changed old spacecraft keys to spacecraftOriention keys, updated how freshness is determined
* due to tests, added some checks for missing related telemetry before acting on it
* lint fixes
* pr comments, change simple if to Boolean
* checking if search aborted before aggregating search results, which calls getOriginalPath, which calls more gets
* removing erroneous abort signal check
* fix flexible-layout bug
* abstract element item from elements pool
* improve dragging of elements pool
* better dragover handling in elements pool
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.com>
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* added new spacecraftPosition keys and changed old spacecraft keys to spacecraftOriention keys, updated how freshness is determined
* due to tests, added some checks for missing related telemetry before acting on it
* lint fixes
* pr comments, change simple if to Boolean
* Plan view final sanding for Build 4
- Removed unused selector;
- Changed class pointer for "no-activites" labels, refined text;
* Plan view final sanding for Build 4
- Removed unused selector;
- Changed class pointer for "no-activites" labels, refined text;
* adding first triggers for aborting search
* adding abort capabilities to the path a search request takes through the code
* switching empty args from null to undefined
* adding abortSignal to couchdb provider request function
* minor syntax tweak
* fixing accidental change of code
* simplifying the assignment of fetch options
* add finally to search promises to delete abort controller just in case it is still there
* passing signal in to provider.get not getProvider
* moving the couchdb doc creation out of the argument for request
* removing console log for aborted search error
* lint fix
* adding interceptors to objects.search
* removing the options object and replacing with abort signal
* removing unused variable leftover
* had accidentally removed stringifying the body of the request if present... added back in
* created an applyGetInterceptors function for search and get to use
* created an applyGetInterceptors function for search and get to use
* fixed bug that our TESTS FOUND!!!!
* Time Strip styling WIP
- Plan activity rects now don't use corner radius if smaller than the
radius, and use a minimum width of 1;
- Visual refinements to time axis and swimlanes;
- Refactored CSS-related class names and file `swim-lane` to `swimlane`;
* Compute row span dynamically
* Remove activities only in the current plan when refreshing
* Time Strip styling WIP
- Refinement and consolidation of CSS between c-plan and c-timeline;
- CSS cleanups;
* Time Strip styling WIP
- Added calculated activity text coloring based on background fill
color;
* Fix timestrip time bounds syncing
* Unlisten for bounds
* Update name of css file
* Adds test for time system axis in timestrip
Co-authored-by: Joshi <simplyrender@gmail.com>
* Use mutable object for plans so that they can sync even in time strip views
Allow the name of couch search folder to be configurable
* Move observing of couchdb changes to the _toMutable function
* Fix unit tests
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
* Initial commit of plot refactor for vuejs
* Use es6 classes instead of using extend
* Use classList api to add and remove classes
* Remove angular specific event mechanisms
* Refactor plot legend into smaller components
* Refactor moving config into MctPlot component. Fix Legend issues.
* Refactor XAxis and YAxis into their own components
* Remove commented out code
* Remove empty initialize method
* Fix grid lines and initialize function revert.
* Check that plots views are available only to domainObjects that have range and domain
* Make css class a computed property
* Remove unnecessary legacyObject conversion
* Remove comments and commented out code
* Remove use of private for vue methods
* Remove console logs
* Fixes Y-axis ticks display
* Add plots and plans to the time strip view
* Adds stacked plots and overlay plots
* Fix css for stacked plots
* Disable Vue plots
* Rename Stacked plot item component
* Make the time axis a component
Ensure plans and timelines use the time axis component and it is displayed correctly
ensure plots don't display specific controls when in compact mode
* Add missing file
* Revert change to state generator metadata
* Address Review comment: Remove unnecessary event emitted
* Address review comments: Add a note about why nextTick is needed
* Display time systems in time strip view
Update look and feel (css)
* Fix bug with legend when multiple plots are being displayed
* Don't show action buttons for stacked plots
* Changes to plan view to render as a css grid
* Change LinearScale to a class
* Remove duplicated comment
* Adds missing copyright info
* Revert change to stackedplotItem
* Styling for Timestrip view WIP
- Significant mods to markup and CSS to use CSS grid;
- CSS class names changed;
* Styling for Timestrip view WIP
- Temp mods to illustrate design desires for the appearance of the time
axis;
* Layout changes for plan in timestrip view
* Increase style height to match number of stacked plot items
* Fix ticks
* Fix removal of activities
* Remove event listeners on destroy
* Styling for Timestrip view WIP
- VERY WIP trying to make the plan component work properly when dropped
into a Timestrip view, lots of badness that needs to be fixed;
- Refined classes in acivity bars to differentiate between the rect and
its text;
* Show Vue plots only in timestrip view.
Reorder and Remove now works for timestrip objects
* Make swim lanes a component to be reused by time strip and plan views
Rewrite svg rendering to use javascript rather than d3.
Write a prototype of foreign object for svg to render text
* Don't show left and right edges when start or end is out of bounds
* Descriptive name for Plan views
* Adds plan icon and name
* Fixes linting issues
* Adds basic tests
* Fixes broken test.
* Adds new test
* Fix linting errors. Adds tests
* Adds tests
* Adds tests for stacked plots
* Adds more tests
* Removes fdescribe
* Adds tests for y-axis ticks
* Tests for addition of series to plots
* Adds more tests
* Adds cursor guides test
* Adds tests for interceptors
* Adds more plots tests for x and y scale
* Use config store
* Adding goToOriginalAction tests
* Fix tests for plan and time strip views
* Fixes height of SVG
* Fixes broken tests
* Address review comments: remove view options API change.
* Remove commented out code
* Fix tests
* Use the clientWidth of the plan if it's available
* Account for the width of labels in the client width
* Remove unnecessary test code
Co-authored-by: charlesh88 <charlesh88@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Adds a compass rose component showing spacecraft and camera pointing direction in images, as well as sun location.
* Adds a "heads up display" component that shows heading at the top of images, as well as sun direction
* Adds freshness indicators for spacecraft and camera position
Co-authored-by: Jamie Vigliotta <jamie.j.vigliotta@nasa.gov>
Co-authored-by: David Tsay <david.e.tsay@nasa.gov>
Co-authored-by: charlesh88 <charlesh88@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: charlesh88 <charles.f.hacskaylo@nasa.gov>
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
* Implements ObjectAPI changes to refresh objects when an update is received from the database.
* Populates a virtual folder of plans from CouchDB
* Fixes bug with supportsMutation API call parameters
* MCT-3528: Add Condition Manager changes
its been smoke tested
* Fix bounds getter and amend unit test
* Change fdescribe back to describe
* [Object API] add object provider search (#3610)
* add search method to object api
* use object api search
* do not index objects that have a provided search capability
* provide indexed search for objects without a search provider
* Upgrades to eslint-plugin-vue 7.5.0 (#3685)
* Preparing for sprint 1.6.2 (#3663)
* [NonEditable Folder Plugin] Default Install, Browse Bar Update, StyleGuide Use (#3676)
* default noneditable folder plugin, change styleguide folders to uneditable folder types, browse bar object name no longer input box if not createable
* moved plugin to mct.js instead of index.html
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
* Fixes [Flexible Layout] bug with composition (#3680)
* fix delete and composition load
* remove unused remove action
* remove star listener and use computed property
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.com>
* Notebook saved link (#2998)
* https://github.com/nasa/openmct/issues/2859
* create and store link to default notebook in storage and pass it to notification.
* [Notebook] Add link to notebook inside 'Saved to Notebook' notification #2860
* Added custom autoDismissTimeout for into notifications.
* Backwards compatibility fix for old notebook model without link in metadata.
* lint fixes
* added JS Doc description for API changes + changed property names to appropriate function.
* fixed bug due to merging.
* fixed url update loop
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.com>
Co-authored-by: Nikhil <nikhil.k.mandlik@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Initial commit of plot refactor for vuejs
* Use es6 classes instead of using extend
* Use classList api to add and remove classes
* Remove angular specific event mechanisms
* Refactor plot legend into smaller components
* Refactor moving config into MctPlot component. Fix Legend issues.
* Refactor XAxis and YAxis into their own components
* Remove commented out code
* Remove empty initialize method
* Fix grid lines and initialize function revert.
* Check that plots views are available only to domainObjects that have range and domain
* Make css class a computed property
* Remove unnecessary legacyObject conversion
* Remove comments and commented out code
* Remove use of private for vue methods
* Remove console logs
* Fixes Y-axis ticks display
* Adds stacked plots and overlay plots
* Fix css for stacked plots
* Disable Vue plots
* Rename Stacked plot item component
* Address Review comment: Remove unnecessary event emitted
* Address review comments: Add a note about why nextTick is needed
* Fix bug with legend when multiple plots are being displayed
* Change LinearScale to a class
* Remove duplicated comment
* Adds missing copyright info
* Revert change to stackedplotItem
* Adds basic tests
* Fixes broken test.
* Adds new test
* Fix linting errors. Adds tests
* Adds tests
* Adds tests for stacked plots
* Adds more tests
* Removes fdescribe
* Adds tests for y-axis ticks
* Tests for addition of series to plots
* Adds more tests
* Adds cursor guides test
* Adds tests for interceptors
* Adds more plots tests for x and y scale
* Use config store
* Adding goToOriginalAction tests
* Modified tests to increase coverage, and added teardown for application router
* Fixed linting issues
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* moved nav up arrow down one tree item and updated icon
* cleaned up css to be more targeted for up arrow
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
Co-authored-by: charlesh88 <charlesh88@gmail.com>
* https://github.com/nasa/openmct/issues/2859
* create and store link to default notebook in storage and pass it to notification.
* [Notebook] Add link to notebook inside 'Saved to Notebook' notification #2860
* Added custom autoDismissTimeout for into notifications.
* Backwards compatibility fix for old notebook model without link in metadata.
* lint fixes
* added JS Doc description for API changes + changed property names to appropriate function.
* fixed bug due to merging.
* fixed url update loop
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* fix delete and composition load
* remove unused remove action
* remove star listener and use computed property
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.com>
* default noneditable folder plugin, change styleguide folders to uneditable folder types, browse bar object name no longer input box if not createable
* moved plugin to mct.js instead of index.html
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
* add search method to object api
* use object api search
* do not index objects that have a provided search capability
* provide indexed search for objects without a search provider
* new non-edtiable folder plugin as well as updates for folder views to accept this type
* tests for new plugin
* remove fdescribe
* correcting a test expectation
* added a constnats file for folder view types
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
Changes how object mutation works behind the scenes in order to keep objects in sync automatically when their model changes.
* The way that objects are mutated and observed has not changed, openmct.objects.mutate and openmct.objects.observe should still be used in the same way that they were before.
* Behind the scenes, domain objects that are mutable are wrapped in a new MutableDomainObject that exposes mutator and observer functions that allow objects to be mutated in such a way that all instances can be kept in sync.
* It is now possible to retrieve MutableDomainObjects from the API, instead of regular domain objects. These are automatically updated when mutation occurs on any instance of the object, replacing the need for "*" listeners. Note that the view API now provides objects in this form by default. Therefore, you do not need to do anything differently in views, the domain objects will just magically keep themselves up to date.
* If for some reason you need to retrieve an object manually via openmct.objects.get (you should ask why you need to do this) and you want it to magically keep itself in sync, there is a new API function named openmct.objects.getMutable(identifier). Note that if you do this you will be responsible for the object's lifecycle. It relies on listeners which must be destroyed when the object is no longer needed, otherwise memory leaks will occur. You can destroy a MutableDomainObject and its (internal) listeners by calling openmct.objects.destroyMutable(mutableDomainObject). Any listeners created by calls to openmct.objects.observe need to be cleaned up separately.
* If the composition of a MutableDomainObject is retrieved using the Composition API, all children will be returned as MutableDomainObjects automatically. Their lifecycle will be managed automatically, and is tied to the lifecycle of the parent.
Any MutableDomainObject provided by the Open MCT framework itself (eg. provided to view providers by the View API, or from the composition API) will have its lifecycle managed by Open MCT, you don't need to worry destroying it.
* Throttle conductor updates
* Tweak to animation steps
- Changed `steps(12)`` to 15 to align better with clock index positions;
Co-authored-by: charlesh88 <charlesh88@gmail.com>
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
* passing click and context click on tree item down to object label, making the whole tree item interactive
* removed unnecessary code
* WIP: removing propagation prop from view control and just stopping all propagation
* capturing click on tree item and then calling the click handler on objectLabel, this prevents multiple events and handles all clicks in the tree-item
* removing unnecessary ref
* ignoring clicks for view control so it can handle them itself
* made view control class a constant
* replaced class-based checks with ref-based checks
* removing old leftover code
* WIP
* Reverting some files
* reverting
* using type from model, instead of passing in separately
* reverting to remove query lite from search aggregator, as it is no longer necessary
* removing erroneous properties from legacy search results
* removed unnecessary parameters for type since it is included in the model and we have acces too that
* missed one
* removed empty space
* removed unneccessary code
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
* add ability to pass onDestroy callback to menu api show
* fix lint issues
* remove fdescribe
* rename event and variables to contextClickActive
* rename variable to active
* Sanding and polishing CSS related to context-click visual feedback
- Changed CSS `border` approach to `box-shadow` to avoid jumping;
- Removed unwired code and CSS styles for Folder grid and list views;
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: charlesh88 <charlesh88@gmail.com>
* Don't apply styles on destroy as destroy should not have any side effects
* Don't show undefined if trigger for condition is not available yet
* Force recalculation of condition result if telemetry is removed
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
- Moved CSS rule that was pushing the font style control to the right
side of the Inspector to `l-shell__toolbar` rule definition;
- Fixed `menus-to-left` CSS rule and applied to font size and style
menu controls;
- Added a new `menus-no-icon` style for menus that don't have icons,
applied to font size and style menu controls;
* Prevent copy and move actions for non creatable objects
* Remove unneeded code
* Remove prototype typo
* Allow duplicating an object only if it is creatable
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
* WIP: added new move action plugin, added to default plugins in mct.js
* WIP: removed old move action and references, added new root action, working, needs tess
* added tests for move action
* removing focused tests
* WIP
* using composition collection now, optimized some calls
* removed test for removed function
* minor spec change, format only
* updated for new action registration and 3 dot
* removing comments
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* Unable to edit Notebooks (Firefox) #3534
Unable to take a snapshot - snapshot dropdown not working #3533
* Navigating to a Notebook snapshot not working #3538
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* WIP: refactoring legacy dulicate action
* WIP: debugging duplicate duplicates...
* WIP: fixed duplicate duplicates issue
* added unit tests
* removing old legacy copyaction and renaming duplicate action
* removing fdescribe
* trying to see if a done callback fixes testing issues
* fixed tests
* testing autoflow tests on server
* tweaked autoflow tests to stop failing
* minor updates for new 3 dot menu
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
- Increased opacity of `c-icon-button` labels;
- Fixed CSS selector targeting no-icon menu items;
- Hide overflow in `c-so-view` header element to prevent icons extending
outside very small layout frames;
* [Notebook] new entries on brand new notebook not rendered #3488
* Refactored code to 'mutateObject' from one place only, add page to newly created section immediately, update entries copy then call mutate to update it inside domainObject.
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* Ensure that overlap checking only looks at activities within it's own group. This is done by assuming that any rows less than a group's starting row belong to another group.
Observe for changes to a plan and update the plan view accordingly.
* Address review comments
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
* Fairly extensive refactoring to fix layout in Safari for VERVE #266
- VERY WIP at this time!
- Many instances of `height: 100%` converted or amended to include
`flex: 1 1 auto`;
- Some high-use containers like `c-so-view__object-view` converted to use
flex layout;
- Views fixed generally for sub-object view, and specifically for
Conditionals, Folder grid view and Imagery;
- Imagery background image holder converted to use absolute positioning;
- TODO: Notebook has a problem where the side nav pane isn't overlaying
in Safari - it's a JS thing, c-drawer--push isn't be replaced with
c-drawer--overlays as it should;
* CSS and markup refactoring to support addition of 'suspect' telemetry
- Remove commented code;
* added resize observer for FIRST load of mainTree
* new Promise driven height calculation test
* cleaning up code, sticking with promise height caclcuations
* more cleanup
* returning from the initialize function
* working proto for font size
* wip
* Font styling
- Base classes for font-size and font;
- WIP!
* working data attribute for fontsize
* Font styling
- Add `js-style-receiver` to markup, refine style targeting JS for
better application of styles;
- Refinements to font and size CSS;
- WIP!
* Font styling
- Redo CSS to use `data-*` attributes;
- New `u-style-receiver` class for use as font-size and font-family CSS
selector target;
- New `js-style-receiver` class for use as JS target by ObjectView.vue;
- New classes added to markup in all Open MCT views;
- Changed font-size values from 'is-font-size--*' to just the number;
- Some refinement to individual views to account for font-sizing
capability;
- Removed automatic font-size 13px being set by SubobjectView.vue;
- WIP!
* working mixed styles
* Font styling
- Added `u-style-receiver` to TelemetryView.vue;
- Added `icon-font-size` to Font Size dropdown button;
- TODO: better font-size icon;
* working font-family
* Font styling
- Art for `icon-font-size` glyph updated;
- Redefined glyph usage in some Layout toolbar buttons;
- Updated font-size and font dropdown menus options text;
* Font styling
- Refined font-size and font dropdown values;
- Fixed toolbar-select-menu.vue to remove 'px' from non-specific option
return;
* dont allow font styling on layouts that contain other layouts
* fix lint warning
* add sizing row
* fix bug with column width sizing
* fix bug with header style
* add saved styles inspector view
* WIP
* add vue component for selector
* WIP styles manager to communicate between vue components
* WIP saving and persisting styles
* no duplicate styles prevention
* fix props syntax
* WIP can apply conditional styles
* static styles do not work yet
* display border color in saved styles swatch
* allow deleting styles except default style
* WIP apply static style works but also to layout...
* prevent additional StylesView from being created
* delete style message
* change save order
* move applystyle to selector component
* rename for consistency
* naming refactor
* add style description
* update style properties only if they exist and do not erase properties
* refactor singleton usage
refactor save method
* show save and delete only on hover
* do not show delete icon if not in edit mode
* normalize styles before saving
prevent apply style if conditional and static styles are simultaneously selected
* remove default style
tweak selector display
* allow conditional and static styles to have saved style applied
limit saved styles to 20
* refactor styles manager
remove openmct dependency
use provide/inject
* resolve merge conflicts
* lint fix
* reorganize styles
* add font style editor to styles view
* save and display border correctly in saved styles view
* WIP add font styling controls to inspector styles view
* add font constants
* WIP refactor to provide reactive props
fix locked for edit
* WIP display consolidated font styles for selection in editor
* WIP font styles saved to layout
* WIP persisting font styles from inspector works
* fix styleable check
* move logic up to stylesview because save is two part
* apply font style to thumb
* there can be only one
* show font style for native views
* linting fix
* push stylesManager work to StylesView
* move method to computed
* move constant definition outside of function call
* Styling for saved styles functionality WIP
- Simplified and removed unnecessary markup;
- Standardized style applied to saved style element and toolbar control;
- Removed saved style expand arrow and description, replaced with item
title / tooltip approach;
- Standardized width of `c-style-thumb` element;
- Moved font size and style controls to the designed location;
* Styling for saved styles functionality WIP
- Layout and CSS normalization between style editor control and saved
style preview element;
- Control alignment refined;
- Moved font size and style controls to the designed location;
* Styling for saved styles functionality WIP
- Update font size icon art to normalize size;
- Sanding, tweaking, alignin and layout in style controls area of
Inspector;
* Styling for saved styles functionality WIP
- Hide the font size and style menu buttons unless the user is editing;
* remove font controls from toolbar
* turn styles tab into multipane element
* lint fix
* no font style should not be viewed as non-specific
* delete saved style by index not style
* cleanup
* view and inspector view updates on initial font change
* revert computed back to method
* set initial height
* fix test after removing 2 buttons from toolbar
* fix hidden lint error
* fix lint
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
Co-authored-by: charlesh88 <charlesh88@gmail.com>
* Notebook fixes for NT10 'click-to-edit entry'
- Hovering over entries now displays a subtle background change, and
only displays the 'inline input' look when clicked into;
- Changed default styling and behavior to not apply default text
content: new entries now start with a blank entry, and do not include
'placeholder' formatting;
- Refactored styles associated with `c-input-inline`, `c-ne__input` and
`reactive-input` mixin;
- New mixin `inlineInput`;
- Removed unused CSS classes, general cleanups;
* fixed defaultText as blank issue and some cleanup
* Update _mixins.scss
- Remove commented code;
Co-authored-by: Nikhil Mandlik <nikhil.k.mandlik@nasa.gov>
* [Tables] Object names should appear in tables #3312
* updated tests to include name header.
* fixed lint issue.
* Removed Name from data.
* renamed 'addColunmName' to 'addNameColumn'.
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* added new navigation method for tracking, lots of optimizations
* updated indicator logic, tweaked objectPath/navigationPath, removed old code
* added temporary ancestors variable to be used while building new tree ui during navigation
* removed observer for ancestors, all handled in composition watch now
* updates from PR comments
* fixing testing errors
* checking for older format of saved path, update if old
* styles for Subobjects that can't be persisted should be saved on the container/layout
* Add tests for suboject styles that should be saved on the display layout
* [Notebook] new notebook entry causes console error #3440
* using 'makeKeyString' to compare notebook identifiers
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
* add marked rows and total rows in tables
* Styling for table row counts addition
- Main styles for new `.c-table-indicator` and elements;
- Refined main layout spacing;
- Layout for table footer elements;
- Hover behavior for footer when table in Display Layout;
* Styling for table row counts addition
- Refined `.c-filter-indication` styles;
- Refined `.c-table-indicator` styles;
- Added dynamic tooltips for total and marked rows count elements;
* fix lint issues
Co-authored-by: charlesh88 <charlesh88@gmail.com>
* Strip mct namespace from ids when getting models from cache
* Revert PersistenceCapability to use legacy code
Enforce empty namespace for LegacyPersistenceAdapter for new object providers
* Reverts change to caching provider
* CouchObject provider is registered with the mct space.
When saving objects via the persistence capability use the mct space to find the couchdb object provider
* block nav when "syncing" tree only, where most of the problems popped up
* not populating ancestors on navigation until current directory children loaded
Co-authored-by: Jamie Vigliotta <jamie.j.vigliotta@nasa.gov>
* Update persistence capability to use object api get
* Getting objects using the legacy object service provider will use the defaultSpace if necessary
* Sends new style object to the object API for save when calling it from legacy persistence adapter
* Adds createObject and deleteObject methods to LegacyPersistenceAdapter
* Fixes#3383 - Tree scrolling area should not display horizontal scroll.
* Includes various additional improvements to the object tree.
Co-authored-by: Jamie Vigliotta <jamie.j.vigliotta@nasa.gov>
* fix linting errors
* removing testing units
* WIP: stubbe in age in template, adding getAge function
* WIP: stubbed in age in template, dummy function to start
* added image age for realtime mode, ready for styling
* reverting unnecesarry telemetryview file changes, not needed for this issue
* checking for age tracking conditions on mount
* Image age styling and changes
- Cleaned up code in ImageryPlugin to use const instead of var, changed
image delay time into a const
* Image age styling and changes
- WIP!
- Layout changes for Imagery control-bar;
- New animation effect, WIP;
* Image age styling and changes
- Markup and CSS updates for Imagery view;
- Final layout for age indicator;
* parsing image timestamp in case it is a string
* using moment for human readable durations above 8 hours
* UTC based timesystem check
* reset "new" css class on image age when "time" updates
* WIP: debuggin weird imagery plugin issue for first selection of image in thumbnails
* fixing pause overwriting clicked images selection
* making isImageNew a computed value
* WIP: pr updates
* WIP: tabling PR edits to focus on lower hanging PR edits for testathon
* WIP
* overhaul of imagery plugin logic for optimization PLUS imagery age
* adding next/prev functionality to refactored plugin
* added arrow left and right keys to navigate next and previous
* added arrow key scrolling and scrolling thumbnail into view and hold down scrolling
* adding in missing class
* component based key listening, PR updates
* refactor to use just imageIndex to track focused image, utilized more caching, PR comment edits
Co-authored-by: David Tsay <david.e.tsay@nasa.gov>
Co-authored-by: charlesh88 <charlesh88@gmail.com>
* Fixes#3268
- Moved `pointer-events: none` to apply to proper element in table and
qualified selector to only apply when the table is within a layout
frame;
* Tabs View mods, fixes#3265
- Restored missing `c-object-label` markup to display type icon;
- Removed unused code;
- Refined alignment in `c-object-label` CSS;
* Fix mistakenly left port change
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
* (WIP) Adds Plan view and visualization of activities on different rows
* Updates to show activities in the right rows
* Improve algorithm to get activityRow for next activity
* When activities have names that are longer than their width, show the name outside the activity rectangle
* Remove Activity component as we don't need it right now
* Use canvas to draw activities instead of svg for performance
* Retain SVG version if needed
* Include text when calculating overlap
* Fix padding, text positioning
* Add colors for activities
* Fixed bug - Rectangle was shrinking as time passed
Draw using SVG
* Adds performance activities
* [WIP] Refactoring code to be more readable
* Fix issues with activity layout
* Adds draft for groups
* Adds x-offset for groups
* Draw a "now" marker for the canvas
* Fix formatting for the timeline
* Adds now line for the timeline
* Add ability to upload a plan json file.
* Add tests for the Plan view
* Fix issue with File Type checking
add resizing for timeline view plans
* Refactor code to be more readable
* Fix tests that are failing on circleCI
* Fix icon for timeline view
* update generic search compostion load to new version for testing
* logging
* removing logging adding check for undefined child
* reverting genericsearchprovider
* testing using object service instead of modelservice for search
* modified the animations for sliding children in and out to be more reliable, pr updates
* removing unneccessary code
* added location observers for ancetors in nav tree to handle ancestor deletions
* tracking current ancestors and handling deletions
* minor method name change on call
* removed redundant code
* check for two arguments to catch cases where key and namespace are sent in separately
* method will always receive two arguments, updated to reflect that
* removing object utils, no longer used
* Defers legacy mutation of object till after a creation happens.
* Fixes display layout to defer actions until objects.save returns
* Revert back to localStorage... big oops!
* added padding for loading indicator, updated no items logic and is loading logic, adding checks for loading to prevent navigation during loading
* updating style name that is used in more than one way
* moving indicator offset style to computed value
* lint fix
* allow change of x-axis metadata in single plots
* only enable x key toggle when appropriate
* prevent x-axis toggle if data does not exist for new x-axis key
* reset x-axis selection on bounds change
* no showing "no items" if still loading
* added additional no items variable to handle dictionary composition loading race conditions
* code cleanup
* more descript variable name
* WIP: testing backwards compatibility checks
* added new localstorage key for expanded tree node, delete old one if detected
* removing obsolete backwords compatibility code
* fixed going up the tree items not showing, going down the tree "ghost" image showing
* removing console log
* removed duplicate functionality
* revised new tree refactor, moved most of the logic to mct-tree instead of tree-item
* scrollTo set for sync, bug fixes, window resize handling
* removing console logs
* checking domainobject composition for length to verify children instead of composition object itself
* added scrollTo on load if in viewed objects directory
* loading, sync bug, search issues, opitmization
* initial PR review updates
* modified so search now uses the same container and virtual scroll
* eslint fix
* Adding new glyphs
- Multiple new glyphs cherrypicked from branch `add-new-glyphs-062320`;
* Styling for new-tree-refactor WIP
- WIP!
- New glyphs, markup changes in BrowseBar.vue;
- Refinements to tree items, WIP;
- TODO: move hard-coded CSS values into _constants, make
theme-compatible;
* Styling for new-tree-refactor WIP
- WIP!
- Added new `c-click-link` CSS class;
- Move tree sync button into tree pane area;
- Added named "controls" slot to pane.vue;
- _up and _down arrows now use visibility instead of opacity to prevent
accidental clicks;
* Styling for new-tree-refactor WIP
- WIP!
- Significant mods and simplification in pane.vue and assoc CSS for
expand/collapse functionality;
- Wait spinner when in tree: cleanups, simplification;
* More new glyphs, updated art
- New glyphs: icon-unlocked and icon-target;
- Updated art for icon-lock glyph;
* remove arrows for search results, hightlight "my items" correctly, added empty folder notic
* Styling for new-tree-refactor WIP
- WIP!
- Refinements to "empty" object element;
- Changed sync-tree icon glyph;
* Styling for new-tree-refactor WIP
- Nav up arrows now left-align properly;
* Styling for new-tree-refactor
- Significant consolidation and cleanups in mct-tree.scss;
- Normalize base and hover styles across new tree, legacy tree,
list-items (used in Notebook) and Folder List View;
- Class naming normalization, change `c-list-item__name-value` to
`c-list-item__name`;
- Add styling to override and remove `<a> outline: dotted` coming from
normalize-min;
- Removed too-broad `<a>` coloring in tables;
* Styling for new-tree-refactor
- Fix styles for Snow theme;
- Sync Maelstrom and Espresso themes;
- Remove too-broad `<a>` hover styling from global.scss;
- Disallow pointer-events on `is-navigated` object's label (click on
c-nav__down element still allowed);
* Styling for new-tree-refactor
- Normalizing status area expand/collapse iconography to match new
approach in panes;
* Adding new glyphs
- Added `icon-items-collapse` and `icon-items-expand`;
* Styling for new-tree-refactor
- Using new glyphs for items expand/collapse in Status area;
* dynamic item height for desktop and mobile views
* lint fixes
* updated addChild and removeChild functions as they were not working at all
* some PR comment updates!;
* Remove unneeded hard-coded CSS color property
* fixed issues when multiple root children exist, added plugin to change the name of the default root object
* removing "my other items" testing references
* linting fixes
* updating karma timeouts for testing purposes
* eslint fixes
* WIP: fixing linting issues
* updating for testing
* set root object provider to update root registry if called more than once
* tweaking tests so that it passes both locally and on the serve tests
* removing old css code preventing context clicks on active menu items
* fixing testing errors
* backwards compatible storage fix
Co-authored-by: charlesh88 <charlesh88@gmail.com>
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
* Fixes for NIRVSS UI spectral plot view
- Fixes Y axis 2 vertical line color in spectral plot;
* Fixes for NIRVSS UI spectral plot view
- Fixes Y axis 2 vertical line color in spectral plot;
- Tweaks to themed plot hash line colors;
- Fixed Plotly axis label title font sizing;
- Fixed Plotly axis vertical line color;
- Removed styling that caused `c-button` within
`h-local-controls--overlay-content` to be background on background
color;
* Stop evaluation of conditions when one evaluates to true
* Fix broken test
* Fixes broken tests
* Addresses review comments - Rename getResult to updateResult
* Rename condition getResult to updateResult
* Renames condition getResult to updateResult
* upgrade to ESLintv7, added overrides for rules violated
* removed overrides for spec files
* fixed no-prototype-builtins issues
* added rules for default-case-last, default-param-last, grouped-accessor-pairs, no-constructor-return, and added override for one violation
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
* Updated library versions
* Use Karma alternative spec loading
* Fixed memory leak in URLTimeSettingsSynchronizer
* Introduce mock DataTransfer object to fix issue with firefox headless
* make resetApplicationState return a promise
* Remove BeforeAll
* Do not throw an error if root returns no children
* Adding missing parameters to ES tests
* Fixed TransactionService bug
* bump test coverage up to 64%
* 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>
equal:[42,42]# Always generate version artifacts regardless of test failure https://discuss.circleci.com/t/make-custom-command-run-always-with-when-always/38957/2
echo "$TESTFILES" | circleci tests run --command="xargs npm run test:e2e:<<parameters.suite>>" --verbose --split-by=timings
- when:
condition:
equal:[42,42]# Always run codecov reports regardless of test failure https://discuss.circleci.com/t/make-custom-command-run-always-with-when-always/38957/2
steps:
- generate_e2e_code_cov_report:
suite:<<parameters.suite>>
- store_test_results:
path:test-results/results.xml
- store_artifacts:
path:test-results
- store_artifacts:
path:coverage
- store_artifacts:
path:html-test-results
- when:
condition:
equal:[42,42]# Always generate version artifacts regardless of test failure https://discuss.circleci.com/t/make-custom-command-run-always-with-when-always/38957/2
equal:[42,42]# Always run codecov reports regardless of test failure https://discuss.circleci.com/t/make-custom-command-run-always-with-when-always/38957/2
steps:
- generate_e2e_code_cov_report:
suite:full
- store_test_results:
path:test-results/results.xml
- store_artifacts:
path:test-results
- store_artifacts:
path:coverage
- store_artifacts:
path:html-test-results
- when:
condition:
equal:[42,42]# Always generate version artifacts regardless of test failure https://discuss.circleci.com/t/make-custom-command-run-always-with-when-always/38957/2
- run:sh src/plugins/persistence/couch/replace-localstorage-with-couchdb-indexhtml.sh#Replace LocalStorage Plugin with CouchDB
- run:npm run test:e2e:couchdb
- when:
condition:
equal:[42,42]# Always run codecov reports regardless of test failure https://discuss.circleci.com/t/make-custom-command-run-always-with-when-always/38957/2
steps:
- generate_e2e_code_cov_report:
suite:full#add to full suite
- store_test_results:
path:test-results/results.xml
- store_artifacts:
path:test-results
- store_artifacts:
path:coverage
- store_artifacts:
path:html-test-results
- when:
condition:
equal:[42,42]# Always generate version artifacts regardless of test failure https://discuss.circleci.com/t/make-custom-command-run-always-with-when-always/38957/2
equal:[42,42]# Always run codecov reports regardless of test failure https://discuss.circleci.com/t/make-custom-command-run-always-with-when-always/38957/2
equal:[42,42]# Always run codecov reports regardless of test failure https://discuss.circleci.com/t/make-custom-command-run-always-with-when-always/38957/2
- run:SHARD="$((${CIRCLE_NODE_INDEX}+1))"; npm run test:e2e:visual:<<parameters.suite>> -- --shard=${SHARD}/${CIRCLE_NODE_TOTAL}
- store_test_results:
path:test-results/results.xml
- store_artifacts:
path:test-results
- store_artifacts:
path:html-test-results
- when:
condition:
equal:[42,42]# Always generate version artifacts regardless of test failure https://discuss.circleci.com/t/make-custom-command-run-always-with-when-always/38957/2
<!--- Note: Please open the PR in draft form until you are ready for active review. -->
Closes <!--- Insert Issue Number(s) this PR addresses. Start by typing # will open a dropdown of recent issues. Note: this does not work on PRs which target release branches -->
### Describe your changes:
<!--- Describe your changes and add any comments about your approach either here or inline if code comments aren't added -->
### All Submissions:
* [ ] Have you followed the guidelines in our [Contributing document](https://github.com/nasa/openmct/blob/master/CONTRIBUTING.md)?
* [ ] Have you checked to ensure there aren't other open [Pull Requests](https://github.com/nasa/openmct/pulls) for the same update/change?
* [ ] Is this a [notable change](../docs/src/process/release.md) that will require a special callout in the release notes? For example, will this break compatibility with existing APIs or projects that consume these plugins?
### Author Checklist
* [ ] Changes address original issue?
* [ ] Tests included and/or updated with changes?
* [ ] Has this been smoke tested?
* [ ] Have you associated this PR with a `type:` label? Note: this is not necessarily the same as the original issue.
* [ ] Have you associated a milestone with this PR? Note: leave blank if unsure.
* [ ] Testing instructions included in associated issue OR is this a dependency/testcase change?
### Reviewer Checklist
* [ ] Changes appear to address issue?
* [ ] Reviewer has tested changes by following the provided instructions?
* [ ] Changes appear not to be breaking changes?
* [ ] Appropriate automated tests included?
* [ ] Code style and in-line documentation are appropriate?
@ -10,7 +10,7 @@ accept changes from external contributors.
The short version:
1. Write your contribution.
1. Write your contribution or describe your idea in the form of a [GitHub issue](https://github.com/nasa/openmct/issues/new/choose) or [start a GitHub discussion](https://github.com/nasa/openmct/discussions).
2. Make sure your contribution meets code, test, and commit message
standards as described below.
3. Submit a pull request from a topic branch back to `master`. Include a check
@ -18,12 +18,13 @@ The short version:
for review.)
4. Respond to any discussion. When the reviewer decides it's ready, they
will merge back `master` and fill out their own check list.
5. If you are a first-time contributor, please see [this discussion](https://github.com/nasa/openmct/discussions/3821) for further information.
## Contribution Process
Open MCT uses git for software version control, and for branching and
merging. The central repository is at
https://github.com/nasa/openmct.git.
<https://github.com/nasa/openmct.git>.
### Roles
@ -115,7 +116,8 @@ 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 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](https://github.com/nasa/openmct/issues/new/choose).
* 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.
@ -131,14 +133,15 @@ changes.
### Code Standards
JavaScript sources in Open MCT must satisfy the ESLint rules defined in
this repository. This is verified by the command line build.
JavaScript sources in Open MCT must satisfy the [ESLint](https://eslint.org/) rules defined in
this repository. [Prettier](https://prettier.io/) is used in conjunction with ESLint to enforce code style
via automated formatting. These are verified by the command line build.
#### Code Guidelines
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. 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
@ -158,21 +161,25 @@ The following guidelines are provided for anyone contributing source code to the
(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
1. Always use ES6 `Class`es and inheritance 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:
@ -181,19 +188,24 @@ The following guidelines are provided for anyone contributing source code to the
* 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
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. Unit Test specs should reside alongside the source code they test, not in a separate directory.
1. Organize code by feature, not by type.
eg.
```
```txt
- telemetryTable
- row
TableRow.js
@ -205,8 +217,10 @@ The following guidelines are provided for anyone contributing source code to the
plugin.js
pluginSpec.js
```
is preferable to
```
```txt
- telemetryTable
- components
TableRow.vue
@ -218,47 +232,10 @@ The following guidelines are provided for anyone contributing source code to the
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.
### 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 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
resolution.
* Tests which reflect details from software specifications.
* Tests which exercise edge or corner cases among inputs.
* Tests which verify expected interactions with other components in the
system.
#### 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
Commit messages should:
@ -294,25 +271,14 @@ these standards.
## Issue Reporting
Issues are tracked at https://github.com/nasa/openmct/issues.
Issues should include:
* A short description of the issue encountered.
* A longer-form description of the issue encountered. When possible, steps to
reproduce the issue.
* When possible, a description of the impact of the issue. What use case does
it impede?
* An assessment of the severity of the issue.
Issues are tracked at <https://github.com/nasa/openmct/issues>.
Issue severity is categorized as follows (in ascending order):
* _Trivial_: Minimal impact on the usefulness and functionality of the
software; a "nice-to-have."
* _(Unspecified)_: Major loss of functionality or impairment of use.
* _Critical_: Large-scale loss of functionality or impairment of use,
such that remaining utility becomes marginal.
* _Blocker_: Harmful or otherwise unacceptable behavior. Must fix.
* _Trivial_: Minimal impact on the usefulness and functionality of the software; a "nice-to-have." Visual impact without functional impact,
* _Medium_: Some impairment of use, but simple workarounds exist
* _Critical_: Significant loss of functionality or impairment of use. Display of telemetry data is not affected though. Complex workarounds exist.
* _Blocker_: Major functionality is impaired or lost, threatening mission success. Display of telemetry data is impaired or blocked by the bug, which could lead to loss of situational awareness.
## Check Lists
@ -320,18 +286,4 @@ The following check lists should be completed and attached to pull requests
when they are filed (author checklist) and when they are merged (reviewer
checklist).
### Author Checklist
1. Changes address original issue?
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
1. Changes appear to address issue?
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, Copyright (c) 2014-2024, 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.
# Open MCT [](http://www.apache.org/licenses/LICENSE-2.0)
# Open MCT [](http://www.apache.org/licenses/LICENSE-2.0) [](https://codecov.io/gh/nasa/openmct) [](https://percy.io/b2e34b17/openmct) [](https://www.npmjs.com/package/openmct) 
Open MCT (Open Mission Control Technologies) is a next-generation mission control framework for visualization of data on desktop and mobile devices. It is developed at NASA's Ames Research Center, and is being used by NASA for data analysis of spacecraft missions, as well as planning and operation of experimental rover systems. As a generalizable and open source framework, Open MCT could be used as the basis for building applications for planning, operation, and analysis of any systems producing telemetry data.
Please visit our [Official Site](https://nasa.github.io/openmct/) and [Getting Started Guide](https://nasa.github.io/openmct/getting-started/)
> [!NOTE]
> Please visit our [Official Site](https://nasa.github.io/openmct/) and [Getting Started Guide](https://nasa.github.io/openmct/getting-started/)
## See Open MCT in Action
Once you've created something amazing with Open MCT, showcase your work in our GitHub Discussions [Show and Tell](https://github.com/nasa/openmct/discussions/categories/show-and-tell) section. We love seeing unique and wonderful implementations of Open MCT!
Try Open MCT now with our [live demo](https://openmct-demo.herokuapp.com/).

## Building and Running Open MCT Locally
Building and running Open MCT in your local dev environment is very easy. Be sure you have [Git](https://git-scm.com/downloads) and [Node.js](https://nodejs.org/) installed, then follow the directions below. Need additional information? Check out the [Getting Started](https://nasa.github.io/openmct/getting-started/) page on our website.
(These instructions assume you are installing as a non-root user; developers have [reported issues](https://github.com/nasa/openmct/issues/1151) running these steps with root privileges.)
1. Clone the source code
1. Clone the source code:
`git clone https://github.com/nasa/openmct.git`
```sh
git clone https://github.com/nasa/openmct.git
```
2.Install development dependencies
2.(Optional) Install the correct node version using [nvm](https://github.com/nvm-sh/nvm):
`npm install`
```sh
nvm install
```
3.Run a local development server
3.Install development dependencies (Note: Check the `package.json` engine for our tested and supported node versions):
`npm start`
```sh
npm install
```
Open MCT is now running, and can be accessed by pointing a web browser at [http://localhost:8080/](http://localhost:8080/)
4. Run a local development server:
## 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.
```
npm start
```
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).
> [!IMPORTANT]
> Open MCT is now running, and can be accessed by pointing a web browser at [http://localhost:8080/](http://localhost:8080/)
Open MCT is built using [`npm`](http://npmjs.com/) and [`webpack`](https://webpack.js.org/).
## Documentation
@ -43,14 +53,24 @@ The clearest examples for developing Open MCT plugins are in the
[tutorials](https://github.com/nasa/openmct-tutorial) provided in
our documentation.
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).
> [!NOTE]
> 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/new/choose),
> [Starting a GitHub Discussion](https://github.com/nasa/openmct/discussions),
> or by emailing us at [arc-dl-openmct@mail.nasa.gov](mailto:arc-dl-openmct@mail.nasa.gov).
## Building Applications With Open MCT
## Developing Applications With Open MCT
Open MCT is built using [`npm`](http://npmjs.com/) and [`webpack`](https://webpack.js.org/).
For more on developing with Open MCT, see our documentation for a guide on [Developing Applications with Open MCT](./API.md#starting-an-open-mct-application).
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).
## Compatibility
This is a fast moving project and we do our best to test and support the widest possible range of browsers, operating systems, and NodeJS APIs. We have a published list of support available in our package.json's `browserslist` key.
The project utilizes `nvm` to maintain consistent node and npm versions across all projects. For UNIX, MacOS, Windows WSL, and other POSIX-compliant shell environments, click [here](https://github.com/nvm-sh/nvm). For Windows, check out [nvm-windows](https://github.com/coreybutler/nvm-windows).
If you encounter an issue with a particular browser, OS, or NodeJS API, please [file an issue](https://github.com/nasa/openmct/issues/new/choose).
## Plugins
@ -61,11 +81,15 @@ that is intended to be added or removed as a single unit.
As well as providing an extension mechanism, most of the core Open MCT codebase is also
written as plugins.
For information on writing plugins, please see [our API documentation](https://github.com/nasa/openmct/blob/master/API.md#plugins).
For information on writing plugins, please see [our API documentation](./API.md#plugins).
## Tests
Tests are written for [Jasmine 3](https://jasmine.github.io/api/3.1/global)
Our automated test coverage comes in the form of unit, e2e, visual, performance, and security tests.
### Unit Tests
Unit Tests are written for [Jasmine](https://jasmine.github.io/api/edge/global)
and run by [Karma](http://karma-runner.github.io). To run:
`npm test`
@ -74,51 +98,93 @@ The test suite is configured to load any scripts ending with `Spec.js` found
in the `src` hierarchy. Full configuration details are found in
`karma.conf.js`. By convention, unit test scripts should be located
alongside the units that they test; for example, `src/foo/Bar.js` would be
tested by `src/foo/BarSpec.js`. (For legacy reasons, some existing tests may
be located in separate `test` folders near the units they test, but the
naming convention is otherwise the same.)
tested by `src/foo/BarSpec.js`.
### Test Reporting
### e2e, Visual, and Performance Testing
When `npm test` is run, test results will be written as HTML to
`dist/reports/tests/`. Code coverage information is written to `dist/reports/coverage`.
Our e2e (end-to-end), Visual, and Performance tests leverage the Playwright framework and are executed using Playwright's test runner, [@playwright/test](https://playwright.dev/).
# Glossary
#### How to Run Tests
- **e2e Tests**: These tests are run on every commit. To run the tests locally, use:
```sh
npm run test:e2e:ci
```
- **Visual Tests**: For running the visual test suite, use:
```sh
npm run test:e2e:visual
```
- **Performance Tests**: To initiate the performance tests, enter:
```sh
npm run test:perf
```
All tests are located within the `e2e/tests/` directory and are identified by the `*.e2e.spec.js` filename pattern. For more information about the e2e test suite, refer to the [README](./e2e/README.md).
### Security Tests
Each commit is analyzed for known security vulnerabilities using [CodeQL](https://codeql.github.com/docs/codeql-language-guides/codeql-library-for-javascript/). The list of CWE coverage items is available in the [CodeQL docs](https://codeql.github.com/codeql-query-help/javascript-cwe/). The CodeQL workflow is specified in the [CodeQL analysis file](./.github/workflows/codeql-analysis.yml) and the custom [CodeQL config](./.github/codeql/codeql-config.yml).
### Test Reporting and Code Coverage
Each test suite generates a report in CircleCI. For a complete overview of testing functionality, please see our [Circle CI Test Insights Dashboard](https://app.circleci.com/insights/github/nasa/openmct/workflows/the-nightly/overview?branch=master&reporting-window=last-30-days)
Our code coverage is generated during the runtime of our unit, e2e, and visual tests. The combination of those reports is published to [codecov.io](https://app.codecov.io/gh/nasa/openmct/)
For more on the specifics of our code coverage setup, [see](TESTING.md#code-coverage)
## Glossary
Certain terms are used throughout Open MCT with consistent meanings
or conventions. Any deviations from the below are issues and should be
addressed (either by updating this glossary or changing code to reflect
correct usage.) Other developer documentation, particularly in-line
documentation, may presume an understanding of these terms.
| _plugin_ | A removable, reusable grouping of software elements. The application is composed of plugins. |
| _composition_ | In the context of a domain object, this term 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 immediately beneath it in a tree hierarchy. It is described in its model as an array of ids, providing a means to asynchronously retrieve the actual domain object instances associated with these identifiers. |
| _description_ | When used as an object property, this term refers to the human-readable description of a thing, usually a single sentence or short paragraph. It is most often used in the context of extensions, domain object models, or other similar application-specific objects. |
| _domain object_ | A meaningful object to the user and a distinct thing in the work supported by Open MCT. Anything that appears in the left-hand tree is a domain object. |
| _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 that can be converted to JSON without losing information, meaning it contains no methods. |
| _name_ | When used as an object property, this term refers to the human-readable name for a thing. It is most often used in the context of extensions, domain object models, or other similar application-specific objects. |
| _navigation_ | This term refers to the current state of the application with respect to the user's expressed interest in a specific domain object. For example, when 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. |
| _namespace_ | A name used to identify a persistence store. A running Open MCT application could potentially use multiple persistence stores. |
## Open MCT v2.0.0
Support for our legacy bundle-based API, and the libraries that it was built on (like Angular 1.x), have now been removed entirely from this repository.
For now if you have an Open MCT application that makes use of the legacy API, [a plugin](https://github.com/nasa/openmct-legacy-plugin) is provided that bootstraps the legacy bundling mechanism and API. This plugin will not be maintained over the long term however, and the legacy support plugin will not be tested for compatibility with future versions of Open MCT. It is provided for convenience only.
### How do I know if I am using legacy API?
You might still be using legacy API if your source code
- Contains files named bundle.js, or bundle.json,
- Makes calls to `openmct.$injector()`, or `openmct.$angular`,
- Makes calls to `openmct.legacyRegistry`, `openmct.legacyExtension`, or `openmct.legacyBundle`.
### What should I do if I am using legacy API?
Please refer to [the modern Open MCT API](https://nasa.github.io/openmct/documentation/). Post any questions to the [Discussions section](https://github.com/nasa/openmct/discussions) of the Open MCT GitHub repository.
## Related Repos
> [!NOTE]
> Although Open MCT functions as a standalone project, it is primarily an extensible framework intended to be used as a dependency with users' own plugins and packaging. Furthermore, Open MCT is intended to be used with an HTTP server such as Apache or Nginx. A great example of hosting Open MCT with Apache is `openmct-quickstart` and can be found in the table below.
| Repository | Description |
| --- | --- |
| [openmct-tutorial](https://github.com/nasa/openmct-tutorial) | A great place for beginners to learn how to use and extend Open MCT. |
| [openmct-quickstart](https://github.com/scottbell/openmct-quickstart) | A working example of Open MCT integrated with Apache HTTP server, YAMCS telemetry, and Couch DB for persistence.
| [Open MCT YAMCS Plugin](https://github.com/akhenry/openmct-yamcs) | Plugin for integrating YAMCS telemetry and command server with Open MCT. |
| [openmct-performance](https://github.com/unlikelyzero/openmct-performance) | Resources for performance testing Open MCT. |
| [openmct-as-a-dependency](https://github.com/unlikelyzero/openmct-as-a-dependency) | An advanced guide for users on how to build, develop, and test Open MCT when it's used as a dependency. |
* _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
immediately beneath it in a tree hierarchy. A domain object's composition is
described in its model as an array of id's; its composition capability
provides a means to retrieve the actual domain object instances associated
with these identifiers asynchronously.
* _description_: When used as an object property, this refers to the human-readable
description of a thing; usually a single sentence or short paragraph.
(Most often used in the context of extensions, domain
object models, or other similar application-specific objects.)
* _domain object_: A meaningful object to the user; a distinct thing in
the work support by Open MCT. Anything that appears in the left-hand
tree is a domain object.
* _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.)
* _name_: When used as an object property, this refers to the human-readable
name for a thing. (Most often used in the context of extensions, domain
object models, or other similar application-specific objects.)
* _navigation_: Refers to the current state of the application with respect
to the user's expressed interest in a specific domain object; e.g. when
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.)
* _namespace_: A name used to identify a persistence store. A running open MCT
application could potentially use multiple persistence stores, with the
The Open MCT team secures our code base using a combination of code review, dependency review, and periodic security reviews. Static analysis performed during automated verification additionally safeguards against common coding errors which may result in vulnerabilities.
### Reporting a Vulnerability
For general defects, please for a [Bug Report](https://github.com/nasa/openmct/issues/new/choose)
To report a vulnerability for Open MCT please send a detailed report to [arc-dl-openmct](mailto:arc-dl-openmct@mail.nasa.gov).
See our [top-level security policy](https://github.com/nasa/openmct/security/policy) for additional information.
### CodeQL and LGTM
The [CodeQL GitHub Actions workflow](https://github.com/nasa/openmct/blob/master/.github/workflows/codeql-analysis.yml) is available to the public. To review the results, fork the repository and run the CodeQL workflow.
CodeQL is run for every pull-request in GitHub Actions.
### ESLint
Static analysis is run for every push on the master branch and every pull request on all branches in Github Actions.
For more information about ESLint, visit https://eslint.org/.
### General Support
For additional support, please open a [Github Discussion](https://github.com/nasa/openmct/discussions).
If you wish to report a cybersecurity incident or concern, please contact the NASA Security Operations Center either by phone at 1-877-627-2732 or via email address soc@nasa.gov.
Open MCT Testing is iterating and improving at a rapid pace. This document serves to capture and index existing testing documentation and house documentation which no other obvious location as our testing evolves.
## General Testing Process
Documentation located [here](./docs/src/process/testing/plan.md)
## Unit Testing
Unit testing is essential part of our test strategy and complements our e2e testing strategy.
#### Unit Test Guidelines
* Unit Test specs should reside alongside the source code they test, not in a separate directory.
* 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.
#### Unit Test 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)
#### Unit Testing Execution
The unit tests can be executed in one of two ways:
`npm run test` which runs the entire suite against headless chrome
`npm run test:debug` for debugging the tests in realtime in an active chrome session.
## e2e, performance, and visual testing
Documentation located [here](./e2e/README.md)
## Code Coverage
It's up to the individual developer as to whether they want to add line coverage in the form of a unit test or e2e test.
Line Code Coverage is generated by our unit tests and e2e tests, then combined by ([Codecov.io Flags](https://docs.codecov.com/docs/flags)), and finally reported in GitHub PRs by Codecov.io's PR Bot. This workflow gives a comprehensive (if flawed) view of line coverage.
### Karma-istanbul
Line coverage is generated by our `karma-coverage-istanbul-reporter` package as defined in our `karma.conf.js` file:
```js
coverageIstanbulReporter:{
fixWebpackSourcePaths:true,
skipFilesWithNoCoverage:true,
dir:'coverage/unit',//Sets coverage file to be consumed by codecov.io
reports:['lcovonly']
},
```
Once the file is generated, it can be published to codecov with
The e2e line coverage is a bit more complex than the karma implementation. This is the general sequence of events:
1. Each e2e suite will start webpack with the ```npm run start:coverage``` command with config `webpack.coverage.mjs` and the `babel-plugin-istanbul` plugin to generate code coverage during e2e test execution using our custom [baseFixture](./baseFixtures.js).
1. During testcase execution, each e2e shard will generate its piece of the larger coverage suite. **This coverage file is not merged**. The raw coverage file is stored in a `.nyc_report` directory.
1. [nyc](https://github.com/istanbuljs/nyc) converts this directory into a `lcov` file with the following command `npm run cov:e2e:report`
1. Most of the tests focus on chrome/ubuntu at a single resolution. This coverage is published to codecov with `npm run cov:e2e:ci:publish`.
1. The rest of our coverage only appears when run against persistent datastore (couchdb), non-ubuntu machines, and non-chrome browsers with the `npm run cov:e2e:full:publish` flag. Since this happens about once a day, we have leveraged codecov.io's carryforward flag to report on lines covered outside of each commit on an individual PR.
### Limitations in our code coverage reporting
Our code coverage implementation has some known limitations:
The following is an evolving guide to troubleshoot CI and PR issues.
### Github Checks failing
There are a few reasons that your GitHub PR could be failing beyond simple failed tests.
* Required Checks. We're leveraging required checks in GitHub so that we can quickly and precisely control what becomes and informational failure vs a hard requirement. The only way to determine the difference between a required vs information check is check for the `(Required)` emblem next to the step details in GitHub Checks.
* Not all required checks are run per commit. You may need to manually trigger addition GitHub checks with a `pr:<label>` label added to your PR.
### Flaky tests
(CircleCI's test insights feature)[https://circleci.com/blog/introducing-test-insights-with-flaky-test-detection/] collects historical data about the individual test results for both unit and e2e tests. Note: only a 14 day window of flake is available.
### Local=Pass and CI=Fail
Although rare, it is possible that your test can pass locally but fail in CI.
### Reset your workspace
It's possible that you're running with dependencies or a local environment which is out of sync with the branch you're working on. Make sure to execute the following:
```sh
nvm use
npm run clean
npm install
```
#### Run tests in the same container as CI
In extreme cases, tests can fail due to the constraints of running within a container. To execute tests in exactly the same way as run in CircleCI.
```sh
// Replace {X.X.X} with the current Playwright version
// from our package.json or circleCI configuration file
- [Get rid of "extension category" concept.](#get-rid-of-extension-category-concept)
- [Reduce number and depth of extension points](#reduce-number-and-depth-of-extension-points)
- [Composite services should not be the default](#composite-services-should-not-be-the-default)
- [Get rid of views, representations, and templates.](#get-rid-of-views-representations-and-templates)
- [Reducing interface depth (The angular discussion)](#reducing-interface-depth-the-angular-discussion)
- [More angular: for all services](#more-angular-for-all-services)
- [Less angular: only for views](#less-angular-only-for-views)
- [Standard packaging and build system](#standard-packaging-and-build-system)
- [Use systemjs for module loading](#use-systemjs-for-module-loading)
- [Use gulp or grunt for standard tooling](#use-gulp-or-grunt-for-standard-tooling)
- [Package openmctweb as single versioned file.](#package-openmctweb-as-single-versioned-file)
- [Misc Improvements](#misc-improvements)
- [Refresh on navigation](#refresh-on-navigation)
- [Move persistence adapter to promise rejection.](#move-persistence-adapter-to-promise-rejection)
- [Remove bulk requests from providers](#remove-bulk-requests-from-providers)
- [Notes on current API proposals:](#notes-on-current-api-proposals)
- [[1] Footnote: The angular debacle](#1-footnote-the-angular-debacle)
- ["Do or do not, there is no try"](#do-or-do-not-there-is-no-try)
- [A lack of commitment](#a-lack-of-commitment)
- [Commitment is good!](#commitment-is-good)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
# Reducing interface depth (the bundle.json version)
## Imperative component registries
Transition component registries to javascript, get rid of bundle.json and bundles.json. Prescribe a method for application configuration, but allow flexibility in how application configuration is defined.
Register components in an imperative fashion, see angularApp.factory, angularApp.controller, etc. Alternatively, implement our own application object with new registries and it's own form of registering objects.
## Get rid of "extension category" concept.
The concept of an "extension category" is itself an extraneous concept-- an extra layer of interface depth, an extra thing to learn before you can say "hello world". Extension points should be clearly supported and documented with whatever interfaces make sense. Developers who wish to add something that is conceptually equivalent to an extension category can do so directly, in the manner that suites their needs, without us forcing a common method on them.
## Reduce number and depth of extension points
Clearly specify supported extension points (e.g. persistence, model providers, telemetry providers, routes, time systems), but don't claim that the system has a clear and perfect repeatable solution for unknown extension types. New extension categories can be implemented in whatever way makes sense, without prescribing "the one and only system for managing extensions".
The underlying problem here is we are predicting needs for extension points where none exist-- if we try and design the extension system before we know how it is used, we design the wrong thing and have to rewrite it later.
## Composite services should not be the default
Understanding composite services, and describing services as composite services can confuse developers. Aggregators are implemented once and forgotten, while decorators tend to be hacky, brittle solutions that are generally needed to avoid circular imports. While composite services are a useful construct, it reduces interface depth to implement them as registries + typed providers.
You can write a provider (provides "thing x" for "inputs y") with a simple interface. A provider has two or more methods:
* a method which takes "inputs y" and returns True if it knows how to provide "thing x", false otherwise.
* one or more methods which provide "thing x" for objects of "inputs y".
Actually checking whether a provider can respond to a request before asking it to do work allows for faster failure and clearer errors when no providers match the request.
## Get rid of views, representations, and templates.
Templates are an implementation detail that should be handled by module loaders. Views and representations become "components," and a new concept, "routes", is used to exposing specific views to end users.
`components` - building blocks for views, have clear inputs and outputs, and can be coupled to other components when it makes sense. (e.g. parent-child components such as menu and menu item), but should have ZERO knowledge of our data models or telemetry apis. They should define data models that enable them to do their job well while still being easy to test.
`routes` - a view type for a given domain object, e.g. a plot, table, display layout, etc. Can be described as "whatever shows in the main screen when you are viewing an object." Handle loading of data from a domain object and passing that data to the view components. Routes should support editing as it makes sense in their own context.
To facilitate testing:
* routes should be testable without having to test the actual view.
* components should be independently testable with zero knowledge of our data models or telemetry APIs.
Component code should be organized side by side, such as:
```
app
|- components
|- productDetail
| |- productDetail.js
| |- productDetail.css
| |- productDetail.html
| |- productDetailSpec.js
|- productList
|- checkout
|- wishlist
```
Components are not always reusable, and we shouldn't be overly concerned with making them so. If components are heavily reused, they should either be moved to a platform feature (e.g. notifications, indicators), or broken off as an external dependency (e.g. publish mct-plot as mct-plot.js).
# Reducing interface depth (The angular discussion)
Two options here: use more angular, use less angular. Wrapping angular methods does not reduce interface depth and must be avoided.
The primary issue with angular is duplications of concerns-- both angular and the openmctweb platform implement the same tools side by side and it can be hard to comprehend-- it increases interface depth. For other concerns, see footnotes[1].
Wrapping angular methods for non-view related code is confusing to developers because of the random constraints angular places on these items-- developers ultimately have to understand both angular DI and our framework. For example, it's not possible to name the topic service "topicService" because angular expects Services to be implemented by Providers, which is different than our expectation.
To reduce interface depth, we can replace our own provider and registry patterns with angular patterns, or we can only utilize angular view logic, and only use our own DI patterns.
## More angular: for all services
Increasing our commitment to angular would mean using more of the angular factories, services, etc, and less of our home grown tools. We'd implement our services and extension points as angular providers, and make them configurable via app.config.
As an example, registering a specific type of model provider in angular would look like:
If we wish to use less angular, I would recommend discontinuing use of all angular components that are not view related-- services, factories, $http, etc, and implementing them in our own paradigm. Otherwise, we end up with layered interfaces-- one of the goals we would like to avoid.
# Standard packaging and build system
Standardize the packaging and build system, and completely separate the core platform from deployments. Prescribe a starting point for deployments, but allow flexibility.
## Use systemjs for module loading
Allow developers to use whatever module loading system they'd like to use, while still supporting all standard cases. We should also use this system for loading assets (css, scss, html templates), which makes it easier to implement a single file deployment using standard build tooling.
## Use gulp or grunt for standard tooling
Using gulp or grunt as a task runner would bring us in line with standard web developer workflows and help standardize rendering, deployment, and packaging. Additional tools can be added to the workflow at low cost, simplifying the setup of developer environments.
Gulp and grunt provide useful developer tooling such as live reload, automatic scss/less/etc compilation, and ease of extensibility for standard production build processes. They're key in decoupling code.
## Package openmctweb as single versioned file.
Deployments should depend on a specific version of openmctweb, but otherwise be allowed to have their own deployment and development toolsets.
Customizations and deployments of openmctweb should not use the same build tooling as the core platform; instead they should be free to use their own build tools as they wish. (We would provide a template for an application, based on our experience with warp-for-rp and vista)
Installation and utilization of openmctweb should be as simple as downloading the js file, including it in your own html page, and then initializing an app and running it. If a developer would prefer, they could use bower or npm to handle installation.
Then, if we're using imperative methods for extending the application we can use the following for basic customization:
This packaging reduces the complexity of managing multiple deployed versions, and also allows us to provide users with incredibly simple tutorials-- they can use whatever tooling they like. For instance, a hello world tutorial may take the option of "exposing a new object in the tree".
```javascript
varmyApp=newOpenMCTWeb();
myApp.roots.addRoot({
id:'myRoot',
name:'Hello World!',
});
myApp.routes.setDefault('myRoot');
myApp.run();
```
# Misc Improvements
## Refresh on navigation
In cases where navigation events change the entire screen, we should be using routes and location changes to navigate between objects. We should be using href for all navigation events.
At the same time, navigating should refresh state of every visible object. A properly configured persistence store will handle caching with standard cache headers and 304 not modified responses, which will provide good performance of object reloads, while helping us ensure that objects are always in sync between clients.
View state (say, the expanded tree nodes) should not be tied to caching of data-- it should be something we intentionally persist and restore with each navigation. Data (such as object definitions) should be reloaded from server as necessary to restore state.
## Move persistence adapter to promise rejection.
Simple: reject on fail, resolve on success.
## Remove bulk requests from providers
Aggregators can request multiple things at once, but individual providers should only have to implement handling at the level of a single request. Each provider can implement it's own internal batching, but it should support making requests at a finer level of detail.
Excessive wrapping of code with $q.all causes additional digest cycles and decreased performance.
For example, instead of every telemetry provider responding to a given telemetry request, aggregators should route each request to the first provider that can fulfill that request.
# Notes on current API proposals:
* [RequireJS for Dependency Injection](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#requirejs-as-dependency-injector): requires other topics to be discussed first.
* [Arbitrary HTML Views](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#arbitrary-html-views): think there is a place for it, requires other topics to be discussed first.
* [Wrap Angular Services](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#wrap-angular-services): No, this is bad.
* [Bundle definitions in Javascript](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#bundle-declarations-in-javascript): Points to a solution, but ultimately requires more discussion.
* [pass around a dependency injector](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#pass-around-a-dependency-injector): No.
* [remove partial constructors](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#remove-partial-constructors): Yes, this should be superseded by another proposal though. The entire concept was a messy solution to dependency injection issues caused by declarative syntax.
* [Rename views to applications](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#rename-views-to-applications): Points to a problem that needs to be solved but I think the name is bad.
* [Provide classes for extensions](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#provide-classes-for-extensions): Yes, in specific places
* [Expose no third-party APIs](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#expose-no-third-party-apis): Completely disagree, points to a real problem with poor angular integration.
* [Register Extensions as Instances instead of Constructors](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#register-extensions-as-instances-instead-of-constructors): Superseded by the fact that we should not hope to implement a generic construct.
* [Nomenclature Change](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#nomenclature-change): Yes, hope to discuss the implications of this more clearly in other proposals.
* [Capabilities as mixins](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#capabilities-as-mixins): Yes.
* [Remove appliesTo methods](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#remove-applies-to-methods): No-- I think some level of this is necessary. I think a more holistic approach to policy is needed. it's a rather complicated system.
* [Revise telemetry API](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#revise-telemetry-api): If we can rough out and agree to the specifics, then Yes. Needs discussion.
* [Allow composite services to fail gracefully](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#allow-composite-services-to-fail-gracefully): No. As mentioned above, I think composite services themselves should be eliminated for a more purpose bound tool.
* [Plugins as angular modules](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#plugins-as-angular-modules): Should we decide to embrace Angular completely, I would support this. Otherwise, no.
* [Contextual Injection](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#contextual-injection): No, don't see a need.
* [Add New Abstractions for Actions](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#add-new-abstractions-for-actions): Worth a discussion.
* [Add gesture handlers](https://github.com/nasa/openmctweb/blob/api-redesign/docs/src/design/proposals/APIRedesign.md#add-gesture-handlers): Yes if we can agree on details. We need a platform implementation that is easy to use, but we should not reinvent the wheel.
# [1] Footnote: The angular debacle
## "Do or do not, there is no try"
A commonly voiced concern of embracing angular is the possibility of becoming dependent on a third party framework. This concern is itself detrimental-- if we're afraid of becoming dependent on a third party framework, then we will do a bad job of using the framework, and inevitably will want to stop using it.
If we're using a framework, we need to use it fully, or not use it at all.
## A lack of commitment
A number of the concerns we heard from developers and interns can be attributed to the tenuous relationship between the OpenMCTWeb platform and angular. We claimed to be angular, but we weren't really angular. Instead, we are caught between our incomplete framework paradigm and the angular paradigm. In many cases we reinvented the wheel or worked around functionality that angular provides, and ended up in a more confusing state.
## Commitment is good!
We could just be an application that is built with angular.
An application that is modular and extensible not because it reinvents tools for providing modularity and extensibility, but because it reuses existing tools for modularity and extensibility.
There are benefits to buying into the angular paradigm: shift documentation burden to external project, engage a larger talent pool available both as voluntary open source contributors and as experienced developers for hire, and gain access to an ecosystem of tools that we can use to increase the speed of development.
There are negatives too: Angular is a monolith, it has performance concerns, and an unclear future. If we can't live with it, we should look at alternatives.
* The [API](api/) document is generated from inline documentation
using [JSDoc](http://usejsdoc.org/), and describes the JavaScript objects and
* The [API](api/) uses inline documentation.
using [TypeScript](https://www.typescriptlang.org) and some legacy [JSDoc](https://jsdoc.app/). It describes the JavaScript objects and
functions that make up the software platform.
* The [Development Process](process/) document describes the
Open MCT software development cycle.
## Legacy Documentation
As we transition to a new API, the following documentation for the old API
(which is supported during the transtion) may be useful as well:
* The [Architecture Overview](architecture/) describes the concepts used
throughout Open MCT, and gives a high level overview of the platform's design.
* The [Developer's Guide](guide/) goes into more detail about how to use the
platform and the functionality that it provides.
* The [Tutorials](https://github.com/nasa/openmct-tutorial) give examples of extending the platform to add
functionality, and integrate with data sources.
* The [tutorial](https://github.com/nasa/openmct-tutorial) and [plugin template](https://github.com/nasa/openmct-hello) give examples of extending the platform to add
| __3__ | Per-sprint testing | Triage | | _Per-sprint testing*_ | Ship and merge sprint branch to master|
* If necessary.
@ -105,14 +105,20 @@ emphasis on testing.
that team may begin work for that sprint during the
third week, since testing and blocker resolution is unlikely
to require all available resources.
* Testing success criteria identified per issue (where necessary). This could be in the form of acceptance tests on the issue or detailing performance tests, for example.
* __Tag-up.__ Check in and status update among development team.
May amend plan for sprint as-needed.
* __Code freeze.__ Any new work from this sprint
(features, bug fixes, enhancements) must be integrated by the
end of the second week of the sprint. After code freeze
(and until the end of the sprint) the only changes that should be
merged into the master branch should directly address issues
needed to pass acceptance testing.
end of the second week of the sprint. After code freeze, a sprint
branch will be created (and until the end of the sprint) the only
changes that should be merged into the sprint branch should
directly address issues needed to pass acceptance testing.
During this time, any other feature development will continue to
be merged into the master branch for the next sprint.
* __Sprint branch merge to master.__ After acceptance testing, the sprint branch
will be merged back to the master branch. Any code conflicts that
This document outlines the process and key considerations for releasing a new version of the NASA Open MCT project as an NPM (Node Package Manager) package.
## 1. Pre-requisites
Before releasing a new version of the NASA Open MCT NPM package, ensure all dependencies are updated, and comprehensive tests are performed. This ensures compatibility and performance of the Open MCT within the Node.js ecosystem.
## 2. Versioning
Versioning is a critical step for package release. The Open MCT team follows [Semantic Versioning (SemVer)](https://semver.org) that consists of three major components: MAJOR.MINOR.PATCH. These ensure a structured process for updating, bug fixes, backward compatibility, and software progress.
## 3. Changelog Maintenance
A comprehensive changelog file, `CHANGELOG.md`, documents any changes, adding a high level of transparencies for anyone desiring to look into the status of new and past progress. It includes the summation of any major new enhancements, changes, bug fixes, and the credits to the users responsible for each unique progress.
## 4. Notable Changes Labels on GitHub PRs
For the Open MCT package, we leverage GitHub's Pull Request (PR) mechanisms extensively, with three important PR labels dedicated to signifying 'notable_changes':
- **Breaking Change** Highlights the integration of changes that are suspected to break, or without a doubt will break, backward compatibility. These should signal to users the upgrade might be seamless only if dependency and integration factors are properly managed, if not, one should expect to manage atypical technical snags.
- **API change** Signifies when a contribution makes any complete or under layer changes to the communication or its supporting access processes. This label flags required see-through insight on how the web-based control panel sees and manipulates any value and or network logs.
- **Default Behavior Change:** In the incident an update either adjusts a form to or integrates a not previously kept setting or plugin. i.e. autoscale is enabled by default when working with plots.
## 6. Community & Contributions
A flat community and the rounded center are kept in continuous celebration, with the given station open for two open-specifying dialogues, research, and all-for development probing. State the ownership for a handed looped, a welcome for even structure-core and architectural draft and impend.
Thank you for your collaboration and commitment to moving the project onto a text big club.
Manual, non-rigorous testing of the software and/or specific features
of interest. Verifies that the software runs and that basic functionality
is present.
is present. The outcome of Smoke Testing should be a simplified list of Acceptance Tests which could be executed by another team member with sufficient context.
### Unit Testing
@ -49,7 +49,7 @@ User testing will focus on the following activities:
This document captures information specific to the e2e testing of Open MCT. For general information about testing, please see [the Open MCT README](https://github.com/nasa/openmct/blob/master/README.md#tests).
## Table of Contents
This document is designed to capture on the What, Why, and How's of writing and running e2e tests in Open MCT. Please use the built-in Github Table of Contents functionality at the top left of this page or the markup.
1. [Getting Started](#getting-started)
2. [Types of Testing](#types-of-e2e-testing)
3. [Architecture](#test-architecture-and-ci)
## Getting Started
While our team does our best to lower the barrier to entry to working with our e2e framework and Open MCT, there is a bit of work required to get from 0 to 1 test contributed.
### Getting started with Playwright
If this is your first time ever using the Playwright framework, we recommend going through the [Getting Started Guide](https://playwright.dev/docs/next/intro) which can be completed in about 15 minutes. This will give you a concise tour of Playwright's functionality and an understanding of the official Playwright documentation which we leverage in Open MCT.
### Getting started with Open MCT's implementation of Playwright
Once you've got an understanding of Playwright, you'll need a baseline understanding of Open MCT:
1. Follow the steps [Building and Running Open MCT Locally](../README.md#building-and-running-open-mct-locally)
2. Once you're serving Open MCT locally, create a 'Display Layout' object. Save it.
3. Create a 'Plot' Object (e.g.: 'Stacked Plot')
4. Create an Example Telemetry Object (e.g.: 'Sine Wave Generator')
5. Expand the Tree and note the hierarchy of objects which were created.
6. Navigate to the Demo Display Layout Object to edit and modify the embedded plot.
7. Modify the embedded plot with Telemetry Data.
What you've created is a display which mimics the display that a mission control operator might use to understand and model telemetry data.
Recreate the steps above with Playwright's codegen tool:
1.`npm run start` in a terminal window to serve Open MCT locally
2.`npx @playwright/test install` to install playwright and dependencies
3. Open another terminal window and start the Playwright codegen application `npx playwright codegen`
4. Navigate the browser to `http://localhost:8080`
5. Click the Create button and notice how your actions in the browser are being recorded in the Playwright Inspector
6. Continue through the steps 2-6 above
What you've created is an automated test which mimics the creation of a mission control display.
Next, you should walk through our implementation of Playwright in Open MCT:
1. Close any terminals which are serving up a local instance of Open MCT
2. Run our 'Getting Started' test in debug mode with `npm run test:e2e:local -- exampleTemplate --debug`
3. Step through each test step in the Playwright Inspector to see how we leverage Playwright's capabilities to test Open MCT
## Types of e2e Testing
e2e testing describes the layer at which a test is performed without prescribing the assertions which are made. Generally, when writing an e2e test, we have five choices to make on an assertion strategy:
1. Functional - Verifies the functional correctness of the application. Sometimes interchanged with e2e or regression testing.
2. Visual - Verifies the "look and feel" of the application and can only detect _undesirable changes when compared to a previous baseline_.
3. Snapshot - Similar to Visual in that it captures the "look" of the application and can only detect _undesirable changes when compared to a previous baseline_. **Generally not preferred due to advanced setup necessary.**
4. Accessibility - Verifies that the application meets the accessibility standards defined by the [WCAG organization](https://www.w3.org/WAI/standards-guidelines/wcag/).
5. Performance - Verifies that application provides a performant experience. Like Snapshot testing, these tests are generally not recommended due to their difficulty in providing a consistent result.
When choosing between the different testing strategies, think only about the assertion that is made at the end of the series of test steps. "I want to verify that the Timer plugin functions correctly" vs "I want to verify that the Timer plugin does not look different than originally designed".
We do not want to interleave visual and functional testing inside the same suite because visual test verification of correctness must happen with a 3rd party service. This service is not available when executing these tests in other contexts (i.e. VIPER).
### Functional Testing
The bulk of our e2e coverage lies in "functional" test coverage which verifies that Open MCT is functionally correct as well as defining _how we expect it to behave_. This enables us to test the application exactly as a user would, while prescribing exactly how a user can interact with the application via a web browser.
### Visual Testing
Visual Testing is an essential part of our e2e strategy as it ensures that the application _appears_ correctly to a user while it compliments the functional e2e suite. It would be impractical to make thousands of assertions functional assertions on the look and feel of the application. Visual testing is interested in getting the DOM into a specified state and then comparing that it has not changed against a baseline.
For a better understanding of the visual issues which affect Open MCT, please see our bug tracker with the `label:visual` filter applied [here](https://github.com/nasa/openmct/issues?q=label%3Abug%3Avisual+)
To read about how to write a good visual test, please see [How to write a great Visual Test](#how-to-write-a-great-visual-test).
`npm run test:e2e:visual` commands will run all of the visual tests against a local instance of Open MCT. If no `PERCY_TOKEN` API key is found in the terminal or command line environment variables, no visual comparisons will be made.
-`npm run test:e2e:visual:ci` will run against every commit and PR.
-`npm run test:e2e:visual:full` will run every night with additional comparisons made for Larger Displays and with the `snow` theme.
#### Percy.io
To make this possible, we're leveraging a 3rd party service, [Percy](https://percy.io/). This service maintains a copy of all changes, users, scm-metadata, and baselines to verify that the application looks and feels the same _unless approved by a Open MCT developer_. To request a Percy API token, please reach out to the Open MCT Dev team on GitHub. For more information, please see the official [Percy documentation](https://docs.percy.io/docs/visual-testing-basics).
At present, we are using percy with two configuration files: `./e2e/.percy.nightly.yml` and `./e2e/.percy.ci.yml`. This is mainly to reduce the number of snapshots.
### Advanced: Snapshot Testing (Not Recommended)
While snapshot testing offers a precise way to detect changes in your application without relying on third-party services like Percy.io, we've found that it doesn't offer any advantages over visual testing in our use-cases. Therefore, snapshot testing is **not recommended** for further implementation.
#### CI vs Manual Checks
Snapshot tests can be reliably executed in Continuous Integration (CI) environments but lack the manual oversight provided by visual testing platforms like Percy.io. This means they may miss issues that a human reviewer could catch during manual checks.
#### Example
A single visual test assertion in Percy.io can be executed across 10 different browser and resolution combinations without additional setup, providing comprehensive testing with minimal configuration. In contrast, a snapshot test is restricted to a single OS and browser resolution, requiring more effort to achieve the same level of coverage.
#### Further Reading
For those interested in the mechanics of snapshot testing with Playwright, you can refer to the [Playwright Snapshots Documentation](https://playwright.dev/docs/test-snapshots). However, keep in mind that we do not recommend using this approach.
#### Open MCT's implementation
- Our Snapshot tests receive a `@snapshot` tag.
- Snapshots need to be executed within the official Playwright container to ensure we're using the exact rendering platform in CI and locally. To do a valid comparison locally:
```sh
// Replace {X.X.X} with the current Playwright version
// from our package.json or circleCI configuration file
When the `@snapshot` tests fail, they will need to be evaluated to determine if the failure is an acceptable and desireable or an unintended regression.
To compare a snapshot, run a test and open the html report with the 'Expected' vs 'Actual' screenshot. If the actual screenshot is preferred, then the source-controlled 'Expected' snapshots will need to be updated with the following scripts.
```sh
// Replace {X.X.X} with the current Playwright version
// from our package.json or circleCI configuration file
Once that's done, you'll need to run the following to verify that the changes do not cause more problems:
```sh
npm run test:e2e:checksnapshots
```
## Automated Accessibility (a11y) Testing
Open MCT incorporates accessibility testing through two primary methods to ensure its compliance with accessibility standards:
1.**Usage of Playwright's Locator Strategy**: Open MCT utilizes Playwright's locator strategy, specifically the [page.getByRole('') function](https://playwright.dev/docs/api/class-framelocator#frame-locator-get-by-role), to ensure that web elements are accessible via assistive technologies. This approach focuses on the accessibility of elements rather than full adherence to a11y guidelines, which is covered in the second method.
2.**Enforcing a11y Guidelines with Playwright Axe Plugin**: To rigorously enforce a11y guideline compliance, Open MCT employs the [playwright axe plugin](https://playwright.dev/docs/accessibility-testing). This is achieved through the `scanForA11yViolations` function within the visual testing suite. This method not only benefits from the existing coverage of the visual tests but also targets specific a11y issues, such as `color-contrast` violations, which are particularly pertinent in the context of visual testing.
### a11y Standards (WCAG and Section 508)
Playwright axe supports a wide range of [WCAG Standards](https://playwright.dev/docs/accessibility-testing#scanning-for-wcag-violations) to test against. Open MCT is testing against the [Section 508](https://www.section508.gov/test/testing-overview/) accessibility guidelines with the intent to support higher standards over time. As of 2024, Section508 requirements now map completely to WCAG 2.0 AA. In the future, Section 508 requirements may map to WCAG 2.1 AA.
### Reading an a11y test failure
When an a11y test fails, the result must be interpreted in the html test report or the a11y report json artifact stored in the `/test-results/` folder. The json structure should be parsed for `"violations"` by `"id"` and identified `"target"`. Example provided for the 'color-contrast-enhanced' violation.
"failureSummary":"Fix any of the following:\n Element has insufficient color contrast of 6.51 (foreground color: #aaaaaa, background color: #262626, font size: 8.1pt (10.8px), font weight: normal). Expected contrast ratio of 7:1"
}
```
## Performance Testing
The open source performance tests function in three ways which match their naming and folder structure:
`tests/performance` - The tests at the root of this folder path detect functional changes which are mostly apparent with large performance regressions like [this](https://github.com/nasa/openmct/issues/6879). These tests run against openmct webpack in `production-mode` with the `npm run test:perf:localhost` script.
`tests/performance/contract/` - These tests serve as [contracts](https://martinfowler.com/bliki/ContractTest.html) for the locator logic, functionality, and assumptions will work in our downstream, closed source test suites. These tests run against openmct webpack in `dev-mode` with the `npm run test:perf:contract` script.
`tests/performance/memory/` - These tests execute memory leak detection checks in various ways. This is expected to evolve as we move to the `memlab` project. These tests run against openmct webpack in `production-mode` with the `npm run test:perf:memory` script.
These tests are expected to become blocking and gating with assertions as we extend the capabilities of Playwright.
In addition to the explicit definition of performance tests, we also ensure that our test timeout timing is "tight" to catch performance regressions detectable by action timeouts. i.e. [Notebooks load much slower than they used to #6459](https://github.com/nasa/openmct/issues/6459)
## Test Architecture and CI
### Architecture
### File Structure
Our file structure follows the type of type of testing being exercised at the e2e layer and files containing test suites which matcher application behavior or our `src` and `example` layout. This area is not well refined as we figure out what works best for closed source and downstream projects. This may change altogether if we move `e2e` to it's own npm package.
|File Path|Description|
|:-:|-|
|`./helper` | Contains helper functions or scripts which are leveraged directly within the test suites (e.g.: non-default plugin scripts injected into the DOM)|
|`./test-data` | Contains test data which is leveraged or generated in the functional, performance, or visual test suites (e.g.: localStorage data).|
|`./tests/functional` | The bulk of the tests are contained within this folder to verify the functionality of Open MCT.|
|`./tests/functional/example/` | Tests which specifically verify the example plugins (e.g.: Sine Wave Generator).|
|`./tests/functional/plugins/` | Tests which loosely test each plugin. This folder is the most likely to change. Note: some `@snapshot` tests are still contained within this structure.|
|`./tests/framework/` | Tests which verify that our testing framework's functionality and assumptions will continue to work based on further refactoring or Playwright version changes (e.g.: verifying custom fixtures and appActions).|
|`./tests/performance/` | Performance tests which should be run on every commit.|
|`./tests/performance/contract/` | A subset of performance tests which are designed to provide a contract between the open source tests which are run on every commit and the downstream tests which are run post merge and with other frameworks.|
|`./tests/performance/memory` | A subset of performance tests which are designed to test for memory leaks.|
|`./tests/visual-a11y/` | Visual tests and accessibility tests.|
|`./tests/visual-a11y/component/` | Visual and accessibility tests which are only run against a single component.|
|`./appActions.js` | Contains common methods which can be leveraged by test case authors to quickly move through the application when writing new tests.|
|`./baseFixture.js` | Contains base fixtures which only extend default `@playwright/test` functionality. The expectation is that these fixtures will be removed as the native Playwright API improves|
Our functional tests end in `*.e2e.spec.js`, visual tests in `*.visual.spec.js` and performance tests in `*.perf.spec.js`.
### Configuration
Where possible, we try to run Open MCT without modification or configuration change so that the Open MCT doesn't fail exclusively in "test mode" or in "production mode".
Open MCT is leveraging the [config file](https://playwright.dev/docs/test-configuration) pattern to describe the capabilities of Open MCT e2e _where_ it's run
|Config File|Description|
|:-:|-|
|`./playwright-ci.config.js` | Used when running in CI or to debug CI issues locally|
|`./playwright-local.config.js` | Used when running locally|
|`./playwright-performance.config.js` | Used when running performance tests in CI or locally|
|`./playwright-performance-devmode.config.js` | Used when running performance tests in CI or locally|
|`./playwright-visual-a11y.config.js` | Used to run the visual and a11y tests in CI or locally|
#### Test Tags
Test tags are a great way of organizing tests outside of a file structure. To learn more see the official documentation [here](https://playwright.dev/docs/test-annotations#tag-tests).
Current list of test tags:
|Test Tag|Description|
|:-:|-|
|`@mobile` | Test case or test suite is compatible with Playwright's iPad support and Open MCT's read-only mobile view (i.e. no create button).|
|`@a11y` | Test case or test suite to execute playwright-axe accessibility checks and generate a11y reports.|
|`@addInit` | Initializes the browser with an injected and artificial state. Useful for loading non-default plugins. Likely will not work outside of `npm start`.|
|`@localStorage` | Captures or generates session storage to manipulate browser state. Useful for excluding in tests which require a persistent backend (i.e. CouchDB). See [note](#utilizing-localstorage)|
|`@snapshot` | Uses Playwright's snapshot functionality to record a copy of the DOM for direct comparison. Must be run inside of the playwright container.|
|`@2p` | Indicates that multiple users are involved, or multiple tabs/pages are used. Useful for testing multi-user interactivity.|
|`@generatedata` | Indicates that a test is used to generate testdata or test the generated test data. Usually to be associated with localstorage, but this may grow over time.|
|`@clock` | A test which modifies the clock. These have expanded out of the visual tests and into the functional tests.
|`@framework` | A test for open mct e2e capabilities. This is primarily to ensure we don't break projects which depend on sourcing this project's fixtures like appActions.js.
### Continuous Integration
The cheapest time to catch a bug is pre-merge. Unfortunately, this is the most expensive time to run all of the tests since each merge event can consist of hundreds of commits. For this reason, we're selective in _what we run_ as much as _when we run it_.
We leverage CircleCI to run tests against each commit and inject the Test Reports which are generated by Playwright so that they team can keep track of flaky and [historical test trends](https://app.circleci.com/insights/github/nasa/openmct/workflows/overall-circleci-commit-status/tests?branch=master&reporting-window=last-30-days)
We leverage Github Actions / Workflows to execute tests as it gives us the ability to run against multiple operating systems with greater control over git event triggers (i.e. Run on a PR Comment event).
Our CI environment consists of 3 main modes of operation:
#### 1. Per-Commit Testing
CircleCI
- e2e tests against ubuntu and chrome
- Performance tests against ubuntu and chrome
- e2e tests are linted
- Visual and a11y tests are run in a single resolution on the default `espresso` theme
#### 2. Per-Merge Testing
Github Actions / Workflow
- Full suite against all browsers/projects. Triggered with Github Label Event 'pr:e2e'
- CouchDB Tests. Triggered on PR Create and again with Github Label Event 'pr:e2e:couchdb'
#### 3. Scheduled / Batch Testing
Nightly Testing in Circle CI
- Full e2e suite against ubuntu and chrome, firefox, and an MMOC resolution profile
- Performance tests against ubuntu and chrome
- CouchDB suite
- Visual and a11y Tests are run in the full profile
Github Actions / Workflow
- None at the moment
#### Parallelism and Fast Feedback
In order to provide fast feedback in the Per-Commit context, we try to keep total test feedback at 5 minutes or less. That is to say, A developer should have a pass/fail result in under 5 minutes.
Playwright has native support for semi-intelligent sharding. Read about it [here](https://playwright.dev/docs/test-parallel#shard-tests-between-multiple-machines).
We will be adjusting the parallelization of the Per-Commit tests to keep below the 5 minute total runtime threshold.
In addition to the Parallelization of Test Runners (Sharding), we're also running two concurrent threads on every Shard. This is the functional limit of what CircleCI Agents can support from a memory and CPU resource constraint.
So for every commit, Playwright is effectively running 4 x 2 concurrent browsercontexts to keep the overall runtime to a miminum.
At the same time, we don't want to waste CI resources on parallel runs, so we've configured each shard to fail after 5 test failures. Test failure logs are recorded and stored to allow fast triage.
### Cross-browser and Cross-operating system
#### **What's supported:**
We are leveraging the `browserslist` project to declare our supported list of browsers. We support macOS, Windows, and ubuntu 20+.
#### **Where it's tested:**
We lint on `browserslist` to ensure that we're not implementing deprecated browser APIs and are aware of browser API improvements over time.
We also have the need to execute our e2e tests across this published list of browsers. Our browsers and browser version matrix is found inside of our `./playwright-*.config.js`, but mostly follows in order of bleeding edge to stable:
-`playwright-chromium channel:beta`
- A beta version of Chromium from official chromium channels. As close to the bleeding edge as we can get.
-`playwright-chromium`
- A stable version of Chromium from the official chromium channels. This is always at least 1 version ahead of desktop chrome.
-`playwright-chrome`
- The stable channel of Chrome from the official chrome channels. This is always 2 versions behind chromium.
-`playwright-firefox`
- Firefox Latest Stable. Modified slightly by the playwright team to support a CDP Shim.
In terms of operating system testing, we're only limited by what the CI providers are able to support. The bulk of our testing is performed on the official playwright container which is based on ubuntu. Github Actions allows us to use `windows-latest` and `mac-latest` and is run as needed.
#### **Mobile**
We have a Mission-need to support iPad and mobile devices. To run our test suites with mobile devices, please see our `playwright-mobile.config.js` projects.
In general, our test suite is not designed to run against mobile devices as the mobile experience is a focused version of the application. Core functionality is missing (chiefly the 'Create' button). To bypass the object creation, we leverage the `storageState` properties for starting the mobile tests with localstorage.
For now, the mobile tests will exist in the /tests/mobile/ suites and be executed with the
```sh
npm run test:e2e:mobile
```
command.
#### **Skipping or executing tests based on browser, os, and/os browser version:**
Conditionally skipping tests based on browser (**RECOMMENDED**):
```js
test('Can adjust image brightness/contrast by dragging the sliders',async({page,browserName})=>{
test.skip(process.platform==='darwin','This test needs to be updated to work with MacOS');
// ...
```
Skipping based on browser version (Rarely used): <https://github.com/microsoft/playwright/discussions/17318>
## Test Design, Best Practices, and Tips & Tricks
### Test Design
#### Test as the User
In general, strive to test only through the UI as a user would. As stated in the [Playwright Best Practices](https://playwright.dev/docs/best-practices#test-user-visible-behavior):
> "Automated tests should verify that the application code works for the end users, and avoid relying on implementation details such as things which users will not typically use, see, or even know about such as the name of a function, whether something is an array, or the CSS class of some element. The end user will see or interact with what is rendered on the page, so your test should typically only see/interact with the same rendered output."
By adhering to this principle, we can create tests that are both robust and reflective of actual user experiences.
#### How to make tests robust to function in other contexts (VISTA, COUCHDB, YAMCS, VIPER, etc.)
1. Leverage the use of `appActions.js` methods such as `createDomainObjectWithDefaults()`. This ensures that your tests will create unique instances of objects for your test to interact with.
1. Do not assert on the order or structure of objects available unless you created them yourself. These tests may be used against a persistent datastore like couchdb with many objects in the tree.
1. Do not search for your created objects. Open MCT does not performance uniqueness checks so it's possible that your tests will break when run twice.
1. Avoid creating locator aliases. This likely means that you're compensating for a bad locator. Improve the application instead.
1. Leverage `await page.goto('./', { waitUntil: 'domcontentloaded' });` instead of `{ waitUntil: 'networkidle' }`. Tests run against deployments with websockets often have issues with the networkidle detection.
#### How to make tests faster and more resilient to application changes
1. Avoid app interaction when possible. The best way of doing this is to navigate directly by URL:
```js
// You can capture the CreatedObjectInfo returned from this appAction:
- Initial navigation should _almost_ always use the `{ waitUntil: 'domcontentloaded' }` option.
1. Avoid repeated setup to test a single assertion. Write longer tests with multiple soft assertions.
This ensures that your changes will be picked up with large refactors.
1. Use [user-facing locators](https://playwright.dev/docs/best-practices#use-locators) (Now a eslint rule!)
```js
page.getByRole('button', { name: 'Create' } )
```
Instead of
```js
page.locator('.c-create-button')
```
Note: `page.locator()` can be used in performance tests as xk6-browser does not yet support the new `page.getBy` pattern and css lookups can be [1.5x faster](https://serpapi.com/blog/css-selectors-faster-than-getbyrole-playwright/)
##### Utilizing LocalStorage
1. In order to save test runtime in the case of tests that require a decent amount of initial setup (such as in the case of testing complex displays), you may use [Playwright's `storageState` feature](https://playwright.dev/docs/api/class-browsercontext#browser-context-storage-state) to generate and load localStorage states.
1. To generate a localStorage state to be used in a test:
- Add an e2e test to our generateLocalStorageData suite which sets the initial state (creating/configuring objects, etc.), saving it in the `test-data` folder:
- Load the state from file at the beginning of the desired test suite (within the `test.describe()`). (NOTE: the storage state will be used for each test in the suite, so you may need to create a new suite):
- Avoid using css locators to find elements to the page. Use modern web accessible locators like `getByRole`
- Use our [App Actions](./appActions.js) for performing common actions whenever applicable.
- Use `waitForPlotsToRender()` before asserting against anything that is dependent upon plot series data being loaded and drawn.
- If you create an object outside of using the `createDomainObjectWithDefaults` App Action, make sure to fill in the 'Notes' section of your object with `page.testNotes`:
```js
// Fill the "Notes" section with information about the
1. **Look for the Unknown Unknowns**: Avoid asserting on specific differences in the visual diff. Visual tests are most effective for identifying unknown unknowns.
2. **Get the App into Interesting States**: Prioritize getting Open MCT into unusual layouts or behaviors before capturing a visual snapshot. For instance, you could open a dropdown menu.
3. **Expect the Unexpected**: Use functional expect statements only to verify assumptions about the state between steps. A great visual test doesn't fail during the test itself, but rather when changes are reviewed in Percy.io.
4. **Control Variability**: Account for variations inherent in working with time-based telemetry and clocks.
- Utilize `percyCSS` to ignore time-based elements. For more details, consult our [percyCSS file](./.percy.ci.yml).
- Use Open MCT's fixed-time mode unless explicitly testing realtime clock
- Employ the `createExampleTelemetryObject` appAction to source telemetry and specify a `name` to avoid autogenerated names.
- Avoid creating objects with a time component like timers and clocks.
- Utilize the playwright clock() API. See @clock Annotations for examples.
5. **Hide the Tree and Inspector**: Generally, your test will not require comparisons involving the tree and inspector. These aspects are covered in component-specific tests (explained below). To exclude them from the comparison by default, navigate to the root of the main view with the tree and inspector hidden:
6. **Component-Specific Tests**: If you wish to focus on a particular component, use the `/visual-a11y/component/` folder and limit the scope of the comparison to that component. For instance:
- Note: The `scope` variable can be any valid CSS selector.
7. **Write many `percySnapshot` commands in a single test**: In line with our approach to longer functional tests, we recommend that many test percySnapshots are taken in a single test. For instance:
8. **Use `networkidle` to wait for network requests to complete**: This is necessary to ensure that all network requests have completed before taking a snapshot. This ensures that icons are loaded and other assets are available. https://github.com/nasa/openmct/issues/7549
#### How to write a great network test
- Where possible, it is best to mock out third-party network activity to ensure we are testing application behavior of Open MCT.
- It is best to be as specific as possible about the expected network request/response structures in creating your mocks.
- Make sure to only mock requests which are relevant to the specific behavior being tested.
- Where possible, network requests and responses should be treated in an order-agnostic manner, as the order in which certain requests/responses happen is dynamic and subject to change.
Some examples of mocking network responses in regards to CouchDB can be found in our [couchdb.e2e.spec.js](./tests/functional/couchdb.e2e.spec.js) test file.
### Best Practices
For now, our best practices exist as self-tested, living documentation in our [exampleTemplate.e2e.spec.js](./tests/framework/exampleTemplate.e2e.spec.js) file.
For best practices with regards to mocking network responses, see our [couchdb.e2e.spec.js](./tests/functional/couchdb.e2e.spec.js) file.
### Tips & Tricks
The following contains a list of tips and tricks which don't exactly fit into a FAQ or Best Practices doc.
- (Advanced) Overriding the Browser's Clock
It is possible to override the browser's clock in order to control time-based elements. Since this can cause unwanted behavior -- i.e. Tree not rendering -- only use this sparingly. Use the `page.clock()` API as such:
```js
import { test, expect } from '../../pluginFixtures.js';
There are instances where multiple browser pages will needed to verify multi-page or multi-tab application behavior. Make sure to use the `@2p` annotation as well as name each page appropriately: i.e. `page1` and `page2` or `tab1` and `tab2` depending on the intended use case. Generally pages should be used unless testing `sharedWorker` code, specifically.
- Working with file downloads and JSON data
Open MCT has the capability of exporting certain objects in the form of a JSON file handled by the chrome browser. The best example of this type of test can be found in the exportAsJson test.
```js
const [download] = await Promise.all([
page.waitForEvent('download'), // Waits for the download event
page.getByLabel('Export as JSON').click() // Triggers the download
]);
// Wait for the download process to complete
const path = await download.path();
// Read the contents of the downloaded file using readFile from fs/promises
Test Reporting is done through official Playwright reporters and the CI Systems which execute them.
We leverage the following official Playwright reporters:
- HTML
- junit
- github annotations
- Tracefile
- Screenshots
When running the tests locally with the `npm run test:e2e:local` command, the html report will open automatically on failure. Inside this HTML report will be a complete summary of the finished tests. If the tests failed, you'll see embedded links to screenshot failure, execution logs, and the Tracefile.
When looking at the reports run in CI, you'll leverage this same HTML Report which is hosted either in CircleCI or Github Actions as a build artifact.
### e2e Code Coverage
Our e2e code coverage is captured and combined with our unit test coverage. For more information, please see our [code coverage documentation](../TESTING.md)
#### Generating e2e code coverage
Please read more about our code coverage [here](../TESTING.md#code-coverage)
## Other
### About e2e testing
e2e testing is an industry-standard approach to automating the testing of web-based UIs such as Open MCT. Broadly speaking, e2e tests differentiate themselves from unit tests by preferring replication of real user interactions over execution of raw JavaScript functions.
Historically, the abstraction necessary to replicate real user behavior meant that:
- e2e tests were "expensive" due to how much code each test executed. The closer a test replicates the user, the more code is needed run during test execution. Unit tests could run smaller units of code more efficiently.
- e2e tests were flaky due to network conditions or the underlying protocols associated with testing a browser.
- e2e frameworks relied on a browser communication standard which lacked the observability and controls necessary needed to reach the code paths possible with unit and integration tests.
- e2e frameworks provided insufficient debug information on test failure
However, as the web ecosystem has matured to the point where mission-critical UIs can be written for the web (Open MCT), the e2e testing tools have matured as well. There are now fewer "trade-offs" when choosing to write an e2e test over any other type of test.
Modern e2e frameworks:
- Bypass the surface layer of the web-application-under-test and use a raw debugging protocol to observe and control application and browser state.
- These new browser-internal protocols enable near-instant, bi-directional communication between test code and the browser, speeding up test execution and making the tests as reliable as the application itself.
- Provide test debug tooling which enables developers to pinpoint failure
Furthermore, the abstraction necessary to run e2e tests as a user enables them to be extended to run within a variety of contexts. This matches the extensible design of Open MCT.
A single e2e test in Open MCT is extended to run:
- Against a matrix of browser versions.
- Against a matrix of OS platforms.
- Against a local development version of Open MCT.
- A version of Open MCT loaded as a dependency (VIPER, VISTA, etc)
- Against a variety of data sources or telemetry endpoints.
### Why Playwright?
[Playwright](https://playwright.dev/) was chosen as our e2e framework because it solves a few VIPER Mission needs:
1. First-class support for Automated Performance Testing
2. Official Chrome, Chrome Canary, and iPad Capabilities
3. Support for Browserless.io to run tests in a "hermetically sealed" environment
4. Ability to generate code coverage reports
### FAQ
- How does this help NASA missions?
- When should I write an e2e test instead of a unit test?
- When should I write a functional vs visual test?
- How is Open MCT extending default Playwright functionality?
- What about Component Testing?
### Writing Tests
Playwright provides 3 supported methods of debugging and authoring tests:
- A 'watch mode' for running tests locally and debugging on the fly
- A 'debug mode' for debugging tests and writing assertions against tests
- A 'VSCode plugin' for debugging tests within the VSCode IDE.
Generally, we encourage folks to use the watch mode and provide a script `npm run test:e2e:watch` which launches the launch mode ui and enables hot reloading on the dev server.
### e2e Troubleshooting
Please follow the general guide troubleshooting in [the general troubleshooting doc](../TESTING.md#troubleshooting-ci)
- Tests won't start because 'Error: <http://localhost:8080/># is already used...'
This error will appear when running the tests locally. Sometimes, the webserver is left in an orphaned state and needs to be cleaned up. To clear up the orphaned webserver, execute the following from your Terminal:
In order to upgrade from one version of Playwright to another, the version should be updated in several places in both `openmct` and `openmct-yamcs` repos. An easy way to identify these locations is to search for the current version in all files and find/replace.
For reference, all of the locations where the version should be updated are listed below:
#### **In `openmct`:**
- `package.json`
- Both packages `@playwright/test` and `playwright-core` should be updated to the same target version.
- `.circleci/config.yml`
- `.github/workflows/e2e-couchdb.yml`
- `.github/workflows/e2e-pr.yml`
#### **In `openmct-yamcs`:**
- `package.json`
- `@playwright/test` should be updated to the target version.
* This common function creates a domain object with the default options. It is the preferred way of creating objects
* in the e2e suite when uninterested in properties of the objects themselves.
*
* @param {import('@playwright/test').Page} page - The Playwright page object.
* @param {Object} options - Options for creating the domain object.
* @param {string} options.type - The type of domain object to create (e.g., "Sine Wave Generator").
* @param {string} [options.name] - The desired name of the created domain object.
* @param {string | import('../src/api/objects/ObjectAPI').Identifier} [options.parent='mine'] - The Identifier or uuid of the parent object. Defaults to 'mine' folder
* @returns {Promise<CreatedObjectInfo>} An object containing information about the newly created domain object.
* Waits and asserts that all plot series data on the page
* is loaded and drawn.
*
* In lieu of a better way to detect when a plot is done rendering,
* we [attach a class to the '.gl-plot' element](https://github.com/nasa/openmct/blob/5924d7ea95a0c2d4141c602a3c7d0665cb91095f/src/plugins/plot/MctPlot.vue#L27)
* once all pending series data has been loaded. The following appAction retrieves
* all plots on the page and waits up to the default timeout for the class to be
* attached to each plot.
* @param {import('@playwright/test').Page} page
* @param {number} [timeout] Provide a custom timeout in milliseconds to override the default timeout
// This should be used to install the Example Fault Provider, this will also install the FaultManagementPlugin (neither of which are installed by default).
// This should be used to install the Example Fault Provider, this will also install the FaultManagementPlugin (neither of which are installed by default).
// This should be used to install the Example Fault Provider, this will also install the FaultManagementPlugin (neither of which are installed by default).
retries:2,//Retries 2 times for a total of 3 runs. When running sharded and with max-failures=5, this should ensure that flake is managed without failing the full suite
testDir:'tests',
grepInvert:/@mobile/,//Ignore mobile tests
testIgnore:'**/*.perf.spec.js',//Ignore performance tests and define in playwright-performance.config.js
timeout:60*1000,
webServer:{
command:'npm run start:coverage',
cwd:fileURLToPath(newURL('../',import.meta.url)),// Provide cwd for the root of the project
url:'http://localhost:8080/#',
timeout:200*1000,
reuseExistingServer:true//This was originally disabled to prevent differences in local debugging vs. CI. However, it significantly speeds up local debugging.
},
maxFailures:MAX_FAILURES,//Limits failures to 5 to reduce CI Waste
workers:NUM_WORKERS,//Limit to 2 for CircleCI Agent
retries:1,//Retries 2 times for a total of 3 runs. When running sharded and with max-failures=5, this should ensure that flake is managed without failing the full suite
testDir:'tests',
testIgnore:'**/*.perf.spec.js',//Ignore performance tests and define in playwright-performance.config.js
timeout:30*1000,
webServer:{
command:'npm run start:coverage',
cwd:fileURLToPath(newURL('../',import.meta.url)),// Provide cwd for the root of the project
url:'http://localhost:8080/#',
timeout:200*1000,
reuseExistingServer:true//This was originally disabled to prevent differences in local debugging vs. CI. However, it significantly speeds up local debugging.
},
maxFailures:MAX_FAILURES,//Limits failures to 5 to reduce CI Waste
workers:1,//Limit to 1 due to resource constraints similar to https://github.com/percy/cli/discussions/1067
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.