Fix Boostrap

This commit is contained in:
2025-09-10 14:58:29 -03:00
parent 143759a929
commit 326b6b3c59
2 changed files with 30 additions and 24 deletions

View File

@@ -1,24 +1,33 @@
server { server {
listen 80; listen 80;
server_name localhost; server_name localhost;
root /usr/share/nginx/html; root /usr/share/nginx/html;
index index.html; index index.html;
# Añadimos una ubicación específica para los archivos .mjs # --- NUEVO BLOQUE ESPECÍFICO PARA BOOTSTRAP.JS ---
location ~ \.mjs$ { location = /bootstrap.js {
# Incluimos los tipos MIME por defecto para que Nginx pueda inferir otros tipos si es necesario # Esta cabecera le dice a los proxies que deben revalidar el archivo
include /etc/nginx/mime.types; # con el servidor de origen antes de servirlo desde la caché.
# Forzamos explícitamente el tipo de contenido para esta ubicación add_header Cache-Control "no-cache, must-revalidate";
default_type application/javascript;
# 'expires off' es otra capa de seguridad para evitar que se cachee
expires off;
# Intenta servir el archivo. Si no existe, devuelve 404.
try_files $uri =404;
} }
# Bloque para otros activos estáticos (con hash) que SÍ pueden ser cacheados agresivamente
location ~* \.(?:js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
# Estos archivos cambian de nombre en cada build, así que pueden
# ser cacheados por mucho tiempo sin riesgo.
expires 1y;
add_header Cache-Control "public";
try_files $uri =404;
}
# Bloque para la SPA
location / { location / {
try_files $uri $uri/ /index.html; try_files $uri $uri/ /index.html;
} }
location ~* \.(?:css|js|jpg|jpeg|gif|png|ico|svg|woff|woff2)$ {
expires 1y;
add_header Cache-Control "public";
}
} }

View File

@@ -54,22 +54,19 @@
// 4. Cargar el JS principal y esperar a que esté listo // 4. Cargar el JS principal y esperar a que esté listo
await loadScript(jsUrl); await loadScript(jsUrl);
console.log('Bootstrap: Intentando llamar a render...');
if (window.EleccionesWidgets && typeof window.EleccionesWidgets.render === 'function') {
console.log('Bootstrap: La función render existe. Llamando ahora.');
window.EleccionesWidgets.render();
} else {
console.error('Bootstrap: La función render no se encontró en window.EleccionesWidgets.');
}
// 5. Una vez cargado, llamar a la función de renderizado // 5. Una vez cargado, llamar a la función de renderizado.
if (window.EleccionesWidgets && typeof window.EleccionesWidgets.render === 'function') { if (window.EleccionesWidgets && typeof window.EleccionesWidgets.render === 'function') {
console.log('Bootstrap: La función render existe. Llamando ahora.'); console.log('Bootstrap: La función render existe. Renderizando todos los widgets encontrados...');
// Encontramos los contenedores aquí y pasamos sus props.
const widgetContainers = document.querySelectorAll('[data-elecciones-widget]'); const widgetContainers = document.querySelectorAll('[data-elecciones-widget]');
if (widgetContainers.length === 0) {
console.warn('Bootstrap: No se encontraron contenedores de widget en la página.');
}
widgetContainers.forEach(container => { widgetContainers.forEach(container => {
// 'dataset' es un objeto que contiene todos los atributos data-* // 'dataset' es un objeto que contiene todos los atributos data-*
// container.dataset = { eleccionesWidget: 'mapa-municipios', focoMunicipio: 'LA PLATA' }
window.EleccionesWidgets.render(container, container.dataset); window.EleccionesWidgets.render(container, container.dataset);
}); });
} else { } else {