From 25ded882ecdde698730ec7038767cff14dc6e77b Mon Sep 17 00:00:00 2001 From: James Petts Date: Mon, 6 Jul 2020 13:28:21 +0100 Subject: [PATCH] Disable double click for now. (#1872) --- .../dicom-sr/src/OHIFCornerstoneSRViewport.js | 9 ++-- .../viewports/TrackedCornerstoneViewport.js | 9 ++-- .../ViewportGridService.js | 10 ++++ .../contextProviders/ViewportGridProvider.jsx | 29 +++++++++-- .../viewer/src/components/ViewportGrid.jsx | 48 +++++++++++-------- 5 files changed, 71 insertions(+), 34 deletions(-) diff --git a/extensions/dicom-sr/src/OHIFCornerstoneSRViewport.js b/extensions/dicom-sr/src/OHIFCornerstoneSRViewport.js index 9cac23138..d7232dc07 100644 --- a/extensions/dicom-sr/src/OHIFCornerstoneSRViewport.js +++ b/extensions/dicom-sr/src/OHIFCornerstoneSRViewport.js @@ -404,6 +404,8 @@ function OHIFCornerstoneSRViewport({ ? _viewportLabels[firstViewportIndexWithMatchingDisplaySetUid] : ''; + // TODO -> disabled double click for now: onDoubleClick={_onDoubleClick} + return ( <> -
+ +
disabled double click for now: onDoubleClick={_onDoubleClick} + return ( <> {/* TODO: Viewport interface to accept stack or layers of content like this? */} -
+
console.warn('setLayout() NOT IMPLEMENTED'), _reset: () => console.warn('reset() NOT IMPLEMENTED'), _setCachedLayout: () => console.warn('setCachedLayout() NOT IMPLEMENTED'), + _set: () => console.warn('set() NOT IMPLEMENTED'), }; function _getState() { @@ -41,6 +43,10 @@ function _setLayout({ numCols, numRows }) { return serviceImplementation._setLayout({ numCols, numRows }); } +function _set(state) { + return serviceImplementation._set(state); +} + function _reset() { return serviceImplementation._reset({}); } @@ -55,6 +61,7 @@ function setServiceImplementation({ setCachedLayout: setCachedLayoutImplementation, setLayout: setLayoutImplementation, reset: resetImplementation, + set: setImplementation, }) { if (getStateImplementation) { serviceImplementation._getState = getStateImplementation; @@ -74,6 +81,9 @@ function setServiceImplementation({ if (setCachedLayoutImplementation) { serviceImplementation._setCachedLayout = setCachedLayoutImplementation; } + if (setImplementation) { + serviceImplementation._set = setImplementation; + } } export default { diff --git a/platform/ui/src/contextProviders/ViewportGridProvider.jsx b/platform/ui/src/contextProviders/ViewportGridProvider.jsx index 2eb184537..a9c86b29d 100644 --- a/platform/ui/src/contextProviders/ViewportGridProvider.jsx +++ b/platform/ui/src/contextProviders/ViewportGridProvider.jsx @@ -36,7 +36,7 @@ export function ViewportGridProvider({ children, service }) { viewports[viewportIndex] = { displaySetInstanceUID, imageIndex }; - return { ...state, ...{ viewports }, cachedLayout: undefined }; + return { ...state, ...{ viewports }, cachedLayout: null }; } case 'SET_LAYOUT': { const { numCols, numRows } = action.payload; @@ -55,7 +55,7 @@ export function ViewportGridProvider({ children, service }) { return { ...state, ...{ activeViewportIndex, numCols, numRows, viewports }, - cachedLayout: undefined, + cachedLayout: null, }; } case 'RESET': { @@ -63,15 +63,21 @@ export function ViewportGridProvider({ children, service }) { numCols: 1, numRows: 1, activeViewportIndex: 0, - viewports: [ - { displaySetInstanceUID: undefined, imageIndex: undefined }, - ], + viewports: [{ displaySetInstanceUID: null, imageIndex: null }], + cachedLayout: null, }; } case 'SET_CACHED_LAYOUT': { return { ...state, cachedLayout: action.payload }; } + case 'SET': { + return { + ...state, + ...action.payload, + }; + } + default: return action.payload; } @@ -129,6 +135,15 @@ export function ViewportGridProvider({ children, service }) { [dispatch] ); + const set = useCallback( + payload => + dispatch({ + type: 'SET', + payload, + }), + [dispatch] + ); + /** * Sets the implementation of a modal service that can be used by extensions. * @@ -143,6 +158,7 @@ export function ViewportGridProvider({ children, service }) { setLayout, reset, setCachedLayout, + set, }); } }, [ @@ -153,6 +169,7 @@ export function ViewportGridProvider({ children, service }) { setLayout, reset, setCachedLayout, + set, ]); const api = { @@ -161,6 +178,8 @@ export function ViewportGridProvider({ children, service }) { setDisplaysetForViewport, setLayout, setCachedLayout, + reset, + set, }; return ( diff --git a/platform/viewer/src/components/ViewportGrid.jsx b/platform/viewer/src/components/ViewportGrid.jsx index 652124fec..3eefc6aba 100644 --- a/platform/viewer/src/components/ViewportGrid.jsx +++ b/platform/viewer/src/components/ViewportGrid.jsx @@ -30,6 +30,7 @@ function ViewerViewportGrid(props) { const isImageSet = x => x instanceof ImageSet; return isImageSet(a) === isImageSet(b) ? 0 : isImageSet(a) ? -1 : 1; }); + viewportGridService.setDisplaysetForViewport({ viewportIndex: 0, displaySetInstanceUID: displaySets[0].displaySetInstanceUID, @@ -68,17 +69,17 @@ function ViewerViewportGrid(props) { }; const onDoubleClick = viewportIndex => { + // TODO -> Disabled for now. + // onNewImage on a cornerstone viewport is firing setDisplaySetForViewport. + // Which it really really shouldn't. We need a larger fix for jump to + // measurements and all cornerstone "imageIndex" state to fix this. if (cachedLayout) { - viewportGridService.setLayout({ + viewportGridService.set({ numCols: cachedLayout.numCols, numRows: cachedLayout.numRows, - }); - - cachedLayout.viewports.forEach((viewport, viewportIndex) => { - viewportGridService.setDisplaysetForViewport({ - viewportIndex, - displaySetInstanceUID: viewport.displaySetInstanceUID, - }); + activeViewportIndex: cachedLayout.activeViewportIndex, + viewports: cachedLayout.viewports, + cachedLayout: null, }); return; @@ -90,17 +91,22 @@ function ViewerViewportGrid(props) { }; }); - viewportGridService.setDisplaysetForViewport({ - viewportIndex: 0, - displaySetInstanceUID: viewports[viewportIndex].displaySetInstanceUID, - }); - - viewportGridService.setLayout({ numCols: 1, numRows: 1 }); - - viewportGridService.setCachedLayout({ - numCols, - numRows, - viewports: cachedViewports, + viewportGridService.set({ + numCols: 1, + numRows: 1, + activeViewportIndex: 0, + viewports: [ + { + displaySetInstanceUID: viewports[viewportIndex].displaySetInstanceUID, + imageIndex: undefined, + }, + ], + cachedLayout: { + numCols, + numRows, + viewports: cachedViewports, + activeViewportIndex: viewportIndex, + }, }); }; @@ -157,6 +163,9 @@ function ViewerViewportGrid(props) { setActiveViewportIndex(viewportIndex); }; + // TEMP -> Double click disabled for now + // onDoubleClick={() => onDoubleClick(viewportIndex)} + viewportPanes[i] = ( onDoubleClick(viewportIndex)} isActive={activeViewportIndex === viewportIndex} >