From ee9288debd5c1c08c5f1631560890306c6434c1d Mon Sep 17 00:00:00 2001 From: ReaJason Date: Mon, 12 Jan 2026 19:46:28 +0800 Subject: [PATCH] refactor: change field location --- .../components/memshell/jreversion-field.tsx | 76 +++++++++++++++++++ .../components/memshell/main-config-card.tsx | 62 ++------------- .../memshell/serverversion-field.tsx | 76 +++++++++++++++++++ .../memshell/tabs/shelltype-field.tsx | 66 +--------------- 4 files changed, 158 insertions(+), 122 deletions(-) create mode 100644 web/app/components/memshell/jreversion-field.tsx create mode 100644 web/app/components/memshell/serverversion-field.tsx diff --git a/web/app/components/memshell/jreversion-field.tsx b/web/app/components/memshell/jreversion-field.tsx new file mode 100644 index 00000000..dc875777 --- /dev/null +++ b/web/app/components/memshell/jreversion-field.tsx @@ -0,0 +1,76 @@ +import { Controller, type UseFormReturn } from "react-hook-form"; +import { useTranslation } from "react-i18next"; +import { + Field, + FieldContent, + FieldError, + FieldLabel, +} from "@/components/ui/field"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import type { MemShellFormSchema } from "@/types/schema"; + +const JDKVersion = [ + { name: "Java6", value: "50" }, + { name: "Java8", value: "52" }, + { name: "Java9", value: "53" }, + { name: "Java11", value: "55" }, + { name: "Java17", value: "61" }, + { name: "Java21", value: "65" }, +]; + +export function JREVersionFormField({ + form, +}: Readonly<{ + form: UseFormReturn; +}>) { + const { t } = useTranslation(["common"]); + return ( + ( + + + + {t("common:targetJdkVersion")} + + + {fieldState.error && } + + + )} + /> + ); +} diff --git a/web/app/components/memshell/main-config-card.tsx b/web/app/components/memshell/main-config-card.tsx index 16384acc..62654316 100644 --- a/web/app/components/memshell/main-config-card.tsx +++ b/web/app/components/memshell/main-config-card.tsx @@ -25,7 +25,6 @@ import { Field, FieldContent, FieldDescription, - FieldError, FieldLabel, } from "@/components/ui/field"; import { Label } from "@/components/ui/label"; @@ -50,15 +49,8 @@ import { } from "@/types/memshell"; import type { MemShellFormSchema } from "@/types/schema"; import { Spinner } from "../ui/spinner"; - -const JDKVersion = [ - { name: "Java6", value: "50" }, - { name: "Java8", value: "52" }, - { name: "Java9", value: "53" }, - { name: "Java11", value: "55" }, - { name: "Java17", value: "61" }, - { name: "Java21", value: "65" }, -]; +import { JREVersionFormField } from "./jreversion-field"; +import { ServerVersionFormField } from "./serverversion-field"; const shellToolIcons: Record = { [ShellToolType.Behinder]: , @@ -294,54 +286,9 @@ export default function MainConfigCard({ )} /> - ( - - - - {t("common:targetJdkVersion")} - - - {fieldState.error && ( - - )} - - - )} - /> + -
+
)} /> +
; +}>) { + const { t } = useTranslation(["common"]); + const server = useWatch({ control: form.control, name: "server" }); + const serverVersionOptions = getServerVersionOptions(server); + return ( + ( + + + + {t("common:serverVersion")} + + + {fieldState.error && } + + + )} + /> + ); +} + +function getServerVersionOptions(server: string) { + if (server === "TongWeb") { + return [ + { name: "6", value: "6" }, + { name: "7", value: "7" }, + { name: "8", value: "8" }, + ]; + } else if (server === "Jetty") { + return [ + { name: "6", value: "6" }, + { name: "7+", value: "7+" }, + { name: "12", value: "12" }, + ]; + } + return [{ name: "Unknown", value: "Unknown" }]; +} diff --git a/web/app/components/memshell/tabs/shelltype-field.tsx b/web/app/components/memshell/tabs/shelltype-field.tsx index 8773d4a0..a5e983a5 100644 --- a/web/app/components/memshell/tabs/shelltype-field.tsx +++ b/web/app/components/memshell/tabs/shelltype-field.tsx @@ -1,11 +1,6 @@ import { Controller, type UseFormReturn, useWatch } from "react-hook-form"; import { useTranslation } from "react-i18next"; -import { - Field, - FieldContent, - FieldError, - FieldLabel, -} from "@/components/ui/field"; +import { Field, FieldError, FieldLabel } from "@/components/ui/field"; import { Input } from "@/components/ui/input"; import { Select, @@ -26,13 +21,7 @@ export function ShellTypeFormField({ }>) { const { t } = useTranslation(["memshell", "common"]); const shellType = useWatch({ control: form.control, name: "shellType" }); - const server = useWatch({ control: form.control, name: "server" }); - const needSelectServerVersion = - (server === "TongWeb" && shellType.endsWith("Valve")) || - (server === "Jetty" && - (shellType === "Handler" || shellType === "JakartaHandler")); const needUrlPattern = !notNeedUrlPattern(shellType); - const serverVersionOptions = getServerVersionOptions(server); return (
)} /> - ( - - - - {t("common:serverVersion")} - - - {fieldState.error && } - - - )} - />
); } - -function getServerVersionOptions(server: string) { - let serverVersionOptions = [] as { name: string; value: string }[]; - if (server === "TongWeb") { - serverVersionOptions = [ - { name: "6", value: "6" }, - { name: "7", value: "7" }, - { name: "8", value: "8" }, - ]; - } else if (server === "Jetty") { - serverVersionOptions = [ - { name: "6", value: "6" }, - { name: "7+", value: "7+" }, - { name: "12", value: "12" }, - ]; - } - return serverVersionOptions; -}