feat: GisStationsStaticDistrict in Redux-Store integriert
- WebService-Endpoint für GisStationsStaticDistrict angebunden - Daten beim Start der Anwendung automatisch geladen und in Redux gespeichert - UI (DataSheet) verwendet die Daten direkt aus dem Redux-Store - Fehlerhandling und Initialzustand in Redux-Slice verbessert - Alte lokale Fetch-Logik entfernt, zentrale Datenhaltung über Redux
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
// components/MapComponent.js
|
||||
// components/mainComponent/MapComponent.js
|
||||
import React, { useEffect, useRef, useState, useCallback } from "react";
|
||||
import L from "leaflet";
|
||||
import "leaflet/dist/leaflet.css";
|
||||
@@ -40,12 +40,11 @@ import { updateLocation } from "../../utils/updateBereichUtil.js";
|
||||
import { initGeocoderFeature } from "../features/GeocoderFeature.js";
|
||||
//--------------------------------------------
|
||||
//import { currentPoiState } from "../redux/slices/currentPoiSlice.js";
|
||||
import { selectGisStationsStaticDistrict, setGisStationsStaticDistrict } from "../../redux/slices/webService/gisStationsStaticDistrictSlice.js";
|
||||
|
||||
import { mapIdState, userIdState } from "../../redux/slices/urlParameterSlice.js";
|
||||
import { poiLayerVisibleState } from "../../redux/slices/poiLayerVisibleSlice.js";
|
||||
import { selectedPoiState } from "../../redux/slices/selectedPoiSlice.js";
|
||||
import { poiReadFromDbTriggerAtom } from "../../redux/slices/poiReadFromDbTriggerSlice.js";
|
||||
import { gisStationsStaticDistrictState } from "../../redux/slices/webService/gisStationsStaticDistrictSlice.js";
|
||||
import { gisSystemStaticState } from "../../redux/slices/webService/gisSystemStaticSlice.js";
|
||||
import { mapLayersState } from "../../redux/slices/mapLayersSlice.js";
|
||||
import { selectedAreaState } from "../../redux/slices/selectedAreaSlice.js";
|
||||
@@ -70,6 +69,8 @@ import { fetchGisSystemStatic } from "../../services/api/fetchGisSystemStatic.js
|
||||
import { usePolylineTooltipLayer } from "../../hooks/usePolylineTooltipLayer.js";
|
||||
import { selectPolylineVisible, setPolylineVisible } from "../../redux/slices/polylineLayerVisibleSlice.js";
|
||||
import { useInitLocationDevices } from "./hooks/useInitLocationDevices";
|
||||
import { useInitGisStationsStaticDistrict } from "./hooks/useInitGisStationsStaticDistrict";
|
||||
import { selectGisStationsStaticDistrict } from "../../redux/slices/webService/gisStationsStaticDistrictSlice";
|
||||
|
||||
const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
||||
const dispatch = useDispatch();
|
||||
@@ -999,7 +1000,12 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
||||
//----------------------------------------------
|
||||
// speichere location devices in redux store
|
||||
useInitLocationDevices();
|
||||
useInitGisStationsStaticDistrict();
|
||||
//--------------------------------------
|
||||
useEffect(() => {
|
||||
console.log("GisStationsStaticDistrict aus Redux:", GisStationsStaticDistrict);
|
||||
}, [GisStationsStaticDistrict]);
|
||||
//---------------------------------------
|
||||
|
||||
return (
|
||||
<>
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
// components/mainComponent/hooks/useAutoRefreshLocationDevices.js
|
||||
/*
|
||||
Das ist erstmal nur so da, falls es gebraucht wird
|
||||
Diese datei ist zum automatischen aktualisieren der LocationDevices gedacht
|
||||
jeder 20 Sekunden wird die Funktion fetchLocationDevicesFromDB() aufgerufen
|
||||
Daten werden dann in der Redux State gespeichert
|
||||
*/
|
||||
|
||||
import { useEffect } from "react";
|
||||
import { useDispatch } from "react-redux";
|
||||
import { fetchLocationDevicesFromDB } from "../../../redux/slices/db/locationDevicesFromDBSlice";
|
||||
|
||||
export const useAutoRefreshLocationDevices = (interval = 20000) => {
|
||||
// alle 20 Sekunden
|
||||
const dispatch = useDispatch();
|
||||
|
||||
useEffect(() => {
|
||||
const fetchData = () => {
|
||||
dispatch(fetchLocationDevicesFromDB());
|
||||
};
|
||||
|
||||
fetchData(); // Sofort beim Start holen
|
||||
|
||||
const intervalId = setInterval(fetchData, interval);
|
||||
|
||||
return () => clearInterval(intervalId); // Cleanup beim Unmount
|
||||
}, [dispatch, interval]);
|
||||
};
|
||||
|
||||
/*
|
||||
In MapComponent.js einbinden
|
||||
import { useAutoRefreshLocationDevices } from "./hooks/useAutoRefreshLocationDevices";
|
||||
|
||||
const MapComponent = () => {
|
||||
useAutoRefreshLocationDevices();
|
||||
|
||||
|
||||
*/
|
||||
@@ -0,0 +1,12 @@
|
||||
// /components/mainComponent/hooks/useInitGisStationsStaticDistrict.js
|
||||
import { useEffect } from "react";
|
||||
import { useDispatch } from "react-redux";
|
||||
import { fetchGisStationsStaticDistrictFromWebService } from "../../../redux/slices/webService/gisStationsStaticDistrictSlice";
|
||||
|
||||
export const useInitGisStationsStaticDistrict = () => {
|
||||
const dispatch = useDispatch();
|
||||
|
||||
useEffect(() => {
|
||||
dispatch(fetchGisStationsStaticDistrictFromWebService());
|
||||
}, [dispatch]);
|
||||
};
|
||||
@@ -1,3 +1,4 @@
|
||||
// /components/mainComponent/hooks/useInitLocationDevices.js
|
||||
import { useEffect } from "react";
|
||||
import { useDispatch } from "react-redux";
|
||||
import { fetchLocationDevicesFromDB } from "../../../redux/slices/db/locationDevicesFromDBSlice";
|
||||
|
||||
Reference in New Issue
Block a user