|
- import FormInfo from '@/components/FormInfo';
- import ParameterSelect from '@/components/ParameterSelect';
- import SubAreaTitle from '@/components/SubAreaTitle';
- import { PipelineNodeModelSerialize } from '@/types';
- import { Form } from 'antd';
- import styles from './index.less';
-
- type ExperimentParameterProps = {
- nodeData: PipelineNodeModelSerialize;
- };
-
- function ExperimentParameter({ nodeData }: ExperimentParameterProps) {
- // 控制策略
- // const controlStrategyList = Object.entries(nodeData.control_strategy ?? {}).map(
- // ([key, value]) => ({ key, value }),
- // );
- const nodeId = nodeData.id;
- const hasTaskInfo =
- nodeId &&
- !nodeId.startsWith('git-clone') &&
- !nodeId.startsWith('dataset-export') &&
- !nodeId.startsWith('model-export');
-
- // 输入参数
- const inParametersList = Object.entries(nodeData.in_parameters ?? {}).map(([key, value]) => ({
- key,
- value,
- }));
-
- // 输出参数
- const outParametersList = Object.entries(nodeData.out_parameters ?? {}).map(([key, value]) => ({
- key,
- value,
- }));
-
- return (
- <Form
- name="form"
- layout="vertical"
- labelCol={{
- span: 24,
- }}
- wrapperCol={{
- span: 24,
- }}
- initialValues={nodeData}
- style={{
- maxWidth: 600,
- }}
- autoComplete="off"
- className={styles['experiment-parameter']}
- >
- <div className={styles['experiment-parameter__title']}>
- <SubAreaTitle
- image={require('@/assets/img/static-message.png')}
- title="基本信息"
- ></SubAreaTitle>
- </div>
- <Form.Item
- label="任务名称"
- name="label"
- rules={[
- {
- required: true,
- message: '请输入任务名称',
- },
- ]}
- >
- <FormInfo />
- </Form.Item>
- <Form.Item
- label="任务ID"
- name="id"
- rules={[
- {
- required: true,
- message: '请输入任务id',
- },
- ]}
- >
- <FormInfo />
- </Form.Item>
- {hasTaskInfo && (
- <>
- <div className={styles['experiment-parameter__title']}>
- <SubAreaTitle
- image={require('@/assets/img/duty-message.png')}
- title="任务信息"
- ></SubAreaTitle>
- </div>
- <Form.Item
- label="镜像"
- name="image"
- rules={[
- {
- required: true,
- message: '请输入镜像',
- },
- ]}
- >
- <FormInfo />
- </Form.Item>
- <Form.Item label="工作目录" name="working_directory">
- <FormInfo />
- </Form.Item>
-
- <Form.Item label="启动命令" name="command">
- <FormInfo textArea />
- </Form.Item>
- <Form.Item
- label="资源规格"
- name="resources_standard"
- rules={[
- {
- required: true,
- message: '请输入资源规格',
- },
- ]}
- >
- <ParameterSelect dataType="resource" placeholder="请选择资源规格" display />
- </Form.Item>
- {/* <Form.Item label="挂载路径" name="mount_path">
- <FormInfo />
- </Form.Item> */}
- <Form.Item label="环境变量" name="env_variables">
- <FormInfo textArea />
- </Form.Item>
- {/* {controlStrategyList.map((item) => (
- <Form.Item key={item.key} name={['control_strategy', item.key]} label={item.value.label}>
- <FormInfo valuePropName="showValue" />
- </Form.Item>
- ))} */}
- </>
- )}
- <div className={styles['experiment-parameter__title']}>
- <SubAreaTitle
- image={require('@/assets/img/duty-message.png')}
- title="输入参数"
- ></SubAreaTitle>
- </div>
- {inParametersList.map((item) => (
- <Form.Item
- key={item.key}
- name={['in_parameters', item.key]}
- label={item.value.label + '(' + item.key + ')'}
- rules={[{ required: item.value.require ? true : false }]}
- >
- {item.value.type === 'select' ? (
- ['dataset', 'model', 'service', 'resource'].includes(item.value.item_type) ? (
- <ParameterSelect dataType={item.value.item_type as any} display />
- ) : null
- ) : (
- <FormInfo valuePropName="showValue" />
- )}
- </Form.Item>
- ))}
- <div className={styles['experiment-parameter__title']}>
- <SubAreaTitle
- image={require('@/assets/img/duty-message.png')}
- title="输出参数"
- ></SubAreaTitle>
- </div>
- {outParametersList.map((item) => (
- <Form.Item
- key={item.key}
- name={['out_parameters', item.key]}
- label={item.value.label + '(' + item.key + ')'}
- rules={[{ required: item.value.require ? true : false }]}
- >
- <FormInfo valuePropName="showValue" />
- </Form.Item>
- ))}
- </Form>
- );
- }
-
- export default ExperimentParameter;
|