refactor: list watch trigger
This commit is contained in:
@@ -5,7 +5,6 @@ import { useIntl } from '@umijs/max';
|
||||
import { Button, Input, Space } from 'antd';
|
||||
import _ from 'lodash';
|
||||
import React from 'react';
|
||||
import { profileOptions } from '../../benchmark/config';
|
||||
|
||||
export interface RightActionsProps {
|
||||
handleInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
||||
@@ -82,23 +81,6 @@ const RightActions: React.FC<RightActionsProps> = ({
|
||||
})
|
||||
}
|
||||
></BaseSelect>
|
||||
<BaseSelect
|
||||
allowClear
|
||||
placeholder={intl.formatMessage({
|
||||
id: 'benchmark.table.filter.byProfile'
|
||||
})}
|
||||
style={{ width: 200 }}
|
||||
options={profileOptions.map((item) => ({
|
||||
label: intl.formatMessage({ id: item.label }),
|
||||
value: item.value
|
||||
}))}
|
||||
onChange={(value, option) =>
|
||||
handleQueryChange({
|
||||
profile: value,
|
||||
page: 1
|
||||
})
|
||||
}
|
||||
></BaseSelect>
|
||||
<Button
|
||||
type="text"
|
||||
style={{ color: 'var(--ant-color-text-tertiary)' }}
|
||||
|
||||
@@ -10,7 +10,8 @@ import { ClusterListItem } from '../config/types';
|
||||
*
|
||||
* @returns loading, fetch, dataList
|
||||
*/
|
||||
export const useQueryClusterList = () => {
|
||||
export const useQueryClusterList = (options?: { useStateData?: boolean }) => {
|
||||
const { useStateData = true } = options || {};
|
||||
const axiosTokenRef = useRef<CancelTokenSource | null>(null);
|
||||
const [dataList, setDataList] = useState<
|
||||
Array<Partial<ClusterListItem> & { label: string; value: number }>
|
||||
@@ -27,13 +28,15 @@ export const useQueryClusterList = () => {
|
||||
const res = await queryClusterList(params, {
|
||||
token: axiosTokenRef.current.token
|
||||
});
|
||||
setDataList(
|
||||
res.items?.map((item: ClusterListItem) => ({
|
||||
...item,
|
||||
label: item.name,
|
||||
value: item.id
|
||||
})) || []
|
||||
);
|
||||
if (useStateData) {
|
||||
setDataList(
|
||||
res.items?.map((item: ClusterListItem) => ({
|
||||
...item,
|
||||
label: item.name,
|
||||
value: item.id
|
||||
})) || []
|
||||
);
|
||||
}
|
||||
return res.items || [];
|
||||
},
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@ import { 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 { queryClusterList } from '@/pages/cluster-management/apis';
|
||||
import { useQueryClusterList } from '@/pages/cluster-management/services/use-query-cluster-list';
|
||||
import { useIntl, useSearchParams } from '@umijs/max';
|
||||
import { ConfigProvider, Table } from 'antd';
|
||||
import _ from 'lodash';
|
||||
@@ -41,11 +41,14 @@ const GPUList: React.FC<{ clusterId?: number; widths?: { input: number } }> = ({
|
||||
const [clusterList, setClusterList] = useState<Global.BaseOption<number>[]>(
|
||||
[]
|
||||
);
|
||||
const { fetchClusterList } = useQueryClusterList({
|
||||
useStateData: false
|
||||
});
|
||||
|
||||
const getClusterList = async () => {
|
||||
try {
|
||||
const res = await queryClusterList({ page: -1 });
|
||||
const list = res.items?.map((item) => ({
|
||||
const items = await fetchClusterList({ page: -1 });
|
||||
const list = items?.map((item) => ({
|
||||
label: item.name,
|
||||
value: item.id
|
||||
}));
|
||||
|
||||
@@ -3,10 +3,10 @@ import { FilterBar } from '@/components/page-tools';
|
||||
import { TABLE_SORT_DIRECTIONS } from '@/config/settings';
|
||||
import useTableFetch from '@/hooks/use-table-fetch';
|
||||
import PageBox from '@/pages/_components/page-box';
|
||||
import { queryClusterList } from '@/pages/cluster-management/apis';
|
||||
import { DockerStepsFromWorker } from '@/pages/cluster-management/components/add-worker/config';
|
||||
import { ClusterListItem } from '@/pages/cluster-management/config/types';
|
||||
import useAddWorker from '@/pages/cluster-management/hooks/use-add-worker';
|
||||
import { useQueryClusterList } from '@/pages/cluster-management/services/use-query-cluster-list';
|
||||
import useNoResourceResult from '@/pages/llmodels/hooks/use-no-resource-result';
|
||||
import useGranfanaLink from '@/pages/resources/hooks/use-grafana-link';
|
||||
import { useIntl } from '@umijs/max';
|
||||
@@ -56,6 +56,7 @@ const Workers: React.FC<{
|
||||
handleQueryChange,
|
||||
handleNameChange
|
||||
} = useTableFetch<ListItem>({
|
||||
events: ['UPDATE', 'DELETE', 'CREATE'],
|
||||
fetchAPI: queryWorkersList,
|
||||
deleteAPI: deleteWorker,
|
||||
contentForDelete: 'resources.worker',
|
||||
@@ -71,6 +72,9 @@ const Workers: React.FC<{
|
||||
});
|
||||
const { MaintenanceModal, handleStopMaintenance, setOpenStatus } =
|
||||
useWorkerMaintenance({ fetchData: handleSearch });
|
||||
const { fetchClusterList } = useQueryClusterList({
|
||||
useStateData: false
|
||||
});
|
||||
|
||||
const intl = useIntl();
|
||||
const [updateLabelsData, setUpdateLabelsData] = useState<{
|
||||
@@ -107,15 +111,15 @@ const Workers: React.FC<{
|
||||
const params = {
|
||||
page: -1
|
||||
};
|
||||
const res = await queryClusterList(params);
|
||||
const clusterMap = res?.items?.reduce(
|
||||
const items = await fetchClusterList(params);
|
||||
const clusterMap = items?.reduce(
|
||||
(acc: Record<number, string>, item: any) => {
|
||||
acc[item.id] = item.name;
|
||||
return acc;
|
||||
},
|
||||
{}
|
||||
);
|
||||
const list = res?.items?.map((item: any) => ({
|
||||
const list = items?.map((item: any) => ({
|
||||
label: item.name,
|
||||
value: item.id,
|
||||
id: item.id,
|
||||
|
||||
Reference in New Issue
Block a user