feat: enhance mindmap update functionality in app.py and update_mindmap.js

This commit is contained in:
2025-05-10 21:27:57 +01:00
parent 6a3b3a81c1
commit dec4a57b89
2 changed files with 231 additions and 68 deletions

71
app.py
View File

@@ -1879,4 +1879,73 @@ def admin_update_database():
message = f"Fehler: {str(e)}"
success = False
return render_template('admin/update_database.html', message=message, success=success)
return render_template('admin/update_database.html', message=message, success=success)
@app.route('/api/mindmap/<node_id>')
def get_mindmap_node(node_id):
"""Liefert die Mindmap-Daten für einen bestimmten Knoten und seine Subthemen."""
try:
if node_id == 'root':
# Hauptknoten (Wissen) abrufen
wissen_node = MindMapNode.query.filter_by(name="Wissen").first()
if not wissen_node:
wissen_node = MindMapNode(
name="Wissen",
description="Zentrale Wissensbasis",
color_code="#4299E1",
is_public=True
)
db.session.add(wissen_node)
db.session.commit()
# Alle direkten Kinder des Wissen-Knotens holen
nodes = wissen_node.children.all()
else:
# Bestimmten Knoten und seine Kinder abrufen
parent_node = MindMapNode.query.get_or_404(node_id)
nodes = parent_node.children.all()
wissen_node = parent_node
# Ergebnisdaten vorbereiten
nodes_data = []
edges_data = []
# Hauptknoten hinzufügen
nodes_data.append({
'id': wissen_node.id,
'name': wissen_node.name,
'description': wissen_node.description or '',
'color_code': wissen_node.color_code or '#4299E1',
'is_center': True,
'has_children': len(nodes) > 0
})
# Kinder hinzufügen
for node in nodes:
nodes_data.append({
'id': node.id,
'name': node.name,
'description': node.description or '',
'color_code': node.color_code or '#9F7AEA',
'is_center': False,
'has_children': len(node.children.all()) > 0
})
# Verbindung zum Elternknoten hinzufügen
edges_data.append({
'source_id': wissen_node.id,
'target_id': node.id,
'strength': 0.8
})
return jsonify({
'nodes': nodes_data,
'edges': edges_data
})
except Exception as e:
print(f"Fehler beim Abrufen der Mindmap-Daten: {str(e)}")
return jsonify({
'success': False,
'error': 'Mindmap-Daten konnten nicht geladen werden'
}), 500