fix: Performance of panel study browser (#4819)
This commit is contained in:
parent
6b0bb9402f
commit
d25809eed0
@ -119,7 +119,7 @@ function PanelStudyBrowser({
|
|||||||
date: formatDate(qidoStudy.StudyDate),
|
date: formatDate(qidoStudy.StudyDate),
|
||||||
description: qidoStudy.StudyDescription,
|
description: qidoStudy.StudyDescription,
|
||||||
modalities: qidoStudy.ModalitiesInStudy,
|
modalities: qidoStudy.ModalitiesInStudy,
|
||||||
numInstances: qidoStudy.NumInstances,
|
numInstances: Number(qidoStudy.NumInstances),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -158,13 +158,26 @@ function PanelStudyBrowser({
|
|||||||
const imageIds = dataSource.getImageIdsForDisplaySet(displaySet);
|
const imageIds = dataSource.getImageIdsForDisplaySet(displaySet);
|
||||||
const imageId = imageIds[Math.floor(imageIds.length / 2)];
|
const imageId = imageIds[Math.floor(imageIds.length / 2)];
|
||||||
|
|
||||||
|
let { thumbnailSrc } = displaySet;
|
||||||
|
if (!thumbnailSrc && displaySet.getThumbnailSrc) {
|
||||||
|
thumbnailSrc = await displaySet.getThumbnailSrc();
|
||||||
|
}
|
||||||
|
if (!thumbnailSrc) {
|
||||||
|
let thumbnailSrc = await getImageSrc(imageId);
|
||||||
|
displaySet.thumbnailSrc = thumbnailSrc;
|
||||||
|
}
|
||||||
|
newImageSrcEntry[dSet.displaySetInstanceUID] = thumbnailSrc;
|
||||||
// TODO: Is it okay that imageIds are not returned here for SR displaySets?
|
// TODO: Is it okay that imageIds are not returned here for SR displaySets?
|
||||||
if (!imageId || displaySet?.unsupported) {
|
if (!imageId || displaySet?.unsupported) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// When the image arrives, render it and store the result in the thumbnailImgSrcMap
|
// When the image arrives, render it and store the result in the thumbnailImgSrcMap
|
||||||
|
try {
|
||||||
newImageSrcEntry[dSet.displaySetInstanceUID] = await getImageSrc(imageId);
|
newImageSrcEntry[dSet.displaySetInstanceUID] = await getImageSrc(imageId);
|
||||||
|
} catch (e) {
|
||||||
|
// This can happen for thumbnails and generate huge log sets if logged.
|
||||||
|
return;
|
||||||
|
}
|
||||||
setThumbnailImageSrcMap(prevState => {
|
setThumbnailImageSrcMap(prevState => {
|
||||||
return { ...prevState, ...newImageSrcEntry };
|
return { ...prevState, ...newImageSrcEntry };
|
||||||
});
|
});
|
||||||
@ -356,7 +369,7 @@ function _mapDisplaySets(displaySets, thumbnailImageSrcMap) {
|
|||||||
displaySets
|
displaySets
|
||||||
.filter(ds => !ds.excludeFromThumbnailBrowser)
|
.filter(ds => !ds.excludeFromThumbnailBrowser)
|
||||||
.forEach(ds => {
|
.forEach(ds => {
|
||||||
const imageSrc = thumbnailImageSrcMap[ds.displaySetInstanceUID];
|
const { thumbnailSrc, displaySetInstanceUID } = ds; // thumbnailImageSrcMap[ds.displaySetInstanceUID];
|
||||||
const componentType = _getComponentType(ds);
|
const componentType = _getComponentType(ds);
|
||||||
|
|
||||||
const array =
|
const array =
|
||||||
@ -369,12 +382,12 @@ function _mapDisplaySets(displaySets, thumbnailImageSrcMap) {
|
|||||||
modality: ds.Modality,
|
modality: ds.Modality,
|
||||||
seriesDate: ds.SeriesDate,
|
seriesDate: ds.SeriesDate,
|
||||||
seriesTime: ds.SeriesTime,
|
seriesTime: ds.SeriesTime,
|
||||||
numInstances: ds.numImageFrames,
|
numInstances: parseInt(ds.numImageFrames),
|
||||||
countIcon: ds.countIcon,
|
countIcon: ds.countIcon,
|
||||||
StudyInstanceUID: ds.StudyInstanceUID,
|
StudyInstanceUID: ds.StudyInstanceUID,
|
||||||
messages: ds.messages,
|
messages: ds.messages,
|
||||||
componentType,
|
componentType,
|
||||||
imageSrc,
|
imageSrc: thumbnailSrc || thumbnailImageSrcMap[displaySetInstanceUID],
|
||||||
dragData: {
|
dragData: {
|
||||||
type: 'displayset',
|
type: 'displayset',
|
||||||
displaySetInstanceUID: ds.displaySetInstanceUID,
|
displaySetInstanceUID: ds.displaySetInstanceUID,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user