diff --git a/extensions/cornerstone/src/commandsModule.js b/extensions/cornerstone/src/commandsModule.js index 99d93cc30..50b178103 100644 --- a/extensions/cornerstone/src/commandsModule.js +++ b/extensions/cornerstone/src/commandsModule.js @@ -10,6 +10,14 @@ const scroll = cornerstoneTools.import('util/scroll'); const { studyMetadataManager } = OHIF.utils; const { setViewportSpecificData } = OHIF.redux.actions; +const refreshCornerstoneViewports = () => { + cornerstone.getEnabledElements().forEach(enabledElement => { + if (enabledElement.image) { + cornerstone.updateImage(enabledElement.element); + } + }); +}; + const commandsModule = ({ servicesManager }) => { const actions = { rotateViewport: ({ viewports, rotation }) => { @@ -180,10 +188,7 @@ const commandsModule = ({ servicesManager }) => { measurementApi.syncMeasurementsAndToolData(); - // Update images in all active viewports - cornerstone.getEnabledElements().forEach(enabledElement => { - cornerstone.updateImage(enabledElement.element); - }); + refreshCornerstoneViewports(); }, getNearbyToolData({ element, canvasCoordinates, availableToolTypes }) { const nearbyTool = {}; @@ -262,23 +267,26 @@ const commandsModule = ({ servicesManager }) => { StudyInstanceUID, SOPInstanceUID, frameIndex, - activeViewportIndex + activeViewportIndex, }) => { const study = studyMetadataManager.get(StudyInstanceUID); const displaySet = study.findDisplaySet(ds => { - return ds.images && ds.images.find(i => i.getSOPInstanceUID() === SOPInstanceUID) + return ( + ds.images && + ds.images.find(i => i.getSOPInstanceUID() === SOPInstanceUID) + ); }); displaySet.SOPInstanceUID = SOPInstanceUID; displaySet.frameIndex = frameIndex; - window.store.dispatch(setViewportSpecificData(activeViewportIndex, displaySet)); + window.store.dispatch( + setViewportSpecificData(activeViewportIndex, displaySet) + ); - cornerstone.getEnabledElements().forEach(enabledElement => { - cornerstone.updateImage(enabledElement.element); - }); - } + refreshCornerstoneViewports(); + }, }; const definitions = { diff --git a/extensions/dicom-rt/src/components/RTPanel/RTPanel.js b/extensions/dicom-rt/src/components/RTPanel/RTPanel.js index e7c03df01..5c38af0a7 100644 --- a/extensions/dicom-rt/src/components/RTPanel/RTPanel.js +++ b/extensions/dicom-rt/src/components/RTPanel/RTPanel.js @@ -17,7 +17,10 @@ const { studyMetadataManager } = utils; const refreshViewport = () => { cornerstone.getEnabledElements().forEach(enabledElement => { - cornerstone.updateImage(enabledElement.element); + debugger; + if (enabledElement.image) { + cornerstone.updateImage(enabledElement.element); + } }); }; diff --git a/extensions/dicom-rt/src/loadRTStruct.js b/extensions/dicom-rt/src/loadRTStruct.js index cbbeeff96..28dd1fba8 100644 --- a/extensions/dicom-rt/src/loadRTStruct.js +++ b/extensions/dicom-rt/src/loadRTStruct.js @@ -236,7 +236,7 @@ function _setROIContourRTROIObservations( function _setToolEnabledIfNotEnabled(toolName) { cornerstone.getEnabledElements().forEach(enabledElement => { - const { element } = enabledElement; + const { element, image } = enabledElement; const tool = cornerstoneTools.getToolForElement(element, toolName); if (tool.mode !== 'enabled') { @@ -244,7 +244,9 @@ function _setToolEnabledIfNotEnabled(toolName) { cornerstoneTools.setToolEnabled(toolName); } - cornerstone.updateImage(element); + if (image) { + cornerstone.updateImage(element); + } }); } diff --git a/extensions/dicom-rt/src/tools/modules/rtStructModule.js b/extensions/dicom-rt/src/tools/modules/rtStructModule.js index ccd94ac56..0cca6e662 100644 --- a/extensions/dicom-rt/src/tools/modules/rtStructModule.js +++ b/extensions/dicom-rt/src/tools/modules/rtStructModule.js @@ -5,7 +5,9 @@ import structureSetReferencesSeriesInstanceUid from './lib/structureSetReference // We should put this as a helper somewhere as we are using it in mutliple places. function refreshViewport() { cornerstone.getEnabledElements().forEach(enabledElement => { - cornerstone.updateImage(enabledElement.element); + if (enabledElement.image) { + cornerstone.updateImage(enabledElement.element); + } }); } diff --git a/platform/core/src/measurements/classes/MeasurementApi.js b/platform/core/src/measurements/classes/MeasurementApi.js index c8a7eed87..be2847370 100644 --- a/platform/core/src/measurements/classes/MeasurementApi.js +++ b/platform/core/src/measurements/classes/MeasurementApi.js @@ -251,7 +251,9 @@ export default class MeasurementApi { this.syncMeasurementsAndToolData(); cornerstone.getEnabledElements().forEach(enabledElement => { - cornerstone.updateImage(enabledElement.element); + if (enabledElement.image) { + cornerstone.updateImage(enabledElement.element); + } }); // Let others know that the measurements are updated diff --git a/platform/core/src/measurements/lib/refreshCornerstoneViewports.js b/platform/core/src/measurements/lib/refreshCornerstoneViewports.js new file mode 100644 index 000000000..376f7c85d --- /dev/null +++ b/platform/core/src/measurements/lib/refreshCornerstoneViewports.js @@ -0,0 +1,9 @@ +import cornerstone from 'cornerstone-core'; + +export default function refreshCornerstoneViewports() { + cornerstone.getEnabledElements().forEach(enabledElement => { + if (enabledElement.image) { + cornerstone.updateImage(enabledElement.element); + } + }); +} diff --git a/platform/core/src/measurements/measurementHandlers/handleChildMeasurementAdded.js b/platform/core/src/measurements/measurementHandlers/handleChildMeasurementAdded.js index 35955e7a4..88fdfe22f 100644 --- a/platform/core/src/measurements/measurementHandlers/handleChildMeasurementAdded.js +++ b/platform/core/src/measurements/measurementHandlers/handleChildMeasurementAdded.js @@ -4,6 +4,7 @@ import log from '../../log'; import user from '../../user'; import getImageAttributes from '../lib/getImageAttributes'; import getLabel from '../lib/getLabel'; +import refreshCornerstoneViewports from '../lib/refreshCornerstoneViewports'; export default function({ eventData, tool, toolGroupId, toolGroup }) { const measurementApi = MeasurementApi.Instance; @@ -86,9 +87,7 @@ export default function({ eventData, tool, toolGroupId, toolGroup }) { } // TODO: This is very hacky, but will work for now - cornerstone.getEnabledElements().forEach(enabledElement => { - cornerstone.updateImage(enabledElement.element); - }); + refreshCornerstoneViewports(); // TODO: Notify about the last activated measurement diff --git a/platform/core/src/measurements/measurementHandlers/handleChildMeasurementRemoved.js b/platform/core/src/measurements/measurementHandlers/handleChildMeasurementRemoved.js index 21ae8b9d4..e608ad212 100644 --- a/platform/core/src/measurements/measurementHandlers/handleChildMeasurementRemoved.js +++ b/platform/core/src/measurements/measurementHandlers/handleChildMeasurementRemoved.js @@ -1,6 +1,7 @@ import cornerstone from 'cornerstone-core'; import { MeasurementApi } from '../classes'; import log from '../../log'; +import refreshCornerstoneViewports from '../lib/refreshCornerstoneViewports'; export default function({ eventData, tool, toolGroupId, toolGroup }) { log.info('CornerstoneToolsMeasurementRemoved'); @@ -37,9 +38,7 @@ export default function({ eventData, tool, toolGroupId, toolGroup }) { } // TODO: This is very hacky, but will work for now - cornerstone.getEnabledElements().forEach(enabledElement => { - cornerstone.updateImage(enabledElement.element); - }); + refreshCornerstoneViewports(); if (MeasurementApi.isToolIncluded(tool)) { // TODO: Notify that viewer suffered changes diff --git a/platform/core/src/measurements/measurementHandlers/handleSingleMeasurementAdded.js b/platform/core/src/measurements/measurementHandlers/handleSingleMeasurementAdded.js index 55ecc7b5f..c0ac43ad1 100644 --- a/platform/core/src/measurements/measurementHandlers/handleSingleMeasurementAdded.js +++ b/platform/core/src/measurements/measurementHandlers/handleSingleMeasurementAdded.js @@ -4,6 +4,7 @@ import log from '../../log'; import user from '../../user'; import getImageAttributes from '../lib/getImageAttributes'; import getLabel from '../lib/getLabel'; +import refreshCornerstoneViewports from '../lib/refreshCornerstoneViewports'; export default function handleSingleMeasurementAdded({ eventData, tool }) { const measurementApi = MeasurementApi.Instance; @@ -39,9 +40,7 @@ export default function handleSingleMeasurementAdded({ eventData, tool }) { } // TODO: This is very hacky, but will work for now - cornerstone.getEnabledElements().forEach(enabledElement => { - cornerstone.updateImage(enabledElement.element); - }); + refreshCornerstoneViewports(); // TODO: Notify about the last activated measurement diff --git a/platform/core/src/measurements/measurementHandlers/handleSingleMeasurementRemoved.js b/platform/core/src/measurements/measurementHandlers/handleSingleMeasurementRemoved.js index 7faca56f9..b77cb0e0a 100644 --- a/platform/core/src/measurements/measurementHandlers/handleSingleMeasurementRemoved.js +++ b/platform/core/src/measurements/measurementHandlers/handleSingleMeasurementRemoved.js @@ -1,6 +1,7 @@ import cornerstone from 'cornerstone-core'; import { MeasurementApi } from '../classes'; import log from '../../log'; +import refreshCornerstoneViewports from '../lib/refreshCornerstoneViewports'; export default function handleSingleMeasurementRemoved({ eventData, @@ -35,9 +36,7 @@ export default function handleSingleMeasurementRemoved({ }); // TODO: This is very hacky, but will work for now - cornerstone.getEnabledElements().forEach(enabledElement => { - cornerstone.updateImage(enabledElement.element); - }); + refreshCornerstoneViewports(); if (MeasurementApi.isToolIncluded(tool)) { // TODO: Notify that viewer suffered changes diff --git a/platform/viewer/src/appExtensions/MeasurementsPanel/ConnectedMeasurementTable.js b/platform/viewer/src/appExtensions/MeasurementsPanel/ConnectedMeasurementTable.js index 79684b924..5c9cb3781 100644 --- a/platform/viewer/src/appExtensions/MeasurementsPanel/ConnectedMeasurementTable.js +++ b/platform/viewer/src/appExtensions/MeasurementsPanel/ConnectedMeasurementTable.js @@ -329,7 +329,9 @@ const mapDispatchToProps = (dispatch, ownProps) => { measurementApi.syncMeasurementsAndToolData(); cornerstone.getEnabledElements().forEach(enabledElement => { - cornerstone.updateImage(enabledElement.element); + if (enabledElement.image) { + cornerstone.updateImage(enabledElement.element); + } }); // Needs to update viewports.layout state to set layout