fix: 🐛 - Put guards in all places that a cornerstone re-render (#1899)
* fix: 🐛 - Put guards in all places that a cornerstone re-render
This commit is contained in:
parent
029f8af4c7
commit
451f7eab92
@ -10,6 +10,14 @@ const scroll = cornerstoneTools.import('util/scroll');
|
|||||||
const { studyMetadataManager } = OHIF.utils;
|
const { studyMetadataManager } = OHIF.utils;
|
||||||
const { setViewportSpecificData } = OHIF.redux.actions;
|
const { setViewportSpecificData } = OHIF.redux.actions;
|
||||||
|
|
||||||
|
const refreshCornerstoneViewports = () => {
|
||||||
|
cornerstone.getEnabledElements().forEach(enabledElement => {
|
||||||
|
if (enabledElement.image) {
|
||||||
|
cornerstone.updateImage(enabledElement.element);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
const commandsModule = ({ servicesManager }) => {
|
const commandsModule = ({ servicesManager }) => {
|
||||||
const actions = {
|
const actions = {
|
||||||
rotateViewport: ({ viewports, rotation }) => {
|
rotateViewport: ({ viewports, rotation }) => {
|
||||||
@ -180,10 +188,7 @@ const commandsModule = ({ servicesManager }) => {
|
|||||||
|
|
||||||
measurementApi.syncMeasurementsAndToolData();
|
measurementApi.syncMeasurementsAndToolData();
|
||||||
|
|
||||||
// Update images in all active viewports
|
refreshCornerstoneViewports();
|
||||||
cornerstone.getEnabledElements().forEach(enabledElement => {
|
|
||||||
cornerstone.updateImage(enabledElement.element);
|
|
||||||
});
|
|
||||||
},
|
},
|
||||||
getNearbyToolData({ element, canvasCoordinates, availableToolTypes }) {
|
getNearbyToolData({ element, canvasCoordinates, availableToolTypes }) {
|
||||||
const nearbyTool = {};
|
const nearbyTool = {};
|
||||||
@ -262,23 +267,26 @@ const commandsModule = ({ servicesManager }) => {
|
|||||||
StudyInstanceUID,
|
StudyInstanceUID,
|
||||||
SOPInstanceUID,
|
SOPInstanceUID,
|
||||||
frameIndex,
|
frameIndex,
|
||||||
activeViewportIndex
|
activeViewportIndex,
|
||||||
}) => {
|
}) => {
|
||||||
const study = studyMetadataManager.get(StudyInstanceUID);
|
const study = studyMetadataManager.get(StudyInstanceUID);
|
||||||
|
|
||||||
const displaySet = study.findDisplaySet(ds => {
|
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.SOPInstanceUID = SOPInstanceUID;
|
||||||
displaySet.frameIndex = frameIndex;
|
displaySet.frameIndex = frameIndex;
|
||||||
|
|
||||||
window.store.dispatch(setViewportSpecificData(activeViewportIndex, displaySet));
|
window.store.dispatch(
|
||||||
|
setViewportSpecificData(activeViewportIndex, displaySet)
|
||||||
|
);
|
||||||
|
|
||||||
cornerstone.getEnabledElements().forEach(enabledElement => {
|
refreshCornerstoneViewports();
|
||||||
cornerstone.updateImage(enabledElement.element);
|
},
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const definitions = {
|
const definitions = {
|
||||||
|
|||||||
@ -17,7 +17,10 @@ const { studyMetadataManager } = utils;
|
|||||||
|
|
||||||
const refreshViewport = () => {
|
const refreshViewport = () => {
|
||||||
cornerstone.getEnabledElements().forEach(enabledElement => {
|
cornerstone.getEnabledElements().forEach(enabledElement => {
|
||||||
cornerstone.updateImage(enabledElement.element);
|
debugger;
|
||||||
|
if (enabledElement.image) {
|
||||||
|
cornerstone.updateImage(enabledElement.element);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -236,7 +236,7 @@ function _setROIContourRTROIObservations(
|
|||||||
|
|
||||||
function _setToolEnabledIfNotEnabled(toolName) {
|
function _setToolEnabledIfNotEnabled(toolName) {
|
||||||
cornerstone.getEnabledElements().forEach(enabledElement => {
|
cornerstone.getEnabledElements().forEach(enabledElement => {
|
||||||
const { element } = enabledElement;
|
const { element, image } = enabledElement;
|
||||||
const tool = cornerstoneTools.getToolForElement(element, toolName);
|
const tool = cornerstoneTools.getToolForElement(element, toolName);
|
||||||
|
|
||||||
if (tool.mode !== 'enabled') {
|
if (tool.mode !== 'enabled') {
|
||||||
@ -244,7 +244,9 @@ function _setToolEnabledIfNotEnabled(toolName) {
|
|||||||
cornerstoneTools.setToolEnabled(toolName);
|
cornerstoneTools.setToolEnabled(toolName);
|
||||||
}
|
}
|
||||||
|
|
||||||
cornerstone.updateImage(element);
|
if (image) {
|
||||||
|
cornerstone.updateImage(element);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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.
|
// We should put this as a helper somewhere as we are using it in mutliple places.
|
||||||
function refreshViewport() {
|
function refreshViewport() {
|
||||||
cornerstone.getEnabledElements().forEach(enabledElement => {
|
cornerstone.getEnabledElements().forEach(enabledElement => {
|
||||||
cornerstone.updateImage(enabledElement.element);
|
if (enabledElement.image) {
|
||||||
|
cornerstone.updateImage(enabledElement.element);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -251,7 +251,9 @@ export default class MeasurementApi {
|
|||||||
this.syncMeasurementsAndToolData();
|
this.syncMeasurementsAndToolData();
|
||||||
|
|
||||||
cornerstone.getEnabledElements().forEach(enabledElement => {
|
cornerstone.getEnabledElements().forEach(enabledElement => {
|
||||||
cornerstone.updateImage(enabledElement.element);
|
if (enabledElement.image) {
|
||||||
|
cornerstone.updateImage(enabledElement.element);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Let others know that the measurements are updated
|
// Let others know that the measurements are updated
|
||||||
|
|||||||
@ -0,0 +1,9 @@
|
|||||||
|
import cornerstone from 'cornerstone-core';
|
||||||
|
|
||||||
|
export default function refreshCornerstoneViewports() {
|
||||||
|
cornerstone.getEnabledElements().forEach(enabledElement => {
|
||||||
|
if (enabledElement.image) {
|
||||||
|
cornerstone.updateImage(enabledElement.element);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
@ -4,6 +4,7 @@ import log from '../../log';
|
|||||||
import user from '../../user';
|
import user from '../../user';
|
||||||
import getImageAttributes from '../lib/getImageAttributes';
|
import getImageAttributes from '../lib/getImageAttributes';
|
||||||
import getLabel from '../lib/getLabel';
|
import getLabel from '../lib/getLabel';
|
||||||
|
import refreshCornerstoneViewports from '../lib/refreshCornerstoneViewports';
|
||||||
|
|
||||||
export default function({ eventData, tool, toolGroupId, toolGroup }) {
|
export default function({ eventData, tool, toolGroupId, toolGroup }) {
|
||||||
const measurementApi = MeasurementApi.Instance;
|
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
|
// TODO: This is very hacky, but will work for now
|
||||||
cornerstone.getEnabledElements().forEach(enabledElement => {
|
refreshCornerstoneViewports();
|
||||||
cornerstone.updateImage(enabledElement.element);
|
|
||||||
});
|
|
||||||
|
|
||||||
// TODO: Notify about the last activated measurement
|
// TODO: Notify about the last activated measurement
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import cornerstone from 'cornerstone-core';
|
import cornerstone from 'cornerstone-core';
|
||||||
import { MeasurementApi } from '../classes';
|
import { MeasurementApi } from '../classes';
|
||||||
import log from '../../log';
|
import log from '../../log';
|
||||||
|
import refreshCornerstoneViewports from '../lib/refreshCornerstoneViewports';
|
||||||
|
|
||||||
export default function({ eventData, tool, toolGroupId, toolGroup }) {
|
export default function({ eventData, tool, toolGroupId, toolGroup }) {
|
||||||
log.info('CornerstoneToolsMeasurementRemoved');
|
log.info('CornerstoneToolsMeasurementRemoved');
|
||||||
@ -37,9 +38,7 @@ export default function({ eventData, tool, toolGroupId, toolGroup }) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: This is very hacky, but will work for now
|
// TODO: This is very hacky, but will work for now
|
||||||
cornerstone.getEnabledElements().forEach(enabledElement => {
|
refreshCornerstoneViewports();
|
||||||
cornerstone.updateImage(enabledElement.element);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (MeasurementApi.isToolIncluded(tool)) {
|
if (MeasurementApi.isToolIncluded(tool)) {
|
||||||
// TODO: Notify that viewer suffered changes
|
// TODO: Notify that viewer suffered changes
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import log from '../../log';
|
|||||||
import user from '../../user';
|
import user from '../../user';
|
||||||
import getImageAttributes from '../lib/getImageAttributes';
|
import getImageAttributes from '../lib/getImageAttributes';
|
||||||
import getLabel from '../lib/getLabel';
|
import getLabel from '../lib/getLabel';
|
||||||
|
import refreshCornerstoneViewports from '../lib/refreshCornerstoneViewports';
|
||||||
|
|
||||||
export default function handleSingleMeasurementAdded({ eventData, tool }) {
|
export default function handleSingleMeasurementAdded({ eventData, tool }) {
|
||||||
const measurementApi = MeasurementApi.Instance;
|
const measurementApi = MeasurementApi.Instance;
|
||||||
@ -39,9 +40,7 @@ export default function handleSingleMeasurementAdded({ eventData, tool }) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: This is very hacky, but will work for now
|
// TODO: This is very hacky, but will work for now
|
||||||
cornerstone.getEnabledElements().forEach(enabledElement => {
|
refreshCornerstoneViewports();
|
||||||
cornerstone.updateImage(enabledElement.element);
|
|
||||||
});
|
|
||||||
|
|
||||||
// TODO: Notify about the last activated measurement
|
// TODO: Notify about the last activated measurement
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import cornerstone from 'cornerstone-core';
|
import cornerstone from 'cornerstone-core';
|
||||||
import { MeasurementApi } from '../classes';
|
import { MeasurementApi } from '../classes';
|
||||||
import log from '../../log';
|
import log from '../../log';
|
||||||
|
import refreshCornerstoneViewports from '../lib/refreshCornerstoneViewports';
|
||||||
|
|
||||||
export default function handleSingleMeasurementRemoved({
|
export default function handleSingleMeasurementRemoved({
|
||||||
eventData,
|
eventData,
|
||||||
@ -35,9 +36,7 @@ export default function handleSingleMeasurementRemoved({
|
|||||||
});
|
});
|
||||||
|
|
||||||
// TODO: This is very hacky, but will work for now
|
// TODO: This is very hacky, but will work for now
|
||||||
cornerstone.getEnabledElements().forEach(enabledElement => {
|
refreshCornerstoneViewports();
|
||||||
cornerstone.updateImage(enabledElement.element);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (MeasurementApi.isToolIncluded(tool)) {
|
if (MeasurementApi.isToolIncluded(tool)) {
|
||||||
// TODO: Notify that viewer suffered changes
|
// TODO: Notify that viewer suffered changes
|
||||||
|
|||||||
@ -329,7 +329,9 @@ const mapDispatchToProps = (dispatch, ownProps) => {
|
|||||||
measurementApi.syncMeasurementsAndToolData();
|
measurementApi.syncMeasurementsAndToolData();
|
||||||
|
|
||||||
cornerstone.getEnabledElements().forEach(enabledElement => {
|
cornerstone.getEnabledElements().forEach(enabledElement => {
|
||||||
cornerstone.updateImage(enabledElement.element);
|
if (enabledElement.image) {
|
||||||
|
cornerstone.updateImage(enabledElement.element);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Needs to update viewports.layout state to set layout
|
// Needs to update viewports.layout state to set layout
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user