From 9463ca87ea190c645f5cf0d7fbdf2a7f1d6398b7 Mon Sep 17 00:00:00 2001 From: Claude Code Date: Sun, 15 Mar 2026 15:04:15 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20Kontextabh=C3=A4ngige=20Karten-Kategori?= =?UTF-8?q?en=20im=20Lagebild?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Neue Keys (primary/secondary/tertiary/mentioned) mit dynamischen Labels aus category_labels API-Feld. Co-Authored-By: Claude Opus 4.6 (1M context) --- lagebild/lagebild.js | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/lagebild/lagebild.js b/lagebild/lagebild.js index 8ee6148..8a5876a 100644 --- a/lagebild/lagebild.js +++ b/lagebild/lagebild.js @@ -683,19 +683,28 @@ var Lagebild = { // Kategorie-Farben var categoryColors = { - target: '#ef4444', - retaliation: '#f59e0b', - response: '#f59e0b', - actor: '#3b82f6', + primary: '#ef4444', + secondary: '#f59e0b', + tertiary: '#3b82f6', mentioned: '#7b7b7b' }; - var categoryLabels = { - target: 'Angegriffene Ziele', - retaliation: 'Vergeltung / Eskalation', - response: 'Reaktion / Gegenmassnahmen', - actor: 'Strategische Akteure', + var defaultCategoryLabels = { + primary: 'Hauptgeschehen', + secondary: 'Reaktionen', + tertiary: 'Beteiligte', mentioned: 'Erwaehnt' }; + // Dynamische Labels aus API verwenden (falls vorhanden) + var categoryLabels = {}; + if (this.data && this.data.category_labels) { + var apiLabels = this.data.category_labels; + categoryLabels.primary = apiLabels.primary || defaultCategoryLabels.primary; + categoryLabels.secondary = apiLabels.secondary || defaultCategoryLabels.secondary; + categoryLabels.tertiary = apiLabels.tertiary || defaultCategoryLabels.tertiary; + categoryLabels.mentioned = apiLabels.mentioned || defaultCategoryLabels.mentioned; + } else { + categoryLabels = defaultCategoryLabels; + } // Locations aus API-Daten laden var locs = (this.data && this.data.locations) ? this.data.locations : []; @@ -728,8 +737,8 @@ var Lagebild = { var div = L.DomUtil.create('div', 'map-legend'); div.style.cssText = 'background:#151D2E;padding:10px 14px;border-radius:4px;border:1px solid #1E2D45;box-shadow:0 2px 8px rgba(0,0,0,0.3);font-size:0.8rem;line-height:1.8;color:#E8ECF4;'; var html = 'Legende
'; - ['target', 'response', 'retaliation', 'actor', 'mentioned'].forEach(function(cat) { - if (usedCategories[cat]) { + ['primary', 'secondary', 'tertiary', 'mentioned'].forEach(function(cat) { + if (usedCategories[cat] && categoryLabels[cat]) { html += ' ' + categoryLabels[cat] + '
'; } });