refactor: GIS-Redux-Slices reduziert auf 4 (statt 5) – veraltete Slices und Thunks entfernt, Code bereinigt
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
import React, { useState, useEffect, use } from "react";
|
||||
import ReactDOM from "react-dom";
|
||||
import { setPoiMarkers } from "../redux/slices/readPoiMarkersStoreSlice";
|
||||
import { selectGisStationsStatic } from "../redux/slices/webService/gisStationsStaticSlice";
|
||||
import { selectGisStationsStaticDistrict } from "../redux/slices/webService/gisStationsStaticDistrictSlice";
|
||||
import { useDispatch, useSelector } from "react-redux";
|
||||
import { fetchPoiTypes } from "../redux/slices/db/poiTypesSlice";
|
||||
import { incrementTrigger } from "../redux/slices/poiReadFromDbTriggerSlice";
|
||||
@@ -51,7 +51,7 @@ const ShowAddStationPopup = ({ onClose, map, latlng }) => {
|
||||
}, [poiTypeId]);
|
||||
|
||||
//------------------------------------------------------------------------------------------
|
||||
const gisStationsStatic = useSelector(selectGisStationsStatic);
|
||||
const gisStationsStatic = useSelector(selectGisStationsStaticDistrict);
|
||||
const locationDeviceData = gisStationsStatic?.Points ?? [];
|
||||
|
||||
console.log("gisStationsStatic aus AddPOIModal:", gisStationsStatic);
|
||||
|
||||
@@ -5,9 +5,6 @@ import EditModeToggle from "./EditModeToggle";
|
||||
import { useSelector, useDispatch } from "react-redux";
|
||||
import { selectPolylineVisible, setPolylineVisible } from "../redux/slices/polylineLayerVisibleSlice";
|
||||
import { selectGisSystemStatic } from "../redux/slices/webService/gisSystemStaticSlice";
|
||||
import { fetchGisStationsStatic } from "../redux/slices/webService/gisStationsStaticSlice";
|
||||
|
||||
import { selectGisStationsStatic } from "../redux/slices/webService/gisStationsStaticSlice";
|
||||
import { selectGisStationsStaticDistrict } from "../redux/slices/webService/gisStationsStaticDistrictSlice";
|
||||
import { selectMapLayersState, setLayerVisibility } from "../redux/slices/mapLayersSlice";
|
||||
import { setVisible } from "../redux/slices/poiLayerVisibleSlice";
|
||||
@@ -23,7 +20,6 @@ function DataSheet() {
|
||||
const [systemListing, setSystemListing] = useState([]);
|
||||
const GisStationsStaticDistrict = useSelector(selectGisStationsStaticDistrict) || [];
|
||||
const GisSystemStatic = useSelector(selectGisSystemStatic) || [];
|
||||
const GisStationsStatic = useSelector(selectGisStationsStatic) || []; //Area-Name/Bereiche dropdownmenu
|
||||
|
||||
const polylineVisible = useSelector(selectPolylineVisible);
|
||||
|
||||
@@ -38,9 +34,6 @@ function DataSheet() {
|
||||
}
|
||||
};
|
||||
|
||||
const [bereicheVisible, setBereicheVisible] = useState(false); // NEU: Bereiche-Status
|
||||
const [standordVisible, setStandorteVisible] = useState(false); // NEU: Standorte-Status
|
||||
|
||||
useEffect(() => {
|
||||
// LocalStorage Werte laden
|
||||
const storedPoiVisible = localStorage.getItem("poiVisible");
|
||||
@@ -111,7 +104,7 @@ function DataSheet() {
|
||||
key: system.Name.replace(/[\s\-]+/g, ""), // Internen Schlüssel für die MapLayersVisibility-Logik
|
||||
}))
|
||||
);
|
||||
}, [GisStationsStaticDistrict, GisSystemStatic]);
|
||||
}, [GisStationsStaticDistrict]);
|
||||
|
||||
const handleCheckboxChange = (key, event) => {
|
||||
if (editMode) return;
|
||||
@@ -137,52 +130,27 @@ function DataSheet() {
|
||||
dispatch(incrementZoomTrigger());
|
||||
};
|
||||
|
||||
//---------------------------
|
||||
const handleBereicheCheckboxChange = (event) => {
|
||||
if (editMode) return;
|
||||
const { checked } = event.target;
|
||||
setBereicheVisible(checked);
|
||||
localStorage.setItem("bereicheVisible", checked);
|
||||
};
|
||||
const handleStandorteCheckboxChange = (event) => {
|
||||
if (editMode) return;
|
||||
const { checked } = event.target;
|
||||
setStandorteVisible(checked);
|
||||
localStorage.setItem("standorteVisible", checked);
|
||||
};
|
||||
//------------------------------
|
||||
useEffect(() => {
|
||||
// console.log("GisSystemStatic aus Redux:", GisSystemStatic); // ✅ Debugging: Ist es ein Array?
|
||||
}, [GisSystemStatic]);
|
||||
//-----------------------------
|
||||
console.log("🔍 GisStationsStaticDistrict Inhalt:", GisStationsStaticDistrict);
|
||||
|
||||
useEffect(() => {
|
||||
if (!GisStationsStatic || GisStationsStatic === null) {
|
||||
dispatch(fetchGisStationsStatic());
|
||||
}
|
||||
}, [GisStationsStatic, dispatch]);
|
||||
|
||||
//---------------------------
|
||||
useEffect(() => {
|
||||
console.log("🔍 GisStationsStatic Inhalt:", GisStationsStatic);
|
||||
|
||||
if (!GisStationsStatic) {
|
||||
console.warn("⚠️ GisStationsStatic ist `null` oder nicht geladen.");
|
||||
if (!GisStationsStaticDistrict) {
|
||||
console.warn("⚠️ GisStationsStaticDistrict ist `null` oder nicht geladen.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (typeof GisStationsStatic !== "object") {
|
||||
console.warn("⚠️ GisStationsStatic ist kein Objekt:", GisStationsStatic);
|
||||
if (typeof GisStationsStaticDistrict !== "object") {
|
||||
console.warn("⚠️ GisStationsStaticDistrict ist kein Objekt:", GisStationsStaticDistrict);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!GisStationsStatic.Points || !Array.isArray(GisStationsStatic.Points)) {
|
||||
console.warn("⚠️ GisStationsStatic.Points ist nicht vorhanden oder kein Array.", GisStationsStatic);
|
||||
if (!GisStationsStaticDistrict.Points || !Array.isArray(GisStationsStaticDistrict.Points)) {
|
||||
console.warn("⚠️ GisStationsStaticDistrict.Points ist nicht vorhanden oder kein Array.", GisStationsStaticDistrict);
|
||||
return;
|
||||
}
|
||||
|
||||
const seenNames = new Set();
|
||||
const filteredAreas = GisStationsStatic.Points.filter((item) => {
|
||||
const filteredAreas = GisStationsStaticDistrict.Points.filter((item) => {
|
||||
if (!item.Area_Name) return false; // Sicherstellen, dass Area_Name existiert
|
||||
const isUnique = !seenNames.has(item.Area_Name);
|
||||
if (isUnique) {
|
||||
@@ -199,7 +167,7 @@ function DataSheet() {
|
||||
);
|
||||
|
||||
console.log("📌 stationListing aktualisiert:", filteredAreas);
|
||||
}, [GisStationsStatic]);
|
||||
}, [GisStationsStaticDistrict]);
|
||||
|
||||
//---------------------------
|
||||
return (
|
||||
|
||||
@@ -39,14 +39,12 @@ import CoordinatePopup from "../CoordinatePopup.js";
|
||||
import { fetchPoiDataService } from "../../services/database/fetchPoiDataService.js";
|
||||
import { selectPolylineVisible, setPolylineVisible } from "../../redux/slices/polylineLayerVisibleSlice.js";
|
||||
import { fetchLocationDevicesFromDB } from "../../redux/slices/db/locationDevicesFromDBSlice";
|
||||
import { fetchGisStationsStaticDistrictFromWebService } from "../../redux/slices/webService/gisStationsStaticDistrictSlice";
|
||||
|
||||
import { selectGisStationsStaticDistrict } from "../../redux/slices/webService/gisStationsStaticDistrictSlice";
|
||||
import { fetchGisStationsStatusDistrictFromWebService } from "../../redux/slices/webService/gisStationsStatusDistrictSlice";
|
||||
import { fetchGisStationsMeasurementsFromWebService } from "../../redux/slices/webService/gisStationsMeasurementsSlice";
|
||||
import { fetchGisSystemStaticFromWebService } from "../../redux/slices/webService/gisSystemStaticSlice";
|
||||
|
||||
import { selectGisSystemStatic, setGisSystemStatic } from "../../redux/slices/webService/gisSystemStaticSlice";
|
||||
import ShowAddStationPopup from "../AddPOIModal.js";
|
||||
import { fetchGisStationsStatic } from "../../redux/slices/webService/gisStationsStaticSlice";
|
||||
|
||||
import AddPOIOnPolyline from "../AddPOIOnPolyline";
|
||||
import { enablePolylineEvents, disablePolylineEvents } from "../../utils/polylines/eventHandlers";
|
||||
import { updateCountdown, closePolylineContextMenu } from "../../redux/slices/polylineContextMenuSlice";
|
||||
@@ -60,6 +58,11 @@ import { setDisabled } from "../../redux/slices/polylineEventsDisabledSlice";
|
||||
import { setMapId, setUserId } from "../../redux/slices/urlParameterSlice";
|
||||
import { fetchPoiTypes } from "../../redux/slices/db/poiTypesSlice";
|
||||
|
||||
import { fetchGisStationsMeasurementsThunk } from "../../redux/thunks/fetchGisStationsMeasurementsThunk";
|
||||
import { fetchGisSystemStaticThunk } from "../../redux/thunks/fetchGisSystemStaticThunk";
|
||||
import { fetchGisStationsStaticDistrictThunk } from "../../redux/thunks/fetchGisStationsStaticDistrictThunk";
|
||||
import { fetchGisStationsStatusDistrictThunk } from "../../redux/thunks/fetchGisStationsStatusDistrictThunk";
|
||||
|
||||
const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
||||
const dispatch = useDispatch();
|
||||
const countdown = useSelector((state) => state.polylineContextMenu.countdown);
|
||||
@@ -74,6 +77,11 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
||||
const [menuItemAdded, setMenuItemAdded] = useState(false);
|
||||
const [isPopupOpen, setIsPopupOpen] = useState(false);
|
||||
|
||||
const statusMeasurements = useSelector((state) => state.gisStationsMeasurements.status);
|
||||
const statusSystem = useSelector((state) => state.gisSystemStatic.status);
|
||||
const statusStaticDistrict = useSelector((state) => state.gisStationsStaticDistrict.status);
|
||||
const statusStatusDistrict = useSelector((state) => state.gisStationsStatusDistrict.status);
|
||||
|
||||
const openPopupWithCoordinates = (e) => {
|
||||
const coordinates = `${e.latlng.lat.toFixed(5)}, ${e.latlng.lng.toFixed(5)}`;
|
||||
setCurrentCoordinates(coordinates);
|
||||
@@ -873,6 +881,7 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
||||
);
|
||||
}
|
||||
}, [map, menuItemAdded]);
|
||||
//--------------------------------------------
|
||||
|
||||
//--------------------------------------------
|
||||
// Beim ersten Client-Render den Wert aus localStorage laden
|
||||
@@ -880,6 +889,24 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
||||
const storedPolylineVisible = localStorage.getItem("polylineVisible") === "true";
|
||||
dispatch(setPolylineVisible(storedPolylineVisible));
|
||||
}, [dispatch]);
|
||||
//--------------------------------------------
|
||||
useEffect(() => {
|
||||
if (statusMeasurements === "idle") {
|
||||
dispatch(fetchGisStationsMeasurementsThunk());
|
||||
}
|
||||
}, [statusMeasurements, dispatch]);
|
||||
|
||||
useEffect(() => {
|
||||
if (statusSystem === "idle") {
|
||||
dispatch(fetchGisSystemStaticThunk());
|
||||
}
|
||||
}, [statusSystem, dispatch]);
|
||||
|
||||
useEffect(() => {
|
||||
if (statusStatusDistrict === "idle") {
|
||||
dispatch(fetchGisStationsStatusDistrictThunk());
|
||||
}
|
||||
}, [statusStatusDistrict, dispatch]);
|
||||
|
||||
//----------------------------------------------
|
||||
// speichere location devices in redux store
|
||||
@@ -889,26 +916,15 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
||||
}, [dispatch]);
|
||||
|
||||
useEffect(() => {
|
||||
dispatch(fetchGisStationsStaticDistrictFromWebService());
|
||||
dispatch(fetchGisStationsStaticDistrictThunk());
|
||||
}, [dispatch]);
|
||||
|
||||
useEffect(() => {
|
||||
dispatch(fetchGisStationsStatusDistrictFromWebService());
|
||||
dispatch(fetchGisStationsMeasurementsThunk());
|
||||
}, [dispatch]);
|
||||
useEffect(() => {
|
||||
dispatch(fetchGisStationsMeasurementsFromWebService());
|
||||
dispatch(fetchGisSystemStaticThunk());
|
||||
}, [dispatch]);
|
||||
useEffect(() => {
|
||||
dispatch(fetchGisSystemStaticFromWebService());
|
||||
}, [dispatch]);
|
||||
|
||||
const gisStationsStatic = useSelector((state) => state.gisStationsStatic.data);
|
||||
|
||||
useEffect(() => {
|
||||
if (!gisStationsStatic) {
|
||||
dispatch(fetchGisStationsStatic());
|
||||
}
|
||||
}, [gisStationsStatic, dispatch]);
|
||||
|
||||
//--------------------------------------
|
||||
useEffect(() => {
|
||||
|
||||
Reference in New Issue
Block a user