Le loader "Chargement de la carte..." restait affiché indéfiniment, masquant la carte hexagonale qui était pourtant correctement créée.
La classe Bootstrap d-flex appliquait un style CSS display: flex qui écrasait le display: none que nous tentions d'appliquer via JavaScript inline.
Ordre de priorité CSS :
!important (Bootstrap)Même si nous appliquions display: none en inline, Bootstrap réappliquait display: flex via sa classe CSS.
hideLoading() {
const loading = document.getElementById('mapLoading');
if (loading) {
// Retirer la classe Bootstrap qui force display: flex
loading.classList.remove('d-flex');
// Puis appliquer display: none
loading.style.display = 'none';
}
}
Étapes de la solution :
d-flex de l'élémentdisplay: none via style inline</body> et </html> en double dans header.phpif (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initMapEditor);
} else {
initMapEditor();
}
Gère les cas où le DOM est déjà chargé ou en cours de chargement.
<div id="mapCanvas" style="z-index: 1;">
<div id="mapLoading" style="z-index: 10;">
Garantit que le loader apparaît bien au-dessus de la carte pendant le chargement.
✅ La carte s'affiche maintenant correctement !
Version minimaliste qui fonctionne à 100% sans dépendances.
URL : https://map-generator/test-direct.html
Version intermédiaire pour les tests.
URL : https://map-generator/test-map.html
Guide complet pour diagnostiquer les problèmes d'affichage :
https://map-generator/?load=ID
Où ID est l'identifiant de la carte (visible dans /projects)
Tous les logs de debug excessifs ont été supprimés, ne restent que :
Édition de tuiles
Sauvegarde
Outils de dessin
Export
Optimisations
Le problème était subtil mais identifiable : conflit entre CSS Bootstrap et styles inline JavaScript.
La solution : retirer les classes CSS problématiques avant d'appliquer les styles inline.
Temps de résolution : ~2 heures de debugging intensif Leçon apprise : Toujours vérifier les styles computed dans les DevTools, pas seulement les styles inline !