Connect with us

POLITICA

Paradoja mileísta: control político y ruido económico

Published

on


El atributo más característico de Javier Milei probablemente sea, desde siempre, su capacidad para llamar la atención. Y para sorprender. También, para protagonizar paradojas. Lo ratifica con solvencia por estos días.

El economista antisistema, que llegó al poder con un discurso fuertemente antipolítico, inicia el tercer y penúltimo año de mandato presidencial con un amplio control sobre la política y, como contrapartida, con sonoros ruidos en la economía.

Advertisement

Se trata de una paradoja que renueva la gran pregunta que lo persigue desde que accedió a la Presidencia: ¿es sustentable política y económicamente ese proyecto? Aquí la sorpresa. Hasta ahora, mucho más de lo que una gran mayoría pronosticaba. Pero el horizonte podría mostrarse más complejo.

La cómoda aprobación en las dos cámaras del Congreso de la ambiciosa reforma laboral, que este viernes se espera sea sancionada por el Senado, es una forma de consagración rotunda, aunque parcial todavía, del improbable proceso de construcción de poder iniciado hace apenas cinco años y del predominio que ejerce sobre la superestructura política.

La escasa e ineficaz resistencia parlamentaria y social por parte de sus contradictores es el reflejo del control político que ha logrado el proyecto mileísta, cristalizado tras el triunfo electoral y la debacle perokirchnerista en las elecciones de octubre pasado, así como del vacío que sigue absorbiendo a la oposición, acelerado por esos comicios.

Advertisement

También es el producto de un cambio de actitud de la Casa Rosada, desde una posición de mayor poder, que la muestra dispuesta a negociar y realizar concesiones para conseguir sus propósitos, como en los dos primeros años no había exhibido. Una cosa lleva a la otra.

“Además, reconózcanlo, ha habido una mayor disciplina y orden de los legisladores propios”, señalan (o demandan) con razón desde el entorno del presidente de la Cámara de Diputados, Martín Menem. El brazo ejecutor de Karina Milei en el Congreso parece haber logrado que se haga carne el mandato de votar los proyectos de ley oficialistas afirmativamente con o sin lectura previa (y mucho menos, con discusión) de su contenido. La armada Brancaleone original empieza a parecerse a una ordenada fuerza regular.

Tan abrupto ha sido el cambio que el protagonismo de los escándalos parlamentarios se lo cedieron al kirchnerismo, que parece haberlos recuperado con gusto, como lo muestra el más reciente que interpretó la diputada Florencia Carignano, con su infructuoso intento por desenchufar micrófonos para interrumpir el debate sobre la reforma laboral.

Advertisement
El momento en que la diputada Carignano desenchufa micrófonos para interrumpir la sesión

La apertura de sesiones ordinarias que presidirá Milei el domingo será una gran escenificación de esa mutación ocurrida en apenas dos años. Del “nido de ratas” al que le daba la espalda y le espetaba el Presidente en los primeros dos años pasará a ser reconocido como “el Congreso más reformista de la historia”. Las hipérboles son eternas.

Así, los anuncios de proyectos de ley que hará Milei mantendrán la marca de la grandilocuencia que lo caracteriza y de la que se enorgullece, aunque también procurarán ser efectivos para no perder la senda victoriosa.

Al respecto, entre los principales integrantes de la mesa política se da por hecho que no se presentará un proyecto integral de reforma tributaria sino un paquete de cambios parciales para facilitar su sanción sin tener que dejar retazos en las aduanas de los gobernadores. La política transaccional seguirá dominando, pero se intentará que sea menos onerosa o que no se note tanto.

Advertisement

La nueva realidad del predominio político mileísta se puede medir para mostrar. En la dimensión de la superestructura política sobresale el resultado de las votaciones en el Congreso donde ha logrado pasar sin mayores sobresaltos las iniciativas que presentó para ser tratada en el período de sesiones extraordinarias que concluye este sábado.

Ese logro ha sido una quimera inalcanzable para otros gobiernos sin mayoría en ninguna de las dos cámaras. Y parecían inimaginables para una fuerza política que cuenta con solo un tercio de los senadores y el 36% de los diputados nacionales. La misma que hace apenas dos años y tres meses tenía solo dos diputados nacionales, los mismos que hoy son presidente y vicepresidenta de la Nación. Y hasta se dan el lujo de estar irremediablemente enfrentados, sin perder nunca la oportunidad de hacerlo público.

El vertiginoso pase de una realidad a otra se grafica con cifras. En los dos primeros años de su mandato Milei “sólo consiguió que el 18% de los diputados nunca le voten en contra en votaciones de alta relevancia política (22 votaciones) en Diputados”, mientras que durante las recientes sesiones extraordinarias (hasta ayer) “el 52% nunca le votó en contra en las votaciones en general”, según un relevamiento de la consultora La Sastrería.

Advertisement

En el Senado, donde han solido naufragar consistentemente los proyectos más ambiciosos de los gobiernos no peronistas desde la recuperación de la democracia, las cifras son similares. En la primera mitad del mandato el Gobierno “solo consiguió que 7 de 72 (el 10%) nunca le voten en contra en votaciones de alta relevancia política (23 votaciones)”, mientras que en el arranque de la segunda mitad “logró que 42 de 72 (el 58%) nunca le voten en contra en las votaciones en general”. El cambio es radical.

En el plano simbólico, aunque también práctico, se destaca el dispar acatamiento al paro general de la CGT y la magra manifestación pública realizados la semana pasada contra la reforma laboral. Todo lo cual se magnificará este viernes con la ausencia cegetista frente al Congreso, cuando se sancionaría esa ley que echa por tierra con conquistas hasta ayer inentregables para el peronismo, y la reducción del plan de lucha sindical al cuestionamiento de esa reforma en el plano judicial. Al menos, por ahora. Si Saúl Ubaldini y Raúl Alfonsín resucitaran, no lo creerían.

El pasado sigue siendo el gran soporte del Gobierno, que explota con éxito su máxima de estar cambiando “lo que fracasó”. Aunque el presente de la oposición se encarga de ayudarlo.

Advertisement

La reciente imagen del cristinista Juan Grabois, de visita al dictador cubano Miguel Díaz-Canel, en momentos en que el viejo régimen comunista pasa por sus horas más sombrías, compite con la ayuda dada al imputado presidente de la AFA por Axel Kicillof.

Kicillof y Chiqui Tapia, el 6 de diciembre, al firmar un convenio para que la AFA utilice el Estadio Único de La Plata «Diego Armando Maradona»Prensa PBA

El gobierno bonaerense apuró la aprobación de la radicación en ese distrito de la entidad que rige el fútbol para que pueda eludir controles de la Inspección General de Justicia de la Nación. Justo cuando el hit en los estadios de fútbol se ensaña con la progenitora de Claudio “Chiqui” Tapia. Ambos aspiran a ser los candidatos a Presidente de ese espacio.

A ellos se sumó el verborrágico mandatario riojano, Ricardo Quintela, quien con singular desparpajo hizo gala de golpismo, al afirmar que “este gobierno no puede llegar al 10 de diciembre de 2027”. Para que no quedaran dudas se remitió a 2001 y que no había que temer pagar un precio como el que costó ese desastre. El fiscal Carlos Stornelli no dudó en denunciarlo por “incitación a la violencia” y el Partido Justicialista acusó al fiscal de persecución política. Más asistencia para Milei, difícil. El Gobierno hace silencio. Sigue al pie de la letra el consejo napoleónico de no interrumpir a los adversarios mientras se equivocan.

Advertisement

La paz mileísta, sin embargo, podría sufrir algunos sobresaltos. En lo político, acaba de lanzar una campaña contra la presión impositiva de las provincias y los municipios en momentos en que se registra una caída en la recaudación por la disminución de la actividad y un aumento de la demanda salarial por parte de los trabajadores públicos de esos distritos. Varios gobernadores e intendentes aliados o moderados empiezan a levantar la guardia. Lo ven como un anticipo del intento libertario de quedarse con sus distritos en 2027.

En ese contexto, el anuncio de medidas de fuerza de los gremios docentes en el comienzo del ciclo lectivo no sería un hecho aislado. El amotinamiento policial en demanda de mejoras salarias que protagonizó recientemente la policía de Santa Fe es un antecedente que inquieta. Docentes y trabajadores de la salud de esa provincia, pero también de varias otras, acumulan demandas sin respuesta.

A esto se suma la dispar y compleja situación económica en el sector privado, a pesar del auspicioso crecimiento del 1,8% que se registró en diciembre de 2025 y que opera como plataforma de lanzamiento para este año. La heterogeneidad es demasiado grande y las principales caídas se dan en los sectores que más mano de obra absorben.

Advertisement

Los últimos datos oficiales, que corresponden a noviembre del año pasado, muestran que sólo ese mes se cerraron 892 empresas, a razón de 1,25 por hora, según releva el Monitor mensual de empresas de la fundación Fundar. Ese número es consecuente con una inquietante tendencia: en once meses de 2025 cerraron 10.123 empresas y desde que empezó el gobierno de Milei dejaron de existir 21.930 compañías. Y no es que haya habido un boom de fusiones.

Lo notable, en ese plano, es que no sólo cayeron empresas o se destruyeron empleos en sectores no competitivos o improductivos, como se considera el resonante caso de Fate. “En el sector de la energía y de la tecnología también se han destruido empleos”, señala el economista Lorenzo Sigaut Gravina, de la consultora Equilibra.

Al mismo tiempo, el consuelo o refugio que ofrecía para las estadísticas sobre desempleo el aumento de los cuentapropistas, trabajadores informales y de plataformas parece estar encontrando un techo. Sigaut Gravina coincide con Daniel Schteingart, de Fundar, en que la baja de los precios en los servicios de algunas aplicaciones, como las de transporte, estarían mostrando una saturación por exceso de oferta y estancamiento o caída de la demanda.

Advertisement

El empalme se está haciendo largo y complicado. La preocupación por la capacidad adquisitiva así como por el empleo ascienden en las encuestas cuantitativas y en los grupos focales como preocupaciones sociales, coinciden Pablo Knopoff, de Isonomía, y Lucas Romero, de Synopsis. Al mismo tiempo, el último Índice de confianza en el Gobierno, de la Universidad Torcuato Di Tella, mantiene la tendencia bajista. Las mediciones preceden a los últimos ruidos.

La caída en el consumo y el consecuente cierre de comercios encuentran justificaciones que, al mismo tiempo, encienden alarma en los perjudicados concretos o potenciales.

“Algunos vamos a quedar en el camino, pero es el precio que hay que pagar para tener una Argentina normal”, dijo el presidente de la Cámara Argentina de Comercio, Mario Grinman, después de reunirse con el jefe de Gabinete, Manuel Adorni.

Advertisement

El presidente de la Cámara Argentina de la Construcción, Gustavo Weiss, concedió que “hay que acostumbrarse a un nuevo sistema económico”. Pero luego subrayó: “Nosotros perdimos 120.000 puestos de trabajo entre mediados del 2023 y mediados del 2024. Desde ese entonces estamos amesetados y solo hemos recuperado una muy pequeñísima parte de esa pérdida”.

Después de la andanada contra los “empresaurios” que lanzaron el propio Milei y algunos de sus más prominentes ministros, los hombres de negocios se han vuelto más cuidadosos que nunca en sus expresiones públicas y, antes de cualquier observación que pueda sonar crítica, expresan el salvoconducto de elogiar “el rumbo”.

Por las dudas, ayer Milei se los recordó. Volvió a usar los infamantes apodos con los que descalifica a Paolo Rocca, de Techint; Javier Madanes Quintanilla, de Fate, y a un empresario del rubro neumáticos, a los que tildó de “delincuentes”.

Advertisement

“Del nido de ratas” y “la casta política” a la persecución a “empresaurios”. Resumen perfecto la paradoja mileísta: supremacía política y ruido económico.


Florencia Carignano,ayuda,“este gobierno no puede llegar al 10 de diciembre de 2027”,February 26, 2026,Claudio Jacquelin,Javier Milei,Reforma laboral,Martín Menem,Conforme a,Javier Milei,,Senado. El Gobierno avanzó en la media sanción de la ley de glaciares,,Contrapunto con empresarios. El Gobierno se debate entre la batalla cultural y el pragmatismo,,Dato oficial. El crédito bancario en dólares vuelve a crecer y marca récords

Advertisement

POLITICA

La AFA le pagó $300 millones, al menos, a la empresa que figura como propietaria de la mansión de Pilar

Published

on



La Justicia tiene en su poder documentos que vinculan de manera directa a la Asociación del Fútbol Argentino (AFA) con Real Central, la sociedad que figura como dueña de la mansión de Pilar, atribuida al tesorero de la entidad, Pablo Toviggino. Se trata de órdenes de pago, correspondientes al año pasado, por al menos $300 millones que fueron secuestradas por el juez federal Luis Armella en los allanamientos ordenados en diciembre pasado.

Los documentos, revelados por TN, ponen al descubierto transferencias realizadas en junio de 2025 a favor de Real Central SRL, cuyos titulares formales son la jubilada Ana Lucía Conte y su hijo, el monotributista Luciano Pantano.

Advertisement

La primera orden de pago está fechada el 19 de junio. El comprobante consigna una transferencia por $231.110.000 bajo el concepto “Servicio de logística”, con el número de orden 267894 y estado “Pagado”.

Pablo Toviggino y Claudio «Chiqui» Tapia@natyponcefotos

La segunda orden de pago es del 2 de junio. En ese caso, el monto asciende a $70.400.000, también bajo la descripción “Servicio de logística”, con número de orden 267372. En ese documento aparece la firma de Pantano sobre el final del documento, con la leyenda “P/Real Central SRL”.

Los documentos fueron encontrados en un allanamiento ordenado a fines de diciembre por el juez Armella, que incluyó procedimientos simultáneos en distintas sedes de la AFA y en la casa del empresario Javier Faroni por la empresa TourProdEnter, que administró los ingresos de la AFA en el exterior desde diciembre de 2021.

Advertisement

había revelado que otras dos sociedades vinculadas al entorno de Toviggino, Malte y Recomi, hicieron negocios con la AFA. El 27 de enero de 2022, Malte facturó $4,8 millones por 3000 test de coronavirus para la Liga Profesional. Por su parte, Recomi le emitió dos facturas a la AFA. La primera fue el 8 de agosto de ese año, por $544.500, y la segunda, del 5 de septiembre siguiente, por el mismo monto. “Servicio de asesoramiento”, se lee en el detalle del producto/servicio comercializado.

El que administraba esas dos sociedades era Juan Pablo Beacon. Fue accionista de Malte entre mayo de 2021 y mayo de 2022 y, por lo menos hasta el pasado 5 de diciembre, todavía tenía acciones de Recomi, firma a la que desembarcó en junio de 2022, según documentos judiciales y comerciales. Toviggino estaba al tanto del día a día de estas empresas, según pudo reconstruir LA NACION.


Conforme a

Advertisement
Continue Reading

POLITICA

Socios de la Sociedad Rural hicieron circular una carta que se opone al cuarto mandato de Nicolás Pino

Published

on


Una fuerte polémica estalló en la Sociedad Rural Argentina (SRA) tras la circulación de una carta firmada por casi 100 socios que rechaza una eventual nueva reelección de su presidente, Nicolás Pino.

El texto denuncia un “retroceso institucional” y una “violación del estatuto”, argumentando que la alternancia es una garantía de salud democrática. Los firmantes sostuvieron que “la conducción actual fijó un límite de tres mandatos, ignorarlo hoy por conveniencia personal carece de integridad”, y advirtieron que los dirigentes no deben preocuparse más por “aferrarse a un sillón” que por promover nuevas voces.

Advertisement

Desde la conducción actual calificaron el contenido de la misiva como “erróneo” y aclararon que aún no se definió si Pino será candidato en las elecciones del 9 de septiembre. El propio presidente explicó que en 2023 se modificó el estatuto para limitar las reelecciones a tres períodos consecutivos y que la IGJ dictaminó que el cambio “empezaba a regir en ese entonces, a partir de la inscripción de la reforma”.

Bajo esta interpretación técnica, si Pino se postulara, este nuevo período se contabilizaría como el tercero y no como el cuarto, ya que la norma entró en vigencia durante su segundo mandato.

Advertisement

Nicolás Pino, presidente de la Sociedad Rural, y Luis Caputo

El enfrentamiento interno ocurre en un contexto donde otros dirigentes le reprochan a Pino su cercanía con el Gobierno y exigen un liderazgo más firme ante temas sensibles como las retenciones.

Al respecto, el presidente de la SRA desmintió rumores sobre una quita inmediata de los derechos de exportación tras consultar a Javier Milei y Luis Caputo, quienes le respondieron: “No, Nicolás, lamentablemente no podemos”. Pino señaló que el Ejecutivo ha “recalculado un montón de gastos” para no poner en riesgo el equilibrio fiscal tras los cambios en las reformas laboral, universitaria y de salud.

Advertisement

Finalmente, el Gobierno sostiene que no están dadas las condiciones para eliminar las retenciones debido al impacto en la recaudación y el cumplimiento de metas fiscales. Según el Iaraf, la quita definitiva para el complejo oleaginoso y cerealero tendría un costo de entre USD 1.460 millones y USd 1.600 millones, lo que equivale al 0,25% del PBI.

Mientras tanto, la conducción de la SRA deberá enfrentar desafíos como la alta carga impositiva y las oportunidades que abren los acuerdos comerciales con la Unión Europea-Mercosur y Estados Unidos.

La entrada Socios de la Sociedad Rural hicieron circular una carta que se opone al cuarto mandato de Nicolás Pino se publicó primero en Nexofin.

Advertisement

#PRESIDENTE,Elección,nicolás pino,sociedad rural

Continue Reading

POLITICA

Uno por uno, cómo votaron los senadores la Ley de Glaciares

Published

on



Uno por uno, así votaron los senadores la Ley de Glaciares

Advertisement

Advertisement


${status}

`;
}

Advertisement

function createCard(item, borderColor) {
const card = document.createElement(«div»);
card.className = «vs2__card»;

const fotoWrap = document.createElement(«div»);
fotoWrap.className = «vs2__foto»;
if (borderColor) {
fotoWrap.style.borderColor = borderColor;
} else {
fotoWrap.style.opacity = «0.3»;
fotoWrap.style.border = «none»;
}

const img = document.createElement(«img»);
img.loading = «lazy»;
img.decoding = «async»;
img.alt = «foto-senador»;
img.src = » + (item.url_foto || «»);
img.addEventListener(«error», () => {
img.style.opacity = «0.35»;
}, {
once: true
});

Advertisement

fotoWrap.appendChild(img);

const nombre = document.createElement(«p»);
nombre.className = «vs2__nombre»;
nombre.textContent = String(item.nombres || «»).toLowerCase();

const apellido = document.createElement(«p»);
apellido.className = «vs2__apellido»;
apellido.textContent = String(item.apellido || «»).toLowerCase();

Advertisement

const bloque = document.createElement(«span»);
bloque.className = «vs2__bloque»;
bloque.textContent = String(item.bloque || «»);

card.appendChild(fotoWrap);
card.appendChild(nombre);
card.appendChild(apellido);
card.appendChild(bloque);

return card;
}

Advertisement

function seatClass(kind) {
if (kind === «AFIRMATIVO») return «vs2__seat–afirmativo»;
if (kind === «NEGATIVO») return «vs2__seat–negativo»;
if (kind === «ABSTENCIÓN») return «vs2__seat–abstencion»;
if (kind === «AUSENTE») return «vs2__seat–ausente»;
return «vs2__seat–empty»;
}

function hemicicloParams(which) {
if (which === «big») {
return {
centerX: 300,
baseY: 450,
rows: 5,
seatsPerRow: [21, 18, 16, 11, 6],
verticalOffset: 2,
radiusStart: 300,
radiusStep: 55
};
}
return {
centerX: 300,
baseY: 450,
rows: 5,
seatsPerRow: [21, 18, 16, 12, 7],
verticalOffset: 0,
radiusStart: 170,
radiusStep: 30
};
}

function computeRowSeatCounts(seatsPerRow, totals) {
const totalSeats = seatsPerRow.reduce((a, b) => a + b, 0);
return seatsPerRow.map(seatsInRow => {
const exact = {
AFIRMATIVO: (totals.AFIRMATIVO / totalSeats) * seatsInRow,
NEGATIVO: (totals.NEGATIVO / totalSeats) * seatsInRow,
«ABSTENCIÓN»: (totals[«ABSTENCIÓN»] / totalSeats) * seatsInRow,
AUSENTE: (totals.AUSENTE / totalSeats) * seatsInRow
};

Advertisement

const floor = {
AFIRMATIVO: Math.floor(exact.AFIRMATIVO),
NEGATIVO: Math.floor(exact.NEGATIVO),
«ABSTENCIÓN»: Math.floor(exact[«ABSTENCIÓN»]),
AUSENTE: Math.floor(exact.AUSENTE)
};

let assigned = floor.AFIRMATIVO + floor.NEGATIVO + floor[«ABSTENCIÓN»] + floor.AUSENTE;
let diff = seatsInRow – assigned;

const rems = [{
k: «AFIRMATIVO»,
r: exact.AFIRMATIVO – floor.AFIRMATIVO
},
{
k: «NEGATIVO»,
r: exact.NEGATIVO – floor.NEGATIVO
},
{
k: «ABSTENCIÓN»,
r: exact[«ABSTENCIÓN»] – floor[«ABSTENCIÓN»]
},
{
k: «AUSENTE»,
r: exact.AUSENTE – floor.AUSENTE
},
].sort((a, b) => b.r – a.r);

Advertisement

while (diff > 0) {
for (const it of rems) {
if (diff <= 0) break;
floor[it.k] += 1;
diff–;
}
}
return floor;
});
}

function renderHemiciclo(which, totals) {
const el = byRole(which === «big» ? «hemiciclo-big» : «hemiciclo-small»);
if (!el) return;
el.innerHTML = «»;

const p = hemicicloParams(which);
let rowSeatCounts = computeRowSeatCounts(p.seatsPerRow, totals);
const maxSeatsInRow = p.seatsPerRow[0];

Advertisement

for (let col = 0; col < maxSeatsInRow; col++) {
for (let row = 0; row < p.rows; row++) {
if (col >= p.seatsPerRow[row]) continue;

const seatsInThisRow = p.seatsPerRow[row];
const radius = p.radiusStart – row * (p.radiusStep – p.verticalOffset);
const angleRange = Math.PI;
const angleStep = (seatsInThisRow > 1) ? angleRange / (seatsInThisRow – 1) : 0;
const angle = (Math.PI – angleRange) / 2 + col * angleStep;

const x = p.centerX + radius * Math.cos(angle);
const y = p.baseY – radius * Math.sin(angle);

Advertisement

let kind = «EMPTY»;
if (rowSeatCounts[row].AFIRMATIVO > 0) {
kind = «AFIRMATIVO»;
rowSeatCounts[row].AFIRMATIVO–;
} else if (rowSeatCounts[row].NEGATIVO > 0) {
kind = «NEGATIVO»;
rowSeatCounts[row].NEGATIVO–;
} else if (rowSeatCounts[row][«ABSTENCIÓN»] > 0) {
kind = «ABSTENCIÓN»;
rowSeatCounts[row][«ABSTENCIÓN»]–;
} else if (rowSeatCounts[row].AUSENTE > 0) {
kind = «AUSENTE»;
rowSeatCounts[row].AUSENTE–;
}

const seat = document.createElement(«div»);
seat.className = «vs2__seat » + seatClass(kind);
seat.style.left = x + «px»;
seat.style.top = y + «px»;
el.appendChild(seat);
}
}
}

function populateFilters(data) {
const selProv = byRole(«select-provincia»);
const selBloq = byRole(«select-bloque»);
if (!selProv || !selBloq) return;

Advertisement

const provSet = new Set();
const bloqSet = new Map(); // bloque -> full

data.forEach(r => {
if (r.provincia) provSet.add(r.provincia);
if (r.bloque) bloqSet.set(r.bloque, r.bloque_full || r.bloque);
});

Array.from(provSet).sort().forEach(p => {
const opt = document.createElement(«option»);
opt.value = p;
opt.textContent = p;
selProv.appendChild(opt);
});

Advertisement

Array.from(bloqSet.entries())
.sort((a, b) => String(a[0]).localeCompare(String(b[0])))
.forEach(([code, full]) => {
const opt = document.createElement(«option»);
opt.value = code;
opt.textContent = `${full} (${code})`;
selBloq.appendChild(opt);
});
}

function renderFiltered(data, field, value, targetEl) {
targetEl.innerHTML = «»;
const rows = data.filter(r => value === «all» || r[field] === value);

const order = [«AFIRMATIVO», «NEGATIVO», «ABSTENCIÓN», «AUSENTE»];
const colorBy = {
AFIRMATIVO: «#00A377»,
NEGATIVO: «#c90808»,
«ABSTENCIÓN»: «#444″,
AUSENTE: null
};

Advertisement

order.forEach(voto => {
rows.filter(r => normalizeVoto(r.voto) === voto).forEach(r => {
targetEl.appendChild(createCard(r, colorBy[voto]));
});
});
}

function wireUI(data) {
// toggles
$$(‘[data-role=»section»], [data-role=»filter-provincia»], [data-role=»filter-bloque»]’).forEach(sec => {
const btn = sec.querySelector(‘[data-role=»toggle»]’);
if (!btn) return;
btn.addEventListener(«click», () => {
const open = sec.getAttribute(«data-open») !== «true»;
openPanel(sec, open);
});
});

// abrir por defecto secciones principales, y dejar filtros cerrados
$$(‘[data-role=»section»]’).forEach(sec => openPanel(sec, true));
$$(‘[data-role=»filter-provincia»], [data-role=»filter-bloque»]’).forEach(sec => openPanel(sec, false));

Advertisement

// go top
const goTop = byRole(«go-top»);
if (goTop) {
goTop.addEventListener(«click», () => root.scrollIntoView({
behavior: «smooth»
}));
const obs = new IntersectionObserver((entries) => {
entries.forEach(e => {
goTop.style.display = e.isIntersecting ? «block» : «none»;
});
}, {
threshold: 0.1
});
obs.observe(root);
}

// filtros
const selProv = byRole(«select-provincia»);
const selBloq = byRole(«select-bloque»);
const provOut = byRole(«provincia-results»);
const bloqOut = byRole(«bloque-results»);

if (selProv && provOut) {
selProv.addEventListener(«change», (e) => {
renderFiltered(data, «provincia», e.target.value, provOut);
const sec = byRole(«filter-provincia»);
if (sec) openPanel(sec, true);
});
}

Advertisement

if (selBloq && bloqOut) {
selBloq.addEventListener(«change», (e) => {
renderFiltered(data, «bloque», e.target.value, bloqOut);
const sec = byRole(«filter-bloque»);
if (sec) openPanel(sec, true);
});
}
}

async function init() {
setLoaded(false);

const csvUrl = root.dataset.csvUrl;
if (!csvUrl) {
const summary = byRole(«summary»);
if (summary) summary.innerHTML = `

Advertisement

Error: falta data-csv-url

`;
return;
}

try {
const Papa = await ensurePapa();

Advertisement

Papa.parse(csvUrl, {
download: true,
header: true,
skipEmptyLines: true,
complete: function (res) {
const data = (res && res.data) ? res.data : [];

// panels por voto
const panelByVote = {};
$$(‘[data-role=»section»]’).forEach(sec => {
const voto = sec.getAttribute(«data-voto»);
const panel = sec.querySelector(‘[data-role=»panel»]’);
if (voto && panel) panelByVote[voto] = panel;
});

const counts = {
AFIRMATIVO: 0,
NEGATIVO: 0,
«ABSTENCIÓN»: 0,
AUSENTE: 0
};
const colorBy = {
AFIRMATIVO: «#00A377»,
NEGATIVO: «#c90808»,
«ABSTENCIÓN»: «#444″,
AUSENTE: null
};

Advertisement

data.forEach(row => {
const voto = normalizeVoto(row.voto);
if (!counts.hasOwnProperty(voto)) return;
counts[voto]++;

const panel = panelByVote[voto];
if (panel) {
panel.appendChild(createCard(row, colorBy[voto]));
}
});

// counts en UI
$$(‘[data-role=»count»]’).forEach(el => {
const k = el.getAttribute(«data-kind»);
if (k && counts.hasOwnProperty(k)) el.textContent = String(counts[k]);
});

Advertisement

// hemiciclo + summary
renderHemiciclo(«big», counts);
renderHemiciclo(«small», counts);
renderSummary(counts);

// filtros + ui
populateFilters(data);
wireUI(data);

setLoaded(true);

Advertisement

// recalcular heights en secciones abiertas
$$(‘[data-role=»section»]’).forEach(sec => openPanel(sec, true));
}
});

} catch (err) {
console.error(err);
const summary = byRole(«summary»);
if (summary) {
summary.innerHTML = `

Error: ${escapeHtml(err.message || err)}

Advertisement

`;
}
}
}

init();
})();

Advertisement
Continue Reading

Tendencias