diff --git a/components/MapComponent.js b/components/MapComponent.js
index f9d35753f..e705f9ff9 100644
--- a/components/MapComponent.js
+++ b/components/MapComponent.js
@@ -76,6 +76,7 @@ import { polylineEventsDisabledState } from "../store/atoms/polylineEventsDisabl
import { disablePolylineEvents, enablePolylineEvents } from "../utils/setupPolylines";
const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
+ const [editMode, setEditMode] = useState(false); // editMode Zustand
const { deviceName, setDeviceName } = useMapComponentState();
const { poiTypData, isPoiTypLoaded } = usePoiTypData("/api/talas_v5_DB/poiTyp/readPoiTyp");
//const [deviceName, setDeviceName] = useState("");
@@ -656,20 +657,23 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
}
}, [map]);
//--------------------------------------------
- // contextmenü Error "Contextmenu ist nicht vorhanden"
useEffect(() => {
- if (map) {
- // Überprüfe, ob die Karte und das Contextmenu existieren
- if (map.contextmenu) {
- console.log("Contextmenu ist vorhanden");
- // Hier kannst du deine Logik für das Contextmenu hinzufügen
- map.contextmenu.hide(); // Beispiel: Contextmenu verstecken
- } else {
- console.warn("Contextmenu ist nicht vorhanden");
+ const initializeContextMenu = () => {
+ if (map) {
+ map.whenReady(() => {
+ setTimeout(() => {
+ if (map.contextmenu) {
+ console.log("Contextmenu ist vorhanden");
+ } else {
+ console.warn("Contextmenu ist nicht verfügbar.");
+ }
+ }, 500);
+ });
}
- }
- }, [map]);
+ };
+ initializeContextMenu();
+ }, [map]);
return (
<>
diff --git a/hooks/useLineData.js b/hooks/useLineData.js
index 1856d1716..3798f3fbe 100644
--- a/hooks/useLineData.js
+++ b/hooks/useLineData.js
@@ -1,4 +1,3 @@
-// /hooks/useLineData.js
import { useEffect, useState } from "react";
import { SERVER_URL } from "../config/urls";
import { useDispatch, useSelector } from "react-redux";
@@ -10,11 +9,10 @@ const useLineData = (webserviceGisLinesStatusUrl, setLineStatusData) => {
const [tooltipContents, setTooltipContents] = useState({});
useEffect(() => {
- let isCancelled = false; // Flag to cancel ongoing operations if component unmounts
+ let isCancelled = false;
const fetchData = async () => {
try {
- console.log("Fetching data...");
const response1 = await fetch(webserviceGisLinesStatusUrl);
const data1 = await response1.json();
@@ -64,11 +62,6 @@ const useLineData = (webserviceGisLinesStatusUrl, setLineStatusData) => {
if (matchingLine) {
const values = valueMap[key];
- if (!values) {
- console.error(`Keine Werte gefunden für Key: ${key}`);
- return;
- }
-
const messageDisplay = values.messages.map((msg) => `${msg.message}
`).join("");
const prioNameDisplay = statis.PrioName && statis.PrioName !== "?" ? `(${statis.PrioName})` : "";
@@ -102,8 +95,6 @@ const useLineData = (webserviceGisLinesStatusUrl, setLineStatusData) => {
}
} catch (error) {
console.error("Fehler beim Abrufen der Daten:", error);
-
- // Füge einen try-catch Block für den Reload hinzu
try {
window.location.reload();
} catch (reloadError) {
@@ -130,67 +121,4 @@ const useLineData = (webserviceGisLinesStatusUrl, setLineStatusData) => {
return { lineColors, tooltipContents };
};
-// Funktion zur Gruppierung der Daten
-function logGroupedData(statisList) {
- const grouped = statisList.reduce((acc, item) => {
- const { IdLD, Modul, Level, PrioColor, PrioName, ModulName, ModulTyp, Message, DpName, Value } = item;
-
- if (!acc[IdLD]) {
- acc[IdLD] = {};
- }
-
- if (!acc[IdLD][Modul]) {
- acc[IdLD][Modul] = {
- ModulName: ModulName || "Unknown",
- ModulTyp: ModulTyp || "N/A",
- TotalLevel: Level,
- PrioColors: new Set(),
- PrioNames: new Set(),
- Messages: [],
- Messwert: undefined,
- Schleifenwert: undefined,
- };
- }
-
- acc[IdLD][Modul].PrioColors.add(PrioColor);
- acc[IdLD][Modul].PrioNames.add(PrioName);
- if (Message && Message !== "?") {
- acc[IdLD][Modul].Messages.push(Message);
- }
-
- if (DpName.endsWith("_Messwert") && !acc[IdLD][Modul].Messwert) {
- acc[IdLD][Modul].Messwert = Value;
- }
-
- if (DpName.endsWith("_Schleifenwert") && !acc[IdLD][Modul].Schleifenwert) {
- acc[IdLD][Modul].Schleifenwert = Value;
- }
-
- return acc;
- }, {});
-
- const formattedData = {};
- Object.entries(grouped).forEach(([stationId, modules]) => {
- const filteredModules = Object.entries(modules)
- .filter(([modulId, data]) => data.ModulName !== "?")
- .map(([modulId, data]) => ({
- Modul: modulId,
- ModulName: data.ModulName,
- ModulTyp: data.ModulTyp,
- TotalLevel: data.TotalLevel,
- PrioColors: Array.from(data.PrioColors).join(", "),
- PrioNames: Array.from(data.PrioNames).join(", "),
- Messages: data.Messages.join(" | "),
- Messwert: data.Messwert,
- Schleifenwert: data.Schleifenwert,
- }));
-
- if (filteredModules.length > 0) {
- formattedData[stationId] = filteredModules;
- }
- });
-
- console.log("Aggregierte und gruppierte Daten (gefiltert):", formattedData);
-}
-
export default useLineData;
diff --git a/utils/setupPolylines.js b/utils/setupPolylines.js
index d3a7cce18..795e4aa4f 100644
--- a/utils/setupPolylines.js
+++ b/utils/setupPolylines.js
@@ -37,6 +37,31 @@ export function enablePolylineEvents(polylines, lineColors) {
});
}
+// Funktion zum Schließen des Kontextmenüs vor dem Intervall
+const closeContextMenuBeforeInterval = (map) => {
+ if (map && map.contextmenu && map.contextmenu.isVisible && map.contextmenu.isVisible()) {
+ console.log("Schließe Kontextmenü 2 Sekunden vor dem Intervall");
+ map.contextmenu.hide();
+ }
+};
+
+// Zeitintervall mit Schließen des Kontextmenüs 2 Sekunden vorher
+export const startIntervalWithContextMenuHandling = (map) => {
+ setInterval(() => {
+ remainingTime = 20; // Zeit zurücksetzen für den neuen Durchlauf
+ // Kontextmenü überwachen
+ monitorContextMenu(map);
+
+ // Schließe das Kontextmenü 2 Sekunden vor dem API-Aufruf
+ setTimeout(() => {
+ closeContextMenuBeforeInterval(map);
+ }, 18000); // 18 Sekunden warten, dann schließen
+
+ // API-Aufruf oder Logik, die alle 20 Sekunden ausgeführt wird
+ fetchData();
+ }, 20000); // 20-Sekunden-Intervall
+};
+
export const setupPolylines = (map, linePositions, lineColors, tooltipContents, setNewCoords, tempMarker, currentZoom, currentCenter) => {
const markers = [];
const polylines = [];
@@ -223,6 +248,7 @@ export const setupPolylines = (map, linePositions, lineColors, tooltipContents,
console.log("Link der Linie (via Rechtsklick):", link);
localStorage.setItem("lastElementType", "polyline");
localStorage.setItem("polylineLink", link);
+ closeContextMenuBeforeInterval(map);
});
polylines.push(polyline);