Files
ohif-viewer/platform/ui/src/components/studyBrowser/StudyBrowser.js
T

103 lines
3.1 KiB
JavaScript
Raw Normal View History

2019-10-30 16:53:58 -03:00
import React from 'react';
2019-08-13 15:36:46 -04:00
import PropTypes from 'prop-types';
2019-10-30 16:53:58 -03:00
import { Thumbnail } from './Thumbnail.js';
2019-08-13 15:36:46 -04:00
import './StudyBrowser.styl';
2019-10-30 16:53:58 -03:00
function StudyBrowser(props) {
const {
studies,
onThumbnailClick,
onThumbnailDoubleClick,
supportsDrag,
} = props;
2019-08-13 15:36:46 -04:00
2019-10-30 16:53:58 -03:00
return (
<div className="study-browser">
<div className="scrollable-study-thumbnails">
{studies
.map((study, studyIndex) => {
const { studyInstanceUid } = study;
return study.thumbnails.map((thumb, thumbIndex) => {
// TODO: Thumb has more props than we care about?
const {
altImageText,
displaySetInstanceUid,
imageId,
instanceNumber,
numImageFrames,
seriesDescription,
seriesNumber,
stackPercentComplete,
} = thumb;
2019-08-13 15:36:46 -04:00
2019-10-30 16:53:58 -03:00
return (
<div
key={`container_${studyIndex}_${thumbIndex}`}
className="thumbnail-container"
data-cy="thumbnail-list"
>
<Thumbnail
supportsDrag={supportsDrag}
key={`${studyIndex}_${thumbIndex}`}
id={`${studyIndex}_${thumbIndex}`} // Unused?
// Study
studyInstanceUid={studyInstanceUid} // used by drop
// Thumb
altImageText={altImageText}
imageId={imageId}
instanceNumber={instanceNumber}
displaySetInstanceUid={displaySetInstanceUid} // used by drop
numImageFrames={numImageFrames}
seriesDescription={seriesDescription}
seriesNumber={seriesNumber}
stackPercentComplete={stackPercentComplete}
// Events
onClick={onThumbnailClick.bind(
undefined,
displaySetInstanceUid
)}
onDoubleClick={onThumbnailDoubleClick}
/>
</div>
);
});
})
.flat()}
2019-08-13 15:36:46 -04:00
</div>
2019-10-30 16:53:58 -03:00
</div>
);
2019-08-13 15:36:46 -04:00
}
2019-10-30 16:53:58 -03:00
const noop = () => {};
StudyBrowser.propTypes = {
studies: PropTypes.arrayOf(
PropTypes.shape({
studyInstanceUid: PropTypes.string.isRequired,
thumbnails: PropTypes.arrayOf(
PropTypes.shape({
altImageText: PropTypes.string,
displaySetInstanceUid: PropTypes.string.isRequired,
imageId: PropTypes.string,
instanceNumber: PropTypes.number,
numImageFrames: PropTypes.number,
seriesDescription: PropTypes.string,
seriesNumber: PropTypes.number,
stackPercentComplete: PropTypes.number,
})
),
})
).isRequired,
supportsDrag: PropTypes.bool,
onThumbnailClick: PropTypes.func,
onThumbnailDoubleClick: PropTypes.func,
};
StudyBrowser.defaultProps = {
studies: [],
supportsDrag: true,
onThumbnailClick: noop,
onThumbnailDoubleClick: noop,
};
2019-08-13 15:36:46 -04:00
export { StudyBrowser };