import AutoTooltip from '@/components/auto-tooltip'; import PageTools from '@/components/page-tools'; import ProgressBar from '@/components/progress-bar'; import InfoColumn from '@/components/simple-table/info-column'; import useTableSort from '@/hooks/use-table-sort'; import { convertFileSize } from '@/utils'; import { SyncOutlined } from '@ant-design/icons'; import { useIntl } from '@umijs/max'; import { Button, ConfigProvider, Empty, Input, Space, Table } from 'antd'; import _ from 'lodash'; import { useEffect, useState } from 'react'; import { queryGpuDevicesList } from '../apis'; import { GPUDeviceItem } from '../config/types'; const { Column } = Table; const fieldList = [ { label: 'resources.table.total', key: 'total', locale: true, render: (val: any) => { return convertFileSize(val, 0); } }, { label: 'resources.table.used', key: 'used', locale: true, render: (val: any) => { return convertFileSize(val, 0); } }, { label: 'resources.table.allocated', key: 'allocated', locale: true, render: (val: any) => { return convertFileSize(val, 0); } } ]; const GPUList: React.FC = () => { console.log('GPUList======'); const intl = useIntl(); const { sortOrder, setSortOrder } = useTableSort({ defaultSortOrder: 'descend' }); const [dataSource, setDataSource] = useState<{ dataList: GPUDeviceItem[]; loading: boolean; loadend: boolean; total: number; }>({ dataList: [], loading: false, loadend: false, total: 0 }); const [queryParams, setQueryParams] = useState({ page: 1, perPage: 10, search: '' }); const handlePageChange = (page: number, perPage: number | undefined) => { console.log(page, perPage); setQueryParams({ ...queryParams, page: page, perPage: perPage || 10 }); }; const handleTableChange = (pagination: any, filters: any, sorter: any) => { setSortOrder(sorter.order); }; const fetchData = async () => { setDataSource((pre) => { pre.loading = true; return { ...pre }; }); try { const params = { ..._.pickBy(queryParams, (val: any) => !!val) }; const res = await queryGpuDevicesList(params); setDataSource({ dataList: res.items || [], loading: false, loadend: true, total: res.pagination.total }); } catch (error) { setDataSource({ dataList: [], loading: false, loadend: true, total: dataSource.total }); console.log('error', error); } }; const handleSearch = (e: any) => { fetchData(); }; const handleNameChange = (e: any) => { setQueryParams({ ...queryParams, page: 1, search: e.target.value }); }; const renderEmpty = (type?: string) => { if (type !== 'Table') return; if ( !dataSource.loading && dataSource.loadend && !dataSource.dataList.length ) { return ; } return
; }; useEffect(() => { fetchData(); }, [queryParams]); return ( <> } > { return ( {text} ); }} /> { return {record.index}; }} /> { return ( {text} ); }} /> { return {text ? _.round(text, 1) : '-'}; }} /> { return ( <> {record.core ? ( ) : ( '-' )} ); }} /> { return ( } > ); }} />
); }; export default GPUList;