diff --git a/extensions/measurement-tracking/src/_shared/setCornerstoneMeasurementActive.js b/extensions/measurement-tracking/src/_shared/setCornerstoneMeasurementActive.js new file mode 100644 index 000000000..79279b111 --- /dev/null +++ b/extensions/measurement-tracking/src/_shared/setCornerstoneMeasurementActive.js @@ -0,0 +1,32 @@ +import cornerstone from 'cornerstone-core'; +import cornerstoneTools from 'cornerstone-tools'; + +const { globalImageIdSpecificToolStateManager } = cornerstoneTools; + +export default function setMeasurementActive(measurement) { + const { id } = measurement; + + const toolState = globalImageIdSpecificToolStateManager.saveToolState(); + + Object.keys(toolState).forEach(imageId => { + const imageIdSpecificToolState = toolState[imageId]; + + Object.keys(imageIdSpecificToolState).forEach(toolType => { + const toolSpecificToolState = imageIdSpecificToolState[toolType]; + + const toolSpecificToolData = toolSpecificToolState.data; + + if (toolSpecificToolData && toolSpecificToolData.length) { + toolSpecificToolData.forEach(data => { + data.active = data.id === id ? true : false; + }); + } + }); + }); + + const enabledElements = cornerstoneTools.store.state.enabledElements; + + enabledElements.forEach(element => { + cornerstone.updateImage(element); + }); +} diff --git a/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.js b/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.js index ab130a28c..c1f72b232 100644 --- a/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.js +++ b/extensions/measurement-tracking/src/panels/PanelMeasurementTableTracking/index.js @@ -12,6 +12,7 @@ import { useDebounce } from '@hooks'; import ActionButtons from './ActionButtons'; import { useTrackedMeasurements } from '../../getContextModule'; import createReportAsync from './../../_shared/createReportAsync.js'; +import setCornerstoneMeasurementActive from '../../_shared/setCornerstoneMeasurementActive'; const { formatDate } = utils; @@ -163,6 +164,8 @@ function PanelMeasurementTableTracking({ servicesManager, extensionManager }) { const measurement = MeasurementService.getMeasurement(id); const { referenceSeriesUID, SOPInstanceUID } = measurement; + setCornerstoneMeasurementActive(measurement); + const displaySets = DisplaySetService.getDisplaySetsForSeries( referenceSeriesUID ); diff --git a/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.js b/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.js index 8071246cd..6a226992a 100644 --- a/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.js +++ b/extensions/measurement-tracking/src/viewports/TrackedCornerstoneViewport.js @@ -14,6 +14,7 @@ import { useTrackedMeasurements } from './../getContextModule'; import ViewportOverlay from './ViewportOverlay'; import ViewportLoadingIndicator from './ViewportLoadingIndicator'; +import setCornerstoneMeasurementActive from '../_shared/setCornerstoneMeasurementActive'; const { formatDate } = utils; @@ -272,6 +273,8 @@ function TrackedCornerstoneViewport({ m => m.id === newTrackedMeasurementId ); + setCornerstoneMeasurementActive(measurement); + const { displaySetInstanceUID, imageIndex,