51 lines
1.4 KiB
Markdown
51 lines
1.4 KiB
Markdown
|
|
# 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).
|
||
|
|
|
||
|
|
```js
|
||
|
|
const commandsManager = new CommandsManager();
|
||
|
|
const servicesManager = new ServicesManager();
|
||
|
|
const extensionManager = new ExtensionManager({
|
||
|
|
commandsManager,
|
||
|
|
servicesManager,
|
||
|
|
appConfig,
|
||
|
|
});
|
||
|
|
```
|
||
|
|
|
||
|
|
The `ExtensionManager` only has a few public members:
|
||
|
|
|
||
|
|
- `setActiveDataSource` - Sets the active data source for the application
|
||
|
|
- `getDataSources` - Returns the registered data sources
|
||
|
|
- `getActiveDataSource` - Returns the currently active data source
|
||
|
|
- `getModuleEntry` - Returns the module entry by the give id.
|
||
|
|
|
||
|
|
|
||
|
|
## 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("org.ohif.measurement-tracking.panelModule.seriesList")`
|
||
|
|
accesses the `seriesList` panel from `panelModule` of the `org.ohif.measurement-tracking` extension.
|
||
|
|
|
||
|
|
|
||
|
|
```js
|
||
|
|
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,
|
||
|
|
};
|
||
|
|
};
|
||
|
|
```
|