From 8518e179ee6e70f3e441bd7e9f8807f34049985e Mon Sep 17 00:00:00 2001 From: igoroctaviano Date: Thu, 29 Jul 2021 09:18:31 -0300 Subject: [PATCH] Extract event --- extensions/dicom-rt/src/index.js | 28 ++++++++++++++----- extensions/dicom-segmentation/src/index.js | 28 ++++++++++++++----- .../src/connectedComponents/ToolbarRow.js | 4 --- 3 files changed, 42 insertions(+), 18 deletions(-) diff --git a/extensions/dicom-rt/src/index.js b/extensions/dicom-rt/src/index.js index 7c31329d1..ff308e133 100644 --- a/extensions/dicom-rt/src/index.js +++ b/extensions/dicom-rt/src/index.js @@ -43,6 +43,23 @@ export default { ); }; + const RTPanelTabChangedEvent = 'rt-panel-tab-updated'; + + /** + * Trigger's an event to update the state of the panel's RoundedButtonGroup. + * + * This is required to avoid extension state + * coupling with the viewer's ToolbarRow component. + * + * @param {object} data + */ + const triggerRTPanelUpdatedEvent = data => { + const event = new CustomEvent(RTPanelTabChangedEvent, { + detail: data, + }); + document.dispatchEvent(event); + }; + const onRTStructsLoaded = ({ detail }) => { const { rtStructDisplaySet, referencedDisplaySet } = detail; @@ -53,13 +70,10 @@ export default { referencedSeriesInstanceUID: referencedDisplaySet.SeriesInstanceUID, Modality: 'RTSTRUCT', }); - const event = new CustomEvent('rt-panel-updated', { - detail: { - badgeNumber: referencedDisplaysets.length, - target: 'rt-panel', - }, + triggerRTPanelUpdatedEvent({ + badgeNumber: referencedDisplaysets.length, + target: 'rt-panel', }); - document.dispatchEvent(event); }; document.addEventListener('extensiondicomrtrtloaded', onRTStructsLoaded); @@ -70,7 +84,7 @@ export default { icon: 'list', label: 'RTSTRUCT', target: 'rt-panel', - stateEvent: 'rt-panel-updated', + stateEvent: RTPanelTabChangedEvent, isDisabled: (studies, activeViewport) => { if (!studies) { return true; diff --git a/extensions/dicom-segmentation/src/index.js b/extensions/dicom-segmentation/src/index.js index 6b01dfcf0..c36d3fab7 100644 --- a/extensions/dicom-segmentation/src/index.js +++ b/extensions/dicom-segmentation/src/index.js @@ -82,6 +82,23 @@ export default { ); }; + const SegmentationPanelTabUpdatedEvent = 'segmentation-panel-tab-updated'; + + /** + * Trigger's an event to update the state of the panel's RoundedButtonGroup. + * + * This is required to avoid extension state + * coupling with the viewer's ToolbarRow component. + * + * @param {object} data + */ + const triggerSegmentationPanelTabUpdatedEvent = data => { + const event = new CustomEvent(SegmentationPanelTabUpdatedEvent, { + detail: data, + }); + document.dispatchEvent(event); + }; + const onSegmentationsLoaded = ({ detail }) => { const { segDisplaySet, segMetadata } = detail; const studyMetadata = studyMetadataManager.get( @@ -91,13 +108,10 @@ export default { referencedSeriesInstanceUID: segMetadata.seriesInstanceUid, Modality: 'SEG', }); - const event = new CustomEvent('segmentation-panel-updated', { - detail: { - badgeNumber: referencedDisplaysets.length, - target: 'segmentation-panel', - }, + triggerSegmentationPanelTabUpdatedEvent({ + badgeNumber: referencedDisplaysets.length, + target: 'segmentation-panel', }); - document.dispatchEvent(event); }; document.addEventListener( @@ -111,7 +125,7 @@ export default { icon: 'list', label: 'Segmentations', target: 'segmentation-panel', - stateEvent: 'segmentation-panel-updated', + stateEvent: SegmentationPanelTabUpdatedEvent, isDisabled: studies => { if (!studies) { return true; diff --git a/platform/viewer/src/connectedComponents/ToolbarRow.js b/platform/viewer/src/connectedComponents/ToolbarRow.js index cf8e74965..12acf31af 100644 --- a/platform/viewer/src/connectedComponents/ToolbarRow.js +++ b/platform/viewer/src/connectedComponents/ToolbarRow.js @@ -112,10 +112,6 @@ class ToolbarRow extends Component { icon: 'th-large', bottomLabel: this.props.t('Series'), }); - - // this.setState({ - // toolbarButtons: _getVisibleToolbarButtons.call(this), - // }); } componentDidMount() {