diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index ecf279677..a31fca16b 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -36,7 +36,7 @@ "cornerstone-math": "^0.1.8", "cornerstone-tools": "4.15.1", "cornerstone-wado-image-loader": "^3.1.0", - "dcmjs": "^0.12.3", + "dcmjs": "0.13.0", "dicom-parser": "^1.8.3", "hammerjs": "^2.0.8", "prop-types": "^15.6.2", diff --git a/extensions/dicom-html/package.json b/extensions/dicom-html/package.json index c6349d971..a5a643613 100644 --- a/extensions/dicom-html/package.json +++ b/extensions/dicom-html/package.json @@ -29,7 +29,7 @@ }, "peerDependencies": { "@ohif/core": "^0.50.0", - "dcmjs": "^0.12.3", + "dcmjs": "0.13.0", "prop-types": "^15.6.2", "react": "^16.8.6", "react-dom": "^16.8.6" diff --git a/extensions/dicom-rt/package.json b/extensions/dicom-rt/package.json index 62accb5ab..c4068525a 100644 --- a/extensions/dicom-rt/package.json +++ b/extensions/dicom-rt/package.json @@ -31,7 +31,7 @@ "@ohif/core": "^0.50.0", "cornerstone-core": "^2.2.8", "cornerstone-tools": "4.15.1", - "dcmjs": "^0.12.3", + "dcmjs": "0.13.0", "prop-types": "^15.6.2", "react": "^16.8.6", "react-dom": "^16.8.6" diff --git a/extensions/dicom-segmentation/package.json b/extensions/dicom-segmentation/package.json index a07cbe644..fc1a64e3f 100644 --- a/extensions/dicom-segmentation/package.json +++ b/extensions/dicom-segmentation/package.json @@ -31,7 +31,7 @@ "@ohif/core": "^0.50.0", "cornerstone-core": "^2.2.8", "cornerstone-tools": "4.15.1", - "dcmjs": "^0.12.2", + "dcmjs": "0.13.0", "prop-types": "^15.6.2", "react": "^16.8.6", "react-dom": "^16.8.6" diff --git a/extensions/dicom-segmentation/src/components/SegmentationPanel/SegmentationPanel.css b/extensions/dicom-segmentation/src/components/SegmentationPanel/SegmentationPanel.css index 888067b56..d22eafa19 100644 --- a/extensions/dicom-segmentation/src/components/SegmentationPanel/SegmentationPanel.css +++ b/extensions/dicom-segmentation/src/components/SegmentationPanel/SegmentationPanel.css @@ -8,6 +8,11 @@ flex-direction: column; } +.dcmseg-segmentation-panel.disabled { + opacity: 0.6; + pointer-events: none; +} + .dcmseg-segmentation-panel h3 { padding-left: 20px; margin-top: 0; diff --git a/extensions/dicom-segmentation/src/components/SegmentationPanel/SegmentationPanel.js b/extensions/dicom-segmentation/src/components/SegmentationPanel/SegmentationPanel.js index 2af848454..5b50ba025 100644 --- a/extensions/dicom-segmentation/src/components/SegmentationPanel/SegmentationPanel.js +++ b/extensions/dicom-segmentation/src/components/SegmentationPanel/SegmentationPanel.js @@ -77,7 +77,8 @@ const SegmentationPanel = ({ labelmapList: [], segmentList: [], cachedSegmentsProperties: [], - isLoading: false + isLoading: false, + isDisabled: true }); useEffect(() => { @@ -139,39 +140,45 @@ const SegmentationPanel = ({ const refreshSegmentations = useCallback(() => { const module = cornerstoneTools.getModule('segmentation'); const activeViewport = viewports[activeIndex]; - const studyMetadata = studyMetadataManager.get( - activeViewport.StudyInstanceUID - ); - const firstImageId = studyMetadata.getFirstImageId( - activeViewport.displaySetInstanceUID - ); - const brushStackState = module.state.series[firstImageId]; - if (brushStackState) { - const labelmap3D = - brushStackState.labelmaps3D[brushStackState.activeLabelmapIndex]; - const labelmapList = getLabelmapList( - brushStackState, - firstImageId, - activeViewport + + const isDisabled = !activeViewport || !activeViewport.StudyInstanceUID; + if (!isDisabled) { + const studyMetadata = studyMetadataManager.get( + activeViewport.StudyInstanceUID ); - const segmentList = getSegmentList( - labelmap3D, - firstImageId, - brushStackState + const firstImageId = studyMetadata.getFirstImageId( + activeViewport.displaySetInstanceUID ); - setState(state => ({ - ...state, - brushStackState, - selectedSegmentation: brushStackState.activeLabelmapIndex, - labelmapList, - segmentList, - })); - } else { - setState(state => ({ - ...state, - labelmapList: [], - segmentList: [], - })); + const brushStackState = module.state.series[firstImageId]; + if (brushStackState) { + const labelmap3D = + brushStackState.labelmaps3D[brushStackState.activeLabelmapIndex]; + const labelmapList = getLabelmapList( + brushStackState, + firstImageId, + activeViewport + ); + const segmentList = getSegmentList( + labelmap3D, + firstImageId, + brushStackState + ); + setState(state => ({ + ...state, + brushStackState, + selectedSegmentation: brushStackState.activeLabelmapIndex, + labelmapList, + segmentList, + isDisabled + })); + } else { + setState(state => ({ + ...state, + labelmapList: [], + segmentList: [], + isDisabled + })); + } } }, [ viewports, @@ -181,7 +188,7 @@ const SegmentationPanel = ({ useEffect(() => { refreshSegmentations(); - }, [viewports, activeIndex, state.selectedSegmentation, activeContexts, state.isLoading]); + }, [viewports, activeIndex, isOpen, state.selectedSegmentation, activeContexts, state.isLoading]); /* Handle open/closed panel behaviour */ useEffect(() => { @@ -507,7 +514,7 @@ const SegmentationPanel = ({ ); } else { return ( -