diff --git a/src/components/collapse-container/index.tsx b/src/components/collapse-container/index.tsx
index 42675fdf..67af3c51 100644
--- a/src/components/collapse-container/index.tsx
+++ b/src/components/collapse-container/index.tsx
@@ -18,6 +18,7 @@ const CardStyled = styled(Card)`
background-color: var(--ant-color-fill-quaternary);
border-bottom: none;
border-radius: var(--ant-border-radius);
+ padding: 0 16px;
&:hover {
background-color: var(--ant-color-fill-secondary);
.del-btn {
@@ -72,6 +73,7 @@ export interface CollapsibleContainerProps {
defaultOpen?: boolean;
open?: boolean;
collapsible?: boolean;
+ showExpandIcon?: boolean;
onToggle?: (open: boolean) => void;
disabled?: boolean;
variant?: 'outlined' | 'borderless' | undefined;
@@ -88,6 +90,7 @@ export default function CollapsibleContainer({
open,
onToggle,
disabled = false,
+ showExpandIcon = true,
variant = 'borderless',
className = '',
collapsible,
@@ -120,14 +123,16 @@ export default function CollapsibleContainer({
-
+ {showExpandIcon && (
+
+ )}
{title &&
{title}
}
{subtitle &&
{subtitle}
}
diff --git a/src/pages/backends/backend-create.tsx b/src/pages/backends/backend-create.tsx
deleted file mode 100644
index a8b4ede5..00000000
--- a/src/pages/backends/backend-create.tsx
+++ /dev/null
@@ -1,249 +0,0 @@
-import { PageAction } from '@/config';
-import { PageActionType } from '@/config/types';
-import ClusterSteps from '@/pages/cluster-management/components/cluster-steps';
-import FooterButtons from '@/pages/cluster-management/components/footer-buttons';
-import { PageContainer } from '@ant-design/pro-components';
-import { useIntl, useNavigate, useSearchParams } from '@umijs/max';
-import _ from 'lodash';
-import React, { useMemo, useRef, useState } from 'react';
-import styled from 'styled-components';
-import { createBackend } from './apis';
-import { FormData } from './config/types';
-import { moduleMap, moduleRegistry } from './step-forms/module-registry';
-import useStepList from './step-forms/use-step-list';
-
-const Container = styled.div`
- width: 100%;
- display: flex;
- flex-direction: column;
- align-items: center;
-`;
-
-const Nav = styled.div`
- display: flex;
- align-items: center;
- height: 72px;
- font-weight: 400;
- font-size: 20px;
- color: var(--ant-color-text-tertiary);
- .level-2 {
- color: var(--ant-color-text);
- font-weight: 600;
- }
-`;
-
-const Content = styled.div`
- width: 600px;
-`;
-
-const HeaderContainer = styled.div`
- position: relative;
- display: grid;
- grid-template-columns: 1fr;
- align-items: center;
- padding-inline: var(--layout-content-header-inlinepadding);
- .text {
- margin-right: 16px;
- padding-right: 16px;
- border-right: 1px solid var(--ant-color-split);
- font-weight: 600;
- font-size: 20px;
- margin-right: 32px;
- }
-`;
-
-const ClusterCreate = () => {
- const intl = useIntl();
- const startStep = 0;
- const steps = useStepList();
- const [searchParams] = useSearchParams();
- const action =
- (searchParams.get('action') as PageActionType) || PageAction.CREATE;
- const navigate = useNavigate();
-
- const [currentStep, setCurrentStep] = useState
(startStep);
-
- const [extraData, setExtraData] = useState({
- default_version: ''
- } as FormData);
- const [formValues, setFormValues] = useState>({});
-
- const formRefs: Record = {
- [moduleMap.BasicForm]: useRef(null),
- [moduleMap.ParamertersForm]: useRef(null),
- [moduleMap.VersionConfigForm]: useRef(null)
- };
-
- const handleStepChange = (newStep: number) => {
- setCurrentStep(newStep);
- console.log('step========', newStep);
- };
-
- const getFormFieldsValue = () => {
- setFormValues((prev) => {
- const newFormValues = _.cloneDeep(prev);
- for (const [formKey, formRef] of Object.entries(formRefs)) {
- const formValues = formRef?.current?.getFieldsValue?.();
- if (formValues) {
- newFormValues[formKey] = formValues;
- }
- }
- return newFormValues;
- });
- };
-
- const onPrevious = () => {
- getFormFieldsValue();
- setCurrentStep((prev) => Math.max(prev - 1, 0));
- };
-
- const validateForms = async () => {
- const step = steps[currentStep];
- const formKeys = step?.showForms || [];
- if (formKeys?.length > 0) {
- const results = await Promise.allSettled(
- formKeys.map((key) => formRefs[key].current?.validateFields())
- );
-
- console.log('results========', results);
-
- const resultsMap = new Map();
- results.forEach((result, index) => {
- if (result.status === 'rejected') {
- const values = result.reason?.values || {};
- resultsMap.set(formKeys[index], values);
- } else if (result.status === 'fulfilled') {
- resultsMap.set(formKeys[index], result.value);
- }
- });
- const newValues = _.merge(formValues, Object.fromEntries(resultsMap));
-
- setFormValues(newValues);
-
- const isValid = results.every((result) => result.status === 'fulfilled');
- if (!isValid) {
- return false;
- }
- return Object.assign({}, ...Object.values(newValues));
- }
- return true;
- };
-
- const onNext = async (callback?: (values: FormData) => void) => {
- try {
- const result = await validateForms();
- console.log('results========2', result);
- if (result) {
- await callback?.(result as FormData);
- const step = steps[currentStep];
- step.beforeNext?.();
- setCurrentStep((prev) => Math.min(prev + 1, steps.length - 1));
- }
- } catch (error) {
- console.log('next error:', error);
- }
- };
-
- const resetForm = () => {
- setFormValues({});
- for (const [formKey, formRef] of Object.entries(formRefs)) {
- formRefs[formKey] = React.createRef();
- }
- };
-
- const renderForms = () => {
- const step = steps[currentStep];
- const formKeys = step?.showForms || [];
- if (formKeys.length === 0) {
- return null;
- }
-
- return formKeys.map((key) => {
- console.log('renderForms key========', key, formValues);
- const FormComponent = moduleRegistry[key];
- return FormComponent ? (
-
- ) : null;
- });
- };
-
- const showButtons = useMemo(() => {
- const step = steps[currentStep];
- return step?.showButtons ? step?.showButtons?.() : {};
- }, [currentStep, steps]);
-
- const submit = async (values: FormData) => {
- const data = {
- ...extraData,
- ...(typeof values === 'object' ? values : {})
- };
- const res = await createBackend({ data });
-
- return true;
- };
-
- const handleSubmit = async () => {
- onNext(submit);
- };
-
- const handleCancel = () => {
- navigate(-1);
- };
-
- return (
-
- ]}
- header={{
- title: false,
- style: {
- paddingInline: 'var(--layout-content-header-inlinepadding)'
- },
- breadcrumb: {}
- }}
- pageHeaderRender={() => (
-
-
-
-
- )}
- >
-
- {renderForms()}
-
-
- );
-};
-
-export default ClusterCreate;
diff --git a/src/pages/backends/components/add-modal.tsx b/src/pages/backends/components/add-modal.tsx
index 8ebdaa98..8b86d2ea 100644
--- a/src/pages/backends/components/add-modal.tsx
+++ b/src/pages/backends/components/add-modal.tsx
@@ -53,7 +53,6 @@ const AddModal: React.FC = (props) => {
const [activeKey, setActiveKey] = useState('form');
const [yamlContent, setYamlContent] = useState('');
const [formContent, setFormContent] = useState({} as FormData);
- const tabsRef = useRef(null);
const onOk = () => {
if (activeKey === 'yaml') {
@@ -73,6 +72,7 @@ const AddModal: React.FC = (props) => {
(acc: Record, curr) => {
if (curr.version_no) {
acc[curr.version_no] = {
+ custom_framework: curr.custom_framework,
image_name: curr.image_name,
run_command: curr.run_command
};
@@ -99,6 +99,7 @@ const AddModal: React.FC = (props) => {
version_no: key,
image_name: values.version_configs?.[key]?.image_name,
run_command: values.version_configs?.[key]?.run_command,
+ custom_framework: values.version_configs?.[key]?.custom_framework,
is_default: key === values.default_version
})
);
@@ -110,8 +111,8 @@ const AddModal: React.FC = (props) => {
image_name: values.build_in_version_configs?.[key]?.image_name,
run_command: values.build_in_version_configs?.[key]?.run_command,
is_default: key === values.default_version,
- backend_list:
- values.build_in_version_configs?.[key]?.backend_list || [],
+ build_in_frameworks:
+ values.build_in_version_configs?.[key]?.build_in_frameworks || [],
is_built_in: true
}));
diff --git a/src/pages/backends/components/backend-card.tsx b/src/pages/backends/components/backend-card.tsx
index 1b14afb9..dbdd4f3b 100644
--- a/src/pages/backends/components/backend-card.tsx
+++ b/src/pages/backends/components/backend-card.tsx
@@ -137,7 +137,11 @@ const BackendCard: React.FC = ({ data, onSelect }) => {
if (data.is_build_in) {
const backendList = _.get(
data,
- ['build_in_version_configs', data.default_version, 'backend_list'],
+ [
+ 'build_in_version_configs',
+ data.default_version,
+ 'build_in_frameworks'
+ ],
[]
);
diff --git a/src/pages/backends/components/view-builtin-versions-modal.tsx b/src/pages/backends/components/view-builtin-versions-modal.tsx
index 3a22f0f4..b9fa5d0c 100644
--- a/src/pages/backends/components/view-builtin-versions-modal.tsx
+++ b/src/pages/backends/components/view-builtin-versions-modal.tsx
@@ -25,8 +25,8 @@ const ViewBuiltinVersionsModal: React.FC = ({
image_name: currentData.build_in_version_configs[key].image_name,
run_command: currentData.build_in_version_configs[key].run_command,
is_default: key === currentData.default_version,
- backend_list:
- currentData.build_in_version_configs[key].backend_list || [],
+ build_in_frameworks:
+ currentData.build_in_version_configs[key].build_in_frameworks || [],
is_built_in: true
}));
form.setFieldsValue({
diff --git a/src/pages/backends/config/index.ts b/src/pages/backends/config/index.ts
index 7d078e6b..f4cbae45 100644
--- a/src/pages/backends/config/index.ts
+++ b/src/pages/backends/config/index.ts
@@ -38,13 +38,6 @@ export const backendActions = [
icon: icons.EditOutlined,
locale: false
},
- {
- label: 'View Built-in Versions',
- value: 'view_versions',
- key: 'view_versions',
- icon: icons.Version,
- locale: false
- },
{
label: 'Export YAML',
value: 'yaml',
@@ -123,6 +116,28 @@ export const backendFields = [
'version_configs',
'default_backend_parameters'
];
+export const frameworks = [
+ {
+ label: 'CUDA',
+ value: 'cuda'
+ },
+ {
+ label: 'ROCm',
+ value: 'rocm'
+ },
+ {
+ label: 'CANN',
+ value: 'cann'
+ },
+ {
+ label: 'DTK',
+ value: 'dtk'
+ },
+ {
+ label: 'CoreX',
+ value: 'corex'
+ }
+];
export const yamlTemplate = `# backend configuration template
backend_name: SGLang
@@ -134,9 +149,11 @@ version_configs:
v0.0.1:
image_name: lm/sglang
run_command: run sglang
+ custom_framework: cuda
v0.0.2:
image_name: lm/sglang
- run_command: run sglang
+ run_command:
+ custom_framework:
default_backend_parameters:
- --host
`;
diff --git a/src/pages/backends/config/schema/create.json b/src/pages/backends/config/schema/create.json
index 2cfe9222..16a87012 100644
--- a/src/pages/backends/config/schema/create.json
+++ b/src/pages/backends/config/schema/create.json
@@ -36,12 +36,9 @@
"type": ["string", "null"],
"description": "start command"
},
- "backend_list": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "backend list"
+ "custom_framework": {
+ "type": ["string", "null"],
+ "description": "custom framework"
}
},
"required": ["image_name", "run_command"],
diff --git a/src/pages/backends/config/schema/update-builtin.json b/src/pages/backends/config/schema/update-builtin.json
index 58d6896f..dfebffdb 100644
--- a/src/pages/backends/config/schema/update-builtin.json
+++ b/src/pages/backends/config/schema/update-builtin.json
@@ -27,12 +27,9 @@
"type": ["string", "null"],
"description": "start command"
},
- "backend_list": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "backend list"
+ "custom_framework": {
+ "type": ["string", "null"],
+ "description": "custom framework"
}
},
"required": ["image_name", "run_command"],
diff --git a/src/pages/backends/config/schema/update-custom.json b/src/pages/backends/config/schema/update-custom.json
index c8233ad4..5a3d86c1 100644
--- a/src/pages/backends/config/schema/update-custom.json
+++ b/src/pages/backends/config/schema/update-custom.json
@@ -31,12 +31,9 @@
"type": ["string", "null"],
"description": "start command"
},
- "backend_list": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "backend list"
+ "custom_framework": {
+ "type": ["string", "null"],
+ "description": "custom framework"
}
},
"required": ["image_name", "run_command"],
diff --git a/src/pages/backends/config/types.ts b/src/pages/backends/config/types.ts
index 0c3501ec..4360635f 100644
--- a/src/pages/backends/config/types.ts
+++ b/src/pages/backends/config/types.ts
@@ -2,7 +2,8 @@ export interface VersionConfigs {
image_name: string;
run_command: string;
is_default: boolean;
- backend_list?: string[];
+ build_in_frameworks?: string[];
+ custom_framework: string;
version_no?: string;
is_built_in?: boolean;
}
diff --git a/src/pages/backends/forms/built-in-versions.tsx b/src/pages/backends/forms/built-in-versions.tsx
index 5b6ee8c7..f04f9e80 100644
--- a/src/pages/backends/forms/built-in-versions.tsx
+++ b/src/pages/backends/forms/built-in-versions.tsx
@@ -8,13 +8,13 @@ const ItemWrapper = styled.div`
flex-direction: column;
align-items: flex-start;
gap: 8px;
+ width: 100%;
.title {
width: 100%;
justify-content: space-between;
display: flex;
align-items: center;
font-weight: 600;
- margin-bottom: 8px;
}
`;
@@ -35,7 +35,8 @@ const RowWrapper = styled.div`
interface VersionItemProps {
data: {
- backend_list: string[];
+ build_in_frameworks: string[];
+ custom_framework: string;
version_no: string;
image_name: string;
run_command: string;
@@ -44,20 +45,24 @@ interface VersionItemProps {
};
}
-const VersionItem: React.FC = ({ data }) => {
+export const VersionItem: React.FC = ({ data }) => {
return (
{data.version_no}
{data.is_default && (
-
+
Default
)}
- {data.backend_list?.map((item) => {
+ {data.build_in_frameworks?.map((item) => {
return (
= forwardRef(
const onFinishFailed = (errorInfo: any) => {
const errorFields = errorInfo.errorFields || [];
if (errorFields.length > 0) {
- const hasVersionsError = errorFields.some((field: any) =>
+ const versionError = errorFields.find((field: any) =>
field.name.includes('version_configs')
);
- if (hasVersionsError) {
- setActiveKey([...new Set([...activeKey, 'version_configs'])]);
+ if (versionError) {
+ setActiveKey([...new Set([versionError.name[1]])]);
+ } else {
+ setActiveKey([]);
}
}
};
- const handleOnCollapseChange = (keys: string | string[]) => {
- setActiveKey(Array.isArray(keys) ? keys : [keys]);
- };
-
useEffect(() => {
if (currentData) {
console.log('currentData:', currentData);
@@ -71,25 +67,11 @@ const BackendForm: React.FC = forwardRef(
onFinishFailed={onFinishFailed}
>
-
-
- }
- ]
- : [])
- ]}
- >
-
+ >
);
}
diff --git a/src/pages/backends/forms/versions-config.tsx b/src/pages/backends/forms/versions-config.tsx
index 2a66cce8..a453157f 100644
--- a/src/pages/backends/forms/versions-config.tsx
+++ b/src/pages/backends/forms/versions-config.tsx
@@ -1,25 +1,36 @@
+import AutoTooltip from '@/components/auto-tooltip';
import CollapsibleContainer from '@/components/collapse-container';
import SealInput from '@/components/seal-form/seal-input';
+import SealSelect from '@/components/seal-form/seal-select';
import { PageActionType } from '@/config/types';
import { MinusOutlined, PlusOutlined } from '@ant-design/icons';
import { Button, Divider, Form, Radio } from 'antd';
import _ from 'lodash';
import React, { useEffect } from 'react';
import styled from 'styled-components';
+import { frameworks } from '../config';
import { ListItem } from '../config/types';
+import { VersionItem } from './built-in-versions';
const Box = styled.div`
display: grid;
- grid-template-columns: 200px 1fr;
+ grid-template-columns: 150px 1fr;
gap: 16px;
align-items: center;
`;
-const ActionWrapper = styled.div`
+const Label = styled.span`
display: flex;
- justify-content: space-between;
align-items: center;
- margin-top: 24px;
+ gap: 4px;
+ color: var(--ant-color-text-secondary);
+`;
+
+const ImageInner = styled.div`
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ margin-left: 20px;
`;
const Title = styled.div`
@@ -30,23 +41,33 @@ const Title = styled.div`
margin-bottom: 8px;
`;
-const Label = styled.div`
- line-height: 1;
- color: var(--ant-color-text-tertiary);
- margin-bottom: 20px;
- font-size: var(--font-size-base);
+const VersionItemWrapper = styled.div`
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ padding: 8px 16px;
+ border-radius: var(--ant-border-radius);
+ background-color: var(--ant-color-fill-quaternary);
+ width: 100%;
`;
-const ItemWrapper = styled.div``;
-
type AddModalProps = {
action: PageActionType;
currentData?: ListItem;
+ activeKey?: number[];
};
-const VersionsForm: React.FC = ({ action, currentData }) => {
+const VersionsForm: React.FC = ({
+ action,
+ currentData,
+ activeKey
+}) => {
+ const defaultCollapseKey =
+ action === 'edit' ? new Set() : new Set([0]);
const form = Form.useFormInstance();
const version_configs = Form.useWatch('version_configs', form);
- const [collapseKey, setCollapseKey] = React.useState(['0']);
+ const buildInVersionConfigs = Form.useWatch('build_in_version_configs', form);
+ const [collapseKey, setCollapseKey] =
+ React.useState>(defaultCollapseKey);
const versionList = [
{
version_no: '',
@@ -86,154 +107,204 @@ const VersionsForm: React.FC = ({ action, currentData }) => {
}
};
- const onToggle = (open: boolean, key: string) => {
- setCollapseKey(open ? [key] : []);
+ const onToggle = (open: boolean, key: number) => {
+ setCollapseKey(open ? new Set([key]) : new Set());
};
- const handleAdd = async (add: (defaultValue?: any) => void) => {
+ const add = () => {
+ const versions = form.getFieldValue('version_configs') || [];
+ const newVersion = {
+ version_no: '',
+ image_name: '',
+ run_command: '',
+ isBuiltin: false,
+ is_default: false
+ };
+ form.setFieldValue('version_configs', [...versions, newVersion]);
+ };
+
+ const remove = (versions: any[], index: number) => {
+ const updatedVersions = versions.filter(
+ (_: any, idx: number) => idx !== index
+ );
+ // If the removed version was the default, set the first version as default
+ if (versions[index].is_default && updatedVersions.length > 0) {
+ updatedVersions[0].is_default = true;
+ }
+ form.setFieldValue('version_configs', updatedVersions);
+ };
+
+ const handleAdd = async () => {
try {
const isValid = await form.validateFields(['version_configs'], {
recursive: true
});
- console.log('isValid:', isValid);
+ console.log('isValid:', isValid, version_configs);
if (isValid) {
add();
+ setTimeout(() => {
+ setCollapseKey(new Set([version_configs?.length]));
+ }, 100);
}
} catch (error) {
- console.log('Validation failed:', error);
+ const errorKey = (error as any).errorFields?.[0]?.name?.[1];
+ if (typeof errorKey === 'number') {
+ setCollapseKey(new Set([errorKey]));
+ }
}
};
useEffect(() => {
const versions = form.getFieldValue('version_configs') || [];
- console.log('versions:', versions);
+
if (Array.isArray(versions) && versions.length === 0) {
form.setFieldValue('version_configs', versionList);
}
}, []);
+ useEffect(() => {
+ if (activeKey && activeKey.length > 0) {
+ setCollapseKey(new Set(activeKey));
+ }
+ }, [activeKey]);
+
return (
-
- {(fields, { add, remove }) => {
- return (
-
-
- Version Configurations
-
-
- {fields.map(({ key, name, ...restField }, index) => (
- <>
-
{version_configs[name]?.version_no}}
- subtitle={
- version_configs[name]?.image_name && (
-
- {version_configs[name]?.image_name}
-
- )
- }
- onToggle={(open) => onToggle(open, key + '')}
- deleteBtn={false}
- right={
-
- e.stopPropagation()}
- >
- {!currentData?.is_build_in && (
-
-
- handleSetDefaultVersion(e, index)
- }
- >
- Default Version
-
-
- )}
-
- {(fields.length > 1 || currentData?.is_build_in) && (
-
- )}
-
- }
- >
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Versions Config
+
+
+ {buildInVersionConfigs?.map((item: any, index: number) => (
+ <>
+
+
+
+
+ >
+ ))}
+ {version_configs?.map((item: any, index: number) => (
+ <>
+
+ Version:
+ {item.version_no}
+
+ }
+ subtitle={
+ item.image_name && (
+
+ Image:
+
+ {item.image_name}
+
+
+ )
+ }
+ onToggle={(open) => onToggle(open, index)}
+ deleteBtn={false}
+ right={
+
+
e.stopPropagation()}
>
-
-
-
- {index < fields.length - 1 && (
-
- )}
- >
- ))}
-
- );
- }}
-
+ {!currentData?.is_build_in && (
+
+
+ handleSetDefaultVersion(e, index)
+ }
+ >
+ Default Version
+
+
+ )}
+
+ {(version_configs.length > 1 || currentData?.is_build_in) && (
+
+ )}
+
+ }
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {index < version_configs.length - 1 && (
+
+ )}
+ >
+ ))}
+
+ >
);
};
diff --git a/src/pages/backends/forms/versions-form.tsx b/src/pages/backends/forms/versions-form.tsx
deleted file mode 100644
index 5e81d589..00000000
--- a/src/pages/backends/forms/versions-form.tsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import { Form } from 'antd';
-import React from 'react';
-import VersionsField from './versions-config';
-
-const VersionsForm: React.FC = () => {
- return (
-
- );
-};
diff --git a/src/pages/backends/step-forms/basic-form.tsx b/src/pages/backends/step-forms/basic-form.tsx
deleted file mode 100644
index 427d9b21..00000000
--- a/src/pages/backends/step-forms/basic-form.tsx
+++ /dev/null
@@ -1,59 +0,0 @@
-import PageTools from '@/components/page-tools';
-import { PageActionType } from '@/config/types';
-import { useIntl } from '@umijs/max';
-import { forwardRef, useImperativeHandle, useRef } from 'react';
-import styled from 'styled-components';
-import Basic from '../forms/basic';
-
-const Title = styled.span`
- display: flex;
- align-items: center;
- justify-content: space-between;
- font-weight: 700;
- font-size: 16px;
- .text {
- font-size: 20px;
- }
-`;
-interface BasicFormProps {
- action: PageActionType;
- currentData?: any;
-}
-
-const BasicForm = forwardRef((props: BasicFormProps, ref) => {
- const intl = useIntl();
- const { action, currentData } = props;
- const formRef = useRef(null);
-
- const handleOnFinish = (values: any) => {
- console.log(values);
- };
-
- useImperativeHandle(ref, () => ({
- validateFields: formRef.current?.validateFields,
- getFieldsValue: formRef.current?.getFieldsValue,
- submit: formRef.current?.submit
- }));
-
- return (
-
-
- {intl.formatMessage({ id: 'clusters.create.configBasic' })}
-
- }
- marginTop={0}
- >
-
-
- );
-});
-
-export default BasicForm;
diff --git a/src/pages/backends/step-forms/module-registry.ts b/src/pages/backends/step-forms/module-registry.ts
deleted file mode 100644
index 0c2dc8c4..00000000
--- a/src/pages/backends/step-forms/module-registry.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import React from 'react';
-import BasicForm from './basic-form';
-import ParamertersForm from './parameters-form';
-import VersionConfigForm from './version-config-form';
-
-export const moduleMap = {
- BasicForm: 'BasicForm',
- VersionConfigForm: 'VersionConfigForm',
- ParamertersForm: 'ParamertersForm'
-};
-
-export const moduleRegistry: Record> = {
- [moduleMap.BasicForm]: BasicForm,
- [moduleMap.VersionConfigForm]: VersionConfigForm,
- [moduleMap.ParamertersForm]: ParamertersForm
-};
diff --git a/src/pages/backends/step-forms/parameters-form.tsx b/src/pages/backends/step-forms/parameters-form.tsx
deleted file mode 100644
index 75788791..00000000
--- a/src/pages/backends/step-forms/parameters-form.tsx
+++ /dev/null
@@ -1,55 +0,0 @@
-import PageTools from '@/components/page-tools';
-import { PageActionType } from '@/config/types';
-import { useIntl } from '@umijs/max';
-import { forwardRef, useImperativeHandle, useRef } from 'react';
-import styled from 'styled-components';
-import Parameters from '../forms/parameters';
-
-const Title = styled.span`
- display: flex;
- align-items: center;
- justify-content: space-between;
- font-weight: 700;
- font-size: 16px;
- .text {
- font-size: 20px;
- }
-`;
-interface BasicFormProps {
- action: PageActionType;
- currentData?: any;
-}
-
-const ParametersForm = forwardRef((props: BasicFormProps, ref) => {
- const intl = useIntl();
- const { action, currentData } = props;
- const formRef = useRef(null);
-
- const handleOnFinish = (values: any) => {
- console.log(values);
- };
-
- useImperativeHandle(ref, () => ({
- validateFields: formRef.current?.validateFields,
- getFieldsValue: formRef.current?.getFieldsValue,
- submit: formRef.current?.submit
- }));
-
- return (
-
-
Parameters Configuration}
- marginTop={0}
- >
-
-
- );
-});
-
-export default ParametersForm;
diff --git a/src/pages/backends/step-forms/use-step-list.tsx b/src/pages/backends/step-forms/use-step-list.tsx
deleted file mode 100644
index 5f21cb7b..00000000
--- a/src/pages/backends/step-forms/use-step-list.tsx
+++ /dev/null
@@ -1,65 +0,0 @@
-import { useIntl, useNavigate } from '@umijs/max';
-import { useMemoizedFn } from 'ahooks';
-import { useMemo } from 'react';
-import { moduleMap } from './module-registry';
-
-export default function useStepList() {
- const intl = useIntl();
- const navigate = useNavigate();
-
- const handleBack = useMemoizedFn(() => {
- navigate(-1);
- });
-
- return useMemo(
- () => [
- {
- title: 'Basic Info',
- content: '',
- showButtons: () => {
- return {
- previous: false,
- next: true,
- save: false,
- skip: false
- };
- },
- defaultShow: true,
- showForms: [moduleMap.BasicForm],
- showModules: []
- },
- {
- title: 'Version Configuration',
- content: '',
- showButtons: () => {
- return {
- previous: true,
- next: true,
- save: false,
- skip: false
- };
- },
- defaultShow: true,
- showForms: [moduleMap.VersionConfigForm],
- showModules: []
- },
- {
- title: 'Parameters',
- content: '',
- showButtons: () => {
- return {
- previous: true,
- next: false,
- save: true,
- skip: false
- };
- },
- defaultShow: true,
- showForms: [moduleMap.ParamertersForm],
- showModules: [],
- beforeNext: handleBack
- }
- ],
- [handleBack, intl]
- );
-}
diff --git a/src/pages/backends/step-forms/version-config-form.tsx b/src/pages/backends/step-forms/version-config-form.tsx
deleted file mode 100644
index a033e6e3..00000000
--- a/src/pages/backends/step-forms/version-config-form.tsx
+++ /dev/null
@@ -1,227 +0,0 @@
-import PageTools from '@/components/page-tools';
-import { PageActionType } from '@/config/types';
-import { PlusOutlined } from '@ant-design/icons';
-import { useIntl } from '@umijs/max';
-import { Button, FormInstance } from 'antd';
-import {
- forwardRef,
- useEffect,
- useImperativeHandle,
- useRef,
- useState
-} from 'react';
-import styled from 'styled-components';
-import { FormData } from '../config/types';
-import VersionsConfig from '../forms/versions-config';
-
-const PoolContainer = styled.div`
- display: flex;
- align-items: flex-start;
- gap: 16px;
-`;
-
-const PoolFormWrapper = styled.div`
- flex: 1;
- margin-bottom: 16px;
-`;
-
-const Title = styled.span`
- display: flex;
- align-items: center;
- justify-content: space-between;
- font-weight: 700;
- font-size: 16px;
- .text {
- font-size: 20px;
- }
-`;
-interface WorkerPoolsFormProps {
- action: PageActionType;
- currentData?: any;
-}
-
-const WorkerPoolsForm = forwardRef((props: WorkerPoolsFormProps, ref) => {
- const intl = useIntl();
- const { action, currentData } = props;
- const countRef = useRef(0);
- const formRefs = useRef | null>>({});
- const [activeKey, setActiveKey] = useState>(new Set([0]));
- const [versionConfigs, setVersionConfigs] = useState