Commit Graph

208 Commits

Author SHA1 Message Date
Scott Bell
98a5b223d2 Derived Telemetry Prototype (#7815)
* skeleton for comps

* more scaffolding

* more drafts

* worker ready

* telemetry is null for some reason

* can add two sin waves

* adding works

* exact values enabled

* subscriptions work

* slowing adding gui

* fix plots

* rudimentary expression editor

* correctly persist

* parameters

* can take arbitrary expressions

* styles and timing for loading worker

* ui works kinda

* need to figure out ranger

* works with time

* timesystem works

* get rid of batch for now

* gui still leaking data

* memory conserved

* styles

* fix initial load

* expression validator

* fix test data

* do not persist

* persist after adding

* fix editing issues

* mutate when parameters or expression changes

* implement output format

* implement output format

* be consistent with output key

* add icons and fix errant telemetry

* lint

* lint

* use key instead of name

* Style enhancements for Derived Telemetry object
- Closes #7823
- Font files updated - do not merge!
- New glyph and data URI background for object.

* Style enhancements for Derived Telemetry object
- Closes #7823
- Tweak to object description.

* Enhancements for Derived Telemetry object
- Closes #7823
- Added new `ObjectPathString.vue` UI component, based on `ObjectPath.vue`.

* Style enhancements for Derived Telemetry object
- Closes #7823
- Significant mods for style and CSS classing. Still WIP, more coming.

* Enhancements for Derived Telemetry object
- Closes #7823
- Code cleanup and tweaks.

* do not apply test data when edit mode changes to false

* Revert "do not apply test data when edit mode changes to false"

This reverts commit eac4676cad.

* trying this again without blowing away the very pretty styling

* clean up composition effects

* allow deleting of parameters

* can chain and plot derived data

* can delete properly

* Enhancements for Derived Telemetry object
- Closes #7823
- Updated Derived Telemetry glyph design.
- Set `CompsViewProvider.js` to use the correct icon.

* handle arrays and add skeleton tests

* Enhancements for Derived Telemetry object
- Closes #7823
- Final sanding and polishing.
- New discrete item style `c-output-featured` added to controls.scss
  - Applied to 'Current Output' section of both Derived Telemetry and Condition Sets.
- TODOs:
  - [ ] Check for low-risk regressions in Condition Sets browse and edit modes.
  - [ ] New tests for ObjectPathString.vue component.

* add tests

* ensure output format propagates

* add output format test

* add some basic object path label tests

* good job code scanner. changing to or condition

* refactor aria labeling

* pass options on request to underlying collections

* ensure derived DERIVED telemetry loads in the proper order. also have telemetry collections prioritize request options over clock

* fix domains

* ensure we only ask for latest for comp editor

* improvement in loading

* fix slow loading errors

* more telemetry collection changes to acommodate bound changes

* more debug just in case

* stacked plots are overriding telemetry object configurations

* some changes

* add new flag to deal with plots asking for zoomed out data that should be ignoring clock

* works

* add sample size

* check if sample size greater than zero

* ensure number for sample size

* ensure we have a reference value before we slice

* can do derived derived accumulated comps now

* ensure we are checking for not equal

* add a few more awaits

* allow blank test values for arrays

* check for blank test values

* change to just value

* impute requested data properly

* fix output and add accumulation label

* update output when comp changes

* remove unused function

* add placeholder

* support lambda values

* reduce size

* widen size to accomodate sample size

* removing debug statements for PR review

* Closes #7823
- Markup/CSS sanding and shimming for derived telemetry front-end.
- Toggle switch CSS improved to use `gap` instead of left margin.

* Update package lock for new package versions

* Move composition policy to it's own file. Fix expression evaluation bug for truthy/falsy

* fix lint spelling

* Use the telemetry collection's timeKey for timestamps

* Revisit code to use bounds provided by options to telemetryCollections

* Refactor bounds handling to clarify intent. Remove TelemetryCollection.load() returning a promise and use event handlers instead.

* destroy and reload the telemetry collection on reload

* Update package-lock.json:

* Fix lint error

* Clean rebuild of package-lock.json

* Update e2e package lock as well

* Don't use method calls in vue templates

* fix linting issue

* Change plugin name to Derived Telemetry

* Install the derived telemetry plugin for tests before running them

* Tweaks to spacing to correct visual regression.

---------

Co-authored-by: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Co-authored-by: Scott Bell <scott@cynthia-macbook.fritz.box>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Shefali <simplyrender@gmail.com>
Co-authored-by: Andrew Henry <andrew.k.henry@nasa.gov>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
2026-02-25 13:33:17 -08:00
Shefali Joshi
95701a69eb Dynamically determine number of ticks depending on canvas width (#8223)
* Add canvas width based utc time ticks with predictable nice ticks

* Make dynamic ticks work for all x-axis types

* Adds support for non-numeric x-axis values

* Fix e2e tests to property assert ticks given the improved dynamic count algorithm
2026-02-23 14:47:59 -08:00
Andrew Henry
b476d1e0ce Increase priority of operator status indicator (#8257)
* Increase priority of operator status indicator

* Add additional assertion to ensure there are multiple indicators

* Added some assertions to tighten up the test
2026-02-13 20:39:57 +00:00
Andrew Henry
670449a493 Updated playwright and fixed some test flake (#8248)
* Updated playwright

* Updated package-lock.json after recent changes

* Fixed flakey notebook test

* Fixed janky test

* Fix text jank

* Playwright broke our test

* Fix timer test that cannot possibly have worked

* Fix flake in visual tests

* Remove networkIdle wait. It's not super reliable to begin with, and seems to behave differently in recent Playwright

* Retire impossible test

* Remove redundant search test

* Fixed non-deterministic network test

* Added requestfinished to dictionary

* Restore eslint exception for networkidle

* Fixed lint error

* use clear() instead of fill('')

* Don't use nth

* Use text identifiers rather than indexes to reference cells

* Fix typo

* Tighten up network delay
2026-02-03 11:30:35 -08:00
Andrew Henry
2ffa8881f9 Migrate Circle CI to Github actions (#8233)
* Dry run new Github actions

* Remove legacy CircleCI configuration

* Fix flake

* Optimizations

* Disabled unstable snapshot test.

* Speed up builds

* Increase sharding

* Fix label

* Fix git directory ownership issue

* Clean up and optimization

* Use deps from more jobs

* Remove label trigger

* Updated browserlist finally

* Fix playwright issue

* Bump timeout slightly since the runner is under a little more pressure now

* Build unit tests from scratch

* Fixed flakey test

* Increase sharding again

* Remove references to Circle CI

* Trying to optimize workflow

* Fix dependency issue

* Try again

* Remove third party dependency

* Fix git check issue

* Add an option to do a clean build:

* Added dependencies back in

* Fixing bugs

* Removed MMOC project

* Start again

* Need to check out first

* Cache hit check

* Check if cache hit

* debugging

* Debugging

* Reuse cache key job

* Adding should build flag to support forced clean builds

* Simplifying logic

* Simplify again

* Remove label if needed

* Run unit tests

* Cache dist as well

* Update label

* parameterize node version

* Add dist to the cache path

* Github restore

* Add e2e tests

* Cleaning up e2e run configuration

* Oops, remove circleci reference

* Remove playwright container

* Playwright install

* Use playwright container for caching

* Remove chrome install step. Assume already available from playwright container

* Trying to cache playwright browsers

* Don't use playwright container for unit tests

* Fixed flakey telemetry table test

* Restore visual, mem, and perf tests

* Always run couch tests

* Restore e2e node modules as well

* Cache paths have to match because they are part of the cache version information

* Add Percy token

* Always upload artifacts

* More descriptive names

* Removed nightly for now, will come back to it
2026-01-28 10:00:38 -08:00
Jamie V.
4ab98ffef0 Add Correlation Telemetry Plugin (#8216)
* adding the plugin file

* adding to available plugins list

* this update makes it so you can see the items selected for correlation in the edit form, previously they would be blank

* fixed incorrect formatting for locator field vue compnent, removed unnecessary openmct arg from correlation plugin

* spelling fix

* add test for correlated telemetry, update subscribe to telemetry util function and move to app actions

* checking timestamps match so we are correctly checking correlated telemetry

* Rename utility function to align with its implementation details

---------

Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Andrew Henry <andrew.k.henry@nasa.gov>
2025-12-17 02:31:08 +00:00
Charles Hacskaylo
a0a06cf7d2 Better overflow and wrapping in Status area (#7850)
* Enhancements for better wrapping of Status Area icons
- Added `headCanWrap` stored property, and toggle button.
- CSS mods, cleanup.

* Enhancements for better wrapping of Status Area icons
- New glyphs for `icon-multiline` and `icon-singleline`.
- Refinements to button labels and titles for clarity.

* Enhancements for better wrapping of Status Area icons
- Add code and CSS for toggling single/multiline display of indicators.
- Add code to detect overflow state of indicators.

* Enhancements for better wrapping of Status Area icons
- WIP, but is working!
- TODOs:
  - Make sure this is a good way to do things.
  - Cleanup code.
  - Tests.

* Enhancements for better wrapping of Status Area icons
- Fixed CSS classing on collapse/expand button.
- New method added for storing head props in local storage.
- TODOs:
  - Make sure using Update hook is performant.
  - Tests.

* Code cleanup.

* - Now uses Watch instead of Update to handle changes from containing AppLayout.vue component.
- Code cleanup, console.log removals.

* - Fixed CSS which was causing the head to collapse when browser window is very small and Indicators running to multiple lines.
- Fixed CSS which was causing the height and alignment problems in the head.

* use `resizeObserver` instead of window listeners
safer access to `localStorage` initial state
ie. legacy localStorage having `expanded` but not `multiline`

* framework for e2e tests

* add aria-label to `Status Indicators`

* e2e test for expand and collapse indicators

* e2e test for single line mode

* reuse `firstIndicator` locator

* e2e test for overflow indication
refactor to reuse variables
refactor to use `test.step`s instead of comments

* e2e test for both toggles working in conjunction

* e2e test for `localStorage` persistence

* new visual snapshots
* time conductor - add single/multi line toggle button
* autoscale - 1 more pixel in status area

* Fix tests that relied on changed button text

* Hide clock for percy snapshots

* Hide clock for percy snapshots take 2

---------

Co-authored-by: David Tsay <david.e.tsay@nasa.gov>
Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
Co-authored-by: Andrew Henry <andrew.k.henry@nasa.gov>
2025-12-17 00:54:27 +00:00
David Tsay
3f495ca982 Time conductor refactor (#7818)
* add missing licensing comment

* use vue component naming convention

* script, template, style

* Revert "script, template, style"

This reverts commit c8f8a098f2.

* create useTimeSystem composable

* forgot to push useTimeSystem

* extend useTimeSystem to return reactive formatters

* return reactive isUTCBased

* add useTimeMode composable
fix listener in useTimeSystem

* add useTimeBounds composable

* add useClockOffsets composable
documentation update to useTimeBounds

* WIP change replication in time api calls to use composables
many things broken
will need refactor to account for independent time conductor

* missed file in commit

* use composables for conductor mode

* create useClock composable
code clean up

* whoops. mistook prettier red squiggly for code not used red squiggly.

* vue naming convention

* change composables to allow for timeContexts

* change timeContexts to be reactive to objectPath
reactivity fixes to composables

* reactivity and non fixes

* use `shallowRef` for clock object

* WIP: get independent time contexts working again

* vue component naming conventions

* WIP: mostly fixed independent time conductor

* provide timecontext even if its the global/timeapi for shared components

* incorporate provided timecontext into independant time conductor components

* better jsdoc message

* fix missing clock on independent time mode change

* switch to reactive formatter for zoom

* use reactive timecontext in fixed inputs

* use reactive clock props
cleanup unused variables

* edit for clarity

* remove unused injection

* change ITC to use composables

* update to use composables

* rename because need both datetime and time inputs

* make message universal to all timeSystems

* only change time options if independent conductor enabled
re-use timeContext across composables

* make date time only for supporting time systems

* fix css for bounds single inputs

* time formats can specify date/time delimiters

* move history out of form
remove unused gear icon
remove debugging code

* handle toggle independent time

* v-if logic one component up

* add back date selector

* fix datetime fixed validation

* combine time composables into one
lint fix

* fix single datetime fixed input validation
clean up shouldDismiss modal behavior

* correct jsdocs

* this v-if is not in use

* optional `formatDate` method can be defined to split date and time
refine `UTCTimeFormat`'s `format` method and valid formats

* fix split date time inputs test

* copy and paste into split date time inputs

* fix validation and reporting of inputs on paste

* validate against same start and end fixed time bounds
alter verbiage for validation of offsets to match that of bounds

* better jsdocs

* remove deprecated file

* vue component name linting

* fix e2e test label locator

* more specific locator

* fix reactivity for independent time conductor

* convert `IndependentTimeConductor.vue` to use vue3 composition api

* fix throttle on bounds

* safety check on dom element

* follow mode properly in ITC

* fix standard time conductor not having a `useIndependentTime` value

* provide and use `currentValue`

* change timeOptions on path change
lint fix

* fix saved `timeOptions` `bounds` being overwritten by `bounds`

* no more settings icon for independent time conductor pop-up

* fix warning message verbiage

* remove timeout since time conductor is now reactive

* add copy/paste functionality to single datetime inputs

* computeds don't need to be manually set

* explain `formatDate` in documentation

* allow pasting millisecond precision into split date/time inputs

* remove log per review comment
https://github.com/nasa/openmct/pull/7818#discussion_r2535418644

* add tsdoc to plugin
* deprecate records in configuration.menuOption
* reconds should be in configuration

* pass time conductor configuration to independent TC
https://github.com/nasa/openmct/pull/7818#discussion_r2535711788

* fix limit validation
requires provide of `timeSystemKey` and `configuration`

* ensure matching clock and timesystem on change

* make switch clock and time system more resilient

* fix failing notebook visual test

* update visual snapshots
diff - remove gear icon
diff - add history icon

---------

Co-authored-by: Shefali Joshi <simplyrender@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
2025-12-15 22:47:55 +00:00
Shefali Joshi
16a9ced493 Feature plot better utc ticks (#8139)
* Initial prototype of UTC timestamp ticks

* draft tick changes

* Refactor time-series ticks

* Add e2e test for time ticks

* Better comments and variable names and some formatting

* Fix tests broken due to new implementation of ticks
2025-11-20 19:31:24 +00:00
Andrew Henry
263ad97062 8184 couch requests views failing (#8185)
* All telemetry criteria bug (#8084)
* Reference telemetry map as a Map, not associative array
* Only normalize once
* Another cheeky createNormalizedDatum
* Fix unit tests that were broken by removal of createNormalizedDatum
* Fixed failing test
* Don't double stringify requests to views
* Add E2E test to catch 400 errors due to double stringification
* Removed files AGAIN
* Use design documents in testing
2025-11-04 19:06:34 +00:00
Charles Hacskaylo
be54feda0a Store and retrieve the view type, per object type (#8068)
* Allow user to set machine-based preferences for main object views.
- WIP
- BrowseBar.vue now stores view selection when viewSwitcher component is invoked as localstorage object 'openmct-stored-view-prefs'.
- Browse.js in `#viewObject` looks for an existing value in 'openmct-stored-view-prefs' and uses it.
- TODO: stored pref currently overrides `view` querystring parameters, but shouldn't.

* Allow user to set machine-based preferences for main object views.
- Browse.js now sets currentViewKey in the right spot.
  - Changes in #viewObject reset.

* Allow user to set machine-based preferences for main object views.
- Style tweaks to `c-list-view` when used in object-type folder.
- Added missing copyright header to list-view.scss.

* Fixed linting errors

* Add test for Folder 'List View' persistence

- Closes #1395.
- Update .gitignore to not check in Webstorm test config file.

---------

Co-authored-by: Andrew Henry <akhenry@gmail.com>
2025-10-03 13:00:29 -07:00
Andrew Henry
5872b9006d Adjustable swimlanes merge attempt 2 (#8138)
* Move ResizeHandle to reusable ui location
* Changes for user-settable swimlane heights.
* resize widths for all swimlane labels
* make drag resizer more scalable
* add resize handles to time strip views
* Moved many CSS defs from flexible-layout.scss into new mixin `resizeHandleStyle`.

---------

Co-authored-by: David Tsay <david.e.tsay@nasa.gov>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
2025-08-27 12:57:12 -07:00
Scott Bell
76b22a7a49 Discrete Event Visualization in Timeline (#7967)
Implements timeline visualization of discrete events such as Events and Commands
* Closes #7960

Co-authored-by: Charles Hacskaylo <charles.f.hacskaylo@nasa.gov>
Co-authored-by: Shefali <simplyrender@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
2025-07-25 17:44:19 -07:00
Jamie V.
826c7134b5 Make Plot "Export as PNG/JPG" default filenames more clear and make the methods extendable (#8070)
* add filename argument and update default name
* add filename argument and update default name
* allow the invoke function to accept a filename to pass to the view actions
* tests
* remove invalid chars from filenames, another test for that
* replace periods with underscores as they may be useful in a name
2025-05-20 13:38:55 -07:00
Jamie V.
fa1a45b6cd [Inspector Tabs] Updates (#7987)
* added getTypes to types api, modifying which tabs are shown, working on annoatation tab
* moving hasNumericTelemetry to an api method
* updated types api to return all types, updated annotations api to return annotatable types, cleaned up use of hasNumericTelemetry elsewhere in the code

* Changes for tabs visibility and priority
- Alphanumeric formatting tab set to default priority while editing, low priority during browse.
- Good styling for Format tab contents in browse mode.
- Properties tab set to low priority during editing, default during browse.
- Make Elements pool visible in browse mode, omit edit capabilities.
- Edit and browse mode priorities for Properties and Elements.
- Adjusted edit and browse mode priorities for Properties and Elements.
- Priority set for Gantt view.
- Priorities set for Graph, Lad Table, Scatter Plot, Telem Tables and Time List views.
- Changed several Inspector tab names to 'Config'; tests and other code changed to target `key` instead of `name`:
  - LAD Table
  - Time List - will need regression testing for change noted re. `key` above.
- Created browse mode read-only Inspector views:
  - LAD Table, Lad Table set.
  - Telemetry Table.
  and `showTab` functions; `showTab` has just been set to true for now.
to prevent it from displaying when no filters can be set.
- Plot plugin.js now adds configuration.objectStyles {} for overlay and stacked plots on initialize.
- FiltersView now displays a message for telem sources that don't have filter criteria available.
- Annotations tab now set to never display when a view is being edited.
- Added `objectStyles: {}` to initialize functions for multiple objects:
  - Condition Widget
  - Gauge
  - LAD Table

---------

Co-authored-by: Charles Hacskaylo <charlesh88@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
2025-05-15 16:55:15 -07:00
Andrew Henry
2e7fb94dd5 Condition Sets can incorrectly evaluate telemetry objects that update infrequently (#8041)
* Remove short-circuit logic

* Revert change to remove short-circuit logic

* Restore short-circuit evaluation, pass in current values

* V2, restore short-circuit eval

* Added timestamp checking for individual criteria

* Some optimizations

* Co-authored-by: Pranaykarvi<pranaykarvi@gmail.com>

* Fixed bug that prevented test data from working at all

* Fixed bug introduced by refactor. Oops.

* Fixed bug with test data

* Provided clarification in test description

* Replaced legacy tests with new e2e test of correct telemetry evaluation

* some markup changes to improve testability

* Address review comments

* Fixed linting error

* Fixed broken tests

* Fixed long-standing bug with evaluating enums

* Fixed broken tests

* Fixed linting error

* remove commented code

test name grammar fix

---------

Co-authored-by: David Tsay <3614296+davetsay@users.noreply.github.com>
2025-05-14 08:32:35 -07:00
Shefali Joshi
ecd120387c Independent time conductor related handling for plot synchronization. (#7956)
* 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
2025-02-10 21:46:00 +00:00
Shefali Joshi
1fde0d9e38 Don't disallow mouse events when in compact mode for plots (#7975)
* 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
2025-01-18 15:50:24 +00:00
Jamie V.
5be103ea72 modified the sanitizeForSerialization method to remove unnecessary re… (#7950)
modified the sanitizeForSerialization method to remove unnecessary recursion, update e2e test to CORRECTLY test the functionality
2024-12-09 20:34:07 +00:00
Jamie V.
5bb6a18cd4 [Notebook] Browse Bar holding onto stale model, reverts changes (#7944)
* 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!
2024-12-06 14:13:08 -08:00
Jamie V.
61b982ab99 [Telemetry API] Prevent Subscriptions with different options from overwriting each other (#7930)
* 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
2024-12-04 03:33:15 +00:00
Jamie V.
ba4d8a428b [Gauge Plugin] Fix Missing Object handling (#7923)
* 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
2024-12-03 15:13:51 -08:00
Shefali Joshi
ea9947cab5 Use the disabled attribute on a valid element - the button. (#7914)
* 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
2024-11-05 20:53:28 +00:00
Shefali Joshi
057a5f997c Encode urls for css background images (#7906)
* 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>
2024-10-18 19:59:02 +00:00
David Tsay
7c2bb16bfd Bugfix/7873 time conductor input validation (#7886)
* validate on change because input is too aggressive
* validate logical bounds on submit
* perfection
2024-10-16 18:57:56 -07:00
Shefali Joshi
2b8673941a Don't persist current tab when display is locked (#7882)
Check if a display is locked before saving current tab. 

---------

Co-authored-by: Andrew Henry <akhenry@gmail.com>
2024-10-11 16:17:29 -07:00
John Hill
47f0b66c7e [CI] Fix flake with clocks and state generators (#7867)
* add two appActions

* replace with appAction

* replace with determinsitic appAction

* fix lint

* speed
2024-10-04 15:47:25 -07:00
Jesse Mazzella
55c023d1eb chore: it is 2024. (#7864) 2024-10-03 06:28:26 -07:00
Jamie V.
37b2660f27 [Conditionals] Increase performance, switch to TelemetryCollections (#7841)
* 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>
2024-10-02 14:14:15 -07:00
Jesse Mazzella
ad30a0e2d0 feat(Fault Management): allow fault providers to define shelve durations (#7849)
* 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>
2024-10-01 10:41:18 -07:00
Andrew Henry
29f1956d1a Improve telemetry buffering implementation (#7837)
* 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.
2024-09-30 14:36:40 -07:00
David Tsay
a8fbabe695 fix(#7825): imagery pause (#7842)
* 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>
2024-09-27 14:32:14 -07:00
Jesse Mazzella
440474b2e3 fix(conditional styling): conditional visibility for images and alpha-numerics in display layouts (#7824)
* 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!
2024-09-09 22:41:29 +00:00
Jesse Mazzella
21a4335c4e chore: re-enable perf/mem tests on PR + fix broken locator in imagery perf test (#7806)
* 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>
2024-08-13 21:55:57 +00:00
John Hill
0413e77d8a test(e2e): Major refactor and stabilization of e2e tests (#7581)
* 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>
2024-08-07 21:36:14 +00:00
Jesse Mazzella
e3fcbe1a35 fix(#7791): tc form shouldn't submit bounds changes on dismiss (#7792)
* 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`
2024-07-25 23:55:50 +00:00
Jesse Mazzella
689f7cc815 test(e2e): stabilize flaky imagery tests (#7765) 2024-07-23 20:41:07 -07:00
Shefali Joshi
db808b4d54 Plots correctly use configuration set on the parent if they can't their own (#7770)
* 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>
2024-07-16 10:57:12 -07:00
Shefali Joshi
6360bc4b6c Ensure time conductor mode is set when synchronizing time range (#7731)
* 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
2024-06-03 16:17:41 +00:00
Shefali Joshi
c354e1c2f1 If display bounds are out of sync with time conductor, don't purge data out of bounds (#7732)
* 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
2024-06-03 15:46:05 +00:00
Jamie V
810d580b18 [Telemetry Tables] Make sure tables auto scroll correctly on first load (#7720)
* 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>
2024-05-09 11:53:11 -07:00
David Tsay
977792fae8 this is 2024. * observers no more. (#7715)
* 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>
2024-05-09 11:19:55 -07:00
Charles Hacskaylo
a961d7e3bf Fix nested Flexible Layout direction problem (#7637)
* 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>
2024-04-18 23:38:11 +00:00
David Tsay
e91aba2e37 Handle paste events for images and text properly (#7679)
* 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>
2024-04-16 13:54:40 -07:00
Jesse Mazzella
5b4ee1949f fix(#7623): Resize ConductorAxis properly (#7624)
* 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
2024-03-26 23:52:33 +00:00
Jesse Mazzella
6e264517f8 docs: Mission Status and more (#7521)
* 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
2024-03-26 19:11:00 +00:00
Scott Bell
986da5782b Disable reload in preview (#7639)
disable reload in preview

Co-authored-by: Jesse Mazzella <ozyx@users.noreply.github.com>
2024-03-26 16:58:47 +00:00
Scott Bell
539138437b For an existing View in a Preview, ensure we pull the same ActionCollection (#7632)
* ensure action collection returned is the cached one from the same view

* add test

* use async await
2024-03-26 14:11:23 +00:00
Jesse Mazzella
493b31d0b9 fix(#7633): add missing await (#7643)
* fix(#7633): add missing `await`

* test: add LAD table e2e suite + test
2024-03-26 10:14:25 +00:00
Jesse Mazzella
f504ee29cc fix: 🤖 beep boop beep, you forgot an await 🤖 (#7630)
* fix: 🤖 beep boop beep, you forgot an `await` 🤖

* add e2e test

---------

Co-authored-by: Scott Bell <scott@traclabs.com>
2024-03-20 20:20:48 +00:00