"use client"; import { useState, useEffect } from "react"; import { getVorlagen, generateFlaechendruck } from "./action"; import { toast, Bounce } from "react-toastify"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "@/components/ui/card"; import { Label } from "@/components/ui/label"; export default function Page() { const [vorlagen, setVorlagen] = useState< { id: number; name: string; printer: string }[] >([]); const [selectedVorlagen, setSelectedVorlagen] = useState([]); const [isUploading, setIsUploading] = useState(false); // Zustand für den Upload // API-Aufruf, um Vorlagen zu laden useEffect(() => { async function fetchData() { try { const data = await getVorlagen(); // Server-Action aufrufen setVorlagen( data.map( (item: { id: number; product_type: string; printer: string }) => ({ id: item.id, name: item.product_type, printer: item.printer, }) ) ); } catch (err) { console.error(err); } } fetchData(); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (selectedVorlagen.length === 0) { return; } const formData = new FormData(); selectedVorlagen.forEach((id) => { formData.append("vorlageIds", id.toString()); }); setIsUploading(true); const res = await generateFlaechendruck(formData); if (res.status) { toast.success(res.message, { position: "bottom-right", autoClose: 5000, hideProgressBar: false, closeOnClick: false, pauseOnHover: true, draggable: true, progress: undefined, theme: "light", transition: Bounce, }); } else { toast.error(res.message, { position: "bottom-right", autoClose: 5000, hideProgressBar: false, closeOnClick: false, pauseOnHover: true, draggable: true, progress: undefined, theme: "light", transition: Bounce, }); } setIsUploading(false); }; return (
<>
Generierung Flächendruck Wählen sie Vorlagen zur Generierung aus. {!isUploading ? (
{vorlagen.map((vorlage) => (
{ const id = parseInt(e.target.value, 10); if (e.target.checked) { setSelectedVorlagen((prev) => [...prev, id]); } else { setSelectedVorlagen((prev) => prev.filter((v) => v !== id) ); } }} className="mt-1" />
))}
) : (
Loading...
)}
{!isUploading ? : null}
); }