Spaces:
Sleeping
Sleeping
| // assets/clientside.js | |
| console.log(">>> assets/clientside.js (themeManager version) - SCRIPT EXECUTION STARTED <<<"); | |
| try { | |
| // Gunakan namespace 'themeManager' | |
| window.themeManager = { | |
| // Gunakan nama fungsi 'initPageTheme' | |
| initPageTheme: function(pathname, storedThemePreference) { | |
| console.log("JS: themeManager.initPageTheme - Called. Pathname:", pathname, "Stored Pref:", storedThemePreference); | |
| let themeToApply = 'LIGHT'; | |
| if (storedThemePreference && typeof storedThemePreference.theme === 'string') { | |
| themeToApply = storedThemePreference.theme; | |
| } | |
| console.log("JS: themeManager.initPageTheme - Theme to apply:", themeToApply); | |
| // PASTIKAN URL INI SESUAI DENGAN THEME_LIGHT DAN THEME_DARK DI APP.PY | |
| const lightThemeUrl = "https://cdn.jsdelivr.net/npm/bootswatch@5.3.2/dist/flatly/bootstrap.min.css"; | |
| const darkThemeUrl = "https://cdn.jsdelivr.net/npm/bootswatch@5.3.2/dist/darkly/bootstrap.min.css"; | |
| let newThemeUrl = lightThemeUrl; | |
| document.body.classList.remove('theme-dark', 'theme-light'); | |
| if (themeToApply === 'DARK') { | |
| newThemeUrl = darkThemeUrl; | |
| document.body.classList.add('theme-dark'); | |
| } else { | |
| newThemeUrl = lightThemeUrl; | |
| document.body.classList.add('theme-light'); | |
| } | |
| let themeLink = document.getElementById('bootstrap-theme'); | |
| if (!themeLink) { | |
| console.log("JS: themeManager.initPageTheme - Creating new theme link element."); | |
| themeLink = document.createElement('link'); | |
| themeLink.id = 'bootstrap-theme'; | |
| themeLink.rel = 'stylesheet'; | |
| themeLink.type = 'text/css'; | |
| document.getElementsByTagName('head')[0].appendChild(themeLink); | |
| } | |
| if (themeLink.href !== newThemeUrl) { | |
| console.log("JS: themeManager.initPageTheme - Setting theme link href to:", newThemeUrl); | |
| themeLink.href = newThemeUrl; | |
| } | |
| return window.dash_clientside.no_update; | |
| }, | |
| // Gunakan nama fungsi 'applyPageTheme' | |
| applyPageTheme: function(themePreferenceFromStore) { | |
| console.log("JS: themeManager.applyPageTheme - Called. New pref from store:", themePreferenceFromStore); | |
| let themeToApply = 'LIGHT'; | |
| if (themePreferenceFromStore && typeof themePreferenceFromStore.theme === 'string') { | |
| themeToApply = themePreferenceFromStore.theme; | |
| } | |
| console.log("JS: themeManager.applyPageTheme - Theme to apply:", themeToApply); | |
| // PASTIKAN URL INI SESUAI DENGAN THEME_LIGHT DAN THEME_DARK DI APP.PY | |
| const lightThemeUrl = "https://cdn.jsdelivr.net/npm/bootswatch@5.3.2/dist/flatly/bootstrap.min.css"; | |
| const darkThemeUrl = "https://cdn.jsdelivr.net/npm/bootswatch@5.3.2/dist/darkly/bootstrap.min.css"; | |
| let newThemeUrl = lightThemeUrl; | |
| document.body.classList.remove('theme-dark', 'theme-light'); | |
| if (themeToApply === 'DARK') { | |
| newThemeUrl = darkThemeUrl; | |
| document.body.classList.add('theme-dark'); | |
| } else { | |
| newThemeUrl = lightThemeUrl; | |
| document.body.classList.add('theme-light'); | |
| } | |
| let themeLink = document.getElementById('bootstrap-theme'); | |
| if (!themeLink) { | |
| console.log("JS: themeManager.applyPageTheme - Creating new theme link element."); | |
| themeLink = document.createElement('link'); | |
| themeLink.id = 'bootstrap-theme'; | |
| themeLink.rel = 'stylesheet'; | |
| themeLink.type = 'text/css'; | |
| document.getElementsByTagName('head')[0].appendChild(themeLink); | |
| } | |
| if (themeLink.href !== newThemeUrl) { | |
| console.log("JS: themeManager.applyPageTheme - Setting theme link href to:", newThemeUrl); | |
| themeLink.href = newThemeUrl; | |
| } | |
| return window.dash_clientside.no_update; | |
| } | |
| }; | |
| console.log(">>> assets/clientside.js (themeManager version) - window.themeManager object DEFINED:", window.themeManager); | |
| if (typeof window.themeManager.initPageTheme !== 'function') { | |
| console.error(">>> DEBUG: assets/clientside.js - initPageTheme IS NOT a function on window.themeManager!"); | |
| } | |
| if (typeof window.themeManager.applyPageTheme !== 'function') { | |
| console.error(">>> DEBUG: assets/clientside.js - applyPageTheme IS NOT a function on window.themeManager!"); | |
| } | |
| } catch (e) { | |
| console.error(">>> DEBUG: assets/clientside.js (themeManager version) - ERROR DURING SCRIPT EXECUTION:", e); | |
| } | |
| console.log(">>> assets/clientside.js (themeManager version) - SCRIPT EXECUTION FINISHED <<<"); |