* feat(OHIFv3):Add a video viewport * Fixed a couple of viewing issues * fix(OHIF):If not all instances are used by a given provider, then continue to add items * Added video data * Add a basic e2e test for video display * Adding a screen shot as requested
119 lines
3.7 KiB
JavaScript
119 lines
3.7 KiB
JavaScript
import toolbarButtons from './toolbarButtons.js';
|
|
import { hotkeys } from '@ohif/core';
|
|
|
|
const ohif = {
|
|
layout: 'org.ohif.default.layoutTemplateModule.viewerLayout',
|
|
sopClassHandler: 'org.ohif.default.sopClassHandlerModule.stack',
|
|
hangingProtocols: 'org.ohif.default.hangingProtocolModule.default',
|
|
};
|
|
|
|
const tracked = {
|
|
measurements: 'org.ohif.measurement-tracking.panelModule.trackedMeasurements',
|
|
thumbnailList: 'org.ohif.measurement-tracking.panelModule.seriesList',
|
|
viewport: 'org.ohif.measurement-tracking.viewportModule.cornerstone-tracked',
|
|
};
|
|
|
|
const dicomsr = {
|
|
sopClassHandler: 'org.ohif.dicom-sr.sopClassHandlerModule.dicom-sr',
|
|
viewport: 'org.ohif.dicom-sr.viewportModule.dicom-sr',
|
|
};
|
|
|
|
const dicomvideo = {
|
|
sopClassHandler: 'org.ohif.dicom-video.sopClassHandlerModule.dicom-video',
|
|
viewport: 'org.ohif.dicom-video.viewportModule.dicom-video',
|
|
}
|
|
|
|
export default function mode({ modeConfiguration }) {
|
|
return {
|
|
// TODO: We're using this as a route segment
|
|
// We should not be.
|
|
id: 'viewer',
|
|
displayName: 'Basic Viewer',
|
|
/**
|
|
* Lifecycle hooks
|
|
*/
|
|
onModeEnter: ({ servicesManager, extensionManager }) => {
|
|
// Note: If tool's aren't initialized, this doesn't have viewport/tools
|
|
// to "set active". This is mostly for the toolbar UI state?
|
|
// Could update tool manager to be always persistent, and to set state
|
|
// on load?
|
|
const { ToolBarService } = servicesManager.services;
|
|
const interaction = {
|
|
groupId: 'primary',
|
|
itemId: 'Wwwc',
|
|
interactionType: 'tool',
|
|
commandOptions: undefined,
|
|
};
|
|
|
|
ToolBarService.recordInteraction(interaction);
|
|
|
|
ToolBarService.init(extensionManager);
|
|
ToolBarService.addButtons(toolbarButtons);
|
|
ToolBarService.createButtonSection('primary', [
|
|
'MeasurementTools',
|
|
'Zoom',
|
|
'WindowLevel',
|
|
'Pan',
|
|
'Capture',
|
|
'Layout',
|
|
'MoreTools',
|
|
]);
|
|
},
|
|
onModeExit: () => {},
|
|
validationTags: {
|
|
study: [],
|
|
series: [],
|
|
},
|
|
isValidMode: ({ modalities }) => {
|
|
const modalities_list = modalities.split('\\');
|
|
|
|
// Slide Microscopy modality not supported by basic mode yet
|
|
return !modalities_list.includes('SM')
|
|
},
|
|
routes: [
|
|
{
|
|
path: 'longitudinal',
|
|
/*init: ({ servicesManager, extensionManager }) => {
|
|
//defaultViewerRouteInit
|
|
},*/
|
|
layoutTemplate: ({ location, servicesManager }) => {
|
|
return {
|
|
id: ohif.layout,
|
|
props: {
|
|
leftPanels: [tracked.thumbnailList],
|
|
// TODO: Should be optional, or required to pass empty array for slots?
|
|
rightPanels: [tracked.measurements],
|
|
viewports: [
|
|
{
|
|
namespace: tracked.viewport,
|
|
displaySetsToDisplay: [ohif.sopClassHandler],
|
|
},
|
|
{
|
|
namespace: dicomsr.viewport,
|
|
displaySetsToDisplay: [dicomsr.sopClassHandler],
|
|
},
|
|
{
|
|
namespace: dicomvideo.viewport,
|
|
displaySetsToDisplay: [dicomvideo.sopClassHandler],
|
|
},
|
|
],
|
|
},
|
|
};
|
|
},
|
|
},
|
|
],
|
|
extensions: [
|
|
'org.ohif.default',
|
|
'org.ohif.cornerstone',
|
|
'org.ohif.measurement-tracking',
|
|
'org.ohif.dicom-sr',
|
|
'org.ohif.dicom-video',
|
|
],
|
|
hangingProtocols: [ohif.hangingProtocols],
|
|
sopClassHandlers: [dicomvideo.sopClassHandler, ohif.sopClassHandler, dicomsr.sopClassHandler,],
|
|
hotkeys: [...hotkeys.defaults.hotkeyBindings],
|
|
};
|
|
}
|
|
|
|
window.longitudinalMode = mode({});
|