Fix: Ausstehender Autosave ueberschrieb das geladene Projekt
Beim Laden eines Projekts blieb der alte Projektname stehen, wenn kurz zuvor getippt wurde. Ursache: projektLaden() brach den laufenden Autosave-Timer nicht ab. Der feuerte 500 ms nach dem letzten Tastendruck, las die noch alten Formularfelder aus und schrieb sie ueber den gerade geladenen Stand. Anschliessend folgte ein location.reload(), der den ueberschriebenen Stand anzeigte. Auf localhost war das Zeitfenster meist zu klein, ueber LAN gegen den Container dagegen zuverlaessig zu treffen. - projektLaden() und projektNeu() brechen saveTimeout und calcTimeout ab. - /projekte/laden und /projekte/neu liefern den neuen Stand zurueck, das Frontend setzt die Felder direkt (neue Funktion standUebernehmen). - Kein location.reload() mehr. Das beseitigt zusaetzlich die Formular-Wiederherstellung, mit der Firefox und Safari von Hand geaenderte Felder nach einem Reload zurueckholen -- betroffen waere genau das Projektnamen-Feld gewesen. Reproduziert und gegengeprueft: mit der alten Reihenfolge schreibt der Autosave "Projekt B" ueber das geladene "Projekt A"; mit dem Fix bleiben Feld und Serverstand ueber mehrere Wechsel hinweg stabil. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
14
app.py
14
app.py
@@ -679,8 +679,13 @@ def projekt_laden():
|
||||
if feld in eintrag:
|
||||
config[feld] = eintrag[feld]
|
||||
config['projektName'] = name
|
||||
save_config(_migriere(config))
|
||||
return jsonify({'status': 'ok', 'name': name})
|
||||
config = _migriere(config)
|
||||
save_config(config)
|
||||
# Den geladenen Stand mitschicken, damit das Frontend die Felder
|
||||
# direkt setzen kann -- ein location.reload() wuerde von Hand
|
||||
# geaenderte Felder in manchen Browsern wiederherstellen.
|
||||
return jsonify({'status': 'ok', 'name': name,
|
||||
'stand': projekt_aus_config(config)})
|
||||
|
||||
|
||||
@app.route('/projekte/neu', methods=['POST'])
|
||||
@@ -694,8 +699,9 @@ def projekt_neu():
|
||||
with _config_lock:
|
||||
config = load_config()
|
||||
config.update(leerer_projektstand())
|
||||
save_config(_migriere(config))
|
||||
return jsonify({'status': 'ok'})
|
||||
config = _migriere(config)
|
||||
save_config(config)
|
||||
return jsonify({'status': 'ok', 'stand': projekt_aus_config(config)})
|
||||
|
||||
|
||||
@app.route('/projekte/loeschen', methods=['POST'])
|
||||
|
||||
Reference in New Issue
Block a user