28/10/2026 00:46
Titulares
Efemérides del 28 de octubre Juan Sebastián Verón, a agenda abierta: su relación con Chiqui Tapia, el reclamo de Flamengo por Rojo y por qué el modelo SAD "es necesario" La emotiva despedida de Stan Wawrinka del tenis: perdió en Basilea el estético revés a una mano que fue un rayo de luz entre los gigantes La fiesta que no fue: San Miguel pasó de la revolución por un Dream Team al descenso en la Primera Nacional Así quedó la tabla anual de la Liga Profesional: Argentinos ganó una "final" contra Ind. Rivadavia para complicar a Boca, Central y Vélez A 52 años del crimen, confirman con análisis de ADN que Ted Bundy mató a otra adolescente en Utah Platense, histórico primer campeón del torneo femenino de fútbol Sub 12: la goleada contra Vélez en una triple definición simultánea Nico Paz agiganta su repertorio: otro golazo de cabeza para el Como que ratifica que es el jugador del momento en Italia Efemérides del 28 de octubre Juan Sebastián Verón, a agenda abierta: su relación con Chiqui Tapia, el reclamo de Flamengo por Rojo y por qué el modelo SAD "es necesario" La emotiva despedida de Stan Wawrinka del tenis: perdió en Basilea el estético revés a una mano que fue un rayo de luz entre los gigantes La fiesta que no fue: San Miguel pasó de la revolución por un Dream Team al descenso en la Primera Nacional Así quedó la tabla anual de la Liga Profesional: Argentinos ganó una "final" contra Ind. Rivadavia para complicar a Boca, Central y Vélez A 52 años del crimen, confirman con análisis de ADN que Ted Bundy mató a otra adolescente en Utah Platense, histórico primer campeón del torneo femenino de fútbol Sub 12: la goleada contra Vélez en una triple definición simultánea Nico Paz agiganta su repertorio: otro golazo de cabeza para el Como que ratifica que es el jugador del momento en Italia
Boom de Noticias - Villa Carlos Paz
Nacionales

Uno por uno, qué senadores votaron a favor y cuáles en contra de la Ley de Propiedad Privada

Uno por uno, qué senadores votaron a favor y cuáles en contra de la Ley de Propiedad Privada

El Senado aprobó el proyecto que impulsa el Gobierno de Javier Milei en el Congreso. Cómo se pronunciaron La Libertad Avanza, el peronismo, el PRO, la UCR y los bloques provinciale

El Senado aprobó este jueves el proyecto de Ley de Inviolabilidad de la Propiedad Privada que impulsa el Gobierno de Javier Milei, con 37 votos a favor y 33 en contra. Ahora deberá ser tratado por la Cámara de Diputados.

El proyecto del oficialismo había llegado al recinto con cuestionamientos de gobernadores y sectores dialoguistas, que obligaron a retirar el polémico capítulo III sobre la Ley de Tierras. Este jueves también sacaron el Capítulo IV, sobre Manejo del Fuego.

El peronismo habían anticipado su rechazo a la Ley de Propiedad Privada, con diputados, referentes y Axel Kicillof participando fuera del Congreso de la marcha contra la iniciativa de La Libertad Avanza. En tanto, los libertarios contaban con el apoyo del PRO y de un sector de la UCR, con quienes negociaron la letra final del proyecto.

Uno por uno, así votaron los senadores el proyecto de inviolabilidad de la propiedad privada

Negativo

0

Abstención

0

Ausente

0

Por provincia

Provincia...

Por bloque

Bloque...

${status}

`; } 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 = "https://www.clarin.com/redaccionfiler/clarin/desarrollo/2024/politica/senadores/bn/" + (item.url_foto || ""); img.addEventListener("error", () => { img.style.opacity = "0.35"; }, { once: true }); 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(); 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; } 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 }; 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); 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]; 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); 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; 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); }); 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 }; 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)); // 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); }); } 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 = `

Error: falta data-csv-url

`; return; } try { const Papa = await ensurePapa(); 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 }; 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]); }); // hemiciclo + summary renderHemiciclo("big", counts); renderHemiciclo("small", counts); renderSummary(counts); // filtros + ui populateFilters(data); wireUI(data); setLoaded(true); // 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)}

`; } } } init(); })();

Comentarios

Debes iniciar sesion o registrarte con una cuenta de lector para comentar.

Todavia no hay comentarios aprobados.

Boom FM
Boom FM En vivo