State Sync Service
Overview​
The state sync service is designed to allow short and long term memory of things such as annotations applied, last annotation state, hanging protocol viewport state, window level etc. This allows for better interaction with things like navigation between hanging protocols, ensuring that the previously displayed layouts can be redisplayed after returning to a given hanging protocol.
Currently, all the state sync service configurations have one of the following two lifetimes. See the mode description for general information on the mode lifetime.
- Application load - when the application is restarted, the state is lost
clearOnModeExit
- which stores state until the mode onModeExit is called, and then throws away the remaining state. This is useful for mode specific information.
TODO work - add more storage locations​
It is expected to add a few more storage locations, which will store to various locations on updates:
- User specific server store - to store things between application restarts at the user level
- Browser state store - to store things in the browser local state, to recover after crashing.
- Study specific server store - to store things relevant to a given study between application restarts, on the server.
Events​
Currently the service does not fire events.
API​
register
: to create a new named state storagereduce
: to apply a set of changes to several states at oncegetState
: to retrieve the current stateonModeExit
: clears the states configured as clearOnModeExit states
register​
The register call is typically added to an extension to create a new syncable state. A typical call is shown below, registering the viewport grid store state as a modal state.
stateSyncService.register('viewportGridStore', { clearOnModeExit: true });
getState​
The getState
call returns an object containing all of the reigstered states,
by id. The values can be read directly, but should not be modified.
reduce​
The reduce
call is used to apply a set of updates to various states. The
updates are performed for every state as a simply "set" call.
onModeExit​
When the Mode is exited, the onModeExit is called on the sync state, and this
clears all states registered with clearOnModeExit: true
.
To avoid clearing the state, the mode definition should store any transient
state in the mode onModeExit and recover it in the mode.onModeEnter
.
OHIF Registered State Sync Stores​
There are a number of defined stores here. It is recommended to update this list as state stores are added:
Default Extension Stores​
viewportGridStore
has viewport grid restore information for returning to an earlier grid layout.reuseIdMap
has a map of names to display sets for preserving user changes to hp display set selections.hanging
has a map of the hanging protocol stage information applied (HPInfo)toggleHangingProtocol
has the previously applied hanging protocol, to toggle an HP off.
Cornerstone Extension Stores​
lutPresentationStore
has the cornerstone LUT (window level) presentation state informationpositionPresentationStore
has the cornerstone viewport position (camera, initial image) information