// columns.ts import AutoTooltip from '@/components/auto-tooltip'; import DropdownButtons from '@/components/drop-down-buttons'; import icons from '@/components/icon-font/icons'; import { tableSorter } from '@/config/settings'; import { useIntl } from '@umijs/max'; import { Tag } from 'antd'; import { ColumnsType } from 'antd/lib/table'; import dayjs from 'dayjs'; import { useMemo } from 'react'; import { accessScopeOptions } from '../config'; import { ListItem } from '../config/types'; interface ColumnsHookProps { handleSelect: (val: string, record: ListItem) => void; sortOrder: string[]; } const actionList: Global.ActionItem[] = [ { label: 'common.button.edit', key: 'edit', icon: icons.EditOutlined }, { label: 'common.button.delete', key: 'delete', icon: icons.DeleteOutlined, props: { danger: true } } ]; const useModelsColumns = ({ handleSelect, sortOrder }: ColumnsHookProps): ColumnsType => { const intl = useIntl(); const renderAPIs = (record: ListItem) => { const option = accessScopeOptions.find( (item) => item.value === record.scope?.[0] ); return ( {intl.formatMessage({ id: option?.label || '' })} [{option?.description}] ); }; return useMemo(() => { return [ { title: intl.formatMessage({ id: 'common.table.name' }), dataIndex: 'name', key: 'name', sorter: tableSorter(1), render: (text: string, record: ListItem) => ( {text} {intl.formatMessage({ id: 'playground.params.custom' })} ) }, { title: intl.formatMessage({ id: 'apikeys.table.key' }), dataIndex: 'masked_value', key: 'masked_value', render: (text: string, record: ListItem) => ( {text} ) }, { title: intl.formatMessage({ id: 'apikeys.form.expiretime' }), dataIndex: 'expires_at', key: 'expires_at', sorter: tableSorter(2), render: (text: string, record: ListItem) => ( {text ? dayjs(text).format('YYYY-MM-DD HH:mm:ss') : intl.formatMessage({ id: 'apikeys.form.expiration.never' })} ) }, { title: intl.formatMessage({ id: 'apikeys.access.permissions' }), dataIndex: 'allowed_model_names', key: 'allowed_model_names', ellipsis: { showTitle: false }, render: (text: string[], record: ListItem) => (
APIs: {renderAPIs(record)} {intl.formatMessage({ id: 'models.title' })}: {text?.length ? text?.join(', ') : intl.formatMessage({ id: 'common.select.option' })}
) }, { title: intl.formatMessage({ id: 'common.table.description' }), dataIndex: 'description', key: 'description', ellipsis: { showTitle: false }, render: (text: string, record: ListItem) => ( {text} ) }, { title: intl.formatMessage({ id: 'common.table.createTime' }), dataIndex: 'created_at', key: 'created_at', sorter: tableSorter(3), ellipsis: { showTitle: false }, render: (text: number) => ( {dayjs(text).format('YYYY-MM-DD HH:mm:ss')} ) }, { title: intl.formatMessage({ id: 'common.table.operation' }), key: 'operation', dataIndex: 'operation', span: 3, render: (text, record) => ( handleSelect(val, record)} /> ) } ]; }, [intl, handleSelect]); }; export default useModelsColumns;