Connect with us

POLITICA

Adiós al catalán y se vienen los K a la Ciudad

Published

on


Viva la libertad

«La Libertad Avanza» se convirtió en el dueño de la escena, a pesar de ser una fuerza con sus particularidades: montaron un esquema de campaña descomunal a través de las redes sociales y de algunos actores con roles despampanantes en streamings y canales de tevé, pero con algunas herramientas que sorprenden.

Advertisement

El entorno presidencial se enteró que ganaba en la elección de la Ciudad de Buenos Aires apenas dos minutos antes de que salieran los resultados transmitidos por los canales de noticias. Los fiscales informáticos de LLA le hicieron llegar sus datos apenas 120 segundos antes de que TN y las demás señales noticiosas mostraran los primeros números que surgían del Instituto de Gestión Electoral y la Justicia Electoral porteña. Por eso, cuando las pantallas mostraron por primera vez a Manuel Adorni imponiéndose sobre Leandro Santoro, el segundo piso del Hotel Libertador (sede ya adoptada para las elecciones por los libertarios) estalló de alegría con Javier y Karina Milei, Santiago Caputo y sus «Peaky Blinders» (Gordo Dan, Agustín Romo y Macarena Alifraco), Martín y Lule Menem y Pilar Ramírez, la persona que capitaneó con la hermana presidencial la elección que les permitió a los libertarios comenzar a conquistar la ciudad capital.

En un salón despoblado de alimentos y con solo café, gaseosas y agua, todos comenzaron a saltar al grito de «Olé olé, olé olá, votalo a Adorni porque el PRO ya no va más». Manuel Adorni sonreía con un rictus que demostraba que nunca se había imaginado en un rol y un momento así para su vida. Fin…

Festejos en el Búnker de La Libertad Avanza. Adorni, Javier Milei, Karina Milei en el Hotel Libertador
Foto Cristina Sille

Karinismo

Advertisement

«La gente está tranquila y no tiene sobresaltos. Se vive otro clima con este gobierno», reflexionaba rato después de pasada la euforia inicial uno de los referentes libertarios sobre el resultado. A metros, Karina Milei también se mostraba feliz con otra de sus jugadas: además de la de ir a elecciones separados del PRO, le salió bien excluir a Ramiro Marra de su tropa. El trader hizo una paupérrima elección y no entró como legislador. Nadie sabe qué hará el impulsivo asesor financiero de ahora en más en el mundo de la política.

«El PRO vive hoy lo peor que le puede pasar a un sector político: no tener futuro», fue la frase que se escuchó cerca de Karina y Santiago Caputo, los integrantes del «triángulo de hierro» al que Mauricio Macri había bautizado como «la mochila de hierro». De venganzas y fisuras…

Ramiro Marra votando en la escuela Santa María de los Ángeles Saavedra. Foto: Victoria Gesualdi Ramiro Marra votando en la escuela Santa María de los Ángeles Saavedra. Foto: Victoria Gesualdi

No se inunda más

«Hay que ver cómo vuelve de estos quince días de viaje», es lo que repite un fiel macrista que analiza una y otra vez el resultado de la elección y que medita sobre qué dirá Mauricio Macri cuando regrese de su periplo por España y Arabia Saudita.

Advertisement

El análisis que efectúe el expresidente de la Nación en las largas horas de avión incluirán también cómo será su vínculo con su primo Jorge Macri, quien es el jefe de Gobierno porteño y deberá transitar horas claves para definir el camino de los dos años que le quedan para gobernar la principal ciudad argentina, con una Legislatura que le resultará esquiva y con el peronismo y LLA con números en el parlamento local como para hacer daño.

La idea que circuló en el búnker amarillo el último domingo sobre hacer cambios de Gabinete intempestivos no sucederá en lo inmediato: «Solo le sacará pasaje de regreso al catalán», recitó un asesor clave del alcalde porteño, en relación con quien fue el principal asesor de la campaña, el consultor Antoni Gutiérrez-Rubí, quien sostuvo la idea de confrontar con los Milei, postura que mantuvo incluso el día de la elección, en el búnker PRO.

En su página web «Generación Z», Gutiérrez-Rubí hablaba de que hay una generación de votantes «menos democráticos» donde argumenta que «el apoyo a la democracia en los más jóvenes es mucho menor que entre los mayores en muchos países» y que «en América Latina, casi la mitad siente indiferencia o está abierto a dar una oportunidad a modelos políticos autoritarios». Los concienzudos consejos ya no serán tenidos en cuenta por los Macri.

Advertisement

Allí, en esa sede Balcarce y Belgrano, cuando se comenzó a hablar de cambios de Gabinete, Jorge Macri los descartó porque cree que no puede dejar en banda de un día para el otro a dirigentes que lo acompañaron, más allá de múltiples errores cometidos en la gestión. Y, además, porque -primero que nada- deberá dirimir con su primo Mauricio espacios de poder que hoy ocupa gente del expresidente.

Jorge Macri tendrá el desafío de resolver cómo construir gobernabilidad y llevar su gobierno los próximos dos años luego de una derrota electoral determinante para el PRO, y ver si puede recrear algo del espíritu del olvidado «Juntos por el Cambio», donde convivían amarillos, radicales de distinto pelaje, seguidores de Elisa Carrió y socialistas. Paciencia y pan criollo, decía un viejo tango…

Antoni Gutiérrez-Rubí, consultor catalánAntoni Gutiérrez-Rubí, consultor catalán

A la Provincia

Las diversas confrontaciones de los miembros del PRO con el Presidente Milei serán un lastre para la negociación en la provincia de Buenos Aires, donde los actores principales por el sector amarillo serán Cristian Ritondo, Guillermo Montenegro y Diego Santilli.

Advertisement

«¿Pero cómo va a llamarse el frente?», fue la última pregunta que hizo Mauricio Macri antes de embarcarse a Madrid. A esta altura, ya le deben haber comunicado por WhatsApp que el presidente Milei -junto a Karina y Santiago Caputo- sólo aceptarán una «adhesión» o sumas en las listas a título casi personal. Una idea que sucedió en el 2013, cuando los dirigentes del PRO integraron las listas del Frente Renovador, en tiempos en que Sergio Tomás Massa parecía tener destino presidencial.

Tanto en el PRO como en LLA reivindican que Cristian Ritondo se subió al escenario de Balcarce y Belgrano en el momento de la derrota, cuando podría haberse desentendido y corrido de esa foto poco agradable. Ahora, al duro dirigente de Nueva Chicago le toca mediar entre Mauricio Macri y el clan Milei para llegar a un entendimiento, donde nombres más proclives al color violeta tendrán un rol, así como intendentes más alineados como Soledad Martínez, quien gobierna Vicente López, y no dejará así como así que los libertarios le copen la lista local en las elecciones bonaerenses desdobladas para el mes de septiembre. Respirar hondo…

Otros colores

Advertisement

Pero no todos los intendentes estarían en sintonía con el acuerdo que impulsa el “delegado” Ritondo. Caso particular se da en el municipio de San Nicolás, el más populoso de la determinante Segunda Sección Electoral, que renueva 11 escaños en la legislatura provincial. Allí se erigen como figuras relevantes los hermanos Passaglia, Santiago y Manuel, quienes supieron ser aliados del PRO.

Quienes conocen a los Passaglia anticipan que hoy están abocados a dar alguna sorpresa aprovechando el desdoblamiento de las elecciones, que podrían patear el tablero y hasta competir por su cuenta. La certeza es que no serían parte del famoso acuerdo de «violetas» y «amarillos» ni tampoco abrazarán al kirchnerismo de quienes siempre se mostraron en la vereda de enfrente. ¿Se vendrá un nuevo color en la provincia? Pintarse la cara color esperanza…

Manuel y Santiago Passaglia en el autódromo de San NicolásManuel y Santiago Passaglia en el autódromo de San Nicolás

Peronismo color verde

Dos puntos porcentuales de la elección fue el impacto que habría causado el video fake que fue subido en las redes con el supuesto renunciamiento de Mauricio Macri de la candidatura de Silvia Lospennato a favor de Manuel Adorni. Así lo analizaban en el comando principal de la campaña peronista porteña, donde Leandro Santoro quedó muy golpeado tras la derrota que no se imaginaba. Esa noche impactó en el joven hincha de San Lorenzo la fuerte campaña que circuló en las redes en los quince días previos a la elección, donde los hábiles libertarios se despojaron de cualquier tipo de códigos y lo asociaron a su ex amigo Alberto Fernández de los modos más horribles y escandalosos.

Advertisement

Ahora, finalizada la campaña porteña, el peronismo porteño demudará a una versión más tradicional, de cara a la elección de diputados y senadores nacionales de octubre. La cuestión no será sencilla para los pejotistas, pues el kirchnerismo es en Buenos Aires bastante menos que los 27 puntos que sacó la lista que moldeó Juan Manuel Olmos para enfrentar al PRO y a La Libertad Avanza.

En la división de roles consumada entre Olmos y Cristina Kirchner, la elección local la manejó a su gusto el curtido abogado porteño y ahora la nacional quedará en manos del cristinismo. Allí, pica en punta el camporista Mariano Recalde para ser el candidato a senador nacional, la puja más picante por delante. Esa campaña será bien nacional, tendrá otra impronta peronista y luego se verá cómo evoluciona y cambia el voto duro y el blando para cada sector. Y se cambiará el nombre de la lista: resta saber si seguirá siendo «Unión por la Patria» o se elegirá otra opción, algo que se cocinará en las cercanías de Cristina Elisabet Kirchner.

Por lo pronto, el próximo sábado volverá a aparecer CFK en una actividad en un centro cultural y deportivo que queda atrás de la villa 31, «Barrio Saldías», territorio político donde manda el gremialista Víctor Santa María. De esas jornadas participará la comisión de cultura del Instituto Patria y habrá presencias como la folclorista Teresa Parodi, Florencia Saintout y la senadora nacional por San Juan, Celeste Navarro. Año electoral…

Advertisement
Cristina Kirchner, Javier Milei y Mauricio MacriCristina Kirchner, Javier Milei y Mauricio Macri

Javier Milei,Cristina Kirchner,Mauricio Macri,Jorge Macri,Karina Milei

POLITICA

Un gremio lanzó una campaña en los aeropuertos del país contra los senadores que apoyaron la reforma laboral

Published

on


Bajo una metodología poco habitual para el gremialismo y que amenaza con desatar una polémica, la Asociación del Personal Aeronáutico (APA), uno de los sindicatos fuertes del mundo de los aviones que ya tuvo fricciones con la gestión de Javier Milei, lanzó en las últimas horas una campaña en los aeropuertos del país para señalar a los senadores nacionales que votaron a favor de la reforma laboral oficialista.

Enrolado en la CTA de los Trabajadores, y también partícipe de la movilización al exterior del Congreso, APA mostró en sus canales de difusión fotos y videos de integrantes del sindicato en el momento en que repartían volantes en terminales aéreas de la Argentina, estampados con las caras de senadores que colaboraron con los votos en favor del Gobierno, con su nombre, su partido político y la leyenda: “votaron en contra del pueblo trabajador argentino”.

Advertisement
Así se movían los sindicalistas de APA en el aeropuerto de San Juan

Según pudo saber , ya desplegaron esta medida por el interior del país, mientras que está previsto que en los próximos días llegue a los aeropuertos de la ciudad y la provincia de Buenos Aires, y que la semana que viene también los mismos volantes se repartan en la puerta del Congreso.

El titular del gremio, Edgardo Llano, ferviente detractor de Milei, de raíces peronistas y con más cercanía al kirchnerismo, que también respaldó la campaña presidencial de Sergio Massa, buscó justificar la acción en diálogo con .

“Son 72 senadores en total y solo 10 o 15 conocidos, al resto nadie los conoce; por eso queremos que se hagan responsables de su voto; lo único que hacemos con esta campaña es decir quiénes son y a qué partido pertenecen”, sostuvo Llano.

Advertisement
Sindicalistas de APA en aeropuertos repartiendo folletos contra los senadores que votaron a favor de la reforma laboralAPA INSTAGRAM

Electo secretario general de APA en 2004 y con mandato renovado este año hasta 2030, el jefe gremial negó ante el planteo de que haya una intención de “escrachar” a los representantes políticos que acompañaron a la Casa Rosada.

“No es un escrache, le hacemos conocer al público quién es el senador y cómo votó. Es lo que votaron, también lo mostraron los medios, nadie se puede sentir molesto”, manifestó Llano.

Sin embargo, en 2024, el líder gremial ya había dicho que había que “escrachar” a los legisladores que votaran la Ley Bases de Milei, cuando se tomaran vuelos en Aerolíneas Argentinas. Aquellas expresiones le habían generado fuertes críticas y hasta una denuncia en la Justicia de parte de diputados de Pro por amenazas, instigación a cometer delitos e intimidación. En su momento, esa campaña de señalamiento no se llevó finalmente a cabo.

Advertisement

Ahora, el gremialista dice que fue sobreseído y que por eso su sindicato avanzó con esta otra modalidad, a través de panfletos.

Edgardo Llano, líder gremial de APA Ricardo Pristupluk –

Este gremio tuvo alta conflictividad con el gobierno de Milei, sobre todo en el primer año de gestión, por las negociaciones laborales en Aerolíneas Argentinas y las amenazas de paros.

En ese momento, el Presidente decía en una crítica a los sindicatos del sector: “En la Argentina se sale trabajando, no extorsionando”. El Gobierno asegura sentirse cómodo cuando aparece como blanco del sindicalismo, porque considera que eso le reditúa en su electorado.

Advertisement
El secretario general de la Asociación del Personal Aeronáutico (APA), durante el gobierno de Alberto Fernández, con Cristina Kirchner

De momento, el reparto de folletos contra libertarios y aliados estuvo exclusivamente dirigida a senadores. El gremio también compartió en sus redes sociales imágenes de la campaña con los mismos volantes, pero en formato digital, con el sello de APA, la CTA de los Trabajadores y la Federación Internacional de los Trabajadores del Transporte (ITF). Los sindicalistas ya desarrollaron la acción en aeropuertos de Resistencia (Chaco), Santa Fe, San Juan, Formosa, Jujuy, Paraná (Entre Ríos), San Luis, Chapelco (Neuquén), Mendoza, Esquel (Chubut) y Córdoba.

Edgardo Llano y Sergio Massa durante un acto de la CTA en respaldo a su candidatura Facebook

“Las compañeras y compañeros aeronáuticos iniciamos una campaña en los aeropuertos del país para que todos conozcan a sus representantes que votaron en contra del trabajador argentino”, dijeron en redes.

El Senado avanzaba esta noche hacia la aprobación definitiva de la reforma laboral. Tras ganar las elecciones, el Gobierno, a través de negociaciones con gobernadores, senadores, diputados y parte de la CGT, logró los avales tanto en la Cámara alta como en la Cámara baja para tener el texto listo antes de que el domingo arranquen las sesiones ordinarias de 2026.

Advertisement

reforma laboral oficialista,negociaciones laborales en Aerolíneas Argentinas,View this post on Instagram,Paula Rossi,Reforma laboral,Senado de la Nación,Conforme a,,Nuevo régimen. Cómo es la ley que baja la edad de imputabilidad a 14 años: garantías, penas y asignaciones,,»No llega a 2027″. Un gobernador del PJ ratificó sus dichos contra Milei tras haber sido denunciado en la Justicia,Reforma laboral,,Mapa de cortes. Video: los incidentes del Obelisco por una protesta contra la reforma laboral, desde un drone,,Debate en el Senado. Un abogado constitucionalista advirtió cuáles son las mayores incongruencias de la reforma laboral: “Todo es un gran show”,,Tensión con la Policía. Manifestaciones y cortes en el centro porteño en protesta por la reforma laboral

Continue Reading

POLITICA

El Senado convirtió en ley el Régimen Penal Juvenil: la edad de imputabilidad baja a 14 años

Published

on



Luego de largas horas de debate, el Senado convirtió en ley el nuevo Régimen Penal Juvenil. De esta manera, la edad de imputabilidad baja a 14 años.

Una vez conocido el resultado legislativo, el Gobierno celebró la sanción de la norma. El Presidente Javier Milei afirmó a través de sus redes sociales: “El que las hace las paga”. “El Congreso Nacional sancionó la Ley Penal Juvenil, que baja la edad de imputabilidad a los 14 años. Ahora hay castigo donde antes había impunidad”, remarcó el jefe de Gabinete, Manuel Adorni.

Advertisement

Leé también: LLA y el peronismo se cruzaron por el reglamento: “Si respetaran las normas, no tendrían a CFK con tobillera”

En la misma línea, en el Gobierno manifestaron: “Con esta ley, la Argentina cierra un capítulo de cuatro décadas de inacción legislativa y actualiza un marco normativo que permanecía desconectado de la realidad criminal del siglo XXI”.

Y agregaron: “La baja de la edad de imputabilidad a los 14 años no es solo un cambio legal, sino un acto de justicia hacia la sociedad. A partir de hoy, quien tiene la capacidad de comprender la gravedad de sus actos asume, sin excepciones, la responsabilidad de responder ante la ley. Delito de adulto, pena de adulto”.

Advertisement

Leé también: La UCR reúne a gobernadores y 300 intendentes en Santa Fe para fortalecer la territorialidad rumbo al 2027

A través de un comunicado de la Oficina del Presidente, indicaron: “Milei destaca la labor de los legisladores que comprendieron que la seguridad de los argentinos y la protección de las víctimas deben estar por encima de todo. Esta reforma salda una deuda histórica y devuelve a la Justicia las herramientas necesarias para terminar con la impunidad y el caos que reinó durante décadas”.

Y señalaron: “El orden, la libertad, el derecho a la vida y a la propiedad privada solo son posibles cuando hay consecuencias reales para quienes quebrantan la paz social. En Argentina, dentro de la ley, todo; fuera de la ley, nada”.

Advertisement

La jefa de bloque de La Libertad Avanza en el Senado y exministra de Seguridad, Patricia Bullrich, expresó: “La Ley Penal Juvenil es ley. Para las víctimas de menores delincuentes, una pizca de la justicia que nunca van a tener. Desde hoy, la impunidad ya no es la regla. Las hacen, las pagan.

Por su parte, la actual titular de Seguridad, Alejandra Monteoliva, afirmó: “Celebro la aprobación de la Ley Penal Juvenil. Hoy la Argentina eligió, de una vez por todas, estar del lado de las víctimas. Un paso firme para que la edad no sea una excusa y para que, en la Argentina, el que las hace, las pague”.

Senado, Baja de la edad de imputabilidad, Régimen Penal de la Minoridad

Advertisement
Continue Reading

POLITICA

Ley Penal Juvenil: uno por uno, cómo votaron los senadores la baja de la imputabilidad a los 14 años

Published

on



Uno por uno, cómo votaron los senadores la Reforma Penal Juvenil

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