diff --git a/Elecciones-Web/frontend/src/features/legislativas/nacionales/HomeCarouselProvincialWidget.tsx b/Elecciones-Web/frontend/src/features/legislativas/nacionales/HomeCarouselProvincialWidget.tsx index f2aaf4e..3c10ca5 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/nacionales/HomeCarouselProvincialWidget.tsx +++ b/Elecciones-Web/frontend/src/features/legislativas/nacionales/HomeCarouselProvincialWidget.tsx @@ -18,7 +18,7 @@ import styles from './HomeCarouselWidget.module.css'; interface Props { eleccionId: number; - categoriaId: number; + categoriaId: number | string; titulo: string; } @@ -27,11 +27,8 @@ interface OptionType { label: string; } -// --- LÓGICA DE FILTRADO --- -// 1. Definimos los IDs de distrito de las provincias que renuevan senadores. const PROVINCIAS_QUE_RENUEVAN_SENADORES = new Set(['01', '06', '08', '15', '16', '17', '22', '24']); const CATEGORIA_SENADORES = 2; -// --- FIN LÓGICA DE FILTRADO --- const formatPercent = (num: number | null | undefined) => `${(num || 0).toFixed(2).replace('.', ',')}%`; const formatNumber = (num: number) => num.toLocaleString('es-AR'); @@ -51,7 +48,6 @@ const formatDateTime = (dateString: string | undefined | null) => { }; export const HomeCarouselProvincialWidget = ({ eleccionId, categoriaId, titulo }: Props) => { - // 2. Estado inicial nulo para que el useEffect lo establezca dinámicamente. const [selectedProvince, setSelectedProvince] = useState(null); const { data: provincias = [], isLoading: isLoadingProvincias } = useQuery({ @@ -59,24 +55,21 @@ export const HomeCarouselProvincialWidget = ({ eleccionId, categoriaId, titulo } queryFn: getProvincias, }); - // 3. Usamos useMemo para filtrar las opciones solo cuando sea necesario. const provinceOptions: OptionType[] = useMemo(() => { const allOptions = provincias.map(p => ({ value: p.id, label: p.nombre })); - if (categoriaId === CATEGORIA_SENADORES) { + + if (Number(categoriaId) === CATEGORIA_SENADORES) { return allOptions.filter(opt => PROVINCIAS_QUE_RENUEVAN_SENADORES.has(opt.value)); } return allOptions; }, [provincias, categoriaId]); - // 4. useEffect para establecer y validar la provincia por defecto. useEffect(() => { if (provinceOptions.length > 0) { - // Si no hay nada seleccionado, establece el default. if (!selectedProvince) { - const defaultOption = provinceOptions.find(opt => opt.value === '01'); // CABA - setSelectedProvince(defaultOption || provinceOptions[0]); // Si CABA no está, usa la primera opción. + const defaultOption = provinceOptions.find(opt => opt.value === '01'); + setSelectedProvince(defaultOption || provinceOptions[0]); } else { - // Si ya hay algo seleccionado, verifica que siga siendo válido. Si no, lo resetea. const isSelectedStillValid = provinceOptions.some(opt => opt.value === selectedProvince.value); if (!isSelectedStillValid) { setSelectedProvince(provinceOptions[0]); @@ -87,8 +80,8 @@ export const HomeCarouselProvincialWidget = ({ eleccionId, categoriaId, titulo } const { data, isLoading, error } = useQuery({ queryKey: ['homeResumen', eleccionId, selectedProvince?.value, categoriaId], - queryFn: () => getHomeResumen(eleccionId, selectedProvince!.value, categoriaId), - enabled: !!selectedProvince, // La consulta solo se ejecuta si hay una provincia seleccionada + queryFn: () => getHomeResumen(eleccionId, selectedProvince!.value, Number(categoriaId)), + enabled: !!selectedProvince, refetchInterval: 30000, });