Connect with us

POLITICA

Uno por uno, cómo votaron los diputados el proyecto que modifica la ley de Zonas Frías y recorta subsidios al gas

Published

on



Uno por uno, cómo votaron los diputados los cambios a la Ley de Zonas Frías

Advertisement

Advertisement


${status}

`;
}

Advertisement

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

const fotoWrap = document.createElement(«div»);
fotoWrap.className = «vd2__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-diputado»;
img.src = photoBase + (item.url_foto || «»);
img.addEventListener(«error», () => {
img.style.opacity = «0.35»;
}, {
once: true
});

Advertisement

fotoWrap.appendChild(img);

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

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

Advertisement

const bloque = document.createElement(«span»);
bloque.className = «vd2__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 «vd2__seat–afirmativo»;
if (kind === «NEGATIVO») return «vd2__seat–negativo»;
if (kind === «ABSTENCIÓN») return «vd2__seat–abstencion»;
if (kind === «AUSENTE») return «vd2__seat–ausente»;
return «vd2__seat–empty»;
}

function hemicicloParams(which) {
// Basado en la distribución original para Diputados (257)
const seatsPerRow = [38, 36, 33, 30, 27, 24, 21, 19, 16, 13]; // suma 257
if (which === «big») {
return {
centerX: 300,
baseY: 450,
rows: 10,
seatsPerRow,
verticalOffset: 2,
radiusStart: 300,
radiusStep: 30
};
}
return {
centerX: 300,
baseY: 450,
rows: 10,
seatsPerRow,
verticalOffset: 2,
radiusStart: 170,
radiusStep: 16
};
}

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 = «vd2__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
Advertisement

POLITICA

José Luis Manzano compitió en una exclusiva regata en Cerdeña, a un año del incendio de su yate

Published

on


De ministro de Menem a empresario de medios y energía

Jose Luis Manzano en el council de las americas en el hotel Alvear

Un velero de 40 metros diseñado por Germán Frers

ARISTARCHOS, el nuevo barco que capitanea José Luis Manzano en Cerdeña
El ARISTARCHOS es un nombre de origen griego. Tiene bandera de Grecia porque estaba matriculado allí.
El interior de lujo del barco que compró José Luis Manzano y que ahora compite en Cerdeña
El Aristarchos tiene 3 cabinas, capacidad para 8 pasajeros.

Cómo le fue en la Rolex Swan Cup

Advertisement
Continue Reading

POLITICA

Neuquén: condenaron a tres años de prisión condicional al exintendente que atacó a su sucesor con un cuchillo

Published

on


SAN CARLOS DE BARILOCHE.- A solo una semana del grave episodio ocurrido en Pilo Lil, en el que el actual presidente de la Comisión de Fomento protagonizó un enfrentamiento con su antecesor, la Justicia neuquina resolvió la causa penal mediante un procedimiento de juicio abreviado.

Eliseo Esteban Díaz, quien estuvo al frente de la comisión de fomento durante 12 años, fue condenado por el delito de coacción agravada por el uso de un arma tras haber amenazado de muerte con un cuchillo al actual presidente comunal, Andrés Avelino Infante.

Advertisement

El acuerdo de pena fue presentado por el fiscal jefe Gastón Ávila y homologado por el juez de garantías Maximiliano Bagnat, contando con el aval de la defensora Laura Plaza y de la abogada querellante Lorena Miani. La sentencia contempla una pena de tres años de prisión de ejecución condicional.

Para mantener la libertad condicional y evitar que la condena se convierta en prisión efectiva, Díaz deberá cumplir estrictas reglas de conducta durante un plazo de tres años. En principio, le impusieron una prohibición absoluta de contacto e intimidación: no podrá ejercer actos de perturbación ni mantener ningún tipo de contacto –por sí ni por terceros– con Infante ni con su grupo familiar.

Asimismo, Díaz deberá fijar un domicilio formal y concurrir a las citaciones y controles de la Dirección de Población Judicializada. Debido a las reducidas dimensiones de la localidad de Pilo Lil, el juez Bagnat remarcó que las prohibiciones responden a la necesidad de prevenir cualquier acto de violencia.

Advertisement
El presidente de la comisión de fomento de Pilo Lil, Andrés Infante, con el gobernador Rolando Figueroa.

Ante la posibilidad de que ambos hombres se crucen en la vía pública, el magistrado le advirtió expresamente a Díaz: “Ante esa situación, usted deberá darse la vuelta e irse”.

El violento episodio que desencadenó el proceso judicial ocurrió el viernes pasado durante una jornada de trabajo con funcionarios provinciales en el comedor del Parador Turístico comunal. La discusión se originó cuando Díaz solicitó un camión de la comuna para trasladar fardos de pasto destinados a sus animales.

Al exigírsele la presentación de una nota formal para justificar la salida del vehículo y la rendición del combustible, el intercambio verbal derivó en gritos, insultos y empujones.

Advertisement
La pelea con cuchillo entre un intendente de Neuquén y su antecesor

La situación escaló cuando el exjefe comunal extrajo un cuchillo de su cintura y amenazó de muerte a Infante al grito de “Te voy a matar”. Ante el riesgo inminente, la pareja de Infante, Raquel Fantini, debió interponerse físicamente como escudo para frenar la agresión.

Toda la secuencia fue registrada en video por la coordinadora regional provincial Eliana Rivera. Esa filmación se convirtió en la prueba audiovisual determinante presentada por el Ministerio Público Fiscal para sostener la acusación y lograr la condena expedita de Díaz.

En sus descargos, Díaz reconoció haber extraído un cuchillo tipo “verijero” (de 10 a 12 centímetros), pero argumentó que actuó únicamente en legítima defensa. Sostuvo que le habían preparado “una cama” y que pretendían agredirlo entre tres personas.

Advertisement
La audiencia se realizó en Junín de los Andes.

Por su parte, la esposa de Díaz, Belén Griselda Alfonso, afirmó que Díaz ya había gestionado el uso del camión comunal el día anterior, por lo que su molestia surgió al regresar y notar que el vehículo no estaba disponible. En la previa del juicio abreviado, Alfonso aseguró que fue el propio Infante quien inició la agresión física al tomar a Díaz del pecho.

Finalmente, en la audiencia judicial posterior, la defensora oficial de Díaz, Laura Plaza, avaló el acuerdo de juicio abreviado propuesto por la fiscalía para cerrar la causa.




enfrentamiento con su antecesor,Paz García Pastormerlo,Conforme a

Advertisement
Continue Reading

POLITICA

Recortes en Discapacidad: el Gobierno rechazó las críticas de Bullrich, aunque reconoce que hubo “un error de coordinación”

Published

on


En el Gobierno crece el malestar por los últimos desmarques públicos de Patricia Bullrich y comenzaron a aparecer también críticas internas al funcionamiento de la mesa política. En distintos sectores de la Casa Rosada cuestionan que la jefa del bloque libertario en el Senado exponga diferencias con la conducción y atribuyen parte de sus movimientos a una búsqueda de posicionamiento hacia 2027.

El último episodio se abrió después de que Bullrich asegurara que no había sido informada sobre los cambios en Discapacidad incluidos en el Presupuesto 2027, pese a haber participado de la reunión de la mesa política realizada pocas horas antes del envío del proyecto al Congreso. La senadora sostuvo que esa falta de información “resiente” la relación con los aliados.

Advertisement

En sectores del Ejecutivo reconocen que hubo un error de coordinación, pero cuestionan que Bullrich lo haya hecho público. “Nos equivocamos todos en general. Esto fue un error de coordinación”, admiten en Nación, donde sostienen al mismo tiempo que las diferencias deberían procesarse dentro del Gobierno y no a través de declaraciones públicas.

El episodio profundizó además las dudas sobre para qué sirve actualmente la mesa política. “No sé para qué sirve juntarse si no nos ordenamos”, cuestiona un funcionario de primera línea. En otros despachos describen el espacio como una instancia en la que los integrantes evitan anticipar decisiones por temor a filtraciones y tampoco exponen completamente sus planes.

La mesa se reúne con frecuencia semanal y está integrada por Karina Milei, Diego Santilli, Luis Caputo, Martín Menem, Patricia Bullrich, Ignacio Devitt, Eduardo “Lule” Menem, Santiago Caputo y Fabián Fernández. La reunión del martes se extendió durante casi tres horas y terminó poco antes de que el Presupuesto fuera enviado al Congreso.

Advertisement
La mesa política se reunió para discutir la estrategia sobre Malvinas con la participación del canciller y el ministro de Defensa (Foto: Presidencia).

Bullrich confirmó públicamente que los cambios sobre Discapacidad no se discutieron allí. “No nos enteramos, es la verdad”, sostuvo. También planteó que llegar al Congreso sin conocer el contenido de las iniciativas deja a los jefes parlamentarios expuestos frente a aliados y opositores.

Ese diagnóstico es compartido parcialmente puertas adentro. Funcionarios del Gobierno admiten que distintos sectores del oficialismo tampoco conocían el articulado y que el episodio desordenó la negociación que diputados libertarios ya mantenían con bloques dialoguistas para intentar acordar una salida sobre la Emergencia en Discapacidad.

Advertisement
Continue Reading

Tendencias