Lage-Auswahl im Header + dynamischer Monitor-Feed

Dropdown in der Top-Leiste zeigt alle oeffentlichen Lagen.
[L] = Live-Monitoring, [R] = Recherche.
Immer nur eine Lage aktiv. Bei Auswahl:
- OSINT Monitor Layer zeigt nur Daten dieser Lage
- Klick auf Katastrophen zeigt Summary dieser Lage
- Sidebar zeigt Punkte dieser Lage
Ohne Auswahl: kein Monitor-Overlay.
Dieser Commit ist enthalten in:
Claude Dev
2026-03-24 13:30:52 +01:00
Ursprung 65a30e0d06
Commit 0944b12e2d
5 geänderte Dateien mit 98 neuen und 4 gelöschten Zeilen

Datei anzeigen

@@ -5,6 +5,7 @@ const Globe = {
viewer: null,
layers: {},
_statsInterval: null,
_currentLageId: null,
_labelsLayer: null,
init() {
@@ -83,6 +84,7 @@ const Globe = {
this._toggleLabels(true);
if (typeof VisualModes !== 'undefined') VisualModes.init();
if (typeof Sidebar !== 'undefined') Sidebar.init();
this._loadLagen();
document.getElementById('bottom-stats').textContent = 'Globe initialisiert — Lade Daten...';
},
@@ -107,6 +109,35 @@ const Globe = {
}
},
_loadLagen() {
var select = document.getElementById('lage-select');
if (!select) return;
fetch('/api/monitor-incidents')
.then(function(r) { return r.json(); })
.then(function(lagen) {
var html = '<option value="">-- Lage waehlen --</option>';
(lagen || []).forEach(function(l) {
var typeLabel = l.type === 'research' ? '[R] ' : '[L] ';
html += '<option value="' + l.id + '">' + typeLabel + l.title + '</option>';
});
select.innerHTML = html;
})
.catch(function() {});
},
_onLageChange(lageId) {
this._currentLageId = lageId ? parseInt(lageId) : null;
// Monitor-Layer aktualisieren wenn aktiv
if (typeof MonitorLayer !== 'undefined' && MonitorLayer._points) {
MonitorLayer._data = [];
MonitorLayer._incidents = [];
MonitorLayer._render();
if (lageId) MonitorLayer._fetchForLage(lageId);
}
// Sidebar aktualisieren
if (typeof Sidebar !== 'undefined') Sidebar.update();
},
_setupLayerToggles() {
var toggles = {
'layer-monitor': function(on) { on ? MonitorLayer.start(Globe.viewer) : MonitorLayer.stop(); },