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 { CronJob } from '@/types/cronjob'; import { SharedData } from '@/types'; import { Server } from '@/types/server'; export default function CronJobForm({ serverId, cronJob, children }: { serverId: number; cronJob?: CronJob; children: ReactNode }) { const page = usePage(); const [open, setOpen] = useState(false); const form = useForm<{ command: string; user: string; frequency: string; custom: string; }>({ command: cronJob?.command || '', user: cronJob?.user || '', frequency: cronJob ? (page.props.configs.cronjob_intervals[cronJob.frequency] ? cronJob.frequency : 'custom') : '', custom: cronJob?.frequency || '', }); const submit = (e: FormEvent) => { e.preventDefault(); if (cronJob) { form.put(route('cronjobs.update', { server: serverId, cronJob: cronJob.id }), { onSuccess: () => { setOpen(false); form.reset(); }, }); return; } form.post(route('cronjobs.store', { server: serverId }), { onSuccess: () => { setOpen(false); form.reset(); }, }); }; return ( {children} {cronJob ? 'Edit' : 'Create'} cron job {cronJob ? 'Edit' : 'Create new'} cron job
form.setData('command', e.target.value)} /> {/*frequency*/} {/*custom frequency*/} {form.data.frequency === 'custom' && ( form.setData('custom', e.target.value)} placeholder="* * * * *" /> )} {/*user*/}
); }