From e9b0eeb6303aa684e55b33126b4c49233d92cff9 Mon Sep 17 00:00:00 2001 From: dmolinari Date: Wed, 1 Oct 2025 11:59:15 -0300 Subject: [PATCH] Fix to Prod --- .../provinciales/BancasWidget.tsx | 2 +- .../ConcejalesPorSeccionWidget.tsx | 2 +- .../provinciales/ConcejalesTickerWidget.tsx | 32 ++++++++++++++--- .../provinciales/ConcejalesWidget.tsx | 2 +- .../provinciales/DipSenTickerWidget.tsx | 32 ++++++++++++++--- .../DiputadosPorSeccionWidget.tsx | 2 +- .../provinciales/DiputadosTickerWidget.tsx | 35 ++++++++++++++++--- .../provinciales/DiputadosWidget.tsx | 2 +- .../provinciales/MapaBsAsSecciones.tsx | 2 +- .../ResultadosRankingMunicipioWidget.tsx | 20 +++++++++-- .../provinciales/ResumenGeneralWidget.tsx | 15 +++++--- .../SenadoresPorSeccionWidget.tsx | 2 +- .../provinciales/SenadoresTickerWidget.tsx | 35 ++++++++++++++++--- .../provinciales/SenadoresWidget.tsx | 2 +- 14 files changed, 155 insertions(+), 30 deletions(-) diff --git a/Elecciones-Web/frontend/src/features/legislativas/provinciales/BancasWidget.tsx b/Elecciones-Web/frontend/src/features/legislativas/provinciales/BancasWidget.tsx index 49ed197..e2c6ce3 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/provinciales/BancasWidget.tsx +++ b/Elecciones-Web/frontend/src/features/legislativas/provinciales/BancasWidget.tsx @@ -107,7 +107,7 @@ export const BancasWidget = () => { error } = useQuery({ queryKey: ['bancasPorSeccion', selectedSeccion?.value, camaraActiva], - queryFn: () => getBancasPorSeccion(selectedSeccion!.value, camaraActiva), + queryFn: () => getBancasPorSeccion(1,selectedSeccion!.value, camaraActiva), enabled: !!selectedSeccion && camarasDisponibles.includes(camaraActiva), retry: (failureCount, error: any) => { if (error.response?.status === 404) return false; diff --git a/Elecciones-Web/frontend/src/features/legislativas/provinciales/ConcejalesPorSeccionWidget.tsx b/Elecciones-Web/frontend/src/features/legislativas/provinciales/ConcejalesPorSeccionWidget.tsx index bac86bc..1b2e7ca 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/provinciales/ConcejalesPorSeccionWidget.tsx +++ b/Elecciones-Web/frontend/src/features/legislativas/provinciales/ConcejalesPorSeccionWidget.tsx @@ -60,7 +60,7 @@ export const ConcejalesPorSeccionWidget = () => { // Query para obtener los resultados de la sección seleccionada const { data, isLoading: isLoadingResultados } = useQuery({ queryKey: ['resultadosPorSeccion', selectedSeccion?.value, CATEGORIA_ID], - queryFn: () => getResultadosPorSeccion(selectedSeccion!.value, CATEGORIA_ID), + queryFn: () => getResultadosPorSeccion(1, selectedSeccion!.value, CATEGORIA_ID), enabled: !!selectedSeccion, }); diff --git a/Elecciones-Web/frontend/src/features/legislativas/provinciales/ConcejalesTickerWidget.tsx b/Elecciones-Web/frontend/src/features/legislativas/provinciales/ConcejalesTickerWidget.tsx index eff1fed..f3735d9 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/provinciales/ConcejalesTickerWidget.tsx +++ b/Elecciones-Web/frontend/src/features/legislativas/provinciales/ConcejalesTickerWidget.tsx @@ -12,7 +12,7 @@ const CATEGORIA_ID = 7; // ID para Concejales export const ConcejalesTickerWidget = () => { const { data: categorias, isLoading, error } = useQuery({ queryKey: ['resumenProvincial'], - queryFn: getResumenProvincial, + queryFn: () => getResumenProvincial(1), refetchInterval: 30000, }); @@ -33,9 +33,25 @@ export const ConcejalesTickerWidget = () => { if (error || !ConcejalesData) return

Datos de Concejales no disponibles.

; // Lógica para "Otros" - let displayResults: ResultadoTicker[] = ConcejalesData.resultados; + let displayResults: ResultadoTicker[] = ConcejalesData.resultados.map((r: any) => ({ + id: r.id, + nombre: r.nombre, + nombreCorto: r.nombreCorto || r.nombre, + color: r.color, + logoUrl: r.logoUrl, + votos: r.votos, + porcentaje: r.porcentaje, + })); if (ConcejalesData.resultados.length > cantidadAMostrar) { - const topParties = ConcejalesData.resultados.slice(0, cantidadAMostrar - 1); + const topParties = ConcejalesData.resultados.slice(0, cantidadAMostrar - 1).map((r: any) => ({ + id: r.id, + nombre: r.nombre, + nombreCorto: r.nombreCorto || r.nombre, + color: r.color, + logoUrl: r.logoUrl, + votos: r.votos, + porcentaje: r.porcentaje, + })); const otherParties = ConcejalesData.resultados.slice(cantidadAMostrar - 1); const otrosPorcentaje = otherParties.reduce((sum, party) => sum + party.porcentaje, 0); const otrosEntry: ResultadoTicker = { @@ -49,7 +65,15 @@ export const ConcejalesTickerWidget = () => { }; displayResults = [...topParties, otrosEntry]; } else { - displayResults = ConcejalesData.resultados.slice(0, cantidadAMostrar); + displayResults = ConcejalesData.resultados.slice(0, cantidadAMostrar).map((r: any) => ({ + id: r.id, + nombre: r.nombre, + nombreCorto: r.nombreCorto || r.nombre, + color: r.color, + logoUrl: r.logoUrl, + votos: r.votos, + porcentaje: r.porcentaje, + })); } return ( diff --git a/Elecciones-Web/frontend/src/features/legislativas/provinciales/ConcejalesWidget.tsx b/Elecciones-Web/frontend/src/features/legislativas/provinciales/ConcejalesWidget.tsx index 4d8135d..aa6fb63 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/provinciales/ConcejalesWidget.tsx +++ b/Elecciones-Web/frontend/src/features/legislativas/provinciales/ConcejalesWidget.tsx @@ -53,7 +53,7 @@ export const ConcejalesWidget = () => { const { data: resultados, isLoading: isLoadingResultados } = useQuery({ queryKey: ['resultadosPorMunicipio', selectedMunicipio?.value, CATEGORIA_ID], - queryFn: () => getResultadosPorMunicipio(selectedMunicipio!.value, CATEGORIA_ID), + queryFn: () => getResultadosPorMunicipio(1,selectedMunicipio!.value, CATEGORIA_ID), enabled: !!selectedMunicipio, }); diff --git a/Elecciones-Web/frontend/src/features/legislativas/provinciales/DipSenTickerWidget.tsx b/Elecciones-Web/frontend/src/features/legislativas/provinciales/DipSenTickerWidget.tsx index ec1cce3..7120aa8 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/provinciales/DipSenTickerWidget.tsx +++ b/Elecciones-Web/frontend/src/features/legislativas/provinciales/DipSenTickerWidget.tsx @@ -11,7 +11,7 @@ const formatPercent = (num: number) => `${(num || 0).toFixed(2).replace('.', ',' export const DipSenTickerWidget = () => { const { data: categorias, isLoading, error } = useQuery({ queryKey: ['resumenProvincial'], - queryFn: getResumenProvincial, + queryFn: () => getResumenProvincial(1), refetchInterval: 180000, }); @@ -34,10 +34,26 @@ export const DipSenTickerWidget = () => {
{categoriasFiltradas.map(categoria => { - let displayResults: ResultadoTicker[] = categoria.resultados; + let displayResults: ResultadoTicker[] = categoria.resultados.map((r: any) => ({ + id: r.id ?? r.candidatoId ?? '', + nombre: r.nombre ?? r.candidatoNombre ?? '', + nombreCorto: r.nombreCorto ?? r.candidatoNombreCorto ?? r.nombre ?? '', + color: r.color ?? '#888888', + logoUrl: r.logoUrl ?? null, + votos: r.votos ?? 0, + porcentaje: r.porcentaje ?? 0, + })); if (categoria.resultados.length > cantidadAMostrar) { - const topParties = categoria.resultados.slice(0, cantidadAMostrar - 1); + const topParties = categoria.resultados.slice(0, cantidadAMostrar - 1).map((r: any) => ({ + id: r.id ?? r.candidatoId ?? '', + nombre: r.nombre ?? r.candidatoNombre ?? '', + nombreCorto: r.nombreCorto ?? r.candidatoNombreCorto ?? r.nombre ?? '', + color: r.color ?? '#888888', + logoUrl: r.logoUrl ?? null, + votos: r.votos ?? 0, + porcentaje: r.porcentaje ?? 0, + })); const otherParties = categoria.resultados.slice(cantidadAMostrar - 1); const otrosPorcentaje = otherParties.reduce((sum, party) => sum + party.porcentaje, 0); @@ -53,7 +69,15 @@ export const DipSenTickerWidget = () => { displayResults = [...topParties, otrosEntry]; } else { - displayResults = categoria.resultados.slice(0, cantidadAMostrar); + displayResults = categoria.resultados.slice(0, cantidadAMostrar).map((r: any) => ({ + id: r.id ?? r.candidatoId ?? '', + nombre: r.nombre ?? r.candidatoNombre ?? '', + nombreCorto: r.nombreCorto ?? r.candidatoNombreCorto ?? r.nombre ?? '', + color: r.color ?? '#888888', + logoUrl: r.logoUrl ?? null, + votos: r.votos ?? 0, + porcentaje: r.porcentaje ?? 0, + })); } return ( diff --git a/Elecciones-Web/frontend/src/features/legislativas/provinciales/DiputadosPorSeccionWidget.tsx b/Elecciones-Web/frontend/src/features/legislativas/provinciales/DiputadosPorSeccionWidget.tsx index 212e155..fae50a0 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/provinciales/DiputadosPorSeccionWidget.tsx +++ b/Elecciones-Web/frontend/src/features/legislativas/provinciales/DiputadosPorSeccionWidget.tsx @@ -64,7 +64,7 @@ export const DiputadosPorSeccionWidget = () => { const { data, isLoading: isLoadingResultados } = useQuery({ queryKey: ['resultadosPorSeccion', selectedSeccion?.value, CATEGORIA_ID], - queryFn: () => getResultadosPorSeccion(selectedSeccion!.value, CATEGORIA_ID), + queryFn: () => getResultadosPorSeccion(1,selectedSeccion!.value, CATEGORIA_ID), enabled: !!selectedSeccion, }); diff --git a/Elecciones-Web/frontend/src/features/legislativas/provinciales/DiputadosTickerWidget.tsx b/Elecciones-Web/frontend/src/features/legislativas/provinciales/DiputadosTickerWidget.tsx index 0adc644..5272b66 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/provinciales/DiputadosTickerWidget.tsx +++ b/Elecciones-Web/frontend/src/features/legislativas/provinciales/DiputadosTickerWidget.tsx @@ -12,7 +12,7 @@ const CATEGORIA_ID = 6; // ID para Diputados export const DiputadosTickerWidget = () => { const { data: categorias, isLoading, error } = useQuery({ queryKey: ['resumenProvincial'], - queryFn: getResumenProvincial, + queryFn: () => getResumenProvincial(1), refetchInterval: 30000, }); @@ -33,7 +33,15 @@ export const DiputadosTickerWidget = () => { if (error || !diputadosData) return

Datos de Diputados no disponibles.

; // Lógica para "Otros" - let displayResults: ResultadoTicker[] = diputadosData.resultados; + let displayResults: ResultadoTicker[] = diputadosData.resultados.map((r: any) => ({ + id: r.id ?? '', + nombre: r.nombre ?? '', + nombreCorto: r.nombreCorto ?? r.nombre ?? '', + color: r.color ?? '#888888', + logoUrl: r.logoUrl ?? null, + votos: r.votos ?? 0, + porcentaje: r.porcentaje ?? 0, + })); if (diputadosData.resultados.length > cantidadAMostrar) { const topParties = diputadosData.resultados.slice(0, cantidadAMostrar - 1); const otherParties = diputadosData.resultados.slice(cantidadAMostrar - 1); @@ -47,9 +55,28 @@ export const DiputadosTickerWidget = () => { votos: 0, porcentaje: otrosPorcentaje, }; - displayResults = [...topParties, otrosEntry]; + displayResults = [ + ...topParties.map(party => ({ + id: party.agrupacionId ?? '', + nombre: party.nombreCandidato ?? '', + nombreCorto: party.nombreCortoAgrupacion ?? party.nombreCortoAgrupacion ?? '', + color: party.color ?? '#888888', + logoUrl: party.fotoUrl ?? null, + votos: party.votos ?? 0, + porcentaje: party.porcentaje ?? 0, + })), + otrosEntry + ]; } else { - displayResults = diputadosData.resultados.slice(0, cantidadAMostrar); + displayResults = diputadosData.resultados.slice(0, cantidadAMostrar).map((r: any) => ({ + id: r.id ?? '', + nombre: r.nombre ?? '', + nombreCorto: r.nombreCorto ?? r.nombre ?? '', + color: r.color ?? '#888888', + logoUrl: r.logoUrl ?? null, + votos: r.votos ?? 0, + porcentaje: r.porcentaje ?? 0, + })); } return ( diff --git a/Elecciones-Web/frontend/src/features/legislativas/provinciales/DiputadosWidget.tsx b/Elecciones-Web/frontend/src/features/legislativas/provinciales/DiputadosWidget.tsx index cd2540e..b77f0c7 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/provinciales/DiputadosWidget.tsx +++ b/Elecciones-Web/frontend/src/features/legislativas/provinciales/DiputadosWidget.tsx @@ -55,7 +55,7 @@ export const DiputadosWidget = () => { const { data: resultados, isLoading: isLoadingResultados } = useQuery({ queryKey: ['resultadosMunicipio', selectedMunicipio?.value, CATEGORIA_ID], - queryFn: () => getResultadosPorMunicipio(selectedMunicipio!.value, CATEGORIA_ID), + queryFn: () => getResultadosPorMunicipio(1,selectedMunicipio!.value, CATEGORIA_ID), enabled: !!selectedMunicipio, }); diff --git a/Elecciones-Web/frontend/src/features/legislativas/provinciales/MapaBsAsSecciones.tsx b/Elecciones-Web/frontend/src/features/legislativas/provinciales/MapaBsAsSecciones.tsx index d237ba0..9c4bbab 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/provinciales/MapaBsAsSecciones.tsx +++ b/Elecciones-Web/frontend/src/features/legislativas/provinciales/MapaBsAsSecciones.tsx @@ -45,7 +45,7 @@ const DetalleSeccion = ({ seccion, categoriaId, onReset }: { seccion: SeccionGeo const { data: resultadosDetalle, isLoading, error } = useQuery({ queryKey: ['detalleSeccion', seccionId, categoriaId], - queryFn: () => getDetalleSeccion(seccionId!, categoriaId), + queryFn: () => getDetalleSeccion(1,seccionId!, categoriaId), enabled: !!seccionId, }); diff --git a/Elecciones-Web/frontend/src/features/legislativas/provinciales/ResultadosRankingMunicipioWidget.tsx b/Elecciones-Web/frontend/src/features/legislativas/provinciales/ResultadosRankingMunicipioWidget.tsx index 84faea7..9fe6cb7 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/provinciales/ResultadosRankingMunicipioWidget.tsx +++ b/Elecciones-Web/frontend/src/features/legislativas/provinciales/ResultadosRankingMunicipioWidget.tsx @@ -144,8 +144,24 @@ export const ResultadosRankingMunicipioWidget = () => { {municipio.municipioNombre} {rankingData.categorias.flatMap(cat => { const resCategoria = municipio.resultadosPorCategoria[cat.id]; - const primerPuesto = resCategoria?.ranking[0]; - const segundoPuesto = resCategoria?.ranking[1]; + const primerPuestoRaw = resCategoria?.ranking[0]; + const segundoPuestoRaw = resCategoria?.ranking[1]; + + // Asegurarse que los objetos tengan la propiedad 'votos' + const primerPuesto = primerPuestoRaw + ? { + nombreCorto: primerPuestoRaw.nombreCorto, + porcentaje: primerPuestoRaw.porcentaje, + votos: 'votos' in primerPuestoRaw ? (primerPuestoRaw as any).votos : 0 + } + : undefined; + const segundoPuesto = segundoPuestoRaw + ? { + nombreCorto: segundoPuestoRaw.nombreCorto, + porcentaje: segundoPuestoRaw.porcentaje, + votos: 'votos' in segundoPuestoRaw ? (segundoPuestoRaw as any).votos : 0 + } + : undefined; return [ // --- Celdas para el 1° Puesto --- diff --git a/Elecciones-Web/frontend/src/features/legislativas/provinciales/ResumenGeneralWidget.tsx b/Elecciones-Web/frontend/src/features/legislativas/provinciales/ResumenGeneralWidget.tsx index 3cfd397..e2aab36 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/provinciales/ResumenGeneralWidget.tsx +++ b/Elecciones-Web/frontend/src/features/legislativas/provinciales/ResumenGeneralWidget.tsx @@ -11,7 +11,7 @@ const formatPercent = (num: number) => `${(num || 0).toFixed(2).replace('.', ',' export const ResumenGeneralWidget = () => { const { data: categorias, isLoading, error } = useQuery({ queryKey: ['resumenProvincial'], - queryFn: getResumenProvincial, + queryFn: () => getResumenProvincial(1), refetchInterval: 180000, }); @@ -33,12 +33,19 @@ export const ResumenGeneralWidget = () => { legislativeCategories.forEach(category => { category.resultados.forEach(party => { - const existing = partyMap.get(party.id); + const existing = partyMap.get(party.agrupacionId); if (existing) { existing.votos += party.votos; } else { - // Clonamos el objeto para no modificar el original - partyMap.set(party.id, { ...party }); + // Clonamos el objeto para no modificar el original y adaptamos las propiedades + partyMap.set(party.agrupacionId, { + id: party.agrupacionId, + nombre: party.nombreAgrupacion, + nombreCorto: party.nombreCortoAgrupacion ?? party.nombreAgrupacion, + logoUrl: party.fotoUrl, + color: party.color, + votos: party.votos, + }); } }); }); diff --git a/Elecciones-Web/frontend/src/features/legislativas/provinciales/SenadoresPorSeccionWidget.tsx b/Elecciones-Web/frontend/src/features/legislativas/provinciales/SenadoresPorSeccionWidget.tsx index f51f1fa..a600c91 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/provinciales/SenadoresPorSeccionWidget.tsx +++ b/Elecciones-Web/frontend/src/features/legislativas/provinciales/SenadoresPorSeccionWidget.tsx @@ -64,7 +64,7 @@ export const SenadoresPorSeccionWidget = () => { const { data, isLoading: isLoadingResultados } = useQuery({ queryKey: ['resultadosPorSeccion', selectedSeccion?.value, CATEGORIA_ID], - queryFn: () => getResultadosPorSeccion(selectedSeccion!.value, CATEGORIA_ID), + queryFn: () => getResultadosPorSeccion(1,selectedSeccion!.value, CATEGORIA_ID), enabled: !!selectedSeccion, }); diff --git a/Elecciones-Web/frontend/src/features/legislativas/provinciales/SenadoresTickerWidget.tsx b/Elecciones-Web/frontend/src/features/legislativas/provinciales/SenadoresTickerWidget.tsx index a881f87..7173ec3 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/provinciales/SenadoresTickerWidget.tsx +++ b/Elecciones-Web/frontend/src/features/legislativas/provinciales/SenadoresTickerWidget.tsx @@ -12,7 +12,7 @@ const CATEGORIA_ID = 5; // ID para Senadores export const SenadoresTickerWidget = () => { const { data: categorias, isLoading, error } = useQuery({ queryKey: ['resumenProvincial'], - queryFn: getResumenProvincial, + queryFn: () => getResumenProvincial(1), refetchInterval: 30000, }); @@ -33,7 +33,15 @@ export const SenadoresTickerWidget = () => { if (error || !senadoresData) return

Datos de Senadores no disponibles.

; // Lógica para "Otros" - let displayResults: ResultadoTicker[] = senadoresData.resultados; + let displayResults: ResultadoTicker[] = senadoresData.resultados.map((r: any) => ({ + id: r.id, + nombre: r.nombre, + nombreCorto: r.nombreCorto ?? r.nombre, + color: r.color ?? '#888888', + logoUrl: r.logoUrl ?? null, + votos: r.votos ?? 0, + porcentaje: r.porcentaje ?? 0, + })); if (senadoresData.resultados.length > cantidadAMostrar) { const topParties = senadoresData.resultados.slice(0, cantidadAMostrar - 1); const otherParties = senadoresData.resultados.slice(cantidadAMostrar - 1); @@ -47,9 +55,28 @@ export const SenadoresTickerWidget = () => { votos: 0, porcentaje: otrosPorcentaje, }; - displayResults = [...topParties, otrosEntry]; + displayResults = [ + ...topParties.map((r: any) => ({ + id: r.id, + nombre: r.nombre, + nombreCorto: r.nombreCorto ?? r.nombre, + color: r.color ?? '#888888', + logoUrl: r.logoUrl ?? null, + votos: r.votos ?? 0, + porcentaje: r.porcentaje ?? 0, + })), + otrosEntry + ]; } else { - displayResults = senadoresData.resultados.slice(0, cantidadAMostrar); + displayResults = senadoresData.resultados.slice(0, cantidadAMostrar).map((r: any) => ({ + id: r.id, + nombre: r.nombre, + nombreCorto: r.nombreCorto ?? r.nombre, + color: r.color ?? '#888888', + logoUrl: r.logoUrl ?? null, + votos: r.votos ?? 0, + porcentaje: r.porcentaje ?? 0, + })); } return ( diff --git a/Elecciones-Web/frontend/src/features/legislativas/provinciales/SenadoresWidget.tsx b/Elecciones-Web/frontend/src/features/legislativas/provinciales/SenadoresWidget.tsx index 0969cd7..3a0477c 100644 --- a/Elecciones-Web/frontend/src/features/legislativas/provinciales/SenadoresWidget.tsx +++ b/Elecciones-Web/frontend/src/features/legislativas/provinciales/SenadoresWidget.tsx @@ -54,7 +54,7 @@ export const SenadoresWidget = () => { const { data: resultados, isLoading: isLoadingResultados } = useQuery({ queryKey: ['resultadosMunicipio', selectedMunicipio?.value, CATEGORIA_ID], - queryFn: () => getResultadosPorMunicipio(selectedMunicipio!.value, CATEGORIA_ID), + queryFn: () => getResultadosPorMunicipio(1,selectedMunicipio!.value, CATEGORIA_ID), enabled: !!selectedMunicipio, });