* 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>
* 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>
* 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>
* 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>
* 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>
* 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
* Implement transactions in Object API and retire legacy transactions #4089
* Added `objectAPI.refresh`
Co-authored-by: Andrew Henry <akhenry@gmail.com>
* 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>
* 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
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.
* 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!
* 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>