# 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.
