Files
ohif-viewer/platform/viewer/src/appExtensions/GenericViewerCommands/commandsModule.js
T

140 lines
4.1 KiB
JavaScript
Raw Normal View History

import { redux, utils } from '@ohif/core';
import store from './../../store';
2019-05-31 16:25:10 -04:00
2020-02-20 18:25:26 -03:00
const commandsModule = ({ commandsManager }) => {
const { setViewportActive, setActiveViewportSpecificData } = redux.actions;
2019-05-31 16:25:10 -04:00
2020-02-20 18:25:26 -03:00
const actions = {
updateActiveViewport: ({ viewports, direction }) => {
const { viewportSpecificData, activeViewportIndex } = viewports;
const maxIndex = Object.keys(viewportSpecificData).length - 1;
2019-05-31 16:25:10 -04:00
2020-02-20 18:25:26 -03:00
let newIndex = activeViewportIndex + direction;
newIndex = newIndex > maxIndex ? 0 : newIndex;
newIndex = newIndex < 0 ? maxIndex : newIndex;
2020-02-20 18:25:26 -03:00
store.dispatch(setViewportActive(newIndex));
},
setWindowLevelPreset: ({ viewports, preset }) => {
const state = store.getState();
const { preferences = {} } = state;
const { window, level } =
preferences.windowLevelData && preferences.windowLevelData[preset];
2020-02-20 18:25:26 -03:00
if (window && level) {
commandsManager.runCommand('setWindowLevel', {
viewports,
window,
level,
});
}
},
updateViewportDisplaySet: ({ viewports, direction }) => {
const viewportSpecificData = { ...viewports.viewportSpecificData };
const activeViewport =
viewportSpecificData[viewports.activeViewportIndex];
const studyMetadata = utils.studyMetadataManager.get(
activeViewport.StudyInstanceUID
2020-02-20 18:25:26 -03:00
);
2020-02-20 18:25:26 -03:00
if (!studyMetadata) {
return;
}
2020-02-20 18:25:26 -03:00
const allDisplaySets = studyMetadata.getDisplaySets();
const currentDisplaySetIndex = allDisplaySets.findIndex(
displaySet =>
displaySet.displaySetInstanceUID ===
activeViewport.displaySetInstanceUID
2020-02-20 18:25:26 -03:00
);
if (currentDisplaySetIndex < 0) {
return;
}
2019-05-31 16:25:10 -04:00
2020-02-20 18:25:26 -03:00
const newDisplaySetIndex = currentDisplaySetIndex + direction;
const newDisplaySetData = allDisplaySets[newDisplaySetIndex];
if (!newDisplaySetData) {
return;
}
store.dispatch(setActiveViewportSpecificData(newDisplaySetData));
},
};
2020-02-20 18:25:26 -03:00
const definitions = {
// Next/Previous active viewport
incrementActiveViewport: {
commandFn: actions.updateActiveViewport,
storeContexts: ['viewports'],
options: { direction: 1 },
},
decrementActiveViewport: {
commandFn: actions.updateActiveViewport,
storeContexts: ['viewports'],
options: { direction: -1 },
},
// Window level Presets
windowLevelPreset1: {
commandFn: actions.setWindowLevelPreset,
storeContexts: ['viewports'],
options: { preset: 1 },
},
windowLevelPreset2: {
commandFn: actions.setWindowLevelPreset,
storeContexts: ['viewports'],
options: { preset: 2 },
},
windowLevelPreset3: {
commandFn: actions.setWindowLevelPreset,
storeContexts: ['viewports'],
options: { preset: 3 },
},
windowLevelPreset4: {
commandFn: actions.setWindowLevelPreset,
storeContexts: ['viewports'],
options: { preset: 4 },
},
windowLevelPreset5: {
commandFn: actions.setWindowLevelPreset,
storeContexts: ['viewports'],
options: { preset: 5 },
},
windowLevelPreset6: {
commandFn: actions.setWindowLevelPreset,
storeContexts: ['viewports'],
options: { preset: 6 },
},
windowLevelPreset7: {
commandFn: actions.setWindowLevelPreset,
storeContexts: ['viewports'],
options: { preset: 7 },
},
windowLevelPreset8: {
commandFn: actions.setWindowLevelPreset,
storeContexts: ['viewports'],
options: { preset: 8 },
},
windowLevelPreset9: {
commandFn: actions.setWindowLevelPreset,
storeContexts: ['viewports'],
options: { preset: 9 },
},
nextViewportDisplaySet: {
commandFn: actions.updateViewportDisplaySet,
storeContexts: ['viewports'],
options: { direction: 1 },
},
previousViewportDisplaySet: {
commandFn: actions.updateViewportDisplaySet,
storeContexts: ['viewports'],
options: { direction: -1 },
},
};
return {
definitions,
defaultContext: 'VIEWER',
};
2019-07-04 14:09:13 -04:00
};
2020-02-20 18:25:26 -03:00
export default commandsModule;