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:
parent
83669c528b
commit
121b51445b
@ -1345,8 +1345,8 @@ function showPodcastSelector(podcasts) {
|
|||||||
selectorHtml += '<div id="compare-result"></div>';
|
selectorHtml += '<div id="compare-result"></div>';
|
||||||
mindmap.innerHTML = selectorHtml;
|
mindmap.innerHTML = selectorHtml;
|
||||||
|
|
||||||
// Panel: minimal welcome
|
// Panel: minimal welcome — ID beibehalten, init() referenziert sie
|
||||||
panel.innerHTML = '<div class="welcome"><h2>Willkommen</h2><p>Wähle links einen Podcast.</p></div>';
|
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.getElementById('app-title').textContent = 'Podcast';
|
||||||
document.title = 'Podcast Mindmap';
|
document.title = 'Podcast Mindmap';
|
||||||
@ -1488,7 +1488,14 @@ function init() {
|
|||||||
const gapsBtn = ALL_PODCASTS.length > 1
|
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>`
|
? `<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>
|
<h2>${escHtml(name)}</h2>
|
||||||
<p>${escHtml(DATA.description || '')}<br>
|
<p>${escHtml(DATA.description || '')}<br>
|
||||||
${DATA.episodes.length} Folgen, ${DATA.staffeln.length} Staffeln, ${DATA.quotes.length} Zitate</p>
|
${DATA.episodes.length} Folgen, ${DATA.staffeln.length} Staffeln, ${DATA.quotes.length} Zitate</p>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user