diff --git a/packages/tools/src/tools/annotation/AngleTool.ts b/packages/tools/src/tools/annotation/AngleTool.ts index 48ec32893..f83499802 100644 --- a/packages/tools/src/tools/annotation/AngleTool.ts +++ b/packages/tools/src/tools/annotation/AngleTool.ts @@ -658,7 +658,10 @@ class AngleTool extends AnnotationTool { const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p)); // WE HAVE TO CACHE STATS BEFORE FETCHING TEXT - if (!data.cachedStats[targetId]) { + if ( + !data.cachedStats[targetId] || + data.cachedStats[targetId].angle == null + ) { data.cachedStats[targetId] = { angle: null, }; diff --git a/packages/tools/src/tools/annotation/BidirectionalTool.ts b/packages/tools/src/tools/annotation/BidirectionalTool.ts index b9928aed8..066fa496b 100644 --- a/packages/tools/src/tools/annotation/BidirectionalTool.ts +++ b/packages/tools/src/tools/annotation/BidirectionalTool.ts @@ -1073,7 +1073,7 @@ class BidirectionalTool extends AnnotationTool { // force to recalculate the stats from the points if ( !data.cachedStats[targetId] || - data.cachedStats[targetId].unit === undefined + data.cachedStats[targetId].unit == null ) { data.cachedStats[targetId] = { length: null, diff --git a/packages/tools/src/tools/annotation/CircleROITool.ts b/packages/tools/src/tools/annotation/CircleROITool.ts index 11abb0df3..a88f251a4 100644 --- a/packages/tools/src/tools/annotation/CircleROITool.ts +++ b/packages/tools/src/tools/annotation/CircleROITool.ts @@ -692,7 +692,7 @@ class CircleROITool extends AnnotationTool { // force to recalculate the stats from the points if ( !data.cachedStats[targetId] || - data.cachedStats[targetId].areaUnit === undefined + data.cachedStats[targetId].areaUnit == null ) { data.cachedStats[targetId] = { Modality: null, diff --git a/packages/tools/src/tools/annotation/CobbAngleTool.ts b/packages/tools/src/tools/annotation/CobbAngleTool.ts index ad5d3abdc..690d28524 100644 --- a/packages/tools/src/tools/annotation/CobbAngleTool.ts +++ b/packages/tools/src/tools/annotation/CobbAngleTool.ts @@ -674,7 +674,10 @@ class CobbAngleTool extends AnnotationTool { const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p)); // WE HAVE TO CACHE STATS BEFORE FETCHING TEXT - if (!data.cachedStats[targetId]) { + if ( + !data.cachedStats[targetId] || + data.cachedStats[targetId].angle == null + ) { data.cachedStats[targetId] = { angle: null, }; diff --git a/packages/tools/src/tools/annotation/DragProbeTool.ts b/packages/tools/src/tools/annotation/DragProbeTool.ts index 646eb3614..6bae955fd 100644 --- a/packages/tools/src/tools/annotation/DragProbeTool.ts +++ b/packages/tools/src/tools/annotation/DragProbeTool.ts @@ -166,7 +166,10 @@ class DragProbeTool extends ProbeTool { ), }; - if (!data.cachedStats[targetId]) { + if ( + !data.cachedStats[targetId] || + data.cachedStats[targetId].value == null + ) { data.cachedStats[targetId] = { Modality: null, index: null, diff --git a/packages/tools/src/tools/annotation/EllipticalROITool.ts b/packages/tools/src/tools/annotation/EllipticalROITool.ts index c8cf0e4c6..0d1981b98 100644 --- a/packages/tools/src/tools/annotation/EllipticalROITool.ts +++ b/packages/tools/src/tools/annotation/EllipticalROITool.ts @@ -814,7 +814,7 @@ class EllipticalROITool extends AnnotationTool { // force to recalculate the stats from the points if ( !data.cachedStats[targetId] || - data.cachedStats[targetId].areaUnit === undefined + data.cachedStats[targetId].areaUnit == null ) { data.cachedStats[targetId] = { Modality: null, diff --git a/packages/tools/src/tools/annotation/LengthTool.ts b/packages/tools/src/tools/annotation/LengthTool.ts index 353b68b5e..3eba6bd69 100644 --- a/packages/tools/src/tools/annotation/LengthTool.ts +++ b/packages/tools/src/tools/annotation/LengthTool.ts @@ -662,7 +662,7 @@ class LengthTool extends AnnotationTool { // force to recalculate the stats from the points if ( !data.cachedStats[targetId] || - data.cachedStats[targetId].unit === undefined + data.cachedStats[targetId].unit == null ) { data.cachedStats[targetId] = { length: null, diff --git a/packages/tools/src/tools/annotation/PlanarFreehandROITool.ts b/packages/tools/src/tools/annotation/PlanarFreehandROITool.ts index 0ecfc6baa..d712c14b6 100644 --- a/packages/tools/src/tools/annotation/PlanarFreehandROITool.ts +++ b/packages/tools/src/tools/annotation/PlanarFreehandROITool.ts @@ -691,7 +691,7 @@ class PlanarFreehandROITool extends AnnotationTool { const { data } = annotation; if ( !data.cachedStats[targetId] || - data.cachedStats[targetId].areaUnit === undefined + data.cachedStats[targetId].areaUnit == null ) { data.cachedStats[targetId] = { Modality: null, diff --git a/packages/tools/src/tools/annotation/ProbeTool.ts b/packages/tools/src/tools/annotation/ProbeTool.ts index 23ed07f6d..f9049cf2e 100644 --- a/packages/tools/src/tools/annotation/ProbeTool.ts +++ b/packages/tools/src/tools/annotation/ProbeTool.ts @@ -452,7 +452,10 @@ class ProbeTool extends AnnotationTool { ), }; - if (!data.cachedStats[targetId]) { + if ( + !data.cachedStats[targetId] || + data.cachedStats[targetId].value == null + ) { data.cachedStats[targetId] = { Modality: null, index: null, diff --git a/packages/tools/src/tools/annotation/RectangleROITool.ts b/packages/tools/src/tools/annotation/RectangleROITool.ts index 49272d911..a2479cc4b 100644 --- a/packages/tools/src/tools/annotation/RectangleROITool.ts +++ b/packages/tools/src/tools/annotation/RectangleROITool.ts @@ -673,7 +673,7 @@ class RectangleROITool extends AnnotationTool { // force to recalculate the stats from the points if ( !data.cachedStats[targetId] || - data.cachedStats[targetId].areaUnit === undefined + data.cachedStats[targetId].areaUnit == null ) { data.cachedStats[targetId] = { Modality: null, diff --git a/packages/tools/src/tools/displayTools/Contour/contourDisplay.ts b/packages/tools/src/tools/displayTools/Contour/contourDisplay.ts index 1add8e631..aa7bca815 100644 --- a/packages/tools/src/tools/displayTools/Contour/contourDisplay.ts +++ b/packages/tools/src/tools/displayTools/Contour/contourDisplay.ts @@ -2,6 +2,7 @@ import { getEnabledElementByIds, Types, utilities as csUtils, + StackViewport, } from '@cornerstonejs/core'; import Representations from '../../../enums/SegmentationRepresentations'; @@ -128,6 +129,13 @@ async function render( const contourData = segmentation.representationData[Representations.Contour]; const { geometryIds } = contourData; + + // We don't have a good way to handle stack viewports for contours at the moment. + // Plus, if we add a segmentation to one viewport, it gets added to all the viewports in the toolGroup too. + if (viewport instanceof StackViewport) { + return; + } + if (!geometryIds?.length) { console.warn( `No contours found for segmentationId ${segmentationId}. Skipping render.`