+
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}
>