diff --git a/extensions/dicom-rt/src/components/RTPanel/RTPanel.js b/extensions/dicom-rt/src/components/RTPanel/RTPanel.js index 94e80b177..e6399bb02 100644 --- a/extensions/dicom-rt/src/components/RTPanel/RTPanel.js +++ b/extensions/dicom-rt/src/components/RTPanel/RTPanel.js @@ -190,7 +190,7 @@ const RTPanel = ({ studies, viewports, activeIndex, isOpen, onContourItemClick } /> {!state.referencedDisplaysets.length && } - {state.referencedDisplaysets.map(displaySet => { + {state.sets && state.referencedDisplaysets.map(displaySet => { const { SeriesInstanceUID, metadata, isLoaded } = displaySet; const module = cornerstoneTools.getModule('rtstruct'); @@ -205,9 +205,14 @@ const RTPanel = ({ studies, viewports, activeIndex, isOpen, onContourItemClick } visible={isLoaded && loadedSet.visible} hideVisibleButton={!isLoaded} expanded={isLoaded && loadedSet.SeriesInstanceUID === state.selectedSet.SeriesInstanceUID} - onVisibilityChange={() => { + onVisibilityChange={newVisibility => { const module = cornerstoneTools.getModule('rtstruct'); - module.setters.toggleStructureSet(SeriesInstanceUID); + loadedSet.ROIContours.forEach(({ ROINumber }) => { + module.setters.toggleROIContour(loadedSet.SeriesInstanceUID, ROINumber); + }); + const sets = module.getters.structuresSetsWhichReferenceSeriesInstanceUid(viewports[activeIndex].SeriesInstanceUID); + setState(state => ({ ...state, sets })); + refreshViewport(); }} onExpandChange={async () => { if (!isLoaded) { diff --git a/extensions/dicom-rt/src/components/StructureSetItem/StructureSetItem.js b/extensions/dicom-rt/src/components/StructureSetItem/StructureSetItem.js index 1c28cb764..ba3066462 100644 --- a/extensions/dicom-rt/src/components/StructureSetItem/StructureSetItem.js +++ b/extensions/dicom-rt/src/components/StructureSetItem/StructureSetItem.js @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import PropTypes from 'prop-types'; import { TableListItem, Icon } from '@ohif/ui'; @@ -28,6 +28,11 @@ const StructureSetItem = ({ selected = false, }) => { const [isVisible, setIsVisible] = useState(visible); + + useEffect(() => { + setIsVisible(visible); + }, [visible]) + return (
{ // find most recent and load it. let recentDateTime = 0; - let recentDisplaySet; + let recentDisplaySet = displaySets[0]; displaySets.forEach(displaySet => { const dateTime = Number( diff --git a/platform/viewer/cypress/integration/common/OHIFStudyList.spec.js b/platform/viewer/cypress/integration/common/OHIFStudyList.spec.js index 0e40c8688..bdb3092ec 100644 --- a/platform/viewer/cypress/integration/common/OHIFStudyList.spec.js +++ b/platform/viewer/cypress/integration/common/OHIFStudyList.spec.js @@ -22,7 +22,7 @@ describe('OHIF Study List', function() { //Wait result list to be displayed cy.waitStudyList(); cy.get('@searchResult').should($list => { - expect($list.length).to.be.eq(2); + expect($list.length).to.be.eq(3); expect($list).to.contain('Juno'); }); }); @@ -127,7 +127,7 @@ describe('OHIF Study List', function() { //Wait result list to be displayed cy.waitStudyList(); cy.get('@searchResult').should($list => { - expect($list.length).to.be.eq(2); + expect($list.length).to.be.eq(3); expect($list).to.contain('Juno'); }); }); @@ -137,7 +137,7 @@ describe('OHIF Study List', function() { //Wait result list to be displayed cy.waitStudyList(); cy.get('@searchResult').should($list => { - expect($list.length).to.be.eq(2); + expect($list.length).to.be.eq(6); expect($list).to.contain('ProstateX-0000'); }); });