Connect with us

POLITICA

Uno por uno, cómo votaron los diputados el proyecto de Financiamiento Universitario

Published

on


Conteo de Votos y Hemiciclo

Uno por uno, así votaron los diputados la Ley de financiamiento universitario

Advertisement

Advertisement


`
: `

Advertisement
foto-diputado

`
}

${bloque}

`;
targetContainer.appendChild(card);
}

function createHemicicleSmall(nAfirmativo, nNegativo, nAbstencion, nAusente) {
const hemicycle = document.querySelector(‘.votos-diputados__hemiciclo.small’);
hemicycle.innerHTML = »; // Clear previous content.

Advertisement

const centerX = 300;
const baseY = 450;
const numberOfRows = 10;
// Array of seats per row (from outer to inner)
const seatsPerRow = [38, 36, 33, 30, 27, 24, 21, 19, 16, 13];
const verticalOffset = 2;
const totalSeats = seatsPerRow.reduce((a, b) => a + b, 0);
const totalVotes = nAfirmativo + nNegativo + nAbstencion + nAusente;

// Instead of percentage-based rounding, we’ll compute a per-row distribution
// using floor() and then distribute any remaining seats based on the remainders.
let rowSeatCounts = seatsPerRow.map((seatsInRow) => {
// Compute the exact (floating point) allocation for each category.
const exactAfirmativo = (nAfirmativo * seatsInRow) / totalSeats;
const exactNegativo = (nNegativo * seatsInRow) / totalSeats;
const exactAbstencion = (nAbstencion * seatsInRow) / totalSeats;
const exactAusente = (nAusente * seatsInRow) / totalSeats;
// Take floor values.
let rowAfirmativo = Math.floor(exactAfirmativo);
let rowNegativo = Math.floor(exactNegativo);
let rowAbstencion = Math.floor(exactAbstencion);
let rowAusente = Math.floor(exactAusente);
let assigned = rowAfirmativo + rowNegativo + rowAbstencion + rowAusente;
let diff = seatsInRow – assigned;
// Create an array of remainders along with category identifiers.
let remainders = [{
cat: «afirmativo»,
remainder: exactAfirmativo – rowAfirmativo
},
{
cat: «negativo»,
remainder: exactNegativo – rowNegativo
},
{
cat: «abstencion»,
remainder: exactAbstencion – rowAbstencion
},
{
cat: «ausente»,
remainder: exactAusente – rowAusente
}
];
// Sort descending by remainder.
remainders.sort((a, b) => b.remainder – a.remainder);
// Distribute the remaining seats one by one to the categories with the highest remainders.
while (diff > 0) {
for (let r of remainders) {
if (diff <= 0) break;
switch (r.cat) {
case «afirmativo»:
rowAfirmativo++;
break;
case «negativo»:
rowNegativo++;
break;
case «abstencion»:
rowAbstencion++;
break;
case «ausente»:
rowAusente++;
break;
}
diff–;
}
}
return {
afirmativo: rowAfirmativo,
negativo: rowNegativo,
abstencion: rowAbstencion,
ausente: rowAusente
};
});

// Now, using your inverted loop order (columns first, then rows)
const maxSeatsInRow = seatsPerRow[0]; // maximum seats in the outer row

Advertisement

// For each seat position (by column, then row), assign the color based on that row’s distribution.
for (let col = 0; col < maxSeatsInRow; col++) {
for (let row = 0; row < numberOfRows; row++) {
if (col < seatsPerRow[row]) { // only if this row has a seat at this column
const seatsInThisRow = seatsPerRow[row];
const radius = 170 – row * (16 – verticalOffset);
const angleRange = Math.PI; // semicircle
const angleStep = (seatsInThisRow > 1) ? angleRange / (seatsInThisRow – 1) : 0;
const angle = (Math.PI – angleRange) / 2 + col * angleStep;
const x = centerX + radius * Math.cos(angle);
const y = baseY – radius * Math.sin(angle);

// For this row, assign colors in order:
// First use available «afirmativo», then «negativo», then «abstencion», then «ausente»
let colorClass=»color-empty»;
if (rowSeatCounts[row].afirmativo > 0) {
colorClass=»color-afirmativo»;
rowSeatCounts[row].afirmativo–;
} else if (rowSeatCounts[row].negativo > 0) {
colorClass=»color-negativo»;
rowSeatCounts[row].negativo–;
} else if (rowSeatCounts[row].abstencion > 0) {
colorClass=»color-abstencion»;
rowSeatCounts[row].abstencion–;
} else if (rowSeatCounts[row].ausente > 0) {
colorClass=»color-ausente»;
rowSeatCounts[row].ausente–;
}
const seat = document.createElement(‘div’);
seat.classList.add(‘seat’, colorClass);
seat.style.left = `${x}px`;
seat.style.top = `${y}px`;
hemicycle.appendChild(seat);
}
}
}

// Set the legend text.
const leyText = nAfirmativo > nNegativo ? ‘Ley Aprobada’ : ‘Ley no aprobada’;
document.querySelector(‘#voto-summary’).innerHTML = `

Advertisement

Afirmativo: ${nAfirmativo} |
Negativo: ${nNegativo}

Abstención: ${nAbstencion} |
Ausente: ${nAusente}

` + ‘

‘ + leyText + ‘

Advertisement

‘;
}

// Creates the big hemiciclo visualization.
function createHemicicleBig(nAfirmativo, nNegativo, nAbstencion, nAusente) {
const hemicycle = document.querySelector(‘.votos-diputados__hemiciclo.big’);
hemicycle.innerHTML = »; // Clear previous content.

const centerX = 300;
const baseY = 450;
const numberOfRows = 10;
// Array of seats per row (outer to inner; total should be 257)
const seatsPerRow = [38, 36, 33, 30, 27, 24, 21, 19, 16, 13];
const verticalOffset = 2;
const totalSeats = seatsPerRow.reduce((a, b) => a + b, 0);

Advertisement

// Raw vote counts must sum to totalSeats (257)
const totalVotes = nAfirmativo + nNegativo + nAbstencion + nAusente;
if (totalVotes !== totalSeats) {
console.warn(«Total votes (» + totalVotes + «) do not equal total seats (» + totalSeats + «).»);
}

// — Per-Row Distribution Using Absolute Counts —
// For each row, compute the exact allocation for each vote category based on its fraction of the total seats.
let rowSeatCounts = seatsPerRow.map(seatsInRow => {
const exactA = (nAfirmativo / totalSeats) * seatsInRow;
const exactN = (nNegativo / totalSeats) * seatsInRow;
const exactAb = (nAbstencion / totalSeats) * seatsInRow;
const exactAu = (nAusente / totalSeats) * seatsInRow;

let rowA = Math.floor(exactA);
let rowN = Math.floor(exactN);
let rowAb = Math.floor(exactAb);
let rowAu = Math.floor(exactAu);

Advertisement

let assigned = rowA + rowN + rowAb + rowAu;
let diff = seatsInRow – assigned;

// Create an array of remainders for each category.
let remainders = [{
cat: «afirmativo»,
rem: exactA – rowA
},
{
cat: «negativo»,
rem: exactN – rowN
},
{
cat: «abstencion»,
rem: exactAb – rowAb
},
{
cat: «ausente»,
rem: exactAu – rowAu
}
];
// Sort the remainders in descending order.
remainders.sort((a, b) => b.rem – a.rem);

// Distribute any leftover seats one by one.
while (diff > 0) {
for (let r of remainders) {
if (diff <= 0) break;
switch (r.cat) {
case «afirmativo»:
rowA++;
break;
case «negativo»:
rowN++;
break;
case «abstencion»:
rowAb++;
break;
case «ausente»:
rowAu++;
break;
}
diff–;
}
}
return {
afirmativo: rowA,
negativo: rowN,
abstencion: rowAb,
ausente: rowAu
};
});

Advertisement

// — Global Correction —
// Sum the allocated seats for each category across all rows.
let globalA = rowSeatCounts.reduce((sum, row) => sum + row.afirmativo, 0);
let globalN = rowSeatCounts.reduce((sum, row) => sum + row.negativo, 0);
let globalAb = rowSeatCounts.reduce((sum, row) => sum + row.abstencion, 0);
let globalAu = rowSeatCounts.reduce((sum, row) => sum + row.ausente, 0);

// For each category, if the global total is less than the raw count, add the missing seats to the outer row (row 0).
if (globalA < nAfirmativo) {
rowSeatCounts[0].afirmativo += (nAfirmativo – globalA);
}
if (globalN < nNegativo) {
rowSeatCounts[0].negativo += (nNegativo – globalN);
}
if (globalAb < nAbstencion) {
rowSeatCounts[0].abstencion += (nAbstencion – globalAb);
}
if (globalAu < nAusente) {
rowSeatCounts[0].ausente += (nAusente – globalAu);
}

// — Seat Placement Using Inverted Loop Order —
const maxSeatsInRow = seatsPerRow[0];
for (let col = 0; col < maxSeatsInRow; col++) {
for (let row = 0; row < numberOfRows; row++) {
if (col < seatsPerRow[row]) { // Only process if this row has a seat at the current column.
const seatsInThisRow = seatsPerRow[row];
const radius = 300 – row * (30 – verticalOffset);
const angleRange = Math.PI; // semicircle
const angleStep = (seatsInThisRow > 1) ? angleRange / (seatsInThisRow – 1) : 0;
const angle = (Math.PI – angleRange) / 2 + col * angleStep;
const x = centerX + radius * Math.cos(angle);
const y = baseY – radius * Math.sin(angle);

Advertisement

// For the current row, assign the color in order: afirmativo, then negativo, then abstencion, then ausente.
let colorClass=»color-empty»;
if (rowSeatCounts[row].afirmativo > 0) {
colorClass=»color-afirmativo»;
rowSeatCounts[row].afirmativo–;
} else if (rowSeatCounts[row].negativo > 0) {
colorClass=»color-negativo»;
rowSeatCounts[row].negativo–;
} else if (rowSeatCounts[row].abstencion > 0) {
colorClass=»color-abstencion»;
rowSeatCounts[row].abstencion–;
} else if (rowSeatCounts[row].ausente > 0) {
colorClass=»color-ausente»;
rowSeatCounts[row].ausente–;
}

const seat = document.createElement(‘div’);
seat.classList.add(‘seat’, colorClass);
seat.style.left = `${x}px`;
seat.style.top = `${y}px`;
hemicycle.appendChild(seat);
}
}
}

/* // — Update Legend —
const leyText = nAfirmativo > nNegativo ? «Ley Aprobada» : «Ley no aprobada»;
const resultsText=»shshs»;
document.querySelector(«#voto-summary»).innerHTML = leyText + resultsText; */
}

Advertisement

// Go-to-top button functionality.
document.addEventListener(‘DOMContentLoaded’, function() {
const goToTopButton = document.querySelector(‘.votos-diputados__go-to-top’);
const targetElement = document.querySelector(‘.votos-diputados’);

goToTopButton.addEventListener(‘click’, function() {
targetElement.scrollIntoView({
behavior: ‘smooth’
});
});
const observer = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
goToTopButton.style.display = entry.isIntersecting ? ‘block’ : ‘none’;
});
}, {
root: null,
rootMargin: ‘0px’,
threshold: 0.1
});
observer.observe(targetElement);

// Attach the toggle listener to each vote button.
const toggleBtns = document.getElementsByClassName(‘votos-diputados__voto-btn’);
for (let i = 0; i < toggleBtns.length; i++) {
toggleBtns[i].addEventListener(‘click’, function() {
this.classList.toggle(‘active’);
const panel = this.nextElementSibling;
panel.style.maxHeight = panel.style.maxHeight ? null : ‘14000px’;
});
}

Advertisement

// Now simulate a click on each button from within DOMContentLoaded.
// This will trigger the listener and expand each panel on load.
for (let i = 0; i < toggleBtns.length; i++) {
toggleBtns[i].click();
}

});

Advertisement
Advertisement

POLITICA

Quiénes estaban con Milei en la foto del lanzamiento de la campaña bonaerense

Published

on


En un terreno baldío de Villa Celina, La Matanza, Javier Milei dio inicio al lanzamiento de su campaña legislativa en la provincia de Buenos Aires. Rodeado de figuras de La Libertad Avanza (LLA) y aliados del Pro, la imagen buscó transmitir un mensaje de polarización frente al kirchnerismo. Sin embargo, la elección del lugar y la estética utilizada generaron debate en el ámbito político. El evento marca el inicio formal de la campaña de cara a las elecciones del 7 de septiembre, donde se renovará la mitad de la Legislatura bonaerense.

Javier Milei con vecinos de Las Achiras durante el lanzamiento de la campaña bonaerense

La foto de Milei en La Matanza incluyó a su hermana, Karina Milei, figura central en la estrategia del partido, y a los principales candidatos a legisladores por las ocho secciones de la provincia de Buenos Aires. También estuvieron presentes Sebastián Pareja, armador clave de LLA en la provincia, y Cristian Ritondo, jefe del Pro bonaerense, cuyo rol fue fundamental para concretar la alianza entre ambos espacios. La ministra de Seguridad, Patricia Bullrich, y José Luis Espert, también ocuparon un lugar destacado en la imagen.

Advertisement
La Libertad Avanza lanza su campaña para las elecciones provinciales de septiembre (X: @LLibertadAvanza)

Cada candidato tiene un rol específico en la estrategia de LLA para las diferentes secciones electorales. En la tercera sección, considerada la más difícil para los libertarios, competirá el excomisario Maximiliano Bondarenko. En la primera sección, Diego Valenzuela, intendente de Tres de Febrero, buscará un triunfo para Milei. Guillermo Montenegro, intendente de General Pueyrredón, competirá en la quinta sección. Al lado de Milei se posicionaron los aspirantes Gonzalo Cabezas (Cuarta); Natalia Blanco (Segunda); Oscar Liberman (Sexta); Alejandro Speroni (Séptima); y Francisco Adorni (Octava).

La selección de La Matanza, distrito de tradición peronista, para el inicio de la contienda legislativa no fue aleatoria. La elección de este bastión histórico del peronismo busca interpelar directamente a ese electorado y desafiar al kirchnerismo. El acto tuvo lugar en el asentamiento Las Achiras, para agregar un simbolismo particular a la estrategia electoral al visibilizar una problemática social.

El slogan “Kirchnerismo, Nunca más”, que acompañó la foto, resume la estrategia de campaña de Milei: polarizar con el peronismo y capitalizar el descontento de un sector del electorado. La tipografía utilizada, que emula la del informe “Nunca Más” de la Conadep, generó polémica y acusaciones de banalización de un tema sensible. Sin embargo, desde LLA defienden la elección del slogan y argumentan que “habla del momento y de la sensación de los bonaerenses. Resume el ‘no’ al kirchnerismo. Por ejemplo, nunca más a las candidaturas testimoniales”, según un referente del partido citado.

Advertisement
El comunicado que formaliza la alianza entre el Pro y La Libertad Avanza (X: @ProCiudadBsAs)

El acuerdo con el Pro, que se oficializó simultáneamente al lanzamiento de la campaña en Buenos Aires, es un elemento clave en la estrategia electoral de Milei. La incorporación de figuras del Pro a las listas de LLA busca ampliar la base electoral y fortalecer la alianza de cara a las elecciones. Sin embargo, el acuerdo no estuvo exento de tensiones, como lo demuestra la ausencia de Mauricio Macri en la foto del lanzamiento de la campaña.

En LLA reconocen que la elección en la provincia de Buenos Aires será un desafío. “Las elecciones no vienen fácil porque la provincia es muy compleja y muy vasta, con particularidades diferentes. Esperamos ganar, pero también podemos perder porque es un terreno muy hostil y muy difícil”, admitió Sebastián Pareja en diálogo con LN+. La estrategia se centrará en la primera y tercera sección electoral, donde se concentra el 70% del padrón provincial.

Advertisement

Este contenido fue producido por un equipo de con la asistencia de la IA.

lanzamiento de su campaña legislativa en la provincia de Buenos Aires,Audiencia,Javier Milei,,»Kirchnerismo nunca más». Milei abrió la campaña bonaerense con una foto provocadora,,En una entrevista con un historiador británico. Milei criticó con dureza a Francia y Reino Unido por su postura sobre Palestina: «El wokismo los infectó»,,»Sensibleros». Milei apuntó contra la oposición por cuestionar el veto presidencial al aumento de las jubilaciones,Audiencia,,Pan y Trabajo. Por qué se celebra San Cayetano cada 7 de agosto,,En vivo. Pronóstico en AMBA, en vivo: jornada fría, con viento y nubes, y últimas noticias del clima hoy,,Impactantes imágenes. Impresionante accidente en Chile: chocó, voló por el aire y salió caminando

Advertisement
Continue Reading

POLITICA

Tras el desembarco de Milei en La Matanza, el Gobierno reúne la mesa de campaña de PBA para organizar actividades electorales

Published

on


El Gobierno reúne a la mesa de campaña de la provincia de Buenos Aires para definir los próximos actos y recorridas de los candidatos de La Libertad Avanza junto con las participaciones de Javier Milei. El presidente desembarcó hoy en La Matanza para presentar a sus candidatos bajo el slogan de “kirchnerismo nunca más”.

El encuentro lo preside la secretaria general de la Presidencia, Karina Milei, desde las 16 en el salón Norte de la Casa Rosada. Participan el asesor Santiago Caputo junto a su equipo de comunicación y los integrantes del armado partidario de Sebastián Pareja, que tiene a cargo el territorio bonaerense.

Advertisement

Leé también: Tras la derrota en Diputados, el Gobierno busca blindar en el Senado los decretos que impulsó Sturzenegger

Se trata de la segunda reunión del equipo electoral libertario luego de las contramarchas por el lanzamiento de la campaña, que estaba previsto que sea este miércoles en el nuevo centro logístico de Mercado Libre en Tres de Febrero y se suspendió. El oficialismo barajó también realizar la foto de los postulantes con el jefe de Estado en Balcarce 50 y lo descartó.

“No era una actividad que represente lo que queremos para la campaña”, expresan en Nación. Es por eso que definieron realizarlo en la tercera sección electoral bonaerense y utilizar la tipografía del libro sobre el informe “Nunca Más”, que abarca el trabajo realizado en 1984 por la Comisión Nacional sobre la Desaparición de Personas (Conadep).

Advertisement
Milei junto a los candidatos de LLA para las legislativas bonaerenses, en La Matanza. (Foto: LLA PBA)

Por parte de Caputo, asistieron también al encuentro su mano derecha, la abogada Macarena Alifraco, los consultores Tomás Vidal y Vicente Fernández y Lucas Luna, que mantuvo tensiones con los cercanos a la presidenta del partido.

En Nación no descartan la presencia del subsecretario de Gestión Institucional, Eduardo “Lule” Menem, que asistió a la primera reunión. El presidente de la Cámara de Diputados y vice de LLA, Martín Menem, no está presente en el encuentro.

Leé también: El Gobierno avanza con la disolución de la secretaría de Industria y Comercio tras la salida de su titular

Advertisement

Noticia que está siendo actualizada.-

Gobierno, campaña electoral

Advertisement
Continue Reading

POLITICA

cómo es el barrio de La Matanza en el que Milei se sacó la foto de lanzamiento de campaña en provincia de Buenos Aires

Published

on


La esquina de la foto en el tiempo

Advertisement

Enero 2014

Enero 2014. Fuente: Google Maps.Enero 2014. Fuente: Google Maps.

Noviembre 2014

Noviembre 2014. Fuente: Google Maps.Noviembre 2014. Fuente: Google Maps.

Mayo 2021

Mayo 2021. Fuente: Google Maps.Mayo 2021. Fuente: Google Maps.

Agosto 2023

Agosto 2023. Fuente: Google Maps.Agosto 2023. Fuente: Google Maps.

Enero 2025

Enero 2025. Fuente: Google Maps.Enero 2025. Fuente: Google Maps.

Agosto 2025

Javier Milei junto a sus candidatos bonaerenses.

Javier Milei junto a sus candidatos bonaerenses.

Continue Reading

LO MAS LEIDO

Tendencias