101 lines
3.0 KiB
Markdown
101 lines
3.0 KiB
Markdown
# Komponenten-Dokumentation: `DataSheet.js`
|
||
|
||
## Zweck
|
||
Die Komponente `DataSheet` dient als Kontrollzentrale für die interaktive Kartenanwendung. Sie bietet Funktionen für:
|
||
|
||
- Auswahl von Bereichen ("Stationen") aus einem Dropdown-Menü
|
||
- Steuerung der Sichtbarkeit von Layern wie POIs und Polyline (z. B. Kabelstrecken)
|
||
- Aktivierung des Editiermodus
|
||
- Steuerung von Layer-Zuständen über Redux und Recoil
|
||
|
||
---
|
||
|
||
## Position im UI
|
||
Die Komponente wird als Floating-Panel oben rechts auf der Karte angezeigt. Sie hat eine feste Breite (min/max) und ist als "Sidebar-Lightbox" implementiert.
|
||
|
||
---
|
||
|
||
## Abhängigkeiten
|
||
|
||
### Redux
|
||
- `gisStationsStaticDistrictSlice`
|
||
- `gisSystemStaticSlice`
|
||
- `mapLayersSlice`
|
||
- `polylineLayerVisibleSlice`
|
||
- `gisStationsStaticSlice`
|
||
|
||
### Recoil
|
||
- `selectedAreaState`
|
||
- `zoomTriggerState`
|
||
- `poiLayerVisibleState`
|
||
|
||
### Hooks
|
||
- `useInitGisStationsStatic()`
|
||
|
||
---
|
||
|
||
## Funktionalität im Überblick
|
||
|
||
### 1. **Bereiche Dropdown**
|
||
- Gefüllt aus `GisStationsStatic.Points`
|
||
- Wird aktualisiert, wenn sich die Redux-Daten ändern
|
||
- Bei Auswahl wird `selectedAreaState` aktualisiert
|
||
|
||
### 2. **Systemlayer-Checkboxen**
|
||
- Daten kommen aus `GisSystemStatic`
|
||
- Jeder Eintrag hat `Name` und einen intern generierten `key`
|
||
- Sichtbarkeit wird über `mapLayersState` verwaltet
|
||
- Zustand wird in `localStorage` gespeichert
|
||
|
||
### 3. **TALAS-Untermenu**
|
||
- Bei Systemname "TALAS" wird eine Untergruppe angezeigt:
|
||
- Checkbox für Polyline (Kabelstrecken)
|
||
- Sichtbarkeit auch in `localStorage`
|
||
|
||
### 4. **POI-Checkbox**
|
||
- Recoil-State `poiLayerVisibleState`
|
||
- Sichtbarkeit von POI-Layern auf der Karte
|
||
|
||
### 5. **EditModeToggle**
|
||
- Eine separate Komponente
|
||
- Aktiviert/Deaktiviert den Bearbeitungsmodus (z. B. für Kontextmenü-Einträge)
|
||
- Bei aktivem EditMode sind Checkboxen deaktiviert
|
||
|
||
---
|
||
|
||
## Lokale Speicherwerte (localStorage)
|
||
Folgende Werte werden zwischen Sitzungen gespeichert:
|
||
|
||
| Key | Zweck |
|
||
|------------------------|----------------------------------|
|
||
| `poiVisible` | Sichtbarkeit POI-Layer |
|
||
| `polylineVisible` | Sichtbarkeit Kabelstrecken |
|
||
| `mapLayersVisibility` | Sichtbarkeitsstatus für alle Layer |
|
||
| `editMode` | Status des Bearbeitungsmodus |
|
||
|
||
---
|
||
|
||
## Bekannte Besonderheiten
|
||
- **Fallbacks** für Redux-Selector: z. B. `|| []` bei leeren Listen
|
||
- **Fehlerprüfung** für `GisStationsStatic.Points` im useEffect
|
||
- **Doppelte Initialisierung von stationListing** (einmal aus `Points`, einmal aus `District`)
|
||
|
||
---
|
||
|
||
## Voraussetzungen für korrekte Funktion
|
||
- API-Endpunkt `/GisStationsStatic?idMap=...` muss korrekte Struktur liefern: `{ Points: [...] }`
|
||
- Recoil- und Redux-Stores müssen korrekt initialisiert sein
|
||
- Hook `useInitGisStationsStatic` muss beim Mount ausgeführt werden
|
||
|
||
---
|
||
|
||
## Weiterführende Dateien
|
||
- `/hooks/useMapComponentState.js`
|
||
- `/components/EditModeToggle.js`
|
||
- Redux-Slices unter `/redux/slices/`
|
||
|
||
---
|
||
|
||
## Speicherort für Dokumentation
|
||
Empfohlenes Ziel: `/docs/DataSheet.md`
|