import DropdownButtons from '@/components/drop-down-buttons'; import RowChildren from '@/components/seal-table/components/row-children'; import StatusTag from '@/components/status-tag'; import { DeleteOutlined, FieldTimeOutlined } from '@ant-design/icons'; import { useIntl } from '@umijs/max'; import { Col, Row, Space } from 'antd'; import dayjs from 'dayjs'; import _ from 'lodash'; import React from 'react'; import { InstanceStatusMap, status } from '../config'; import { ModelInstanceListItem } from '../config/types'; interface InstanceItemProps { list: ModelInstanceListItem[]; handleChildSelect: ( val: string, item: ModelInstanceListItem, list: ModelInstanceListItem[] ) => void; } const InstanceItem: React.FC = ({ list, handleChildSelect }) => { console.log('instance item===='); const intl = useIntl(); const childActionList = [ { label: intl.formatMessage({ id: 'common.button.viewlog' }), key: 'viewlog', status: [ InstanceStatusMap.Running, InstanceStatusMap.Error, InstanceStatusMap.Downloading ], icon: }, { label: intl.formatMessage({ id: 'common.button.delete' }), key: 'delete', danger: true, icon: } ]; const setChildActionList = (item: ModelInstanceListItem) => { return _.filter(childActionList, (action: any) => { if (action.key === 'viewlog') { return action.status.includes(item.state); } return true; }); }; const getWorkerIp = (item: ModelInstanceListItem) => { if (item.worker_ip) { return item.port ? `${item.worker_ip}:${item.port}` : item.worker_ip; } return '-'; }; return ( {_.map(list, (item: ModelInstanceListItem, index: number) => { return (
{item.name} {item.worker_name || '-'} {item.source === 'huggingface' ? item.huggingface_filename : item.ollama_library_model_name} {item.state && ( )} {dayjs(item.updated_at).format('YYYY-MM-DD HH:mm:ss')}
handleChildSelect(val, item, list) } >
); })}
); }; export default React.memo(InstanceItem);