import OHIF from '@ohif/core'; import { connect } from 'react-redux'; import findDisplaySetByUID from './findDisplaySetByUID'; import { servicesManager } from './../App.js'; import { StudyBrowser } from '../../../ui/src/components/studyBrowser/StudyBrowser'; const { setActiveViewportSpecificData } = OHIF.redux.actions; const mapDispatchToProps = (dispatch, ownProps) => { return { onThumbnailClick: displaySetInstanceUID => { let displaySet = findDisplaySetByUID( ownProps.studyMetadata, displaySetInstanceUID ); if (displaySet.isDerived) { const { Modality } = displaySet; if (Modality === 'SEG' && servicesManager) { const { LoggerService, UINotificationService, } = servicesManager.services; const onDisplaySetLoadFailureHandler = error => { LoggerService.error({ error, message: error.message }); UINotificationService.show({ title: 'DICOM Segmentation Loader', message: error.message, type: 'error', autoClose: true, }); }; const { referencedDisplaySet, activatedLabelmapPromise, } = displaySet.getSourceDisplaySet( ownProps.studyMetadata, true, onDisplaySetLoadFailureHandler ); displaySet = referencedDisplaySet; activatedLabelmapPromise.then(activatedLabelmapIndex => { const selectionFired = new CustomEvent( 'extensiondicomsegmentationsegselected', { detail: { activatedLabelmapIndex: activatedLabelmapIndex }, } ); document.dispatchEvent(selectionFired); }); } else { displaySet = displaySet.getSourceDisplaySet(ownProps.studyMetadata); } if (!displaySet) { throw new Error( `Referenced series for ${Modality} dataset not present.` ); } if (!displaySet) { throw new Error('Source data not present'); } } dispatch(setActiveViewportSpecificData(displaySet)); }, }; }; const ConnectedStudyBrowser = connect( null, mapDispatchToProps )(StudyBrowser); export default ConnectedStudyBrowser;