* WindowLevel preset code changes * Remove localStorage code as its already being saved and some small refactor on reducer/action * Creating unit tests for preferences reducer * Fix cypress after class naming change * Make hidden false as default for tab components * Remove addUserPreferences * Small refactor to use commandsManager from getCommandsModule instead of getting it from App.js
141 lines
4.1 KiB
JavaScript
141 lines
4.1 KiB
JavaScript
import { redux } from '@ohif/core';
|
|
import store from './../../store';
|
|
|
|
const commandsModule = ({ commandsManager }) => {
|
|
const { setViewportActive, setActiveViewportSpecificData } = redux.actions;
|
|
|
|
const actions = {
|
|
updateActiveViewport: ({ viewports, direction }) => {
|
|
const { viewportSpecificData, activeViewportIndex } = viewports;
|
|
const maxIndex = Object.keys(viewportSpecificData).length - 1;
|
|
|
|
let newIndex = activeViewportIndex + direction;
|
|
newIndex = newIndex > maxIndex ? 0 : newIndex;
|
|
newIndex = newIndex < 0 ? maxIndex : newIndex;
|
|
|
|
store.dispatch(setViewportActive(newIndex));
|
|
},
|
|
setWindowLevelPreset: ({ viewports, preset }) => {
|
|
const state = store.getState();
|
|
const { preferences = {} } = state;
|
|
const { window, level } =
|
|
preferences.windowLevelData && preferences.windowLevelData[preset];
|
|
|
|
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
|
|
);
|
|
|
|
if (!studyMetadata) {
|
|
return;
|
|
}
|
|
|
|
const allDisplaySets = studyMetadata.getDisplaySets();
|
|
const currentDisplaySetIndex = allDisplaySets.findIndex(
|
|
displaySet =>
|
|
displaySet.displaySetInstanceUid ===
|
|
activeViewport.displaySetInstanceUid
|
|
);
|
|
if (currentDisplaySetIndex < 0) {
|
|
return;
|
|
}
|
|
|
|
const newDisplaySetIndex = currentDisplaySetIndex + direction;
|
|
const newDisplaySetData = allDisplaySets[newDisplaySetIndex];
|
|
if (!newDisplaySetData) {
|
|
return;
|
|
}
|
|
|
|
store.dispatch(setActiveViewportSpecificData(newDisplaySetData));
|
|
},
|
|
};
|
|
|
|
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',
|
|
};
|
|
};
|
|
|
|
export default commandsModule;
|