# 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` * `poiLayerVisibleSlice` * `zoomTriggerSlice` * `selectedAreaSlice` ### 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** - Redux-Slice `poiLayerVisibleSlice` - 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: [...] }` - Redux Store muss 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` --- --- ## Hinweis zur Umstellung Diese Komponente wurde ursprünglich mit Recoil entwickelt. Seit Version `1.1.96` ist der Zustand vollständig auf **Redux Toolkit** umgestellt. Die Recoil-Atoms wurden entfernt und durch Redux-Slices ersetzt.