Sattion öffnen (Tab) für polylines und Geräte funktioniert nicht zu 100% muss noch optimiert werden

This commit is contained in:
ISA
2024-09-03 08:50:58 +02:00
parent 03de1ab43e
commit 46a9f05894
3 changed files with 72 additions and 30 deletions

View File

@@ -3,14 +3,39 @@ import { findClosestPoints } from "./geometryUtils";
import handlePoiSelect from "./handlePoiSelect";
import { updateLocationInDatabase } from "../services/apiService";
import { handleEditPoi, insertNewMarker, removeMarker } from "./markerUtils";
import { parsePoint } from "./geometryUtils"; // Importiere parsePoint hier
import { parsePoint } from "./geometryUtils";
import circleIcon from "../components/gisPolylines/icons/CircleIcon";
import startIcon from "../components/gisPolylines/icons/StartIcon";
import endIcon from "../components/gisPolylines/icons/EndIcon";
import { AddSupportPointIcon, RemoveSupportPointIcon } from "../components/gisPolylines/icons/SupportPointIcons";
import { redrawPolyline } from "./mapUtils";
import { openInNewTab } from "../utils/contextMenuUtils";
// Funktion zum Deaktivieren der Polyline-Ereignisse
export function disablePolylineEvents(polylines) {
polylines.forEach((polyline) => {
polyline.off("mouseover");
polyline.off("mouseout");
});
}
// Funktion zum Aktivieren der Polyline-Ereignisse
export function enablePolylineEvents(polylines, lineColors) {
polylines.forEach((polyline) => {
polyline.on("mouseover", (e) => {
console.log("Mouseover on polyline", polyline.options);
polyline.setStyle({ weight: 14 });
const link = `${process.env.NEXT_PUBLIC_BASE_URL}cpl.aspx?id=${polyline.options.idLD}`;
localStorage.setItem("lastElementType", "polyline");
localStorage.setItem("polylineLink", link);
});
polyline.on("mouseout", (e) => {
console.log("Mouseout from polyline", polyline.options);
polyline.setStyle({ weight: 3 });
});
});
}
export const setupMarkers = async (
map,
locations,
@@ -52,7 +77,7 @@ export const setupMarkers = async (
id: location.idPoi,
name: location.name,
description: location.description,
link: location.link, // Marker-specific link
link: location.link,
}).bindContextMenu({
contextmenu: true,
contextmenuWidth: 140,
@@ -91,8 +116,11 @@ export const setupMarkers = async (
setCurrentPoi(location);
this.openPopup();
// Deaktiviere Polyline-Ereignisse beim Öffnen des Kontextmenüs des Markers
disablePolylineEvents(window.polylines);
localStorage.setItem("lastElementType", "marker");
localStorage.setItem("markerLink", this.options.link); // Store the marker-specific link
localStorage.setItem("markerLink", this.options.link);
});
marker.on("mouseout", function () {
@@ -104,9 +132,7 @@ export const setupMarkers = async (
const newLat = e.target.getLatLng().lat;
const newLng = e.target.getLatLng().lng;
const markerId = e.target.options.id;
updateLocationInDatabase(markerId, newLat, newLng).then(() => {
// Optional: Update UI or state after dragging
});
updateLocationInDatabase(markerId, newLat, newLng).then(() => {});
} else {
console.error("Drag operation not allowed");
}
@@ -231,7 +257,7 @@ export const setupPolylines = (map, linePositions, lineColors, tooltipContents,
const polyline = L.polyline(lineData.coordinates, {
color: lineColors[`${lineData.idLD}-${lineData.idModul}`] || "#000000",
weight: 3, // Standard weight for better recognition
weight: 3,
contextmenu: true,
contextmenuItems: [
{
@@ -251,6 +277,12 @@ export const setupPolylines = (map, linePositions, lineColors, tooltipContents,
],
}).addTo(map);
// Hier wird der Tooltip hinzugefügt
polyline.bindTooltip(tooltipContents[`${lineData.idLD}-${lineData.idModul}`] || "Standard-Tooltip-Inhalt", {
permanent: false,
direction: "auto",
});
polyline.on("mouseover", (e) => {
console.log("Mouseover on polyline", lineData);
polyline.setStyle({ weight: 14 });
@@ -268,5 +300,9 @@ export const setupPolylines = (map, linePositions, lineColors, tooltipContents,
markers.push(...lineMarkers);
});
// Speichere Polylines und LineColors global für den Zugriff in anderen Funktionen
window.polylines = polylines;
window.lineColors = lineColors;
return { markers, polylines };
};