import DeleteModal from '@/components/delete-modal'; import IconFont from '@/components/icon-font'; import { FilterBar } from '@/components/page-tools'; import { PaginationKey, TABLE_SORT_DIRECTIONS } from '@/config/settings'; import useTableFetch from '@/hooks/use-table-fetch'; import NoResult from '@/pages/_components/no-result'; import PageBox from '@/pages/_components/page-box'; import { useIntl } from '@umijs/max'; import { useMemoizedFn } from 'ahooks'; import { ConfigProvider, Table } from 'antd'; import _ from 'lodash'; import { forwardRef, useImperativeHandle } from 'react'; import { deleteModelInstance, MODEL_INSTANCE_API, queryModelsInstances } from '../apis'; import ViewLogsModal from '../components/view-logs-modal'; import { useDeploymentsContext } from '../config/deploments-context'; import { ModelInstanceListItem as ListItem } from '../config/types'; import useViewInstanceLogs from '../hooks/use-view-instance-logs'; import LeftFilters from './left-filters'; import useInstanceColumns from './use-instance-columns'; const InstanceView = forwardRef((props, ref) => { const { dataSource, rowSelection, queryParams, modalRef, handleTableChange, cancelChunkRequest, createTableListChunkRequest, handleDelete, handleDeleteBatch, fetchData, handleQueryChange, handlePageChange, handleSearch, handleNameChange } = useTableFetch({ key: PaginationKey.Instances, fetchAPI: queryModelsInstances, deleteAPI: deleteModelInstance, watch: true, API: MODEL_INSTANCE_API, contentForDelete: 'menu.models.instances' }); const intl = useIntl(); const { clusterList, workerList } = useDeploymentsContext(); const { openViewLogsModal, openViewLogsModalStatus, closeViewLogsModal } = useViewInstanceLogs(); const handleSelect = useMemoizedFn((val: any, row: ListItem) => { if (val === 'delete') { handleDelete(row, { okText: 'common.button.delrecreate' }); } if (val === 'viewlog') { openViewLogsModal(row); } }); const cancelRequestsOnPageInactive = useMemoizedFn(() => { cancelChunkRequest(); }); const resumeRequestsOnPageActive = useMemoizedFn(() => { fetchData({} as any, true); createTableListChunkRequest(); }); useImperativeHandle(ref, () => ({ resumeRequestsOnPageActive, cancelRequestsOnPageInactive })); const renderEmpty = (type?: string) => { if (type !== 'Table') return; return ( } filters={_.omit(queryParams, ['sort_by'])} noFoundText={intl.formatMessage({ id: 'noresult.instances.nofound' })} title={intl.formatMessage({ id: 'noresult.instances.title' })} subTitle={intl.formatMessage({ id: 'noresult.instances.subTitle' })} buttonText={intl.formatMessage({ id: 'noresult.button.add' })} > ); }; const handleonClusterChange = (value: number) => { handleQueryChange({ page: 1, cluster_id: value }); }; const handleStatusChange = (value: string) => { handleQueryChange({ page: 1, state: value }); }; const handleOnWorkerChange = (value: number) => { handleQueryChange({ page: 1, worker_id: value }); }; const columns = useInstanceColumns({ handleSelect, clusterList, workerList }); return (
} >
); }); export default InstanceView;