Files
nodeMap/TODO.md
ISA f7f7122620 feat: Marker-Cleanup zur Vermeidung von Memory Leaks implementiert
- cleanupMarkers() Utility in /utils/common/cleanupMarkers.js erstellt
- Marker-Cleanup in MapComponent.js vor createAndSetDevices() integriert
- createAndSetDevices.js von Cleanup-Verantwortung befreit (reine Erzeugung)
- setupPOIs.js erweitert um cleanupMarkers() vor Layer-Neuerstellung
- poiUtils.js und markerUtils.js angepasst: cleanupMarkers() ersetzt .remove()
- Memory Leaks durch verwaiste Tooltips, Events und Marker behoben
- Grundlage für wiederverwendbare Marker-Cleanup-Logik für POIs, Geräte, Linien geschaffen
2025-06-06 10:21:56 +02:00

2.5 KiB
Raw Blame History

🧪 Hinweise zur Entwicklung

  • Mock-Dateien liegen unter /public/__mocks__/
  • In .env.local ist NEXT_PUBLIC_USE_MOCKS=true gesetzt
  • Diese helfen beim UI-Test der Intervall-Aktualisierung (Charts, Statusanzeigen)
  • Manuell bearbeitbar, um gezielt Systemverhalten zu simulieren

🔧 Offene Aufgaben

  • TODO: GMA auf 13er ist anders als in der Entwicklungsumgebung, Tooltip wird nicht angezeigt

  • TODO: In editMode ohne Rechte kann noch die Linien Stützpunkte positioniert werden, es soll das nicht!

  • TODO: In editMode ohne Rechte kann noch den Bereich positioniert werden, es soll das nicht!

  • TODO: die Messwerte GMA werden nicht angezeigt

  • TODO: der Kunde könnte statt GMA andere Name haben

  • TODO: überall durch ein Interval Services aufrufen um die Daten zu aktualisieren , am besten in eine Zentraler Stelle ---> von ein Hook die alle gebrauchte Slice und thunks holt mit setInterval, diesen hokk in main component integrieren

  • TODO: Möglichkeit bevor in Gitea hochgeladen, .env.local anpassen, vielleicht mit husky Wenn git push genutzt wird soll für Produktionsumgebung angepasst werden, Vorschlag ---> .env.local und .env.production für Entwicklungsumgebung und Produktionsumgebung automatische Switch

🧹 Memory Leaks prüfen

  • MapComponent.js - [ ] setInterval(...) (1x) - [ ] setTimeout(...) (2x) - [ ] window.xyz = ... (4x) globale Variablen - [ ] map.on(...) (2x) - [ ] addEventListener(...) (1x) - 📌 Problematisch, wenn clearInterval, clearTimeout, map.off(...) oder removeEventListener(...) nicht im useEffect-Cleanup gemacht werden. → Speicher kann anwachsen, besonders bei Hot-Reload oder Navigation im iFrame.

  • useAreaMarkersLayer.js - [ ] setInterval(...) - [ ] addEventListener(...) - 📌 Auch hier muss geprüft werden, ob beim Unmounting der Komponente clearInterval() und removeEventListener() aufgerufen wird.

  • AddPOIModal.js - [ ] setTimeout(...) - 📌 Prüfen, ob der Timeout vor unmount gecleart wird (z.B. bei schnellem Öffnen und Schließen des Modals).

  • MapLayersControlPanel.js - [ ] setTimeout(...)

  • useDataUpdater.js - [ ] setInterval(...) - 📌 Sehr wahrscheinlich ein regelmäßiger Polling-Mechanismus → unbedingt prüfen, ob clearInterval() im useEffect-Cleanup enthalten ist.