fix: 🐛 Fix race condition when loading derived display sets (#1718)
When we have multiple SEGs/RTSTRUCTs we intend to load the most recent by default. BREAKING CHANGE: 🧨 However we start to load once the first set of metadata arrives. We need to wait until all series metadata is fetched. ✅ Closes: #1715 Co-authored-by: James Petts <jamesapetts@gmail.com>
This commit is contained in:
parent
39937cca08
commit
b1678ce639
@ -24,6 +24,7 @@ const ViewportGrid = function(props) {
|
|||||||
studies,
|
studies,
|
||||||
viewportData,
|
viewportData,
|
||||||
children,
|
children,
|
||||||
|
isStudyLoaded
|
||||||
} = props;
|
} = props;
|
||||||
|
|
||||||
const rowSize = 100 / numRows;
|
const rowSize = 100 / numRows;
|
||||||
@ -37,6 +38,7 @@ const ViewportGrid = function(props) {
|
|||||||
const snackbar = useSnackbarContext();
|
const snackbar = useSnackbarContext();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (isStudyLoaded) {
|
||||||
viewportData.forEach(displaySet => {
|
viewportData.forEach(displaySet => {
|
||||||
const promises = loadAndCacheDerivedDisplaySets(displaySet, studies);
|
const promises = loadAndCacheDerivedDisplaySets(displaySet, studies);
|
||||||
|
|
||||||
@ -51,7 +53,8 @@ const ViewportGrid = function(props) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}, [studies, viewportData]);
|
}
|
||||||
|
}, [studies, viewportData, isStudyLoaded]);
|
||||||
|
|
||||||
const getViewportPanes = () =>
|
const getViewportPanes = () =>
|
||||||
layout.viewports.map((layout, viewportIndex) => {
|
layout.viewports.map((layout, viewportIndex) => {
|
||||||
|
|||||||
@ -316,7 +316,7 @@ class Viewer extends Component {
|
|||||||
|
|
||||||
{/* MAIN */}
|
{/* MAIN */}
|
||||||
<div className={classNames('main-content')}>
|
<div className={classNames('main-content')}>
|
||||||
<ConnectedViewerMain studies={this.props.studies} />
|
<ConnectedViewerMain studies={this.props.studies} isStudyLoaded={this.props.isStudyLoaded} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* RIGHT */}
|
{/* RIGHT */}
|
||||||
|
|||||||
@ -150,6 +150,7 @@ class ViewerMain extends Component {
|
|||||||
<div className="ViewerMain">
|
<div className="ViewerMain">
|
||||||
{this.state.displaySets.length && (
|
{this.state.displaySets.length && (
|
||||||
<ConnectedViewportGrid
|
<ConnectedViewportGrid
|
||||||
|
isStudyLoaded={this.props.isStudyLoaded}
|
||||||
studies={this.props.studies}
|
studies={this.props.studies}
|
||||||
viewportData={viewportData}
|
viewportData={viewportData}
|
||||||
setViewportData={this.setViewportData}
|
setViewportData={this.setViewportData}
|
||||||
|
|||||||
@ -269,7 +269,8 @@ function ViewerRetrieveStudyData({
|
|||||||
const promises = Array(concurrentRequestsAllowed)
|
const promises = Array(concurrentRequestsAllowed)
|
||||||
.fill(null)
|
.fill(null)
|
||||||
.map(loadNextSeries);
|
.map(loadNextSeries);
|
||||||
await Promise.all(promises);
|
|
||||||
|
return await Promise.all(promises);
|
||||||
};
|
};
|
||||||
|
|
||||||
const loadStudies = async () => {
|
const loadStudies = async () => {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user