refactor: add worker

This commit is contained in:
jialin
2025-11-15 22:37:44 +08:00
parent 864cf76c07
commit 0f3f31ef45
39 changed files with 1746 additions and 606 deletions
@@ -0,0 +1,96 @@
import AddWorker from '@/pages/cluster-management/components/add-worker';
import { useIntl } from '@umijs/max';
import { message } from 'antd';
import { useMemo, useState } from 'react';
import { StepName } from '../components/add-worker/config';
import {
ClusterStatusValueMap,
ProviderType,
ProviderValueMap
} from '../config';
import { ClusterListItem } from '../config/types';
const useAddWorker = (props: {
clusterList?: Global.BaseOption<number, ClusterListItem>[];
}) => {
const intl = useIntl();
const { clusterList } = props || {};
const [stepList, setStepList] = useState<StepName[]>([]);
const [openAddWorker, setOpenAddWorker] = useState<{
open: boolean;
provider: ProviderType;
title: string;
cluster_id: number;
}>({
open: false,
provider: null,
title: '',
cluster_id: 0
});
const handleAddWorker = async (row: ClusterListItem) => {
try {
// set the title based on provider type
const title =
row.provider === ProviderValueMap.Docker
? intl.formatMessage({ id: 'resources.button.create' })
: intl.formatMessage({ id: 'clusters.button.register' });
if (!row?.id) return;
setOpenAddWorker({
open: true,
title: title,
provider: row.provider as ProviderType,
cluster_id: row.id
});
} catch (error: any) {
message.error(error?.message || 'Failed to fetch cluster token');
}
};
const handleClusterChange = async (value: number, row: ClusterListItem) => {
handleAddWorker(row);
};
const clusterDataList = useMemo(() => {
return clusterList
?.map((item) => {
return {
...item,
disabled:
item.state !== ClusterStatusValueMap.Ready ||
item.provider !== ProviderValueMap.Docker
};
})
.filter((item) => item.state === ClusterStatusValueMap.Ready);
}, [clusterList]);
const AddWorkerModal = (
<AddWorker
title={openAddWorker.title}
stepList={stepList || []}
open={openAddWorker.open}
provider={openAddWorker.provider}
clusterList={clusterDataList}
cluster_id={openAddWorker.cluster_id}
onClusterChange={handleClusterChange}
onCancel={() =>
setOpenAddWorker({
open: false,
provider: null,
title: '',
cluster_id: 0
})
}
></AddWorker>
);
return {
handleAddWorker,
AddWorkerModal,
setStepList
};
};
export default useAddWorker;