* fix: The display of linked viewports during drag and drop has a race * PR review comments * fix: Segmentation display two up * Removing console logs * Fix the blank viewport can have stuff added to it * Fix the null name on HP module * Fix the navigate to initial image * Fix the nth interleave loader * Fix the unit tests * PR comments - docs mostly * fix: Exception thrown on change displayset after double click
70 lines
1.9 KiB
TypeScript
70 lines
1.9 KiB
TypeScript
async function _hydrateSEGDisplaySet({
|
|
segDisplaySet,
|
|
viewportIndex,
|
|
servicesManager,
|
|
}) {
|
|
const {
|
|
segmentationService,
|
|
hangingProtocolService,
|
|
viewportGridService,
|
|
} = servicesManager.services;
|
|
|
|
const displaySetInstanceUID = segDisplaySet.referencedDisplaySetInstanceUID;
|
|
|
|
let segmentationId = null;
|
|
|
|
// We need the hydration to notify panels about the new segmentation added
|
|
const suppressEvents = false;
|
|
|
|
segmentationId = await segmentationService.createSegmentationForSEGDisplaySet(
|
|
segDisplaySet,
|
|
segmentationId,
|
|
suppressEvents
|
|
);
|
|
|
|
segmentationService.hydrateSegmentation(segDisplaySet.displaySetInstanceUID);
|
|
|
|
const { viewports } = viewportGridService.getState();
|
|
|
|
const updatedViewports = hangingProtocolService.getViewportsRequireUpdate(
|
|
viewportIndex,
|
|
displaySetInstanceUID
|
|
);
|
|
|
|
// Todo: fix this after we have a better way for stack viewport segmentations
|
|
|
|
// check every viewport in the viewports to see if the displaySetInstanceUID
|
|
// is being displayed, if so we need to update the viewport to use volume viewport
|
|
// (if already is not using it) since Cornerstone3D currently only supports
|
|
// volume viewport for segmentation
|
|
viewports.forEach((viewport, index) => {
|
|
if (index === viewportIndex) {
|
|
return;
|
|
}
|
|
|
|
const shouldDisplaySeg = segmentationService.shouldRenderSegmentation(
|
|
viewport.displaySetInstanceUIDs,
|
|
segDisplaySet.displaySetInstanceUID
|
|
);
|
|
|
|
if (shouldDisplaySeg) {
|
|
updatedViewports.push({
|
|
viewportIndex: index,
|
|
displaySetInstanceUIDs: viewport.displaySetInstanceUIDs,
|
|
viewportOptions: {
|
|
initialImageOptions: {
|
|
preset: 'middle',
|
|
},
|
|
},
|
|
});
|
|
}
|
|
});
|
|
|
|
// Do the entire update at once
|
|
viewportGridService.setDisplaySetsForViewports(updatedViewports);
|
|
|
|
return true;
|
|
}
|
|
|
|
export default _hydrateSEGDisplaySet;
|