import fallbackImg from '@/assets/images/img.png'; import AutoTooltip from '@/components/auto-tooltip'; import IconFont from '@/components/icon-font'; import ThemeTag from '@/components/tags-wrapper/theme-tag'; import { useIntl } from '@umijs/max'; import { Typography } from 'antd'; import classNames from 'classnames'; import _ from 'lodash'; import React, { useCallback, useMemo } from 'react'; import { modelCategories } from '../config'; import { CatalogItem as CatalogItemType } from '../config/types'; import '../style/catalog-item.less'; import { categoryConfig } from './model-tag'; 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 description = useMemo(() => { return ( {data.description} ) }} > {data.description} ); }, [data.description]); return (
{data.name}
{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.activated_size ? `${data.size}B-A${data.activated_size}B` : `${data.size}B`}
); }; export default CatalogItem;