# 📄 CHANGELOG

Alle bedeutenden Änderungen an diesem Projekt werden in dieser Datei dokumentiert.

---

## [1.1.232] – 2025-06-04

### ✨ Added

- GMA-Werte (z. B. FBT, GT, LT, RLF) werden nun im Tooltip angezeigt – direkt aus
  `gisStationsMeasurements`.

### 🛠 Changed

- `createAndSetDevices.js` überarbeitet: GMA-Messwerte werden dynamisch anhand `Na`-Feld gruppiert
  und in Map-Tooltips eingebunden.
- Hilfsstruktur `gmaMap` integriert zur sicheren Zuordnung von Messwerten über `IdLD`.

### 🧪 Debug & Visualisierung

- Tooltip zeigt standardmäßig `"-"` bei fehlenden Werten.
- Darstellung ist aktuell nur für `System === 11` aktiv (z. B. GMA-Messstellen).

### 🔧 Version

- 📦 `appVersion.js` auf Version **1.1.232** erhöht

---

## [1.1.231] – 2025-06-04

### ✨ Added

- Neue API-Endpunkte unter `pages/api/mocks/webservice/` erstellt zum Abruf statischer Mockdaten
  (`GisSystemStatic.json`, `GisLinesStatus.json`, `GisStationsStaticDistrict.json`, ...).
- Zentrale Umgebungsvariable `NEXT_PUBLIC_USE_MOCKS` eingeführt zur Steuerung des Mockbetriebs.

### 🧠 Architektur

- Alle `fetchGis*.js` Service-Dateien prüfen nun `process.env.NEXT_PUBLIC_USE_MOCKS`, um je nach
  Modus echte Webservices oder Mock-API-Endpunkte aufzurufen.
- `.env.production` setzt `NEXT_PUBLIC_USE_MOCKS=false` für sichere Produktionsumgebung.
- `.env.local` erlaubt flexiblen Mock-Modus für lokale Entwicklung.
- Alert-Hinweis (nur zu Testzwecken) im Mock-Mode eingebaut zur Visualisierung des aktuellen Modus.

### 🛡️ Sicherheit

- Mockdaten-Verzeichnis `/mockData/*.json` vollständig über `.gitignore` vom Repository
  ausgeschlossen.
- `.env.local` bleibt lokal – Produktionsbuild verwendet automatisch `.env.production`.

### 🛠 Clean

- Alle alten Zugriffe auf `/public/*.json` ersetzt durch `pages/api/mocks/webservice/*.js`.
- Entwicklungsversionen nutzen nun `http://localhost:3000/api/mocks/webservice/...` statt `/public`.

### 🔧 Version

- 📦 `appVersion.js` auf Version **1.1.231** erhöht

---

## [1.1.230] – 2025-06-04

### 🐞 Fixed

- Gerätemarker wurden bei jeder Datenaktualisierung mehrfach gezeichnet → Marker-Layer vor dem
  Neuladen jetzt korrekt geleert
- OverlappingMarkerSpiderfier (Spiderfy) bei überlappenden Geräten reaktiviert

### ♻️ Refactor

- Markerlogik in `useDynamicDeviceLayers.js` verbessert: Sichtbarkeit, Ersetzung und OMS-Handling
  zentral geregelt

### 🔧 Version

- 📦 `appVersion.js` auf Version `1.1.230` erhöht

---

## [1.1.216] – 2025-06-02

### Hinzugefügt

- Einheitliche Verwendung der Funktion `openInNewTab()` für Kontextmenü-Link bei Geräten, Linien und
  GMA.
- Kontextmenüpunkt „Station öffnen (Tab)“ öffnet nun korrekt `/devices/cpl.aspx?...` anstelle von
  z. B. `/cpl.aspx?...`.

### Geändert

- Port 3000 wird aus generierten Links entfernt (auch in Entwicklungsumgebung).
- `setupPolylines.js`, `contextMenuUtils.js` und `useGmaMarkersLayer.js` angepasst, um einheitliche
  Navigation zu gewährleisten.

---

## [1.1.211] – 2025-06-02

### Hinzugefügt

- Leaflet-Kontextmenü für Geräte-Marker (Stations/Geräte) aktiviert
- Menüpunkt „Station öffnen (Tab)“ erscheint nun direkt im Marker-Kontextmenü, basierend auf
  `marker.options.link`
- Redux-Abhängigkeit (`selectedDevice`) für Kontextmenü entfernt

### Geändert

- `addContextMenuToMarker` prüft nun direkt auf `marker.options.idDevice` und `link` anstatt
  globalen Zustand

---

## [1.1.209] – 2025-06-02

### Added

- Dynamische Initialisierung aller Gerätegruppen-Layer (system-<IdSystem>) über GIS-Systemdaten.
- Automatische Sichtbarkeitssteuerung in `mapLayersSlice` basierend auf `IdSystem`.
- Mermaid-Diagramm zur Dokumentation der Architektur in
  `/docs/architecture/device-layer-connection-final.md`.

### Changed

- Vergleichslogik zwischen `gisStationsStaticDistrict[].System` und `gisSystemStatic[].IdSystem` von
  `Name` auf `IdSystem` umgestellt.
- `MapLayersControlPanel` verwendet jetzt konsistent `system-<IdSystem>` als Key.
- `useDynamicDeviceLayers` baut Layer-Gruppen und Marker-Zuordnung ebenfalls über `IdSystem` auf.

### Removed

- Veraltete statische Layer-Namen (`TALAS`, `SMSFunkmodem`, etc.) aus `mapLayersSlice`.

---

## [1.1.191] – 2025-05-27

### 🐞 Fixed

- Fehler behoben: Kontextmenü „Station öffnen (Tab)“ wurde bei Geräten/Stationen mehrfach angezeigt
- Ursache war doppelte Registrierung bei jedem Rechtsklick – jetzt mit `contextMenuCreated`-Flag
  verhindert
- Datei `createAndSetDevices.js` entsprechend angepasst

### 🔧 Version

- 📦 Version erhöht auf **1.1.191**

---

[1.1.190] – 2025-05-27 🐞 Fixed Dropdown im UI Widget MapLayersControlPanel zeigte keine
Stations-/Bereichsnamen an 🔧 Fehler behoben: Zugriff auf GisStationsStaticDistrict.Points statt auf
das Objekt selbst

📄 Dokumentation Neue technische Markdown-Dokumentationen erstellt:

/docs/components/uiWidgets/mapLayersControlPanel/MapLayersControlPanel.md

/docs/components/uiWidgets/mapLayersControlPanel/EditModeToggle.md

/docs/components/uiWidgets/VersionInfoModal.md

/docs/components/uiWidgets/CoordinateInput.md

🔧 Version 📦 Version erhöht auf 1.1.190

---

## [1.1.188] – 2025-05-27

### ♻️ Refactor

- Alle hartkodierten `/talas5/`-Pfadangaben entfernt
- Dynamischer `basePath` eingeführt über `.env.local → NEXT_PUBLIC_BASE_PATH`
- Unterstützt jetzt auch den Betrieb ohne Unterverzeichnis

### 🧠 Architektur

- `fetchGisLinesStatusService.js`, `fetchGisStationsStaticDistrictService.js`,
  `useGmaMarkersLayer.js`, `setupPolylines.js` u. a. angepasst
- Links wie `Station öffnen (Tab)` oder WebService-URLs bauen sich nun dynamisch je nach basePath

### 📄 Dokumentation

- README.md aktualisiert: Hinweis auf neuen konfigurierbaren `basePath`

🔧 Version

- 📦 Version erhöht auf **1.1.188**

---

## [1.1.187] – 2025-05-27

### 📄 Dokumentation

- Neue Markdown-Dokumentation erstellt:  
  `/docs/pages/api/talas_v5_DB/priorityConfig.md`
  - Beschreibt die API `/api/talas_v5_DB/priorityConfig`
  - Enthält Beispielantwort, Datenstruktur, SQL, Fehlerhandling
  - Besonderheit: Anwendung der Prioritätswerte (`level`) zur Sortierung von Leaflet-Markern bei
    Überlappung

### 🧠 Architektur

- Dokumentation enthält ausführlichen Abschnitt „🔗 Verwendet in“ mit klaren Verweisen auf:
  - `MapComponent`, `createAndSetDevices`, `priorityConfigSlice`, u. a.
- Leaflet-Markerdarstellung über `zIndexOffset` auf Basis von `priorityConfig.level` wird erklärt

🔧 Version

- 📦 Version erhöht auf **1.1.187**

---

## [1.1.186] – 2025-05-27

### 🔥 Removed

- Umgebungsvariable `NEXT_PUBLIC_USE_MOCK_API` vollständig entfernt
- Veralteter Entwicklungsmodus mit Mockdaten ist nicht mehr aktiv
- Alle Dateien und Codepfade, die sich auf `/webServiceMockdata/` oder `mockMode` bezogen, gelöscht

### 🧠 Architektur

- Die Anwendung läuft nun ausschließlich mit realer Datenanbindung:
  - 🔌 Next.js-API → MySQL (Docker)
  - 🌐 TALAS.web-Services (IIS)

### 📄 Dokumentation

- `README.md` aktualisiert:
  - Mockdaten-Abschnitt durch Hinweis auf reale API ersetzt

🔧 Version

- 📦 Version erhöht auf **1.1.186**

---

## [1.1.185] – 2025-05-27

### 🔥 Removed

- Verzeichnis `/webServiceMockdata/` vollständig gelöscht
  - Alle früheren Mock-Daten wurden durch einen realistischen Setup mit MySQL (Docker) und TALAS.web
    (unter IIS) ersetzt
  - Kein fetch() oder Dateizugriff auf diese Daten mehr im Projekt vorhanden (geprüft via VSCode
    „Find in Files“)
  - Die Tests laufen nun gegen reale Backends (lokal & remote)

### 🧠 Architektur

- Projekt verwendet für Entwicklung und Test ausschließlich reale Services:
  - 🔌 Datenbankzugriff über Next.js-API (Port 3000) → MySQL (Docker)
  - 🌐 Webservice-Tests über TALAS.web (IIS, Windows 11)

### ✅ Clean

- Alle Verweise auf Mock-Dateien entfernt
- Struktur der Entwicklung basiert jetzt vollständig auf realitätsnahen Schnittstellen

🔧 Version

- 📦 Version erhöht auf **1.1.185**

---

## [1.1.184] – 2025-05-27

### 🧠 Architektur

- Dokumentationsverzeichnis `/docs/` restrukturiert:
  - Statt `docs/frontend` und `docs/server` folgt es jetzt exakt der Quellcode-Struktur
  - z. B. `docs/redux/slices/`, `docs/pages/api/`, `docs/utils/`
  - Ziel: Entwickler finden die Doku dort, wo auch die jeweilige Datei liegt

### ✅ Clean

- Verbesserte Lesbarkeit und Navigierbarkeit für neue Teammitglieder
- README.md verweist nun auf die neue Struktur für technische Doku

🔧 Version

- 📦 Version erhöht auf **1.1.184**

---

📦 [1.1.183] – 2025-05-27 ♻️ Refactor Die Hilfsfunktion saveLineData() wurde vollständig entfernt:

In markerUtils.js und poiUtils.js ersetzt durch updatePolylineCoordinatesThunk via Redux

Zentrale Dispatch-Hilfsfunktion savePolylineRedux() erstellt für alle Linienaktionen (Einfügen,
Verschieben, Entfernen)

Einheitliche Verwendung des Redux-Dispatch in Utility-Dateien:

Kein direktes fetch() mehr

Fehlerbehandlung über .unwrap().catch(...) integriert

Map-Utilities und POI-Utilities sind nun Redux-kompatibel und testbar

✅ Clean saveLineData aus mapUtils.js gelöscht

Alle Marker-Operationen speichern ihre Koordinaten ausschließlich über Redux

🧠 Architektur Redux-Toolkit Standardstruktur umgesetzt:

updatePolylineCoordinatesService.js

updatePolylineCoordinatesThunk.js

Nutzung außerhalb React-Komponenten über store.dispatch(...)

Leaflet-Logik (z. B. marker.setLatLng(), map.removeLayer()) bleibt in Utility-Dateien – Redux
kümmert sich nur um Daten

🔧 Version 📦 Version erhöht auf 1.1.183

---

## [1.1.182] – 2025-05-27

### ♻️ Refactor

- Bereichsaktualisierung (`updateAreaUtil.js`) vollständig ersetzt durch Redux-Architektur:
  - 🔁 Neue Dateien: `updateAreaService.js`, `updateAreaThunk.js`, `updateAreaSlice.js`
  - ❌ Alte fetch-Methode entfernt, durch Redux-Thunk ersetzt
  - Bereichskoordinaten werden jetzt via `dispatch(updateAreaThunk(...))` aktualisiert

### 🧠 Architektur

- Einhaltung des Musters: `Service → Thunk → Slice`
- Status-Handling und Fehleranzeige über `updateAreaSlice` möglich
- `useAreaMarkersLayer.js` nutzt jetzt Redux-Thunk und optionalen `onUpdateSuccess`-Callback
- Redux-Version kompatibel mit DevTools und zentraler Fehlerbehandlung

### ✅ Clean

- `updateAreaUtil.js` ist überflüssig und wurde entfernt
- MapComponent verwendet jetzt `updateAreaThunk` direkt für Bereichsmarker

### 📄 README.md (optional)

- Wenn gewünscht, kann in `README.md` ein neuer Punkt unter `🚀 Funktionen` ergänzt werden:
  > - Bereichsaktualisierung via Redux (statt direkter fetch-Aufrufe)

### 🔧 Version

- 📦 Version erhöht auf **1.1.182**

---

[1.1.181] – 2025-05-26 ♻️ Refactor setupPolylines.js von direktem fetch() auf sauberes Redux-Muster
umgestellt:

Statt fetch("/api/talas_v5_DB/gisLines/updateLineCoordinates") wird jetzt
updatePolylineCoordinatesThunk() verwendet

Die Request-Daten werden an ein zentrales Service-Modul (updatePolylineCoordinatesService.js)
übergeben

Async-Handling erfolgt über .unwrap().then().catch() zur besseren Fehlerkontrolle

🧠 Architektur Einheitliches Redux-Schema umgesetzt:

Service: updatePolylineCoordinatesService.js

Thunk: updatePolylineCoordinatesThunk.js

(Optional) Status-Tracking über Slice: updatePolylineCoordinatesSlice.js

Redux Toolkit-konforme store.dispatch(...)-Verwendung in Utility-Datei (außerhalb von React-Kontext)

✅ Clean Alle direkten fetch-Aufrufe aus setupPolylines.js entfernt

Kein hartcodiertes URL-Handling mehr – alles läuft über zentrale Redux-Logik

🔧 Version 📦 Version erhöht auf 1.1.181

---

[1.1.180] – 2025-05-26 ♻️ Refactor poiTypesSlice.js wurde bereinigt:

Alte createAsyncThunk-Definition entfernt (direkter fetch im Slice)

Stattdessen Verwendung des ausgelagerten Thunks fetchPoiTypThunk aus fetchPoiTypThunk.js

Einheitliche Architektur umgesetzt:

Service → Thunk → Slice

Keine Logik mehr im Slice selbst

Verwendete Komponenten (MapComponent, AddPOIModal) rufen jetzt korrekt dispatch(fetchPoiTypThunk())
auf

🐞 Fixed Fehler fetchPoiTypes is not a function behoben durch Entfernen des alten Imports aus
poiTypesSlice

Richtiger Import fetchPoiTypThunk nun überall verwendet

🧠 Architektur Redux-Slice enthält nur noch Zustand & Status – keine Abfragen mehr

fetchPoiTypService.js stellt fetch()-Logik bereit, Thunk übernimmt Fehlerbehandlung

🔧 Version 📦 Version erhöht auf 1.1.180

---

[1.1.177] – 2025-05-26 ✨ UI-Verbesserung POI-Tooltip auf der Karte wird jetzt bei Mouseover
angezeigt (nicht mehr per Klick).

Tooltip ist einheitlich gestaltet mit Tailwind CSS:

Abgerundete Ecken (rounded-xl)

Schatten (shadow-lg)

Innenabstände (px-4 py-2)

Blaue Überschrift, graue Beschriftung

Einheitlicher Stil für alle Marker-Tooltips (setupPOIs.js angepasst).

✅ Clean Alte bindPopup()-Logik entfernt – kein manuelles Öffnen/Schließen mehr nötig

closePopup() aus mouseout-Handler entfernt

Tooltip verwendet sticky: true, folgt der Maus

🔧 Version 📦 Version erhöht auf 1.1.177

---

[1.1.176] – 2025-05-26 🐞 Fixed Problem behoben, dass das Modal „POI hinzufügen“ nach erfolgreichem
Submit nicht geschlossen wurde und die Meldung „Wird hinzugefügt…“ dauerhaft sichtbar blieb.

Ursache: Die Service-Datei addPoiService.js verwendete die falsche URL /addLocation statt /addPoi.

Die unwrap()-Verwendung im AddPOIModal.js wurde beibehalten und korrekt abgeschlossen.

✅ Clean resetAddPoiStatus() wird jetzt direkt nach onClose() dispatcht, um Status in Redux auf idle
zurückzusetzen.

Ladeindikator „Wird hinzugefügt...“ wird zuverlässig entfernt.

Fehleranzeige funktioniert weiterhin über Redux (status === "failed" und error).

🧠 Architektur Vollständige Redux-Anbindung des Modals über addPoiSlice, addPoiThunk, addPoiService
und addPoi.js.

Thunk-Erfolg löst incrementTrigger() aus und synchronisiert die Marker auf der Karte durch erneutes
Laden via fetchPoiMarkersThunk().

🔧 Version 📦 Version erhöht auf 1.1.176

---

[1.1.174] – 2025-05-26 ♻️ Refactor useDrawLines.js vollständig auf Redux umgestellt:

Entfernt: direkter fetch("/api/talas_v5_DB/gisLines/readGisLines")

Stattdessen: Redux fetchGisLinesThunk() + selectGisLines verwendet

Datenverarbeitung der points erfolgt reaktiv über Redux-State

🧠 Architektur useDrawLines.js verwendet jetzt:

fetchGisLinesService (Service)

fetchGisLinesThunk (Thunk)

gisLinesSlice mit Selektor selectGisLines

State wird automatisch im Redux verwaltet (loading/succeeded/failed)

✅ Cleanup Promise-Kette .then().catch() durch useSelector-basierten Effekt ersetzt

Fehlerausgabe bei ungültigen points strukturiert behandelt

Hook ist nun Redux-konform und testbar

🔧 Version 📦 Version erhöht auf 1.1.174

---

[1.1.173] – 2025-05-26 ♻️ Refactor useMapComponentState.js vollständig auf Redux umgestellt:

Entfernt: lokale fetch(...)-Aufrufe

Redux-Integration für:

poiTypData → über poiTypSlice + fetchPoiTypThunk

locationDeviceData → über gisStationsStaticDistrictSlice + fetchGisStationsStaticDistrictThunk

priorityConfig → über priorityConfigSlice + fetchPriorityConfigThunk

poiLayerVisible → direkter Zugriff über Redux-Zustand

🧠 Architektur useMapComponentState.js ist jetzt rein selektorbasiert

Standardstruktur Service → Thunk → Slice vollständig eingehalten

Komponente reagiert nur noch auf Redux-Status (z. B. poiTypStatus === "succeeded")

✅ Cleanup useState() für priorityConfig und locationDeviceData entfernt

deviceName wird direkt aus Redux-Daten abgeleitet

Selektor für poiLayerVisible wird direkt inline verwendet

🔧 Version 📦 Version erhöht auf 1.1.173

---

## [1.1.166] – 2025-05-25

### 🐞 Fixed

- POI-Icons wurden immer als `poi-marker-icon-4.png` dargestellt, egal welcher Typ
- Ursache: `setupPOIs.js` hat versehentlich `poi.idPoi === poi.idPoi` geprüft statt
  `poi.idPoiTyp === ...`

### ✅ Clean

- Korrekte Zuordnung von `idPoi → iconPath` über Map-Mapping implementiert (`iconMap`)
- Fallback-Icon `default-icon.png` wird angezeigt, wenn kein Icon verfügbar ist

### 🧠 Architektur

- `poiIconsData` wird in Redux geladen und über `setupPOIs` interpretiert
- Mapping-Logik in `setupPOIs.js` gekapselt, vorbereitet für Unit-Tests

### 🧪 Tests

- Test-Vorbereitung: `setupPOIs.js` wurde entkoppelt für spätere Jest-Tests (TDD-fähig gemacht)

### 🔧 Version

- 📦 Version erhöht auf **1.1.166**

---

### ✅ Test

- Cypress E2E-Test für POI-Bearbeitung eingeführt:
  - Klickt auf Marker mit Icon 4
  - Aktiviert Bearbeitungsmodus
  - Öffnet das Modal „POI bearbeiten“
  - Prüft, dass der Dropdown „Typ“ einen vorausgewählten Wert enthält
  - Erkennt Regressionen bei Typ-Zuweisung im Bearbeitungsdialog zuverlässig

---

## [1.1.164] – 2025-05-23

### 🐞 Fixed

- POI-Typ wurde beim Öffnen des Modals nicht korrekt im Dropdown angezeigt
  - Ursache: `idPoiTyp` fehlte in `marker.options`
  - Lösung: `idPoiTyp` im `setupPOIs.js` an Marker übergeben und in `handleEditPoi()` verwendet

### ✅ Clean

- `poiUtils.js` und `setupPOIs.js` um konsistente Übergabe von Marker-Metadaten erweitert
- Berechtigungsprüfung in `handleEditPoi()` auf `.some(r => r.IdRight === 56)` umgestellt
- `PoiUpdateModal.js` vollständig refaktoriert mit klarer Zustandstrennung

### 🧠 Architektur

- POI-Typ Auswahl basiert nun vollständig auf Redux-Daten (`poiTypSlice`)
- keine hartcodierten Dropdown-Initialwerte mehr – vollständig datengetrieben

### 🔧 Version

- 📦 Version erhöht auf **1.1.164**

---

## [1.1.162] – 2025-05-23

### ♻️ Refactor

- `PoiUpdateModal.js` vollständig auf direkte Geräte-ID (`idLD`) über `react-select` umgestellt
- Thunk `getDeviceIdByNameThunk` entfernt, da ID direkt im Dropdown verfügbar ist
- `updatePoiThunk` + `updatePoiService.js` erfolgreich integriert für POST-Anfrage
- `handleSubmit()` aktualisiert, robust gegen fehlende Felder

### 🧠 Architektur

- Geräteselektion nutzt nun die eindeutige ID (`idLD`) aus der Auswahl – stabiler und performanter
- Alle POI-Änderungen laufen nun über Service + Thunk + Dispatch, ohne fetch()

### 🛠 Sicherheit & Wartbarkeit

- keine API-Abhängigkeit mehr für Gerätesuche
- einheitliche Redux-Thunk-Strategie eingehalten

### 🔧 Version

- 📦 Version erhöht auf **1.1.162**

---

## [1.1.161] – 2025-05-23

### ♻️ Refactor

- Löschfunktion für POI (`handleDeletePoi`) in `PoiUpdateModal.js` refaktoriert
- Direkten `fetch(...)`-Aufruf entfernt und ersetzt durch:
  - Service: `deletePoiService.js`
  - Redux Thunk: `deletePoiThunk.js`

### 🧠 Architektur

- Für serverseitige Befehle (DELETE) wird kein Redux Slice benötigt
- Redux-Thunk ohne eigenen Status-Slice verwendet – schlank und wartbar

### ✅ Clean

- Einheitliche Struktur beibehalten: `Service → Thunk → Dispatch`
- Wiederverwendbarkeit verbessert (z. B. für spätere Delete-Buttons)

### 🔧 Version

- 📦 Version erhöht auf **1.1.161**

---

## [1.1.160] – 2025-05-23

### ♻️ Refactor

- `PoiUpdateModal.js` umgestellt auf Redux `poiTypSlice`
- Direkter `fetch("/api/talas_v5_DB/poiTyp/readPoiTyp")` entfernt
- POI-Typen jetzt über `fetchPoiTypThunk` geladen

### 🧠 Architektur

- POI-Typen einheitlich über Redux-Store statt lokalem State
- `poiTypData` kommt nun aus `selectPoiTypData` (Redux)

### 🔧 Version

- 📦 Version erhöht auf **1.1.160**

---

## [1.1.159] – 2025-05-23

### 🐞 Fixed

- Fehler behoben: `userRights.includes(56)` schlug fehl, da Rechteobjekte `{ IdRight }` enthalten –
  ersetzt durch `.some(r => r.IdRight === 56)`
- Kontextmenü „POI bearbeiten“ wird jetzt korrekt angezeigt
- Modal öffnet sich nur noch bei gültiger Berechtigung (56)

### ✅ Clean

- Rechteprüfung in `setupPOIs.js` und `poiUtils.js` vereinheitlicht
- `handleEditPoi(...)` überprüft jetzt korrekt mit `.some(...)`

### 💥 Bugfix

- Fehler `TypeError: fetchLocationDevicesFromDB is not a function` in `PoiUpdateModal.js` behoben
  - Ursache: falscher Import aus Slice statt Thunk
  - Lösung: Import auf `fetchLocationDevicesThunk` geändert

### 🧠 Architektur

- POI-Rechte über Webservice vollständig in Redux geladen
- `PoiUpdateModal.js` verwendet Redux Thunk zur Initialisierung von Location Devices

### 🔧 Version

- 📦 Version erhöht auf **1.1.159**

---

## [1.1.158] – 2025-05-23

### ✨ Feature

- Neue POI-Hinzufügen-Logik mit Redux `addPoiThunk` umgesetzt
- `AddPOIModal.js` vollständig umgebaut:
  - kein direktes `fetch(...)` mehr
  - stattdessen: Redux Thunk + Service
  - Statusanzeige über `status` / `error` aus `addPoiSlice`
- Automatisches Nachladen der POI-Icons über `fetchPoiIconsDataThunk`

### 🐞 Fixed

- Bug behoben: neu hinzugefügter POI zeigte Standard-Icon → Icon-Liste wird nach dem Hinzufügen
  erneut geladen

### ✅ Clean

- `window.location.reload()` aus `AddPOIModal.js` entfernt
- API-Aufrufe vollständig in `services/database/addPoiService.js` gekapselt

### 🧠 Architektur

- Redux-Standardstruktur eingehalten: `Service` → `Thunk` → `Slice`
- Redux-Status wird in Modal direkt über `useSelector` abgebildet

### 🔧 Version

- 📦 Version erhöht auf **1.1.158**

---

## [1.1.153] - 2025-05-22

### ✨ Features

- Neue Redux-Slices erstellt: `poiIconsDataSlice` und `poiTypSlice`
- Neue Services erstellt: `fetchPoiIconsDataService.js`, `fetchPoiTypService.js`
- Neue Thunks: `fetchPoiIconsDataThunk.js`, `fetchPoiTypThunk.js`
- State-Management für POI-Typen und POI-Icons vollständig in Redux überführt
- Komponente `useFetchPoiData.js` entfernt und durch Redux ersetzt

### ♻️ Refactoring

- Alle direkten `fetch`-Aufrufe durch Redux-Thunk ersetzt
- Architektur auf eine zentralisierte, testbare Datenflussstruktur verbessert
- Zustand der POI-Daten über Redux `store.js` global verwaltet

### ✅ Cleanup

- `useFetchPoiData.js` gelöscht, da Funktionalität durch Thunks ersetzt wurde

---

## [1.1.150] - 2025-05-22

### Removed

- `config.js` vollständig gelöscht – keine Abhängigkeiten mehr im Projekt
- Funktion `isMockMode()` entfernt – direkter Zugriff auf `process.env.NEXT_PUBLIC_USE_MOCK_API`
  ersetzt zentrale Hilfsfunktion

### Changed

- `fetchUserRightsService.js`, `fetchGisSystemStaticService.js` und `useMapComponentState.js`
  angepasst:
  - Verwendet dynamisch `window.location` + `.env.local` statt config.js
  - Verbesserte Übersichtlichkeit und zentrale Steuerung über `.env.local`

### Architecture

- Konfiguration und API-Port-Steuerung vollständig in `.env.local` ausgelagert
- Einheitliche Struktur für Webservice-Aufrufe (`window.location + mode`)
- Vereinfachtes Debugging, klarere Struktur für neue Entwickler

---

## [1.1.148] - 2025-05-22

### Hinzugefügt

- Tooltips für Linien vollständig über Redux (`gisLinesStatusFromWebservice`) implementiert.
- Linienstatusdaten jetzt über `useLineData()` aus dem Redux-Toolkit Store geladen.

### Entfernt

- `webserviceGisLinesStatusUrl` aus `config.js` entfernt – URL wird zentral in
  `fetchGisLinesStatusService.js` aufgebaut.

### Geändert

- `useLineData.js` angepasst, um Redux Store zu nutzen statt URL-Parameter.
- `MapComponent.js` entsprechend refaktoriert.

---

## [1.1.147] - 2025-05-22

### Hinzugefügt

- Redux-Slice `gisUserRightsFromWebservice` eingeführt zur Ablösung von `useLoadUserRights.js`
- Zustand `userRights` jetzt vollständig über Redux gesteuert

### Geändert

- `MapComponent.js` angepasst: `useLoadUserRights.js` entfernt, stattdessen Thunk + Selector
  verwendet
- `fetchUserRightsThunk` direkt in `MapComponent.js` integriert

### Architektur

- Redux-Toolkit wird jetzt systematisch für Webservice-Daten verwendet
- Bessere Trennung zwischen Service, Thunk und Slice
- Lesbarkeit und Wartbarkeit deutlich verbessert

---

## [1.1.144] – 2025-05-22

### Fixed

- ✅ Fehlerhafte Webservice-Antwortstruktur in `fetchGisLinesStatusService.js` korrigiert
  - Erwartet wurde `json.Lines`, geliefert wurde aber `json.Statis`
  - Daten landen jetzt korrekt im Redux Slice `gisLinesStatus`

### Architecture

- 🔁 Vollständige Redux-Anbindung von Linienstatus über `fetchGisLinesStatusThunk`
- 🧠 Daten aus WebService `GisLinesStatus` werden zentral über Redux verwaltet
- 💡 Fehlerbehandlung und JSON-Parsing robuster gestaltet

### Version

- 📦 Version erhöht auf **1.1.144**

---

## [1.1.139] – 2025-05-22

### Changed

- 🔁 Geräte-/Stationsanzeige vollständig auf **Redux-Store** umgestellt:
  - `createAndSetDevices.js` verwendet jetzt nur noch Redux-Selectoren
    (`selectGisStationsStaticDistrict`, `selectGisStationsStatusDistrict`)
  - Entfernt: direkter `fetch(...)`-Zugriff über `config.js`
  - Kein Zugriff mehr auf `mapGisStationsStaticDistrictUrl` / `StatusDistrictUrl`

### Fixed

- ✅ Fehler "❌ Redux enthält keine gültigen Geräte-/Statusdaten!" gelöst durch korrekte Abfrage
  `state.gisStationsStaticDistrict.data.Points`
- ✅ Marker erscheinen wieder zuverlässig durch saubere Trennung von Datenquelle und Darstellung

### Architecture

- 🧠 Marker-Erstellung erfolgt über `createAndSetDevices()` → Redux-Daten → Leaflet Marker
- 🔁 `MapComponent.js` und `useDynamicMarkerLayers.js` angepasst auf neue Redux-Architektur
- 🎯 Reduziert doppelte Datenhaltung, zentralisiert Geräte-Logik

### Version

- 📦 Version erhöht auf **1.1.139**

---

## [1.1.136] – 2025-05-21

### Fixed

- 🛠️ `DataSheet.js` zeigte nach Seiten-Neuladen keine GIS-Systeme mehr an
  - Ursache: `useEffect` reagierte nicht auf `GisSystemStatic`
  - behoben durch Ergänzen der Abhängigkeit im `useEffect`

### Renamed

- 🔄 `DataSheet.js` wurde in `MapLayersControlPanel.js` umbenannt
  - der neue Name spiegelt die tatsächliche Funktion als Karten-Layer-Steuerung besser wider
  - verbessert Verständlichkeit und Onboarding für Entwickler

### Version

- 📦 Version erhöht auf **1.1.136**

---

## [1.1.134] – 2025-05-21

### Cleanup

- ❌ Entfernt: `mapGisStationsMeasurementsUrl` aus `config.js`, da die URL nicht mehr benötigt wird
- 🧼 Entfernt: alte manuelle `fetch(...)`-Logik in `MapComponent.js` zur Messdatenaktualisierung
- 🔄 Stattdessen wird `fetchGisStationsMeasurementsThunk` aus Redux verwendet
- 🧠 Architekturstandard eingehalten: `/services/ → Thunk → Slice` für zentrale Datensteuerung

### Version

- 📦 Version erhöht auf **1.1.134**

---

## [1.1.132] – 2025-05-21

### Refactored

- Entfernt: manuelle Fetch-Funktion und lokalen `isDataLoaded`-State für `DataSheet`
- Hinzugefügt: Anzeige des Panels erfolgt jetzt über Redux Store
  (`GisStationsStaticDistrict.Points`)
- Verbesserte Kontrolle über Sichtbarkeit der Layer-Steuerung auf Basis von Store-Daten

---

## [1.1.130] – 2025-05-21

### Changed

- 🔁 GIS-Linien in `MapComponent.js` vollständig von `fetch(...)` auf Redux-Architektur umgestellt
  - Neuer Service: `fetchGisLinesService.js` für API-Aufruf
  - Neuer Thunk: `fetchGisLinesThunk.js` unter `/redux/thunks/database/`
  - Neuer Slice: `gisLinesSlice.js` mit Statusverwaltung (idle/loading/succeeded/failed)
  - Redux-Selektor `selectGisLines` in `MapComponent.js` genutzt
- Direkter `fetch("/api/talas_v5_DB/gisLines/readGisLines")` entfernt und durch
  `dispatch(fetchGisLinesThunk())` ersetzt
- Alle Linien-Daten werden nun zentral über Redux geladen und in `linePositions` umgewandelt

### Version

- 📦 Version erhöht auf **1.1.130**

---

## [1.1.128] – 2025-05-21

### Changed

- 🧠 Neue Datenquelle `priorityConfig` vollständig in Redux integriert:
  - Neuer Service: `fetchPriorityConfigService.js` unter `/services/database/`
  - Neuer Thunk: `fetchPriorityConfigThunk.js` unter `/redux/thunks/database/`
  - Neuer Slice: `priorityConfigSlice.js` unter `/redux/slices/database/`
  - Registrierung im Store (`priorityConfigReducer`) ergänzt
- `MapComponent.js` nutzt jetzt `dispatch(fetchPriorityConfigThunk())` zur Initialisierung
- Alle alten `useState` + `fetch(...)` für Prioritätsdaten entfernt

### Fixed

- ❌ Fehler `fetchPriorityConfigThunk is not defined` behoben durch Import und richtigen
  Store-Zugriff
- ❌ Bug: Redux Slice zeigte keine Daten – Ursache war fehlendes `dispatch` der Thunk-Funktion →
  behoben

### Cleanup

- 🧼 `fetchPriorityConfig` wird ausschließlich zentral über Redux gehandhabt

### Architekturhinweis

- 🔄 Komponente wie `MapComponent` ist der Trigger:  
  Thunks, Services und Redux-Slices alleine führen nichts aus – sie müssen durch ein `dispatch(...)`
  aktiviert werden.

### Version

- 📦 Version erhöht auf **1.1.128**

---

## [1.1.127] – 2025-05-21

### Changed

- 🧱 `fetchLocationDevices.js` wurde vollständig entfernt (lag zuvor unter `/redux/api/fromDB/`)
- Stattdessen wird der neue Service `fetchLocationDevicesService.js` in `/services/database/`
  verwendet
- Neuer Thunk `fetchLocationDevicesThunk.js` unter `/redux/thunks/database/` eingeführt
- `locationDevicesFromDBSlice.js` ersetzt durch `locationDevicesSlice.js` mit Anbindung an den neuen
  Thunk
- `MapComponent.js` nutzt jetzt `dispatch(fetchLocationDevicesThunk())` zur Initialisierung der
  Geräte

### Cleanup

- ❌ Alle direkten Service-Imports aus Slices entfernt (Schnittstelle liegt nun nur noch im Thunk)
- 🧼 Zugriff auf `fetchLocationDevicesFromDB()` ersetzt durch `fetchLocationDevicesThunk()`

### Version

- 📦 Version erhöht auf **1.1.127**

---

## [1.1.126] – 2025-05-21

### Cleanup

- 🧼 Veraltete GIS-API-Fetch-Dateien entfernt, da nun vollständig durch zentrale Redux-Architektur
  ersetzt:
  - `fetchGisStationsMeasurements.js`
  - `fetchGisStationsStatic.js`
  - `fetchGisStationsStaticDistrict.js`
  - `fetchGisStationsStatusDistrict.js`
  - `fetchGisSystemStatic.js`
- Ebenso entfernt:
  - `fetchLocationDevices.js` aus `/redux/api/fromDB/`

### Changed

- 🔁 Neue Ordnerstruktur eingeführt:
  - `redux/thunks/webservice/` für TALAS WebServices (Port 80)
  - `redux/thunks/database/` für API-Zugriffe auf eigene DB (Port 3000)
- Alle GIS-Thunks liegen jetzt in `/redux/thunks/webservice/` für klare Trennung
- Thunks übernehmen den Service-Import – Slices sind vollständig entkoppelt

### Fixed

- Alle GIS-Redux-Slices importieren nun ausschließlich zentrale Thunks
- `MapComponent.js`, `DataSheet.js` und andere Komponenten nutzen nur noch:
  - `gisStationsMeasurements`
  - `gisStationsStaticDistrict`
  - `gisStationsStatusDistrict`
  - `gisSystemStatic`

### Version

- 📦 Version erhöht auf **1.1.126**

---

## [1.1.125] – 2025-05-21

### Cleanup

- 🧼 Unnötige GIS-Fetch-Dateien entfernt:
  - `fetchGisStationsMeasurements.js`
  - `fetchGisStationsStatic.js`
  - `fetchGisStationsStaticDistrict.js`
  - `fetchGisStationsStatusDistrict.js`
  - `fetchGisSystemStatic.js`
- Alle Datenquellen werden jetzt ausschließlich über zentrale Redux Thunks und zugehörige Services
  geladen
- Alte Fetch-Struktur (`/redux/api/fromWebService`) vollständig obsolet

### Fixed

- Alle GIS-Redux-Slices greifen jetzt korrekt auf die Thunks aus `redux/thunks/` zu
- `DataSheet.js` und `MapComponent.js` verwenden nur noch:
  - `gisStationsMeasurements`
  - `gisStationsStaticDistrict`
  - `gisStationsStatusDistrict`
  - `gisSystemStatic`

### Changed

- Versionsnummer aktualisiert auf `1.1.125`

---

## [1.1.123] – 2025-05-21

### Changed

- 🔁 GIS-Datenquellen konsolidiert: Statt 5 werden jetzt nur 4 zentrale Redux-Slices verwendet:
  - ✅ Beibehalten: `gisStationsMeasurements`, `gisStationsStaticDistrict`,
    `gisStationsStatusDistrict`, `gisSystemStatic`
  - ❌ Entfernt: `gisStationsStatic` (veraltet / wurde durch `StaticDistrict` ersetzt)

### Fixed

- `MapComponent.js` und `DataSheet.js` bereinigt:
  - Alle Zugriffe auf `gisStationsStatic` entfernt
  - Zugriff erfolgt nur noch über `selectGisStationsStaticDistrict`

### Cleanup

- 🧼 Thunks, Services und Slices konsistent:
  - Alle Slices verwenden jetzt zentrale Thunks
  - Nicht benötigte Dateien (`fetchGisStatusStationsService.js`, `fetchGisStatusStationsThunk.js`,
    `gisStationsStaticSlice.js`) entfernt
- Redux DevTools zeigen saubere States mit `status: "succeeded"` für alle vier aktiven GIS-Quellen

---

## [1.1.122] – 2025-05-20

### Documentation

- 📄 Für alle Service-Dateien wurde Markdown-Dokumentation erstellt (`/docs/services/`)
- Jede `.md`-Datei enthält:
  - Kurzbeschreibung der Funktion
  - Beschreibung der URL-Parameter und Rückgabewerte
  - Zweck im Projektkontext
- Exportiert als ZIP zur Weitergabe und Integration

### Strukturierte Services dokumentiert:

- WebServices:
  - `fetchGisStationsMeasurementsService`
  - `fetchGisStationsStaticDistrictService`
  - `fetchGisStationsStatusDistrictService`
  - `fetchGisStatusStationsService`
  - `fetchGisSystemStaticService`
  - `fetchUserRightsService`
- Datenbank-APIs:
  - `fetchDeviceNameByIdService`
  - `fetchPoiDataService`
  - `updateLocationInDatabaseService`
- Utilities:
  - `fetchWithTimeout`

### Motivation

- 🧠 Klare Trennung zwischen Logik und Dokumentation
- 📦 Unterstützt Wartung, Teamarbeit und Onboarding
- ✅ Dokumentation vollständig unabhängig vom Code nutzbar

---

## [1.1.120] – 2025-05-20

### Refactor

- 🔁 Alle Webservice- und Datenbank-Fetches vollständig auf strukturierte Service-Dateien umgestellt
- Einheitliches Schema für Servicenamen: `fetchXyzService.js`
- Webservice-Dateien erwarten keine Importe mehr, sondern holen `?m` und `?u` direkt aus der URL

### Struktur

- `/services/webservice/` → für TALAS WebServices (Port 80)
  - z. B. `fetchGisSystemStaticService.js`, `fetchGisStationsMeasurementsService.js`
- `/services/database/` → für API-Fetches von Next.js (Port 3000)
  - z. B. `fetchDeviceNameByIdService.js`, `updateLocationInDatabaseService.js`
- `/services/utils/` → z. B. `fetchWithTimeout.js`

### Cleanup

- ❌ Veraltete Hooks entfernt: `useFetchWebServiceMap`, `setGisSystemStaticLoaded`, etc.
- 🧼 Nicht verwendete Service-Imports aus `MapComponent.js` bereinigt
- ❌ Datei `PoiUtils.js` gelöscht (nicht verwendet)

### Motivation

- ✅ Klare Trennung zwischen Webservice- und DB-Logik
- 🧠 Bessere Lesbarkeit im Code durch Postfix `Service`
- 👨‍💻 Einfache Navigation & Wartbarkeit der Anwendung

---

## [1.1.117] – 2025-05-20

### Changed

- 🔁 Projektstruktur unter `/services/` neu organisiert nach Datenquelle:
  - `/services/webservice/` für TALAS-WebServices (Port 80)
  - `/services/database/` für eigene Next.js-APIs (Port 3000)
  - `/services/utils/` für Hilfsfunktionen (z. B. `fetchWithTimeout`)
- Alle Service-Dateien konsistent benannt nach Schema: `fetchXyzService.js`
- Beispiel: `fetchGisStationsMeasurementsService.js`, `fetchPoiData.js`,
  `updateLocationInDatabase.js`

### Motivation

- ✅ Bessere Übersicht nach Quelle und Verantwortung
- 📦 Klare Trennung zwischen WebService-Fetch und App-APIs
- 👨‍💻 Erleichtert das Onboarding und Debugging

---

## [1.1.108] – 2025-05-20

### Removed

- 🧼 Alte POI-Komponenten gelöscht:
  - `AddPoiModalWindowWrapper.js`
  - `PoiUpdateModalWrapper.js`
  - `PoiUpdateModalWindow.js`
- Ersetzt durch moderne Komponenten mit direkter Redux-Anbindung (`ShowAddStationPopup`,
  `PoiUpdateModal`)

### Cleanup

- MapComponent.js nutzt jetzt ausschließlich `ShowAddStationPopup` für das Hinzufügen von POIs
- Kein indirekter Wrapper oder Popup-Overhead mehr nötig

### Fixed

- Verwirrende doppelte Komponentenbenennungen bereinigt

---

## [1.1.104] – 2025-05-19

### Removed

- 🧼 `useUpdateGmaData.js` entfernt (Redundant zu `gisStationsMeasurementsSlice`)

### Refactor (geplant)

- `useLineData.js` und `useMapComponentState.js` sollen weiter in Redux-Slices überführt werden

---

## [1.1.103] – 2025-05-19

### Changed

- 🔁 `MapComponent.js` überarbeitet:
  - `usePoiTypData` entfernt
  - POI-Typen werden jetzt über Redux (`poiTypesSlice`) geladen
  - Zustand `isPoiTypLoaded` durch Redux `status === "succeeded"` ersetzt
- 🔧 Redux-Selektor und `dispatch(fetchPoiTypes())` ergänzt für automatisches Laden

### Fixed

- ✅ Fehler "Cannot access 'isPoiTypLoaded' before initialization" behoben
- Build funktioniert wieder nach Hook-Löschung

---

## [1.1.101] – 2025-05-19

### Removed

- 🧼 Redundante React-Hooks entfernt, da Funktionalität vollständig in Redux abgebildet ist:
  - `useFetchPriorityConfig.js`
  - `useFetchUserRights.js`
  - `useFetchWebServiceMap.js`
  - `useFetchLineStatusData.js`

### Refactor

- 🔁 Vorbereitung zur Aufteilung von `useLineData.js` und `useMapComponentState.js` in separate
  Redux-Slices & spezialisierte Hooks
- 🟡 Validierte React-Hooks beibehalten (z. B. Marker-Handling & Layer-Logik)

---

## [1.1.100] – 2025-05-19

### Added

- ✅ Vollständige Redux-Dokumentation erstellt:
  - Alle aktiven Redux-Slices als `.md`-Dateien dokumentiert
  - Struktur: `docs/frontend/redux/slices/`
  - API-Funktionen in `docs/frontend/redux/api/fromWebService/`
- 🌐 Neue Markdown-Dateien u. a. für:
  - `poiTypesSlice`, `urlParameterSlice`, `zoomTriggerSlice`
  - `gisStationsStaticSlice`, `gisSystemStaticSlice`, ...
  - `polylineLayerVisibleSlice`, `polylineContextMenuSlice`, ...
- Jede Datei enthält:
  - Initialzustand, Aktionen, Beispielverwendung, Pfadreferenz

### Changed

- `README.md`: Hinweis auf neue Dokumentationsstruktur ergänzt
- `CHANGELOG.md`: Neuer Abschnitt für Version 1.1.100 eingefügt

---

## [1.1.98] – 2025-05-19

### Changed

- Setup-Dateien (`node-v20.12.1-x64.msi`, `nssm.exe`, `ChromeStandaloneSetup64.exe`) aus dem
  Repository entfernt
- Stattdessen Verlinkung in `README.md` zu SharePoint-Ordner für interne Tool-Downloads eingefügt
- Projektstruktur aufgeräumt – Installationsdateien blähen Git-Verlauf nicht mehr auf
- Hinweis in `README.md` zu Projektorganisation, Tool-Voraussetzungen und Linkstrategie ergänzt

---

## [1.1.97] – 2025-05-19

### Changed

- Recoil vollständig aus dem Projekt entfernt:
  - `_app.js`: `RecoilRoot` entfernt
  - `package.json`: `recoil` deinstalliert
  - `package-lock.json`: Recoil-Abhängigkeiten entfernt
- Projekt verwendet ausschließlich Redux mit `@reduxjs/toolkit`
- `README.md` aktualisiert:
  - Hinweis entfernt, dass Recoil verwendet wird
  - Abschnitt hinzugefügt, warum Redux bevorzugt wird (Übersicht, SSR-Fähigkeit bei Next.js)
- `DataSheet.md` überarbeitet: Recoil entfernt, Redux-Einsatz dokumentiert
- `Wiki.md` als veraltet markiert, da alle Dokumentationen in `/docs/` konsolidiert sind

### Removed

- `recoil` aus `package.json` und `node_modules`
- Erwähnungen von Recoil in Projekt-Dokumentation

---

## [1.1.95] – 2025-05-19

### Changed

- Letzter Recoil-Hook in `useMarkerLayers.js` entfernt:
  - `useRecoilValue(mapLayersState)` ersetzt durch `useSelector(selectMapLayersState)`
- Redux-Selektor `selectMapLayersState()` aus `mapLayersSlice.js` verwendet
- Projekt ist jetzt vollständig Recoil-frei und nur noch Redux-basiert

---

## [1.1.94] – 2025-05-19

### Changed

- `useCreateAndSetDevices.js` vollständig von Recoil auf Redux umgestellt:
  - `useRecoilState(polylineEventsDisabledState)` entfernt
  - Stattdessen Zugriff über `useSelector(state => state.polylineEventsDisabled.disabled)`
- Redux-Slice `polylineEventsDisabledSlice.js` final integriert
- Rückgabe von `setPolylineEventsDisabled` entfernt, da Zustand nun global über Redux verwaltet wird

---

## [1.1.93] – 2025-05-19

### Changed

- Letzte Recoil-Reste entfernt:
  - `AddPoiModalWindow.js` nutzt `dispatch(incrementTrigger())` statt `useSetRecoilState(...)`
- Vollständige Migration zu Redux abgeschlossen für `poiReadFromDbTriggerSlice`
- `mapLayersVisibility` in `AddPoiModalWindow.js` korrekt via `useSelector(...)` aus Redux gelesen

### Removed

- Recoil vollständig aus Projekt entfernt

---

## [1.1.91] – 2025-05-19

### Changed

- Recoil-Atoms `selectedPoiState` und `currentPoiState` vollständig durch Redux ersetzt
- Neue Redux-Slices:
  - `selectedPoiSlice` – verwaltet aktuell ausgewählten POI
  - `currentPoiSlice` – verwaltet POI zur Anzeige im Bearbeitungsdialog
- `PoiUpdateModal.js` umgestellt auf `useSelector(...)` für beide Zustände
- `store.js` um `selectedPoiReducer` und `currentPoiReducer` erweitert

### Removed

- `useRecoilValue(currentPoiState)` und `useRecoilValue(selectedPoiState)` aus `PoiUpdateModal.js`

---

## [1.1.90] – 2025-05-19

### Changed

- Redux-Slice `urlParameterSlice`: Standardwerte für `mapId` und `userId` entfernt
  - `mapId` und `userId` starten jetzt mit `null` statt `"10"` / `"484"`

---

## [1.1.89] – 2025-05-19

### Changed

- Recoil-Atoms `mapIdState` und `userIdState` entfernt
- Stattdessen: Umstellung auf Redux-Slice `urlParameterSlice`
- `MapComponent.js` verwendet jetzt:
  - `useSelector(...)` für `mapId` und `userId`
  - `dispatch(setMapId(...))`, `dispatch(setUserId(...))` in `useEffect`
- Redux-Store erweitert um `urlParameterReducer`

### Removed

- Recoil-Import `useRecoilState(mapIdState / userIdState)` entfernt aus `MapComponent.js`

---

## [1.1.88] – 2025-05-19

### Changed

- Recoil-Atom `zoomTriggerState` vollständig durch Redux `zoomTriggerSlice` ersetzt
- Betroffene Komponenten:
  - `MapComponent.js` – liest `zoomTrigger` aus Redux `useSelector(...)`
  - `DataSheet.js` – verwendet `dispatch(incrementZoomTrigger())` bei Icon-Klick
- Redux-Store erweitert um `zoomTriggerReducer`

### Removed

- Entfernt: `useRecoilState(zoomTriggerState)` in `DataSheet.js`
- Entfernt: `useRecoilValue(zoomTriggerState)` in `MapComponent.js`

---

## [1.1.86] – 2025-05-17

### Changed

- Recoil-State `selectedAreaState` vollständig entfernt
- Umstellung auf Redux:
  - `selectedAreaSlice.js` → zentrale Steuerung des Bereichs (Area)
  - `DataSheet.js` – setzt `setSelectedArea(...)` über Redux
  - `MapComponent.js` – liest `selectedArea` aus Redux und zentriert Karte

---

## [1.1.85] – 2025-05-17

### Changed

- Recoil-Atom `readPoiMarkersStore` vollständig durch Redux-Slice ersetzt
- Betroffene Komponenten:
  - `index.js` – verwendet `useSelector` und `dispatch(setPoiMarkers(...))` statt `useRecoilState`
  - `AddPOIModal.js` – entfernt Recoil, nutzt jetzt Redux `setPoiMarkers(...)` (optional)
- Redux-Store aktualisiert:
  - Slice `readPoiMarkersStoreSlice` eingebunden

### Added

- Redux-Slice `readPoiMarkersStoreSlice.js` mit Actions:
  - `setPoiMarkers(data)`
  - `clearPoiMarkers()`

---

## [1.1.84] – 2025-05-17

### Changed

- Recoil-Atom `polylineEventsDisabledState` entfernt
- Migration zu Redux-Slice `polylineEventsDisabledSlice` abgeschlossen
- Betroffene Komponenten und Funktionen:
  - `MapComponent.js` – `useSelector(state => state.polylineEventsDisabled.disabled)` verwendet
  - `initializeMap.js` – Callback-Funktion `(value) => dispatch(setDisabled(value))` übergeben
  - `useCreateAndSetDevices.js` – Verwendung von `useRecoilState` entfernt (ToDo: an Redux anpassen)

### Added

- Neue Redux Actions:
  - `setDisabled`, `toggleDisabled` in `polylineEventsDisabledSlice.js`

### ToDo

- `useCreateAndSetDevices.js` nutzt noch `useRecoilState`, muss ggf. refaktoriert werden

---

## [1.1.83] – 2025-05-17

### Changed

- `poiReadFromDbTriggerAtom` durch Redux `poiReadFromDbTriggerSlice` ersetzt
- Alle Komponenten migriert:
  - `index.js` – nutzt jetzt `useSelector` für Trigger
  - `AddPoiModalWindow.js` – verwendet `dispatch(incrementTrigger())`
  - `AddPOIModal.js` – entfernt Recoil, setzt Trigger mit Redux
  - `MapComponent.js` – liest Trigger-Zustand via Redux statt Recoil

### Removed

- Entfernt: alle `useSetRecoilState(...)` und `useRecoilValue(...)` für `poiReadFromDbTriggerAtom`

### Added

- Neue Redux Actions:
  - `incrementTrigger`, `resetTrigger` in `poiReadFromDbTriggerSlice.js`

---

## [1.1.82] – 2025-05-17

### Changed

- Recoil-Zustand `poiLayerVisibleState` vollständig durch Redux `poiLayerVisibleSlice` ersetzt
- Betroffene Komponenten:
  - `useMapComponentState.js` – Zugriff via `useSelector` statt `useRecoilValue`
  - `MapComponent.js` – Zugriff auf `poiLayerVisible` über Redux
  - `DataSheet.js` – `useRecoilState` entfernt, `dispatch(setVisible(...))` integriert
- Redux-Store (`store.js`) erweitert um `poiLayerVisibleReducer`

### Removed

- Recoil-Atom `poiLayerVisibleState` entfernt

### Added

- Neue Redux Actions: `setVisible`, `toggleVisible` in `poiLayerVisibleSlice.js`

---

## [1.1.78] – 2025-05-17

### Changed

- `fetchGisStatusStations.js`:
  - feste URL-Variable `NEXT_PUBLIC_SERVER_URL` entfernt
  - stattdessen dynamische URL-Berechnung per `NEXT_PUBLIC_API_PORT_MODE`
  - Zugriff auf Webservice `GisStationsStatusDistrict` funktioniert jetzt ohne `.env.local`

### Added

- Dokumentation ergänzt:
  - `docs/frontend/services/api/fetchGisStatusStations.md`

---

## [1.1.77] – 2025-05-17

### Changed

- `pages/api/[...path].js`:
  - feste Umgebungsvariable `NEXT_PUBLIC_SERVER_URL` entfernt
  - dynamische Proxy-Zieladresse per `NEXT_PUBLIC_API_PORT_MODE` definiert (dev vs. prod)
  - Konfiguration via `http-proxy-middleware` vereinfacht

### Added

- Dokumentation erstellt:
  - `docs/server/pages/api/apiProxy.md`

---

## [1.1.76] – 2025-05-17

### Changed

- `config.js` angepasst:
  - Entfernt: `NEXT_PUBLIC_SERVER_URL` aus `.env.local`
  - Dynamische Berechnung von `serverURL` anhand `window.location` + `NEXT_PUBLIC_API_PORT_MODE`
  - Zugriff auf Webservices funktioniert jetzt automatisch abhängig von
    Entwicklungs-/Produktionsumgebung

### Added

- Dokumentation ergänzt:
  - `docs/frontend/config/config.md`

---

## [1.1.75] – 2025-05-17

### Changed

- `setupPolylines.js` und `createAndSetDevices.js` überarbeitet:
  - Entfernt: `NEXT_PUBLIC_BASE_URL` aus `.env.local`
  - Dynamische Linkerstellung basierend auf `window.location` + `NEXT_PUBLIC_API_PORT_MODE`
  - Kontextsensitive Menüeinträge öffnen jetzt `/talas5/cpl.aspx?...` unabhängig von der Umgebung

### Added

- Dokumentation hinzugefügt:
  - `docs/frontend/utils/polylines/setupPolylines.md`
  - `docs/frontend/utils/devices/createAndSetDevices.md`

---

## [1.1.74] – 2025-05-17

### Added

- Übersichtsdokumentation für Webservices erstellt:
  - `docs/frontend/redux/api/fromWebService/README.md`
  - beschreibt Zweck, Parameterstruktur, und alle dokumentierten API-Dateien

---

## [1.1.73] – 2025-05-17

### Changed

- `fetchGisStationsStatusDistrict.js` vereinheitlicht:
  - zentrale API-Port-Logik über `.env.local` (`NEXT_PUBLIC_API_PORT_MODE`)
  - URL-Parameter `idMap` und `idUser` werden dynamisch aus `?m=...&u=...` extrahiert
  - Webservice-Aufruf wird korrekt über `GisStationsStatusDistrict` aufgebaut

### Added

- Dokumentation ergänzt:
  - `docs/frontend/redux/api/fromWebService/fetchGisStationsStatusDistrict.md`

---

## [1.1.72] – 2025-05-17

### Changed

- `fetchGisStationsStaticDistrict.js` aktualisiert:
  - zentrale Steuerung der API-Port-Logik über `.env.local` (`NEXT_PUBLIC_API_PORT_MODE`)
  - Übergabe von `idMap` und `idUser` über URL-Parameter `?m=...&u=...`
  - Webservice-Endpunkt dynamisch zusammengesetzt

### Added

- Dokumentation erstellt:
  - `docs/frontend/redux/api/fromWebService/fetchGisStationsStaticDistrict.md`

---

## [1.1.71] – 2025-05-17

### Changed

- `fetchGisStationsStatic.js` aktualisiert:
  - zentrale Steuerung der API-Port-Logik über `.env.local` → `NEXT_PUBLIC_API_PORT_MODE`
  - Map-ID (`idMap`) wird direkt aus der URL gelesen (`?m=...`)
  - Fehlerbehandlung und Content-Type-Prüfung eingebaut

### Added

- Dokumentation hinzugefügt:
  - `docs/frontend/redux/api/fromWebService/fetchGisStationsStatic.md`

---

## [1.1.70] – 2025-05-17

### Changed

- `fetchGisSystemStatic.js` umgestellt auf zentrale Port-Logik über `NEXT_PUBLIC_API_PORT_MODE`
- `fetchGisStationsMeasurements.js` ebenfalls angepasst mit gleicher URL-/Port-Strategie
- Beide Funktionen lesen `idMap` und `idUser` nun direkt aus der URL (`?m=...&u=...`)

### Added

- Neue Dokumentation:
  - `docs/frontend/redux/api/fromWebService/fetchGisSystemStatic.md`
  - `docs/frontend/redux/api/fromWebService/fetchGisStationsMeasurements.md`
- Struktur-/Pfadhinweis jeweils am Ende der Markdown-Dateien ergänzt

---

## [1.1.68] – 2025-05-15

### Changed

- Verweis auf `NEXT_PUBLIC_API_PORT_3000` entfernt
- API-URL wird nun dynamisch per `window.location.hostname:3000` gesetzt
- `.env.local` bereinigt: keine API-URL mehr nötig
- Betroffene Dateien:
  - `useFetchPoiData.js`
  - `poiTypesSlice.js`

---

## [1.1.65] – 2025-05-15

### Changed

- `idMap` und `idUser` werden nicht mehr aus `.env.local` gelesen, sondern ausschließlich über die
  URL übergeben (z. B. von TALAS.web).
- Entfernt: Fallback-Variablen `NEXT_PUBLIC_DEFAULT_ID_MAP` und `NEXT_PUBLIC_DEFAULT_ID_USER`.
- Dokumentation in `docs/redux/api/fromWebService.md` entsprechend angepasst.

---

## [1.1.64] – 2025-05-15

### Added

- Erste Dokumentation der Webservice-Endpunkte in `docs/api/webservices.md`.
- Projektstruktur in `docs/` vorbereitet für spätere Erweiterung.
