"Refactor UI refactoring: Simplify app.c-specific components

This commit is contained in:
2025-05-10 22:43:13 +02:00
parent f292cf1ce5
commit 9c36179f29
4 changed files with 5 additions and 16 deletions

Binary file not shown.

2
app.py
View File

@@ -9,7 +9,6 @@ from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash, check_password_hash from werkzeug.security import generate_password_hash, check_password_hash
import json import json
from enum import Enum from enum import Enum
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, BooleanField, TextAreaField, SelectField, HiddenField from wtforms import StringField, PasswordField, BooleanField, TextAreaField, SelectField, HiddenField
from wtforms.validators import DataRequired, Email, Length, EqualTo, ValidationError from wtforms.validators import DataRequired, Email, Length, EqualTo, ValidationError
from functools import wraps from functools import wraps
@@ -47,7 +46,6 @@ app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{db_path}'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=365) # Langlebige Session für Dark Mode-Einstellung app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=365) # Langlebige Session für Dark Mode-Einstellung
app.config['UPLOAD_FOLDER'] = os.getenv('UPLOAD_FOLDER', os.path.join(os.getcwd(), 'uploads')) app.config['UPLOAD_FOLDER'] = os.getenv('UPLOAD_FOLDER', os.path.join(os.getcwd(), 'uploads'))
app.config['WTF_CSRF_ENABLED'] = False
# OpenAI API-Konfiguration # OpenAI API-Konfiguration
api_key = os.environ.get("OPENAI_API_KEY", "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") api_key = os.environ.get("OPENAI_API_KEY", "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")

View File

@@ -335,7 +335,6 @@
const isPrivateInput = document.getElementById('is_private'); const isPrivateInput = document.getElementById('is_private');
const mindmapId = "{{ mindmap.id }}"; // Sicherstellen, dass mindmap.id hier verfügbar ist const mindmapId = "{{ mindmap.id }}"; // Sicherstellen, dass mindmap.id hier verfügbar ist
const csrfToken = "{{ csrf_token() }}";
const data = { const data = {
name: nameInput.value, name: nameInput.value,
@@ -351,8 +350,7 @@
const response = await fetch(`/api/mindmaps/${mindmapId}`, { const response = await fetch(`/api/mindmaps/${mindmapId}`, {
method: 'PUT', method: 'PUT',
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json'
'X-CSRFToken': csrfToken
}, },
body: JSON.stringify(data) body: JSON.stringify(data)
}); });
@@ -389,7 +387,6 @@
// Die Metadaten (Name, Beschreibung, is_private) werden separat über das Formular oben gespeichert. // Die Metadaten (Name, Beschreibung, is_private) werden separat über das Formular oben gespeichert.
// Diese onChange Funktion kümmert sich nur um die Strukturdaten (Knoten/Kanten). // Diese onChange Funktion kümmert sich nur um die Strukturdaten (Knoten/Kanten).
const mindmapId = "{{ mindmap.id }}"; const mindmapId = "{{ mindmap.id }}";
const csrfToken = "{{ csrf_token() }}";
// Debounce-Funktion, um API-Aufrufe zu limitieren // Debounce-Funktion, um API-Aufrufe zu limitieren
let debounceTimer; let debounceTimer;
@@ -406,8 +403,7 @@
fetch(`/api/mindmaps/${mindmapId}`, { // Endpunkt angepasst fetch(`/api/mindmaps/${mindmapId}`, { // Endpunkt angepasst
method: 'PUT', // Methode zu PUT geändert method: 'PUT', // Methode zu PUT geändert
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json'
'X-CSRFToken': csrfToken
}, },
body: JSON.stringify(payload) // Sende die Mindmap-Daten als { data: ... } body: JSON.stringify(payload) // Sende die Mindmap-Daten als { data: ... }
}).then(response => { }).then(response => {
@@ -455,14 +451,12 @@
mindmap.initialize().then(() => { mindmap.initialize().then(() => {
console.log("Mindmap-Editor initialisiert"); console.log("Mindmap-Editor initialisiert");
const mindmapId = "{{ mindmap.id }}"; const mindmapId = "{{ mindmap.id }}";
const csrfToken = "{{ csrf_token() }}";
// Lade existierende Daten für die Mindmap-Struktur // Lade existierende Daten für die Mindmap-Struktur
fetch(`/api/mindmaps/${mindmapId}`, { // Endpunkt für GET angepasst fetch(`/api/mindmaps/${mindmapId}`, { // Endpunkt für GET angepasst
method: 'GET', method: 'GET',
headers: { headers: {
'Accept': 'application/json', 'Accept': 'application/json'
'X-CSRFToken': csrfToken
} }
}) })
.then(response => { .then(response => {

View File

@@ -326,11 +326,10 @@
const mindmapId = event.currentTarget.dataset.mindmapId; const mindmapId = event.currentTarget.dataset.mindmapId;
if (confirm('Bist du sicher, dass du diese Mindmap löschen möchtest?')) { if (confirm('Bist du sicher, dass du diese Mindmap löschen möchtest?')) {
try { try {
const csrfToken = "{{ csrf_token() }}"; // CSRF Token holen
const response = await fetch(`/api/mindmaps/${mindmapId}`, { const response = await fetch(`/api/mindmaps/${mindmapId}`, {
method: 'DELETE', method: 'DELETE',
headers: { headers: {
'X-CSRFToken': csrfToken // CSRF Token im Header senden 'Content-Type': 'application/json'
} }
}); });
if (!response.ok) { if (!response.ok) {
@@ -359,12 +358,10 @@
} }
try { try {
const csrfToken = "{{ csrf_token() }}"; // CSRF Token holen
const response = await fetch('/api/mindmaps', { const response = await fetch('/api/mindmaps', {
method: 'POST', method: 'POST',
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json'
'X-CSRFToken': csrfToken // CSRF Token im Header senden
}, },
body: JSON.stringify({ name, description, is_private: false }), // is_private standardmäßig auf false setzen body: JSON.stringify({ name, description, is_private: false }), // is_private standardmäßig auf false setzen
}); });