import { DataFlowSelect } from '@/components/data-pipeline-select'; import { ButtonLoading } from '@/components/ui/button'; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@/components/ui/form'; import { Input } from '@/components/ui/input'; import { FormLayout } from '@/constants/form'; import { useNavigatePage } from '@/hooks/logic-hooks/navigate-hooks'; import { IModalProps } from '@/interfaces/common'; import { zodResolver } from '@hookform/resolvers/zod'; import { useEffect } from 'react'; import { useForm, useWatch } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; import { z } from 'zod'; import { ChunkMethodItem, EmbeddingModelItem, ParseTypeItem, } from '../dataset/dataset-setting/configuration/common-item'; const FormId = 'dataset-creating-form'; export function InputForm({ onOk }: IModalProps) { const { t } = useTranslation(); const FormSchema = z .object({ name: z .string() .min(1, { message: t('knowledgeList.namePlaceholder'), }) .trim(), parseType: z.number().optional(), embd_id: z .string() .min(1, { message: t('knowledgeConfiguration.embeddingModelPlaceholder'), }) .trim(), parser_id: z.string().optional(), pipeline_id: z.string().optional(), }) .superRefine((data, ctx) => { // When parseType === 1, parser_id is required if ( data.parseType === 1 && (!data.parser_id || data.parser_id.trim() === '') ) { ctx.addIssue({ code: z.ZodIssueCode.custom, message: t('knowledgeList.parserRequired'), path: ['parser_id'], }); } console.log('form-data', data); // When parseType === 1, pipline_id required if (data.parseType === 2 && !data.pipeline_id) { ctx.addIssue({ code: z.ZodIssueCode.custom, message: t('knowledgeList.dataFlowRequired'), path: ['pipeline_id'], }); } }); const form = useForm>({ resolver: zodResolver(FormSchema), defaultValues: { name: '', parseType: 1, parser_id: '', embd_id: '', }, }); function onSubmit(data: z.infer) { console.log('submit', data); onOk?.(data); } const parseType = useWatch({ control: form.control, name: 'parseType', }); useEffect(() => { console.log('parseType', parseType); if (parseType === 1) { form.setValue('pipeline_id', ''); } }, [parseType, form]); const { navigateToAgents } = useNavigatePage(); return (
( * {t('knowledgeList.name')} )} /> {parseType === 1 && } {parseType === 2 && ( )} ); } export function DatasetCreatingDialog({ hideModal, onOk, loading, }: IModalProps) { const { t } = useTranslation(); return ( {t('knowledgeList.createKnowledgeBase')} {t('common.save')} ); }