From dc2a58da91d91e6fbe30d4657698d2b1ff803bb5 Mon Sep 17 00:00:00 2001 From: Danny Brown Date: Mon, 5 Oct 2020 23:40:58 -0400 Subject: [PATCH] fix: support for delete SR aliased measurements (#2092) --- extensions/cornerstone/src/init.js | 39 +++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/extensions/cornerstone/src/init.js b/extensions/cornerstone/src/init.js index bc0e1f686..8e1003ea9 100644 --- a/extensions/cornerstone/src/init.js +++ b/extensions/cornerstone/src/init.js @@ -25,6 +25,11 @@ const TOOL_TYPES_WITH_CONTEXT_MENU = [ 'EllipticalRoi', 'CircleRoi', 'RectangleRoi', + // SR Viewport... + 'SRLength', + 'SRBidirectional', + 'SRArrowAnnotate', + 'SREllipticalRoi', ]; const _refreshViewports = () => @@ -118,7 +123,39 @@ export default function init({ eventData: event.detail, onDelete: item => { const { tool: measurementData, toolType } = item.value; - measurementServiceSource.remove(measurementData.id); + + // Sync'd w/ Measurement Service + if (measurementData.id) { + measurementServiceSource.remove(measurementData.id); + } + // Only in cstools + else { + const toolState = + csTools.globalImageIdSpecificToolStateManager.toolState; + + Object.keys(toolState).forEach(imageId => { + Object.keys(toolState[imageId]).forEach(imageToolType => { + const numMeasurements = + toolState[imageId][imageToolType].data.length; + + for (let i = 0; i < numMeasurements; i++) { + const toolData = toolState[imageId][imageToolType].data[i]; + if (measurementData.uuid === toolData.uuid) { + // Clear and nuke matching measurement + toolState[imageId][imageToolType].data[i] = null; + delete toolState[imageId][imageToolType].data[i]; + toolState[imageId][imageToolType].data.splice(i, 1); + + // Delete "data" if we deleted last measurement in array + // if (toolState[imageId][imageToolType].data.length === 0) { + // delete toolState[imageId][imageToolType].data; + // } + } + } + }); + }); + console.log(csTools.store.state); + } _refreshViewports(); CONTEXT_MENU_OPEN = false; },