feat: Migration von zoomTriggerSlice von Recoil zu Redux Toolkit

- Ersetzung des Recoil Atoms 'zoomTriggerState' durch Redux Toolkit Slice.
- Hinzugefügt: Aktionen für incrementZoomTrigger, decrementZoomTrigger, resetZoomTrigger und setZoomTrigger.
- Implementierung von Redux-Selektoren zum Zugriff auf den zoomTrigger-Zustand.
- Aktualisierung der Komponenten (MapComponent.js, DataSheet.js) auf Redux-Hooks (useSelector, useDispatch).
- Registrierung des zoomTriggerReducers im rootReducer und store.js.
- Überprüfung der Zoom In/Out-Funktionalität sowie Integration von Event-Handling für Mausrad und Kontextmenü.
This commit is contained in:
ISA
2024-12-23 10:51:24 +01:00
parent 1678cd162f
commit 99c430777c
4 changed files with 32 additions and 11 deletions

View File

@@ -4,14 +4,16 @@ import { gisStationsStaticDistrictState } from "../redux/slices/gisStationsStati
import { gisSystemStaticState } from "../redux/slices/gisSystemStaticSlice"; import { gisSystemStaticState } from "../redux/slices/gisSystemStaticSlice";
import { mapLayersState } from "../redux/slices/mapLayersSlice"; import { mapLayersState } from "../redux/slices/mapLayersSlice";
import { selectedAreaState } from "../redux/slices/selectedAreaSlice"; import { selectedAreaState } from "../redux/slices/selectedAreaSlice";
import { zoomTriggerState } from "../redux/slices/zoomTriggerSlice.js"; //import { zoomTriggerState } from "../redux/slices/zoomTriggerSlice.js";
import { poiLayerVisibleState } from "../redux/slices/poiLayerVisibleSlice"; import { poiLayerVisibleState } from "../redux/slices/poiLayerVisibleSlice";
import EditModeToggle from "./EditModeToggle"; import EditModeToggle from "./EditModeToggle";
import { polylineLayerVisibleState } from "../redux/slices/polylineLayerVisibleSlice"; // Import für Polyline-Visibility import { polylineLayerVisibleState } from "../redux/slices/polylineLayerVisibleSlice"; // Import für Polyline-Visibility
import { useSelector } from "react-redux"; import { useSelector, useDispatch } from "react-redux";
import { selectGisStationsStaticDistrict } from "../redux/slices/gisStationsStaticDistrictSlice"; import { selectGisStationsStaticDistrict } from "../redux/slices/gisStationsStaticDistrictSlice";
import { incrementZoomTrigger, selectZoomTrigger } from "../redux/slices/zoomTriggerSlice";
function DataSheet() { function DataSheet() {
const dispatch = useDispatch();
const [editMode, setEditMode] = useState(false); // Zustand für editMode const [editMode, setEditMode] = useState(false); // Zustand für editMode
const [poiVisible, setPoiVisible] = useRecoilState(poiLayerVisibleState); const [poiVisible, setPoiVisible] = useRecoilState(poiLayerVisibleState);
const setSelectedArea = useSetRecoilState(selectedAreaState); const setSelectedArea = useSetRecoilState(selectedAreaState);
@@ -21,7 +23,7 @@ function DataSheet() {
//const GisStationsStaticDistrict = useRecoilValue(gisStationsStaticDistrictState); //const GisStationsStaticDistrict = useRecoilValue(gisStationsStaticDistrictState);
const GisStationsStaticDistrict = useSelector(selectGisStationsStaticDistrict); const GisStationsStaticDistrict = useSelector(selectGisStationsStaticDistrict);
const GisSystemStatic = useRecoilValue(gisSystemStaticState); const GisSystemStatic = useRecoilValue(gisSystemStaticState);
const setZoomTrigger = useSetRecoilState(zoomTriggerState); const setZoomTrigger = useSelector(selectZoomTrigger);
const [polylineVisible, setPolylineVisible] = useRecoilState(polylineLayerVisibleState); // Zustand für Polylines const [polylineVisible, setPolylineVisible] = useRecoilState(polylineLayerVisibleState); // Zustand für Polylines
const [bereicheVisible, setBereicheVisible] = useState(false); // NEU: Bereiche-Status const [bereicheVisible, setBereicheVisible] = useState(false); // NEU: Bereiche-Status
const [standordVisible, setStandorteVisible] = useState(false); // NEU: Standorte-Status const [standordVisible, setStandorteVisible] = useState(false); // NEU: Standorte-Status

View File

@@ -61,7 +61,8 @@ import { gisStationsStaticDistrictState } from "../redux/slices/gisStationsStati
import { gisSystemStaticState } from "../redux/slices/gisSystemStaticSlice"; import { gisSystemStaticState } from "../redux/slices/gisSystemStaticSlice";
import { mapLayersState } from "../redux/slices/mapLayersSlice"; import { mapLayersState } from "../redux/slices/mapLayersSlice";
import { selectedAreaState } from "../redux/slices/selectedAreaSlice"; import { selectedAreaState } from "../redux/slices/selectedAreaSlice";
import { zoomTriggerState } from "../redux/slices/zoomTriggerSlice.js"; //import { zoomTriggerState } from "../redux/slices/zoomTriggerSlice.js";
import { incrementZoomTrigger, selectZoomTrigger } from "../redux/slices/zoomTriggerSlice.js";
import { polylineEventsDisabledState } from "../redux/slices/polylineEventsDisabledSlice"; import { polylineEventsDisabledState } from "../redux/slices/polylineEventsDisabledSlice";
import { polylineLayerVisibleState } from "../redux/slices/polylineLayerVisibleSlice"; import { polylineLayerVisibleState } from "../redux/slices/polylineLayerVisibleSlice";
//-------------------------------------------- //--------------------------------------------
@@ -92,7 +93,7 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
const [currentPoiData, setCurrentPoiData] = useState(null); const [currentPoiData, setCurrentPoiData] = useState(null);
const [showVersionInfoModal, setShowVersionInfoModal] = useState(false); const [showVersionInfoModal, setShowVersionInfoModal] = useState(false);
const zoomTrigger = useRecoilValue(zoomTriggerState); const zoomTrigger = useSelector(selectZoomTrigger);
const [gisSystemStaticLoaded, setGisSystemStaticLoaded] = useState(false); const [gisSystemStaticLoaded, setGisSystemStaticLoaded] = useState(false);
const [poiTypMap, setPoiTypMap] = useState(new Map()); const [poiTypMap, setPoiTypMap] = useState(new Map());
const [showPopup, setShowPopup] = useState(false); const [showPopup, setShowPopup] = useState(false);
@@ -203,7 +204,7 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
oms, oms,
mapLayersVisibility.GMA // Übergebe die Sichtbarkeitsbedingung als Parameter mapLayersVisibility.GMA // Übergebe die Sichtbarkeitsbedingung als Parameter
); );
//--------------------------------------------------------------- //---------------------------------------------------------------
/* useSmsfunkmodemMarkersLayer( /* useSmsfunkmodemMarkersLayer(
map, map,
oms, oms,
@@ -211,7 +212,7 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
priorityConfig, priorityConfig,
mapLayersVisibility.SMSFunkmodem // Sichtbarkeitsstatus aus dem State mapLayersVisibility.SMSFunkmodem // Sichtbarkeitsstatus aus dem State
); */ ); */
//--------------------------------------------------------------- //---------------------------------------------------------------
useFetchWebServiceMap( useFetchWebServiceMap(
dispatch, dispatch,
mapGisStationsStaticDistrictUrl, mapGisStationsStaticDistrictUrl,

View File

@@ -2,10 +2,12 @@
import { combineReducers } from "redux"; import { combineReducers } from "redux";
import currentPoiReducer from "./slices/currentPoiSlice"; import currentPoiReducer from "./slices/currentPoiSlice";
import gisStationsStaticDistrictReducer from "./slices/gisStationsStaticDistrictSlice"; import gisStationsStaticDistrictReducer from "./slices/gisStationsStaticDistrictSlice";
import zoomTriggerReducer from "./slices/zoomTriggerSlice";
const rootReducer = combineReducers({ const rootReducer = combineReducers({
currentPoi: currentPoiReducer, currentPoi: currentPoiReducer,
gisStationsStaticDistrict: gisStationsStaticDistrictReducer, gisStationsStaticDistrict: gisStationsStaticDistrictReducer,
zoomTrigger: zoomTriggerReducer,
}); });
export default rootReducer; export default rootReducer;

View File

@@ -1,7 +1,23 @@
// redux/slices/zoomTriggerSlice.js // redux/slices/zoomTriggerSlice.js
import { atom } from "recoil"; import { createSlice } from "@reduxjs/toolkit";
export const zoomTriggerState = atom({ const initialState = {
key: "zoomTriggerState", zoomTrigger: 0,
default: 0, // Dies kann eine einfache Zählvariable sein, die inkrementiert wird. };
const zoomTriggerSlice = createSlice({
name: "zoomTrigger",
initialState,
reducers: {
incrementZoomTrigger(state) {
state.zoomTrigger += 1; // Zustand erhöhen
},
resetZoomTrigger(state) {
state.zoomTrigger = 0; // Zustand zurücksetzen
},
},
}); });
export const { incrementZoomTrigger, resetZoomTrigger } = zoomTriggerSlice.actions;
export const selectZoomTrigger = (state) => state.zoomTrigger.zoomTrigger;
export default zoomTriggerSlice.reducer;