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.
* 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>
* [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>
* 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>
* [Notebook] new notebook entry causes console error #3440
* using 'makeKeyString' to compare notebook identifiers
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
* 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>
* 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
* [Notebook] Save snapshot dropdown should be available from "view large" overlay #2922\
* Significant improvements to Snapshot styling
* [Notebook] Embed links aren't navigating #2979
Co-authored-by: charlesh88 <charlesh88@gmail.com>
Co-authored-by: Andrew Henry <akhenry@gmail.com>
- Significant fixes for Safari-compatible Flex layout in Condition Set
view;
- Changed visual approach to current-value section;
- Firefox scrollbar coloring
- Fix layout issues in Firefox;
- Consolidate Conditionals styles into single scss file;
- Fix test datum elements layout, better wrapping;
- Better approach to presence/absence of URL property in Condition
Widget;
- Fixes#2853;
- Fix errors in URL property handling in Condition Widget;
- Fixes#2853;
- Fixes#2867 - hide the View Switcher when an object is being edited;
- Refined titling on View Switcher and Notebook menu button;
- Cleaned up styles in l-browse-bar and moved into
ui/layout/layout.scss;
- Removed styles/_layout.scss;
- Hide the main view Edit button when in mobile
* Fix legacy message styling
- Code cleanup;
- Enable constants-mobile;
- Add _legacy-messages.scss;
- Add status color fg colors to theme constants;
* CSS refactoring, significant migration for messages classes
- Many messages classes migrated;
- c-click-icon > c-icon-button;
- c-click-icon rewritten;
- __close-btn refined in dialogs;
* About and splash screen styling
- Fixed splash in About screen;
* Update _mixins.scss
* Convert c-overlay__close-button to button
- <a> -> <button>;
- Set color of button;
- Normalized naming from close-btn to close-button;
* Fixed brightness filter issue on elements in overlays in VISTA;
* Fix dismiss button
* Open in new tab
* Fix splitter resizing error, and css background issue
* Prevent new line on enter key press when editing name in object browse bar. Update domainObject name on enter key press in Object Browse Bar
* Flexible layout should react to composition remove, and fix delete container
* Render a drag ghost when dragging frame items in flexible layout
* Use composition.on add to add new frames
* Styling for selects
- New cleaner styling approach;
- New cSelect and appearanceNone mixins;
- Converted selects in Notebook, plot-options-edit;
* List View fixes
- Ellipsizing now works;
- Better icon and text alignment;
* Remove updateDrilledIn function and calls
* Telemetry Table editing styles
- Headers now have hover effects;
* Change 'toggle'-style toolbar buttons to reflect current state, rather
than what will be the setting once clicked
- When frame is hidden, button displays the frame-hidden icon, and
tooltip says 'Frame hidden';
* Enable all sub-object views in Display Layout to use numeric inputs for
x, y, width and height
* Toolbar sanding and polishing
- Button order tweaked to place stack order near X, Y, etc. inputs;
- Improved spacing between items themselves and separators;
* Fix indentation
* Fix indentation part deux
* fix add links by drag and drop
* fix dialog component logging errors
* fix search component errors
* fix sort
* remove unused entrydnd file
* remove unnecessary console logs
* fix preview action in embed dropdown, which was throwing a type error
* invoke PreviewAction once in NotebookController and pass into git add -a
* add navigation capability to embeds, and a bunch of cleanup
* code cleanup and avoid calling dismiss twice on overlay destroy, which was throwing a DOM error. Calling code should dismiss the overlay
* only show elements pool if domainObject has composition
* fix error in inspector when no selection is present
* wire up object view expand button
* listen to composition#remove in TabsView
* make reviewer requested changes
* make reviewer requested changes, and fix for an edge case where removed tab is at the end of the array and currentTab is not set properly
* remove array wrapping dynamic classes in embed.html
* add title='View Large' to expand button
* change model variable to domainObject in tabs.vue
* dismiss top level overlay when esc is pressed (only if overlay is dismissable)
* fix link navigation from embeds
* use positive flag dismissable instead of negative notDismissable for overlays
* make overlays dismissable by default, unless set to false
* Drag-drop edit mode from capture handler. Drag-drop composition from bubble handler. Check composability on drag start
* Show drop hints without being in edit mode.
* Don't serialize objects twice on drag