ohif-viewer/platform/ui/src/components/ThumbnailList/ThumbnailList.jsx
Rodrigo Antinarelli f08ce57c0c pass isActive prop
2020-06-30 15:54:34 -03:00

121 lines
3.8 KiB
JavaScript

import React from 'react';
import PropTypes from 'prop-types';
import { Thumbnail, ThumbnailNoImage, ThumbnailTracked } from '@ohif/ui';
const ThumbnailList = ({
thumbnails,
thumbnailActive,
onThumbnailClick,
onClickUntrack,
}) => {
return (
<div className="py-3 bg-black">
{thumbnails.map(
({
displaySetInstanceUID,
description,
dragData,
seriesNumber,
numInstances,
modality,
componentType,
seriesDate,
viewportIdentificator,
isTracked,
imageSrc,
imageAltText,
}) => {
const isActive = thumbnailActive === displaySetInstanceUID;
switch (componentType) {
case 'thumbnail':
return (
<Thumbnail
key={displaySetInstanceUID}
dragData={dragData}
description={description}
seriesNumber={seriesNumber}
numInstances={numInstances}
imageSrc={imageSrc}
imageAltText={imageAltText}
viewportIdentificator={viewportIdentificator}
isActive={isActive}
onClick={() => onThumbnailClick(displaySetInstanceUID)}
/>
);
case 'thumbnailTracked':
return (
<ThumbnailTracked
key={displaySetInstanceUID}
dragData={dragData}
description={description}
seriesNumber={seriesNumber}
numInstances={numInstances}
imageSrc={imageSrc}
imageAltText={imageAltText}
viewportIdentificator={viewportIdentificator}
isTracked={isTracked}
isActive={isActive}
onClick={() => onThumbnailClick(displaySetInstanceUID)}
onClickUntrack={() => onClickUntrack(displaySetInstanceUID)}
/>
);
case 'thumbnailNoImage':
return (
<ThumbnailNoImage
isActive={isActive}
key={displaySetInstanceUID}
dragData={dragData}
modality={modality}
seriesDate={seriesDate}
description={description}
onClick={() => onThumbnailClick(displaySetInstanceUID)}
/>
);
default:
return <></>;
}
}
)}
</div>
);
};
ThumbnailList.propTypes = {
thumbnails: PropTypes.arrayOf(
PropTypes.shape({
displaySetInstanceUID: PropTypes.string.isRequired,
imageSrc: PropTypes.string,
imageAltText: PropTypes.string,
seriesDate: PropTypes.string,
seriesNumber: PropTypes.number,
numInstances: PropTypes.number,
description: PropTypes.string,
componentType: PropTypes.oneOf([
'thumbnail',
'thumbnailTracked',
'thumbnailNoImage',
]).isRequired,
viewportIdentificator: PropTypes.string,
isTracked: PropTypes.bool,
/**
* 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,
}),
})
),
thumbnailActive: PropTypes.string,
onThumbnailClick: PropTypes.func,
onClickUntrack: PropTypes.func.isRequired,
};
export default ThumbnailList;