73 lines
4.6 KiB
JavaScript
73 lines
4.6 KiB
JavaScript
/**
|
||
* 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>
|
||
`;
|
||
}
|
||
};
|