Tutorial Karte: Z-Index-Fix, Chat-Button verstecken, Tile-Rendering

- Fullscreen-Overlay z-index auf 9998 (ueber Chat-Button 9999 -> Chat
  wird mit display:none versteckt waehrend Karten-Step)
- Map-Container bekommt explizite flex:1 + min-height:400px damit
  Leaflet die Container-Groesse korrekt erkennt
- Mehrere invalidateSize-Aufrufe (100/300/600ms) vor dem Zoom
- flyTo erst nach 1200ms (Tiles muessen erst laden bei Zoom 5)
- Bubble target auf .map-fullscreen-header statt ganzen Overlay
- fsContainer Styles werden beim Schliessen zurueckgesetzt

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
Claude Dev
2026-03-16 16:53:46 +01:00
Ursprung 4a1ab67703
Commit 47b0ec306f
2 geänderte Dateien mit 31 neuen und 14 gelöschten Zeilen

Datei anzeigen

@@ -764,7 +764,7 @@
<script src="/static/js/api_network.js?v=20260316a"></script>
<script src="/static/js/network-graph.js?v=20260316a"></script>
<script src="/static/js/app_network.js?v=20260316a"></script>
<script src="/static/js/tutorial.js?v=20260316o"></script>
<script src="/static/js/tutorial.js?v=20260316p"></script>
<script src="/static/js/chat.js?v=20260316f"></script>
<script>document.addEventListener("DOMContentLoaded",function(){Chat.init();Tutorial.init()});</script>

Datei anzeigen

@@ -933,7 +933,7 @@ const Tutorial = {
// 17 - Karte (Vollbild)
{
id: 'karte',
target: '#map-fullscreen-overlay',
target: '.map-fullscreen-header',
title: 'Geografische Verteilung',
text: 'Die Karte zeigt per Geoparsing automatisch erkannte Orte aus den Quellen.<br><br>'
+ '<strong style="color:#EF4444;">&#9679;</strong> <strong>Hauptereignisort</strong> - Zentraler Ort des Geschehens<br>'
@@ -946,10 +946,16 @@ const Tutorial = {
position: 'left',
disableNav: true,
onEnter: function() {
// Chat-Button verstecken im Vollbild
var chatBtn = document.getElementById('chat-toggle-btn');
if (chatBtn) chatBtn.style.display = 'none';
Tutorial._openDemoMapFullscreen();
},
onExit: function() {
Tutorial._closeDemoMapFullscreen();
// Chat-Button wieder anzeigen
var chatBtn = document.getElementById('chat-toggle-btn');
if (chatBtn) chatBtn.style.display = '';
Tutorial._clearSubHighlights();
},
},
@@ -1487,7 +1493,7 @@ const Tutorial = {
// Overlay anzeigen
overlay.classList.add('active');
overlay.style.zIndex = '9002';
overlay.style.zIndex = '9998';
if (fsStats) fsStats.textContent = '3 Orte / 9 Artikel';
// Alte Demo-Map entfernen
@@ -1495,9 +1501,12 @@ const Tutorial = {
// Map im Fullscreen-Container
fsContainer.innerHTML = '';
// Explizite Hoehe setzen damit Leaflet korrekt rendert
fsContainer.style.flex = '1';
fsContainer.style.minHeight = '0';
var mapDiv = document.createElement('div');
mapDiv.id = 'tutorial-fs-map';
mapDiv.style.cssText = 'width:100%;height:100%;';
mapDiv.style.cssText = 'width:100%;height:100%;min-height:400px;';
fsContainer.appendChild(mapDiv);
var isDark = !document.documentElement.getAttribute('data-theme') || document.documentElement.getAttribute('data-theme') !== 'light';
@@ -1565,17 +1574,21 @@ const Tutorial = {
// Resize + animierter Zoom auf Hamburg
var map = this._demoMap;
// Mehrere invalidateSize-Aufrufe damit Leaflet die Container-Groesse erkennt
[100, 300, 600].forEach(function(delay) {
setTimeout(function() { if (map) map.invalidateSize(); }, delay);
});
// Warten bis Tiles geladen, dann sanft auf Hamburg zoomen
setTimeout(function() {
if (map) map.invalidateSize();
// Sanft auf Hamburg zoomen
setTimeout(function() {
if (map) map.flyTo([53.54, 9.97], 13, { duration: 2.5 });
if (map) {
map.invalidateSize();
map.flyTo([53.54, 9.97], 13, { duration: 2.5 });
}
// Nach Zoom: Demo starten
setTimeout(function() {
self._simulateMapDemo();
}, 3000);
}, 500);
}, 200);
}, 3200);
}, 1200);
},
_closeDemoMapFullscreen() {
@@ -1585,7 +1598,11 @@ const Tutorial = {
overlay.style.zIndex = '';
}
var fsContainer = document.getElementById('map-fullscreen-container');
if (fsContainer) fsContainer.innerHTML = '';
if (fsContainer) {
fsContainer.innerHTML = '';
fsContainer.style.flex = '';
fsContainer.style.minHeight = '';
}
this._destroyDemoMap();
},