/** * Mindmap-Seite JavaScript * Spezifische Funktionen für die Mindmap-Seite */ // Füge das Modul zum globalen MindMap-Objekt hinzu if (!window.MindMap) { window.MindMap = {}; } // Registriere den Initialisierer im MindMap-Objekt window.MindMap.pageInitializers = window.MindMap.pageInitializers || {}; window.MindMap.pageInitializers.mindmap = initMindmapPage; // Event-Listener für DOMContentLoaded document.addEventListener('DOMContentLoaded', function() { // Prüfe, ob wir auf der Mindmap-Seite sind if (document.body && document.body.dataset && document.body.dataset.page === 'mindmap') { initMindmapPage(); } }); /** * Initialisiert die Mindmap-Seite */ function initMindmapPage() { console.log('Mindmap-Seite wird initialisiert...'); // Hauptcontainer für die Mindmap const cyContainer = document.getElementById('cy'); if (!cyContainer) { console.error('Mindmap-Container #cy nicht gefunden!'); return; } // Info-Panel für Knotendetails const nodeInfoPanel = document.getElementById('node-info-panel'); const nodeDescription = document.getElementById('node-description'); const connectedNodes = document.getElementById('connected-nodes'); // Toolbar-Buttons const fitButton = document.getElementById('fit-btn'); const resetButton = document.getElementById('reset-btn'); const toggleLabelsButton = document.getElementById('toggle-labels-btn'); // Mindmap-Instanz let mindmap = null; // Cytoscape.js für die Visualisierung initialisieren try { // Cytoscape.js-Bibliothek überprüfen if (typeof cytoscape === 'undefined') { loadExternalScript('https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.26.0/cytoscape.min.js') .then(() => { initCytoscape(); }) .catch(error => { console.error('Fehler beim Laden von Cytoscape.js:', error); showErrorMessage(cyContainer, 'Cytoscape.js konnte nicht geladen werden.'); }); } else { initCytoscape(); } } catch (error) { console.error('Fehler bei der Initialisierung der Mindmap:', error); showErrorMessage(cyContainer, 'Die Mindmap konnte nicht initialisiert werden: ' + error.message); } /** * Lädt ein externes Script asynchron */ function loadExternalScript(url) { return new Promise((resolve, reject) => { const script = document.createElement('script'); script.src = url; script.onload = resolve; script.onerror = reject; document.head.appendChild(script); }); } /** * Zeigt eine Fehlermeldung im Container an */ function showErrorMessage(container, message) { container.innerHTML = `
${message}
Bitte laden Sie die Seite neu oder kontaktieren Sie den Support.