import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog'; import React, { FormEvent, ReactNode, useState } from 'react'; import { Form, FormField, FormFields } from '@/components/ui/form'; import { Button } from '@/components/ui/button'; import { useForm, usePage } from '@inertiajs/react'; import { LoaderCircleIcon } from 'lucide-react'; import { Label } from '@/components/ui/label'; import { Input } from '@/components/ui/input'; import InputError from '@/components/ui/input-error'; import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Worker } from '@/types/worker'; import { SharedData } from '@/types'; import { Server } from '@/types/server'; import { Switch } from '@/components/ui/switch'; export default function WorkerForm({ serverId, worker, children }: { serverId: number; worker?: Worker; children: ReactNode }) { const page = usePage(); const [open, setOpen] = useState(false); const form = useForm<{ command: string; user: string; auto_start: boolean; auto_restart: boolean; numprocs: string; }>({ command: worker?.command || '', user: worker?.user || '', auto_start: worker?.auto_start || true, auto_restart: worker?.auto_restart || true, numprocs: worker?.numprocs.toString() || '', }); const submit = (e: FormEvent) => { e.preventDefault(); if (worker) { form.put(route('workers.update', { server: serverId, worker: worker.id }), { onSuccess: () => { setOpen(false); form.reset(); }, }); return; } form.post(route('workers.store', { server: serverId }), { onSuccess: () => { setOpen(false); form.reset(); }, }); }; return ( {children} {worker ? 'Edit' : 'Create'} worker {worker ? 'Edit' : 'Create new'} worker
{/*command*/} form.setData('command', e.target.value)} /> {/*user*/} {/*numprocs*/} form.setData('numprocs', e.target.value)} placeholder="1" />
{/*auto start*/}
form.setData('auto_start', value)} />
{/*auto restart*/}
form.setData('auto_restart', value)} />
); }