import { PaginationKey, TABLE_SORT_DIRECTIONS } from '@/config/settings'; import useTableFetch from '@/hooks/use-table-fetch'; import PageBox from '@/pages/_components/page-box'; import { useQueryClusterList } from '@/pages/cluster-management/services/use-query-cluster-list'; import { FilterBar, IconFont, NoResult } from '@gpustack/core-ui'; import { useIntl, useSearchParams } from '@umijs/max'; import { ConfigProvider, Table } from 'antd'; import _ from 'lodash'; import { useEffect, useState } from 'react'; import { GPU_DEVICES_API, queryGpuDevicesList } from '../apis'; import { GPUDeviceItem } from '../config/types'; import useGPUColumns from '../hooks/use-gpu-columns'; const GPUList = () => { const { dataSource, queryParams, extraStatus, sortOrder, handlePageChange, handleTableChange, handleQueryChange, handleSearch, handleNameChange } = useTableFetch({ key: PaginationKey.GPUs, fetchAPI: queryGpuDevicesList, polling: true, API: GPU_DEVICES_API }); const [searchParams] = useSearchParams(); const page = searchParams.get('page'); const intl = useIntl(); const [clusterList, setClusterList] = useState[]>( [] ); const { fetchClusterList } = useQueryClusterList({ useStateData: false }); const getClusterList = async () => { try { const items = await fetchClusterList({ page: -1 }); const list = items?.map((item) => ({ label: item.name, value: item.id })); setClusterList(list || []); } catch (error) { setClusterList([]); } }; const handleClusterChange = (value: number) => { handleQueryChange({ page: 1, cluster_id: value }); }; const renderEmpty = (type?: string) => { if (type !== 'Table') return; return ( } filters={_.omit(queryParams, ['sort_by'])} noFoundText={intl.formatMessage({ id: 'noresult.gpus.nofound' })} title={intl.formatMessage({ id: 'noresult.gpus.title' })} subTitle={intl.formatMessage({ id: 'noresult.gpus.subTitle' })} > ); }; const columns = useGPUColumns({ clusterList, loadend: dataSource.loadend, sortOrder, firstLoad: extraStatus.firstLoad }); useEffect(() => { console.log('columns changed!'); }, [columns]); useEffect(() => { getClusterList(); }, []); return ( <>
); }; export default GPUList;