From 121b51445baa50c622afe952289da87f69a958bd Mon Sep 17 00:00:00 2001 From: Dotty Dotter Date: Tue, 28 Apr 2026 01:38:06 +0200 Subject: [PATCH] Fix: Mindmap rendert nach Podcast-Auswahl wieder Beim Wechsel von der Podcast-Auswahl zu einer konkreten Mindmap warf init() einen TypeError, weil showPodcastSelector() das #welcome-panel-Div ueberschrieben hatte und die anschliessende Zuweisung an dessen innerHTML auf null traf. Folge: catch in selectPodcast() loggte den Fehler, init() lief nicht zu Ende, der SVG-Bereich blieb leer. Zwei Fixes: - showPodcastSelector setzt die ID 'welcome-panel' beim Replace wieder. - init() legt das Div bei Bedarf neu an, falls jemand sonst panel.innerHTML ueberschreibt. Verifiziert via Headless-Browser (puppeteer): LdN 568 Knoten/555 Kanten, NEU DENKEN 186 Knoten/209 Kanten, force-Simulation laeuft. Co-Authored-By: Claude Opus 4.7 (1M context) --- webapp/index.html | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/webapp/index.html b/webapp/index.html index de6c40f..6994909 100644 --- a/webapp/index.html +++ b/webapp/index.html @@ -1345,8 +1345,8 @@ function showPodcastSelector(podcasts) { selectorHtml += '
'; mindmap.innerHTML = selectorHtml; - // Panel: minimal welcome - panel.innerHTML = '

Willkommen

Wähle links einen Podcast.

'; + // Panel: minimal welcome — ID beibehalten, init() referenziert sie + panel.innerHTML = '

Willkommen

Wähle links einen Podcast.

'; document.getElementById('app-title').textContent = 'Podcast'; document.title = 'Podcast Mindmap'; @@ -1488,7 +1488,14 @@ function init() { const gapsBtn = ALL_PODCASTS.length > 1 ? `

` : ''; - document.getElementById('welcome-panel').innerHTML = ` + // Panel kann von showPodcastSelector ueberschrieben worden sein — welcome-panel ggf. neu anlegen + let welcome = document.getElementById('welcome-panel'); + if (!welcome) { + const panel = document.getElementById('panel'); + panel.innerHTML = '
'; + welcome = document.getElementById('welcome-panel'); + } + welcome.innerHTML = `

${escHtml(name)}

${escHtml(DATA.description || '')}
${DATA.episodes.length} Folgen, ${DATA.staffeln.length} Staffeln, ${DATA.quotes.length} Zitate