From 59003362c39cc560c1e686d44cae07a65fc4adc0 Mon Sep 17 00:00:00 2001 From: James Petts Date: Fri, 10 Jul 2020 20:38:40 +0100 Subject: [PATCH] [OHIF-278] Jumping to a measurement should set it to "active" in cornerstone-tools, highlighting it as green (#1888) * Set cornerstone tool active when jumping to measurement. * Remove debugger statement * Also set active on left/right actionbar buttons. --- .../setCornerstoneMeasurementActive.js | 32 +++++++++++++++++++ .../PanelMeasurementTableTracking/index.js | 3 ++ .../viewports/TrackedCornerstoneViewport.js | 3 ++ 3 files changed, 38 insertions(+) create mode 100644 extensions/measurement-tracking/src/_shared/setCornerstoneMeasurementActive.js 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,