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