fix: IDC-2288: Update toolbar tabs after derived displayset loaded (#2307)

* Update toolbar tabs after derived displayset loaded

* trigger CI

Co-authored-by: Davide Punzo <punzodavide@hotmail.it>
This commit is contained in:
Igor Octaviano 2021-03-25 13:12:20 -03:00 committed by GitHub
parent a6a231c81e
commit 6e723ebced
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 2 deletions

View File

@ -49,9 +49,7 @@ import studyMetadataManager from './studyMetadataManager';
*/ */
const loadAndCacheDerivedDisplaySets = (referencedDisplaySet, studies) => { const loadAndCacheDerivedDisplaySets = (referencedDisplaySet, studies) => {
const { StudyInstanceUID, SeriesInstanceUID } = referencedDisplaySet; const { StudyInstanceUID, SeriesInstanceUID } = referencedDisplaySet;
const promises = []; const promises = [];
const studyMetadata = studyMetadataManager.get(StudyInstanceUID); const studyMetadata = studyMetadataManager.get(StudyInstanceUID);
if (!studyMetadata) { if (!studyMetadata) {
@ -112,6 +110,16 @@ const loadAndCacheDerivedDisplaySets = (referencedDisplaySet, studies) => {
promises.push(recentDisplaySet.load(referencedDisplaySet, studies)); promises.push(recentDisplaySet.load(referencedDisplaySet, studies));
}); });
Promise.all(promises).then(() => {
/*
* TODO: Improve the way we notify parts of the app
* that depends on derived display sets to be loaded.
* (Implement pubsub for better tracking of derived display sets)
*/
const event = new CustomEvent('deriveddisplaysetsloadedandcached');
document.dispatchEvent(event);
});
return promises; return promises;
}; };

View File

@ -59,6 +59,9 @@ class ToolbarRow extends Component {
this.seriesPerStudyCount = []; this.seriesPerStudyCount = [];
this._handleBuiltIn = _handleBuiltIn.bind(this); this._handleBuiltIn = _handleBuiltIn.bind(this);
this._onDerivedDisplaySetsLoadedAndCached = this._onDerivedDisplaySetsLoadedAndCached.bind(
this
);
this.updateButtonGroups(); this.updateButtonGroups();
} }
@ -109,6 +112,32 @@ class ToolbarRow extends Component {
}); });
} }
componentDidMount() {
/*
* TODO: Improve the way we notify parts of the app
* that depends on derived display sets to be loaded.
* (Implement pubsub for better tracking of derived display sets)
*/
document.addEventListener(
'deriveddisplaysetsloadedandcached',
this._onDerivedDisplaySetsLoadedAndCached
);
}
componentWillUnmount() {
document.removeEventListener(
'deriveddisplaysetsloadedandcached',
this._onDerivedDisplaySetsLoadedAndCached
);
}
_onDerivedDisplaySetsLoadedAndCached() {
this.updateButtonGroups();
this.setState({
toolbarButtons: _getVisibleToolbarButtons.call(this),
});
}
componentDidUpdate(prevProps) { componentDidUpdate(prevProps) {
const activeContextsChanged = const activeContextsChanged =
prevProps.activeContexts !== this.props.activeContexts; prevProps.activeContexts !== this.props.activeContexts;

View File

@ -271,6 +271,7 @@ class Viewer extends Component {
activeViewport={ activeViewport={
this.props.viewports[this.props.activeViewportIndex] this.props.viewports[this.props.activeViewportIndex]
} }
isDerivedDisplaySetsLoaded={this.props.isDerivedDisplaySetsLoaded}
isLeftSidePanelOpen={this.state.isLeftSidePanelOpen} isLeftSidePanelOpen={this.state.isLeftSidePanelOpen}
isRightSidePanelOpen={this.state.isRightSidePanelOpen} isRightSidePanelOpen={this.state.isRightSidePanelOpen}
selectedLeftSidePanel={ selectedLeftSidePanel={