Files
nodeMap/CHANGELOG.md
ISA bbca980b5b refactor(hooks): useMapComponentState vollständig auf Redux umgestellt
- fetch-Aufrufe entfernt und durch Redux-Selektoren ersetzt
- poiTypData über poiTypSlice + fetchPoiTypThunk geladen
- locationDeviceData über gisStationsStaticDistrictThunk
- priorityConfig über Redux mit fetchPriorityConfigThunk integriert
- poiLayerVisible direkt aus Redux-State gelesen
- Version auf 1.1.173 erhöht
2025-05-26 11:42:11 +02:00

34 KiB
Raw Blame History

📄 CHANGELOG

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


[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: ServiceThunkSlice
  • 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.localNEXT_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.