/* ===================================================================== TEMA — noche / día, compartido por todas las vistas Vive en y los colores salen de las fichas de base.css. La elección se guarda en localStorage, así se mantiene al saltar de una pantalla a otra. Se aplica apenas carga el script (antes de pintar) para que no haya un destello del tema equivocado. El botón se engancha cuando el DOM esté listo, por si el script va en el . ===================================================================== */ (function () { 'use strict'; var PREDETERMINADO = 'dia'; function aplicarTema(tema) { document.documentElement.dataset.tema = tema; try { localStorage.setItem('tema', tema); } catch (e) { /* modo privado */ } var b = document.getElementById('btnTema'); if (b) { b.textContent = tema === 'dia' ? '☀️' : '🌙'; b.title = tema === 'dia' ? 'Cambiar a modo noche' : 'Cambiar a modo día'; } // Aviso para lo que no se pinta con CSS: los gráficos de Chart.js // sacan sus colores de rótulo y grilla al construirse, así que tienen // que enterarse del cambio para repintarse. document.dispatchEvent(new CustomEvent('temacambiado', { detail: { tema: tema } })); } function temaGuardado() { try { return localStorage.getItem('tema') || PREDETERMINADO; } catch (e) { return PREDETERMINADO; } } function alternar() { aplicarTema(document.documentElement.dataset.tema === 'dia' ? 'noche' : 'dia'); } function enganchar() { var b = document.getElementById('btnTema'); if (b) b.onclick = alternar; aplicarTema(document.documentElement.dataset.tema || temaGuardado()); } aplicarTema(temaGuardado()); if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', enganchar); } else { enganchar(); } // Lo exponemos por si alguna pantalla necesita repintar sus gráficos // después de cambiar de tema. window.aplicarTema = aplicarTema; })();