feat: Aktualisierung und Rendering von Marker-Icons und GMA-ToolTip-Werten
- Marker-Icons werden dynamisch aktualisiert, ohne dass Blinken oder redundantes Rendering auftritt. - ToolTip-Werte der GMA-Stationen aktualisieren sich in Echtzeit basierend auf neuen Messdaten. - Verbesserte Performance durch gezielte Updates nur bei Datenänderungen.
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
DB_HOST=10.10.0.13
|
DB_HOST=10.10.0.13
|
||||||
DB_USER=root
|
DB_USER=root
|
||||||
DB_PASSWORD="root#$"
|
DB_PASSWORD="root#$"
|
||||||
DB_NAME=talas_v5_lmz_2024
|
DB_NAME=talas_v5
|
||||||
DB_PORT=3306
|
DB_PORT=3306
|
||||||
#########################
|
#########################
|
||||||
|
|
||||||
|
|||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,5 +1,5 @@
|
|||||||
# Node modules
|
# Node modules
|
||||||
#/node_modules/
|
/node_modules/
|
||||||
|
|
||||||
# .NET build output
|
# .NET build output
|
||||||
/.next/
|
/.next/
|
||||||
@@ -26,3 +26,4 @@ trace
|
|||||||
|
|
||||||
# Ignore specific Next.js build files
|
# Ignore specific Next.js build files
|
||||||
pages-manifest.json
|
pages-manifest.json
|
||||||
|
nodeMap für 13 am 16.07.2024.zip
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// components/MapComponent.js
|
// components/MapComponent.js
|
||||||
import React, { useEffect, useRef, useState, useCallback } from "react";
|
import React, { useEffect, useRef, useState, useCallback } from "react";
|
||||||
import L, { marker } from "leaflet";
|
import L, { marker } from "leaflet";
|
||||||
import "leaflet/dist/leaflet.css";
|
import "leaflet/dist/leaflet.css";
|
||||||
@@ -44,9 +44,9 @@ import { addItemsToMapContextMenu } from "./useMapContextMenu.js";
|
|||||||
import useGmaMarkersLayer from "../hooks/layers/useGmaMarkersLayer.js"; // Import the custom hook
|
import useGmaMarkersLayer from "../hooks/layers/useGmaMarkersLayer.js"; // Import the custom hook
|
||||||
import useTalasMarkersLayer from "../hooks/layers/useTalasMarkersLayer.js"; // Import the custom hook
|
import useTalasMarkersLayer from "../hooks/layers/useTalasMarkersLayer.js"; // Import the custom hook
|
||||||
import useEciMarkersLayer from "../hooks/layers/useEciMarkersLayer.js";
|
import useEciMarkersLayer from "../hooks/layers/useEciMarkersLayer.js";
|
||||||
//import useGsmModemMarkersLayer from "../hooks/layers/useGsmModemMarkersLayer.js";
|
import useGsmModemMarkersLayer from "../hooks/layers/useGsmModemMarkersLayer.js";
|
||||||
import useCiscoRouterMarkersLayer from "../hooks/layers/useCiscoRouterMarkersLayer.js";
|
import useCiscoRouterMarkersLayer from "../hooks/layers/useCiscoRouterMarkersLayer.js";
|
||||||
import useLteModemMarkersLayer from "../hooks/layers/useLteModemMarkersLayer";
|
//import useLteModemMarkersLayer from "../hooks/layers/useLteModemMarkersLayer";
|
||||||
|
|
||||||
import useWagoMarkersLayer from "../hooks/layers/useWagoMarkersLayer.js";
|
import useWagoMarkersLayer from "../hooks/layers/useWagoMarkersLayer.js";
|
||||||
import useSiemensMarkersLayer from "../hooks/layers/useSiemensMarkersLayer.js";
|
import useSiemensMarkersLayer from "../hooks/layers/useSiemensMarkersLayer.js";
|
||||||
@@ -139,7 +139,7 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
|||||||
const [gmaMarkers, setGmaMarkers] = useState([]); //--------------------station.System === 11 alle sind untetschiedlich Nummern
|
const [gmaMarkers, setGmaMarkers] = useState([]); //--------------------station.System === 11 alle sind untetschiedlich Nummern
|
||||||
const [talasMarkers, setTalasMarkers] = useState([]);
|
const [talasMarkers, setTalasMarkers] = useState([]);
|
||||||
const [eciMarkers, setEciMarkers] = useState([]);
|
const [eciMarkers, setEciMarkers] = useState([]);
|
||||||
//const [gsmModemMarkers, setGsmModemMarkers] = useState([]);
|
const [gsmModemMarkers, setGsmModemMarkers] = useState([]);
|
||||||
const [ciscoRouterMarkers, setCiscoRouterMarkers] = useState([]);
|
const [ciscoRouterMarkers, setCiscoRouterMarkers] = useState([]);
|
||||||
const [wagoMarkers, setWagoMarkers] = useState([]);
|
const [wagoMarkers, setWagoMarkers] = useState([]);
|
||||||
const [siemensMarkers, setSiemensMarkers] = useState([]);
|
const [siemensMarkers, setSiemensMarkers] = useState([]);
|
||||||
@@ -151,7 +151,7 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
|||||||
const [smsfunkmodemMarkers, setSmsfunkmodemMarkers] = useState([]);
|
const [smsfunkmodemMarkers, setSmsfunkmodemMarkers] = useState([]);
|
||||||
const [ulafMarkers, setUlafMarkers] = useState([]);
|
const [ulafMarkers, setUlafMarkers] = useState([]);
|
||||||
const [sonstigeMarkers, setSonstigeMarkers] = useState([]);
|
const [sonstigeMarkers, setSonstigeMarkers] = useState([]);
|
||||||
const [lteModemMarkers, setLteModemMarkers] = useState([])
|
//const [lteModemMarkers, setLteModemMarkers] = useState([]);
|
||||||
|
|
||||||
const [lineStatusData, setLineStatusData] = useState([]);
|
const [lineStatusData, setLineStatusData] = useState([]);
|
||||||
const [linesData, setLinesData] = useState([]);
|
const [linesData, setLinesData] = useState([]);
|
||||||
@@ -256,6 +256,12 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
await fetchGisStationsStaticDistrict(mapGisStationsStaticDistrictUrl, setGisStationsStaticDistrict, fetchOptions);
|
||||||
|
await fetchGisStationsStatusDistrict(mapGisStationsStatusDistrictUrl, setGisStationsStatusDistrict, fetchOptions);
|
||||||
|
await fetchGisStationsMeasurements(mapGisStationsMeasurementsUrl, setGisStationsMeasurements, fetchOptions);
|
||||||
|
await fetchGisSystemStatic(mapGisSystemStaticUrl, setGisSystemStatic, setGisSystemStaticLoaded, fetchOptions);
|
||||||
|
*/
|
||||||
// Fetch GIS Stations Static District
|
// Fetch GIS Stations Static District
|
||||||
await fetchGisStationsStaticDistrict(mapGisStationsStaticDistrictUrl, setGisStationsStaticDistrict, fetchOptions);
|
await fetchGisStationsStaticDistrict(mapGisStationsStaticDistrictUrl, setGisStationsStaticDistrict, fetchOptions);
|
||||||
requestCount++; // Zähler erhöhen
|
requestCount++; // Zähler erhöhen
|
||||||
@@ -386,27 +392,12 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
|||||||
//console.log("priorityConfig in MapComponent2: ", priorityConfig);
|
//console.log("priorityConfig in MapComponent2: ", priorityConfig);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (gisSystemStaticLoaded && map) {
|
if (gisSystemStaticLoaded && map) {
|
||||||
/*
|
|
||||||
createAndSetDevices(1, GisSystemStatic, priorityConfig); // TALAS-System
|
|
||||||
createAndSetDevices(2, GisSystemStatic, priorityConfig); // ECI-System
|
|
||||||
createAndSetDevices(5, GisSystemStatic, priorityConfig); // GSM-Modem-System
|
|
||||||
createAndSetDevices(6, GisSystemStatic, priorityConfig); // Cisco-Router-System
|
|
||||||
createAndSetDevices(7, GisSystemStatic, priorityConfig); // WAGO-System
|
|
||||||
createAndSetDevices(8, GisSystemStatic, priorityConfig); // Siemens-System
|
|
||||||
createAndSetDevices(9, GisSystemStatic, priorityConfig); // OTDR-System
|
|
||||||
createAndSetDevices(10, GisSystemStatic, priorityConfig); // WDM-System
|
|
||||||
createAndSetDevices(13, GisSystemStatic, priorityConfig); // Messstellen-System
|
|
||||||
createAndSetDevices(100, GisSystemStatic, priorityConfig); // TALASICL-System
|
|
||||||
createAndSetDevices(110, GisSystemStatic, priorityConfig); // DAUZ-System
|
|
||||||
createAndSetDevices(111, GisSystemStatic, priorityConfig); // SMS-Funkmodem-System
|
|
||||||
createAndSetDevices(200, GisSystemStatic, priorityConfig); // Sonstige-System
|
|
||||||
createAndSetDevices(0, GisSystemStatic, priorityConfig); // ULAF-System
|
|
||||||
*/
|
|
||||||
createAndSetDevices(11, setGmaMarkers, GisSystemStatic, priorityConfig); // GMA-System
|
createAndSetDevices(11, setGmaMarkers, GisSystemStatic, priorityConfig); // GMA-System
|
||||||
createAndSetDevices(1, setTalasMarkers, GisSystemStatic, priorityConfig); // TALAS-System
|
createAndSetDevices(1, setTalasMarkers, GisSystemStatic, priorityConfig); // TALAS-System
|
||||||
createAndSetDevices(2, setEciMarkers, GisSystemStatic, priorityConfig); // ECI-System
|
createAndSetDevices(2, setEciMarkers, GisSystemStatic, priorityConfig); // ECI-System
|
||||||
//createAndSetDevices(5, setGsmModemMarkers, GisSystemStatic, priorityConfig); // GSM-Modem-System
|
createAndSetDevices(5, setGsmModemMarkers, GisSystemStatic, priorityConfig); // GSM-Modem-System---LTE Modem und GSM Modem sind gleich
|
||||||
createAndSetDevices(5, setLteModemMarkers, GisSystemStatic, priorityConfig); //LTE Modem
|
//createAndSetDevices(5, setLteModemMarkers, GisSystemStatic, priorityConfig); //LTE Modem----------LTE Modem und GSM Modem sind gleich
|
||||||
createAndSetDevices(6, setCiscoRouterMarkers, GisSystemStatic, priorityConfig); // Cisco-Router-System
|
createAndSetDevices(6, setCiscoRouterMarkers, GisSystemStatic, priorityConfig); // Cisco-Router-System
|
||||||
createAndSetDevices(7, setWagoMarkers, GisSystemStatic, priorityConfig); // WAGO-System
|
createAndSetDevices(7, setWagoMarkers, GisSystemStatic, priorityConfig); // WAGO-System
|
||||||
createAndSetDevices(8, setSiemensMarkers, GisSystemStatic, priorityConfig); // Siemens-System
|
createAndSetDevices(8, setSiemensMarkers, GisSystemStatic, priorityConfig); // Siemens-System
|
||||||
@@ -425,9 +416,9 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
|||||||
|
|
||||||
useLayerVisibility(map, talasMarkers, mapLayersVisibility, "TALAS", oms);
|
useLayerVisibility(map, talasMarkers, mapLayersVisibility, "TALAS", oms);
|
||||||
useLayerVisibility(map, eciMarkers, mapLayersVisibility, "ECI", oms);
|
useLayerVisibility(map, eciMarkers, mapLayersVisibility, "ECI", oms);
|
||||||
//useLayerVisibility(map, gsmModemMarkers, mapLayersVisibility, "GSMModem", oms);
|
useLayerVisibility(map, gsmModemMarkers, mapLayersVisibility, "GSMModem", oms);
|
||||||
useLayerVisibility(map, ciscoRouterMarkers, mapLayersVisibility, "CiscoRouter", oms);
|
useLayerVisibility(map, ciscoRouterMarkers, mapLayersVisibility, "CiscoRouter", oms);
|
||||||
useLayerVisibility(map, lteModemMarkers, mapLayersVisibility, "LTEModem", oms);
|
//useLayerVisibility(map, lteModemMarkers, mapLayersVisibility, "LTEModem", oms);
|
||||||
|
|
||||||
useLayerVisibility(map, wagoMarkers, mapLayersVisibility, "WAGO", oms);
|
useLayerVisibility(map, wagoMarkers, mapLayersVisibility, "WAGO", oms);
|
||||||
useLayerVisibility(map, siemensMarkers, mapLayersVisibility, "Siemens", oms);
|
useLayerVisibility(map, siemensMarkers, mapLayersVisibility, "Siemens", oms);
|
||||||
@@ -460,7 +451,7 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
|||||||
const allMarkers = [
|
const allMarkers = [
|
||||||
...talasMarkers,
|
...talasMarkers,
|
||||||
...eciMarkers,
|
...eciMarkers,
|
||||||
// ...gsmModemMarkers,
|
...gsmModemMarkers,
|
||||||
...ciscoRouterMarkers,
|
...ciscoRouterMarkers,
|
||||||
...wagoMarkers,
|
...wagoMarkers,
|
||||||
...siemensMarkers,
|
...siemensMarkers,
|
||||||
@@ -473,12 +464,12 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
|||||||
...smsfunkmodemMarkers,
|
...smsfunkmodemMarkers,
|
||||||
...sonstigeMarkers,
|
...sonstigeMarkers,
|
||||||
...ulafMarkers,
|
...ulafMarkers,
|
||||||
...lteModemMarkers,
|
//...lteModemMarkers,
|
||||||
];
|
];
|
||||||
|
|
||||||
checkOverlappingMarkers(map, allMarkers, plusRoundIcon);
|
checkOverlappingMarkers(map, allMarkers, plusRoundIcon);
|
||||||
}
|
}
|
||||||
}, [map, talasMarkers, eciMarkers, ciscoRouterMarkers, wagoMarkers, siemensMarkers, otdrMarkers, wdmMarkers, gmaMarkers, messstellenMarkers, talasiclMarkers, dauzMarkers, smsfunkmodemMarkers, sonstigeMarkers, ulafMarkers, lteModemMarkers]);
|
}, [map, talasMarkers, eciMarkers, ciscoRouterMarkers, wagoMarkers, siemensMarkers, otdrMarkers, wdmMarkers, gmaMarkers, messstellenMarkers, talasiclMarkers, dauzMarkers, smsfunkmodemMarkers, sonstigeMarkers, ulafMarkers]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const fetchData = async () => {
|
const fetchData = async () => {
|
||||||
@@ -686,6 +677,91 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => {
|
|||||||
}, [map]);
|
}, [map]);
|
||||||
//--------------------------------------------
|
//--------------------------------------------
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!map) return; // Stelle sicher, dass die Karte initialisiert ist
|
||||||
|
|
||||||
|
const updateGmaData = async () => {
|
||||||
|
try {
|
||||||
|
const fetchOptions = {
|
||||||
|
method: "GET",
|
||||||
|
headers: {
|
||||||
|
Connection: "close",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
// Aktualisiere die Messdaten
|
||||||
|
await fetchGisStationsMeasurements(mapGisStationsMeasurementsUrl, setGisStationsMeasurements, fetchOptions);
|
||||||
|
await fetchGisStationsStatusDistrict(mapGisStationsStatusDistrictUrl, setGisStationsStatusDistrict, fetchOptions);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Aktualisiere die Marker-Layer
|
||||||
|
useGmaMarkersLayer(map, gmaMarkers, GisStationsMeasurements, layers.MAP_LAYERS.GMA, oms);
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Fehler beim Aktualisieren der GMA-Daten:", error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Initialer Datenabruf
|
||||||
|
updateGmaData();
|
||||||
|
|
||||||
|
// Setze ein Intervall, um die Daten alle 5 Sekunden zu aktualisieren
|
||||||
|
const intervalId = setInterval(() => {
|
||||||
|
updateGmaData();
|
||||||
|
}, 5000);
|
||||||
|
|
||||||
|
// Cleanup-Funktion, um das Intervall zu entfernen, wenn die Komponente entladen wird
|
||||||
|
return () => clearInterval(intervalId);
|
||||||
|
}, [map, gmaMarkers, layers.MAP_LAYERS.GMA, oms, mapGisStationsMeasurementsUrl,mapGisStationsStatusDistrictUrl]);
|
||||||
|
|
||||||
|
|
||||||
|
//---------------------------------
|
||||||
|
|
||||||
|
const markerLayerRef = useRef(null);
|
||||||
|
useEffect(() => {
|
||||||
|
if (!gisSystemStaticLoaded || !map) return; // Sicherstellen, dass alle Abhängigkeiten geladen sind
|
||||||
|
|
||||||
|
// Initialisiere die LayerGroup, falls noch nicht vorhanden
|
||||||
|
if (!markerLayerRef.current) {
|
||||||
|
markerLayerRef.current = new L.LayerGroup().addTo(map);
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateMarkers = () => {
|
||||||
|
// Alte Marker entfernen
|
||||||
|
markerLayerRef.current.clearLayers();
|
||||||
|
|
||||||
|
// Neue Marker für jedes System erstellen
|
||||||
|
/* createAndSetDevices(11, (markers) => {
|
||||||
|
setGmaMarkers(markers);
|
||||||
|
markers.forEach((marker) => marker.addTo(markerLayerRef.current)); // Marker zur LayerGroup hinzufügen
|
||||||
|
}, GisSystemStatic, priorityConfig);
|
||||||
|
*/
|
||||||
|
createAndSetDevices(11, setGmaMarkers, GisSystemStatic, priorityConfig);
|
||||||
|
// Füge hier weitere `createAndSetDevices`-Aufrufe für andere Systeme ein
|
||||||
|
};
|
||||||
|
|
||||||
|
// Initiales Update der Marker
|
||||||
|
updateMarkers();
|
||||||
|
|
||||||
|
// Setze ein Intervall, um die Marker alle 10 Sekunden zu aktualisieren
|
||||||
|
const intervalId = setInterval(() => {
|
||||||
|
updateMarkers();
|
||||||
|
}, 10000); // 10 Sekunden
|
||||||
|
|
||||||
|
// Aufräumen bei Komponentenentladung
|
||||||
|
return () => {
|
||||||
|
clearInterval(intervalId);
|
||||||
|
if (markerLayerRef.current) {
|
||||||
|
markerLayerRef.current.clearLayers();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}, [gisSystemStaticLoaded, map, GisSystemStatic, priorityConfig]);
|
||||||
|
|
||||||
|
|
||||||
|
//---------------------------------------
|
||||||
|
|
||||||
|
//-----------------
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ToastContainer />
|
<ToastContainer />
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// /config/settings.js
|
// /config/settings.js
|
||||||
// Definieren der grundlegenden Umgebungseinstellungen und Konfigurationen der Karte
|
// Definieren der grundlegenden Umgebungseinstellungen und Konfigurationen der Karte
|
||||||
export const MAP_VERSION = "1.0.2";
|
export const MAP_VERSION = "1.0.1";
|
||||||
//export const STANDARD_SIDE_MENU = true;
|
//export const STANDARD_SIDE_MENU = true;
|
||||||
//export const FULL_SIDE_MENU = false;
|
//export const FULL_SIDE_MENU = false;
|
||||||
|
|||||||
@@ -1,88 +1,79 @@
|
|||||||
import { useEffect } from "react";
|
import { useEffect } from "react";
|
||||||
import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker";
|
import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker";
|
||||||
|
|
||||||
const useGmaMarkersLayer = (
|
const useMarkersLayer = (map, markers, GisStationsMeasurements, GMA, oms) => {
|
||||||
map,
|
|
||||||
gmaMarkers,
|
|
||||||
GisStationsMeasurements,
|
|
||||||
GMA,
|
|
||||||
oms
|
|
||||||
) => {
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (map && gmaMarkers.length) {
|
if (!map) return;
|
||||||
// Filtere die relevanten Messungen für Fahrbahnzustand
|
|
||||||
const gmaMeasurements = GisStationsMeasurements.filter(
|
// Entferne alte Marker
|
||||||
(m) => m.Gr === "Fahrbahnzustand"
|
GMA.clearLayers();
|
||||||
|
|
||||||
|
// Hinzufügen neuer Marker
|
||||||
|
markers.forEach((marker) => {
|
||||||
|
// Finde die Messungen, die zu diesem Marker gehören
|
||||||
|
const relevantMeasurements = GisStationsMeasurements.filter((m) => m.Area_Name === marker.options.areaName);
|
||||||
|
|
||||||
|
let measurements = {};
|
||||||
|
let area_name = marker.options.areaName;
|
||||||
|
|
||||||
|
relevantMeasurements.forEach((m) => {
|
||||||
|
measurements[m.Na] = m.Val;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Überprüfe, ob die Messwerte vorhanden sind, und setze Standardwerte
|
||||||
|
const lt = measurements["LT"] || "---";
|
||||||
|
const fbt = measurements["FBT"] || "---";
|
||||||
|
const gt = measurements["GT"] || "---";
|
||||||
|
const rlf = measurements["RLF"] || "---";
|
||||||
|
|
||||||
|
console.log(`Station oder Bereich ${area_name} - LT: ${lt}, FBT: ${fbt}, GT: ${gt}, RLF: ${rlf}`);
|
||||||
|
|
||||||
|
// Tooltip für den Marker binden
|
||||||
|
marker.bindTooltip(
|
||||||
|
`
|
||||||
|
<div class="p-0 rounded-lg bg-white bg-opacity-90">
|
||||||
|
<div class="font-bold text-sm text-black">
|
||||||
|
<span>${area_name}</span>
|
||||||
|
</div>
|
||||||
|
<div class="font-bold text-xxs text-blue-700">
|
||||||
|
<span>LT : ${lt} °C</span>
|
||||||
|
</div>
|
||||||
|
<div class="font-bold text-xxs text-red-700">
|
||||||
|
<span>FBT : ${fbt} °C</span>
|
||||||
|
</div>
|
||||||
|
<div class="font-bold text-xxs text-yellow-500">
|
||||||
|
<span>GT : ${gt}</span>
|
||||||
|
</div>
|
||||||
|
<div class="font-bold text-xxs text-green-700">
|
||||||
|
<span>RLF : ${rlf} %</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`,
|
||||||
|
{
|
||||||
|
permanent: true,
|
||||||
|
direction: "auto",
|
||||||
|
offset: [20, 0],
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
gmaMarkers.forEach((marker) => {
|
// Ereignisse für das Öffnen und Schließen des Tooltips
|
||||||
marker.addTo(map);
|
marker.on("mouseover", function () {
|
||||||
oms.addMarker(marker);
|
this.openPopup();
|
||||||
|
|
||||||
// Finde die Messungen, die zu diesem Marker gehören
|
|
||||||
const relevantMeasurements = gmaMeasurements.filter(
|
|
||||||
(m) => m.Area_Name === marker.options.areaName
|
|
||||||
);
|
|
||||||
|
|
||||||
let measurements = {};
|
|
||||||
let area_name = marker.options.areaName;
|
|
||||||
|
|
||||||
relevantMeasurements.forEach((m) => {
|
|
||||||
measurements[m.Na] = m.Val;
|
|
||||||
});
|
|
||||||
|
|
||||||
// Überprüfe, ob die Messwerte vorhanden sind, und setze Standardwerte
|
|
||||||
const lt = measurements["LT"] || "Datenlücke";
|
|
||||||
const fbt = measurements["FBT"] || "nicht verfügbar";
|
|
||||||
const gt = measurements["GT"] || "nicht verfügbar";
|
|
||||||
const rlf = measurements["RLF"] || "nicht verfügbar";
|
|
||||||
|
|
||||||
// Log die aktuellen Messwerte für den Marker
|
|
||||||
/*
|
|
||||||
console.log(
|
|
||||||
`Marker at ${area_name} - LT: ${lt}, FBT: ${fbt}, GT: ${gt}, RLF: ${rlf}`
|
|
||||||
);
|
|
||||||
*/
|
|
||||||
// Tooltip für den Marker binden
|
|
||||||
marker.bindTooltip(
|
|
||||||
`
|
|
||||||
<div class="p-0 rounded-lg bg-white bg-opacity-90">
|
|
||||||
<div class="font-bold text-sm text-black">
|
|
||||||
<span>${area_name}</span>
|
|
||||||
</div>
|
|
||||||
<div class="font-bold text-xxs text-blue-700">
|
|
||||||
<span>LT : ${lt} °C</span>
|
|
||||||
</div>
|
|
||||||
<div class="font-bold text-xxs text-red-700">
|
|
||||||
<span>FBT : ${fbt} °C</span>
|
|
||||||
</div>
|
|
||||||
<div class="font-bold text-xxs text-yellow-500">
|
|
||||||
<span>GT : ${gt}</span>
|
|
||||||
</div>
|
|
||||||
<div class="font-bold text-xxs text-green-700">
|
|
||||||
<span>RLF : ${rlf} %</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
`,
|
|
||||||
{
|
|
||||||
permanent: true,
|
|
||||||
direction: "auto",
|
|
||||||
offset: [20, 0],
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
// Ereignisse für das Öffnen und Schließen des Tooltips
|
|
||||||
marker.on("mouseover", function () {
|
|
||||||
this.openPopup();
|
|
||||||
});
|
|
||||||
marker.on("mouseout", function () {
|
|
||||||
this.closePopup();
|
|
||||||
});
|
|
||||||
addContextMenuToMarker(marker);
|
|
||||||
});
|
});
|
||||||
map.addLayer(GMA);
|
marker.on("mouseout", function () {
|
||||||
}
|
this.closePopup();
|
||||||
}, [map, gmaMarkers, GisStationsMeasurements, GMA, oms]);
|
});
|
||||||
|
|
||||||
|
// Kontextmenü hinzufügen
|
||||||
|
addContextMenuToMarker(marker);
|
||||||
|
|
||||||
|
// Füge den Marker zur Layer-Gruppe hinzu
|
||||||
|
GMA.addLayer(marker);
|
||||||
|
oms.addMarker(marker);
|
||||||
|
});
|
||||||
|
|
||||||
|
map.addLayer(GMA);
|
||||||
|
}, [map, markers, GisStationsMeasurements, GMA, oms]);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default useGmaMarkersLayer;
|
export default useMarkersLayer;
|
||||||
|
|||||||
152
public/Web.config.13
Normal file
152
public/Web.config.13
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><!--
|
||||||
|
Informationen zur Konfiguration Ihrer ASP.NET-Anwendung finden Sie unter
|
||||||
|
https://go.microsoft.com/fwlink/?LinkId=169433
|
||||||
|
-->
|
||||||
|
<configuration>
|
||||||
|
<configSections>
|
||||||
|
<sectionGroup name="devExpress">
|
||||||
|
<section name="themes" type="DevExpress.Web.ThemesConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||||
|
<section name="compression" type="DevExpress.Web.CompressionConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||||
|
<section name="settings" type="DevExpress.Web.SettingsConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||||
|
<section name="errors" type="DevExpress.Web.ErrorsConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||||
|
<section name="resources" type="DevExpress.Web.ResourcesConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||||
|
<section name="bootstrap" type="DevExpress.Web.Bootstrap.BootstrapConfigurationSection, DevExpress.Web.Bootstrap.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||||
|
</sectionGroup>
|
||||||
|
</configSections>
|
||||||
|
<system.web>
|
||||||
|
<compilation debug="true" defaultLanguage="c#" targetFramework="4.5">
|
||||||
|
<assemblies>
|
||||||
|
<add assembly="DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.Data.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.Printing.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.Office.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
|
||||||
|
<add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
|
||||||
|
<add assembly="DevExpress.RichEdit.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="System.Web.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
|
||||||
|
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
|
||||||
|
<add assembly="DevExpress.Web.ASPxThemes.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||||
|
<add assembly="DevExpress.Web.ASPxTreeList.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.Web.ASPxGantt.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.RichEdit.v19.2.Export, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||||
|
<add assembly="DevExpress.XtraCharts.v19.2.Web, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.XtraCharts.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.Charts.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.Web.ASPxPivotGrid.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.PivotGrid.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.Web.ASPxScheduler.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.XtraScheduler.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.DataAccess.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.Web.ASPxHtmlEditor.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.Web.ASPxSpellChecker.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.SpellChecker.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.Web.ASPxDiagram.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.Web.Bootstrap.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.Web.ASPxRichEdit.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.Web.ASPxSpreadsheet.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
</assemblies>
|
||||||
|
</compilation>
|
||||||
|
<authentication mode="Forms">
|
||||||
|
<forms loginUrl="Login.aspx" />
|
||||||
|
</authentication>
|
||||||
|
<httpRuntime targetFramework="4.5" maxRequestLength="4096" requestValidationMode="4.0" executionTimeout="110" />
|
||||||
|
<httpModules>
|
||||||
|
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
|
||||||
|
</httpModules>
|
||||||
|
<httpHandlers>
|
||||||
|
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DX.ashx" validate="false" />
|
||||||
|
<add verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||||
|
</httpHandlers>
|
||||||
|
<globalization culture="de" uiCulture="de" />
|
||||||
|
<webServices>
|
||||||
|
<protocols>
|
||||||
|
<add name="HttpGet" />
|
||||||
|
<add name="HttpPost" />
|
||||||
|
</protocols>
|
||||||
|
</webServices>
|
||||||
|
<sessionState cookieless="UseCookies" mode="StateServer" stateConnectionString="tcpip=localhost:42424" stateNetworkTimeout="200" timeout="240" />
|
||||||
|
</system.web>
|
||||||
|
<system.codedom>
|
||||||
|
<compilers>
|
||||||
|
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
|
||||||
|
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
|
||||||
|
</compilers>
|
||||||
|
</system.codedom>
|
||||||
|
|
||||||
|
<system.webServer>
|
||||||
|
<httpProtocol>
|
||||||
|
<customHeaders>
|
||||||
|
<add name="Access-Control-Allow-Origin" value="*" />
|
||||||
|
<add name="Access-Control-Allow-Headers" value="Origin, X_Requested-With, Content-Type, Accept" />"/>
|
||||||
|
</customHeaders>
|
||||||
|
</httpProtocol>
|
||||||
|
<modules>
|
||||||
|
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
|
||||||
|
</modules>
|
||||||
|
<validation validateIntegratedModeConfiguration="false" />
|
||||||
|
<handlers>
|
||||||
|
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DX.ashx" name="ASPxHttpHandlerModule" preCondition="integratedMode" />
|
||||||
|
<add name="ASPxUploadProgressHandler" preCondition="integratedMode" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||||
|
</handlers>
|
||||||
|
<security>
|
||||||
|
<requestFiltering>
|
||||||
|
<requestLimits maxAllowedContentLength="30000000" />
|
||||||
|
</requestFiltering>
|
||||||
|
</security>
|
||||||
|
<defaultDocument>
|
||||||
|
<files>
|
||||||
|
<remove value="index.html" />
|
||||||
|
<remove value="iisstart.htm" />
|
||||||
|
<remove value="default.aspx" />
|
||||||
|
<add value="Login.aspx" />
|
||||||
|
</files>
|
||||||
|
</defaultDocument>
|
||||||
|
</system.webServer>
|
||||||
|
<devExpress>
|
||||||
|
<themes customThemeAssemblies="ThemeAssembly" theme="TALAS5Standard" enableThemesAssembly="true" styleSheetTheme="" baseColor="" font="" />
|
||||||
|
<compression enableHtmlCompression="false" enableCallbackCompression="true" enableResourceCompression="true" enableResourceMerging="true" />
|
||||||
|
<settings accessibilityCompliant="false" bootstrapMode="Bootstrap3" doctypeMode="Html5" rightToLeft="false" checkReferencesToExternalScripts="true" protectControlState="true" ieCompatibilityVersion="edge" />
|
||||||
|
<errors callbackErrorRedirectUrl="" />
|
||||||
|
<bootstrap allowClientObjectDeferredInitialization="true" mode="Bootstrap3" iconSet="Embedded" />
|
||||||
|
|
||||||
|
<resources>
|
||||||
|
<add type="DevExtreme" />
|
||||||
|
<add type="ThirdParty" />
|
||||||
|
</resources>
|
||||||
|
|
||||||
|
</devExpress>
|
||||||
|
<appSettings>
|
||||||
|
<add key="vs:EnableBrowserLink" value="false" />
|
||||||
|
<add key="ConnectionString" value="DRIVER={MySQL ODBC 8.0 ANSI Driver};SERVER=localhost;PORT=3306;DATABASE=talas_v5;USER=root;PASSWORD=root#$;OPTION=3;MULTI_STATEMENTS=1;Pooling=true" />
|
||||||
|
<add key="RadiusEnable" value="False" />
|
||||||
|
<add key="RadiusSecret" value="RADIUSTEST" />
|
||||||
|
<add key="RadiusServer1" value="10.54.159.11" />
|
||||||
|
<add key="RadiusServer2" value="10.54.159.12" />
|
||||||
|
<add key="EmailSupport" value="technik@littwin-systemtechnik.de" />
|
||||||
|
<add key="PathDocuments" value="C:/inetpub/wwwroot/talas5/Files/" />
|
||||||
|
<add key="PathAccess" value="C:/inetpub/wwwroot/talas5/AccessSync/" />
|
||||||
|
<add key="TALASserviceName" value="TALASservice" />
|
||||||
|
<add key="TALASservicePath" value="C:\Program Files (x86)\TALAS5\TALAS.service\TALASservice.exe" />
|
||||||
|
<add key="Email_Server" value="mail.gmx.net" />
|
||||||
|
<add key="Email_Port" value="587" />
|
||||||
|
<add key="Email_From" value="fernwirk@gmx.de" />
|
||||||
|
<add key="Email_User" value="fernwirk@gmx.de" />
|
||||||
|
<add key="Email_Pass" value="oldenburg" />
|
||||||
|
<add key="Email_Login" value="True" />
|
||||||
|
<add key="Email_Support1" value="kai.schmidt@littwin-systemtechnik.de" />
|
||||||
|
<add key="Email_Ssl" value="True" />
|
||||||
|
<add key="TitelZeile1" value="TALAS" />
|
||||||
|
<add key="TitelZeile2" value="TZW" />
|
||||||
|
<add key="EmailSupport" value="svoge@littwin-systemtechnik.de" />
|
||||||
|
<add key="EditPassword" value="True" />
|
||||||
|
<add key="CustomErrorPage" value="true" />
|
||||||
|
</appSettings>
|
||||||
|
|
||||||
|
<system.web.extensions>
|
||||||
|
<scripting>
|
||||||
|
<webServices>
|
||||||
|
<jsonSerialization maxJsonLength="50000000" />
|
||||||
|
</webServices>
|
||||||
|
</scripting>
|
||||||
|
</system.web.extensions>
|
||||||
|
</configuration>
|
||||||
140
public/Web.config.30
Normal file
140
public/Web.config.30
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?><!--
|
||||||
|
Informationen zur Konfiguration Ihrer ASP.NET-Anwendung finden Sie unter
|
||||||
|
https://go.microsoft.com/fwlink/?LinkId=169433
|
||||||
|
-->
|
||||||
|
<configuration>
|
||||||
|
<configSections>
|
||||||
|
<sectionGroup name="devExpress">
|
||||||
|
<section name="themes" type="DevExpress.Web.ThemesConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||||
|
<section name="compression" type="DevExpress.Web.CompressionConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||||
|
<section name="settings" type="DevExpress.Web.SettingsConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||||
|
<section name="errors" type="DevExpress.Web.ErrorsConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||||
|
<section name="resources" type="DevExpress.Web.ResourcesConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||||
|
<section name="bootstrap" type="DevExpress.Web.Bootstrap.BootstrapConfigurationSection, DevExpress.Web.Bootstrap.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
|
||||||
|
</sectionGroup>
|
||||||
|
</configSections>
|
||||||
|
<system.web>
|
||||||
|
<compilation debug="true" defaultLanguage="c#" optimizeCompilations="false" targetFramework="4.5">
|
||||||
|
<assemblies>
|
||||||
|
<add assembly="DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.Data.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.Printing.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.Office.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
|
||||||
|
<add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
|
||||||
|
<add assembly="DevExpress.RichEdit.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="System.Web.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
|
||||||
|
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
|
||||||
|
<add assembly="DevExpress.Web.ASPxThemes.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||||
|
<add assembly="DevExpress.Web.ASPxTreeList.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.Web.ASPxGantt.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
|
||||||
|
<add assembly="DevExpress.RichEdit.v19.2.Export, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||||
|
</assemblies>
|
||||||
|
</compilation>
|
||||||
|
<authentication mode="Forms">
|
||||||
|
<forms loginUrl="Login.aspx" />
|
||||||
|
</authentication>
|
||||||
|
<httpRuntime targetFramework="4.6.1" maxRequestLength="100000000" requestValidationMode="4.0" executionTimeout="110" />
|
||||||
|
<httpModules>
|
||||||
|
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
|
||||||
|
</httpModules>
|
||||||
|
<httpHandlers>
|
||||||
|
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DX.ashx" validate="false" />
|
||||||
|
<add verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||||
|
</httpHandlers>
|
||||||
|
<globalization culture="de" uiCulture="de" />
|
||||||
|
<webServices>
|
||||||
|
<protocols>
|
||||||
|
<add name="HttpGet" />
|
||||||
|
<add name="HttpPost" />
|
||||||
|
</protocols>
|
||||||
|
</webServices>
|
||||||
|
<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424" cookieless="false" timeout="240" />
|
||||||
|
<roleManager enabled="true" />
|
||||||
|
</system.web>
|
||||||
|
<system.codedom>
|
||||||
|
<compilers>
|
||||||
|
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
|
||||||
|
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
|
||||||
|
</compilers>
|
||||||
|
</system.codedom>
|
||||||
|
|
||||||
|
<system.webServer>
|
||||||
|
<httpProtocol>
|
||||||
|
<customHeaders>
|
||||||
|
<add name="Access-Control-Allow-Origin" value="*" />
|
||||||
|
<add name="Access-Control-Allow-Headers" value="Origin, X_Requested-With, Content-Type, Accept" />"/>
|
||||||
|
</customHeaders>
|
||||||
|
</httpProtocol>
|
||||||
|
<modules>
|
||||||
|
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
|
||||||
|
</modules>
|
||||||
|
<validation validateIntegratedModeConfiguration="false" />
|
||||||
|
<handlers>
|
||||||
|
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DX.ashx" name="ASPxHttpHandlerModule" preCondition="integratedMode" />
|
||||||
|
<add name="ASPxUploadProgressHandler" preCondition="integratedMode" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||||
|
</handlers>
|
||||||
|
<security>
|
||||||
|
<requestFiltering>
|
||||||
|
<requestLimits maxAllowedContentLength="30000000" />
|
||||||
|
</requestFiltering>
|
||||||
|
</security>
|
||||||
|
<defaultDocument>
|
||||||
|
<files>
|
||||||
|
<remove value="index.html" />
|
||||||
|
<remove value="iisstart.htm" />
|
||||||
|
<remove value="default.aspx" />
|
||||||
|
<add value="Login.aspx" />
|
||||||
|
</files>
|
||||||
|
</defaultDocument>
|
||||||
|
</system.webServer>
|
||||||
|
<devExpress>
|
||||||
|
<themes customThemeAssemblies="ThemeAssembly" theme="TALAS5Standard" enableThemesAssembly="true" styleSheetTheme="" baseColor="" font="" />
|
||||||
|
<compression enableHtmlCompression="false" enableCallbackCompression="true" enableResourceCompression="true" enableResourceMerging="true" />
|
||||||
|
<settings accessibilityCompliant="false" bootstrapMode="Bootstrap3" doctypeMode="Html5" rightToLeft="false" checkReferencesToExternalScripts="true" protectControlState="true" ieCompatibilityVersion="edge" />
|
||||||
|
<errors callbackErrorRedirectUrl="" />
|
||||||
|
<bootstrap allowClientObjectDeferredInitialization="true" mode="Bootstrap3" iconSet="Embedded" />
|
||||||
|
|
||||||
|
<resources>
|
||||||
|
<add type="DevExtreme"/>
|
||||||
|
<add type="ThirdParty"/>
|
||||||
|
</resources>
|
||||||
|
</devExpress>
|
||||||
|
<appSettings>
|
||||||
|
<add key="vs:EnableBrowserLink" value="false" />
|
||||||
|
<add key="ConnectionString" value="DRIVER={MySQL ODBC 8.0 ANSI Driver};SERVER=localhost;PORT=3306;DATABASE=talas_v5;USER=root;PASSWORD=root#$;OPTION=3;MULTI_STATEMENTS=1" />
|
||||||
|
<add key="RadiusEnable" value="False" />
|
||||||
|
<add key="RadiusSecret" value="RADIUSTEST" />
|
||||||
|
<add key="RadiusServer1" value="10.54.159.11" />
|
||||||
|
<add key="RadiusServer2" value="10.54.159.12" />
|
||||||
|
<add key="EmailSupport" value="technik@littwin-systemtechnik.de" />
|
||||||
|
<add key="PathDocuments" value="C:/inetpub/wwwroot/talas5/Files/" />
|
||||||
|
<add key="PathAccess" value="C:/inetpub/wwwroot/talas5/AccessSync/" />
|
||||||
|
<add key="PathCplExport" value="C:/inetpub/wwwroot/talas5/CplSync/" />
|
||||||
|
<add key="TALASserviceName" value="TALASservice" />
|
||||||
|
<add key="TALASservicePath" value="C:\Program Files (x86)\Littwin\TALASservice\TALASservice.exe" />
|
||||||
|
<add key="Email_Server" value="mail.gmx.net" />
|
||||||
|
<add key="Email_Port" value="587" />
|
||||||
|
<add key="Email_From" value="fernwirk@gmx.de" />
|
||||||
|
<add key="Email_User" value="fernwirk@gmx.de" />
|
||||||
|
<add key="Email_Pass" value="oldenburg" />
|
||||||
|
<add key="Email_Login" value="True" />
|
||||||
|
<add key="Email_Support1" value="kai.schmidt@littwin-systemtechnik.de" />
|
||||||
|
<add key="Email_Ssl" value="True" />
|
||||||
|
<add key="TitelZeile1" value="TALAS" />
|
||||||
|
<add key="TitelZeile2" value="" />
|
||||||
|
<add key="EmailSupport" value="svoge@littwin-systemtechnik.de" />
|
||||||
|
<add key="EditPassword" value="True" />
|
||||||
|
<add key="EmailSupport" value="svoge@littwin-systemtechnik.de" />
|
||||||
|
<add key="Background" value="0.gif" />
|
||||||
|
<add key="CustomErrorPage" value="true" />
|
||||||
|
</appSettings>
|
||||||
|
|
||||||
|
<system.web.extensions>
|
||||||
|
<scripting>
|
||||||
|
<webServices>
|
||||||
|
<jsonSerialization maxJsonLength="50000000" />
|
||||||
|
</webServices>
|
||||||
|
</scripting>
|
||||||
|
</system.web.extensions>
|
||||||
|
</configuration>
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
// /utils/createAndSetDevices.js
|
// /utils/createAndSetDevices.js
|
||||||
import circleIcon from "../components/gisPolylines/icons/CircleIcon";
|
import circleIcon from "../components/gisPolylines/icons/CircleIcon";
|
||||||
import { saveLineData, redrawPolyline } from "./mapUtils";
|
import { saveLineData, redrawPolyline } from "./mapUtils";
|
||||||
import L from "leaflet";
|
import L from "leaflet";
|
||||||
@@ -36,6 +36,8 @@ export const createAndSetDevices = async (systemId, setMarkersFunction, GisSyste
|
|||||||
const getIdSystemAndAllowValueMap = new Map(GisSystemStatic.map((system) => [system.IdSystem, system.Allow]));
|
const getIdSystemAndAllowValueMap = new Map(GisSystemStatic.map((system) => [system.IdSystem, system.Allow]));
|
||||||
|
|
||||||
if (jsonResponse.Points && statusResponse.Statis) {
|
if (jsonResponse.Points && statusResponse.Statis) {
|
||||||
|
console.log("jsonResponse.Points: ", jsonResponse.Points);
|
||||||
|
console.log("statusResponse.Statis: ", statusResponse.Statis);
|
||||||
const statisMap = new Map(statusResponse.Statis.map((s) => [s.IdLD, s]));
|
const statisMap = new Map(statusResponse.Statis.map((s) => [s.IdLD, s]));
|
||||||
let markersData = jsonResponse.Points.filter((station) => station.System === systemId && getIdSystemAndAllowValueMap.get(station.System) === 1).map((station) => {
|
let markersData = jsonResponse.Points.filter((station) => station.System === systemId && getIdSystemAndAllowValueMap.get(station.System) === 1).map((station) => {
|
||||||
const statis = statisMap.get(station.IdLD);
|
const statis = statisMap.get(station.IdLD);
|
||||||
@@ -62,14 +64,7 @@ export const createAndSetDevices = async (systemId, setMarkersFunction, GisSyste
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Verwende das `contextmenu`-Ereignis für den Rechtsklick
|
// Verwende das `contextmenu`-Ereignis für den Rechtsklick
|
||||||
/* marker.on("contextmenu", function (event) {
|
|
||||||
if (event && event.preventDefault) {
|
|
||||||
event.preventDefault(); // Verhindert das Standard-Kontextmenü
|
|
||||||
}
|
|
||||||
disablePolylineEvents(window.polylines);
|
|
||||||
this.openPopup();
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
marker.on("contextmenu", function (event) {
|
marker.on("contextmenu", function (event) {
|
||||||
if (event && event.preventDefault) {
|
if (event && event.preventDefault) {
|
||||||
event.preventDefault(); // Verhindert das Standard-Kontextmenü
|
event.preventDefault(); // Verhindert das Standard-Kontextmenü
|
||||||
@@ -115,16 +110,7 @@ export const createAndSetDevices = async (systemId, setMarkersFunction, GisSyste
|
|||||||
<div class="mt-2">${statusInfo}</div>
|
<div class="mt-2">${statusInfo}</div>
|
||||||
</div>
|
</div>
|
||||||
`);
|
`);
|
||||||
/* marker.bindPopup(`
|
|
||||||
<div class="bg-white rounded-lg">
|
|
||||||
<span class="text-lg font-semibold text-gray-900">${station.LD_Name}</span>
|
|
||||||
<span class="text-md font-bold text-gray-800"> ${station.Device}</span><br>
|
|
||||||
<span class="text-gray-800"><strong> ${station.Area_Short} </strong>(${station.Area_Name})</span><br>
|
|
||||||
<span class="text-gray-800"><strong>${station.Location_Short} </strong> (${station.Location_Name})</span>
|
|
||||||
<div class="mt-2">${statusInfo}</div>
|
|
||||||
<a href="${station.Link}" target="_blank" style="color: blue;">${BASE_URL}${station.Link}</a>
|
|
||||||
</div>
|
|
||||||
`); */
|
|
||||||
|
|
||||||
return marker;
|
return marker;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ export const restoreMapSettings = (map) => {
|
|||||||
export const checkOverlappingMarkers = (map, markers, plusIcon) => {
|
export const checkOverlappingMarkers = (map, markers, plusIcon) => {
|
||||||
// Ensure markers is always an array
|
// Ensure markers is always an array
|
||||||
if (!Array.isArray(markers)) {
|
if (!Array.isArray(markers)) {
|
||||||
//console.error("The `markers` argument is not an array:", markers);
|
console.error("The `markers` argument is not an array:", markers);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,7 +104,8 @@ export const checkOverlappingMarkers = (map, markers, plusIcon) => {
|
|||||||
const plusMarker = L.marker(latLng, { icon: plusIcon });
|
const plusMarker = L.marker(latLng, { icon: plusIcon });
|
||||||
plusMarker.addTo(map);
|
plusMarker.addTo(map);
|
||||||
|
|
||||||
//console.log("Adding plus icon marker at", latLng);
|
console.log("Adding plus icon marker at", latLng);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
console.log("overlappingGroups", overlappingGroups);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user