// src/components/TickerWidget.tsx import { useState, useEffect } from 'react'; import { getResumenProvincial } from '../apiService'; import type { ResumenProvincial } from '../types'; import './TickerWidget.css'; const formatPercent = (num: number) => `${num.toFixed(2).replace('.', ',')}%`; const NIVO_COLORS = [ "#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf" ]; export const TickerWidget = () => { const [data, setData] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { const fetchData = async () => { try { const result = await getResumenProvincial(); setData(result); } catch (error) { console.error("Error cargando resumen provincial:", error); } finally { setLoading(false); } }; fetchData(); // Carga inicial const intervalId = setInterval(fetchData, 30000); // Actualiza cada 30 segundos return () => clearInterval(intervalId); // Limpia el intervalo al desmontar el componente }, []); if (loading) { return
Cargando resultados provinciales...
; } if (!data) { return
No se pudieron cargar los datos.
; } return (

{data.provinciaNombre}

Mesas Escrutadas: {formatPercent(data.porcentajeEscrutado)} Participación: {formatPercent(data.porcentajeParticipacion)}
{data.resultados.slice(0, 3).map((partido, index) => (
{/* <-- CAMBIO AQUƍ */}
{partido.nombre} {formatPercent(partido.porcentaje)}
))}
); };