Preventing re-rendering if viewport is on the same series
This commit is contained in:
parent
0eea7f9373
commit
7d2577b06f
@ -14,7 +14,6 @@ OHIF.measurements.findAndRenderDisplaySet = (displaySets, viewportIndex, studyIn
|
|||||||
const displaySetData = {
|
const displaySetData = {
|
||||||
studyInstanceUid: studyInstanceUid,
|
studyInstanceUid: studyInstanceUid,
|
||||||
seriesInstanceUid: seriesInstanceUid,
|
seriesInstanceUid: seriesInstanceUid,
|
||||||
sopInstanceUid: sopInstanceUid,
|
|
||||||
displaySetInstanceUid: stack.displaySetInstanceUid,
|
displaySetInstanceUid: stack.displaySetInstanceUid,
|
||||||
currentImageIdIndex: specificImageIndex
|
currentImageIdIndex: specificImageIndex
|
||||||
};
|
};
|
||||||
|
|||||||
@ -14,7 +14,25 @@ function renderIntoViewport(measurementData, enabledElement, viewportIndex) {
|
|||||||
$(element).one('CornerstoneImageRendered', () => resolve());
|
$(element).one('CornerstoneImageRendered', () => resolve());
|
||||||
};
|
};
|
||||||
|
|
||||||
// Check if the study / series we need is already the one in the viewport
|
// Find the study by studyInstanceUid and render the display set
|
||||||
|
const findAndRender = () => {
|
||||||
|
// @TypeSafeStudies
|
||||||
|
const study = OHIF.viewer.Studies.findBy({ studyInstanceUid });
|
||||||
|
|
||||||
|
// TODO: Support frames? e.g. for measurements on multi-frame instances
|
||||||
|
findAndRenderDisplaySet(
|
||||||
|
study.displaySets,
|
||||||
|
viewportIndex,
|
||||||
|
studyInstanceUid,
|
||||||
|
seriesInstanceUid,
|
||||||
|
sopInstanceUid,
|
||||||
|
renderedCallback
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Check if the study / series we need is already the one in the viewport.
|
||||||
|
// Otherwise, re-render the viewport with the required study/series, then add a rendered
|
||||||
|
// callback to activate the measurements
|
||||||
if (enabledElement && enabledElement.image) {
|
if (enabledElement && enabledElement.image) {
|
||||||
const imageId = enabledElement.image.imageId;
|
const imageId = enabledElement.image.imageId;
|
||||||
const series = cornerstone.metaData.get('series', imageId);
|
const series = cornerstone.metaData.get('series', imageId);
|
||||||
@ -24,18 +42,14 @@ function renderIntoViewport(measurementData, enabledElement, viewportIndex) {
|
|||||||
const isSameSeries = series.seriesInstanceUid === measurementData.seriesInstanceUid;
|
const isSameSeries = series.seriesInstanceUid === measurementData.seriesInstanceUid;
|
||||||
if (isSameStudy && isSameSeries) {
|
if (isSameStudy && isSameSeries) {
|
||||||
// If it is, activate the measurements in this viewport and stop here
|
// If it is, activate the measurements in this viewport and stop here
|
||||||
|
OHIF.viewerbase.viewportUtils.resetViewport('all');
|
||||||
renderedCallback(element);
|
renderedCallback(element);
|
||||||
|
} else {
|
||||||
|
findAndRender();
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
findAndRender();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Otherwise, re-render the viewport with the required study/series, then add an rendered
|
|
||||||
// callback to activate the measurements
|
|
||||||
|
|
||||||
// @TypeSafeStudies
|
|
||||||
const study = OHIF.viewer.Studies.findBy({ studyInstanceUid });
|
|
||||||
|
|
||||||
// TODO: Support frames? e.g. for measurements on multi-frame instances
|
|
||||||
findAndRenderDisplaySet(study.displaySets, viewportIndex, studyInstanceUid, seriesInstanceUid, sopInstanceUid, renderedCallback);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -133,8 +133,7 @@ const flipH = () => {
|
|||||||
updateOrientationMarkers(element, viewport);
|
updateOrientationMarkers(element, viewport);
|
||||||
};
|
};
|
||||||
|
|
||||||
const resetViewport = () => {
|
const resetViewportWithElement = element => {
|
||||||
const element = getActiveViewportElement();
|
|
||||||
const enabledElement = cornerstone.getEnabledElement(element);
|
const enabledElement = cornerstone.getEnabledElement(element);
|
||||||
if (enabledElement.fitToWindow === false) {
|
if (enabledElement.fitToWindow === false) {
|
||||||
const imageId = enabledElement.image.imageId;
|
const imageId = enabledElement.image.imageId;
|
||||||
@ -149,6 +148,18 @@ const resetViewport = () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const resetViewport = (viewportIndex=null) => {
|
||||||
|
if (viewportIndex === null) {
|
||||||
|
resetViewportWithElement(getActiveViewportElement());
|
||||||
|
} else if (viewportIndex === 'all') {
|
||||||
|
$('.imageViewerViewport').each((index, element) => {
|
||||||
|
resetViewportWithElement(element);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
resetViewportWithElement($('.imageViewerViewport').get(viewportIndex));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const clearTools = () => {
|
const clearTools = () => {
|
||||||
const element = getActiveViewportElement();
|
const element = getActiveViewportElement();
|
||||||
const toolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager;
|
const toolStateManager = cornerstoneTools.globalImageIdSpecificToolStateManager;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user