From cc1ce5f413b292535d066c7e71724e69e2e5ee65 Mon Sep 17 00:00:00 2001 From: dengqichen Date: Fri, 27 Dec 2024 18:56:03 +0800 Subject: [PATCH] 1 --- frontend/src/components/ui/dialog.tsx | 120 ++++++++++++++++++ frontend/src/components/ui/switch.tsx | 27 ++++ .../components/DeploymentFormModal.tsx | 60 +++++++++ 3 files changed, 207 insertions(+) create mode 100644 frontend/src/components/ui/dialog.tsx create mode 100644 frontend/src/components/ui/switch.tsx create mode 100644 frontend/src/pages/Dashboard/components/DeploymentFormModal.tsx diff --git a/frontend/src/components/ui/dialog.tsx b/frontend/src/components/ui/dialog.tsx new file mode 100644 index 00000000..9dbeaa09 --- /dev/null +++ b/frontend/src/components/ui/dialog.tsx @@ -0,0 +1,120 @@ +import * as React from "react" +import * as DialogPrimitive from "@radix-ui/react-dialog" +import { X } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Dialog = DialogPrimitive.Root + +const DialogTrigger = DialogPrimitive.Trigger + +const DialogPortal = DialogPrimitive.Portal + +const DialogClose = DialogPrimitive.Close + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)) +DialogContent.displayName = DialogPrimitive.Content.displayName + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogHeader.displayName = "DialogHeader" + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogFooter.displayName = "DialogFooter" + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogTitle.displayName = DialogPrimitive.Title.displayName + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogDescription.displayName = DialogPrimitive.Description.displayName + +export { + Dialog, + DialogPortal, + DialogOverlay, + DialogTrigger, + DialogClose, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +} diff --git a/frontend/src/components/ui/switch.tsx b/frontend/src/components/ui/switch.tsx new file mode 100644 index 00000000..455c23b6 --- /dev/null +++ b/frontend/src/components/ui/switch.tsx @@ -0,0 +1,27 @@ +import * as React from "react" +import * as SwitchPrimitives from "@radix-ui/react-switch" + +import { cn } from "@/lib/utils" + +const Switch = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)) +Switch.displayName = SwitchPrimitives.Root.displayName + +export { Switch } diff --git a/frontend/src/pages/Dashboard/components/DeploymentFormModal.tsx b/frontend/src/pages/Dashboard/components/DeploymentFormModal.tsx new file mode 100644 index 00000000..a17fc6cd --- /dev/null +++ b/frontend/src/pages/Dashboard/components/DeploymentFormModal.tsx @@ -0,0 +1,60 @@ +import React from 'react'; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogFooter, +} from "@/components/ui/dialog"; +import { Button } from "@/components/ui/button"; +import { BetaSchemaForm } from '@ant-design/pro-form'; +import { convertJsonSchemaToColumns } from '@/utils/jsonSchemaUtils'; + +interface DeploymentFormModalProps { + open: boolean; + onClose: () => void; + formSchema: any; +} + +const DeploymentFormModal: React.FC = ({ + open, + onClose, + formSchema +}) => { + const handleSubmit = async (values: any) => { + console.log('Form values:', values); + // TODO: 处理表单提交 + onClose(); + }; + + const columns = convertJsonSchemaToColumns(formSchema); + console.log('Form schema:', formSchema); + console.log('Generated columns:', columns); + + return ( + + + + 部署前表单 + +
+ +
+ + + + +
+
+ ); +}; + +export default DeploymentFormModal; \ No newline at end of file