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

107 lines
3.2 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;
2019-10-30 16:53:58 -03:00
return study.thumbnails.map((thumb, thumbIndex) => {
// TODO: Thumb has more props than we care about?
const {
active,
2019-10-30 16:53:58 -03:00
altImageText,
displaySetInstanceUID,
2019-10-30 16:53:58 -03:00
imageId,
InstanceNumber,
2019-10-30 16:53:58 -03:00
numImageFrames,
SeriesDescription,
SeriesNumber,
2019-10-30 16:53:58 -03:00
stackPercentComplete,
hasWarnings,
2019-10-30 16:53:58 -03:00
} = thumb;
2019-08-13 15:36:46 -04:00
2019-10-30 16:53:58 -03:00
return (
<div
key={thumb.displaySetInstanceUID}
2019-10-30 16:53:58 -03:00
className="thumbnail-container"
data-cy="thumbnail-list"
>
<Thumbnail
active={active}
2019-10-30 16:53:58 -03:00
supportsDrag={supportsDrag}
key={`${studyIndex}_${thumbIndex}`}
id={`${studyIndex}_${thumbIndex}`} // Unused?
// Study
StudyInstanceUID={StudyInstanceUID} // used by drop
2019-10-30 16:53:58 -03:00
// Thumb
altImageText={altImageText}
imageId={imageId}
InstanceNumber={InstanceNumber}
displaySetInstanceUID={displaySetInstanceUID} // used by drop
2019-10-30 16:53:58 -03:00
numImageFrames={numImageFrames}
SeriesDescription={SeriesDescription}
SeriesNumber={SeriesNumber}
hasWarnings={hasWarnings}
2019-10-30 16:53:58 -03:00
stackPercentComplete={stackPercentComplete}
// Events
onClick={onThumbnailClick.bind(
undefined,
displaySetInstanceUID
2019-10-30 16:53:58 -03:00
)}
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,
2019-10-30 16:53:58 -03:00
thumbnails: PropTypes.arrayOf(
PropTypes.shape({
altImageText: PropTypes.string,
displaySetInstanceUID: PropTypes.string.isRequired,
2019-10-30 16:53:58 -03:00
imageId: PropTypes.string,
InstanceNumber: PropTypes.number,
2019-10-30 16:53:58 -03:00
numImageFrames: PropTypes.number,
SeriesDescription: PropTypes.string,
SeriesNumber: PropTypes.number,
2019-10-30 16:53:58 -03:00
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 };