From 68519223fa7eccb84b6aa11fdbd364d2718e1742 Mon Sep 17 00:00:00 2001 From: jialin Date: Sat, 28 Feb 2026 15:04:13 +0800 Subject: [PATCH] fix: pagination cache for table list --- src/pages/api-keys/index.tsx | 2 ++ src/pages/benchmark/index.tsx | 3 ++- src/pages/cluster-management/clusters.tsx | 3 ++- src/pages/cluster-management/credentials.tsx | 3 ++- src/pages/llmodels/index.tsx | 11 ++++++++++- src/pages/maas-provider/index.tsx | 3 ++- src/pages/model-routes/index.tsx | 3 ++- src/pages/resources/components/gpus.tsx | 3 ++- src/pages/resources/components/model-files.tsx | 3 ++- src/pages/users/index.tsx | 3 ++- 10 files changed, 28 insertions(+), 9 deletions(-) diff --git a/src/pages/api-keys/index.tsx b/src/pages/api-keys/index.tsx index 05086345..5f6d0e7e 100644 --- a/src/pages/api-keys/index.tsx +++ b/src/pages/api-keys/index.tsx @@ -2,6 +2,7 @@ import DeleteModal from '@/components/delete-modal'; import IconFont from '@/components/icon-font'; import { FilterBar } from '@/components/page-tools'; import { PageAction } from '@/config'; +import { PaginationKey } from '@/config/settings'; import type { PageActionType } from '@/config/types'; import useTableFetch from '@/hooks/use-table-fetch'; import { useIntl } from '@umijs/max'; @@ -32,6 +33,7 @@ const APIKeys: React.FC = () => { handleSearch, handleNameChange } = useTableFetch({ + key: PaginationKey.APIKeys, fetchAPI: queryApisKeysList, deleteAPI: deleteApisKey, contentForDelete: 'apikeys.table.apikeys' diff --git a/src/pages/benchmark/index.tsx b/src/pages/benchmark/index.tsx index eb8f3eba..cbef0f8c 100644 --- a/src/pages/benchmark/index.tsx +++ b/src/pages/benchmark/index.tsx @@ -2,7 +2,7 @@ import DeleteModal from '@/components/delete-modal'; import IconFont from '@/components/icon-font'; import { FilterBar } from '@/components/page-tools'; import { PageAction } from '@/config'; -import { TABLE_SORT_DIRECTIONS } from '@/config/settings'; +import { PaginationKey, TABLE_SORT_DIRECTIONS } from '@/config/settings'; import useTableFetch from '@/hooks/use-table-fetch'; import { useBenchmarkTargetInstance } from '@/pages/llmodels/hooks/use-run-benchmark'; import { useQueryModelList } from '@/pages/llmodels/services/use-query-model-list'; @@ -51,6 +51,7 @@ const Benchmark: React.FC = () => { handleSearch, handleNameChange } = useTableFetch({ + key: PaginationKey.Benchmarks, fetchAPI: queryBenchmarkList, deleteAPI: deleteBenchmark, API: BENCHMARKS_API, diff --git a/src/pages/cluster-management/clusters.tsx b/src/pages/cluster-management/clusters.tsx index b95eff54..d2505970 100644 --- a/src/pages/cluster-management/clusters.tsx +++ b/src/pages/cluster-management/clusters.tsx @@ -6,7 +6,7 @@ import SealTable from '@/components/seal-table'; import TableContext from '@/components/seal-table/table-context'; import { TableOrder } from '@/components/seal-table/types'; import { PageAction } from '@/config'; -import { TABLE_SORT_DIRECTIONS } from '@/config/settings'; +import { PaginationKey, TABLE_SORT_DIRECTIONS } from '@/config/settings'; import type { PageActionType } from '@/config/types'; import useExpandedRowKeys from '@/hooks/use-expanded-row-keys'; import useTableFetch from '@/hooks/use-table-fetch'; @@ -66,6 +66,7 @@ const Clusters: React.FC = () => { handleSearch, handleNameChange } = useTableFetch({ + key: PaginationKey.Clusters, fetchAPI: queryClusterList, deleteAPI: deleteCluster, watch: true, diff --git a/src/pages/cluster-management/credentials.tsx b/src/pages/cluster-management/credentials.tsx index 18bf0afa..f7635204 100644 --- a/src/pages/cluster-management/credentials.tsx +++ b/src/pages/cluster-management/credentials.tsx @@ -3,7 +3,7 @@ import DeleteModal from '@/components/delete-modal'; import IconFont from '@/components/icon-font'; import { FilterBar } from '@/components/page-tools'; import { PageAction } from '@/config'; -import { TABLE_SORT_DIRECTIONS } from '@/config/settings'; +import { PaginationKey, TABLE_SORT_DIRECTIONS } from '@/config/settings'; import type { PageActionType } from '@/config/types'; import useTableFetch from '@/hooks/use-table-fetch'; import { useIntl, useNavigate } from '@umijs/max'; @@ -58,6 +58,7 @@ const Credentials: React.FC = () => { handleSearch, handleNameChange } = useTableFetch({ + key: PaginationKey.Credentials, fetchAPI: queryCredentialList, deleteAPI: deleteCredential, contentForDelete: 'menu.clusterManagement.credentials' diff --git a/src/pages/llmodels/index.tsx b/src/pages/llmodels/index.tsx index 67a05b65..fc26dc88 100644 --- a/src/pages/llmodels/index.tsx +++ b/src/pages/llmodels/index.tsx @@ -1,6 +1,8 @@ import TableContext from '@/components/seal-table/table-context'; import { TableOrder } from '@/components/seal-table/types'; +import { PaginationKey } from '@/config/settings'; import useSetChunkRequest from '@/hooks/use-chunk-request'; +import { usePaginationStatus } from '@/hooks/use-pagination-status'; import { useTableMultiSort } from '@/hooks/use-table-sort'; import useUpdateChunkedList from '@/hooks/use-update-chunk-list'; import { useMemoizedFn } from 'ahooks'; @@ -17,6 +19,9 @@ import TableList from './components/table-list'; import { ListItem } from './config/types'; const Models: React.FC<{ clusterId?: number }> = ({ clusterId }) => { + const { pagination, setPagination } = usePaginationStatus( + PaginationKey.Deployments + ); const { sortOrder, handleMultiSortChange } = useTableMultiSort(); const { setChunkRequest, createAxiosToken } = useSetChunkRequest(); const { setChunkRequest: setModelInstanceChunkRequest } = @@ -47,7 +52,8 @@ const Models: React.FC<{ clusterId?: number }> = ({ clusterId }) => { cluster_id: clusterId || 0, categories: [], state: '', - sort_by: '' + sort_by: '', + ...pagination }); const { updateChunkedList, cacheDataListRef } = useUpdateChunkedList({ @@ -177,6 +183,9 @@ const Models: React.FC<{ clusterId?: number }> = ({ clusterId }) => { page: page, perPage: pageSize || 10 }); + setPagination({ + perPage: pageSize || 10 + }); } ); diff --git a/src/pages/maas-provider/index.tsx b/src/pages/maas-provider/index.tsx index de8f418e..21f2e9e9 100644 --- a/src/pages/maas-provider/index.tsx +++ b/src/pages/maas-provider/index.tsx @@ -2,7 +2,7 @@ import DeleteModal from '@/components/delete-modal'; import IconFont from '@/components/icon-font'; import { FilterBar } from '@/components/page-tools'; import { PageAction } from '@/config'; -import { TABLE_SORT_DIRECTIONS } from '@/config/settings'; +import { PaginationKey, TABLE_SORT_DIRECTIONS } from '@/config/settings'; import useTableFetch from '@/hooks/use-table-fetch'; import { useIntl } from '@umijs/max'; import { useMemoizedFn } from 'ahooks'; @@ -37,6 +37,7 @@ const MaasProvider: React.FC = () => { handleSearch, handleNameChange } = useTableFetch({ + key: PaginationKey.Providers, fetchAPI: queryMaasProviders, deleteAPI: deleteProvider, watch: false, diff --git a/src/pages/model-routes/index.tsx b/src/pages/model-routes/index.tsx index 7f897624..ab49076f 100644 --- a/src/pages/model-routes/index.tsx +++ b/src/pages/model-routes/index.tsx @@ -7,7 +7,7 @@ import SealTable from '@/components/seal-table'; import TableContext from '@/components/seal-table/table-context'; import { TableOrder } from '@/components/seal-table/types'; import { PageAction } from '@/config'; -import { TABLE_SORT_DIRECTIONS } from '@/config/settings'; +import { PaginationKey, TABLE_SORT_DIRECTIONS } from '@/config/settings'; import useExpandedRowKeys from '@/hooks/use-expanded-row-keys'; import useTableFetch from '@/hooks/use-table-fetch'; import useWatchList from '@/hooks/use-watch-list'; @@ -57,6 +57,7 @@ const ModelRoutes: React.FC = () => { handleSearch, handleNameChange } = useTableFetch({ + key: PaginationKey.Routes, fetchAPI: queryModelRoutes, deleteAPI: deleteModelRoute, watch: true, diff --git a/src/pages/resources/components/gpus.tsx b/src/pages/resources/components/gpus.tsx index de742b4c..e41e9734 100644 --- a/src/pages/resources/components/gpus.tsx +++ b/src/pages/resources/components/gpus.tsx @@ -1,6 +1,6 @@ import IconFont from '@/components/icon-font'; import { FilterBar } from '@/components/page-tools'; -import { TABLE_SORT_DIRECTIONS } from '@/config/settings'; +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'; @@ -28,6 +28,7 @@ const GPUList: React.FC<{ clusterId?: number; widths?: { input: number } }> = ({ handleSearch, handleNameChange } = useTableFetch({ + key: PaginationKey.GPUs, fetchAPI: queryGpuDevicesList, polling: true, API: GPU_DEVICES_API, diff --git a/src/pages/resources/components/model-files.tsx b/src/pages/resources/components/model-files.tsx index 4d8a96a1..a7b3049d 100644 --- a/src/pages/resources/components/model-files.tsx +++ b/src/pages/resources/components/model-files.tsx @@ -3,7 +3,7 @@ import DeleteModal from '@/components/delete-modal'; import IconFont from '@/components/icon-font'; import { FilterBar } from '@/components/page-tools'; import { PageAction } from '@/config'; -import { TABLE_SORT_DIRECTIONS } from '@/config/settings'; +import { PaginationKey, TABLE_SORT_DIRECTIONS } from '@/config/settings'; import useAppUtils from '@/hooks/use-app-utils'; import useBodyScroll from '@/hooks/use-body-scroll'; import useTableFetch from '@/hooks/use-table-fetch'; @@ -64,6 +64,7 @@ const ModelFiles = () => { handleNameChange, handleQueryChange } = useTableFetch({ + key: PaginationKey.ModelFiles, fetchAPI: queryModelFilesList, deleteAPI: deleteModelFile, API: MODEL_FILES_API, diff --git a/src/pages/users/index.tsx b/src/pages/users/index.tsx index 2e8191dd..f20b041d 100644 --- a/src/pages/users/index.tsx +++ b/src/pages/users/index.tsx @@ -2,7 +2,7 @@ import DeleteModal from '@/components/delete-modal'; import IconFont from '@/components/icon-font'; import { FilterBar } from '@/components/page-tools'; import { PageAction } from '@/config'; -import { TABLE_SORT_DIRECTIONS } from '@/config/settings'; +import { PaginationKey, TABLE_SORT_DIRECTIONS } from '@/config/settings'; import type { PageActionType } from '@/config/types'; import useTableFetch from '@/hooks/use-table-fetch'; import { useIntl, useModel } from '@umijs/max'; @@ -38,6 +38,7 @@ const Users: React.FC = () => { handleSearch, handleNameChange } = useTableFetch({ + key: PaginationKey.Users, fetchAPI: queryUsersList, deleteAPI: deleteUser, contentForDelete: 'users.table.user'