You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.tsx 5.2 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. import FormInfo from '@/components/FormInfo';
  2. import ParameterSelect from '@/components/ParameterSelect';
  3. import SubAreaTitle from '@/components/SubAreaTitle';
  4. import { PipelineNodeModelSerialize } from '@/types';
  5. import { Form } from 'antd';
  6. import styles from './index.less';
  7. type ExperimentParameterProps = {
  8. nodeData: PipelineNodeModelSerialize;
  9. };
  10. function ExperimentParameter({ nodeData }: ExperimentParameterProps) {
  11. // 控制策略
  12. // const controlStrategyList = Object.entries(nodeData.control_strategy ?? {}).map(
  13. // ([key, value]) => ({ key, value }),
  14. // );
  15. const nodeId = nodeData.id;
  16. const hasTaskInfo =
  17. nodeId &&
  18. !nodeId.startsWith('git-clone') &&
  19. !nodeId.startsWith('dataset-export') &&
  20. !nodeId.startsWith('model-export');
  21. // 输入参数
  22. const inParametersList = Object.entries(nodeData.in_parameters ?? {}).map(([key, value]) => ({
  23. key,
  24. value,
  25. }));
  26. // 输出参数
  27. const outParametersList = Object.entries(nodeData.out_parameters ?? {}).map(([key, value]) => ({
  28. key,
  29. value,
  30. }));
  31. return (
  32. <Form
  33. name="form"
  34. layout="vertical"
  35. labelCol={{
  36. span: 24,
  37. }}
  38. wrapperCol={{
  39. span: 24,
  40. }}
  41. initialValues={nodeData}
  42. style={{
  43. maxWidth: 600,
  44. }}
  45. autoComplete="off"
  46. className={styles['experiment-parameter']}
  47. >
  48. <div className={styles['experiment-parameter__title']}>
  49. <SubAreaTitle
  50. image={require('@/assets/img/static-message.png')}
  51. title="基本信息"
  52. ></SubAreaTitle>
  53. </div>
  54. <Form.Item
  55. label="任务名称"
  56. name="label"
  57. rules={[
  58. {
  59. required: true,
  60. message: '请输入任务名称',
  61. },
  62. ]}
  63. >
  64. <FormInfo />
  65. </Form.Item>
  66. <Form.Item
  67. label="任务ID"
  68. name="id"
  69. rules={[
  70. {
  71. required: true,
  72. message: '请输入任务id',
  73. },
  74. ]}
  75. >
  76. <FormInfo />
  77. </Form.Item>
  78. {hasTaskInfo && (
  79. <>
  80. <div className={styles['experiment-parameter__title']}>
  81. <SubAreaTitle
  82. image={require('@/assets/img/duty-message.png')}
  83. title="任务信息"
  84. ></SubAreaTitle>
  85. </div>
  86. <Form.Item
  87. label="镜像"
  88. name="image"
  89. rules={[
  90. {
  91. required: true,
  92. message: '请输入镜像',
  93. },
  94. ]}
  95. >
  96. <FormInfo />
  97. </Form.Item>
  98. <Form.Item label="工作目录" name="working_directory">
  99. <FormInfo />
  100. </Form.Item>
  101. <Form.Item label="启动命令" name="command">
  102. <FormInfo textArea />
  103. </Form.Item>
  104. <Form.Item
  105. label="资源规格"
  106. name="resources_standard"
  107. rules={[
  108. {
  109. required: true,
  110. message: '请输入资源规格',
  111. },
  112. ]}
  113. >
  114. <ParameterSelect dataType="resource" placeholder="请选择资源规格" display />
  115. </Form.Item>
  116. {/* <Form.Item label="挂载路径" name="mount_path">
  117. <FormInfo />
  118. </Form.Item> */}
  119. <Form.Item label="环境变量" name="env_variables">
  120. <FormInfo textArea />
  121. </Form.Item>
  122. {/* {controlStrategyList.map((item) => (
  123. <Form.Item key={item.key} name={['control_strategy', item.key]} label={item.value.label}>
  124. <FormInfo valuePropName="showValue" />
  125. </Form.Item>
  126. ))} */}
  127. </>
  128. )}
  129. <div className={styles['experiment-parameter__title']}>
  130. <SubAreaTitle
  131. image={require('@/assets/img/duty-message.png')}
  132. title="输入参数"
  133. ></SubAreaTitle>
  134. </div>
  135. {inParametersList.map((item) => (
  136. <Form.Item
  137. key={item.key}
  138. name={['in_parameters', item.key]}
  139. label={item.value.label + '(' + item.key + ')'}
  140. rules={[{ required: item.value.require ? true : false }]}
  141. >
  142. {item.value.type === 'select' ? (
  143. ['dataset', 'model', 'service', 'resource'].includes(item.value.item_type) ? (
  144. <ParameterSelect dataType={item.value.item_type as any} display />
  145. ) : null
  146. ) : (
  147. <FormInfo valuePropName="showValue" />
  148. )}
  149. </Form.Item>
  150. ))}
  151. <div className={styles['experiment-parameter__title']}>
  152. <SubAreaTitle
  153. image={require('@/assets/img/duty-message.png')}
  154. title="输出参数"
  155. ></SubAreaTitle>
  156. </div>
  157. {outParametersList.map((item) => (
  158. <Form.Item
  159. key={item.key}
  160. name={['out_parameters', item.key]}
  161. label={item.value.label + '(' + item.key + ')'}
  162. rules={[{ required: item.value.require ? true : false }]}
  163. >
  164. <FormInfo valuePropName="showValue" />
  165. </Form.Item>
  166. ))}
  167. </Form>
  168. );
  169. }
  170. export default ExperimentParameter;