Enable non-thumbnail entries in thumbnail list.
This commit is contained in:
parent
6f6fea973d
commit
2fc171e297
@ -18,7 +18,9 @@ function PanelStudyBrowser({
|
|||||||
// Tabs --> Studies --> DisplaySets --> Thumbnails
|
// Tabs --> Studies --> DisplaySets --> Thumbnails
|
||||||
const [{ StudyInstanceUIDs }, dispatch] = useImageViewer();
|
const [{ StudyInstanceUIDs }, dispatch] = useImageViewer();
|
||||||
const [activeTabName, setActiveTabName] = useState('primary');
|
const [activeTabName, setActiveTabName] = useState('primary');
|
||||||
const [expandedStudyInstanceUIDs, setExpandedStudyInstanceUIDs] = useState([]);
|
const [expandedStudyInstanceUIDs, setExpandedStudyInstanceUIDs] = useState(
|
||||||
|
[]
|
||||||
|
);
|
||||||
const [studyDisplayList, setStudyDisplayList] = useState([]);
|
const [studyDisplayList, setStudyDisplayList] = useState([]);
|
||||||
const [displaySets, setDisplaySets] = useState([]);
|
const [displaySets, setDisplaySets] = useState([]);
|
||||||
const [thumbnailImageSrcMap, setThumbnailImageSrcMap] = useState({});
|
const [thumbnailImageSrcMap, setThumbnailImageSrcMap] = useState({});
|
||||||
@ -137,8 +139,12 @@ function PanelStudyBrowser({
|
|||||||
StudyInstanceUID
|
StudyInstanceUID
|
||||||
);
|
);
|
||||||
const updatedExpandedStudyInstanceUIDs = shouldCollapseStudy
|
const updatedExpandedStudyInstanceUIDs = shouldCollapseStudy
|
||||||
// eslint-disable-next-line prettier/prettier
|
? // eslint-disable-next-line prettier/prettier
|
||||||
? [...expandedStudyInstanceUIDs.filter(stdyUid => stdyUid !== StudyInstanceUID)]
|
[
|
||||||
|
...expandedStudyInstanceUIDs.filter(
|
||||||
|
stdyUid => stdyUid !== StudyInstanceUID
|
||||||
|
),
|
||||||
|
]
|
||||||
: [...expandedStudyInstanceUIDs, StudyInstanceUID];
|
: [...expandedStudyInstanceUIDs, StudyInstanceUID];
|
||||||
|
|
||||||
setExpandedStudyInstanceUIDs(updatedExpandedStudyInstanceUIDs);
|
setExpandedStudyInstanceUIDs(updatedExpandedStudyInstanceUIDs);
|
||||||
@ -202,27 +208,55 @@ function _mapDataSourceStudies(studies) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function _mapDisplaySets(displaySets, thumbnailImageSrcMap) {
|
function _mapDisplaySets(displaySets, thumbnailImageSrcMap) {
|
||||||
return displaySets.map(ds => {
|
const thumbnailDisplaySets = [];
|
||||||
|
const thumbnailNoImageDisplaySets = [];
|
||||||
|
|
||||||
|
displaySets.forEach(ds => {
|
||||||
const imageSrc = thumbnailImageSrcMap[ds.displaySetInstanceUID];
|
const imageSrc = thumbnailImageSrcMap[ds.displaySetInstanceUID];
|
||||||
return {
|
const componentType = _getComponentType(ds.Modality);
|
||||||
|
|
||||||
|
const array =
|
||||||
|
componentType === 'thumbnail'
|
||||||
|
? thumbnailDisplaySets
|
||||||
|
: thumbnailNoImageDisplaySets;
|
||||||
|
|
||||||
|
array.push({
|
||||||
displaySetInstanceUID: ds.displaySetInstanceUID,
|
displaySetInstanceUID: ds.displaySetInstanceUID,
|
||||||
description: ds.SeriesDescription,
|
description: ds.SeriesDescription,
|
||||||
seriesNumber: ds.SeriesNumber,
|
seriesNumber: ds.SeriesNumber,
|
||||||
modality: ds.Modality,
|
modality: ds.Modality,
|
||||||
date: ds.SeriesDate,
|
seriesDate: ds.SeriesDate,
|
||||||
numInstances: ds.numImageFrames,
|
numInstances: ds.numImageFrames,
|
||||||
StudyInstanceUID: ds.StudyInstanceUID,
|
StudyInstanceUID: ds.StudyInstanceUID,
|
||||||
componentType: 'thumbnail', // 'thumbnailNoImage' || 'thumbnailTracked' // TODO: PUT THIS SOMEWHERE ELSE
|
componentType,
|
||||||
imageSrc,
|
imageSrc,
|
||||||
dragData: {
|
dragData: {
|
||||||
type: 'displayset',
|
type: 'displayset',
|
||||||
displaySetInstanceUID: ds.displaySetInstanceUID,
|
displaySetInstanceUID: ds.displaySetInstanceUID,
|
||||||
// .. Any other data to pass
|
// .. Any other data to pass
|
||||||
},
|
},
|
||||||
};
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return [...thumbnailDisplaySets, ...thumbnailNoImageDisplaySets];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const thumbnailNoImageModalities = [
|
||||||
|
'SR',
|
||||||
|
'SEG',
|
||||||
|
'RTSTRUCT',
|
||||||
|
'RTPLAN',
|
||||||
|
'RTDOSE',
|
||||||
|
];
|
||||||
|
|
||||||
|
function _getComponentType(Modality) {
|
||||||
|
if (thumbnailNoImageModalities.includes(Modality)) {
|
||||||
|
// TODO probably others.
|
||||||
|
return 'thumbnailNoImage';
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'thumbnail';
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|||||||
@ -55,7 +55,14 @@ function _getDisplaySetsFromSeries(
|
|||||||
|
|
||||||
const instance = instances[0];
|
const instance = instances[0];
|
||||||
|
|
||||||
const { StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID } = instance;
|
const {
|
||||||
|
StudyInstanceUID,
|
||||||
|
SeriesInstanceUID,
|
||||||
|
SOPInstanceUID,
|
||||||
|
SeriesDescription,
|
||||||
|
SeriesNumber,
|
||||||
|
SeriesDate,
|
||||||
|
} = instance;
|
||||||
const { ConceptNameCodeSequence, ContentSequence } = instance;
|
const { ConceptNameCodeSequence, ContentSequence } = instance;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@ -72,6 +79,9 @@ function _getDisplaySetsFromSeries(
|
|||||||
plugin: id,
|
plugin: id,
|
||||||
Modality: 'SR',
|
Modality: 'SR',
|
||||||
displaySetInstanceUID: utils.guid(),
|
displaySetInstanceUID: utils.guid(),
|
||||||
|
SeriesDescription,
|
||||||
|
SeriesNumber,
|
||||||
|
SeriesDate,
|
||||||
SOPInstanceUID,
|
SOPInstanceUID,
|
||||||
SeriesInstanceUID,
|
SeriesInstanceUID,
|
||||||
StudyInstanceUID,
|
StudyInstanceUID,
|
||||||
|
|||||||
@ -3,11 +3,7 @@ import PropTypes from 'prop-types';
|
|||||||
|
|
||||||
import { Thumbnail, ThumbnailNoImage, ThumbnailTracked } from '@ohif/ui';
|
import { Thumbnail, ThumbnailNoImage, ThumbnailTracked } from '@ohif/ui';
|
||||||
|
|
||||||
const ThumbnailList = ({
|
const ThumbnailList = ({ thumbnails, thumbnailActive, onThumbnailClick }) => {
|
||||||
thumbnails,
|
|
||||||
thumbnailActive,
|
|
||||||
onThumbnailClick,
|
|
||||||
}) => {
|
|
||||||
return (
|
return (
|
||||||
<div className="py-3 bg-black">
|
<div className="py-3 bg-black">
|
||||||
{thumbnails.map(
|
{thumbnails.map(
|
||||||
|
|||||||
@ -1,11 +1,26 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
import { useDrag } from 'react-dnd';
|
||||||
|
|
||||||
import { Icon } from '@ohif/ui';
|
import { Icon } from '@ohif/ui';
|
||||||
|
|
||||||
const ThumbnailNoImage = ({ description, seriesDate, modality, onClick }) => {
|
const ThumbnailNoImage = ({
|
||||||
|
description,
|
||||||
|
seriesDate,
|
||||||
|
modality,
|
||||||
|
onClick,
|
||||||
|
dragData,
|
||||||
|
}) => {
|
||||||
|
const [collectedProps, drag, dragPreview] = useDrag({
|
||||||
|
item: { ...dragData },
|
||||||
|
canDrag: function(monitor) {
|
||||||
|
return Object.keys(dragData).length !== 0;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
|
ref={drag}
|
||||||
className="flex flex-row flex-1 px-4 py-3 cursor-pointer"
|
className="flex flex-row flex-1 px-4 py-3 cursor-pointer"
|
||||||
onClick={onClick}
|
onClick={onClick}
|
||||||
onKeyDown={onClick}
|
onKeyDown={onClick}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user