Fix Bootstrap y Cache
This commit is contained in:
37
frontend/public/bootstrap.js
vendored
37
frontend/public/bootstrap.js
vendored
@@ -1,5 +1,4 @@
|
||||
// frontend/public/bootstrap.js
|
||||
|
||||
(function() {
|
||||
// El dominio donde se alojan los widgets
|
||||
const WIDGETS_HOST = 'https://widgets.eldia.com';
|
||||
@@ -27,17 +26,17 @@
|
||||
// Función principal
|
||||
async function initWidgets() {
|
||||
try {
|
||||
// 1. Obtener el manifest.json para saber los nombres de archivo actuales
|
||||
// 1. Obtener el manifest.json
|
||||
const response = await fetch(`${WIDGETS_HOST}/manifest.json`);
|
||||
if (!response.ok) {
|
||||
throw new Error('No se pudo cargar el manifest de los widgets.');
|
||||
throw new Error('No se pudo cargar el manifest de los widgets de mercados.');
|
||||
}
|
||||
const manifest = await response.json();
|
||||
|
||||
// 2. Encontrar el punto de entrada principal (nuestro main.tsx)
|
||||
// 2. Encontrar el punto de entrada principal
|
||||
const entryKey = Object.keys(manifest).find(key => manifest[key].isEntry);
|
||||
if (!entryKey) {
|
||||
throw new Error('No se encontró el punto de entrada en el manifest.');
|
||||
throw new Error('No se encontró el punto de entrada en el manifest de mercados.');
|
||||
}
|
||||
|
||||
const entry = manifest[entryKey];
|
||||
@@ -51,12 +50,26 @@
|
||||
});
|
||||
}
|
||||
|
||||
// 4. Cargar el JS principal y esperar a que esté listo
|
||||
// 4. Cargar el JS principal
|
||||
await loadScript(jsUrl);
|
||||
|
||||
// 5. Una vez cargado, llamar a la función de renderizado
|
||||
// 5. Una vez cargado, llamar a la función de renderizado para CADA WIDGET
|
||||
if (window.MercadosWidgets && typeof window.MercadosWidgets.render === 'function') {
|
||||
window.MercadosWidgets.render();
|
||||
console.log('Bootstrap Mercados: La función render existe. Renderizando widgets...');
|
||||
|
||||
// Buscamos los contenedores específicos para los widgets de mercados
|
||||
const widgetContainers = document.querySelectorAll('[data-mercado-widget]');
|
||||
|
||||
if (widgetContainers.length === 0) {
|
||||
console.warn('Bootstrap Mercados: No se encontraron contenedores de widget en la página.');
|
||||
}
|
||||
|
||||
widgetContainers.forEach(container => {
|
||||
// Pasamos el contenedor y su dataset (props) a la función de renderizado
|
||||
window.MercadosWidgets.render(container, container.dataset);
|
||||
});
|
||||
} else {
|
||||
console.error('Bootstrap Mercados: La función window.MercadosWidgets.render no fue encontrada.');
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
@@ -64,7 +77,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
// Iniciar todo el proceso
|
||||
initWidgets();
|
||||
// Esperamos a que el DOM esté listo para ejecutar
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', initWidgets);
|
||||
} else {
|
||||
initWidgets();
|
||||
}
|
||||
|
||||
})();
|
||||
Reference in New Issue
Block a user