import useCreatorColumn from '@/pages/gpu-service/hooks/use-creator-column'; import { usePluginListColumns } from '@/plugins/list-extra-columns'; import { AutoTooltip, DropdownButtons } from '@gpustack/core-ui'; import { useIntl } from '@umijs/max'; import type { ColumnsType } from 'antd/lib/table'; import dayjs from 'dayjs'; import { useMemo } from 'react'; import { rowActionList } from '../config'; import { ListItem } from '../config/types'; interface ColumnsHookProps { handleSelect: (val: string, record: ListItem) => void; storageClassList: Global.BaseOption[]; sortOrder: string[]; } const useStorageColumns = ({ handleSelect, storageClassList, sortOrder }: ColumnsHookProps): ColumnsType => { const intl = useIntl(); const pluginCols = usePluginListColumns('gpuStorage'); const creatorCols = useCreatorColumn('gpuStorage'); return useMemo(() => { const pluginRendered = pluginCols.map((c) => ({ title: intl.formatMessage({ id: c.titleId }), key: c.key, ellipsis: { showTitle: false }, render: (_text: any, record: ListItem) => c.render(record) })); return [ { title: intl.formatMessage({ id: 'common.table.name' }), dataIndex: 'name', key: 'name', sorter: true, ellipsis: { showTitle: false }, render: (text: string, record: ListItem) => ( {record.displayName || text}} > {record.displayName || text} ) }, ...pluginRendered, { title: intl.formatMessage({ id: 'common.table.type' }), dataIndex: ['spec', 'type'], key: 'type', sorter: false, render: (value: string) => { return ( {storageClassList.find((item) => item.value === value)?.label || '-'} ); } }, { title: intl.formatMessage({ id: 'gpuservice.storage.capacity' }), dataIndex: ['spec', 'capacity'], key: 'capacity', sorter: false, render: (value: string) => (value ? value.replace(/Gi$/, 'GB') : '-') }, ...creatorCols, // { // title: intl.formatMessage({ id: 'common.table.status' }), // dataIndex: ['status', 'phase'], // key: 'status', // sorter: false, // render: (value: string) => // value ? ( // // ) : ( // '-' // ) // }, { title: intl.formatMessage({ id: 'common.table.createTime' }), dataIndex: 'created_at', key: 'created_at', sorter: false, ellipsis: { showTitle: false }, render: (text: string) => ( {text ? dayjs(text).format('YYYY-MM-DD HH:mm:ss') : '-'} ) }, { title: intl.formatMessage({ id: 'common.table.operation' }), key: 'operation', dataIndex: 'operation', render: (_text, record) => ( handleSelect(val, record)} /> ) } ]; }, [ handleSelect, sortOrder, storageClassList, intl, pluginCols, creatorCols ]); }; export default useStorageColumns;