Lagebild: Wow-Effekte hinzugefügt

- Gold-Glow-Effekte auf Stat-Cards, Tabs, CTA-Button, Badge, Timeline
- Tab-Wechsel mit Slide-Fade-Animation statt hartem Cut
- Partikel-Netzwerk im Hero-Hintergrund (Canvas, pure JS)
- Pulsierende Karten-Marker mit farbigen Ringen statt statischer Pins
- Live-Feed-Ticker im Hero (rotiert Statusmeldungen)
- Scroll-Progress-Bar am oberen Rand (goldener Balken)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dieser Commit ist enthalten in:
Claude Code
2026-03-07 16:36:08 +01:00
Ursprung 15f076b06f
Commit 2e2726c013
3 geänderte Dateien mit 2365 neuen und 2128 gelöschten Zeilen

Datei anzeigen

@@ -13,6 +13,9 @@
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
</head>
<body class="lagebild-page">
<!-- Scroll Progress Bar -->
<div class="scroll-progress" id="scroll-progress"></div>
<!-- Navigation -->
<nav class="navbar" role="navigation">
<div class="nav-container">
@@ -52,6 +55,7 @@
<!-- Hero Section -->
<section class="lagebild-hero">
<canvas id="hero-particles"></canvas>
<div class="hero-bg-pattern"></div>
<div class="container">
<div class="hero-badge">
@@ -63,6 +67,9 @@
<!-- Stat Cards -->
<div class="hero-stats" id="hero-stats"></div>
<!-- Live Feed Ticker -->
<div class="live-feed" id="live-feed"></div>
</div>
</section>

Datei anzeigen

@@ -15,6 +15,8 @@
--lb-success: #10B981;
--lb-warning: #F59E0B;
--lb-error: #EF4444;
--lb-glow: rgba(200, 168, 81, 0.35);
--lb-glow-soft: rgba(200, 168, 81, 0.15);
}
/* ---------- Page Base ---------- */
@@ -24,6 +26,19 @@
color: var(--lb-text);
}
/* ---------- Scroll Progress Bar ---------- */
.scroll-progress {
position: fixed;
top: 0;
left: 0;
height: 3px;
width: 0;
background: linear-gradient(90deg, var(--lb-accent), #E8D48B);
z-index: 99999;
transition: width 0.08s linear;
box-shadow: 0 0 10px var(--lb-glow), 0 0 3px var(--lb-accent);
}
/* ---------- Navigation Dark Override ---------- */
.lagebild-page .navbar {
background: rgba(11, 17, 33, 0.95) !important;
@@ -103,6 +118,16 @@
z-index: 1;
}
/* Hero Particles Canvas */
#hero-particles {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
z-index: 0;
pointer-events: none;
}
/* Hero Badge */
.hero-badge {
display: inline-flex;
@@ -117,6 +142,7 @@
letter-spacing: 1.5px;
color: var(--lb-accent);
margin-bottom: 1.5rem;
box-shadow: 0 0 20px var(--lb-glow-soft);
}
.badge-dot {
width: 8px;
@@ -124,6 +150,7 @@
background: var(--lb-accent);
border-radius: 50%;
animation: pulse-dot 2s infinite;
box-shadow: 0 0 8px var(--lb-glow);
}
@keyframes pulse-dot {
0%, 100% { opacity: 1; transform: scale(1); }
@@ -171,11 +198,12 @@
-webkit-backdrop-filter: blur(8px);
padding: 14px 16px;
border-radius: var(--radius-md, 8px);
transition: border-color 0.3s, background 0.3s;
transition: border-color 0.3s, background 0.3s, box-shadow 0.3s;
}
.stat-card:hover {
border-color: rgba(200, 168, 81, 0.3);
border-color: rgba(200, 168, 81, 0.4);
background: rgba(255, 255, 255, 0.08);
box-shadow: 0 0 24px var(--lb-glow-soft), 0 4px 16px rgba(0, 0, 0, 0.2);
}
.stat-card-icon {
width: 36px;
@@ -211,6 +239,42 @@
margin-top: 2px;
}
/* ---------- Live Feed Ticker ---------- */
.live-feed {
margin-top: 1.5rem;
height: 28px;
overflow: hidden;
position: relative;
}
.live-feed-item {
position: absolute;
width: 100%;
text-align: center;
font-size: 0.82rem;
color: rgba(255, 255, 255, 0.5);
letter-spacing: 0.3px;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
opacity: 0;
transform: translateY(10px);
transition: opacity 0.5s, transform 0.5s;
}
.live-feed-item.active {
opacity: 1;
transform: translateY(0);
}
.live-feed-dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--lb-accent);
box-shadow: 0 0 6px var(--lb-glow);
animation: pulse-dot 2s infinite;
flex-shrink: 0;
}
/* ---------- Control Bar ---------- */
.control-bar {
background: var(--lb-bg-card);
@@ -269,6 +333,7 @@
.timeline-day.active {
background: rgba(200, 168, 81, 0.1);
border-color: var(--lb-accent);
box-shadow: 0 0 12px var(--lb-glow-soft);
}
.timeline-dot {
position: absolute;
@@ -280,6 +345,7 @@
border-radius: 50%;
animation: pulse-dot 2s infinite;
border: 2px solid var(--lb-bg-card);
box-shadow: 0 0 8px var(--lb-glow);
}
.timeline-day-num {
font-size: 1.1rem;
@@ -395,10 +461,12 @@
}
.tab-btn:hover {
color: var(--lb-text);
text-shadow: 0 0 12px var(--lb-glow-soft);
}
.tab-btn.active {
color: var(--lb-accent);
border-bottom-color: var(--lb-accent);
text-shadow: 0 0 16px var(--lb-glow-soft);
}
.tab-badge {
display: inline-block;
@@ -415,9 +483,16 @@
background: rgba(200, 168, 81, 0.22);
}
/* Tab Panels */
/* Tab Panels with Slide Animation */
.tab-panel { display: none; }
.tab-panel.active { display: block; }
.tab-panel.active {
display: block;
animation: tabFadeSlideIn 0.35s ease-out;
}
@keyframes tabFadeSlideIn {
from { opacity: 0; transform: translateY(12px); }
to { opacity: 1; transform: translateY(0); }
}
/* ---------- Main Content ---------- */
.lagebild-main {
@@ -445,6 +520,7 @@
right: 0;
height: 3px;
background: var(--lb-accent);
box-shadow: 0 2px 12px var(--lb-glow-soft);
}
.card-header {
padding: 24px 32px 0;
@@ -764,6 +840,37 @@
color: var(--lb-accent) !important;
}
/* Map Pulse Markers */
.pulse-marker-wrapper {
position: relative;
width: 20px;
height: 20px;
}
.pulse-marker-ring {
position: absolute;
width: 20px;
height: 20px;
border-radius: 50%;
border: 2px solid;
animation: mapPulseRing 2.5s ease-out infinite;
opacity: 0;
}
.pulse-marker-ring:nth-child(2) {
animation-delay: 0.8s;
}
.pulse-marker-dot {
position: absolute;
width: 10px;
height: 10px;
border-radius: 50%;
top: 5px;
left: 5px;
}
@keyframes mapPulseRing {
0% { transform: scale(1); opacity: 0.8; }
100% { transform: scale(3.5); opacity: 0; }
}
/* ---------- Fact Check Cards ---------- */
.fc-stats {
display: flex;
@@ -988,11 +1095,13 @@
text-decoration: none;
font-size: 0.85rem;
white-space: nowrap;
transition: background 0.2s, transform 0.2s;
transition: background 0.2s, transform 0.2s, box-shadow 0.2s;
box-shadow: 0 0 16px var(--lb-glow-soft);
}
.floating-cta-btn:hover {
background: var(--lb-accent-hover);
transform: scale(1.03);
box-shadow: 0 0 28px var(--lb-glow);
}
.floating-cta-close {
background: none;
@@ -1200,4 +1309,8 @@
.sources-list {
columns: 1;
}
.live-feed {
margin-top: 1rem;
}
}

Datei anzeigen

@@ -1,6 +1,6 @@
/**
* AegisSight Lagebild Page - Dark Theme Design Refresh
* Count-Up, Timeline mit Dropdown, Scroll-Reveal, Smooth-Scroll, Favicons
* Count-Up, Timeline, Scroll-Reveal, Particles, Live-Feed, Pulse-Markers
*/
/** Feste Zeitzone fuer alle Anzeigen - NIEMALS aendern. */
@@ -26,6 +26,8 @@ var Lagebild = {
if (typeof initTranslations === 'function') {
try { initTranslations(); } catch(e) {}
}
this.initScrollProgress();
this.initParticles();
try {
var resp = await fetch('data/current.json?t=' + Date.now());
if (!resp.ok) throw new Error('HTTP ' + resp.status);
@@ -42,6 +44,7 @@ var Lagebild = {
this.initLangToggle();
this.initScrollReveal();
this.initFloatingCta();
this.initLiveFeed();
} catch (e) {
console.error('Lagebild laden fehlgeschlagen:', e);
this.showError();
@@ -55,12 +58,126 @@ var Lagebild = {
this.renderCurrentView();
},
/* ===== SCROLL PROGRESS BAR ===== */
initScrollProgress: function() {
var bar = document.getElementById('scroll-progress');
if (!bar) return;
window.addEventListener('scroll', function() {
var scrollTop = window.scrollY;
var docHeight = document.documentElement.scrollHeight - window.innerHeight;
if (docHeight <= 0) return;
bar.style.width = ((scrollTop / docHeight) * 100) + '%';
});
},
/* ===== HERO PARTICLES ===== */
initParticles: function() {
var canvas = document.getElementById('hero-particles');
if (!canvas) return;
var ctx = canvas.getContext('2d');
var particles = [];
var count = 35;
var connectDist = 120;
function resize() {
var hero = canvas.parentElement;
canvas.width = hero.offsetWidth;
canvas.height = hero.offsetHeight;
}
resize();
window.addEventListener('resize', resize);
for (var i = 0; i < count; i++) {
particles.push({
x: Math.random() * canvas.width,
y: Math.random() * canvas.height,
vx: (Math.random() - 0.5) * 0.4,
vy: (Math.random() - 0.5) * 0.4,
r: Math.random() * 1.5 + 0.5
});
}
function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
// Draw connections
for (var i = 0; i < particles.length; i++) {
for (var j = i + 1; j < particles.length; j++) {
var dx = particles[i].x - particles[j].x;
var dy = particles[i].y - particles[j].y;
var dist = Math.sqrt(dx * dx + dy * dy);
if (dist < connectDist) {
var alpha = (1 - dist / connectDist) * 0.15;
ctx.beginPath();
ctx.strokeStyle = 'rgba(200, 168, 81, ' + alpha + ')';
ctx.lineWidth = 0.5;
ctx.moveTo(particles[i].x, particles[i].y);
ctx.lineTo(particles[j].x, particles[j].y);
ctx.stroke();
}
}
}
// Draw & move particles
for (var k = 0; k < particles.length; k++) {
var p = particles[k];
ctx.beginPath();
ctx.arc(p.x, p.y, p.r, 0, Math.PI * 2);
ctx.fillStyle = 'rgba(200, 168, 81, 0.4)';
ctx.fill();
p.x += p.vx;
p.y += p.vy;
if (p.x < 0 || p.x > canvas.width) p.vx *= -1;
if (p.y < 0 || p.y > canvas.height) p.vy *= -1;
}
requestAnimationFrame(draw);
}
draw();
},
/* ===== LIVE FEED TICKER ===== */
initLiveFeed: function() {
var container = document.getElementById('live-feed');
if (!container) return;
var d = this.data;
var genDate = new Date(this.toUTC(d.generated_at));
var diffMin = Math.max(1, Math.round((Date.now() - genDate.getTime()) / 60000));
var diffText = diffMin < 60 ? ('vor ' + diffMin + ' Min') : ('vor ' + Math.round(diffMin / 60) + ' Std');
var messages = [
'Letzte Aktualisierung: ' + diffText,
d.incident.source_count + ' Quellen aktiv \u00fcberwacht',
d.incident.article_count + ' Artikel analysiert \u2013 ' + d.incident.factcheck_count + ' Faktenchecks durchgef\u00fchrt',
'Automatisierte KI-Analyse aus ' + d.incident.source_count + ' unabh\u00e4ngigen Quellen'
];
var h = '';
for (var i = 0; i < messages.length; i++) {
h += '<div class="live-feed-item' + (i === 0 ? ' active' : '') + '">';
h += '<span class="live-feed-dot"></span>';
h += '<span>' + messages[i] + '</span>';
h += '</div>';
}
container.innerHTML = h;
var current = 0;
var items = container.querySelectorAll('.live-feed-item');
setInterval(function() {
items[current].classList.remove('active');
current = (current + 1) % items.length;
items[current].classList.add('active');
}, 4000);
},
/* ===== HERO ===== */
renderHero: function() {
var d = this.data;
document.getElementById('incident-title').innerHTML =
this.esc(this.fixUmlauts(d.incident.title)) +
' <span class="hero-date-info">- Stand: ' + this.fmtDateOnly(d.generated_at) + ', ' + this.fmtTimeOnly(d.generated_at) + ' Uhr</span>';
' <span class="hero-date-info">\u2013 Stand: ' + this.fmtDateOnly(d.generated_at) + ', ' + this.fmtTimeOnly(d.generated_at) + ' Uhr</span>';
// Stat Cards (3: Artikel, Quellen, Faktenchecks)
var statsHtml = '';
@@ -186,10 +303,8 @@ var Lagebild = {
var dateKey = btn.getAttribute('data-date');
var snapId = btn.getAttribute('data-snapshot-id');
// Show dropdown for this day
self.showTimelineDropdown(dateKey, snapId);
// Load latest snapshot
if (snapId === 'current') {
self.currentView = {
summary: self.data.current_lagebild.summary_markdown,
@@ -249,7 +364,7 @@ var Lagebild = {
var d = new Date(dateKey + 'T12:00:00Z');
var dateLabel = d.toLocaleDateString('de-DE', { day: 'numeric', month: 'long', year: 'numeric', timeZone: 'UTC' });
var h = '<div class="timeline-dropdown-header">' + dateLabel + ' - ' + snaps.length + ' Updates</div>';
var h = '<div class="timeline-dropdown-header">' + dateLabel + ' \u2013 ' + snaps.length + ' Updates</div>';
h += '<div class="timeline-snap-list">';
for (var i = 0; i < snaps.length; i++) {
var snap = snaps[i];
@@ -403,7 +518,7 @@ var Lagebild = {
renderArticlesTab: function() {},
/* ===== TAB: KARTE ===== */
/* ===== TAB: KARTE (Pulse Markers) ===== */
renderMap: function() {
if (this.map) { this.map.remove(); this.map = null; }
this.map = L.map('map-container').setView([33.0, 48.0], 5);
@@ -415,38 +530,40 @@ var Lagebild = {
subdomains: 'abcd'
}).addTo(this.map);
var redIcon = L.icon({
iconUrl: 'https://raw.githubusercontent.com/pointhi/leaflet-color-markers/master/img/marker-icon-2x-red.png',
shadowUrl: 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/images/marker-shadow.png',
iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], shadowSize: [41, 41]
});
var blueIcon = L.icon({
iconUrl: 'https://raw.githubusercontent.com/pointhi/leaflet-color-markers/master/img/marker-icon-2x-blue.png',
shadowUrl: 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/images/marker-shadow.png',
iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], shadowSize: [41, 41]
});
var orangeIcon = L.icon({
iconUrl: 'https://raw.githubusercontent.com/pointhi/leaflet-color-markers/master/img/marker-icon-2x-orange.png',
shadowUrl: 'https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.9.4/images/marker-shadow.png',
iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], shadowSize: [41, 41]
});
function pulseIcon(color) {
return L.divIcon({
className: '',
html: '<div class="pulse-marker-wrapper">'
+ '<div class="pulse-marker-ring" style="border-color:' + color + '"></div>'
+ '<div class="pulse-marker-ring" style="border-color:' + color + '"></div>'
+ '<div class="pulse-marker-dot" style="background:' + color + ';box-shadow:0 0 10px ' + color + '"></div>'
+ '</div>',
iconSize: [20, 20],
iconAnchor: [10, 10],
popupAnchor: [0, -12]
});
}
var red = '#ef4444';
var orange = '#f59e0b';
var blue = '#3b82f6';
var locs = [
{n:'Teheran, Iran',lat:35.6892,lng:51.3890,d:'Hauptziel der US-israelischen Luftschläge. Über 1.000 Tote nach fünf Tagen Krieg.',ic:redIcon},
{n:'Beirut, Libanon',lat:33.8938,lng:35.5018,d:'Gleichzeitige US-israelische Luftschläge auf Beirut und Teheran [6].',ic:redIcon},
{n:'Juffair, Bahrain',lat:26.2235,lng:50.6001,d:'US-Marinebasis - Ziel iranischer Vergeltungsraketen [3].',ic:orangeIcon},
{n:'Al Udeid, Katar',lat:25.1173,lng:51.3150,d:'US-Luftwaffenstützpunkt - Ziel iranischer Gegenangriffe.',ic:orangeIcon},
{n:'Tel Aviv, Israel',lat:32.0853,lng:34.7818,d:'Operationsbasis für israelische Angriffe auf den Iran.',ic:blueIcon},
{n:'Ankara, Türkei',lat:39.9334,lng:32.8597,d:'NATO vermutet iranischen Raketenbeschuss auf Türkei [10]. Keine NATO-Beteiligung geplant.',ic:orangeIcon},
{n:'Bagdad, Irak',lat:33.3152,lng:44.3661,d:'Lage im Irak als Faktor im Kriegsverlauf [2].',ic:blueIcon},
{n:'Persischer Golf',lat:27.0,lng:51.5,d:'Iran greift Energieinfrastruktur und diplomatische Einrichtungen in der Golfregion an.',ic:orangeIcon},
{n:'Dubai, VAE',lat:25.2048,lng:55.2708,d:'US-Botschaft in Dubai durch iranischen Angriff getroffen.',ic:redIcon},
{n:'Washington D.C., USA',lat:38.9072,lng:-77.0369,d:'War-Powers-Abstimmung im Senat gescheitert (47:53). Trump verteidigt Iran-Krieg vor Kongress.',ic:blueIcon}
{n:'Teheran, Iran',lat:35.6892,lng:51.3890,d:'Hauptziel der US-israelischen Luftschl\u00e4ge. \u00dcber 1.000 Tote nach f\u00fcnf Tagen Krieg.',c:red},
{n:'Beirut, Libanon',lat:33.8938,lng:35.5018,d:'Gleichzeitige US-israelische Luftschl\u00e4ge auf Beirut und Teheran [6].',c:red},
{n:'Juffair, Bahrain',lat:26.2235,lng:50.6001,d:'US-Marinebasis \u2013 Ziel iranischer Vergeltungsraketen [3].',c:orange},
{n:'Al Udeid, Katar',lat:25.1173,lng:51.3150,d:'US-Luftwaffenst\u00fctzpunkt \u2013 Ziel iranischer Gegenangriffe.',c:orange},
{n:'Tel Aviv, Israel',lat:32.0853,lng:34.7818,d:'Operationsbasis f\u00fcr israelische Angriffe auf den Iran.',c:blue},
{n:'Ankara, T\u00fcrkei',lat:39.9334,lng:32.8597,d:'NATO vermutet iranischen Raketenbeschuss auf T\u00fcrkei [10]. Keine NATO-Beteiligung geplant.',c:orange},
{n:'Bagdad, Irak',lat:33.3152,lng:44.3661,d:'Lage im Irak als Faktor im Kriegsverlauf [2].',c:blue},
{n:'Persischer Golf',lat:27.0,lng:51.5,d:'Iran greift Energieinfrastruktur und diplomatische Einrichtungen in der Golfregion an.',c:orange},
{n:'Dubai, VAE',lat:25.2048,lng:55.2708,d:'US-Botschaft in Dubai durch iranischen Angriff getroffen.',c:red},
{n:'Washington D.C., USA',lat:38.9072,lng:-77.0369,d:'War-Powers-Abstimmung im Senat gescheitert (47:53). Trump verteidigt Iran-Krieg vor Kongress.',c:blue}
];
for (var i = 0; i < locs.length; i++) {
var l = locs[i];
L.marker([l.lat, l.lng], { icon: l.ic })
L.marker([l.lat, l.lng], { icon: pulseIcon(l.c) })
.addTo(this.map)
.bindPopup('<strong style="color:#E8ECF4;">' + l.n + '</strong><br><span style="font-size:0.85rem;color:#8896AB;">' + l.d + '</span>');
}
@@ -457,9 +574,9 @@ 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;';
div.innerHTML = '<strong style="color:#C8A851;">Legende</strong><br>'
+ '<span style="color:#cb2b3e;">&#9679;</span> Angegriffene Ziele<br>'
+ '<span style="color:#f39c12;">&#9679;</span> Vergeltung / Eskalation<br>'
+ '<span style="color:#2a81cb;">&#9679;</span> Strategische Akteure';
+ '<span style="color:#ef4444;">&#9679;</span> Angegriffene Ziele<br>'
+ '<span style="color:#f59e0b;">&#9679;</span> Vergeltung / Eskalation<br>'
+ '<span style="color:#3b82f6;">&#9679;</span> Strategische Akteure';
return div;
};
legend.addTo(this.map);
@@ -479,7 +596,7 @@ var Lagebild = {
renderFactChecksTab: function() {
var checks = this.currentView.fact_checks || [];
if (!checks.length) {
document.getElementById('factchecks-content').innerHTML = '<p style="color:#8896AB">Keine Faktenchecks verfügbar.</p>';
document.getElementById('factchecks-content').innerHTML = '<p style="color:#8896AB">Keine Faktenchecks verf\u00fcgbar.</p>';
return;
}
@@ -491,7 +608,7 @@ var Lagebild = {
var h = '<div class="fc-stats">';
h += '<div class="fc-stat"><span class="fc-stat-num">' + checks.length + '</span><span class="fc-stat-label">Gesamt</span></div>';
h += '<div class="fc-stat confirmed"><span class="fc-stat-num">' + (stats.confirmed + stats.established) + '</span><span class="fc-stat-label">Bestätigt</span></div>';
h += '<div class="fc-stat confirmed"><span class="fc-stat-num">' + (stats.confirmed + stats.established) + '</span><span class="fc-stat-label">Best\u00e4tigt</span></div>';
h += '<div class="fc-stat unconfirmed"><span class="fc-stat-num">' + (stats.unconfirmed + stats.developing) + '</span><span class="fc-stat-label">Offen</span></div>';
if (stats.contradicted + stats.disputed > 0)
h += '<div class="fc-stat contradicted"><span class="fc-stat-num">' + (stats.contradicted + stats.disputed) + '</span><span class="fc-stat-label">Widerlegt</span></div>';
@@ -512,7 +629,7 @@ var Lagebild = {
h += '<div class="factcheck-card' + (hasProg ? ' highlight' : '') + '" data-status="' + status + '">';
h += '<div class="factcheck-header">';
h += '<span class="status-badge ' + status + '">' + this.stLabel(status) + '</span>';
h += '<span class="factcheck-sources">' + (fc.sources_count || 0) + ' unabhängige Quellen</span>';
h += '<span class="factcheck-sources">' + (fc.sources_count || 0) + ' unabh\u00e4ngige Quellen</span>';
h += '</div>';
h += '<p class="factcheck-claim">' + this.esc(this.fixUmlauts(fc.claim || '')) + '</p>';
@@ -657,7 +774,7 @@ var Lagebild = {
},
stLabel: function(s) {
return { confirmed: 'Bestätigt', unconfirmed: 'Unbestätigt', established: 'Gesichert',
return { confirmed: 'Best\u00e4tigt', unconfirmed: 'Unbest\u00e4tigt', established: 'Gesichert',
unverified: 'Nicht verifiziert', contradicted: 'Widerlegt', disputed: 'Umstritten',
developing: 'In Entwicklung', 'false': 'Falsch' }[s] || s;
},
@@ -729,7 +846,7 @@ var Lagebild = {
showError: function() {
document.getElementById('summary-content').innerHTML =
'<div class="lagebild-error"><p>Das Lagebild konnte nicht geladen werden. Bitte versuchen Sie es später erneut.</p></div>';
'<div class="lagebild-error"><p>Das Lagebild konnte nicht geladen werden. Bitte versuchen Sie es sp\u00e4ter erneut.</p></div>';
}
};