Disable double click for now. (#1872)

This commit is contained in:
James Petts 2020-07-06 13:28:21 +01:00 committed by GitHub
parent 9099e197fb
commit 25ded882ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 71 additions and 34 deletions

View File

@ -404,6 +404,8 @@ function OHIFCornerstoneSRViewport({
? _viewportLabels[firstViewportIndexWithMatchingDisplaySetUid] ? _viewportLabels[firstViewportIndexWithMatchingDisplaySetUid]
: ''; : '';
// TODO -> disabled double click for now: onDoubleClick={_onDoubleClick}
return ( return (
<> <>
<ViewportActionBar <ViewportActionBar
@ -441,7 +443,8 @@ function OHIFCornerstoneSRViewport({
}, },
}} }}
/> />
<div className="relative flex flex-row w-full h-full overflow-hidden" onDoubleClick={_onDoubleClick}>
<div className="relative flex flex-row w-full h-full overflow-hidden">
<CornerstoneViewport <CornerstoneViewport
onElementEnabled={onElementEnabled} onElementEnabled={onElementEnabled}
viewportIndex={viewportIndex} viewportIndex={viewportIndex}

View File

@ -292,6 +292,8 @@ function TrackedCornerstoneViewport({
const showNavArrows = isTracked && viewportIndex === activeViewportIndex; const showNavArrows = isTracked && viewportIndex === activeViewportIndex;
// TODO -> disabled double click for now: onDoubleClick={_onDoubleClick}
return ( return (
<> <>
<ViewportActionBar <ViewportActionBar
@ -328,10 +330,7 @@ function TrackedCornerstoneViewport({
}} }}
/> />
{/* TODO: Viewport interface to accept stack or layers of content like this? */} {/* TODO: Viewport interface to accept stack or layers of content like this? */}
<div <div className="relative flex flex-row w-full h-full overflow-hidden">
className="relative flex flex-row w-full h-full overflow-hidden"
onDoubleClick={_onDoubleClick}
>
<CornerstoneViewport <CornerstoneViewport
onElementEnabled={onElementEnabled} onElementEnabled={onElementEnabled}
viewportIndex={viewportIndex} viewportIndex={viewportIndex}
@ -416,7 +415,6 @@ function _getCornerstoneStack(displaySet, dataSource) {
return stack; return stack;
} }
function _onDoubleClick() { function _onDoubleClick() {
const cancelActiveManipulatorsForElement = cornerstoneTools.getModule( const cancelActiveManipulatorsForElement = cornerstoneTools.getModule(
'manipulatorState' 'manipulatorState'
@ -427,7 +425,6 @@ function _onDoubleClick() {
}); });
} }
/** /**
* Builds the viewport data from a datasource and a displayset. * Builds the viewport data from a datasource and a displayset.
* *

View File

@ -9,6 +9,7 @@ const publicAPI = {
setCachedLayout: _setCachedLayout, setCachedLayout: _setCachedLayout,
setServiceImplementation, setServiceImplementation,
reset: _reset, reset: _reset,
set: _set,
}; };
const serviceImplementation = { const serviceImplementation = {
@ -20,6 +21,7 @@ const serviceImplementation = {
_setLayout: () => console.warn('setLayout() NOT IMPLEMENTED'), _setLayout: () => console.warn('setLayout() NOT IMPLEMENTED'),
_reset: () => console.warn('reset() NOT IMPLEMENTED'), _reset: () => console.warn('reset() NOT IMPLEMENTED'),
_setCachedLayout: () => console.warn('setCachedLayout() NOT IMPLEMENTED'), _setCachedLayout: () => console.warn('setCachedLayout() NOT IMPLEMENTED'),
_set: () => console.warn('set() NOT IMPLEMENTED'),
}; };
function _getState() { function _getState() {
@ -41,6 +43,10 @@ function _setLayout({ numCols, numRows }) {
return serviceImplementation._setLayout({ numCols, numRows }); return serviceImplementation._setLayout({ numCols, numRows });
} }
function _set(state) {
return serviceImplementation._set(state);
}
function _reset() { function _reset() {
return serviceImplementation._reset({}); return serviceImplementation._reset({});
} }
@ -55,6 +61,7 @@ function setServiceImplementation({
setCachedLayout: setCachedLayoutImplementation, setCachedLayout: setCachedLayoutImplementation,
setLayout: setLayoutImplementation, setLayout: setLayoutImplementation,
reset: resetImplementation, reset: resetImplementation,
set: setImplementation,
}) { }) {
if (getStateImplementation) { if (getStateImplementation) {
serviceImplementation._getState = getStateImplementation; serviceImplementation._getState = getStateImplementation;
@ -74,6 +81,9 @@ function setServiceImplementation({
if (setCachedLayoutImplementation) { if (setCachedLayoutImplementation) {
serviceImplementation._setCachedLayout = setCachedLayoutImplementation; serviceImplementation._setCachedLayout = setCachedLayoutImplementation;
} }
if (setImplementation) {
serviceImplementation._set = setImplementation;
}
} }
export default { export default {

View File

@ -36,7 +36,7 @@ export function ViewportGridProvider({ children, service }) {
viewports[viewportIndex] = { displaySetInstanceUID, imageIndex }; viewports[viewportIndex] = { displaySetInstanceUID, imageIndex };
return { ...state, ...{ viewports }, cachedLayout: undefined }; return { ...state, ...{ viewports }, cachedLayout: null };
} }
case 'SET_LAYOUT': { case 'SET_LAYOUT': {
const { numCols, numRows } = action.payload; const { numCols, numRows } = action.payload;
@ -55,7 +55,7 @@ export function ViewportGridProvider({ children, service }) {
return { return {
...state, ...state,
...{ activeViewportIndex, numCols, numRows, viewports }, ...{ activeViewportIndex, numCols, numRows, viewports },
cachedLayout: undefined, cachedLayout: null,
}; };
} }
case 'RESET': { case 'RESET': {
@ -63,15 +63,21 @@ export function ViewportGridProvider({ children, service }) {
numCols: 1, numCols: 1,
numRows: 1, numRows: 1,
activeViewportIndex: 0, activeViewportIndex: 0,
viewports: [ viewports: [{ displaySetInstanceUID: null, imageIndex: null }],
{ displaySetInstanceUID: undefined, imageIndex: undefined }, cachedLayout: null,
],
}; };
} }
case 'SET_CACHED_LAYOUT': { case 'SET_CACHED_LAYOUT': {
return { ...state, cachedLayout: action.payload }; return { ...state, cachedLayout: action.payload };
} }
case 'SET': {
return {
...state,
...action.payload,
};
}
default: default:
return action.payload; return action.payload;
} }
@ -129,6 +135,15 @@ export function ViewportGridProvider({ children, service }) {
[dispatch] [dispatch]
); );
const set = useCallback(
payload =>
dispatch({
type: 'SET',
payload,
}),
[dispatch]
);
/** /**
* Sets the implementation of a modal service that can be used by extensions. * Sets the implementation of a modal service that can be used by extensions.
* *
@ -143,6 +158,7 @@ export function ViewportGridProvider({ children, service }) {
setLayout, setLayout,
reset, reset,
setCachedLayout, setCachedLayout,
set,
}); });
} }
}, [ }, [
@ -153,6 +169,7 @@ export function ViewportGridProvider({ children, service }) {
setLayout, setLayout,
reset, reset,
setCachedLayout, setCachedLayout,
set,
]); ]);
const api = { const api = {
@ -161,6 +178,8 @@ export function ViewportGridProvider({ children, service }) {
setDisplaysetForViewport, setDisplaysetForViewport,
setLayout, setLayout,
setCachedLayout, setCachedLayout,
reset,
set,
}; };
return ( return (

View File

@ -30,6 +30,7 @@ function ViewerViewportGrid(props) {
const isImageSet = x => x instanceof ImageSet; const isImageSet = x => x instanceof ImageSet;
return isImageSet(a) === isImageSet(b) ? 0 : isImageSet(a) ? -1 : 1; return isImageSet(a) === isImageSet(b) ? 0 : isImageSet(a) ? -1 : 1;
}); });
viewportGridService.setDisplaysetForViewport({ viewportGridService.setDisplaysetForViewport({
viewportIndex: 0, viewportIndex: 0,
displaySetInstanceUID: displaySets[0].displaySetInstanceUID, displaySetInstanceUID: displaySets[0].displaySetInstanceUID,
@ -68,17 +69,17 @@ function ViewerViewportGrid(props) {
}; };
const onDoubleClick = viewportIndex => { 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) { if (cachedLayout) {
viewportGridService.setLayout({ viewportGridService.set({
numCols: cachedLayout.numCols, numCols: cachedLayout.numCols,
numRows: cachedLayout.numRows, numRows: cachedLayout.numRows,
}); activeViewportIndex: cachedLayout.activeViewportIndex,
viewports: cachedLayout.viewports,
cachedLayout.viewports.forEach((viewport, viewportIndex) => { cachedLayout: null,
viewportGridService.setDisplaysetForViewport({
viewportIndex,
displaySetInstanceUID: viewport.displaySetInstanceUID,
});
}); });
return; return;
@ -90,17 +91,22 @@ function ViewerViewportGrid(props) {
}; };
}); });
viewportGridService.setDisplaysetForViewport({ viewportGridService.set({
viewportIndex: 0, numCols: 1,
numRows: 1,
activeViewportIndex: 0,
viewports: [
{
displaySetInstanceUID: viewports[viewportIndex].displaySetInstanceUID, displaySetInstanceUID: viewports[viewportIndex].displaySetInstanceUID,
}); imageIndex: undefined,
},
viewportGridService.setLayout({ numCols: 1, numRows: 1 }); ],
cachedLayout: {
viewportGridService.setCachedLayout({
numCols, numCols,
numRows, numRows,
viewports: cachedViewports, viewports: cachedViewports,
activeViewportIndex: viewportIndex,
},
}); });
}; };
@ -157,6 +163,9 @@ function ViewerViewportGrid(props) {
setActiveViewportIndex(viewportIndex); setActiveViewportIndex(viewportIndex);
}; };
// TEMP -> Double click disabled for now
// onDoubleClick={() => onDoubleClick(viewportIndex)}
viewportPanes[i] = ( viewportPanes[i] = (
<ViewportPane <ViewportPane
key={viewportIndex} key={viewportIndex}
@ -164,7 +173,6 @@ function ViewerViewportGrid(props) {
acceptDropsFor="displayset" acceptDropsFor="displayset"
onDrop={onDropHandler.bind(null, viewportIndex)} onDrop={onDropHandler.bind(null, viewportIndex)}
onInteraction={onInterationHandler} onInteraction={onInterationHandler}
onDoubleClick={() => onDoubleClick(viewportIndex)}
isActive={activeViewportIndex === viewportIndex} isActive={activeViewportIndex === viewportIndex}
> >
<ViewportComponent <ViewportComponent