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, InfoCircleOutlined } from '@ant-design/icons'; import { useIntl } from '@umijs/max'; import { Col, Row, Space, Tooltip } from 'antd'; import dayjs from 'dayjs'; import _ from 'lodash'; import React, { useCallback } from 'react'; import { InstanceStatusMap, InstanceStatusMapValue, 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: 'common.button.viewlog', key: 'viewlog', status: [ InstanceStatusMap.Running, InstanceStatusMap.Error, InstanceStatusMap.Downloading ], icon: }, { label: 'common.button.delete', key: 'delete', props: { danger: true }, icon: } ]; const setChildActionList = useCallback((item: ModelInstanceListItem) => { return _.filter(childActionList, (action: any) => { if (action.key === 'viewlog') { return action.status.includes(item.state); } return true; }); }, []); const renderWorkerInfo = (item: ModelInstanceListItem) => { let workerIp = '-'; if (item.worker_ip) { workerIp = item.port ? `${item.worker_ip}:${item.port}` : item.worker_ip; } return (
{item.worker_name}
{workerIp}
); }; return ( {_.map(list, (item: ModelInstanceListItem, index: number) => { return (
{item.name} {item.state && ( )} {dayjs(item.created_at).format('YYYY-MM-DD HH:mm:ss')}
handleChildSelect(val, item, list) } >
); })}
); }; export default React.memo(InstanceItem);