fix: Gilden-Auswahl bleibt nach Simulation/Filtern erhalten #4

Merged
DasAoD merged 1 commit from fix/persist-guild-selection-across-simulation into main 2026-08-27 20:05:58 +02:00
Owner

Bug

Nach einem Simulationslauf (egal ob eine oder mehrere Gilden) verschwanden alle Checkbox-Häkchen in der Ergebnistabelle. Grund: renderTable() baut die Tabellenzeilen komplett neu auf (tbody.innerHTML = ''), ohne den vorherigen Auswahlzustand zu übernehmen — und pollSimProgress() ruft nach Abschluss der Simulation applyFilter() (→ renderTable()) auf, um die neuen Sim-Ergebnisse anzuzeigen.

Bei wenigen Gilden nur lästig, bei 10-20+ ausgewählten Gilden (z. B. um mit verschiedenen Pilz-Anzahlen zu vergleichen) unpraktisch, weil man jedes Mal alles neu anhaken musste.

Fix

selectedGuilds (ein Set aus Gildennamen) ist jetzt die eigentliche Quelle der Wahrheit für die Auswahl, nicht mehr nur der DOM-Zustand der Checkboxen. Beim Rendern werden die Checkboxen anhand dieses Sets vorbelegt (checked, falls der Name drin ist) und aktualisieren es bei jeder Änderung (toggleGuildSelection, toggleAll, selectAllVisible, deselectAll). Damit übersteht die Auswahl jeden Tabellen-Neuaufbau (Filtern, Sortieren, nach einer Simulation) — nur „Auswahl aufheben" oder manuelles Abhaken entfernt einen Eintrag.

Kein Backend betroffen.

Test

  • cargo build --all-targets weiterhin sauber (reine Frontend-Änderung).
  • JS-Syntax geprüft (node --check), alle $('id')-Referenzen gegen vorhandene HTML-IDs abgeglichen.

🤖 Generated with Claude Code

## Bug Nach einem Simulationslauf (egal ob eine oder mehrere Gilden) verschwanden alle Checkbox-Häkchen in der Ergebnistabelle. Grund: `renderTable()` baut die Tabellenzeilen komplett neu auf (`tbody.innerHTML = ''`), ohne den vorherigen Auswahlzustand zu übernehmen — und `pollSimProgress()` ruft nach Abschluss der Simulation `applyFilter()` (→ `renderTable()`) auf, um die neuen Sim-Ergebnisse anzuzeigen. Bei wenigen Gilden nur lästig, bei 10-20+ ausgewählten Gilden (z. B. um mit verschiedenen Pilz-Anzahlen zu vergleichen) unpraktisch, weil man jedes Mal alles neu anhaken musste. ## Fix `selectedGuilds` (ein `Set` aus Gildennamen) ist jetzt die eigentliche Quelle der Wahrheit für die Auswahl, nicht mehr nur der DOM-Zustand der Checkboxen. Beim Rendern werden die Checkboxen anhand dieses Sets vorbelegt (`checked`, falls der Name drin ist) und aktualisieren es bei jeder Änderung (`toggleGuildSelection`, `toggleAll`, `selectAllVisible`, `deselectAll`). Damit übersteht die Auswahl jeden Tabellen-Neuaufbau (Filtern, Sortieren, nach einer Simulation) — nur „Auswahl aufheben" oder manuelles Abhaken entfernt einen Eintrag. Kein Backend betroffen. ## Test - `cargo build --all-targets` weiterhin sauber (reine Frontend-Änderung). - JS-Syntax geprüft (`node --check`), alle `$('id')`-Referenzen gegen vorhandene HTML-IDs abgeglichen. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Bisher wurden die Checkbox-Häkchen bei jedem renderTable()-Aufruf
verworfen, weil die Tabellenzeilen komplett neu gebaut wurden (tbody
innerHTML = ''), ohne den vorherigen Auswahlzustand zu übernehmen.
Das war besonders beim wiederholten Simulieren nervig (Ergebnis ruft
applyFilter() -> renderTable() auf, alle Häkchen weg) - bei 10+
ausgewählten Gilden musste man jedes Mal neu anhaken.

Fix: selectedGuilds (ein Set aus Gildennamen) ist jetzt die Quelle der
Wahrheit für die Auswahl, nicht mehr der DOM-Zustand allein. Checkboxen
werden beim Rendern anhand dieses Sets vorbelegt und aktualisieren es
bei Änderung. Damit übersteht die Auswahl jeden Neuaufbau der Tabelle
(Filtern, Sortieren, nach einer Simulation) - nur "Auswahl aufheben"
oder manuelles Abhaken entfernt einen Eintrag noch.

Kein Backend-Änderung nötig. cargo build --all-targets weiterhin
sauber, JS-Syntax geprüft (node --check), alle $('id')-Referenzen
gegen vorhandene HTML-IDs abgeglichen.
DasAoD merged commit d87d158312 into main 2026-08-27 20:05:58 +02:00
Sign in to join this conversation.
No description provided.