# 📄 CHANGELOG

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

---

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