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

46 lines
2.5 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 🧪 Hinweise zur Entwicklung
<!-- TODO: Intervall-Aktualisierung mit Mockdaten testen -->
- 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
- [x] 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
- [x] 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.