Extension Manager
Overview​
The ExtensionManager
is a class made available to us via the @ohif/core
project (platform/core). Our application instantiates a single instance of it,
and provides a ServicesManager
and CommandsManager
along with the
application's configuration through the appConfig key (optional).
const commandsManager = new CommandsManager();
const servicesManager = new ServicesManager();
const extensionManager = new ExtensionManager({
commandsManager,
servicesManager,
appConfig,
});
Events​
The following events get published by the ExtensionManager
:
Event | Description |
---|---|
ACTIVE_DATA_SOURCE_CHANGED | Fired when the active data source is changed - either replaced with an entirely different one or the existing active data source gets its definition changed via updateDataSourceConfiguration . |
API​
The ExtensionManager
only has the following public API:
setActiveDataSource
- Sets the active data source for the applicationgetDataSources
- Returns the registered data sourcesgetActiveDataSource
- Returns the currently active data sourcegetModuleEntry
- Returns the module entry by the give id.addDataSource
- Dynamically adds a data source and optionally sets it as the active data sourceupdateDataSourceConfiguration
- Updates the configuration of a specified data source (name).getDataSourceDef
- Gets the data source definition for a particular data source name.
Accessing Modules​
We use getModuleEntry
in our ViewerLayout
logic to find the panels based on
the provided IDs in the mode's configuration.
For instance:
extensionManager.getModuleEntry("@ohif/extension-measurement-tracking.panelModule.seriesList")
accesses the seriesList
panel from panelModule
of the
@ohif/extension-measurement-tracking
extension.
const getPanelData = id => {
const entry = extensionManager.getModuleEntry(id);
const content = entry.component;
return {
iconName: entry.iconName,
iconLabel: entry.iconLabel,
label: entry.label,
name: entry.name,
content,
};
};