Refactoring addContextMenuToMarker.js and openInNewTab.js

This commit is contained in:
ISA
2024-09-04 08:41:18 +02:00
parent 5ed41642da
commit 466fc55025
25 changed files with 58 additions and 62 deletions

View File

@@ -35,7 +35,7 @@ import circleIcon from "./gisPolylines/icons/CircleIcon.js";
import startIcon from "./gisPolylines/icons/StartIcon.js"; import startIcon from "./gisPolylines/icons/StartIcon.js";
import endIcon from "./gisPolylines/icons/EndIcon.js"; import endIcon from "./gisPolylines/icons/EndIcon.js";
import { fetchGisStatusStations, fetchPriorityConfig, fetchPoiData, updateLocationInDatabase, fetchUserRights, fetchDeviceNameById } from "../services/apiService.js"; import { fetchGisStatusStations, fetchPriorityConfig, fetchPoiData, updateLocationInDatabase, fetchUserRights, fetchDeviceNameById } from "../services/apiService.js";
import { addContextMenuToMarker } from "../utils/contextMenuUtils.js"; import { addContextMenuToMarker } from "../utils/addContextMenuToMarker.js";
import { MAP_VERSION } from "../config/settings.js"; import { MAP_VERSION } from "../config/settings.js";
import * as layers from "../config/layers.js"; import * as layers from "../config/layers.js";
import { zoomIn, zoomOut, centerHere } from "../utils/zoomAndCenterUtils.js"; import { zoomIn, zoomOut, centerHere } from "../utils/zoomAndCenterUtils.js";

View File

@@ -35,7 +35,7 @@ import circleIcon from "./gisPolylines/icons/CircleIcon.js";
import startIcon from "./gisPolylines/icons/StartIcon.js"; import startIcon from "./gisPolylines/icons/StartIcon.js";
import endIcon from "./gisPolylines/icons/EndIcon.js"; import endIcon from "./gisPolylines/icons/EndIcon.js";
import { fetchGisStatusStations, fetchPriorityConfig, fetchPoiData, updateLocationInDatabase, fetchUserRights, fetchDeviceNameById } from "../services/apiService.js"; import { fetchGisStatusStations, fetchPriorityConfig, fetchPoiData, updateLocationInDatabase, fetchUserRights, fetchDeviceNameById } from "../services/apiService.js";
import { addContextMenuToMarker } from "../utils/contextMenuUtils.js"; import { addContextMenuToMarker } from "../utils/addContextMenuToMarker.js";
import { MAP_VERSION } from "../config/settings.js"; import { MAP_VERSION } from "../config/settings.js";
import * as layers from "../config/layers.js"; import * as layers from "../config/layers.js";
import { zoomIn, zoomOut, centerHere } from "../utils/zoomAndCenterUtils.js"; import { zoomIn, zoomOut, centerHere } from "../utils/zoomAndCenterUtils.js";

View File

@@ -2,7 +2,7 @@
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import L from "leaflet"; import L from "leaflet";
import { createAndSetDevices } from "../../utils/createAndSetDevices"; import { createAndSetDevices } from "../../utils/createAndSetDevices";
import { addContextMenuToMarker } from "../../utils/contextMenuUtils"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker";
import { checkOverlappingMarkers } from "../../utils/mapUtils"; import { checkOverlappingMarkers } from "../../utils/mapUtils";
const useCiscoRouterMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => { const useCiscoRouterMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => {

View File

@@ -1,7 +1,7 @@
// hooks/useDauzMarkersLayer.js // hooks/useDauzMarkersLayer.js
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import L from "leaflet"; import L from "leaflet";
import { addContextMenuToMarker } from "../../utils/contextMenuUtils"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker";
import { createAndSetDevices } from "../../utils/createAndSetDevices"; import { createAndSetDevices } from "../../utils/createAndSetDevices";
const useDauzMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => { const useDauzMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => {

View File

@@ -2,7 +2,7 @@
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import L from "leaflet"; import L from "leaflet";
import { createAndSetDevices } from "../../utils/createAndSetDevices"; import { createAndSetDevices } from "../../utils/createAndSetDevices";
import { addContextMenuToMarker } from "../../utils/contextMenuUtils"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker";
import { checkOverlappingMarkers } from "../../utils/mapUtils"; import { checkOverlappingMarkers } from "../../utils/mapUtils";
const useEciMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => { const useEciMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => {

View File

@@ -1,6 +1,6 @@
// /hooks/layers/useGmaMarkersLayer.js // /hooks/layers/useGmaMarkersLayer.js
import { useEffect } from "react"; import { useEffect } from "react";
import { addContextMenuToMarker } from "../../utils/contextMenuUtils"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker";
const useGmaMarkersLayer = (map, gmaMarkers, GisStationsMeasurements, GMA, oms) => { const useGmaMarkersLayer = (map, gmaMarkers, GisStationsMeasurements, GMA, oms) => {
useEffect(() => { useEffect(() => {

View File

@@ -2,7 +2,7 @@
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import L from "leaflet"; import L from "leaflet";
import { createAndSetDevices } from "../../utils/createAndSetDevices"; import { createAndSetDevices } from "../../utils/createAndSetDevices";
import { addContextMenuToMarker } from "../../utils/contextMenuUtils"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker";
import { checkOverlappingMarkers } from "../../utils/mapUtils"; import { checkOverlappingMarkers } from "../../utils/mapUtils";
const useGsmModemMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => { const useGsmModemMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => {

View File

@@ -1,7 +1,7 @@
// /hooks/layers/useMessstellenMarkersLayer.js // /hooks/layers/useMessstellenMarkersLayer.js
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import L from "leaflet"; import L from "leaflet";
import { addContextMenuToMarker } from "../../utils/contextMenuUtils"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker";
import { createAndSetDevices } from "../../utils/createAndSetDevices"; import { createAndSetDevices } from "../../utils/createAndSetDevices";
const useMessstellenMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => { const useMessstellenMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => {

View File

@@ -1,7 +1,7 @@
// hooks/useOtdrMarkersLayer.js // hooks/useOtdrMarkersLayer.js
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import L from "leaflet"; import L from "leaflet";
import { addContextMenuToMarker } from "../../utils/contextMenuUtils"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker";
import { createAndSetDevices } from "../../utils/createAndSetDevices"; // Assuming this function is in poiUtils import { createAndSetDevices } from "../../utils/createAndSetDevices"; // Assuming this function is in poiUtils
const useOtdrMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => { const useOtdrMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => {

View File

@@ -1,7 +1,7 @@
// hooks/useSiemensMarkersLayer.js // hooks/useSiemensMarkersLayer.js
import { useState, useEffect } from "react"; import { useState, useEffect } from "react";
import L from "leaflet"; import L from "leaflet";
import { addContextMenuToMarker } from "../../utils/contextMenuUtils"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker";
import { createAndSetDevices } from "../../utils/createAndSetDevices"; import { createAndSetDevices } from "../../utils/createAndSetDevices";
import { checkOverlappingMarkers } from "../../utils/mapUtils"; import { checkOverlappingMarkers } from "../../utils/mapUtils";

View File

@@ -2,7 +2,7 @@
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import L from "leaflet"; import L from "leaflet";
import "leaflet-contextmenu"; import "leaflet-contextmenu";
import { addContextMenuToMarker } from "../../utils/contextMenuUtils"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker";
const useSmsfunkmodemMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => { const useSmsfunkmodemMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => {
const [smsfunkmodemMarkers, setSmsfunkmodemMarkers] = useState([]); const [smsfunkmodemMarkers, setSmsfunkmodemMarkers] = useState([]);

View File

@@ -1,7 +1,7 @@
// hooks/useSonstigeMarkersLayer.js // hooks/useSonstigeMarkersLayer.js
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import L from "leaflet"; import L from "leaflet";
import { addContextMenuToMarker } from "../../utils/contextMenuUtils"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker";
import { createAndSetDevices } from "../../utils/createAndSetDevices"; import { createAndSetDevices } from "../../utils/createAndSetDevices";
const useSonstigeMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => { const useSonstigeMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => {

View File

@@ -6,7 +6,7 @@ import { useRecoilValue } from "recoil";
import { mapLayersState } from "../../store/atoms/mapLayersState.js"; import { mapLayersState } from "../../store/atoms/mapLayersState.js";
import { selectedAreaState } from "../../store/atoms/selectedAreaState.js"; import { selectedAreaState } from "../../store/atoms/selectedAreaState.js";
import { zoomTriggerState } from "../../store/atoms/zoomTriggerState.js"; import { zoomTriggerState } from "../../store/atoms/zoomTriggerState.js";
import { addContextMenuToMarker } from "../../utils/contextMenuUtils.js"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker.js";
import { checkOverlappingMarkers } from "../../utils/mapUtils.js"; import { checkOverlappingMarkers } from "../../utils/mapUtils.js";
import plusRoundIcon from "../../components/PlusRoundIcon.js"; import plusRoundIcon from "../../components/PlusRoundIcon.js";
import { gisStationsStaticDistrictState } from "../../store/atoms/gisStationState.js"; import { gisStationsStaticDistrictState } from "../../store/atoms/gisStationState.js";

View File

@@ -1,6 +1,6 @@
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { createAndSetDevices } from "../../utils/createAndSetDevices"; import { createAndSetDevices } from "../../utils/createAndSetDevices";
import { addContextMenuToMarker } from "../../utils/contextMenuUtils"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker";
const useTalasMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => { const useTalasMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => {
const [talasMarkers, setTalasMarkers] = useState([]); const [talasMarkers, setTalasMarkers] = useState([]);

View File

@@ -1,7 +1,7 @@
// hooks/useTalasiclMarkersLayer.js // hooks/useTalasiclMarkersLayer.js
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import L from "leaflet"; import L from "leaflet";
import { addContextMenuToMarker } from "../../utils/contextMenuUtils"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker";
import { createAndSetDevices } from "../../utils/createAndSetDevices"; import { createAndSetDevices } from "../../utils/createAndSetDevices";
const useTalasiclMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => { const useTalasiclMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => {

View File

@@ -1,7 +1,7 @@
// hooks/useUlafMarkersLayer.js // hooks/useUlafMarkersLayer.js
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import L from "leaflet"; import L from "leaflet";
import { addContextMenuToMarker } from "../../utils/contextMenuUtils"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker";
//import { fetchDeviceNameById } from "../services/apiService"; //import { fetchDeviceNameById } from "../services/apiService";
const useUlafMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => { const useUlafMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => {

View File

@@ -1,7 +1,7 @@
// hooks/useWagoMarkersLayer.js // hooks/useWagoMarkersLayer.js
import { useState, useEffect } from "react"; import { useState, useEffect } from "react";
import L from "leaflet"; import L from "leaflet";
import { addContextMenuToMarker } from "../../utils/contextMenuUtils"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker";
import { createAndSetDevices } from "../../utils/createAndSetDevices"; import { createAndSetDevices } from "../../utils/createAndSetDevices";
import { checkOverlappingMarkers } from "../../utils/mapUtils"; import { checkOverlappingMarkers } from "../../utils/mapUtils";

View File

@@ -1,7 +1,7 @@
// hooks/useWdmMarkersLayer.js // hooks/useWdmMarkersLayer.js
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import L from "leaflet"; import L from "leaflet";
import { addContextMenuToMarker } from "../../utils/contextMenuUtils"; import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker";
import { createAndSetDevices } from "../../utils/createAndSetDevices"; import { createAndSetDevices } from "../../utils/createAndSetDevices";
const useWdmMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => { const useWdmMarkersLayer = (map, oms, GisSystemStatic, priorityConfig) => {

View File

@@ -1,6 +1,6 @@
// hooks/useLayerVisibility.js // hooks/useLayerVisibility.js
import { useEffect } from "react"; import { useEffect } from "react";
import { addContextMenuToMarker } from "../utils/contextMenuUtils"; import { addContextMenuToMarker } from "../utils/addContextMenuToMarker";
const useLayerVisibility = (map, markers, mapLayersVisibility, layerKey, oms) => { const useLayerVisibility = (map, markers, mapLayersVisibility, layerKey, oms) => {
useEffect(() => { useEffect(() => {

View File

@@ -0,0 +1,11 @@
// /utils/addContextMenuToMarker.js
export function addContextMenuToMarker(marker) {
marker.unbindContextMenu(); // Entferne das Kontextmenü, um Duplikate zu vermeiden
marker.bindContextMenu({
contextmenu: true,
contextmenuWidth: 140,
contextmenuItems: [],
});
}

View File

@@ -1,40 +0,0 @@
// contextMenuUtils.js
import { BASE_URL } from "../config/urls";
export function addContextMenuToMarker(marker) {
marker.unbindContextMenu(); // Entferne das Kontextmenü, um Duplikate zu vermeiden
marker.bindContextMenu({
contextmenu: true,
contextmenuWidth: 140,
contextmenuItems: [],
});
}
// Funktion zum Öffnen in einem neuen Tab
export function openInNewTab(e, target) {
const baseUrl = BASE_URL;
let idLD, idModul, link;
if (target instanceof L.Polyline) {
idLD = target.options.idLD;
idModul = target.options.idModul;
if (idLD) {
link = `${baseUrl}cpl.aspx?id=${idLD}`;
if (idModul) {
//link += `&module=${idModul}`;
}
} else {
console.error("Keine gültige 'idLD' für die Linie gefunden.");
return;
}
} else if (target instanceof L.Marker && target.options.link) {
link = baseUrl + target.options.link;
} else {
console.error("Fehler: Ungültiges Ziel oder keine gültige 'link' Eigenschaft.");
return;
}
// Öffne den Link in einem neuen Tab
window.open(link, "_blank");
}

View File

@@ -5,7 +5,8 @@ import "leaflet/dist/leaflet.css";
import "leaflet-contextmenu/dist/leaflet.contextmenu.css"; import "leaflet-contextmenu/dist/leaflet.contextmenu.css";
import * as urls from "../config/urls.js"; import * as urls from "../config/urls.js";
import * as layers from "../config/layers.js"; import * as layers from "../config/layers.js";
import { addContextMenuToMarker, openInNewTab } from "./contextMenuUtils.js"; import { addContextMenuToMarker } from "./addContextMenuToMarker.js";
import { openInNewTab } from "./openInNewTab.js";
import { disablePolylineEvents, enablePolylineEvents } from "./setupPolylines.js"; import { disablePolylineEvents, enablePolylineEvents } from "./setupPolylines.js";
export const initializeMap = (mapRef, setMap, setOms, setMenuItemAdded, addItemsToMapContextMenu, hasRights, setPolylineEventsDisabled) => { export const initializeMap = (mapRef, setMap, setOms, setMenuItemAdded, addItemsToMapContextMenu, hasRights, setPolylineEventsDisabled) => {

24
utils/openInNewTab.js Normal file
View File

@@ -0,0 +1,24 @@
// /utils/openInNewTab.js
import { BASE_URL } from "../config/urls";
export function openInNewTab(e, target) {
let link;
if (target instanceof L.Polyline) {
const idLD = target.options.idLD;
if (idLD) {
link = `${BASE_URL}cpl.aspx?id=${idLD}`;
} else {
console.error("Keine gültige 'idLD' für die Linie gefunden.");
return;
}
} else if (target instanceof L.Marker && target.options.link) {
link = BASE_URL + target.options.link;
} else {
console.error("Fehler: Ungültiges Ziel oder keine gültige 'link' Eigenschaft.");
return;
}
// Öffne den Link in einem neuen Tab
window.open(link, "_blank");
}

View File

@@ -8,7 +8,7 @@ import circleIcon from "../components/gisPolylines/icons/CircleIcon";
import startIcon from "../components/gisPolylines/icons/StartIcon"; import startIcon from "../components/gisPolylines/icons/StartIcon";
import endIcon from "../components/gisPolylines/icons/EndIcon"; import endIcon from "../components/gisPolylines/icons/EndIcon";
import { redrawPolyline } from "./mapUtils"; import { redrawPolyline } from "./mapUtils";
import { openInNewTab } from "../utils/contextMenuUtils"; import { openInNewTab } from "../utils/openInNewTab";
import { disablePolylineEvents, enablePolylineEvents } from "./setupPolylines"; // Importiere die Funktionen import { disablePolylineEvents, enablePolylineEvents } from "./setupPolylines"; // Importiere die Funktionen
export const setupPOIs = async ( export const setupPOIs = async (

View File

@@ -8,7 +8,7 @@ import circleIcon from "../components/gisPolylines/icons/CircleIcon";
import startIcon from "../components/gisPolylines/icons/StartIcon"; import startIcon from "../components/gisPolylines/icons/StartIcon";
import endIcon from "../components/gisPolylines/icons/EndIcon"; import endIcon from "../components/gisPolylines/icons/EndIcon";
import { redrawPolyline } from "./mapUtils"; import { redrawPolyline } from "./mapUtils";
import { openInNewTab } from "./contextMenuUtils"; import { openInNewTab } from "./openInNewTab";
// Funktion zum Deaktivieren der Polyline-Ereignisse // Funktion zum Deaktivieren der Polyline-Ereignisse
export function disablePolylineEvents(polylines) { export function disablePolylineEvents(polylines) {