import React, { Component } from 'react'; import PropTypes from 'prop-types'; import ImageThumbnail from './ImageThumbnail'; import './ThumbnailEntry.styl'; import classnames from 'classnames'; class ThumbnailEntry extends Component { static defaultProps = { active: false, error: false, stackPercentComplete: 0, }; static propTypes = { id: PropTypes.string.isRequired, imageSrc: PropTypes.string, imageId: PropTypes.string, error: PropTypes.bool.isRequired, active: PropTypes.bool.isRequired, stackPercentComplete: PropTypes.number, /** altImageText will be used when no imageId or imageSrc is provided. It will be displayed inside the
. This is useful when it is difficult to make a preview for a type of DICOM series (e.g. DICOM-SR) */ altImageText: PropTypes.string, seriesDescription: PropTypes.string, seriesNumber: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), instanceNumber: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), numImageFrames: PropTypes.number, onDoubleClick: PropTypes.func, onClick: PropTypes.func, }; render() { const hasInstanceNumber = this.props.instanceNumber !== undefined; let className = classnames('ThumbnailEntry noselect', { active: this.props.active, }); let contents = null; if (this.props.imageSrc || this.props.imageId) { contents = (
); } else if (this.props.altImageText) { contents = (

{this.props.altImageText}

); } return (
{contents}
{this.props.seriesDescription}
S:
{this.props.seriesNumber}
{hasInstanceNumber && (
I:
{this.props.instanceNumber}
)}
{this.props.numImageFrames}
); } onClick = () => { if (this.props.onClick) { this.props.onClick(this.props.displaySetInstanceUid); } }; onDoubleClick = () => { if (this.props.onDoubleClick) { this.props.onDoubleClick(this.props.displaySetInstanceUid); } }; } export { ThumbnailEntry };