diff --git a/components/MapComponent.js b/components/MapComponent.js index 65f9d5262..4bee4c469 100644 --- a/components/MapComponent.js +++ b/components/MapComponent.js @@ -6,6 +6,7 @@ import React, { useState, useMemo, useCallback, + use, } from "react"; import { MapContainer, TileLayer, Polyline, LayerGroup } from "react-leaflet"; @@ -2153,6 +2154,7 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => { }, []); //--------------------------- Linien färben ------------------------------ const [lineColors, setLineColors] = useState({}); + const [tooltipContent, setTooltipContent] = useState(""); // API-Aufruf, um Farben der Linien abzurufen @@ -2161,6 +2163,7 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => { try { const response1 = await fetch(webserviceGisLinesStatusUrl); const data1 = await response1.json(); + console.log("data1 webserviceGisLinesStatusUrl: ", data1.Statis); const response2 = await fetch("/api/talas_v5_DB/gisLines/readGisLines"); const data2 = await response2.json(); @@ -2171,14 +2174,29 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => { ); if (matchingLine) { colorsByModule[matchingLine.idModul] = stat.PrioColor; - //console.log("Übereinstimmung gefunden für", stat); - /* console.log( + console.log("Übereinstimmung gefunden für", stat); + console.log( "stat color", stat.PrioColor, "matchingLine", - matchingLine.idModul - ); */ + matchingLine.idModul, + "matchingLine", + matchingLine.idLD + ); setLineColors(colorsByModule); + setTooltipContent(` +
+
+ DpName: ${stat.DpName || "Unknown"} +
+
+ ModulName : ${stat.ModulName || "N/A"} +
+
+ Message : ${stat.Message || "N/A"} +
+
+ `); //console.log("colorsByModule: ", colorsByModule); //console.log("lineColors: ", lineColors); } else { @@ -2207,10 +2225,49 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => { iconAnchor: [5, 5], }); //----------------------- Update lines---------------------------------- + const [lineStatusData, setLineStatusData] = useState([]); + const [linesData, setLinesData] = useState([]); + + useEffect(() => { + const fetchData = async () => { + try { + const response1 = await fetch(webserviceGisLinesStatusUrl); + const data1 = await response1.json(); + setLineStatusData(data1.Statis); + + const response2 = await fetch("/api/talas_v5_DB/gisLines/readGisLines"); + const data2 = await response2.json(); + + const colorsByModule = {}; + data1.Statis.forEach((stat) => { + const matchingLine = data2.find( + (item) => item.idLD === stat.IdLD && item.idModul === stat.Modul + ); + if (matchingLine) { + colorsByModule[matchingLine.idModul] = stat.PrioColor; + console.log("Übereinstimmung gefunden für: ", stat); + setLinesData(matchingLine); + } + }); + + setLineColors(colorsByModule); + } catch (error) { + console.error("Error fetching data:", error); + } + }; + fetchData(); + }, []); + //--------------------------------------------------------- + useEffect(() => { + console.log("lineStatusData", lineStatusData); + console.log("lineData:", linesData); + }, [lineStatusData, linesData]); + //--------------------------------------------------------- // Function to initialize markers and polylines // Initialisieren eines Zustands für die Speicherung der Polyline-Objekte const [polylines, setPolylines] = useState([]); const [markers, setMarkers] = useState([]); + useEffect(() => { if (!map) return; @@ -2224,6 +2281,7 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => { linePositions.forEach((lineData, lineIndex) => { const lineMarkers = []; lineData.coordinates.forEach((coord, index) => { + console.log("lineData coord", lineData); const marker = L.marker(coord, { icon: circleIcon, draggable: true, @@ -2240,7 +2298,7 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => { }).addTo(map); // Hinzufügen eines Tooltips - updatedPolyline.bindTooltip("Informationen oder Name der Linie", { + updatedPolyline.bindTooltip(tooltipContent, { permanent: false, // true, wenn Sie möchten, dass der Tooltip immer sichtbar ist direction: "auto", // Kann 'right', 'left', 'top' oder 'bottom' sein }); @@ -2299,7 +2357,7 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => { color: lineColors[lineData.idModul] || "#000000", }).addTo(map); - polyline.bindTooltip("Informationen oder Name der Linie", { + polyline.bindTooltip(tooltipContent, { permanent: false, // true, wenn Sie möchten, dass der Tooltip immer sichtbar ist direction: "auto", // Kann 'right', 'left', 'top' oder 'bottom' sein });