"use client" import { zodResolver } from "@hookform/resolvers/zod" import { useForm } from "react-hook-form" import { z } from "zod" import { Button } from "../ui/button" import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from "../ui/form" import { Input } from "../ui/input" import { FilesApi } from 'apps/frontend/src/requests/files'; import { MultipleMachinesSelector } from 'apps/frontend/src/components/forms/machines-selector'; import MultipleSelector, { Option } from 'apps/frontend/src/components/ui/multiple-selector'; import { MachinesApi } from 'apps/frontend/src/requests/machines'; import { Loader } from 'lucide-react'; import React from 'react'; async function getMachines(value: string): Promise { try { const machines = await MachinesApi.get.all(); console.log(machines.length); const filtered = machines.filter((machine) => machine.machineName && machine.machineName.toLowerCase().includes(value.toLowerCase())); console.log(filtered.length); const mapped = filtered.map((machine) => ({ label: machine.machineName, value: machine.id, })); return mapped; } catch (error) { console.error('Erreur lors de la récupération des machines:', error); return []; } } const machinesSchema = z.object({ label: z.string(), value: z.string(), disable: z.boolean().optional(), }); const fileUploadSchema = z.object({ fileName: z.string().min(2, { message: "Le nom du fichier doit faire au moins faire 2 carractères.", }).max(128, { message: "Le nom du fichier ne peux pas faire plus de 128 carractères." }), author: z.string().min(2, { message: "Votre pseudonyme doit faire au moins faire 2 carractères." }).max(64, { message: "Votre pseudonyme ne peux pas faire plus de 64 carractères." }), machinesId: z.array(machinesSchema).min(1, { message: "Vous devez indiqué au moins une machine." }) }) export function FileUploadForm() { const executeUpload = FilesApi.post.upload; const form = useForm>({ resolver: zodResolver(fileUploadSchema), }) function onSubmit(data: z.infer) { console.log(data) } return (
( Nom du fichier Le nom qui sera affiché lors d'une recherche. )} /> ( Associer à des machines { const res = await getMachines(value); return res; }} triggerSearchOnFocus placeholder="Cliquez pour chercher." loadingIndicator={

Chargement...

} emptyIndicator={

Auccun résultats

} />
Machine(s) qui seront associé(s) à ce fichier.
)} /> ( Votre pseudonyme ou nom. Votre nom d'affichage qui sera lié au fichier. )} /> ) }