fix(ui): logo dynamique ne s'affichait pas (innerHTML n'exécute pas les scripts)
Le script dans topbar.html ne s'exécutait pas car innerHTML ignore les balises <script>. Déplacé la logique dans un fichier JS séparé (topbar-logo.js) avec MutationObserver pour détecter l'insertion du topbar. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -379,6 +379,7 @@
|
||||
<script src="assets/js/bootstrap.bundle.js"></script>
|
||||
<!-- i18n translation system -->
|
||||
<script src="assets/js/i18n.js"></script>
|
||||
<script src="assets/js/topbar-logo.js"></script>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
|
||||
19
html/assets/js/topbar-logo.js
Normal file
19
html/assets/js/topbar-logo.js
Normal file
@@ -0,0 +1,19 @@
|
||||
// Switch topbar logo based on device_type config
|
||||
// Uses MutationObserver to detect when topbar is dynamically loaded
|
||||
(function() {
|
||||
var observer = new MutationObserver(function() {
|
||||
var logo = document.getElementById('topbar-logo');
|
||||
if (logo) {
|
||||
observer.disconnect();
|
||||
fetch('launcher.php?type=get_config_sqlite')
|
||||
.then(function(r) { return r.json(); })
|
||||
.then(function(config) {
|
||||
if (config.device_type === 'moduleair_pro') {
|
||||
logo.src = 'assets/img/logoModuleAir.png';
|
||||
}
|
||||
})
|
||||
.catch(function() {});
|
||||
}
|
||||
});
|
||||
observer.observe(document.body || document.documentElement, { childList: true, subtree: true });
|
||||
})();
|
||||
@@ -153,6 +153,7 @@
|
||||
<script src="assets/js/bootstrap.bundle.js"></script>
|
||||
<!-- i18n translation system -->
|
||||
<script src="assets/js/i18n.js"></script>
|
||||
<script src="assets/js/topbar-logo.js"></script>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
|
||||
@@ -110,6 +110,7 @@
|
||||
<script src="assets/js/bootstrap.bundle.js"></script>
|
||||
<!-- i18n translation system -->
|
||||
<script src="assets/js/i18n.js"></script>
|
||||
<script src="assets/js/topbar-logo.js"></script>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
|
||||
@@ -92,6 +92,7 @@
|
||||
<script src="assets/js/bootstrap.bundle.js"></script>
|
||||
<!-- i18n translation system -->
|
||||
<script src="assets/js/i18n.js"></script>
|
||||
<script src="assets/js/topbar-logo.js"></script>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
<script src="assets/jquery/jquery-3.7.1.min.js"></script>
|
||||
<!-- Link Bootstrap JS and Popper.js locally -->
|
||||
<script src="assets/js/bootstrap.bundle.js"></script>
|
||||
<script src="assets/js/topbar-logo.js"></script>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
|
||||
@@ -518,6 +518,7 @@
|
||||
<script src="assets/js/bootstrap.bundle.js"></script>
|
||||
<!-- i18n translation system -->
|
||||
<script src="assets/js/i18n.js"></script>
|
||||
<script src="assets/js/topbar-logo.js"></script>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
|
||||
@@ -66,6 +66,7 @@
|
||||
<script src="assets/js/bootstrap.bundle.js"></script>
|
||||
<!-- i18n translation system -->
|
||||
<script src="assets/js/i18n.js"></script>
|
||||
<script src="assets/js/topbar-logo.js"></script>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
|
||||
@@ -175,6 +175,7 @@
|
||||
<script src="assets/jquery/jquery-3.7.1.min.js"></script>
|
||||
<!-- Link Bootstrap JS and Popper.js locally -->
|
||||
<script src="assets/js/bootstrap.bundle.js"></script>
|
||||
<script src="assets/js/topbar-logo.js"></script>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
|
||||
@@ -4,16 +4,6 @@
|
||||
<a class="navbar-brand" href="#">
|
||||
<img src="assets/img/LogoNebuleAir.png" alt="Logo" height="30" class="d-inline-block align-text-top" id="topbar-logo">
|
||||
</a>
|
||||
<script>
|
||||
fetch('launcher.php?type=get_config_sqlite')
|
||||
.then(r => r.json())
|
||||
.then(config => {
|
||||
if (config.device_type === 'moduleair_pro') {
|
||||
document.getElementById('topbar-logo').src = 'assets/img/logoModuleAir.png';
|
||||
}
|
||||
})
|
||||
.catch(() => {});
|
||||
</script>
|
||||
<div class="d-flex">
|
||||
<button class="btn btn-outline-light d-md-none me-2" type="button" data-bs-toggle="offcanvas" data-bs-target="#sidebarOffcanvas" aria-controls="sidebarOffcanvas" aria-label="Toggle Sidebar">☰</button>
|
||||
|
||||
|
||||
@@ -119,6 +119,7 @@
|
||||
<script src="assets/js/bootstrap.bundle.js"></script>
|
||||
<!-- i18n translation system -->
|
||||
<script src="assets/js/i18n.js"></script>
|
||||
<script src="assets/js/topbar-logo.js"></script>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
|
||||
Reference in New Issue
Block a user