fix(segmentation): Changes to fix problems with non hydrated/loaded segmentations to be viewable when switching hanging protocols (e.g. MPR) (#5139)

This commit is contained in:
Joe Boccanfuso authored and GitHub committed 2025-06-27 07:11:46 -04:00
1 parent 9a81f8cef5
commit c2624f116d
24 files changed
+199 -47

No files matched your search

@@ -6,7 +6,7 @@ import { useHangingProtocolStageIndexStore } from '../stores/useHangingProtocolS
export type ReturnType = {
hangingProtocolStageIndexMap: Record<string, Types.HangingProtocol.HPInfo>;
viewportGridStore: Record<string, unknown>;
displaySetSelectorMap: Record<string, string>;
displaySetSelectorMap: Record<string, Array<string>>;
};
/**
@@ -53,24 +53,33 @@ const reuseCachedLayout = (state, hangingProtocolService: HangingProtocolService
if (!displaySetOptions) {
return;
}
const activeDisplaySetUIDs = [];
for (let i = 0; i < displaySetOptions.length; i++) {
const displaySetUID = displaySetInstanceUIDs[i];
if (!displaySetUID) {
continue;
}
if (viewportId === activeViewportId && i === 0) {
setDisplaySetSelector(`${activeStudyUID}:activeDisplaySet:0`, displaySetUID);
if (viewportId === activeViewportId) {
activeDisplaySetUIDs.push(displaySetUID);
}
// The activeDisplaySet selector should only be set once (i.e. for the actual active display set)
if (displaySetOptions[i]?.id && displaySetOptions[i].id !== 'activeDisplaySet') {
// TODO: handle multiple layers/display sets for the non-active viewports
setDisplaySetSelector(
`${activeStudyUID}:${displaySetOptions[i].id}:${
displaySetOptions[i].matchedDisplaySetsIndex || 0
}`,
displaySetUID
[displaySetUID]
);
}
}
if (viewportId === activeViewportId) {
// After going through all the display set options for the active viewport, store the display set selector array
setDisplaySetSelector(`${activeStudyUID}:activeDisplaySet:0`, activeDisplaySetUIDs);
}
});
setHangingProtocolStageIndex(cacheId, hpInfo);