Files
nodeMap/CHANGELOG.md
ISA a19bf96843 fix(ui): Dropdown in MapLayersControlPanel zeigt jetzt Stationen/Bereiche korrekt an
- Zugriff auf GisStationsStaticDistrict.Points korrigiert
- Verhindert leere Dropdown-Liste bei gültigen Daten
- Neue Markdown-Dokus für UI-Komponenten erstellt (MapLayersControlPanel, EditModeToggle, VersionInfoModal, CoordinateInput)
- Version auf 1.1.190 gesetzt
2025-05-27 14:12:01 +02:00

1488 lines
44 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📄 CHANGELOG
Alle bedeutenden Änderungen an diesem Projekt werden in dieser Datei dokumentiert.
---
[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.