* Form refactor (#3816)
* New form API and associated form controls
* Actions updated to use new form API.
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: charlesh88 <charles.f.hacskaylo@nasa.gov>
* Reimplementation of import export json (#4171)
Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
Co-authored-by: charlesh88 <charles.f.hacskaylo@nasa.gov>
Co-authored-by: Henry Hsu <hhsu0219@gmail.com>
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>
* Implement transactions in Object API and retire legacy transactions #4089
* Added `objectAPI.refresh`
Co-authored-by: Andrew Henry <akhenry@gmail.com>
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.
* 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%
* 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>
* Implement 'save' method in Object API
* Refactor legacy persistence code to work with new save object API
* Added 'isPersistable' check to object API
* Fixed incompatibility between object API changes and composition policies
* Make save method private
Co-authored-by: Deep Tailor <deep.j.tailor@nasa.gov>
* Implemented drag-and-drop composition
* Added composition policy for tables
* Reimplemented elements pool in Vue
* No need to resolve all objects on the navigated path
* Only show elements pool in edit mode
* Remove old elements pool
* Updated legacy code to use composition policy API
* Keep object in sync when mutated
* Add a toolbar provider for display layout.
* Move toolbar provider to the plugin
* basic toolbar generation
* componentize different toolbar control types
Break toolbar control types down into different parts and provide
a test toolbar generator in index.html that utilizes all the
controls.
* Get the 'Show frame' checkbox working in the toolbar
* - Remove extra listener.
- Display toolbar only when editing.
* Modify the Selection API to set s-selected and s-selected-parent attributes instead of adding to the css class names.
* Move the logic for allowing the toolbar in the edit mode to the provider.
* Use toggle-button component to toggle frame
* Delete old files
* Remove MCTToolbar
* Modify the toggle button component to return the computed value
* Remove reload=true
* Revert to the original setting
* use value from props
* Always update toolbars on edit status change
* restore fixed position bundle
* bring back reload when hmr unavailable
* Move to webpack build
* Use webpack for building openmct. Move SCSS to one folder and load
all core css up front. Remove bower, begin removing gulp in favor
of npm run.
* Uses eslint instead of jshint and jscs. Merge style checking rules
into .eshintrc.js, carrying over core parts of crockford style and
our adaptations. Current code base fails to pass the linter, want
to separate linter changes from fixes to linting rules.
* Support for Vue SFC with example
* Remove outdated examples
* Use HTML loader for html (supports relative imports of resources e.g.
images) and raw-loader for when javascript must be loaded as text.
* Updated Karma and Jasmine versions
* Added DOMObserver class. Supports promise-based testing of DOM changes
Update asynchronous test specs to use promises or done() instead of waitsFor/runs
* Modified ActionCapability to duplicate context object properties as own properties for better object equality comparisons
* Global find + replace to fix syntax issues
* Fixed various issues caused by non-deterministic runtime order of tests in Jasmine 3. Fixed issues caused by changes to determination of object equality
* Addressed review comments
* Resolved merge conflicts with master
* Fixed style errors
* Use spy.calls.count() instead of manually tracking
* [API] Implement a toolbar registry and a plugin to allow providing a toolbar for a selected object.
* Modify the mct-toolbar directive to get the toolbar structure from a provider based on selection.
* Implements the layout toolbar in the layout bundle
* [Toolbar] set selection initially in fixed controller and toolbar...
... to make the add button appear in the toolbar when a fixed position is created.
Remove selection change listener on destroy.
Start a digest cycle when handling selection in toolbar to avoid delays in toolbar.
Fixes#1991, #1987
* fixed checkstyle and lint errors
* Fix tests
* Update comment
Updates to sub object selection, first cut of selection APIs.
* [API] Add inspector view registry to register inspector view providers and show a view in the inspector.
[API] Modify the selection API to register the click event and handle the event. The API will add a class to the selected object and the immediate parent of the selected object.
[Directive] Implemenet mct-selectable directive for making an element selectable.
[Layout] Update the layout controller to use the Selection API. Also, add double click gesture to allow drilling into a selected object.
Populate the Elements pool with contained elements of the selected object. Update toolbar and inspector to listen for the changes in selection.
* [Frontend] Mods to markup and CSS for sub-object selection
* MCTSelectable allows selection in initialization, use to select on navigation
[Frontend] Show grid in first nested layout, hide from deeper nesting. Only show grids when applicable to relative selection.
* Fix checkstyle and lint errors
* Bring back the change that made mct-init-select work
* [Inspector] Make sure the right content is displayed based on whether a view provider exists or not.
* Only show table options when editing
* Make reviewers' requested changes
* Fix broken tests
* [Frontend] Cleanups and tweaks
Fixes#1811
- Cleanups between frame, editor and selecting.scss;
- Hover and selected borders visually pumped up a bit;
- Solid borders on hover and selecting when browsing;
- Dashed borders for layouts when editing;
- Fixed cursor to only show move capability when
element is selected;
* [Frontend] Tweaks to frame.no-frame layout
Fixes#1811
- Margin set to 0;
- Overflow set to hidden;
* [Frontend] Fixed position items border width fixed
Fixes#1811
- Set to 1px;
* Add tests for inspector controller and fix broken tests. Clean up code.
* [Fixed Position] Stop event propagation on click handlers in fixed position to avoid the event reaching the selection click handlers which caused issues with toolbar and selection."
* Fix tests
* Add tests
* Add test
* Remove element from document
prevent EditorCapability#finish from calling transactionservice#cancel when transactionService was not active - leading to console error everytime user would leave edit mode
Add tests for changes made and also to check for return type in either case (isActive or not)
Set key on represent so that commit function can properly persist
configuration per object type. Add tests to EditRepresenter
Fixes https://github.com/nasa/openmct/issues/1367
Remove mct-before-unload, and move the functionality to the navigation
service. The navigation service considers "unload" to be a navigation
event and prompts in much the same way as it would before any other
navigation event.
https://github.com/nasa/openmct/issues/1360
* [Edit] Added notifications to SaveAsAction
* [Edit] Added notifications to SaveAction
* [Edit] Update SaveAsActionSpec
* [Edit] No error notif when user cancels SaveAs