import React from 'react'; import PropTypes from 'prop-types'; import classnames from 'classnames'; import Icon from '../Icon'; import Thumbnail from '../Thumbnail'; import Tooltip from '../Tooltip'; import { StringNumber } from '../../types'; const ThumbnailTracked = ({ displaySetInstanceUID, className, imageSrc, imageAltText, description, seriesNumber, numInstances, countIcon, dragData, onClick, onDoubleClick, onClickUntrack, viewportIdentificator, isTracked, isActive, }) => { const trackedIcon = isTracked ? 'circled-checkmark' : 'dotted-circle'; const viewportIdentificatorLabel = viewportIdentificator.join(', '); const renderViewportLabels = () => { const MAX_LABELS_PER_COL = 3; const shouldShowStack = viewportIdentificator.length > MAX_LABELS_PER_COL; if (shouldShowStack) { return (
{viewportIdentificator.slice(0, MAX_LABELS_PER_COL).map(label => (
{label}
))}
Series is displayed
in viewport{' '} {viewportIdentificatorLabel}
} > ); } return viewportIdentificator.map(label =>
{label}
); }; return (
Series is {isTracked ? ' tracked' : ' untracked'} {!!viewportIdentificator.length && ( in viewport {viewportIdentificatorLabel} )}
} >
{renderViewportLabels()}
{isTracked && (
)}
); }; ThumbnailTracked.propTypes = { /** * Data the thumbnail should expose to a receiving drop target. Use a matching * `dragData.type` to identify which targets can receive this draggable item. * If this is not set, drag-n-drop will be disabled for this thumbnail. * * Ref: https://react-dnd.github.io/react-dnd/docs/api/use-drag#specification-object-members */ dragData: PropTypes.shape({ /** Must match the "type" a dropTarget expects */ type: PropTypes.string.isRequired, }), displaySetInstanceUID: PropTypes.string.isRequired, className: PropTypes.string, imageSrc: PropTypes.string, imageAltText: PropTypes.string, description: PropTypes.string.isRequired, seriesNumber: StringNumber.isRequired, numInstances: PropTypes.number.isRequired, onClick: PropTypes.func.isRequired, onDoubleClick: PropTypes.func.isRequired, onClickUntrack: PropTypes.func.isRequired, viewportIdentificator: PropTypes.array, isTracked: PropTypes.bool, isActive: PropTypes.bool.isRequired, }; export default ThumbnailTracked;