From 06a4af06faaecf6fa06ccd90cdfa879ee8d53053 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavo=20Andr=C3=A9=20Lelis?= Date: Fri, 14 Feb 2020 17:54:08 -0300 Subject: [PATCH] fix: Creating 2 commands to activate zoom tool and also to move between displaySets (#1446) --- extensions/cornerstone/src/commandsModule.js | 23 ++----- platform/viewer/public/config/default.js | 4 +- platform/viewer/public/config/demo.js | 4 +- platform/viewer/public/config/netlify.js | 4 +- .../GenericViewerCommands/commandsModule.js | 63 ++++++++++++++----- 5 files changed, 61 insertions(+), 37 deletions(-) diff --git a/extensions/cornerstone/src/commandsModule.js b/extensions/cornerstone/src/commandsModule.js index db2627c34..318abe9ab 100644 --- a/extensions/cornerstone/src/commandsModule.js +++ b/extensions/cornerstone/src/commandsModule.js @@ -74,10 +74,6 @@ const commandsModule = ({ servicesManager }) => { } cornerstoneTools.setToolActive(toolName, { mouseButtonMask: 1 }); }, - updateViewportDisplaySet: ({ direction }) => { - // TODO - console.warn('updateDisplaySet: ', direction); - }, clearAnnotations: ({ viewports }) => { const element = getEnabledElement(viewports.activeViewportIndex); if (!element) { @@ -245,7 +241,7 @@ const commandsModule = ({ servicesManager }) => { }, setCornerstoneLayout: () => { setCornerstoneLayout(); - } + }, }; const definitions = { @@ -334,24 +330,17 @@ const commandsModule = ({ servicesManager }) => { storeContexts: ['viewports'], options: {}, }, - // TODO: First/Last image - // Next/Previous series/DisplaySet - nextViewportDisplaySet: { - commandFn: actions.updateViewportDisplaySet, - storeContexts: [], - options: { direction: 1 }, - }, - previousViewportDisplaySet: { - commandFn: actions.updateViewportDisplaySet, - storeContexts: [], - options: { direction: -1 }, - }, // TOOLS setToolActive: { commandFn: actions.setToolActive, storeContexts: [], options: {}, }, + setZoomTool: { + commandFn: actions.setToolActive, + storeContexts: [], + options: { toolName: 'Zoom' }, + }, setCornerstoneLayout: { commandFn: actions.setCornerstoneLayout, storeContexts: [], diff --git a/platform/viewer/public/config/default.js b/platform/viewer/public/config/default.js index fc74100b3..063ff45bf 100644 --- a/platform/viewer/public/config/default.js +++ b/platform/viewer/public/config/default.js @@ -58,12 +58,12 @@ window.config = { // firstImage // lastImage { - commandName: 'nextViewportDisplaySet', + commandName: 'previousViewportDisplaySet', label: 'Previous Series', keys: ['pagedown'], }, { - commandName: 'previousViewportDisplaySet', + commandName: 'nextViewportDisplaySet', label: 'Next Series', keys: ['pageup'], }, diff --git a/platform/viewer/public/config/demo.js b/platform/viewer/public/config/demo.js index 0db0a2bac..1fd296898 100644 --- a/platform/viewer/public/config/demo.js +++ b/platform/viewer/public/config/demo.js @@ -48,12 +48,12 @@ window.config = { { commandName: 'nextImage', label: 'Next Image', keys: ['down'] }, { commandName: 'previousImage', label: 'Previous Image', keys: ['up'] }, { - commandName: 'nextViewportDisplaySet', + commandName: 'previousViewportDisplaySet', label: 'Previous Series', keys: ['pagedown'], }, { - commandName: 'previousViewportDisplaySet', + commandName: 'nextViewportDisplaySet', label: 'Next Series', keys: ['pageup'], }, diff --git a/platform/viewer/public/config/netlify.js b/platform/viewer/public/config/netlify.js index b46bd8fb6..d041010c5 100644 --- a/platform/viewer/public/config/netlify.js +++ b/platform/viewer/public/config/netlify.js @@ -53,12 +53,12 @@ window.config = { // firstImage // lastImage { - commandName: 'nextViewportDisplaySet', + commandName: 'previousViewportDisplaySet', label: 'Previous Series', keys: ['pagedown'], }, { - commandName: 'previousViewportDisplaySet', + commandName: 'nextViewportDisplaySet', label: 'Next Series', keys: ['pageup'], }, diff --git a/platform/viewer/src/appExtensions/GenericViewerCommands/commandsModule.js b/platform/viewer/src/appExtensions/GenericViewerCommands/commandsModule.js index 7c79e6e23..7c9bd790c 100644 --- a/platform/viewer/src/appExtensions/GenericViewerCommands/commandsModule.js +++ b/platform/viewer/src/appExtensions/GenericViewerCommands/commandsModule.js @@ -1,12 +1,8 @@ -import { redux } from "@ohif/core"; -import store from "./../../store"; -const { setViewportActive } = redux.actions; +import { redux, utils } from '@ohif/core'; +import store from './../../store'; +const { setViewportActive, setActiveViewportSpecificData } = redux.actions; const actions = { - updateViewportDisplaySet: ({ direction }) => { - // TODO - // console.warn('updateDisplaySet: ', direction); - }, updateActiveViewport: ({ viewports, direction }) => { const { viewportSpecificData, activeViewportIndex } = viewports; const maxIndex = Object.keys(viewportSpecificData).length - 1; @@ -16,24 +12,63 @@ const actions = { newIndex = newIndex < 0 ? maxIndex : newIndex; store.dispatch(setViewportActive(newIndex)); - } + }, + 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 } + storeContexts: ['viewports'], + options: { direction: 1 }, }, decrementActiveViewport: { commandFn: actions.updateActiveViewport, - storeContexts: ["viewports"], - options: { direction: -1 } - } + storeContexts: ['viewports'], + options: { direction: -1 }, + }, + nextViewportDisplaySet: { + commandFn: actions.updateViewportDisplaySet, + storeContexts: ['viewports'], + options: { direction: 1 }, + }, + previousViewportDisplaySet: { + commandFn: actions.updateViewportDisplaySet, + storeContexts: ['viewports'], + options: { direction: -1 }, + }, }; export default { definitions, - defaultContext: "VIEWER" + defaultContext: 'VIEWER', };