import fallbackImg from '@/assets/images/img.png'; import AutoTooltip from '@/components/auto-tooltip'; import IconFont from '@/components/icon-font'; import TagWrapper from '@/components/tags-wrapper'; import { useIntl } from '@umijs/max'; import { Tag, Typography } from 'antd'; import classNames from 'classnames'; import _ from 'lodash'; import React, { useCallback } from 'react'; import { modelCategories } from '../config'; import { CatalogItem as CatalogItemType } from '../config/types'; import '../style/catalog-item.less'; const COLORS = ['blue', 'purple', 'orange']; interface CatalogItemProps { activeId: number; data: CatalogItemType; onClick: (data: CatalogItemType) => void; } const CatalogItem: React.FC = (props) => { const intl = useIntl(); const { onClick, activeId, data } = props; const handleOnClick = useCallback(() => { onClick(data); }, [data, onClick]); const handleOnError = (e: any) => { e.target.src = fallbackImg; }; const renderTag = (sItem: any) => { return ( {sItem}B ); }; return (
{data.name}
{data.description}
) }} > {data.description}
{data.release_date} {_.map(data.licenses, (license: string, index: number) => { return ( {license} ); })}
{data.categories.map((sItem, i) => { return ( {_.find(modelCategories, { value: sItem })?.label || sItem} ); })} {data.capabilities?.length > 0 && data.capabilities.map((sItem, i) => { return ( {_.map(_.split(sItem, '/'), (s: string) => { return _.split(s, '_').join(' '); }) .reverse() .join(' ')} ); })} {data.sizes?.length > 0 && ( <>
)}
); }; export default React.memo(CatalogItem);