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