chore: Änderungen commited
This commit is contained in:
@@ -200,14 +200,16 @@ async function initializeMindmap() {
|
||||
description: node.description,
|
||||
hasChildren: node.has_children,
|
||||
expanded: false,
|
||||
color: node.color_code,
|
||||
color: node.color_code || getCategoryColor(node.category),
|
||||
fontColor: '#ffffff',
|
||||
fontSize: node.is_center ? 20 : 16
|
||||
fontSize: node.is_center ? 20 : 16,
|
||||
isCenter: node.is_center || false
|
||||
}
|
||||
})),
|
||||
// Kanten
|
||||
...data.edges.map(edge => ({
|
||||
data: {
|
||||
id: `edge-${edge.source}-${edge.target}`,
|
||||
source: edge.source,
|
||||
target: edge.target,
|
||||
strength: edge.strength || 0.5
|
||||
@@ -234,7 +236,7 @@ async function initializeMindmap() {
|
||||
style: mindmapStyles.node.base
|
||||
},
|
||||
{
|
||||
selector: 'node[isCenter]',
|
||||
selector: 'node[?isCenter]',
|
||||
style: mindmapStyles.node.center
|
||||
},
|
||||
{
|
||||
@@ -249,66 +251,32 @@ async function initializeMindmap() {
|
||||
layout: mindmapStyles.layout.base
|
||||
});
|
||||
|
||||
// Füge neuronale Eigenschaften zu allen Knoten hinzu
|
||||
cy.nodes().forEach(node => {
|
||||
const data = node.data();
|
||||
// Verwende mindmapConfig für Kategorie-Farben oder einen Standardwert
|
||||
const categoryColor = data.category && mindmapConfig.categories[data.category]
|
||||
? mindmapConfig.categories[data.category].color
|
||||
: '#60a5fa';
|
||||
|
||||
node.data({
|
||||
...data,
|
||||
neuronSize: data.neuronSize || 8,
|
||||
neuronActivity: data.neuronActivity || 0.8,
|
||||
refractionPeriod: Math.random() * 300 + 700,
|
||||
threshold: Math.random() * 0.3 + 0.6,
|
||||
lastFired: 0,
|
||||
color: data.color || categoryColor
|
||||
});
|
||||
});
|
||||
// Nach der Initialisierung die Knoten sperren
|
||||
window.cy.nodes().lock();
|
||||
|
||||
// Füge synaptische Eigenschaften zu allen Kanten hinzu
|
||||
cy.edges().forEach(edge => {
|
||||
const data = edge.data();
|
||||
edge.data({
|
||||
...data,
|
||||
strength: data.strength || 0.5,
|
||||
conductionVelocity: Math.random() * 0.5 + 0.3,
|
||||
latency: Math.random() * 100 + 50
|
||||
});
|
||||
});
|
||||
// Verbessertes Neuronales Design anwenden
|
||||
applyNeuralNetworkStyle(window.cy);
|
||||
enhanceMindmap();
|
||||
|
||||
// Kategorienlegende anzeigen
|
||||
document.getElementById('categoryLegend').style.display = 'flex';
|
||||
|
||||
// Event-Listener für Knoten-Klicks
|
||||
cy.on('tap', 'node', async function(evt) {
|
||||
const node = evt.target;
|
||||
console.log('Node clicked:', node.id(), 'hasChildren:', node.data('hasChildren'), 'expanded:', node.data('expanded'));
|
||||
|
||||
if (node.data('hasChildren') && !node.data('expanded')) {
|
||||
await loadSubthemes(node);
|
||||
}
|
||||
});
|
||||
|
||||
// Layout ausführen
|
||||
cy.layout(mindmapStyles.layout.base).run();
|
||||
|
||||
// Starte neuronale Aktivitätssimulation
|
||||
startNeuralActivitySimulation(cy);
|
||||
|
||||
// Mindmap mit echten Daten befüllen (Styles, Farben etc.)
|
||||
updateMindmap();
|
||||
|
||||
return true;
|
||||
return window.cy;
|
||||
} catch (error) {
|
||||
console.error('Fehler bei der Mindmap-Initialisierung:', error);
|
||||
showUINotification({
|
||||
error: 'Mindmap konnte nicht initialisiert werden',
|
||||
details: error.message
|
||||
}, 'error');
|
||||
return false;
|
||||
console.error('Fehler beim Initialisieren der Mindmap:', error);
|
||||
showUINotification('Fehler beim Initialisieren der Mindmap: ' + error.message, 'error');
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
// Hilfsfunktion zum Abrufen der Kategoriefarbe
|
||||
function getCategoryColor(category) {
|
||||
if (!category) return '#666666'; // Standardfarbe
|
||||
|
||||
const categoryData = mindmapConfig.categories[category];
|
||||
return categoryData ? categoryData.color : '#666666';
|
||||
}
|
||||
|
||||
// Warte bis DOM geladen ist
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
console.log('DOMContentLoaded Event ausgelöst');
|
||||
@@ -1167,7 +1135,7 @@ function showNodeContextMenu(node, position) {
|
||||
startEdgeCreation(node);
|
||||
break;
|
||||
case 'delete':
|
||||
deleteNode(node);
|
||||
deleteElement(node);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1387,15 +1355,26 @@ function enableEdgeCreationMode(cy) {
|
||||
});
|
||||
}
|
||||
|
||||
// Funktion zum Löschen eines Knotens
|
||||
function deleteNode(node) {
|
||||
if (!node) return;
|
||||
// Funktion zum Löschen eines Elements (Knoten oder Kante)
|
||||
function deleteElement(element) {
|
||||
if (!element) return;
|
||||
|
||||
// Frage den Benutzer, ob er den Knoten wirklich löschen möchte
|
||||
if (confirm(`Möchtest du den Knoten "${node.data('label')}" wirklich löschen?`)) {
|
||||
// Entferne den Knoten und alle zugehörigen Kanten
|
||||
node.remove();
|
||||
showUINotification('Knoten wurde gelöscht', 'success');
|
||||
// Sicherheitsabfrage für Knoten
|
||||
if (element.isNode()) {
|
||||
if (confirm('Möchten Sie diesen Knoten wirklich löschen? Alle Verbindungen werden ebenfalls entfernt.')) {
|
||||
// Entferne alle verbundenen Kanten
|
||||
element.connectedEdges().remove();
|
||||
// Entferne den Knoten
|
||||
element.remove();
|
||||
showUINotification('Knoten wurde gelöscht', 'success');
|
||||
}
|
||||
}
|
||||
// Sicherheitsabfrage für Kanten
|
||||
else if (element.isEdge()) {
|
||||
if (confirm('Möchten Sie diese Verbindung wirklich löschen?')) {
|
||||
element.remove();
|
||||
showUINotification('Verbindung wurde gelöscht', 'success');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1804,4 +1783,52 @@ function toggleLegend() {
|
||||
legend.style.display = isVisible ? 'none' : 'flex';
|
||||
showUINotification(isVisible ? 'Legende ausgeblendet' : 'Legende eingeblendet', 'info', 1000);
|
||||
}
|
||||
}
|
||||
|
||||
// Funktion zum Zurücksetzen aller Änderungen und Neuinitialisierung der Mindmap
|
||||
async function resetMindmap() {
|
||||
try {
|
||||
// Warnmeldung anzeigen
|
||||
if (!confirm('Möchten Sie die Mindmap wirklich zurücksetzen? Alle nicht gespeicherten Änderungen gehen verloren.')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// UI-Elemente aktualisieren
|
||||
const editModeIndicator = document.getElementById('editModeIndicator');
|
||||
const toggleEditModeBtn = document.getElementById('toggleEditMode');
|
||||
const saveChangesBtn = document.getElementById('saveChanges');
|
||||
const cancelEditBtn = document.getElementById('cancelEdit');
|
||||
const crudPanel = document.getElementById('crudPanel');
|
||||
|
||||
// Bearbeitungsmodus deaktivieren
|
||||
if (editModeIndicator) editModeIndicator.classList.remove('active');
|
||||
if (toggleEditModeBtn) toggleEditModeBtn.style.display = 'inline-flex';
|
||||
if (saveChangesBtn) saveChangesBtn.style.display = 'none';
|
||||
if (cancelEditBtn) cancelEditBtn.style.display = 'none';
|
||||
if (crudPanel) crudPanel.style.display = 'none';
|
||||
|
||||
// Loader und Statusmeldung anzeigen
|
||||
const loader = document.getElementById('loader');
|
||||
const statusMessage = document.getElementById('statusMessage');
|
||||
|
||||
if (loader) loader.style.display = 'block';
|
||||
if (statusMessage) {
|
||||
statusMessage.textContent = 'Setze Mindmap zurück...';
|
||||
statusMessage.style.display = 'block';
|
||||
}
|
||||
|
||||
// Mindmap neu initialisieren
|
||||
await initializeMindmap();
|
||||
|
||||
// Loader und Statusmeldung ausblenden
|
||||
if (loader) loader.style.display = 'none';
|
||||
if (statusMessage) statusMessage.style.display = 'none';
|
||||
|
||||
showUINotification('Mindmap wurde zurückgesetzt', 'success');
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.error('Fehler beim Zurücksetzen der Mindmap:', error);
|
||||
showUINotification('Fehler beim Zurücksetzen der Mindmap: ' + error.message, 'error');
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user