This commit is contained in:
ISA
2025-05-26 11:12:45 +02:00
parent c8d7fbe434
commit 03a1f480e0
20 changed files with 87 additions and 86 deletions

View File

@@ -39,12 +39,12 @@ import useInitializeMap from "./hooks/useInitializeMap";
//-------------------Redux--------------------
import { useSelector, useDispatch } from "react-redux";
//-------------------Redux-Slices--------------------
import { setSelectedPoi } from "../../redux/slices/selectedPoiSlice";
import { setDisabled } from "../../redux/slices/polylineEventsDisabledSlice";
import { setSelectedPoi } from "../../redux/slices/database/pois/selectedPoiSlice.js";
import { setDisabled } from "../../redux/slices/database/polylines/polylineEventsDisabledSlice.js";
import { setMapId, setUserId } from "../../redux/slices/urlParameterSlice";
import { fetchPoiTypes } from "../../redux/slices/database/pois/poiTypesSlice.js";
import { selectMapLayersState } from "../../redux/slices/mapLayersSlice";
import { setCurrentPoi } from "../../redux/slices/currentPoiSlice.js";
import { setCurrentPoi } from "../../redux/slices/database/pois/currentPoiSlice.js";
import { selectGisLines } from "../../redux/slices/database/polylines/gisLinesSlice";
import { selectGisLinesStatus } from "../../redux/slices/webservice/gisLinesStatusSlice";
import { selectPoiTypData, selectPoiTypStatus } from "../../redux/slices/database/pois/poiTypSlice";
@@ -52,8 +52,8 @@ import { selectPriorityConfig } from "../../redux/slices/database/priorityConfig
import { selectPoiIconsData, selectPoiIconsStatus } from "../../redux/slices/database/pois/poiIconsDataSlice";
import { selectGisLinesStatusFromWebservice } from "../../redux/slices/webservice/gisLinesStatusSlice";
import { selectGisUserRightsFromWebservice } from "../../redux/slices/webservice/userRightsSlice";
import { updateCountdown, closePolylineContextMenu } from "../../redux/slices/polylineContextMenuSlice";
import { selectPolylineVisible, setPolylineVisible } from "../../redux/slices/polylineLayerVisibleSlice.js";
import { updateCountdown, closePolylineContextMenu } from "../../redux/slices/database/polylines/polylineContextMenuSlice.js";
import { selectPolylineVisible, setPolylineVisible } from "../../redux/slices/database/polylines/polylineLayerVisibleSlice.js";
import { selectGisStationsStaticDistrict } from "../../redux/slices/webservice/gisStationsStaticDistrictSlice.js";
import { selectGisSystemStatic, setGisSystemStatic } from "../../redux/slices/webservice/gisSystemStaticSlice.js";
//-----------Redux-Thunks-------------------

View File

@@ -3,7 +3,7 @@ import React, { useState, useEffect } from "react";
import { useDispatch, useSelector } from "react-redux";
import { selectGisStationsStaticDistrict } from "../../redux/slices/webservice/gisStationsStaticDistrictSlice";
import { fetchPoiTypes } from "../../redux/slices/database/pois/poiTypesSlice";
import { incrementTrigger } from "../../redux/slices/poiReadFromDbTriggerSlice";
import { incrementTrigger } from "../../redux/slices/database/pois/poiReadFromDbTriggerSlice";
import { addPoiThunk } from "../../redux/thunks/database/pois/addPoiThunk";
import { fetchPoiIconsDataThunk } from "../../redux/thunks/database/pois/fetchPoiIconsDataThunk";

View File

@@ -3,11 +3,11 @@ import React, { useEffect, useState } from "react";
import { setSelectedArea } from "../../../redux/slices/selectedAreaSlice";
import EditModeToggle from "./EditModeToggle";
import { useSelector, useDispatch } from "react-redux";
import { selectPolylineVisible, setPolylineVisible } from "../../../redux/slices/polylineLayerVisibleSlice";
import { selectPolylineVisible, setPolylineVisible } from "../../../redux/slices/database/polylines/polylineLayerVisibleSlice";
import { selectGisSystemStatic } from "../../../redux/slices/webservice/gisSystemStaticSlice";
import { selectGisStationsStaticDistrict } from "../../../redux/slices/webservice/gisStationsStaticDistrictSlice";
import { selectMapLayersState, setLayerVisibility } from "../../../redux/slices/mapLayersSlice";
import { setVisible } from "../../../redux/slices/poiLayerVisibleSlice";
import { setVisible } from "../../../redux/slices/database/pois/poiLayerVisibleSlice";
import { incrementZoomTrigger } from "../../../redux/slices/zoomTriggerSlice";
function MapLayersControlPanel() {

View File

@@ -1,2 +1,2 @@
// /config/appVersion
export const APP_VERSION = "1.1.172";
export const APP_VERSION = "1.1.173";

View File

@@ -1,52 +1,48 @@
// /hooks/useMapComponentState.js
// POI -> Kontextmenü -> POI bearbeiten -> Dropdown Geräteauswahl
import { useState, useEffect } from "react";
import { useSelector } from "react-redux";
import { useEffect, useState } from "react";
import { useDispatch, useSelector } from "react-redux";
import { fetchPoiTypThunk } from "../redux/thunks/database/pois/fetchPoiTypThunk";
import { selectPoiTypData, selectPoiTypStatus } from "../redux/slices/database/pois/poiTypSlice";
import { selectPoiLayerVisible } from "../redux/slices/database/pois/poiLayerVisibleSlice";
export const useMapComponentState = () => {
const [poiTypData, setPoiTypData] = useState([]);
const [isPoiTypLoaded, setIsPoiTypLoaded] = useState(false);
const [deviceName, setDeviceName] = useState("");
const [locationDeviceData, setLocationDeviceData] = useState([]);
const [priorityConfig, setPriorityConfig] = useState([]);
const [menuItemAdded, setMenuItemAdded] = useState(false);
const dispatch = useDispatch();
// Redux: Zustand der Sichtbarkeit des POI-Layers
// Redux: POI-Typen
const poiTypData = useSelector(selectPoiTypData);
const poiTypStatus = useSelector(selectPoiTypStatus);
// Redux: Sichtbarkeit des POI-Layers
const poiLayerVisible = useSelector((state) => state.poiLayerVisible.visible);
// Lokaler State: Geräte und Kontextmenü
const [deviceName, setDeviceName] = useState("");
const [locationDeviceData, setLocationDeviceData] = useState([]);
const [priorityConfig, setPriorityConfig] = useState([]); // TODO: Redux
const [menuItemAdded, setMenuItemAdded] = useState(false);
// Optional: Nur im Mock-Modus POI-Typen lokal setzen
useEffect(() => {
const fetchPoiTypData = async () => {
if (process.env.NEXT_PUBLIC_USE_MOCK_API === "true") {
console.log("⚠️ Mock-API: POI Typen geladen (Mock)");
const mockData = [
{ idPoiTyp: 1, name: "Mock Zähleranschlusskasten", icon: 4, onlySystemTyp: 0 },
{ idPoiTyp: 2, name: "Mock Geräteschrank", icon: 2, onlySystemTyp: 0 },
{ idPoiTyp: 4, name: "Mock Parkplatz", icon: 3, onlySystemTyp: 0 },
{ idPoiTyp: 6, name: "Mock Zufahrt", icon: 4, onlySystemTyp: 0 },
{ idPoiTyp: 20, name: "Mock Zählgerät", icon: 5, onlySystemTyp: 110 },
{ idPoiTyp: 21, name: "Mock Messschleife", icon: 6, onlySystemTyp: 110 },
{ idPoiTyp: 25, name: "Mock Sonstige", icon: 0, onlySystemTyp: 0 },
{ idPoiTyp: 33, name: "Mock Autobahnauffahrt", icon: 4, onlySystemTyp: null },
];
setPoiTypData(mockData);
setIsPoiTypLoaded(true);
return;
}
try {
const response = await fetch("/api/talas_v5_DB/poiTyp/readPoiTyp");
const data = await response.json();
setPoiTypData(data);
setIsPoiTypLoaded(true);
} catch (error) {
console.error("❌ Fehler beim Abrufen der POI-Typen:", error);
setPoiTypData([]);
setIsPoiTypLoaded(true);
}
};
if (process.env.NEXT_PUBLIC_USE_MOCK_API === "true") {
const mockData = [
{ idPoiTyp: 1, name: "Mock Zähleranschlusskasten", icon: 4, onlySystemTyp: 0 },
{ idPoiTyp: 2, name: "Mock Geräteschrank", icon: 2, onlySystemTyp: 0 },
{ idPoiTyp: 4, name: "Mock Parkplatz", icon: 3, onlySystemTyp: 0 },
{ idPoiTyp: 6, name: "Mock Zufahrt", icon: 4, onlySystemTyp: 0 },
{ idPoiTyp: 20, name: "Mock Zählgerät", icon: 5, onlySystemTyp: 110 },
{ idPoiTyp: 21, name: "Mock Messschleife", icon: 6, onlySystemTyp: 110 },
{ idPoiTyp: 25, name: "Mock Sonstige", icon: 0, onlySystemTyp: 0 },
{ idPoiTyp: 33, name: "Mock Autobahnauffahrt", icon: 4, onlySystemTyp: null },
];
// Du kannst das Redux-Mock-Datenhandling später noch global regeln
console.warn("⚠️ POI-Typen im Mock-Modus geladen.");
} else if (poiTypStatus === "idle") {
dispatch(fetchPoiTypThunk());
}
}, [dispatch, poiTypStatus]);
// Geräte-Daten lokal laden (kann später durch fetchLocationDevicesThunk ersetzt werden)
useEffect(() => {
const fetchDeviceData = async () => {
try {
const protocol = window.location.protocol;
@@ -71,13 +67,12 @@ export const useMapComponentState = () => {
}
};
fetchPoiTypData();
fetchDeviceData();
}, []);
return {
poiTypData,
isPoiTypLoaded,
isPoiTypLoaded: poiTypStatus === "succeeded",
deviceName,
setDeviceName,
locationDeviceData,

View File

@@ -1,7 +1,7 @@
"use client";
import React, { useEffect, useState } from "react";
import dynamic from "next/dynamic";
import { setPoiMarkers } from "../redux/slices/readPoiMarkersStoreSlice.js";
import { setPoiMarkers } from "../redux/slices/database/pois/readPoiMarkersStoreSlice.js";
import { useSelector, useDispatch } from "react-redux";
const MapComponentWithNoSSR = dynamic(() => import("../components/mainComponent/MapComponent"), { ssr: false });

View File

@@ -1,3 +1,4 @@
// /redux/slices/database/locationDevicesFromDBSlice.js
import { createSlice } from "@reduxjs/toolkit";
import { fetchLocationDevicesThunk } from "../../thunks/database/fetchLocationDevicesThunk";

View File

@@ -1,3 +1,4 @@
// /redux/slices/database/pois/addPoiOnPolylineSlice.js
import { createSlice } from "@reduxjs/toolkit";
const initialState = {

View File

@@ -1,4 +1,4 @@
// /redux/slices/currentPoiSlice.js
// /redux/slices/database/pois/currentPoiSlice.js
import { createSlice } from "@reduxjs/toolkit";
const initialState = {

View File

@@ -1,4 +1,4 @@
// /redux/slices/poiLayerVisibleSlice.js
// /redux/slices/database/pois/poiLayerVisibleSlice.js
import { createSlice } from "@reduxjs/toolkit";
const initialState = {

View File

@@ -1,4 +1,4 @@
// redux/slices/poiReadFromDbTriggerSlice.js
// redux/slices/database/pois/poiReadFromDbTriggerSlice.js
import { createSlice } from "@reduxjs/toolkit";
const initialState = {

View File

@@ -1,4 +1,4 @@
// redux/slices/readPoiMarkersStoreSlice.js
// redux/slices/database/pois/readPoiMarkersStoreSlice.js
import { createSlice } from "@reduxjs/toolkit";
const initialState = {

View File

@@ -1,4 +1,4 @@
// redux/slices/selectedPoiSlice.js
// redux/slices/database/pois/selectedPoiSlice.js
import { createSlice } from "@reduxjs/toolkit";
export const selectedPoiSlice = createSlice({

View File

@@ -1,4 +1,4 @@
// redux/slices/polylineContextMenuSlice.js
// redux/slices/database/polylines/polylineContextMenuSlice.js
import { createSlice } from "@reduxjs/toolkit";
const initialState = {

View File

@@ -1,4 +1,4 @@
// redux/slices/polylineEventsDisabledSlice.js
// redux/slices/database/polylines/polylineEventsDisabledSlice.js
import { createSlice } from "@reduxjs/toolkit";
const initialState = {

View File

@@ -1,5 +1,4 @@
// /redux/slices/polylineLayerVisibleSlice.js
// redux/slices/polylineLayerVisibleSlice.js
// /redux/slices/database7polylines/polylineLayerVisibleSlice.js
import { createSlice } from "@reduxjs/toolkit";
const initialState = {

View File

@@ -1,28 +1,23 @@
// /redux/store.js
import { configureStore } from "@reduxjs/toolkit";
import lineVisibilityReducer from "./slices/lineVisibilitySlice";
import currentPoiReducer from "./slices/currentPoiSlice";
import polylineLayerVisibleReducer from "./slices/polylineLayerVisibleSlice";
import addPoiOnPolylineReducer from "./slices/addPoiOnPolylineSlice";
import polylineContextMenuReducer from "./slices/polylineContextMenuSlice";
import selectedPoiReducer from "./slices/selectedPoiSlice";
import selectedDeviceReducer from "./slices/selectedDeviceSlice";
import mapLayersReducer from "./slices/mapLayersSlice";
import poiLayerVisibleReducer from "./slices/poiLayerVisibleSlice";
import poiReadFromDbTriggerReducer from "./slices/poiReadFromDbTriggerSlice";
import polylineEventsDisabledReducer from "./slices/polylineEventsDisabledSlice";
import readPoiMarkersStoreReducer from "./slices/readPoiMarkersStoreSlice";
import selectedAreaReducer from "./slices/selectedAreaSlice";
import zoomTriggerReducer from "./slices/zoomTriggerSlice";
import urlParameterReducer from "./slices/urlParameterSlice";
//-----database------------
import priorityConfigReducer from "./slices/database/priorityConfigSlice";
//-----database---------------------------------------------------
//--pois------------
import poiTypesReducer from "./slices/database/pois/poiTypesSlice";
import locationDevicesFromDBReducer from "./slices/database/locationDevicesFromDBSlice";
import gisLinesFromDatabaseReducer from "./slices/database/polylines/gisLinesSlice";
import poiTypReducer from "./slices/database/pois/poiTypSlice";
import poiIconsDataReducer from "./slices/database/pois/poiIconsDataSlice";
//----webservice------------
import poiLayerVisibleReducer from "./slices/database/pois/poiLayerVisibleSlice";
import addPoiOnPolylineReducer from "./slices/database/pois/addPoiOnPolylineSlice";
import selectedPoiReducer from "./slices/database/pois/selectedPoiSlice";
import currentPoiReducer from "./slices/database/pois/currentPoiSlice";
import poiReadFromDbTriggerReducer from "./slices/database/pois/poiReadFromDbTriggerSlice";
import readPoiMarkersStoreReducer from "./slices/database/pois/readPoiMarkersStoreSlice";
//--polylines------------
import gisLinesFromDatabaseReducer from "./slices/database/polylines/gisLinesSlice";
import polylineLayerVisibleReducer from "./slices/database/polylines/polylineLayerVisibleSlice";
import polylineContextMenuReducer from "./slices/database/polylines/polylineContextMenuSlice";
import polylineEventsDisabledReducer from "./slices/database/polylines/polylineEventsDisabledSlice";
//----webservice---------------------------------------------------------------
import gisStationsStaticDistrictReducer from "./slices/webservice/gisStationsStaticDistrictSlice";
import gisStationsStatusDistrictReducer from "./slices/webservice/gisStationsStatusDistrictSlice";
import gisStationsMeasurementsReducer from "./slices/webservice/gisStationsMeasurementsSlice";
@@ -30,6 +25,16 @@ import gisSystemStaticReducer from "./slices/webservice/gisSystemStaticSlice";
import userRightsReducer from "./slices/webservice/userRightsSlice";
import gisLinesStatusFromWebserviceReducer from "./slices/webservice/gisLinesStatusSlice";
import addPoiReducer from "./slices/database/pois/addPoiSlice";
//-----------------
import mapLayersReducer from "./slices/mapLayersSlice";
import priorityConfigReducer from "./slices/database/priorityConfigSlice";
import locationDevicesFromDBReducer from "./slices/database/locationDevicesFromDBSlice";
import lineVisibilityReducer from "./slices/lineVisibilitySlice";
import selectedDeviceReducer from "./slices/selectedDeviceSlice";
import selectedAreaReducer from "./slices/selectedAreaSlice";
import zoomTriggerReducer from "./slices/zoomTriggerSlice";
import urlParameterReducer from "./slices/urlParameterSlice";
//----------------
export const store = configureStore({
reducer: {

View File

@@ -1,4 +1,4 @@
// /services/database/fetchPoiTypService.js
// /services/database/pois/fetchPoiTypService.js
export const fetchPoiTypService = async () => {
const res = await fetch(`${window.location.origin}/api/talas_v5_DB/poiTyp/readPoiTyp`);
if (!res.ok) throw new Error("Fehler beim Abrufen der POI-Typen");

View File

@@ -7,9 +7,9 @@ import endIcon from "../../components/gisPolylines/icons/EndIcon";
import { redrawPolyline } from "./redrawPolyline";
import { toast } from "react-toastify";
import { store } from "../../redux/store"; // Importiere den Store
import { openPolylineContextMenu, closePolylineContextMenu } from "../../redux/slices/polylineContextMenuSlice";
import { openPolylineContextMenu, closePolylineContextMenu } from "../../redux/slices/database/polylines/polylineContextMenuSlice";
import { monitorContextMenu } from "./monitorContextMenu";
import { forceCloseContextMenu } from "../../redux/slices/polylineContextMenuSlice";
import { forceCloseContextMenu } from "../../redux/slices/database/polylines/polylineContextMenuSlice";
//--------------------------------------------
export const setupPolylines = (map, linePositions, lineColors, tooltipContents, setNewCoords, tempMarker, currentZoom, currentCenter, polylineVisible) => {

View File

@@ -2,7 +2,7 @@
import { parsePoint } from "./geometryUtils";
import { handleEditPoi } from "./poiUtils";
import { updateLocationInDatabaseService } from "../services/database/updateLocationInDatabaseService";
import { setSelectedPoi, clearSelectedPoi } from "../redux/slices/selectedPoiSlice";
import { setSelectedPoi, clearSelectedPoi } from "../redux/slices/database/pois/selectedPoiSlice";
export const setupPOIs = async (
map,