import { PageAction } from '@/config'; import { PageActionType } from '@/config/types'; import { CollapsePanel, IconFont, ScrollSpyTabs } from '@gpustack/core-ui'; import { useWrapperContext } from '@gpustack/core-ui/lib/components/column-wrapper/use-wrapper-context'; import { useIntl } from '@umijs/max'; import { Form } from 'antd'; import { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react'; import FormContext from '../config/form-context'; import { FormData, BenchmarkListItem as ListItem } from '../config/types'; import Basic from './basic'; import DatasetForm from './dataset'; interface ProviderFormProps { ref?: any; action: PageActionType; currentData?: ListItem; // Used when action is EDIT open?: boolean; clusterList?: Global.BaseOption[]; datasetList: Global.BaseOption[]; profilesOptions: Global.BaseOption[]; onFinish: (values: FormData) => Promise; } const TABKeysMap = { BASIC: 'basic', PROFILE: 'profile', ADVANCED: 'advanced' }; const ProviderForm: React.FC = forwardRef((props, ref) => { const { action, currentData, onFinish, open, clusterList, profilesOptions, datasetList } = props; const intl = useIntl(); const [form] = Form.useForm(); const { getScrollElementScrollableHeight } = useWrapperContext(); const [activeKey, setActiveKey] = useState([TABKeysMap.PROFILE]); const scrollTabsRef = useRef(null); const segmentOptions = [ { value: TABKeysMap.BASIC, label: intl.formatMessage({ id: 'common.title.basicInfo' }), icon: , field: 'name' }, { value: TABKeysMap.PROFILE, label: intl.formatMessage({ id: 'common.title.config' }), icon: , field: 'profile' } ]; const handleActiveChange = (key: string[]) => { setActiveKey(key); }; const handleOnCollapseChange = (keys: string | string[]) => { setActiveKey(Array.isArray(keys) ? keys : [keys]); }; useImperativeHandle(ref, () => ({ submit: () => { form.submit(); }, resetFields: () => { form.resetFields(); } })); useEffect(() => { if (action === PageAction.EDIT && currentData) { form.setFieldsValue({ ...currentData, model_instance: [ currentData.model_name, currentData.model_instance_name ] }); } }, [form, currentData, action]); return (
} ]} >
); }); export default ProviderForm;