import AutoTooltip from '@/components/auto-tooltip'; import BaseSelect from '@/components/seal-form/base/select'; import ThemeTag from '@/components/tags-wrapper/theme-tag'; import { useIntl } from '@umijs/max'; import { Empty } from 'antd'; import { useState } from 'react'; import styled from 'styled-components'; import { frameworks, getGpuColor } from '../config'; import { VersionListItem } from '../config/types'; const ItemWrapper = styled.div` display: flex; flex-direction: column; align-items: flex-start; gap: 8px; width: 100%; border: 1px solid var(--ant-color-border); border-radius: var(--ant-border-radius); padding: 12px 16px; &:hover { background-color: var(--ant-color-fill-tertiary); } .title { width: 100%; justify-content: space-between; display: flex; align-items: center; font-weight: 600; } `; const RowWrapper = styled.div` display: flex; flex-direction: column; align-items: flex-start; gap: 4px; .label { color: var(--ant-color-text-tertiary); } .drivers { display: flex; flex-wrap: wrap; gap: 8px; } `; const InfoItem = styled.div` display: grid; grid-template-columns: max-content 1fr; gap: 8px; .label { color: var(--ant-color-text-tertiary); } `; const ListWrapper = styled.div` display: flex; flex-direction: column; align-items: flex-start; gap: 16px; width: 100%; `; const FilterBox = styled.div` position: sticky; top: 0; width: 100%; z-index: 100; padding-bottom: 16px; padding-top: 16px; background-color: var(--ant-color-bg-container); `; interface VersionItemProps { data: VersionListItem; } export const VersionItem: React.FC = ({ data }) => { const intl = useIntl(); return (
{data.version_no} {data.is_built_in && ( {intl.formatMessage({ id: 'backend.builtin' })} )} {!data.is_built_in && data.is_default && ( {intl.formatMessage({ id: 'backend.isDefault' })} )}
{data.image_name && ( {intl.formatMessage({ id: 'backend.imageName' })}: {data.is_built_in ? intl.formatMessage({ id: 'backend.versionInfo.autoImage' }) : data.image_name} )} {data.run_command && ( {intl.formatMessage({ id: 'backend.runCommand' })}: {data.run_command} )} {intl.formatMessage({ id: 'backend.framework' })}: {data.availableFrameworks?.map((item) => { return ( {item} ); })}
); }; const VersionList: React.FC<{ versionConfigs: VersionListItem[] }> = ({ versionConfigs }) => { const intl = useIntl(); const [dataList, setDataList] = useState(versionConfigs); const handleChange = (value: string) => { if (value) { const filtered = versionConfigs.filter((item) => item.availableFrameworks?.includes(value) ); setDataList(filtered); } else { setDataList(versionConfigs); } }; return (
{dataList.length ? ( dataList.map((version: VersionListItem, index: number) => { return ; }) ) : ( )}
); }; export default VersionList;