POLITICA
El Senado aprobó la ley de propiedad privada, pero el Gobierno debió ceder en la reforma del Fuego
En una tensa sesión, que incluyó un sorprendente final, el oficialismo senatorial y zigzagueantes aliados aprobaron esta madrugada una muy fileteada ley de inviolabilidad de la propiedad privada y la definición queda ahora en manos de Diputados. La Libertad Avanza, a cargo de Patricia Bullrich, no sólo tuvo que borrar anteayer la venta de tierra a extranjeros, sino que sufrió un duro traspié en pleno recinto, al bajar -antes de la votación en general- el capítulo para cambiar la ley de Manejo del Fuego.
Bajo este escenario, se mantendrán vigentes los bloqueos de tierras por 30 y 60 años -según el caso- tras incendios, como prevé la norma vigente que impulsó años atrás Máximo Kirchner. Esto significó otro golpe para la porteña y, en paralelo, la algarabía de la oposición -hasta aplaudieron, algo no permitido, y se abrazaron al final- para un proyecto que quedó maltrecho. Lo que quedó en pie del articulado contempla modificaciones relacionadas con las condiciones para activar expropiaciones desde el Estado; y desalojos exprés en usurpaciones -juicios sumarísimos- y veloces para el caso de falta de pago.
Antes del debate, una unión entre Bullrich, dialoguistas y hasta el propio kirchnerismo enterró, en menos de un minuto, las recientes jugadas de Victoria Villarruel -a cargo del Ejecutivo por un viaje al exterior de Javier Milei– para que el pleno discutiera la habilitación o no de dos legisladores -la cristinista Anabel Fernández Sagasti y el radical Flavio Fama– para sesionar por la vía virtual, justificación médica de por medio.
Hay una explicación formal y otra trascendental sobre dicho punto. En primer lugar, como ya estaba caído el capítulo de la venta de tierras a extranjeros, no hacía falta el aporte de la mendocina y el catamarqueño para hacerlo en contra de la propuesta de los libertarios. Curioso lo de Fama: en mayo pasado, fue uno de los que firmó el dictamen de mayoría. La Cámara alta siempre entrega sorpresas.
Lo segundo fue clave: los legisladores salvaron al Senado de un potencial error -aunque era más que entendible y justificado el planteo de Fernández Sagasti, por tratarse de un episodio de fuerza mayor y que no revestía duda- en cuanto a introducir, sin un dictamen de la comisión de Asuntos Constitucionales, eventuales cambios al reglamento del Cuerpo, que requiere dos tercios. En resumen: era abrirle la ventana al diablo para que se cometiera cualquier tipo de atropello sobre el quorum y las votaciones de cara al futuro. Imposible de digerir para las bancadas, que razonaron juntas después de muchísimo tiempo.
Tras ello y, en medio del inicio del tratamiento de la ley, el jefe del interbloque kirchnerista, José Mayans (Formosa), pidió otra moción -se votan de manera automática, sin posibilidad de ida y vuelta- para devolver el tema a comisión. Perdió 38 a 31 con el oficialismo y aliados y evidenció ciertos acompañamientos para el articulado. Horas más tarde apareció la preocupación relacionada con el capítulo sobre manejo del fuego.
Qué se dijo en el recinto
El miembro informante fue el oficialista y titular de la comisión de Asuntos Constitucionales, Agustín Coto (Tierra del Fuego), quien en mayo pasado se ausentó -por un viaje al exterior- cuando La Libertad Avanza firmó el dictamen de mayoría, luego modificado por -al menos- 18 borradores extra. Justificó los desalojos exprés al equiparar el articulado a provincias donde “el proceso es el mismo que se propone” con la reforma en cuestión.
Sobre el Manejo del Fuego, Coto consideró que si bien elevaría “gravemente las penas” ante incendios intencionales, dejó en claro que paralizar los terrores “entre 30 y 60 años es literalmente una vida”. Le respondió el peronista Pablo Bensusán (La Pampa): “Más allá de que hayan eliminado el capítulo de tierras -en referencia a la venta a extranjeros-, el resto de los temas son de extrema gravedad ya que están afectando todos los recursos naturales estratégicos de la Argentina”.
“Otra vez estamos debatiendo sobre un dictamen que no sabemos de qué se trata ya que, una hora antes de empezar esta sesión, recibimos un archivo sin membrete, sin firma, con decenas de modificaciones”, expresó. En ese sentido, agregó: “Modificaciones que hicieron desde mayo y a escondidas, en lugar de plantearlas públicamente en comisiones, que es el lugar donde se deben hacer”.
Por su parte, el radical Maximiliano Abad (Buenos Aires) validó los ítems de expropiaciones y desalojos, aunque se mostró en disconformidad total sobre el manejo del fuego y encendió la primera alarma. En ese sentido, afirmó: “El artículo 41 de la Constitución reconoce el derecho a un ambiente sano y la jurisprudencia ha consolidado el principio de no regresión ambiental. Estamos frente a una reforma que seguramente será judicializada, afectando justamente la previsibilidad que el Gobierno dice querer recuperar”.
En tono político, el peronismo le recordó a Bullrich la voltereta del reciente martes, cuando apareció con nuevo un tope para la venta de tierra a extranjeros que, al día siguiente, sucumbió sin una sola chance. “Gobierno chapucero, desorganizado, que se encuentra totalmente improvisado, que inventa e hizo alarde del ‘si pasa, pasa’”, disparó la riojana Florencia López, quien añadió: “Cuando se da cuenta que no hay agua, directamente cambia los temas. No tuvo empacho de cambiar de gobierno y de partido”.
Ya en los cierres, la chubutense Edith Terenzi adelantó la abstención por desalojo y el no acompañamiento a lo del fuego. Eran cerca de las 23 -los primeros rumores aparecieron entre las 19 y 20- y el capítulo caminaba por el filo de la navaja. “Vamos a dejar sin protección nuestros ecosistemas, sin vallas ni límites para su protección”, indicó la filo radical. Pasadas las 23.30, los más experimentados daban por caído el tema. Casi que dejó de interesar el resto de los discursos. Una situación que no se recordaba desde hace un buen tiempo.
Con el resultado cantado -en voz baja- desde algunas bancas y la desazón libertaria, desde Convicción Federal aprovecharon la ocasión para plegarse a la ola opositora. “Profundamente inconstitucional, vergonzosamente tratada en la comisión”, sentenció Mayans, en representación del kirchnerismo. Selló el final Bullrich que, dos horas antes, subía un video a la red social X refiriéndose sólo a los desalojos. Algo sabía.
“Pareciera que la propiedad privada es una mala palabra”, conjeturó la ex ministra de Seguridad de Milei. Cuestionó a quienes se hacen los distraídos “cuando se toma un territorio, o el de una familia que construyó su casa”. Y resaltó: “Al que vive en una barrio popular y los narcos le sacan la casa, ¿quién los defiende? Ahí no regía la soberanía y lo recuperamos nosotros. La propiedad privada es certeza a los ciudadanos».
“Hicieron de la Constitución un papel muerto”, denunció Bullrich y apuntó hacia todo el peronismo, y enumeró casos de caciques de “movimientos sociales” con causas penales en distintos puntos del país. Y lanzó un dato contundente: el promedio para cobrar post expropiaciones, siempre según sus palabras, es de 18 años. No olvidó de “la mayor estafa, con YPF”, ni la base china que el cristinismo impulsó en Neuquén y la consiguiente pérdida de soberanía para el país allí, algo inédito por ser una mega potencia extranjera.
Puntos principales
*Expropiaciones. De lo que quedó del dictamen original que se apunta a “bienes convenientes o necesarios para la satisfacción de la ‘utilidad pública’, cualquiera sea su naturaleza jurídica, pertenezcan al dominio público o al dominio privado, sean cosas o no”. Y se agrega: “La declaración de utilidad pública será de interpretación restrictiva y deberá identificar en forma específica y concreta el fin perseguido, y la expropiación del bien deberá ser idónea, necesaria y proporcional para alcanzarlo”.
En tanto, la “indemnización sólo comprenderá el valor objetivo del bien, tomando el valor de mercado siempre que sea determinado o determinable y los daños que sean una consecuencia directa e inmediata de la expropiación”; y “no se tomarán en cuenta circunstancias de carácter personal, valores afectivos, ganancias hipotéticas, ni el mayor valor que pueda conferir al bien el proyecto que motive la expropiación”.
La indemnización en cuestión “comprenderá el lucro cesante cuando sea consecuencia directa e inmediata de la expropiación, se encuentre debidamente acreditado mediante prueba objetiva, concreta y suficiente y no implique una duplicación de rubros indemnizatorios o se encuentre ya comprendido dentro del valor objetivo del bien”. Sobre este punto, “en ningún caso, la indemnización podrá exceder al equivalente del 30% del valor del daño emergente, salvo que el expropiado demuestre fehacientemente una afectación superior”.
Un último ítem del capítulo manifiesta que “gozarán de los beneficios de esta ley los ocupantes que, con causa lícita, acrediten la posesión pacífica, ostensible y continua durante diez (10) años con anterioridad al momento de la solicitud de acogimiento al régimen establecido por la presente ley, respecto de inmuebles edificados urbanos y/o que la autoridad de aplicación local defina a estos efectos como tales, que tengan como destino principal el de vivienda única y permanente, y reúnan las características previstas en la reglamentación”.
*Desalojos. “Si el destino es habitacional, previamente a la demanda de desalojo por falta de pago de alquileres el locador debe intimar fehacientemente al locatario al pago de la cantidad debida y otorgar para ello un plazo que no debe ser inferior a DIEZ (10) días corridos contados a partir de la recepción de la intimación, con especificación del lugar de pago”, se plantea.
Seguido a ello, se suma que “el diligenciamiento de la notificación podrá ser dirigido al domicilio denunciado en el contrato por el locatario, sea éste real o electrónico, se tiene por válido aún si el locatario se negara a recibir la notificación o no pudiese perfeccionarse por motivos imputables a él”.
“Cumplido el plazo previsto en el primer párrafo, o habiéndose verificado la extinción de la locación por cualquier motivo, el locatario debe restituir la tenencia del inmueble. Ante el incumplimiento del locatario, el locador puede iniciar la acción judicial de desalojo, la que debe sustanciarse por el procedimiento más breve que prevea la ley. En ningún caso el locador puede negarse a recibir las llaves del inmueble o condicionar su recepción, sin perjuicio de la reserva por las obligaciones pendientes a cargo del locatario”, se enfatiza.
POLITICA
Flávio Bolsonaro se sumó al conflicto entre Milei y Lula: la respuesta del mandatario argentino
Flávio Bolsonaro, el senador por Río de Janeiro y candidato presidencial de la oposición en Brasil, se metió este jueves en el conflicto entre Javier Milei y Lula da Silva y acusó al Gobierno de su rival de “fabricar una crisis” con los otros países de la región.
A través de un comunicado publicado en X bajo la firma del “futuro presidente de Brasil”, Bolsonaro repudió “con vehemencia” la decisión de Lula de bajar el nivel de la representación diplomática con la Argentina, a la que definió como “nación hermana, nuestro mayor socio comercial en América del Sur y amiga histórica del pueblo brasileño”.
En su descargo, el legislador del Partido Liberal sostuvo que la ruptura con Buenos Aires “no es un hecho inevitable”, sino “el resultado directo de una política exterior ideologizada y confrontativa” que, según su acusación, generó tensiones con tres países de la región en pocos meses: Estados Unidos, Paraguay y ahora la Argentina. En esa línea, afirmó: “Ningún gobierno de la historia reciente logró aislar tanto a Brasil en tan poco tiempo”.
El senador también cuestionó el uso político del discurso oficial sobre la “defensa de la dignidad nacional”, al que calificó de instrumento de propaganda, y fue más allá: “La soberanía y el prestigio de Brasil no se protegen con bravatas electoralistas ni rupturas diplomáticas. Se protegen con una economía fuerte, capacidad de negociación y una política exterior comprometida con los intereses permanentes de la Nación”. Además remarcó que la escalada fue unilateral, dado que el Gobierno argentino ya había señalado que no tomaría represalias frente a la decisión de Brasilia.
El mensaje de Bolsonaro, el principal rival de Lula en los próximos comicios de octubre, vinculó la crisis con la Argentina al desgaste regional de la izquierda y fue tajante: “El proyecto del Foro de San Pablo está colapsando en América Latina. Los regímenes que apadrinó (…) trajeron miseria, éxodo y violencia a sus pueblos, y ahora caen uno a uno”.
A su vez, el hijo del expresidente brasileño también apuntó contra el costo económico de la crisis y aseguró que sus consecuencias no las pagará el Gobierno que la generó: “Lo pagarán el productor rural, el industrial, el exportador y el trabajador brasileño, que dependen de estas relaciones para producir, vender y emplear, y que no participaron de las decisiones políticas que provocaron esta crisis”.
Un mensaje directo a Javier Milei
Bolsonaro cerró su comunicado con una promesa de campaña: “A partir de 2027, volveremos a tratar a nuestros vecinos como socios, no como adversarios ideológicos, y reconstruiremos los puentes con la Argentina, Paraguay, Estados Unidos y todas las naciones libres del continente”. Y dedicó las últimas líneas a Milei, a quien llamó “mi estimado amigo”: “Esta crisis no es entre nuestras naciones, es obra de un gobierno en su etapa final. Habrá paz y prosperidad para nuestros pueblos”.
El Presidente argentino no tardó en reaccionar y reposteó el comunicado de Bolsonaro en su cuenta de X, acompañado por las banderas de la Argentina y Brasil, un gesto que profundiza el acercamiento entre el mandatario libertario y la oposición brasileña.
Leé también: En plena crisis con el gobierno de Lula, diputados de La Libertad Avanza recibirán a referentes de Bolsonaro en un foro político
La tensión bilateral escaló el martes, cuando Brasil resolvió no reenviar a su embajador, Julio Bitelli, a Buenos Aires y bajó el nivel de la relación diplomática a encargado de negocios tras las reiteradas descalificaciones de Milei contra Lula, a quien llegó a calificar de “corrupto” y “ladrón”.
Flavio Bolsonaro, Javier Milei, Lula Da Silva
POLITICA
Caso fentanilo: los chats reveladores que complicaron a las jefas de la Anmat y las alusiones a Mario Lugones
La exjefa de la Administración Nacional de Medicamentos, Alimentos y Tecnología (Anmat) Nélida Agustina Bisio y la exdirectora del Instituto de Medicamentos Gabriela Mantecón Fumadó están presas desde anteayer, acusadas de haber sido parte de una maniobra de contaminación de fentanilo que provocó al menos 90 muertes. Declararon ayer, durante horas, ante el juez Ernesto Kreplak y la fiscal Laura Roteta, que ahora analizan esas indagatorias para avanzar con el caso.
Las dos funcionarias eran de carrera. Bisio fue la jefa del máximo organismo de control de alimentos y medicamentos desde que asumió Javier Milei hasta el 5 de enero de 2026, cuando esta causa penal llevaba ya más de siete meses. Mantecón Fumadó fue removida de su cargo el 21 de agosto de 2025. Ella contestó ayer decenas de preguntas de los investigadores y dijo que Mario Lugones, ministro de Salud, era informado de las decisiones que se tomaban sobre el laboratorio Ramallo y HLB (productora y comercializadora del fentanilo contaminado) porque todo lo importante se lo reportaban a él. Declaró que el ministro había promovido el cierre del laboratorio, según informaron fuentes que conocieron el contenido de su indagatoria.
Uno de los chats descubiertos se relaciona con esta declaración. “Solo en dos palabras decime si esto da para cierre porque Mario pregunta”, le dijo Bisio a Mantecón. Es un chat del 26 de marzo de 2025. Pero según declaró Mantecón, Lugones seguía el tema desde tiempo antes.
El dictamen de Roteta, fiscal del caso, y de Sergio Rodríguez, el responsable de la Procuraduría de Investigaciones Administrativas, les imputa a Visio y Mantecón Fumadó un delito muy grave, que reprime el envenenamiento o adulteración de medicamentos con una pena de entre 10 y 25 años cuando resultare muerta alguna persona.
Expedientes administrativos en poder de la Justicia y los chats obtenidos de los teléfonos secuestrados determinaron a los fiscales a avanzar contra Bisio y Mantecón Fumadó con una sospecha clara: que ellas les dieron “cobertura estatal” a laboratorios que no cumplían con los estándares mínimos para funcionar pese a que sabían que estaban en riesgo las vidas de decenas de pacientes. El resultado fue la mayor tragedia sanitaria investigada en la historia de la justicia argentina.
Antes de que el fentanilo contaminado saliera del laboratorio Ramallo (la primera partida fue entregada el 30 de enero de 2025), las funcionarias habían recibido un informe de dos inspectoras de la Anmat que revisaron el lugar entre noviembre y diciembre de 2024, detectaron serias irregularidades y les recomendaron a sus jefas, el 3 de enero, que prohibieran toda la producción de ese laboratorio y ordenaran retirar del mercado drogas elaboradas allí.
Pasó más de un mes hasta que Bisio y Mantecón Fumadó tomaron medidas. ¿Qué pasó en ese lapso? La Justicia detectó que el 14 de enero de 2025, las dos funcionarias se reunieron con Ariel García Furfaro (para los investigadores, está probado que los García son los dueños en las sombras de los laboratorios Ramallo y HLB, “en rigor, un mismo laboratorio”) y otras dos personas de la empresa y les ofrecieron no avanzar contra ellos, a cambio de que presentaran un “plan de acción”. Un día después, el 15 de enero, hubo una nueva reunión de los empresarios con Mantecón Fumadó. De acuerdo con las pruebas de la causa, en ese encuentro ella recibió el plan de acción y les dijo a las autoridades de HLB que las iba a ayudar a “conseguir por otro lado” rótulos y prospectos que la empresa no estaba pudiendo obtener.
Según los chats descubiertos, las autoridades de la Anmat informaron que tenían un informe que recomendaba prohibir la producción, pero que no iban a hacerlo. “Re bien predispuestas ambas, las dos”, dice un mensaje de “Victoria” (García), que había participado de la reunión del 14 de enero en “Av de Mayo”, la sede de la Anmat, celebrando la actitud de las funcionarias a cargo de controlarlos.
Finalmente, el 10 de febrero, Bisio y Mantecón Fumadó firmaron la “carta de advertencia” que prohibió toda la producción de Ramallo y la publicaron el 24 de febrero. Ese mismo día, Mantecón Fumadó avanzó con la orden de retiro del mercado de las drogas. Recién entonces se enteraron los hospitales y sanatorios de que algo no estaba bien. Ya era tarde. La primera venta de fentanilo contaminado había sido el 30 de enero y la primera colocación de la droga que provocó una muerte, el 8 de febrero.
Consulta al ministro
Consultada ayer sobre por qué habían demorado tanto en firmar la carta que frenó la producción de Ramallo, Mantecón Fumadó declaró que, en los primeros días de enero, cuando recibió el resultado de la inspección, ella lo remitió a Bisio quien, a su vez, también lo elevó. Según Mantecón Fumadó, su jefa supuestamente lo consultó con el ministro Lugones, que le respondió -siempre según dijo Mantecón que le dijo Bisio- que avanzaran, pero con cautela. Mantecón uso este argumento para justificar la reunión de enero con los dueños del laboratorio.
De acuerdo con el dictamen de la fiscalía, las demoras de las autoridades continuaron incluso después de haber frenado la producción de Ramallo porque no frenaron la comercialización y circulación de las drogas. Desde el 24 de febrero, distintas droguerías y hospitales se comunicaron con el Iname preguntando si podían usar los lotes del laboratorio Ramallo. En un chat en poder de la Justicia, una técnica del organismo le pregunta a su jefa, Mantecón Fumadó, qué debían responder.
Ella le dice que había que ver si estaban identificados los lotes que no se podían comercializar y la técnica le contestó que eran “todos” los elaborados en el laboratorio Ramallo. “Es un montón de guita que está en la calle”, se lamentó entonces la jefa del Iname.
Para la fiscalía, en este chat resulta “evidente que la preocupación de Mantecón Fumado en este caso no fue proteger la salud de la sociedad, sino evitar posibles pérdidas económicas que pudieran sufrir las empresas de los hermanos García”. Sobre todo, porque la técnica le advirtió luego: “Es peligroso. Una persona que reporte evento adverso o se muera es nuestra responsabilidad. No podemos demorar la respuesta”. Y su jefa le respondió: “Sí, lo sé”.
El 2 de mayo, todo empezó a salir a la luz, según la reconstrucción hecha en el expediente. El Hospital Italiano de La Plata informó a la Anmat que en abril habían tenido un brote de Klebsiella Pneumoniae MLB y Ralstonia Picketti. El 6 de mayo reportó las primeras muertes y todo indicaba que no había existido un contagio intrahospitalario porque los pacientes no habían compartido habitaciones ni médicos. La jefa de farmacia del hospital detectó que a nueve personas fallecidas se les había aplicado fentanilo. El proveniente del laboratorio HLB dio positivo de esas bacterias.
El 11 de mayo, la Anmat prohibió el uso de las drogas de ese lote de fentanilo y ordenó finalmente su recupero. El 12 de mayo, realizó la denuncia penal que dio origen a esta causa. Para entonces, los muertos por el fentanilo contaminado en distintos hospitales y sanatorios del país eran ya 63, cifra que se elevaría a 90 en las semanas siguientes. Murieron desde una beba de 7 meses hasta un hombre de 90. En Rosario fallecieron 36 personas; en Santa Fe, 20; en La Plata, 18; en Córdoba, seis; en Formosa, cinco; en Río Cuarto, dos; también dos en la ciudad de Buenos Aires y uno en Bahía Blanca. Hay además 46 heridos de gravedad.
Viejas señales
Las señales de alerta estaban a la vista desde hacía años. Entre noviembre y diciembre de 2024 se hicieron las inspecciones en Ramallo, pero de acuerdo con la causa judicial, las advertencias sobre las malas prácticas de este grupo empresario, que produjo el fentanilo contaminado, databan de al menos 2023. Ese año, un organismo del Iname dijo, sobre el laboratorio HLB, que implicaba un riesgo sanitario para la población y solicitó la realización de una inspección al laboratorio que -según el dictamen de los fiscales- nunca se llevó a cabo.
En cuanto al laboratorio Ramallo -que producía exclusivamente para HLB- recién el 28 de noviembre de 2024 comenzó la inspección. Un día antes, se le dio aviso a la empresa. En la investigación no está claro aún si ese aviso correspondía. Sus directivos apuraron entonces un operativo de limpieza y emprolijamiento de la situación que quedó registrado en los grupos de WhatsApp de los empleados y directivos del laboratorio. Incluyó desde indicarles a los empleados que no podían comer en el lugar hasta una orden para que se llevaran “los residuos peligrosos a un pallet a la salida del transfer a depósito”. Sin embargo, eso no alcanzó porque, así y todo, las inspectoras detectaron, y dejaron asentadas ya entonces por escrito, las malas condiciones en las que funcionaba el laboratorio.
presas desde anteayer,Declararon ayer,Ariel García Furfaro,operativo de limpieza y emprolijamiento,Paz Rodríguez Niell,Fentanilo Mortal,Conforme a
POLITICA
Uno por uno, qué senadores votaron a favor y cuáles en contra de la Ley de Propiedad Privada
${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 = » + (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();
})();
-
ECONOMIA2 días agoDólar hoy en vivo: a cuánto se negocian todas las cotizaciones minuto a minuto este miércoles 5 de agosto
-
POLITICA8 horas agoLa oposición cuestionó a Benegas Lynch por su empresa para vender campos a extranjeros y el senador libertario se defendió
-
POLITICA2 días agoBrasil retira a su embajador en la Argentina: qué consecuencias tiene la medida diplomática
