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) <noreply@anthropic.com>
This commit is contained in:
Dotty Dotter 2026-04-28 01:38:06 +02:00
parent 83669c528b
commit 121b51445b

View File

@ -1345,8 +1345,8 @@ function showPodcastSelector(podcasts) {
selectorHtml += '<div id="compare-result"></div>';
mindmap.innerHTML = selectorHtml;
// Panel: minimal welcome
panel.innerHTML = '<div class="welcome"><h2>Willkommen</h2><p>Wähle links einen Podcast.</p></div>';
// Panel: minimal welcome — ID beibehalten, init() referenziert sie
panel.innerHTML = '<div class="welcome" id="welcome-panel"><h2>Willkommen</h2><p>Wähle links einen Podcast.</p></div>';
document.getElementById('app-title').textContent = 'Podcast';
document.title = 'Podcast Mindmap';
@ -1488,7 +1488,14 @@ function init() {
const gapsBtn = ALL_PODCASTS.length > 1
? `<p style="margin-top:12px"><button class="transcript-toggle" onclick="GapsView.show()">Leerstellen anzeigen</button> <button class="transcript-toggle" onclick="ShiftsView.show()">Narrative Shifts</button></p>`
: '';
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 = '<div class="welcome" id="welcome-panel"></div>';
welcome = document.getElementById('welcome-panel');
}
welcome.innerHTML = `
<h2>${escHtml(name)}</h2>
<p>${escHtml(DATA.description || '')}<br>
${DATA.episodes.length} Folgen, ${DATA.staffeln.length} Staffeln, ${DATA.quotes.length} Zitate</p>