/* * @Author: 赵伟 * @Date: 2024-04-16 13:58:08 * @Description: 创建镜像 */ import KFIcon from '@/components/KFIcon'; import KFRadio, { type KFRadioItem } from '@/components/KFRadio'; import PageTitle from '@/components/PageTitle'; import ParameterInput from '@/components/ParameterInput'; import SubAreaTitle from '@/components/SubAreaTitle'; import { useComputingResource } from '@/hooks/resource'; import ResourceSelectorModal, { ResourceSelectorResponse, ResourceSelectorType, selectorTypeConfig, } from '@/pages/Pipeline/components/ResourceSelectorModal'; import { createEditorReq } from '@/services/developmentEnvironment'; import { openAntdModal } from '@/utils/modal'; import { to } from '@/utils/promise'; import { useNavigate } from '@umijs/max'; import { App, Button, Col, Form, Input, Row, Select } from 'antd'; import { pick } from 'lodash'; import { useState } from 'react'; import styles from './index.less'; type FormData = { name: string; computing_resource: string; standard: string; image: string; model: ResourceSelectorResponse; dataset: ResourceSelectorResponse; }; enum ComputingResourceType { GPU = 'GPU', NPU = 'NPU', } const EditorRadioItems: KFRadioItem[] = [ { key: ComputingResourceType.GPU, title: '英伟达GPU', icon: , }, { key: ComputingResourceType.NPU, title: '昇腾NPU', icon: , }, ]; function EditorCreate() { const navgite = useNavigate(); const [form] = Form.useForm(); const { message } = App.useApp(); const [resourceStandardList, filterResourceStandard] = useComputingResource(); const [selectedModel, setSelectedModel] = useState( undefined, ); // 选择的模型,为了再次打开时恢复原来的选择 const [selectedDataset, setSelectedDataset] = useState( undefined, ); // 选择的数据集,为了再次打开时恢复原来的选择 const [selectedMirror, setSelectedMirror] = useState( undefined, ); // 选择的镜像,为了再次打开时恢复原来的选择 // 创建编辑器 const createEditor = async (formData: FormData) => { // const { model, dataset } = formData; // const params = { // ...formData, // model: JSON.stringify(omit(model, ['showValue'])), // dataset: JSON.stringify(dataset, ['showValue']), // }; const [res] = await to(createEditorReq(formData)); if (res) { message.success('创建成功'); navgite(-1); } }; // 提交 const handleSubmit = (values: FormData) => { createEditor(values); }; // 取消 const cancel = () => { navgite(-1); }; // 获取选择数据集、模型后面按钮 icon const getSelectBtnIcon = (type: ResourceSelectorType) => { return ; }; // 选择模型、镜像、数据集 const selectResource = (name: string, type: ResourceSelectorType) => { let resource: ResourceSelectorResponse | undefined; switch (type) { case ResourceSelectorType.Model: resource = selectedModel; break; case ResourceSelectorType.Dataset: resource = selectedDataset; break; default: resource = selectedMirror; break; } const { close } = openAntdModal(ResourceSelectorModal, { type, defaultExpandedKeys: resource ? [resource.id] : [], defaultCheckedKeys: resource ? [`${resource.id}-${resource.version}`] : [], defaultActiveTab: resource?.activeTab, onOk: (res) => { if (res) { if (type === ResourceSelectorType.Mirror) { form.setFieldValue(name, res.path); setSelectedMirror(res); } else { const showValue = `${res.name}:${res.version}`; form.setFieldValue(name, { ...pick(res, ['id', 'version', 'path']), showValue, }); if (type === ResourceSelectorType.Model) { setSelectedModel(res); } else if (type === ResourceSelectorType.Dataset) { setSelectedDataset(res); } } } else { if (type === ResourceSelectorType.Model) { setSelectedModel(undefined); } else if (type === ResourceSelectorType.Dataset) { setSelectedDataset(undefined); } else if (type === ResourceSelectorType.Mirror) { setSelectedMirror(undefined); } form.setFieldValue(name, ''); } close(); }, }); }; return (