// src/components/widgets/ResumenNacionalWidget.tsx import { useState, useMemo } from 'react'; import { useQuery } from '@tanstack/react-query'; import Select from 'react-select'; import { getResumenNacionalPorProvincia } from '../../../apiService'; import styles from './ResumenNacionalWidget.module.css'; const ELECCION_ID = 2; // Exclusivo para elecciones nacionales const CATEGORIAS_NACIONALES = [ { value: 3, label: 'Diputados Nacionales' }, { value: 2, label: 'Senadores Nacionales' }, ]; // 1. Mapa para definir el orden y número de cada provincia según el PDF const PROVINCE_ORDER_MAP: Record = { '02': 1, // Buenos Aires '03': 2, // Catamarca '06': 3, // Chaco '07': 4, // Chubut '04': 5, // Córdoba '05': 6, // Corrientes '08': 7, // Entre Ríos '09': 8, // Formosa '10': 9, // Jujuy '11': 10, // La Pampa '12': 11, // La Rioja '13': 12, // Mendoza '14': 13, // Misiones '15': 14, // Neuquén '16': 15, // Río Negro '17': 16, // Salta '18': 17, // San Juan '19': 18, // San Luis '20': 19, // Santa Cruz '21': 20, // Santa Fe '22': 21, // Santiago del Estero '23': 22, // Tierra del Fuego '24': 23, // Tucumán '01': 24, // CABA }; export const ResumenNacionalWidget = () => { const [categoria, setCategoria] = useState(CATEGORIAS_NACIONALES[0]); const { data, isLoading, error } = useQuery({ queryKey: ['resumenNacional', ELECCION_ID, categoria.value], queryFn: () => getResumenNacionalPorProvincia(ELECCION_ID, categoria.value), refetchInterval: 60000, }); // 2. Ordenar los datos de la API usando el mapa de ordenamiento const sortedData = useMemo(() => { if (!data) return []; return [...data].sort((a, b) => { const orderA = PROVINCE_ORDER_MAP[a.provinciaId] ?? 99; const orderB = PROVINCE_ORDER_MAP[b.provinciaId] ?? 99; return orderA - orderB; }); }, [data]); const formatPercent = (num: number) => `${num.toFixed(2).replace('.', ',')}%`; return (

{categoria.label}