There had been a change made to make the hanging protocols auto initialize, but that caused problems on mode init because the couldn't specify the hanging protocols any longer. THis change restores that, and also improves the API a little bit by allowing the display set selectors to be specified by id instead of positionally. fix(hp):PR Review Comments fix(hp):Unit test and docs
107 lines
3.4 KiB
TypeScript
107 lines
3.4 KiB
TypeScript
import { id } from './id';
|
|
|
|
const ohif = {
|
|
layout: '@ohif/extension-default.layoutTemplateModule.viewerLayout',
|
|
sopClassHandler: '@ohif/extension-default.sopClassHandlerModule.stack',
|
|
hangingProtocol: '@ohif/extension-default.hangingProtocolModule.default',
|
|
leftPanel: '@ohif/extension-default.panelModule.seriesList',
|
|
rightPanel: '@ohif/extension-default.panelModule.measure',
|
|
};
|
|
|
|
const cornerstone = {
|
|
viewport: '@ohif/extension-cornerstone.viewportModule.cornerstone',
|
|
};
|
|
|
|
/**
|
|
* Just two dependencies to be able to render a viewport with panels in order
|
|
* to make sure that the mode is working.
|
|
*/
|
|
const extensionDependencies = {
|
|
'@ohif/extension-default': '^3.0.0',
|
|
'@ohif/extension-cornerstone': '^3.0.0',
|
|
};
|
|
|
|
function modeFactory({ modeConfiguration }) {
|
|
return {
|
|
/**
|
|
* Mode ID, which should be unique among modes used by the viewer. This ID
|
|
* is used to identify the mode in the viewer's state.
|
|
*/
|
|
id,
|
|
routeName: 'template',
|
|
/**
|
|
* Mode name, which is displayed in the viewer's UI in the workList, for the
|
|
* user to select the mode.
|
|
*/
|
|
displayName: 'Template Mode',
|
|
/**
|
|
* Runs when the Mode Route is mounted to the DOM. Usually used to initialize
|
|
* Services and other resources.
|
|
*/
|
|
onModeEnter: ({ servicesManager, extensionManager }) => {},
|
|
/**
|
|
* Runs when the Mode Route is unmounted from the DOM. Usually used to clean
|
|
* up resources and states
|
|
*/
|
|
onModeExit: () => {},
|
|
/** */
|
|
validationTags: {
|
|
study: [],
|
|
series: [],
|
|
},
|
|
/**
|
|
* A boolean return value that indicates whether the mode is valid for the
|
|
* modalities of the selected studies. For instance a PET/CT mode should be
|
|
*/
|
|
isValidMode: ({ modalities }) => true,
|
|
/**
|
|
* Mode Routes are used to define the mode's behavior. A list of Mode Route
|
|
* that includes the mode's path and the layout to be used. The layout will
|
|
* include the components that are used in the layout. For instance, if the
|
|
* default layoutTemplate is used (id: '@ohif/extension-default.layoutTemplateModule.viewerLayout')
|
|
* it will include the leftPanels, rightPanels, and viewports. However, if
|
|
* you define another layoutTemplate that includes a Footer for instance,
|
|
* you should provide the Footer component here too. Note: We use Strings
|
|
* to reference the component's ID as they are registered in the internal
|
|
* ExtensionManager. The template for the string is:
|
|
* `${extensionId}.{moduleType}.${componentId}`.
|
|
*/
|
|
routes: [
|
|
{
|
|
path: 'template',
|
|
layoutTemplate: ({ location, servicesManager }) => {
|
|
return {
|
|
id: ohif.layout,
|
|
props: {
|
|
leftPanels: [ohif.leftPanel],
|
|
rightPanels: [ohif.rightPanel],
|
|
viewports: [
|
|
{
|
|
namespace: cornerstone.viewport,
|
|
displaySetsToDisplay: [ohif.sopClassHandler],
|
|
},
|
|
],
|
|
},
|
|
};
|
|
},
|
|
},
|
|
],
|
|
/** List of extensions that are used by the mode */
|
|
extensions: extensionDependencies,
|
|
/** HangingProtocol used by the mode */
|
|
// hangingProtocol: [''],
|
|
/** SopClassHandlers used by the mode */
|
|
sopClassHandlers: [ohif.sopClassHandler],
|
|
/** hotkeys for mode */
|
|
hotkeys: [''],
|
|
};
|
|
}
|
|
|
|
const mode = {
|
|
id,
|
|
modeFactory,
|
|
extensionDependencies,
|
|
};
|
|
|
|
export default mode;
|