// src/components/TelegramaWidget.tsx import { useState, useEffect } from 'react'; import { getSecciones, getMunicipiosPorSeccion, getCircuitosPorMunicipio, getEstablecimientosPorCircuito, getMesasPorEstablecimiento, getTelegramaPorId } from '../apiService'; import type { TelegramaData, CatalogoItem } from '../types/types'; import './TelegramaWidget.css'; export const TelegramaWidget = () => { // Estados para los filtros geográficos const [secciones, setSecciones] = useState([]); const [municipios, setMunicipios] = useState([]); const [circuitos, setCircuitos] = useState([]); const [establecimientos, setEstablecimientos] = useState([]); const [mesas, setMesas] = useState([]); // Estados para los valores seleccionados const [selectedSeccion, setSelectedSeccion] = useState(''); const [selectedMunicipio, setSelectedMunicipio] = useState(''); const [selectedCircuito, setSelectedCircuito] = useState(''); const [selectedEstablecimiento, setSelectedEstablecimiento] = useState(''); const [selectedMesa, setSelectedMesa] = useState(''); // Estados para la visualización del telegrama const [telegrama, setTelegrama] = useState(null); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); // Cargar secciones iniciales useEffect(() => { getSecciones().then(setSecciones); }, []); // Cargar municipios cuando cambia la sección useEffect(() => { if (selectedSeccion) { setMunicipios([]); setCircuitos([]); setEstablecimientos([]); setMesas([]); setSelectedMunicipio(''); setSelectedCircuito(''); setSelectedEstablecimiento(''); setSelectedMesa(''); getMunicipiosPorSeccion(selectedSeccion).then(setMunicipios); } }, [selectedSeccion]); // Y así sucesivamente para los demás filtros... useEffect(() => { if (selectedMunicipio) { setCircuitos([]); setEstablecimientos([]); setMesas([]); setSelectedCircuito(''); setSelectedEstablecimiento(''); setSelectedMesa(''); getCircuitosPorMunicipio(selectedMunicipio).then(setCircuitos); } }, [selectedMunicipio]); useEffect(() => { if (selectedCircuito) { setEstablecimientos([]); setMesas([]); setSelectedEstablecimiento(''); setSelectedMesa(''); getEstablecimientosPorCircuito(selectedCircuito).then(setEstablecimientos); } }, [selectedCircuito]); useEffect(() => { if (selectedEstablecimiento) { setMesas([]); setSelectedMesa(''); getMesasPorEstablecimiento(selectedEstablecimiento).then(setMesas); } }, [selectedEstablecimiento]); // Buscar el telegrama cuando se selecciona una mesa useEffect(() => { if (selectedMesa) { setLoading(true); setError(null); setTelegrama(null); getTelegramaPorId(selectedMesa) .then(setTelegrama) .catch(() => setError(`No se encontró el telegrama para la mesa seleccionada.`)) .finally(() => setLoading(false)); } }, [selectedMesa]); return (

Consulta de Telegramas por Ubicación

{loading &&
} {error &&

{error}

} {telegrama && (
{`Telegrama
{/* Metadata (opcional, se puede añadir aquí si se desea) */}
)} {!loading && !telegrama && !error &&

Seleccione una mesa para visualizar el telegrama.

}
); };