// columns.ts import { tableSorter } from '@/config/settings'; import { ListItem as workerListItem } from '@/pages/resources/config/types'; import { convertFileSize } from '@/utils'; import { AutoTooltip, IconFont } from '@gpustack/core-ui'; import { useIntl } from '@umijs/max'; import { Flex } from 'antd'; import { ColumnsType } from 'antd/lib/table'; import dayjs from 'dayjs'; import _ from 'lodash'; import { useMemo } from 'react'; import ActionsCell from '../components/instance-cells/actions-cell'; import DistributeInfoCell from '../components/instance-cells/distribute-info-cell'; import DownloadingStatusCell from '../components/instance-cells/downloading-status-cell'; import InjectedParamsCell from '../components/instance-cells/injected-params-cell'; import InstanceStatusCell from '../components/instance-cells/instance-status-cell'; import NameCell, { NameCellProps } from '../components/instance-cells/name-cell'; import { ModelInstanceListItem as ListItem } from '../config/types'; import { calcTotalVram } from '../utils'; const WorkerInfoContent: React.FC = ({ record, modelData }) => { let workerIp = '-'; if (record.worker_ip) { workerIp = record.port ? `${record.worker_ip}:${record.port}` : record.worker_ip; } return (
{record.worker_name}
{/*
{workerIp}
*/}
GPU:[ {_.join( record.gpu_indexes?.sort?.((a, b) => a - b), ',' )} ]
{/*
{record?.backend || modelData?.backend || ''} {record.backend_version || modelData?.backend_version ? `(${record.backend_version || modelData?.backend_version})` : ''}
*/}
); }; const useInstancesColumns = (options: { workerList: workerListItem[]; clusterList: Global.BaseOption< number, { provider: string; state: string; is_default: boolean; } >[]; handleSelect: (val: string, record: ListItem) => void; onCellClick?: (record: ListItem, dataIndex: string) => void; }): ColumnsType => { const intl = useIntl(); const { workerList, clusterList, handleSelect, onCellClick } = options; const renderWorkerCell = (text: number, record: ListItem) => { if (text) { return ( ); } return null; }; return useMemo(() => { return [ { title: intl.formatMessage({ id: 'common.table.name' }), dataIndex: 'name', sorter: tableSorter(1), minWidth: 160, render: (value: string, record: ListItem) => ( <> {/*
{record?.backend || record?.backend || ''} {record.backend_version || record?.backend_version ? `(${record.backend_version || record?.backend_version})` : ''}
*/} ) }, { title: intl.formatMessage({ id: 'clusters.title' }), dataIndex: 'cluster_id', width: 200, render: (text: number) => ( {text ? clusterList.find((cluster) => cluster.value === text)?.label : ''} ) }, { title: intl.formatMessage({ id: 'resources.worker' }), dataIndex: 'worker_id', render: (text, record) => (
{record.worker_name}
) }, { title: intl.formatMessage({ id: 'models.table.vram.allocated' }), dataIndex: 'allocated_vram', sorter: tableSorter(6), width: 160, render: (text, record) => ( {convertFileSize( record.computed_resource_claim?.vram ? calcTotalVram(record) : 0, 1 )} ) }, { title: intl.formatMessage({ id: 'common.table.status' }), dataIndex: 'state', width: 160, render: (text: string, record: ListItem) => ( {}} /> ) }, { title: intl.formatMessage({ id: 'common.table.createTime' }), dataIndex: 'created_at', sorter: tableSorter(6), span: 3, render: (text, record) => ( {dayjs(record.created_at).format('YYYY-MM-DD HH:mm:ss')} ) }, { title: intl.formatMessage({ id: 'common.table.operation' }), dataIndex: 'operations', span: 3, width: 120, render: (value: string, record: ListItem) => ( ) } ]; }, [handleSelect, onCellClick, workerList, clusterList]); }; export default useInstancesColumns;