import { DeleteOutlined, EditOutlined } from '@ant-design/icons'; import { AutoTooltip, DropdownButtons, type TableColumnProps } from '@gpustack/core-ui'; import { useIntl } from '@umijs/max'; import dayjs from 'dayjs'; import _ from 'lodash'; import { useMemo } from 'react'; import { RenderOption } from '../components/pool-form'; import { NodePoolListItem as ListItem } from '../config/types'; const actionItems = [ { key: 'edit', label: 'common.button.edit', icon: }, { key: 'delete', label: 'common.button.delete', icon: , props: { danger: true } } ]; const usePoolsColumns = ( handleSelect: (val: string, record: ListItem) => void, sortOrder?: string[] ): TableColumnProps[] => { const intl = useIntl(); return useMemo(() => { return [ { title: intl.formatMessage({ id: 'common.table.name' }), dataIndex: 'name', key: 'name', ellipsis: { showTitle: false }, span: 3, style: { paddingInline: 'var(--ant-table-cell-padding-inline)' }, render: (text: string) => ( {text} ) }, { title: intl.formatMessage({ id: 'clusters.workerpool.instanceType' }), dataIndex: 'instance_type', key: 'instance_type', ellipsis: { showTitle: false }, span: 4, style: { paddingLeft: 62 }, render: (text: string, record: ListItem) => ( } ghost minWidth={20} > {record.instance_spec?.description || record.instance_spec?.label} ) }, { title: intl.formatMessage({ id: 'clusters.workerpool.osImage' }), dataIndex: 'image_name', key: 'image_name', span: 4, ellipsis: { showTitle: false }, style: { paddingLeft: 56 }, render: (text: string) => ( {intl.formatMessage({ id: 'clusters.workerpool.osImage' })} :{' '} {text} } showTitle ghost minWidth={20} > {text} ) }, { title: intl.formatMessage({ id: 'resources.nodes' }), dataIndex: 'replicas', span: 6, key: 'replicas', style: { paddingLeft: 50 }, editable: { valueType: 'number', title: intl.formatMessage({ id: 'models.table.replicas.edit' }) }, render: (text: string, record: ListItem) => ( {record.ready_workers} / {record.replicas} ) }, // { // title: intl.formatMessage({ id: 'clusters.workerpool.batchSize' }), // dataIndex: 'batch_size', // key: 'batch_size', // span: 4 // }, // { // title: intl.formatMessage({ id: 'resources.table.labels' }), // dataIndex: 'labels', // key: 'labels', // width: 200, // span: 4, // render: (text: string, record: ListItem) => ( // // ) // }, { title: intl.formatMessage({ id: 'common.table.createTime' }), dataIndex: 'created_at', key: 'created_at', span: 4, showSorterTootip: false, sorter: false, ellipsis: { showTitle: false }, style: { paddingLeft: 42 }, render: (text: string) => ( {dayjs(text).format('YYYY-MM-DD HH:mm:ss')} ) }, { title: intl.formatMessage({ id: 'common.table.operation' }), key: 'operations', dataIndex: 'operations', span: 3, style: { paddingLeft: 36 }, render: (text: string, record: ListItem) => ( handleSelect?.(key, record)} /> ) } ]; }, [handleSelect]); }; export default usePoolsColumns;