import type React from "react"; import { useEffect, useState } from "react"; import type { MeterInput } from "../../api/meters"; import { fetchConcentrators, type Concentrator } from "../../api/concentrators"; type Props = { editingId: string | null; selectedProject?: string; form: MeterInput; setForm: React.Dispatch>; errors: Record; setErrors: React.Dispatch>>; onClose: () => void; onSave: () => void | Promise; }; export default function MetersModal({ editingId, selectedProject, form, setForm, errors, setErrors, onClose, onSave, }: Props) { const title = editingId ? "Editar Medidor" : "Agregar Medidor"; const [concentrators, setConcentrators] = useState([]); const [loadingConcentrators, setLoadingConcentrators] = useState(true); const isPruebaProject = selectedProject === "PRUEBA"; // Load concentrators for the dropdown useEffect(() => { const load = async () => { try { const data = await fetchConcentrators(); setConcentrators(data); } catch (error) { console.error("Error loading concentrators:", error); } finally { setLoadingConcentrators(false); } }; load(); }, []); return (

{title}

{/* FORM */}

Información del Medidor

{ setForm({ ...form, serialNumber: e.target.value }); if (errors["serialNumber"]) setErrors({ ...errors, serialNumber: false }); }} required /> {errors["serialNumber"] && (

Campo requerido

)}
setForm({ ...form, meterId: e.target.value || undefined })} />
{ setForm({ ...form, name: e.target.value }); if (errors["name"]) setErrors({ ...errors, name: false }); }} required /> {errors["name"] &&

Campo requerido

}
{errors["concentratorId"] && (

Selecciona un concentrador

)}
setForm({ ...form, location: e.target.value || undefined })} />
setForm({ ...form, installationDate: e.target.value ? new Date(e.target.value).toISOString() : undefined, }) } />
{isPruebaProject && (

Información Técnica (Proyecto PRUEBA)

setForm({ ...form, protocol: e.target.value || undefined })} />
setForm({ ...form, voltage: e.target.value ? parseFloat(e.target.value) : undefined })} />
setForm({ ...form, signal: e.target.value ? parseInt(e.target.value) : undefined })} />
setForm({ ...form, currentFlow: e.target.value ? parseFloat(e.target.value) : undefined })} />
setForm({ ...form, totalFlowReverse: e.target.value ? parseFloat(e.target.value) : undefined })} />
setForm({ ...form, manufacturer: e.target.value || undefined })} />
setForm({ ...form, latitude: e.target.value ? parseFloat(e.target.value) : undefined })} />
setForm({ ...form, longitude: e.target.value ? parseFloat(e.target.value) : undefined })} />
)} {/* ACTIONS */}
); }