OHIF with Cornerstone3D 2.0 (#4347)
This commit is contained in:
1 parent
8981a61b8c
commit
7ce7127d7c
803 files changed
+32760
-15893
No files matched your search
@@ -1,4 +1,4 @@
|
||||
import { utils, Types } from '@ohif/core';
|
||||
import { Types } from '@ohif/core';
|
||||
|
||||
import { ContextMenuController, defaultContextMenu } from './CustomizableContextMenu';
|
||||
import DicomTagBrowser from './DicomTagBrowser/DicomTagBrowser';
|
||||
@@ -10,8 +10,13 @@ import findViewportsByPosition, {
|
||||
import { ContextMenuProps } from './CustomizableContextMenu/types';
|
||||
import { NavigateHistory } from './types/commandModuleTypes';
|
||||
import { history } from '@ohif/app';
|
||||
import { useViewportGridStore } from './stores/useViewportGridStore';
|
||||
import { useDisplaySetSelectorStore } from './stores/useDisplaySetSelectorStore';
|
||||
import { useHangingProtocolStageIndexStore } from './stores/useHangingProtocolStageIndexStore';
|
||||
import { useToggleHangingProtocolStore } from './stores/useToggleHangingProtocolStore';
|
||||
import { useViewportsByPositionStore } from './stores/useViewportsByPositionStore';
|
||||
import { useToggleOneUpViewportGridStore } from './stores/useToggleOneUpViewportGridStore';
|
||||
|
||||
const { subscribeToNextViewportGridChange } = utils;
|
||||
export type HangingProtocolParams = {
|
||||
protocolId?: string;
|
||||
stageIndex?: number;
|
||||
@@ -36,7 +41,6 @@ const commandsModule = ({
|
||||
uiNotificationService,
|
||||
viewportGridService,
|
||||
displaySetService,
|
||||
stateSyncService,
|
||||
} = servicesManager.services;
|
||||
|
||||
// Define a context menu controller for use with any context menus
|
||||
@@ -134,9 +138,9 @@ const commandsModule = ({
|
||||
// the activeViewportId
|
||||
const state = viewportGridService.getState();
|
||||
const hpInfo = hangingProtocolService.getState();
|
||||
const stateSyncReduce = reuseCachedLayouts(state, hangingProtocolService, stateSyncService);
|
||||
const { hangingProtocolStageIndexMap, viewportGridStore, displaySetSelectorMap } =
|
||||
stateSyncReduce;
|
||||
reuseCachedLayouts(state, hangingProtocolService);
|
||||
const { hangingProtocolStageIndexMap } = useHangingProtocolStageIndexStore.getState();
|
||||
const { displaySetSelectorMap } = useDisplaySetSelectorStore.getState();
|
||||
|
||||
if (!protocolId) {
|
||||
// Reuse the previous protocol id, and optionally stage
|
||||
@@ -165,7 +169,8 @@ const commandsModule = ({
|
||||
useStageIdx || 0
|
||||
}`;
|
||||
|
||||
const restoreProtocol = !reset && viewportGridStore[storedHanging];
|
||||
const { viewportGridState } = useViewportGridStore.getState();
|
||||
const restoreProtocol = !reset && viewportGridState[storedHanging];
|
||||
|
||||
if (
|
||||
protocolId === hpInfo.protocolId &&
|
||||
@@ -185,17 +190,15 @@ const commandsModule = ({
|
||||
restoreProtocol,
|
||||
});
|
||||
if (restoreProtocol) {
|
||||
viewportGridService.set(viewportGridStore[storedHanging]);
|
||||
viewportGridService.set(viewportGridState[storedHanging]);
|
||||
}
|
||||
}
|
||||
// Do this after successfully applying the update
|
||||
// Note, don't store the active display set - it is only needed while
|
||||
// changing display sets. This causes jump to measurement to fail on
|
||||
// multi-study display.
|
||||
delete displaySetSelectorMap[
|
||||
`${activeStudyUID || hpInfo.activeStudyUID}:activeDisplaySet:0`
|
||||
];
|
||||
stateSyncService.store(stateSyncReduce);
|
||||
const { setDisplaySetSelector } = useDisplaySetSelectorStore.getState();
|
||||
setDisplaySetSelector(
|
||||
`${activeStudyUID || hpInfo.activeStudyUID}:activeDisplaySet:0`,
|
||||
null
|
||||
);
|
||||
return true;
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
@@ -215,7 +218,8 @@ const commandsModule = ({
|
||||
stageIndex: desiredStageIndex,
|
||||
activeStudy,
|
||||
} = hangingProtocolService.getActiveProtocol();
|
||||
const { toggleHangingProtocol } = stateSyncService.getState();
|
||||
const { toggleHangingProtocol, setToggleHangingProtocol } =
|
||||
useToggleHangingProtocolStore.getState();
|
||||
const storedHanging = `${activeStudy.StudyInstanceUID}:${protocolId}:${stageIndex | 0}`;
|
||||
if (
|
||||
protocol.id === protocolId &&
|
||||
@@ -227,14 +231,9 @@ const commandsModule = ({
|
||||
};
|
||||
return actions.setHangingProtocol(previousState);
|
||||
} else {
|
||||
stateSyncService.store({
|
||||
toggleHangingProtocol: {
|
||||
...toggleHangingProtocol,
|
||||
[storedHanging]: {
|
||||
protocolId: protocol.id,
|
||||
stageIndex: desiredStageIndex,
|
||||
},
|
||||
},
|
||||
setToggleHangingProtocol(storedHanging, {
|
||||
protocolId: protocol.id,
|
||||
stageIndex: desiredStageIndex,
|
||||
});
|
||||
return actions.setHangingProtocol({
|
||||
protocolId,
|
||||
@@ -281,12 +280,15 @@ const commandsModule = ({
|
||||
|
||||
const completeLayout = () => {
|
||||
const state = viewportGridService.getState();
|
||||
const stateReduce = findViewportsByPosition(state, { numRows, numCols }, stateSyncService);
|
||||
findViewportsByPosition(state, { numRows, numCols });
|
||||
|
||||
const { viewportsByPosition, initialInDisplay } = useViewportsByPositionStore.getState();
|
||||
|
||||
const findOrCreateViewport = layoutFindOrCreate.bind(
|
||||
null,
|
||||
hangingProtocolService,
|
||||
isHangingProtocolLayout,
|
||||
stateReduce.viewportsByPosition
|
||||
{ ...viewportsByPosition, initialInDisplay }
|
||||
);
|
||||
|
||||
viewportGridService.setLayout({
|
||||
@@ -295,7 +297,6 @@ const commandsModule = ({
|
||||
findOrCreateViewport,
|
||||
isHangingProtocolLayout,
|
||||
});
|
||||
stateSyncService.store(stateReduce);
|
||||
};
|
||||
// Need to finish any work in the callback
|
||||
window.setTimeout(completeLayout, 0);
|
||||
@@ -309,9 +310,9 @@ const commandsModule = ({
|
||||
|
||||
if (layout.numCols === 1 && layout.numRows === 1) {
|
||||
// The viewer is in one-up. Check if there is a state to restore/toggle back to.
|
||||
const { toggleOneUpViewportGridStore } = stateSyncService.getState();
|
||||
const { toggleOneUpViewportGridStore } = useToggleOneUpViewportGridStore.getState();
|
||||
|
||||
if (!toggleOneUpViewportGridStore.layout) {
|
||||
if (!toggleOneUpViewportGridStore) {
|
||||
return;
|
||||
}
|
||||
// There is a state to toggle back to. The viewport that was
|
||||
@@ -374,11 +375,9 @@ const commandsModule = ({
|
||||
// We are not in one-up, so toggle to one up.
|
||||
|
||||
// Store the current viewport grid state so we can toggle it back later.
|
||||
stateSyncService.store({
|
||||
toggleOneUpViewportGridStore: viewportGridState,
|
||||
});
|
||||
const { setToggleOneUpViewportGridStore } = useToggleOneUpViewportGridStore.getState();
|
||||
setToggleOneUpViewportGridStore(viewportGridState);
|
||||
|
||||
// This findOrCreateViewport only return one viewport - the active
|
||||
// one being toggled to one up.
|
||||
const findOrCreateViewport = () => {
|
||||
return {
|
||||
@@ -395,19 +394,6 @@ const commandsModule = ({
|
||||
findOrCreateViewport,
|
||||
isHangingProtocolLayout: true,
|
||||
});
|
||||
|
||||
// Subscribe to ANY (i.e. manual and hanging protocol) layout changes so that
|
||||
// any grid layout state to toggle to from one up is cleared. This is performed on
|
||||
// a timeout to avoid clearing the state for the actual to one up change.
|
||||
// Whenever the next layout change event is fired, the subscriptions are unsubscribed.
|
||||
const clearToggleOneUpViewportGridStore = () => {
|
||||
const toggleOneUpViewportGridStore = {};
|
||||
stateSyncService.store({
|
||||
toggleOneUpViewportGridStore,
|
||||
});
|
||||
};
|
||||
|
||||
subscribeToNextViewportGridChange(viewportGridService, clearToggleOneUpViewportGridStore);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
Reference in new issue
Block a user