From 163c2a70fc5b76e66ec9a843e7267494fb51076b Mon Sep 17 00:00:00 2001 From: balibabu Date: Tue, 17 Dec 2024 17:58:03 +0800 Subject: [PATCH] Feat: Add AdvancedSettingForm #3221 (#4071) ### What problem does this PR solve? Feat: Add AdvancedSettingForm #3221 ### Type of change - [x] New Feature (non-breaking change which adds functionality) --- .../dataset/setting/advanced-setting-form.tsx | 163 ++++++++++++++++++ .../dataset/setting/basic-setting-form.tsx | 163 ++++++++++++++++++ web/src/pages/dataset/setting/index.tsx | 23 +++ web/src/pages/dataset/settings/index.tsx | 8 - web/src/pages/dataset/sidebar/hooks.tsx | 6 +- web/src/pages/dataset/sidebar/index.tsx | 12 +- web/src/pages/dataset/testing/index.tsx | 2 +- web/src/routes.ts | 10 +- 8 files changed, 365 insertions(+), 22 deletions(-) create mode 100644 web/src/pages/dataset/setting/advanced-setting-form.tsx create mode 100644 web/src/pages/dataset/setting/basic-setting-form.tsx create mode 100644 web/src/pages/dataset/setting/index.tsx delete mode 100644 web/src/pages/dataset/settings/index.tsx diff --git a/web/src/pages/dataset/setting/advanced-setting-form.tsx b/web/src/pages/dataset/setting/advanced-setting-form.tsx new file mode 100644 index 000000000..e373cb06b --- /dev/null +++ b/web/src/pages/dataset/setting/advanced-setting-form.tsx @@ -0,0 +1,163 @@ +'use client'; + +import { zodResolver } from '@hookform/resolvers/zod'; +import { useForm } from 'react-hook-form'; +import { z } from 'zod'; + +import { Button } from '@/components/ui/button'; +import { + Form, + FormControl, + FormDescription, + FormField, + FormItem, + FormLabel, + FormMessage, +} from '@/components/ui/form'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '@/components/ui/select'; +import { FormSlider } from '@/components/ui/slider'; +import { Textarea } from '@/components/ui/textarea'; + +const formSchema = z.object({ + username: z.number().min(2, { + message: 'Username must be at least 2 characters.', + }), + a: z.number().min(2, { + message: 'Username must be at least 2 characters.', + }), + b: z.string().min(2, { + message: 'Username must be at least 2 characters.', + }), + c: z.number().min(2, { + message: 'Username must be at least 2 characters.', + }), + d: z.string().min(2, { + message: 'Username must be at least 2 characters.', + }), +}); + +export default function AdvancedSettingForm() { + const form = useForm>({ + resolver: zodResolver(formSchema), + defaultValues: { + username: 0, + }, + }); + + function onSubmit(values: z.infer) { + console.log(values); + } + + return ( +
+ + ( + + Username + + + + + This is your public display name. + + + + )} + /> + ( + + Username + + + + + This is your public display name. + + + + )} + /> + ( + + Username + + + This is your public display name. + + + + )} + /> + ( + + Username + + + + + This is your public display name. + + + + )} + /> + ( + + Username + + + + + This is your public display name. + + + + )} + /> + + + + ); +} diff --git a/web/src/pages/dataset/setting/basic-setting-form.tsx b/web/src/pages/dataset/setting/basic-setting-form.tsx new file mode 100644 index 000000000..6ce0e6409 --- /dev/null +++ b/web/src/pages/dataset/setting/basic-setting-form.tsx @@ -0,0 +1,163 @@ +'use client'; + +import { zodResolver } from '@hookform/resolvers/zod'; +import { useForm } from 'react-hook-form'; +import { z } from 'zod'; + +import { Button } from '@/components/ui/button'; +import { + Form, + FormControl, + FormDescription, + FormField, + FormItem, + FormLabel, + FormMessage, +} from '@/components/ui/form'; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from '@/components/ui/select'; +import { FormSlider } from '@/components/ui/slider'; +import { Textarea } from '@/components/ui/textarea'; + +const formSchema = z.object({ + username: z.number().min(2, { + message: 'Username must be at least 2 characters.', + }), + a: z.number().min(2, { + message: 'Username must be at least 2 characters.', + }), + b: z.string().min(2, { + message: 'Username must be at least 2 characters.', + }), + c: z.number().min(2, { + message: 'Username must be at least 2 characters.', + }), + d: z.string().min(2, { + message: 'Username must be at least 2 characters.', + }), +}); + +export default function BasicSettingForm() { + const form = useForm>({ + resolver: zodResolver(formSchema), + defaultValues: { + username: 0, + }, + }); + + function onSubmit(values: z.infer) { + console.log(values); + } + + return ( +
+ + ( + + Username + + + + + This is your public display name. + + + + )} + /> + ( + + Username + + + + + This is your public display name. + + + + )} + /> + ( + + Username + + + This is your public display name. + + + + )} + /> + ( + + Username + + + + + This is your public display name. + + + + )} + /> + ( + + Username + + + + + This is your public display name. + + + + )} + /> + + + + ); +} diff --git a/web/src/pages/dataset/setting/index.tsx b/web/src/pages/dataset/setting/index.tsx new file mode 100644 index 000000000..f4ddb998b --- /dev/null +++ b/web/src/pages/dataset/setting/index.tsx @@ -0,0 +1,23 @@ +import { Card } from '@/components/ui/card'; +import AdvancedSettingForm from './advanced-setting-form'; +import BasicSettingForm from './basic-setting-form'; + +export default function DatasetSettings() { + return ( +
+
Basic settings
+ +
+ +
+
+ +
Advanced settings
+ +
+ +
+
+
+ ); +} diff --git a/web/src/pages/dataset/settings/index.tsx b/web/src/pages/dataset/settings/index.tsx deleted file mode 100644 index e89980a0a..000000000 --- a/web/src/pages/dataset/settings/index.tsx +++ /dev/null @@ -1,8 +0,0 @@ -export default function DatasetSettings() { - return ( -
- Basic settings - Advanced settings -
- ); -} diff --git a/web/src/pages/dataset/sidebar/hooks.tsx b/web/src/pages/dataset/sidebar/hooks.tsx index 4f90e1916..d68bcb954 100644 --- a/web/src/pages/dataset/sidebar/hooks.tsx +++ b/web/src/pages/dataset/sidebar/hooks.tsx @@ -1,4 +1,4 @@ -import { DatasetBaseKey, KnowledgeRouteKey } from '@/constants/knowledge'; +import { Routes } from '@/routes'; import { useCallback } from 'react'; import { useNavigate } from 'umi'; @@ -6,8 +6,8 @@ export const useHandleMenuClick = () => { const navigate = useNavigate(); const handleMenuClick = useCallback( - (key: KnowledgeRouteKey) => () => { - navigate(`/${DatasetBaseKey}/${key}`); + (key: Routes) => () => { + navigate(`${Routes.DatasetBase}${key}`); }, [navigate], ); diff --git a/web/src/pages/dataset/sidebar/index.tsx b/web/src/pages/dataset/sidebar/index.tsx index e3711bc38..b41546cd7 100644 --- a/web/src/pages/dataset/sidebar/index.tsx +++ b/web/src/pages/dataset/sidebar/index.tsx @@ -1,18 +1,18 @@ import { Button } from '@/components/ui/button'; -import { KnowledgeRouteKey } from '@/constants/knowledge'; import { useSecondPathName } from '@/hooks/route-hook'; import { cn } from '@/lib/utils'; +import { Routes } from '@/routes'; import { Banknote, LayoutGrid, Trash2, User } from 'lucide-react'; import { useHandleMenuClick } from './hooks'; const items = [ - { icon: User, label: 'Dataset', key: KnowledgeRouteKey.Dataset }, + { icon: User, label: 'Dataset', key: Routes.DatasetBase }, { icon: LayoutGrid, label: 'Retrieval testing', - key: KnowledgeRouteKey.Testing, + key: Routes.DatasetTesting, }, - { icon: Banknote, label: 'Settings', key: KnowledgeRouteKey.Configuration }, + { icon: Banknote, label: 'Settings', key: Routes.DatasetSetting }, ]; const dataset = { @@ -29,7 +29,7 @@ export function SideBar() { const { handleMenuClick } = useHandleMenuClick(); return ( -