Files
website/static/js/modules/mindmap.js

73 lines
4.6 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Mindmap-Basismodul
* Stellt grundlegende Funktionalitäten für die Mindmap-Visualisierung bereit
*/
console.log("Mindmap-Basismodul geladen");
// Globales MindMap-Objekt erstellen, falls es noch nicht existiert
if (!window.MindMap) {
window.MindMap = {};
}
// Hilfsfunktionen für die Arbeit mit der Mindmap
window.MindMap.utils = {
/**
* Generiert eine zufällige Farbe aus einer vordefinierten Palette
* @returns {string} Farbe im HEX-Format
*/
getRandomColor: function() {
const colors = [
'#4299E1', // Blau
'#9F7AEA', // Lila
'#48BB78', // Grün
'#ED8936', // Orange
'#ED64A6', // Pink
'#F56565' // Rot
];
return colors[Math.floor(Math.random() * colors.length)];
},
/**
* Lädt eine externe JavaScript-Bibliothek asynchron
* @param {string} url - URL der zu ladenden Bibliothek
* @returns {Promise} Promise, das nach dem Laden erfüllt wird
*/
loadExternalScript: function(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 in einem Container an
* @param {HTMLElement} container - Container für die Fehlermeldung
* @param {string} message - Fehlermeldung
*/
showError: function(container, message) {
container.innerHTML = `
<div class="p-8 text-center bg-red-50 dark:bg-red-900/20 rounded-lg">
<i class="fa-solid fa-triangle-exclamation text-4xl text-red-500 mb-4"></i>
<p class="text-lg text-red-600 dark:text-red-400">${message}</p>
<p class="mt-2 text-sm text-gray-600 dark:text-gray-400">Bitte laden Sie die Seite neu oder kontaktieren Sie den Support.</p>
</div>
`;
},
/**
* Zeigt eine Ladeanimation in einem Container an
* @param {HTMLElement} container - Container für die Ladeanimation
*/
showLoading: function(container) {
container.innerHTML = `
<div class="flex justify-center items-center h-full">
<div class="animate-spin rounded-full h-12 w-12 border-t-2 border-b-2 border-purple-500"></div>
</div>
`;
}
};