diff --git a/components/MapComponent-old.js b/components/MapComponent-old.js new file mode 100644 index 000000000..20c3b3c89 --- /dev/null +++ b/components/MapComponent-old.js @@ -0,0 +1,855 @@ +// components/MapComponent.js //fix:v1.0.8.1 Browser lädt ständig die Karte neu +import React, { useEffect, useRef, useState, useCallback } from "react"; +import L, { marker } from "leaflet"; +import "leaflet/dist/leaflet.css"; +import "leaflet-contextmenu/dist/leaflet.contextmenu.css"; +import "leaflet-contextmenu"; +import * as config from "../config/config.js"; +import * as urls from "../config/urls.js"; +import "leaflet.smooth_marker_bouncing"; +import OverlappingMarkerSpiderfier from "overlapping-marker-spiderfier-leaflet"; +import DataSheet from "./DataSheet.js"; +import { useRecoilState, useRecoilValue, useSetRecoilState } from "recoil"; +import { gisStationsStaticDistrictState } from "../store/atoms/gisStationState.js"; +import { gisSystemStaticState } from "../store/atoms/gisSystemState.js"; +import { mapLayersState } from "../store/atoms/mapLayersState.js"; +import { selectedAreaState } from "../store/atoms/selectedAreaState.js"; +import { zoomTriggerState } from "../store/atoms/zoomTriggerState.js"; +import { poiTypState } from "../store/atoms/poiTypState.js"; +import AddPoiModalWindow from "./pois/AddPoiModalWindow.js"; +import { poiReadFromDbTriggerAtom } from "../store/atoms/poiReadFromDbTriggerAtom.js"; +import { InformationCircleIcon } from "@heroicons/react/20/solid"; // oder 'outline' +import PoiUpdateModal from "./pois/PoiUpdateModal.js"; +import { selectedPoiState } from "../store/atoms/poiState.js"; +import { currentPoiState } from "../store/atoms/currentPoiState.js"; +import { ToastContainer, toast } from "react-toastify"; +import "react-toastify/dist/ReactToastify.css"; +import { mapIdState, userIdState } from "../store/atoms/urlParameterState.js"; +import { poiLayerVisibleState } from "../store/atoms/poiLayerVisibleState.js"; +import plusRoundIcon from "./PlusRoundIcon.js"; +import { parsePoint, findClosestPoints } from "../utils/geometryUtils.js"; +import { insertNewPOI, removePOI, handleEditPoi } from "../utils/poiUtils.js"; +import { createAndSetDevices } from "../utils/createAndSetDevices.js"; +import { redrawPolyline, restoreMapSettings, checkOverlappingMarkers } from "../utils/mapUtils.js"; +import circleIcon from "./gisPolylines/icons/CircleIcon.js"; +import startIcon from "./gisPolylines/icons/StartIcon.js"; +import endIcon from "./gisPolylines/icons/EndIcon.js"; +import { fetchGisStatusStations, fetchPriorityConfig, fetchPoiData, updateLocationInDatabase, fetchUserRights, fetchDeviceNameById } from "../services/apiService.js"; +import { addContextMenuToMarker } from "../utils/addContextMenuToMarker.js"; +import { MAP_VERSION } from "../config/settings.js"; +import * as layers from "../config/layers.js"; +import { zoomIn, zoomOut, centerHere } from "../utils/zoomAndCenterUtils.js"; +import { initializeMap } from "../utils/initializeMap.js"; +import { addItemsToMapContextMenu } from "./useMapContextMenu.js"; +import useGmaMarkersLayer from "../hooks/layers/useGmaMarkersLayer.js"; // Import the custom hook +import useTalasMarkersLayer from "../hooks/layers/useTalasMarkersLayer.js"; // Import the custom hook +import useEciMarkersLayer from "../hooks/layers/useEciMarkersLayer.js"; +import useGsmModemMarkersLayer from "../hooks/layers/useGsmModemMarkersLayer.js"; +import useCiscoRouterMarkersLayer from "../hooks/layers/useCiscoRouterMarkersLayer.js"; +//import useLteModemMarkersLayer from "../hooks/layers/useLteModemMarkersLayer"; + +import useWagoMarkersLayer from "../hooks/layers/useWagoMarkersLayer.js"; +import useSiemensMarkersLayer from "../hooks/layers/useSiemensMarkersLayer.js"; +import useOtdrMarkersLayer from "../hooks/layers/useOtdrMarkersLayer.js"; +import useWdmMarkersLayer from "../hooks/layers/useWdmMarkersLayer.js"; +import useMessstellenMarkersLayer from "../hooks/layers/useMessstellenMarkersLayer.js"; +import useTalasiclMarkersLayer from "../hooks/layers/useTalasiclMarkersLayer.js"; +import useDauzMarkersLayer from "../hooks/layers/useDauzMarkersLayer.js"; +import useSmsfunkmodemMarkersLayer from "../hooks/layers/useSmsfunkmodemMarkersLayer.js"; +import useUlafMarkersLayer from "../hooks/layers/useUlafMarkersLayer.js"; +import useSonstigeMarkersLayer from "../hooks/layers/useSonstigeMarkersLayer.js"; +import handlePoiSelect from "../utils/handlePoiSelect.js"; +import { fetchGisStationsStaticDistrict, fetchGisStationsStatusDistrict, fetchGisStationsMeasurements, fetchGisSystemStatic } from "../services/fetchData.js"; +import { setupPolylines } from "../utils/setupPolylines.js"; +import { setupPOIs } from "../utils/setupPOIs.js"; +import VersionInfoModal from "./VersionInfoModal.js"; +//-------------------------------------------- +import PoiUpdateModalWrapper from "./pois/PoiUpdateModalWrapper"; +import AddPoiModalWindowWrapper from "./pois/AddPoiModalWindowWrapper"; +import useFetchPoiData from "../hooks/useFetchPoiData"; +import usePoiTypData from "../hooks/usePoiTypData"; +import useMarkerLayers from "../hooks/useMarkerLayers"; +import useLayerVisibility from "../hooks/useLayerVisibility"; +import useLineData from "../hooks/useLineData.js"; +import useCreateAndSetDevices from "../hooks/useCreateAndSetDevices"; +//import { useCreateAndSetDevices } from "../hooks/useCreateAndSetDevices"; +import { useMapComponentState } from "../hooks/useMapComponentState"; +import { polylineEventsDisabledState } from "../store/atoms/polylineEventsDisabledState"; +import { disablePolylineEvents, enablePolylineEvents } from "../utils/setupPolylines"; +import { polylineLayerVisibleState } from "../store/atoms/polylineLayerVisibleState"; + +const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => { + const polylineVisible = useRecoilValue(polylineLayerVisibleState); + 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(""); + const [locationDeviceData, setLocationDeviceData] = useState([]); + const [priorityConfig, setPriorityConfig] = useState([]); + const [menuItemAdded, setMenuItemAdded] = useState(false); + const poiLayerVisible = useRecoilValue(poiLayerVisibleState); + const [isRightsLoaded, setIsRightsLoaded] = useState(false); + const [hasRights, setHasRights] = useState(false); + const [mapId, setMapId] = useRecoilState(mapIdState); + const [userId, setUserId] = useRecoilState(userIdState); + const [AddPoiModalWindowState, setAddPoiModalWindowState] = useState(false); + const [userRights, setUserRights] = useState(null); + const setSelectedPoi = useSetRecoilState(selectedPoiState); + const [showPoiUpdateModal, setShowPoiUpdateModal] = useState(false); + const [currentPoiData, setCurrentPoiData] = useState(null); + const setCurrentPoi = useSetRecoilState(currentPoiState); + const [showVersionInfoModal, setShowVersionInfoModal] = useState(false); + const zoomTrigger = useRecoilValue(zoomTriggerState); + const [gisSystemStaticLoaded, setGisSystemStaticLoaded] = useState(false); + const [poiTypMap, setPoiTypMap] = useState(new Map()); + const [showPopup, setShowPopup] = useState(false); + const poiReadTrigger = useRecoilValue(poiReadFromDbTriggerAtom); + const poiLayerRef = useRef(null); // Referenz auf die Layer-Gruppe für Datenbank-Marker + const mapRef = useRef(null); // Referenz auf das DIV-Element der Karte + const [map, setMap] = useState(null); // Zustand der Karteninstanz + const [oms, setOms] = useState(null); // State für OMS-Instanz + const [GisStationsStaticDistrict, setGisStationsStaticDistrict] = useRecoilState(gisStationsStaticDistrictState); + const [GisStationsStatusDistrict, setGisStationsStatusDistrict] = useState([]); // Zustand für Statusdaten + const [GisStationsMeasurements, setGisStationsMeasurements] = useState([]); // Zustand für Messdaten + const [GisSystemStatic, setGisSystemStatic] = useRecoilState(gisSystemStaticState); // Zustand für Systemdaten + // Konstanten für die URLs + const mapGisStationsStaticDistrictUrl = config.mapGisStationsStaticDistrictUrl; + const mapGisStationsStatusDistrictUrl = config.mapGisStationsStatusDistrictUrl; + const mapGisStationsMeasurementsUrl = config.mapGisStationsMeasurementsUrl; + const mapGisSystemStaticUrl = config.mapGisSystemStaticUrl; + const webserviceGisLinesStatusUrl = config.webserviceGisLinesStatusUrl; + //console.log("priorityConfig in MapComponent1: ", priorityConfig); + + const [gmaMarkers, setGmaMarkers] = useState([]); //--------------------station.System === 11 alle sind untetschiedlich Nummern + const [talasMarkers, setTalasMarkers] = useState([]); + const [eciMarkers, setEciMarkers] = useState([]); + const [gsmModemMarkers, setGsmModemMarkers] = useState([]); + const [ciscoRouterMarkers, setCiscoRouterMarkers] = useState([]); + const [wagoMarkers, setWagoMarkers] = useState([]); + const [siemensMarkers, setSiemensMarkers] = useState([]); + const [otdrMarkers, setOtdrMarkers] = useState([]); + const [wdmMarkers, setWdmMarkers] = useState([]); + const [messstellenMarkers, setMessstellenMarkers] = useState([]); + const [talasiclMarkers, setTalasiclMarkers] = useState([]); + const [dauzMarkers, setDauzMarkers] = useState([]); + const [smsfunkmodemMarkers, setSmsfunkmodemMarkers] = useState([]); + const [ulafMarkers, setUlafMarkers] = useState([]); + const [sonstigeMarkers, setSonstigeMarkers] = useState([]); + //const [lteModemMarkers, setLteModemMarkers] = useState([]); + + const [lineStatusData, setLineStatusData] = useState([]); + const [linesData, setLinesData] = useState([]); + const mapLayersVisibility = useRecoilValue(mapLayersState); + const selectedArea = useRecoilValue(selectedAreaState); + const poiData = useFetchPoiData("/api/talas_v5_DB/pois/poi-icons"); + const [linePositions, setLinePositions] = useState([]); + const { lineColors, tooltipContents } = useLineData(webserviceGisLinesStatusUrl, setLineStatusData); + const [polylines, setPolylines] = useState([]); + const [markers, setMarkers] = useState([]); + const closePopup = () => setShowPopup(false); + const [newPoint, setNewPoint] = useState(null); + const [newCoords, setNewCoords] = useState(null); + const [tempMarker, setTempMarker] = useState(null); + + const [popupCoordinates, setPopupCoordinates] = useState({ + lat: 52.52, + lng: 13.405, + }); + + const handleAddStation = (stationData) => { + setAddPoiModalWindowState(false); + closePopup(); // Schließt das Popup nach dem Hinzufügen + }; + + const openVersionInfoModal = () => { + setShowVersionInfoModal(true); + }; + + const closeVersionInfoModal = () => { + setShowVersionInfoModal(false); + }; + + const [currentZoom, setCurrentZoom] = useState(() => { + const storedZoom = localStorage.getItem("mapZoom"); + return storedZoom ? parseInt(storedZoom, 10) : 12; + }); + + const [currentCenter, setCurrentCenter] = useState(() => { + const storedCenter = localStorage.getItem("mapCenter"); + try { + return storedCenter ? JSON.parse(storedCenter) : [53.111111, 8.4625]; + } catch (e) { + console.error("Error parsing stored map center:", e); + return [53.111111, 8.4625]; + } + }); + const [polylineEventsDisabled, setPolylineEventsDisabled] = useRecoilState(polylineEventsDisabledState); // Recoil State + + //--------------------------------------------------------------- + + /* useEffect(() => { + fetchGisStatusStations(12, 484); // Beispielaufruf mit idMap = 10 und idUser = 484 + }, []); */ + + useEffect(() => { + const params = new URL(window.location.href).searchParams; + setMapId(params.get("m")); + setUserId(params.get("u")); + }, [setMapId, setUserId]); + + useEffect(() => { + if (map && poiLayerRef.current && isPoiTypLoaded && !menuItemAdded && isRightsLoaded) { + //console.log("Überprüfung der Berechtigung vor addItemsToMapContextMenu: ", hasRights); + addItemsToMapContextMenu(hasRights); + } + }, [ + map, + poiLayerRef, + isPoiTypLoaded, + menuItemAdded, // Hinzufügen zu den Abhängigkeiten, um den Effekt korrekt zu steuern + hasRights, // Sicherstellen, dass hasRights berücksichtigt wird + isRightsLoaded, // Überprüfung, ob die Rechte geladen sind + ]); + + useEffect(() => { + const fetchAndSetUserRights = async () => { + const rights = await fetchUserRights(); + setUserRights(rights); + setIsRightsLoaded(true); + + // Sicherstellen, dass `rights` ein Array ist, bevor `.includes()` aufgerufen wird + setHasRights(localStorage.getItem("editMode") && Array.isArray(rights) && rights.includes(56)); + }; + + fetchAndSetUserRights(); + }, []); + + useGmaMarkersLayer( + map, + gmaMarkers, + GisStationsMeasurements, + layers.MAP_LAYERS.GMA, + oms, + mapLayersVisibility.GMA // Übergebe die Sichtbarkeitsbedingung als Parameter + ); + + useSmsfunkmodemMarkersLayer( + map, + oms, + GisSystemStatic, + priorityConfig, + mapLayersVisibility.SMSFunkmodem // Sichtbarkeitsstatus aus dem State + ); + + useEffect(() => { + const fetchWebServiceMap = async () => { + try { + // Zähler für externe API-Aufrufe in localStorage speichern + let requestCount = localStorage.getItem("fetchWebServiceMap") || 0; + requestCount = parseInt(requestCount, 10); + + const fetchOptions = { + method: "GET", + headers: { + Connection: "close", // Keep-Alive-Header hinzufügen + }, + }; + + /* +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 + await fetchGisStationsStaticDistrict(mapGisStationsStaticDistrictUrl, setGisStationsStaticDistrict, fetchOptions); + requestCount++; // Zähler erhöhen + localStorage.setItem("fetchWebServiceMap", requestCount); + //console.log(`fetchWebServiceMap in MapComponent wurde ${requestCount} Mal aufgerufen.`); + + // Fetch GIS Stations Status District + await fetchGisStationsStatusDistrict(mapGisStationsStatusDistrictUrl, setGisStationsStatusDistrict, fetchOptions); + requestCount++; // Zähler erhöhen + localStorage.setItem("fetchWebServiceMap", requestCount); + //console.log(`fetchWebServiceMap in MapComponent wurde ${requestCount} Mal aufgerufen.`); + + // Fetch GIS Stations Measurements + await fetchGisStationsMeasurements(mapGisStationsMeasurementsUrl, setGisStationsMeasurements, fetchOptions); + requestCount++; // Zähler erhöhen + localStorage.setItem("fetchWebServiceMap", requestCount); + //console.log(`fetchWebServiceMap in MapComponent wurde ${requestCount} Mal aufgerufen.`); + + // Fetch GIS System Static + await fetchGisSystemStatic(mapGisSystemStaticUrl, setGisSystemStatic, setGisSystemStaticLoaded, fetchOptions); + requestCount++; // Zähler erhöhen + localStorage.setItem("fetchWebServiceMap", requestCount); + //console.log(`fetchWebServiceMap in MapComponent wurde ${requestCount} Mal aufgerufen.`); + } catch (error) { + console.error("Error fetching data:", error); + } + }; + + fetchWebServiceMap(); + }, []); + + //-------------------------------------------------------- + useEffect(() => { + const endpoint = "/api/talas_v5_DB/gisLines/readGisLines"; + //const endpoint = "http://localhost/talas5/ClientData/WebServiceMap.asmx/GisLinesStatus?idMap=10"; + fetch(endpoint) + .then((response) => { + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + return response.json(); + }) + .then((data) => { + const newLinePositions = data.map((item) => { + //console.log("item.idLD", item.idLD); + //console.log("item.idModul", item.idModul); + + if (item.points && Array.isArray(item.points)) { + return { + coordinates: item.points.map((point) => [point.x, point.y]), + idModul: item.idModul, + idLD: item.idLD, + }; + } else { + throw new Error("Points missing or not an array"); + } + }); + setLinePositions(newLinePositions); + }) + .catch((error) => { + console.error("Error fetching data:", error.message); + }); + }, []); + //-------------------------------------------- + + useEffect(() => { + const fetchPoiTypData = async () => { + try { + const response = await fetch("/api/talas_v5_DB/poiTyp/readPoiTyp"); + const data = await response.json(); + + if (data.warning) { + toast.warn(data.warning, { position: "top-center", autoClose: 5000 }); + setPoiTypMap(new Map()); // Leere Map setzen + return; + } + + if (!Array.isArray(data)) { + console.warn(`Unerwartetes Format: ${JSON.stringify(data)}`); + throw new Error("Daten sind kein Array"); + } + + const map = new Map(); + data.forEach((item) => map.set(item.idPoiTyp, item.name)); + setPoiTypMap(map); + } catch (error) { + console.error("Fehler beim Abrufen der poiTyp-Daten in MapComponent.js :", error); + } + }; + + fetchPoiTypData(); + }, []); + + //-------------------------------------------- + useEffect(() => { + const fetchPoiData = async () => { + try { + const response = await fetch("/api/talas_v5_DB/pois/poi-icons"); + if (!response.ok) { + throw new Error("Network response was not ok"); + } + const data = await response.json(); + } catch (error) { + console.error("Fehler beim Abrufen der poiData-2:", error); + } + }; + //-------------------------------------------- + + fetchPoiData(); + }, []); + + useEffect(() => { + if (map) { + const dbLayer = new L.LayerGroup().addTo(map); // Define dbLayer here + + return () => { + dbLayer.remove(); + }; + } + }, [map]); + + useEffect(() => { + if (map && !poiLayerRef.current) { + poiLayerRef.current = new L.LayerGroup().addTo(map); + } + + return () => { + if (map && poiLayerRef.current) { + map.removeLayer(poiLayerRef.current); + poiLayerRef.current = new L.LayerGroup().addTo(map); + } + locations.forEach((location) => {}); + }; + //console.log("trigger in MapComponent.js:", poiReadTrigger); + }, [map, locations, poiReadTrigger]); + + //-------------------------------------------- + useEffect(() => { + if (poiData.length === 0) return; + + setupPOIs(map, locations, poiData, poiTypMap, userRights, poiLayerRef, setSelectedPoi, setLocationDeviceData, setDeviceName, setCurrentPoi, poiLayerVisible, fetchPoiData, toast, setShowPoiUpdateModal, setCurrentPoiData, deviceName); + }, [map, locations, onLocationUpdate, poiReadTrigger, isPoiTypLoaded, userRights, poiLayerVisible, poiData, poiTypMap]); + + //--------------------------------------------- + //console.log("priorityConfig in MapComponent2: ", priorityConfig); + useEffect(() => { + if (gisSystemStaticLoaded && map) { + } + }, [gisSystemStaticLoaded, map, GisSystemStatic, priorityConfig]); + + //useCreateAndSetDevices(1, talasMarkers, GisSystemStatic, priorityConfig); + + useLayerVisibility(map, talasMarkers, mapLayersVisibility, "TALAS", oms); + useLayerVisibility(map, eciMarkers, mapLayersVisibility, "ECI", oms); + useLayerVisibility(map, gsmModemMarkers, mapLayersVisibility, "GSMModem", oms); + useLayerVisibility(map, ciscoRouterMarkers, mapLayersVisibility, "CiscoRouter", oms); + //useLayerVisibility(map, lteModemMarkers, mapLayersVisibility, "LTEModem", oms); + + useLayerVisibility(map, wagoMarkers, mapLayersVisibility, "WAGO", oms); + useLayerVisibility(map, siemensMarkers, mapLayersVisibility, "Siemens", oms); + useLayerVisibility(map, otdrMarkers, mapLayersVisibility, "OTDR", oms); + useLayerVisibility(map, wdmMarkers, mapLayersVisibility, "WDM", oms); + useLayerVisibility(map, gmaMarkers, mapLayersVisibility, "GMA", oms); + useLayerVisibility(map, sonstigeMarkers, mapLayersVisibility, "Sonstige", oms); + useLayerVisibility(map, talasiclMarkers, mapLayersVisibility, "TALASICL", oms); + useLayerVisibility(map, dauzMarkers, mapLayersVisibility, "DAUZ", oms); + useLayerVisibility(map, smsfunkmodemMarkers, mapLayersVisibility, "SMSModem", oms); + useLayerVisibility(map, messstellenMarkers, mapLayersVisibility, "Messstellen", oms); + useLayerVisibility(map, ulafMarkers, mapLayersVisibility, "ULAF", oms); + + useEffect(() => { + if (map) { + var x = 51.41321407879154; + var y = 7.739617925303934; + var zoom = 7; + + if (map && map.flyTo) { + map.flyTo([x, y], zoom); + } else { + console.error("Map object is not ready or does not have flyTo method"); + } + } + }, [map, zoomTrigger]); + //-------------------------------------------- + + useEffect(() => { + if (map) { + // Sammle alle Marker in einer einzigen Liste + const allMarkers = [ + ...talasMarkers, + ...eciMarkers, + ...gsmModemMarkers, + ...ciscoRouterMarkers, + ...wagoMarkers, + ...siemensMarkers, + ...otdrMarkers, + ...wdmMarkers, + ...gmaMarkers, + ...messstellenMarkers, + ...talasiclMarkers, + ...dauzMarkers, + ...smsfunkmodemMarkers, + ...sonstigeMarkers, + ...ulafMarkers, + ]; + // Überprüfe überlappende Marker und füge das "Plus"-Icon hinzu + checkOverlappingMarkers(map, allMarkers, plusRoundIcon); + } + }, [map, talasMarkers, eciMarkers, gsmModemMarkers, ciscoRouterMarkers, wagoMarkers, siemensMarkers, otdrMarkers, wdmMarkers, gmaMarkers, messstellenMarkers, talasiclMarkers, dauzMarkers, smsfunkmodemMarkers, sonstigeMarkers, ulafMarkers]); + + //-------------------------------------------- + useEffect(() => { + const fetchData = async () => { + try { + const response1 = await fetch(webserviceGisLinesStatusUrl); + const data1 = await response1.json(); + //console.log("data1.Statis", data1.Statis); + const reversedData = data1.Statis.reverse(); + setLineStatusData(reversedData); + + const response2 = await fetch("/api/talas_v5_DB/gisLines/readGisLines"); + const data2 = await response2.json(); + + const colorsByModule = {}; + reversedData.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(); + }, []); + //-------------------------------------------- + //Tooltip an mouse position anzeigen für die Linien + useEffect(() => { + if (!map) return; + + // Entferne alte Marker und Polylinien + markers.forEach((marker) => marker.remove()); + polylines.forEach((polyline) => polyline.remove()); + + // Setze neue Marker und Polylinien mit den aktuellen Daten + const { markers: newMarkers, polylines: newPolylines } = setupPolylines( + map, + linePositions, + lineColors, + tooltipContents, + setNewCoords, + tempMarker, + polylineVisible // polylineVisible wird jetzt korrekt übergeben + ); + + newPolylines.forEach((polyline, index) => { + const tooltipContent = tooltipContents[`${linePositions[index].idLD}-${linePositions[index].idModul}`] || "Standard-Tooltip-Inhalt"; + + polyline.bindTooltip(tooltipContent, { + permanent: false, + direction: "auto", + sticky: true, + offset: [20, 0], + pane: "tooltipPane", + }); + + polyline.on("mouseover", (e) => { + const tooltip = polyline.getTooltip(); + if (tooltip) { + const mousePos = e.containerPoint; + const mapSize = map.getSize(); + + let direction = "right"; + + if (mousePos.x > mapSize.x - 100) { + direction = "left"; + } else if (mousePos.x < 100) { + direction = "right"; + } + + if (mousePos.y > mapSize.y - 100) { + direction = "top"; + } else if (mousePos.y < 100) { + direction = "bottom"; + } + + tooltip.options.direction = direction; + polyline.openTooltip(e.latlng); + } + }); + + polyline.on("mouseout", () => { + polyline.closeTooltip(); + }); + }); + + setMarkers(newMarkers); + setPolylines(newPolylines); + }, [map, linePositions, lineColors, tooltipContents, newPoint, newCoords, tempMarker, polylineVisible]); + + //-------------------------------------------- + + useEffect(() => { + if (map) { + restoreMapSettings(map); + } + }, [map]); + + useEffect(() => { + if (map) { + const handleMapMoveEnd = (event) => { + const newCenter = map.getCenter(); + const newZoom = map.getZoom(); + + setCurrentCenter([newCenter.lat, newCenter.lng]); + setCurrentZoom(newZoom); + + localStorage.setItem("mapCenter", JSON.stringify([newCenter.lat, newCenter.lng])); + localStorage.setItem("mapZoom", newZoom); + }; + + map.on("moveend", handleMapMoveEnd); + map.on("zoomend", handleMapMoveEnd); + + return () => { + map.off("moveend", handleMapMoveEnd); + map.off("zoomend", handleMapMoveEnd); + }; + } + }, [map]); + //-------------------------------------------- + + useEffect(() => { + if (selectedArea && map) { + const station = GisStationsStaticDistrict.find((s) => s.Area_Name === selectedArea); + if (station) { + map.flyTo([station.X, station.Y], 14); + } + } + }, [selectedArea, map, GisStationsStaticDistrict]); + + useEffect(() => { + if (zoomTrigger && map) { + map.flyTo([51.41321407879154, 7.739617925303934], 7); + } + }, [zoomTrigger, map]); + + useEffect(() => { + if (map && poiLayerRef.current && isPoiTypLoaded && !menuItemAdded && isRightsLoaded) { + addItemsToMapContextMenu(map, menuItemAdded, setMenuItemAdded, hasRights, setShowPopup, setPopupCoordinates); + } + }, [map, poiLayerRef, isPoiTypLoaded, menuItemAdded, hasRights, isRightsLoaded]); + //-------------------------------------------- + // rote Marker ganz oben wenn überlappen sind + useEffect(() => { + const fetchPriorityConfig = async () => { + try { + const res = await fetch("/api/talas_v5_DB/priorityConfig"); + if (!res.ok) { + throw new Error(`HTTP error! status: ${res.status}`); + } + const data = await res.json(); + setPriorityConfig(data); + } catch (error) { + console.error("Failed to load priority configuration:", error); + } + }; + + fetchPriorityConfig(); + }, []); + //-------------------------------------------- + useEffect(() => { + if (mapRef.current && !map) { + initializeMap(mapRef, setMap, setOms, setMenuItemAdded, addItemsToMapContextMenu, hasRights, setPolylineEventsDisabled); + } + }, [mapRef, map, hasRights, setPolylineEventsDisabled]); + + useEffect(() => { + if (map) { + if (polylineEventsDisabled) { + disablePolylineEvents(window.polylines); + } else { + enablePolylineEvents(window.polylines, window.lineColors); + } + } + }, [map, polylineEventsDisabled]); + useEffect(() => { + if (map) { + console.log("6- Karteninstanz (map) wurde jetzt erfolgreich initialisiert"); + + // Setze die Karteninstanz in den Recoil-Atom + } + }, [map]); + //-------------------------------------------- + useEffect(() => { + const initializeContextMenu = () => { + if (map) { + map.whenReady(() => { + setTimeout(() => { + if (map.contextmenu) { + //console.log("Contextmenu ist vorhanden"); + } else { + console.warn("Contextmenu ist nicht verfügbar."); + } + }, 500); + }); + } + }; + + initializeContextMenu(); + }, [map]); + //-------------------------------------------- + //Tooltip Werte aktualisieren + 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); + + // 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]); + + //--------------------------------- + + const gmaLayerRef = useRef(null); + const talasLayerRef = useRef(null); + const eciMarkersLayerRef = useRef(null); + const gsmModemMarkersLayerRef = useRef(null); + const ciscoRouterMarkersLayerRef = useRef(null); + const wagoMarkersLayerRef = useRef(null); + const siemensMarkersLayerRef = useRef(null); + const otdrMarkersLayerRef = useRef(null); + const wdmMarkersLayerRef = useRef(null); + const messstellenMarkersLayerRef = useRef(null); + const talasiclMarkersLayerRef = useRef(null); + const dauzMarkersLayerRef = useRef(null); + const smsfunkmodemMarkersLayerRef = useRef(null); + const ulafMarkersLayerRef = useRef(null); + const sonstigeMarkersLayerRef = useRef(null); + useEffect(() => { + if (!gisSystemStaticLoaded || !map) return; // Sicherstellen, dass die Karte und Daten geladen sind + + const layerGroups = [ + { ref: gmaLayerRef, id: 11, setState: setGmaMarkers }, + { ref: talasLayerRef, id: 1, setState: setTalasMarkers }, + { ref: eciMarkersLayerRef, id: 2, setState: setEciMarkers }, + { ref: gsmModemMarkersLayerRef, id: 5, setState: setGsmModemMarkers }, + { ref: ciscoRouterMarkersLayerRef, id: 6, setState: setCiscoRouterMarkers }, + { ref: wagoMarkersLayerRef, id: 7, setState: setWagoMarkers }, + { ref: siemensMarkersLayerRef, id: 8, setState: setSiemensMarkers }, + { ref: otdrMarkersLayerRef, id: 9, setState: setOtdrMarkers }, + { ref: wdmMarkersLayerRef, id: 10, setState: setWdmMarkers }, + { ref: messstellenMarkersLayerRef, id: 13, setState: setMessstellenMarkers }, + { ref: talasiclMarkersLayerRef, id: 100, setState: setTalasiclMarkers }, + { ref: dauzMarkersLayerRef, id: 110, setState: setDauzMarkers }, + { ref: smsfunkmodemMarkersLayerRef, id: 111, setState: setSmsfunkmodemMarkers }, + { ref: ulafMarkersLayerRef, id: 0, setState: setUlafMarkers }, + { ref: sonstigeMarkersLayerRef, id: 200, setState: setSonstigeMarkers }, + ]; + + // Initialisiere LayerGroups nur einmal + layerGroups.forEach(({ ref }) => { + if (!ref.current) { + ref.current = new L.LayerGroup().addTo(map); + } + }); + + const updateMarkers = ({ ref, id, setState }) => { + if (ref.current) { + ref.current.clearLayers(); // Entferne alte Marker + } + + // Erstelle und füge neue Marker hinzu + createAndSetDevices( + id, + (newMarkers) => { + setState(newMarkers); // Zustand aktualisieren + newMarkers.forEach((marker) => ref.current.addLayer(marker)); // Marker zur LayerGroup hinzufügen + + // Überprüfe auf überlappende Marker und füge das Plus-Icon hinzu + checkOverlappingMarkers(map, newMarkers, plusRoundIcon); + }, + GisSystemStatic, + priorityConfig + ); + }; + + // Aktualisiere alle Marker-Gruppen + const updateAllMarkers = () => { + layerGroups.forEach(updateMarkers); + }; + + // Initiales Update + updateAllMarkers(); + + // Setze ein Intervall für regelmäßige Updates + const intervalId = setInterval(() => { + updateAllMarkers(); + }, 20000); // 20 Sekunden + + // Aufräumen bei Komponentenentladung + return () => { + clearInterval(intervalId); // Entferne Intervall + + // LayerGroups leeren + layerGroups.forEach(({ ref }) => { + if (ref.current) { + ref.current.clearLayers(); + } + }); + }; + }, [gisSystemStaticLoaded, map, GisSystemStatic, priorityConfig]); + + //--------------------------------------- + + //---------------------------------- + + //--------------------------------------- + + return ( + <> + +
{showPoiUpdateModal && setShowPoiUpdateModal(false)} poiData={currentPoiData} onSubmit={() => {}} latlng={popupCoordinates} />}
+ +
+ {showPopup && ( +
+
e.stopPropagation()}> + + +
+
+ )} +
+ + + +
+ +
+
+
+ TALAS.Map +
+ Version {MAP_VERSION} +
+
+ +
+
+
+ + + ); +}; + +export default MapComponent; diff --git a/components/MapComponent.js b/components/MapComponent.js index 0ad5c6c47..22511ce19 100644 --- a/components/MapComponent.js +++ b/components/MapComponent.js @@ -335,6 +335,10 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => { try { const response = await fetch("/api/talas_v5_DB/poiTyp/readPoiTyp"); const data = await response.json(); + if (!Array.isArray(data)) { + console.warn(`Unerwartetes Format: ${JSON.stringify(data)}`); + throw new Error("Daten sind kein Array"); + } const map = new Map(); data.forEach((item) => map.set(item.idPoiTyp, item.name)); setPoiTypMap(map); @@ -519,7 +523,7 @@ const MapComponent = ({ locations, onLocationUpdate, lineCoordinates }) => { console.warn("WARNUNG: gis_lines ist kein Array, wird ignoriert."); return; } - const matchingLine = data2.find((item) => item.idLD === statis.IdLD && item.idModul === statis.Modul); + const matchingLine = data2.find((item) => item.idLD === stat.IdLD && item.idModul === stat.Modul); if (matchingLine) { colorsByModule[matchingLine.idModul] = stat.PrioColor; diff --git a/components/pois/AddPoiModalWindow.js b/components/pois/AddPoiModalWindow.js index fe4c1d6cd..3b257c5a4 100644 --- a/components/pois/AddPoiModalWindow.js +++ b/components/pois/AddPoiModalWindow.js @@ -53,7 +53,7 @@ const AddPoiModalWindow = ({ onClose, map, latlng }) => { // Filtere die Geräte basierend auf den sichtbaren Systemen filterDevices(locationDeviceData); } catch (error) { - console.error("Fehler beim Abrufen der Daten:", error); + console.error("Fehler beim Abrufen der Daten in AddPoiModalWindow.js :", error); } }; diff --git a/hooks/layers/useGmaMarkersLayer - Kopie.js b/hooks/layers/useGmaMarkersLayer - Kopie.js deleted file mode 100644 index 46f815b88..000000000 --- a/hooks/layers/useGmaMarkersLayer - Kopie.js +++ /dev/null @@ -1,79 +0,0 @@ -import { useEffect } from "react"; -import { addContextMenuToMarker } from "../../utils/addContextMenuToMarker"; - -const useMarkersLayer = (map, markers, GisStationsMeasurements, GMA, oms) => { - useEffect(() => { - if (!map) return; - - // Entferne alte Marker - 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( - ` -
-
- ${area_name} -
-
- LT : ${lt} °C -
-
- FBT : ${fbt} °C -
-
- GT : ${gt} -
-
- RLF : ${rlf} % -
-
- `, - { - permanent: true, - direction: "auto", - offset: [60, 0], - } - ); - - // Ereignisse für das Öffnen und Schließen des Tooltips - marker.on("mouseover", function () { - this.openPopup(); - }); - marker.on("mouseout", function () { - this.closePopup(); - }); - - // 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 useMarkersLayer; diff --git a/hooks/useLineData-old.js b/hooks/useLineData-old.js new file mode 100644 index 000000000..ae72adb76 --- /dev/null +++ b/hooks/useLineData-old.js @@ -0,0 +1,132 @@ +// hooks/useLineData.js //fix v1.0.8.1 +import { useEffect, useState } from "react"; +import { toast } from "react-toastify"; +import { SERVER_URL } from "../config/urls"; +import { useDispatch, useSelector } from "react-redux"; + +const useLineData = (webserviceGisLinesStatusUrl, setLineStatusData) => { + const dispatch = useDispatch(); + const messages = useSelector((state) => state.messages); + const [lineColors, setLineColors] = useState({}); + const [tooltipContents, setTooltipContents] = useState({}); + + useEffect(() => { + let isCancelled = false; + + const fetchData = async () => { + try { + const response1 = await fetch(webserviceGisLinesStatusUrl); + if (!response1.ok) throw new Error("Fehler bei GIS-Linienstatus"); + + const data1 = await response1.json(); + const response2 = await fetch(`${SERVER_URL}:3000/api/talas_v5_DB/gisLines/readGisLines`); + if (!response2.ok) throw new Error("Fehler beim Abrufen der GIS-Linien"); + + const data2 = await response2.json(); + const response3 = await fetch(`${SERVER_URL}:3000/api/talas_v5_DB/device/getAllStationsNames`); + if (!response3.ok) throw new Error("Fehler beim Abrufen der Stationsnamen"); + + const namesData = await response3.json(); + + if (!isCancelled) { + if (!data1.Statis || data1.Statis.length === 0) { + toast.warn("Keine Linienstatus-Daten verfügbar!", { position: "top-center", autoClose: 5000 }); + setLineStatusData([]); + return; + } + + const colorsByModule = {}; + const newTooltipContents = {}; + const valueMap = {}; + + const sortedStatis = [...data1.Statis].sort((a, b) => a.Level - b.Level); + + sortedStatis.forEach((statis) => { + const key = `${statis.IdLD}-${statis.Modul}`; + + if (!valueMap[key]) { + valueMap[key] = { + messages: [], + messwert: undefined, + schleifenwert: undefined, + }; + } + + if (statis.DpName.endsWith("_Messwert") && statis.Value !== "True" && !valueMap[key].messwert) { + valueMap[key].messwert = statis.Value; + } + if (statis.DpName.endsWith("_Schleifenwert") && !valueMap[key].schleifenwert) { + valueMap[key].schleifenwert = statis.Value; + } + + if (statis.Message && statis.Message !== "?") { + valueMap[key].messages.push({ + message: statis.Message, + prioColor: statis.PrioColor && statis.PrioColor !== "#ffffff" ? statis.PrioColor : "green", + }); + } + }); + + sortedStatis.forEach((statis) => { + const key = `${statis.IdLD}-${statis.Modul}`; + const matchingLine = data2.find((item) => item.idLD === statis.IdLD && item.idModul === statis.Modul); + + if (matchingLine) { + const values = valueMap[key]; + + const messageDisplay = values.messages.map((msg) => `${msg.message}
`).join(""); + + colorsByModule[key] = values.messages.length > 0 ? values.messages[0].prioColor : "green"; + + newTooltipContents[key] = ` +
+ ${statis.ModulName || "Unknown"} +
+ ${statis.ModulTyp || "N/A"} +
+ Slot: ${statis.Modul || "N/A"} +
+ Station: ${namesData[matchingLine.idLD] || "N/A"} +
+
+ ${messageDisplay} +
+
+ ${values.messwert ? `Messwert: ${values.messwert}
` : ""} + ${values.schleifenwert ? `Schleifenwert: ${values.schleifenwert}` : ""} +
+ `; + } + }); + + setLineColors(colorsByModule); + setTooltipContents(newTooltipContents); + setLineStatusData(data1.Statis); + } + } catch (error) { + //console.error("Fehler beim Abrufen der Daten in useLineData.js:", error); + // toast.error("Fehler beim Abrufen der Linienstatus-Daten!", { position: "top-center", autoClose: 5000 }); + console.warn("Fehler beim Abrufen der Linienstatus-Daten in useLineData.js "); + } + }; + + const scheduleNextFetch = () => { + if (!isCancelled) { + fetchData(); + setTimeout(scheduleNextFetch, 30000); + } + }; + + fetchData(); + scheduleNextFetch(); + + return () => { + isCancelled = true; + localStorage.removeItem("contextMenuExpired"); + }; + }, [webserviceGisLinesStatusUrl, setLineStatusData]); + + return { lineColors, tooltipContents }; +}; + +export default useLineData; diff --git a/hooks/usePoiTypData.js b/hooks/usePoiTypData.js index 7e1ce2d2e..2b4850587 100644 --- a/hooks/usePoiTypData.js +++ b/hooks/usePoiTypData.js @@ -1,19 +1,47 @@ // hooks/usePoiTypData.js -import { useState, useEffect } from "react"; +import { useState, useEffect, useRef } from "react"; +import { toast } from "react-toastify"; // Toast für Warnungen importieren const usePoiTypData = (url) => { const [poiTypData, setPoiTypData] = useState([]); const [isPoiTypLoaded, setIsPoiTypLoaded] = useState(false); + const retryCountRef = useRef(0); + const maxRetries = 2; useEffect(() => { const fetchPoiTypData = async () => { try { const response = await fetch(url); const data = await response.json(); + + if (!Array.isArray(data)) { + console.warn(`Unerwartetes Format: ${JSON.stringify(data)}`); + + if (data.warning) { + toast.warn(data.warning, { position: "top-center", autoClose: 5000 }); + setPoiTypData([]); // Leeres Array setzen + setIsPoiTypLoaded(true); + return; + } + + throw new Error("Daten sind kein Array"); + } + + // Erfolgreich geladen, also Reset des Retry-Zählers setPoiTypData(data); setIsPoiTypLoaded(true); + retryCountRef.current = 0; } catch (error) { - console.error("Fehler beim Abrufen der poiTyp-Daten:", error); + console.error("Fehler beim Abrufen der poiTyp-Daten in usePoiTypData.js :", error); + + if (retryCountRef.current < maxRetries) { + retryCountRef.current++; + console.log(`Neuer Versuch (${retryCountRef.current}/${maxRetries}) in 5 Sekunden...`); + setTimeout(fetchPoiTypData, 5000); + } else { + console.error("Maximale Anzahl an Fehlversuchen erreicht. Stoppe weitere Abrufe."); + setIsPoiTypLoaded(true); + } } }; diff --git a/pages/api - Kopie/[...path].js b/pages/api - Kopie/[...path].js deleted file mode 100644 index b270661b1..000000000 --- a/pages/api - Kopie/[...path].js +++ /dev/null @@ -1,20 +0,0 @@ -// pages/api/[...path].js -import { createProxyMiddleware } from "http-proxy-middleware"; -//import { SERVER_URL } from "../config/urls.js"; -//console.log("SERVER_URL:", SERVER_URL); // Debug-Ausgabe - -export default createProxyMiddleware({ - //target: "http://192.168.10.58:3001", - // Stationen bekommen - //target: "http://10.10.0.13", // Ziel-URL des Proxys // API Aufruf zum mapGisStationsStaticDistrictUrl, mapGisStationsStatusDistrictUrl, mapGisStationsMeasurementsUrl, mapGisSystemStaticUrl und mapDataIconUrl - target: `${process.env.NEXT_PUBLIC_SERVER_URL}`, // - //target: urls.PROXY_TARGET, - //target: "http://localhost:3000", // Ziel-URL des Proxys - //target: "http://192.168.10.187:3000", // Ziel-URL des Proxys - //target: "http://192.168.10.14", - changeOrigin: true, - pathRewrite: { - "^/api": "/", // Optional: Entfernt /api aus dem Pfad, wenn das Backend dies nicht erfordert - }, - logLevel: "debug", // Setzt das Logging-Level auf "debug" für detaillierte Ausgaben -}); diff --git a/pages/api - Kopie/get-talasIP.js b/pages/api - Kopie/get-talasIP.js deleted file mode 100644 index 1216fbbb7..000000000 --- a/pages/api - Kopie/get-talasIP.js +++ /dev/null @@ -1,20 +0,0 @@ -// pages/api/get-talasIP.js - -export default function handler(req, res) { - // Der x-forwarded-for Header könnte mehrere IP-Adressen enthalten, getrennt durch Kommas - let clientIp = - req.headers["x-forwarded-for"]?.split(",").map((ip) => ip.trim())[0] || - req.socket.remoteAddress; - - // Entfernen möglicher IPv6 "mapped" IPv4 Adressen - if (clientIp?.includes("::ffff:")) { - clientIp = clientIp.split("::ffff:")[1]; - } - - // Nur IPv4 Adressen weitergeben, IPv6 Adressen ausschließen - if (clientIp && clientIp.includes(":")) { - clientIp = ""; // Dies setzt die IP auf leer, wenn es sich um eine IPv6-Adresse handelt - } - - res.status(200).json({ ip: clientIp }); -} diff --git a/pages/api - Kopie/gis-proxy.js b/pages/api - Kopie/gis-proxy.js deleted file mode 100644 index b76883298..000000000 --- a/pages/api - Kopie/gis-proxy.js +++ /dev/null @@ -1,34 +0,0 @@ -// /pages/api/gis-proxy.js -// Importieren der erforderlichen Module -import httpProxy from "http-proxy"; -import Cookies from "cookies"; - -// Erstellen eines Proxy-Servers -const proxy = httpProxy.createProxyServer(); - -export default (req, res) => { - return new Promise((resolve) => { - // CORS-Headers einstellen - res.setHeader("Access-Control-Allow-Credentials", true); - res.setHeader("Access-Control-Allow-Origin", "*"); - - // Cookies initialisieren - const cookies = new Cookies(req, res); - const targetUrl = `${process.env.NEXT_PUBLIC_SERVER_URL}/talas5/ClientData/WebserviceMap.asmx/GisSystemStatic`; - - // Proxy-Konfiguration und Event-Listener - req.on("data", () => {}); - req.on("end", () => { - proxy.web(req, res, { target: targetUrl, changeOrigin: true, selfHandleResponse: false }, (e) => { - if (e) { - console.error(e); - res.status(500).json({ error: "Proxy-Fehler", e }); - } - resolve(); - }); - }); - - // Weiterleitung der Headers - req.headers.cookie = cookies.get("cookie-name") || ""; - }); -}; diff --git a/pages/api - Kopie/linesColorApi.js b/pages/api - Kopie/linesColorApi.js deleted file mode 100644 index 57ee59262..000000000 --- a/pages/api - Kopie/linesColorApi.js +++ /dev/null @@ -1,64 +0,0 @@ -// /pages/api/linesColorApi.js -// http://10.10.0.13/talas5/ClientData/WebServiceMap.asmx/GisStationsStatusDistrict -//In DB gis_lines idLD und idModul anpassen entsprechend - -// /pages/api/linesColorApi.js -import NextCors from "nextjs-cors"; - -export default async function handler(req, res) { - // Run the cors middleware - await NextCors(req, res, { - // Options - methods: ["GET", "HEAD", "PUT", "PATCH", "POST", "DELETE"], - origin: "*", // Erlauben Sie alle Ursprünge, oder geben Sie spezifische Ursprünge an - optionsSuccessStatus: 200, // Legacy-Browser-Unterstützung für 204 - }); - - const response = { - Name: "Liste aller Statis der Linien", - Zeitstempel: new Date().toISOString(), // Aktuellen Zeitstempel hinzufügen - IdMap: "10", - Statis: [ - /* { - IdLD: 50922, - Modul: 1, - DpName: "KUE01_Ausfall", - ModulName: "42 Wippershain Sender", - // ModulTyp: "nicht vorhanden", - ModulTyp: "KÜ705-FO", - Message: "KUEG 01: 42 Wippershain Sender Messwerkausfall kommend", - Level: 4, - PrioColor: "#FFFF00", - PrioName: "system", - Value: "10 MOhm", - }, - { - IdLD: 25440, - Modul: 3, - DpName: "KUE03_Ausfall", - ModulName: "42 Solz Sender", - //ModulTyp: "nicht vorhanden", - ModulTyp: "KÜSS V2", - Message: "KUEG 03: 42 Solz Sender Messwerkausfall kommend", - Level: 4, - PrioColor: "#FF0000", - PrioName: "system", - Value: "10 MOhm", - }, - { - IdLD: 25440, - Modul: 4, - DpName: "KUE04_Ausfall", - ModulName: "42/13 Bad Hersfeld Gaswerk", - ModulTyp: "Kue705-FO", - Message: "KUEG 04: 42/13 Bad Hersfeld Gaswerk Messwerkausfall kommend", - Level: 4, - PrioColor: "#FF00FF", - PrioName: "system", - Value: "10 MOhm", - }, */ - ], - }; - - res.status(200).json(response); -} diff --git a/pages/api - Kopie/rights.js b/pages/api - Kopie/rights.js deleted file mode 100644 index 507228147..000000000 --- a/pages/api - Kopie/rights.js +++ /dev/null @@ -1,29 +0,0 @@ -// pages/api/rights.js - -export default function handler(req, res) { - const { idMap, idUser } = req.query; - - // Beispielhafte Rechte, die je nach idMap und idUser variieren können - const rights = { - '10': [ - { IdRight: 1, Name: "Zugriff auf Dashboard" }, - { IdRight: 56, Name: "Erweiterte Berechtigungen" } - ], - '2': [ - { IdRight: 2, Name: "Zugriff auf Einstellungen" } - ], - '1': [ - { IdRight: 10, Name: "Admin-Zugriff" }, - { IdRight: 11, Name: "Zugriff auf alle Daten" } - ] - }; - - // Prüfung, ob eine gültige idMap und idUser vorhanden sind - if (rights[idMap] && idUser === '484') { - // Rückgabe der spezifischen Rechte basierend auf der idMap und idUser - res.status(200).json({ Rights: rights[idMap] }); - } else { - // Rückgabe leerer Rechte für ungültige idMap oder andere Benutzer - res.status(200).json({ Rights: [] }); - } -} diff --git a/pages/api - Kopie/talas5/area.js b/pages/api - Kopie/talas5/area.js deleted file mode 100644 index 9205aa5ca..000000000 --- a/pages/api - Kopie/talas5/area.js +++ /dev/null @@ -1,40 +0,0 @@ -// pages/api/talas_v5/area.js -// Lesen von talas_v5 MySQL-Datenbank -> area Tabelle enthält DAUZ Geräte -// Wenn gebraucht wird, dann nutzen ansonsten löschen - -import mysql from "mysql"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}; -//console.log("my dbconfig: ", dbConfig); -export default function handler(req, res) { - const connection = mysql.createConnection(dbConfig); - - connection.connect((err) => { - if (err) { - console.error("Fehler beim Verbinden:", err.stack); - res.status(500).json({ error: "Verbindungsfehler zur Datenbank" }); - return; - } - - //console.log("Verbunden als ID", connection.threadId); - //Fehler weil, existiertdie Tabelle auf localhost:3000 nicht - connection.query("SELECT ..., ..., ..., ... FROM ... WHERE ... = ...", (error, results) => { - if (error) { - console.error("Fehler beim Abrufen der API", error); - res.status(500).json({ error: "Fehler bei der Abfrage" }); - return; - } - - // Wichtig: Senden Sie die Antwort zurück - res.status(200).json(results); - - connection.end(); - }); - }); -} diff --git a/pages/api - Kopie/talas5/location_device.js b/pages/api - Kopie/talas5/location_device.js deleted file mode 100644 index 9292690e0..000000000 --- a/pages/api - Kopie/talas5/location_device.js +++ /dev/null @@ -1,42 +0,0 @@ -// Importieren des mysql2 Pakets -import mysql from "mysql2"; - -// Erstellen eines Pools von Datenbankverbindungen -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); - -// Ein Hilfsfunktion, um Anfragen zu vereinfachen -function queryDatabase(query, params) { - return new Promise((resolve, reject) => { - pool.query(query, params, (error, results) => { - if (error) { - return reject(error); - } - resolve(results); - }); - }); -} - -// API-Handler -export default async function handler(req, res) { - try { - // Dein SQL-Query und die Parameter - const sql = "SELECT idLD, iddevice, name FROM location_device WHERE iddevice = ?"; - const params = [160]; // Beispielparameter - - // Ausführen der Datenbankabfrage - const results = await queryDatabase(sql, params); - res.status(200).json(results); - } catch (error) { - console.error("Fehler beim Abrufen der API", error); - res.status(500).json({ error: "Fehler bei der Abfrage" }); - } -} diff --git a/pages/api - Kopie/talas5/webserviceMap/GisStationsMeasurements.js b/pages/api - Kopie/talas5/webserviceMap/GisStationsMeasurements.js deleted file mode 100644 index 5aba69fc6..000000000 --- a/pages/api - Kopie/talas5/webserviceMap/GisStationsMeasurements.js +++ /dev/null @@ -1,116 +0,0 @@ -// /pages/api/talas5/webserviceMap/GisStationsMeasurements.js -const GisStationsMeasurements = { - "Name": "Liste aller Messungen der Geraete", - "Zeitstempel": "2024-05-31T15:25:32.5047629+02:00", - "IdMap": "10", - "Statis": [ - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 3, - "Na": "FBT", - "Val": "20.5", - "Unit": "°C", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - }, - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 10, - "Na": "GT", - "Val": "nicht ermittelbar", - "Unit": "°C", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - }, - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 2, - "Na": "LT", - "Val": "Datenlücke", - "Unit": "°C", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - }, - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 6, - "Na": "RLF", - "Val": "100.0", - "Unit": "%", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - }, - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 11, - "Na": "TPT", - "Val": "8.3", - "Unit": "°C", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - }, - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 12, - "Na": "TT1", - "Val": "---", - "Unit": "°C", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - }, - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 16, - "Na": "WFD", - "Val": "0.12", - "Unit": "mm", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - }, - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 8, - "Na": "WGM", - "Val": "---", - "Unit": "m/s", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - }, - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 9, - "Na": "WGS", - "Val": "---", - "Unit": "m/s", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - } - ] - } - - // Export an async function handler for the API route. - export default async function handler(req, res) { - // Initialize an empty params object to store query parameters. - const params = { - idMap: req.query.idMap, - - }; - - // Check if the requested ID map and user match certain conditions. - if (params.idMap === '10') { - // If the conditions are met, return the GisStationsMeasurements object with a 200 status code. - res.status(200).json(GisStationsMeasurements); - } else { - // If not, return a 404 error with the message "Not Found". - res.status(404).send('Not Found'); - } - }; \ No newline at end of file diff --git a/pages/api - Kopie/talas5/webserviceMap/GisStationsStaticDistrict.js b/pages/api - Kopie/talas5/webserviceMap/GisStationsStaticDistrict.js deleted file mode 100644 index bf302f3d7..000000000 --- a/pages/api - Kopie/talas5/webserviceMap/GisStationsStaticDistrict.js +++ /dev/null @@ -1,281 +0,0 @@ -// /pages/api/talas5/webserviceMap/GisStationsStaticDistrict.js -const GisStationsStaticDistrict = { - "Name": "Liste aller Geraete einer bestimmten Karte", - "Zeitstempel": "2024-05-31T15:26:56.9235766+02:00", - "IdMap": "10", - "Points": [ - { - "LD_Name": "CPL Bentheim", - "IdLD": 50017, - "Device": "CPL V3.5 mit 16 Kü", - "Link": "cpl.aspx?ver=35&kue=16&id=50017", - "Location_Name": "Technikraum", - "Location_Short": "BEHE", - "IdLocation": 17448, - "Area_Name": "Bad-Bentheim", - "Area_Short": "BEHE--00", - "IdArea": 16418, - "X": 51.5728, - "Y": 9.00056, - "Icon": 20, - "System": 1, - "Active": 0 - }, - { - "LD_Name": "Drucker", - "IdLD": 50084, - "Device": "Basisgerät", - "Link": "basis.aspx?ver=1&id=50084", - "Location_Name": "Technikraum", - "Location_Short": "SLUE", - "IdLocation": 17776, - "Area_Name": "Schlüchtern II", - "Area_Short": "SLUE--00", - "IdArea": 14688, - "X": 53.2455, - "Y": 8.1614, - "Icon": 14, - "System": 200, - "Active": 0 - }, - { - "LD_Name": "Türkontakt", - "IdLD": 50666, - "Device": "ECI", - "Link": "eci.aspx?ver=1&id=50666", - "Location_Name": "Technikraum", - "Location_Short": "SLUE", - "IdLocation": 17776, - "Area_Name": "Schlüchtern II", - "Area_Short": "SLUE--00", - "IdArea": 14688, - "X": 53.2455, - "Y": 8.1614, - "Icon": 17, - "System": 2, - "Active": 0 - }, - { - "LD_Name": "Triptis", - "IdLD": 50888, - "Device": "CPL 200", - "Link": "cpl.aspx?ver=30&kue=16&id=50888", - "Location_Name": "Technikraum", - "Location_Short": "SLUE", - "IdLocation": 17776, - "Area_Name": "Schlüchtern II", - "Area_Short": "SLUE--00", - "IdArea": 14688, - "X": 53.2455, - "Y": 8.1614, - "Icon": 20, - "System": 1, - "Active": 0 - }, - { - "LD_Name": "Rodaborn I", - "IdLD": 50889, - "Device": "cpl.mio V>6", - "Link": "cplmio.aspx?ver=1&id=50889", - "Location_Name": "Technikraum", - "Location_Short": "SLUE", - "IdLocation": 17776, - "Area_Name": "Schlüchtern II", - "Area_Short": "SLUE--00", - "IdArea": 14688, - "X": 53.2455, - "Y": 8.1614, - "Icon": 20, - "System": 1, - "Active": 0 - }, - { - "LD_Name": "Rodaborn II", - "IdLD": 50900, - "Device": "cpl.mio V>6", - "Link": "cplmio.aspx?ver=1&id=50900", - "Location_Name": "Technikraum", - "Location_Short": "SLUE", - "IdLocation": 17776, - "Area_Name": "Schlüchtern II", - "Area_Short": "SLUE--00", - "IdArea": 14688, - "X": 53.2455, - "Y": 8.1614, - "Icon": 20, - "System": 1, - "Active": 0 - }, - { - "LD_Name": "Hermsdorf", - "IdLD": 50901, - "Device": "CPL V3.5 mit 24 Kü", - "Link": "cpl.aspx?ver=35&kue=24&id=50901", - "Location_Name": "Technikraum", - "Location_Short": "SLUE", - "IdLocation": 17776, - "Area_Name": "Schlüchtern II", - "Area_Short": "SLUE--00", - "IdArea": 14688, - "X": 53.2455, - "Y": 8.1614, - "Icon": 20, - "System": 1, - "Active": 1 - }, - { - "LD_Name": "GMA Littwin (TEST)", - "IdLD": 50004, - "Device": "Glättemeldeanlage", - "Link": "gma.aspx?ver=1&id=50004", - "Location_Name": "RG Relaisraum", - "Location_Short": "REZR", - "IdLocation": 18624, - "Area_Name": "Renzenhof (RG)", - "Area_Short": "REZHRG00", - "IdArea": 16570, - "X": 53.246036, - "Y": 8.163293, - "Icon": 1, - "System": 11, - "Active": 0 - }, - { - "LD_Name": "NRS Testserver", - "IdLD": 50005, - "Device": "Notruf Server", - "Link": "nrs_server.aspx?ver=1&id=50005", - "Location_Name": "(EV Ammersricht BZR REL)", - "Location_Short": "AMME", - "IdLocation": 21118, - "Area_Name": "Ammersricht BZR (FGN)", - "Area_Short": "AMMER--00", - "IdArea": 15958, - "X": 52.52726, - "Y": 12.165488, - "Icon": 19, - "System": 8, - "Active": 0 - }, - { - "LD_Name": "Gateway 2", - "IdLD": 50007, - "Device": "Notruf Server", - "Link": "nrs_server.aspx?ver=1&id=50007", - "Location_Name": "(EV Ammersricht BZR REL)", - "Location_Short": "AMME", - "IdLocation": 21118, - "Area_Name": "Ammersricht BZR (FGN)", - "Area_Short": "AMMER--00", - "IdArea": 15958, - "X": 52.52726, - "Y": 12.165488, - "Icon": 19, - "System": 8, - "Active": 0 - }, - { - "LD_Name": "Basisgerät mit SNMP MVP", - "IdLD": 50669, - "Device": "Basisgerät + SNMP", - "Link": "basisSNMP.aspx?&ver=1&id=50669", - "Location_Name": "Mylinghauserstraße Engelbert", - "Location_Short": "G-GEVELSBE-1", - "IdLocation": 24012, - "Area_Name": "Gevelsberg", - "Area_Short": "GMA-GEVELSBE", - "IdArea": 20919, - "X": 51.316799, - "Y": 7.33281, - "Icon": 14, - "System": 200, - "Active": 1 - }, - { - "LD_Name": "Server 3", - "IdLD": 50009, - "Device": "Notruf Server", - "Link": "nrs_server.aspx?ver=1&id=50009", - "Location_Name": "Militärringstraße Militärringstraße", - "Location_Short": "G-KÖLN-1", - "IdLocation": 24015, - "Area_Name": "Köln", - "Area_Short": "GMA-KÖLN", - "IdArea": 20921, - "X": 50.898399, - "Y": 6.92278, - "Icon": 19, - "System": 8, - "Active": 0 - }, - { - "LD_Name": "ICL Test 5", - "IdLD": 50054, - "Device": "ICL", - "Link": "icl.aspx?ver=1&id=50054", - "Location_Name": "Recheder Mühlenweg Dortmund-Ems-Kanal", - "Location_Short": "G-OLFEN-SE-1", - "IdLocation": 24022, - "Area_Name": "Olfen-Selm", - "Area_Short": "GMA-OLFEN-SE", - "IdArea": 20926, - "X": 51.702202, - "Y": 7.40822, - "Icon": 23, - "System": 100, - "Active": 0 - }, - { - "LD_Name": "ICL Test 3", - "IdLD": 50052, - "Device": "ICL", - "Link": "icl.aspx?ver=1&id=50052", - "Location_Name": "Weidenstraße Hestenberg", - "Location_Short": "G-PLETTENB-1", - "IdLocation": 24024, - "Area_Name": "Plettenberg", - "Area_Short": "GMA-PLETTENB", - "IdArea": 20928, - "X": 51.224098, - "Y": 7.86969, - "Icon": 23, - "System": 100, - "Active": 0 - }, - { - "LD_Name": "Test Februar Kai", - "IdLD": 50912, - "Device": "Dauerzählstelle DZ", - "Link": "dauz.aspx?ver=1&id=50912", - "Location_Name": "In der Hoffnung Kiesberg - BG Ost", - "Location_Short": "G-WUPPERTA-4", - "IdLocation": 24039, - "Area_Name": "Wuppertal", - "Area_Short": "GMA-WUPPERTA", - "IdArea": 20937, - "X": 51.238899, - "Y": 7.12715, - "Icon": 14, - "System": 110, - "Active": 1 - } - ] - } - - // Export an async function handler for the API route. - export default async function handler(req, res) { - // Initialize an empty params object to store query parameters. - const params = { - idMap: req.query.idMap, - idUser: req.query.idUser - }; - - // Check if the requested ID map and user match certain conditions. - if (params.idMap === '10' && params.idUser === '484') { - // If the conditions are met, return the GisStationsStaticDistrict object with a 200 status code. - res.status(200).json(GisStationsStaticDistrict); - } else { - // If not, return a 404 error with the message "Not Found". - res.status(404).send('Not Found'); - } - }; \ No newline at end of file diff --git a/pages/api - Kopie/talas5/webserviceMap/GisStationsStatusDistrict.js b/pages/api - Kopie/talas5/webserviceMap/GisStationsStatusDistrict.js deleted file mode 100644 index ae7c25bde..000000000 --- a/pages/api - Kopie/talas5/webserviceMap/GisStationsStatusDistrict.js +++ /dev/null @@ -1,84 +0,0 @@ -// /pages/api/talas5/webserviceMap/gisStationsMeasurementsSQL.js -import mysql from "mysql2/promise"; - -// Erstellen eines Verbindungspools anstelle einer einzelnen Verbindung -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); - -export default async function handler(req, res) { - const { idMap, idUser } = req.query; - - if (!idMap || !idUser) { - return res.status(400).json({ error: "idMap and idUser are required" }); - } - - try { - let onlySystem = -1; - let districtCounter = 0; - - // Get onlySystem - const [mapResult] = await pool.query("SELECT idsystem_typ FROM maps WHERE id = ?", [idMap]); - if (mapResult.length > 0) { - onlySystem = mapResult[0].idsystem_typ ?? -1; - } - - // Get districtCounter - if (idUser > 0) { - const [userLayerResult] = await pool.query("SELECT count(*) as count FROM user_User_layer1 WHERE iduser = ?", [idUser]); - districtCounter = userLayerResult[0].count; - } - - // Building the query - let query = ` - SELECT ld.idLD, dc.message, p.level, p.name, p.color, ld.idDevice, de.isService, dc.idIcon - FROM location as l - LEFT JOIN location_coordinates AS co ON l.idLocation = co.idLocation and co.idMaps = ? - LEFT JOIN location_device AS ld ON ld.idLocation = l.idLocation - LEFT JOIN datapoint as d ON d.idLD = ld.idLD - LEFT JOIN datapoint_conditions AS dc ON dc.idcondition = d.last_message_condition - LEFT JOIN prio AS p ON p.idPrio = dc.idprio - LEFT JOIN devices AS de ON de.idDevice = ld.idDevice - LEFT JOIN area as a on a.idArea = l.idArea - WHERE p.level < 100 AND co.X > 0 - `; - - const queryParams = [idMap]; - if (districtCounter > 0) { - query += ` AND a.iddistrict IN (SELECT iddistrict FROM user_user_layer1 WHERE iduser = ?)`; - queryParams.push(idUser); - } - if (onlySystem >= 0) { - query += ` AND de.idsystem_typ = ?`; - queryParams.push(onlySystem); - } - query += ` ORDER BY p.level desc`; - - const [results] = await pool.query(query, queryParams); - - const mpss = { - IdMap: idMap.toString(), - Statis: results.map((row) => ({ - IdLD: row.idLD ?? -1, - Le: row.level ?? -1, - Me: row.message ?? "?", - Na: row.name ?? "?", - Co: row.color ?? "#ffffff", - Feld: row.idDevice ?? -1, - Icon: row.idIcon ?? 0, - })), - }; - - res.status(200).json(mpss); - } catch (error) { - console.error("Fehler beim Laden der Daten:", error); - res.status(500).json({ error: "Interner Serverfehler" }); - } -} diff --git a/pages/api - Kopie/talas5/webserviceMap/GisSystemStatic.js b/pages/api - Kopie/talas5/webserviceMap/GisSystemStatic.js deleted file mode 100644 index b2fb56635..000000000 --- a/pages/api - Kopie/talas5/webserviceMap/GisSystemStatic.js +++ /dev/null @@ -1,273 +0,0 @@ -// /pages/api/webServiceMap.js -const gisSystemStatic = { - "Name": "Liste aller angezeigten Systeme", - "Zeitstempel": "2024-05-31T15:08:49.8599542+02:00", - "IdMap": "10", - "Systems": [ - { - "IdSystem": 1, - "Name": "TALAS", - "Longname": "Talas Meldestationen", - "Allow": 1, - "Icon": 1 - }, - { - "IdSystem": 2, - "Name": "ECI", - "Longname": "ECI Geräte", - "Allow": 1, - "Icon": 2 - }, - { - "IdSystem": 5, - "Name": "GSM Modem", - "Longname": "LR77 GSM Modems", - "Allow": 1, - "Icon": 5 - }, - { - "IdSystem": 6, - "Name": "Cisco Router", - "Longname": "Cisco Router", - "Allow": 1, - "Icon": 6 - }, - { - "IdSystem": 7, - "Name": "WAGO", - "Longname": "WAGO I/O Systeme", - "Allow": 1, - "Icon": 7 - }, - { - "IdSystem": 8, - "Name": "Siemens", - "Longname": "Siemens Notrufsystem", - "Allow": 0, - "Icon": 8 - }, - { - "IdSystem": 9, - "Name": "OTDR", - "Longname": "Glasfaserüberwachung OTU", - "Allow": 0, - "Icon": 9 - }, - { - "IdSystem": 10, - "Name": "WDM", - "Longname": " Wavelength Division Multiplexing", - "Allow": 0, - "Icon": 10 - }, - { - "IdSystem": 11, - "Name": "GMA", - "Longname": "Glättemeldeanlagen", - "Allow": 1, - "Icon": 11 - }, - { - "IdSystem": 13, - "Name": "Messstellen", - "Longname": "Messstellen", - "Allow": 0, - "Icon": 13 - }, - { - "IdSystem": 100, - "Name": "TALAS ICL", - "Longname": "Talas ICL Unterstationen", - "Allow": 1, - "Icon": 100 - }, - { - "IdSystem": 110, - "Name": "DAUZ", - "Longname": "Dauerzählstellen", - "Allow": 1, - "Icon": 110 - }, - { - "IdSystem": 111, - "Name": "SMS-Funkmodem", - "Longname": "SMS-Funkmodem", - "Allow": 0, - "Icon": 111 - }, - { - "IdSystem": 200, - "Name": "Sonstige", - "Longname": "Sonstige", - "Allow": 1, - "Icon": 200 - } - ], - "Rights": [ - { - "IdRight": 1 - }, - { - "IdRight": 2 - }, - { - "IdRight": 3 - }, - { - "IdRight": 5 - }, - { - "IdRight": 6 - }, - { - "IdRight": 7 - }, - { - "IdRight": 8 - }, - { - "IdRight": 10 - }, - { - "IdRight": 11 - }, - { - "IdRight": 12 - }, - { - "IdRight": 20 - }, - { - "IdRight": 22 - }, - { - "IdRight": 23 - }, - { - "IdRight": 25 - }, - { - "IdRight": 30 - }, - { - "IdRight": 40 - }, - { - "IdRight": 41 - }, - { - "IdRight": 42 - }, - { - "IdRight": 43 - }, - { - "IdRight": 44 - }, - { - "IdRight": 45 - }, - { - "IdRight": 46 - }, - { - "IdRight": 47 - }, - { - "IdRight": 48 - }, - { - "IdRight": 49 - }, - { - "IdRight": 50 - }, - { - "IdRight": 51 - }, - { - "IdRight": 52 - }, - { - "IdRight": 55 - }, - { - "IdRight": 56 - }, - { - "IdRight": 60 - }, - { - "IdRight": 61 - }, - { - "IdRight": 62 - }, - { - "IdRight": 63 - }, - { - "IdRight": 64 - }, - { - "IdRight": 65 - }, - { - "IdRight": 68 - }, - { - "IdRight": 69 - }, - { - "IdRight": 70 - }, - { - "IdRight": 71 - }, - { - "IdRight": 72 - }, - { - "IdRight": 73 - }, - { - "IdRight": 79 - }, - { - "IdRight": 80 - }, - { - "IdRight": 90 - }, - { - "IdRight": 93 - }, - { - "IdRight": 94 - }, - { - "IdRight": 95 - }, - { - "IdRight": 96 - } - ] -} - -// Export an async function handler for the API route. -export default async function handler(req, res) { - // Initialize an empty params object to store query parameters. - const params = { - idMap: req.query.idMap, - idUser: req.query.idUser - }; - - // Check if the requested ID map and user match certain conditions. - if (params.idMap === '10' && params.idUser === '484') { - // If the conditions are met, return the gisSystemStatic object with a 200 status code. - res.status(200).json(gisSystemStatic); - } else { - // If not, return a 404 error with the message "Not Found". - res.status(404).send('Not Found'); - } -}; \ No newline at end of file diff --git a/pages/api - Kopie/talas5/webserviceMap/gisStationsMeasurementsSQL.js b/pages/api - Kopie/talas5/webserviceMap/gisStationsMeasurementsSQL.js deleted file mode 100644 index 90c535086..000000000 --- a/pages/api - Kopie/talas5/webserviceMap/gisStationsMeasurementsSQL.js +++ /dev/null @@ -1,74 +0,0 @@ -// /pages/api/talas5/webserviceMap/gisStationsMeasurementsSQL.js -import mysql from "mysql2"; - -// Erstellen eines Pools von Datenbankverbindungen -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); - -pool.on("connection", function (connection) { - console.log("Database connected successfully."); -}); - -pool.on("error", function (err) { - console.error("Fehler beim Verbinden:", err); -}); - -export default function handler(req, res) { - const idMap = req.query.idMap; - if (req.method !== "GET") { - return res.status(405).json({ error: "Nur GET Methode erlaubt" }); - } - - const sqlQuery = ` - SELECT - ld.idLD, - dp.idDP, - dp.name AS Na, - dp.value AS Val, - dp.unit AS Unit, - mg.name AS Gr, - ld.idLocation, - area.Name AS Area_Name - FROM location_device as ld - LEFT JOIN location_coordinates AS co ON ld.idLocation = co.idLocation and co.idMaps = ? - LEFT JOIN devices AS de ON de.idDevice = ld.idDevice - LEFT JOIN datapoint AS dp ON ld.idLD = dp.idLD - LEFT JOIN message_group AS mg ON dp.idmessage_group = mg.idmessage_group - LEFT JOIN location AS loc ON ld.idLocation = loc.idLocation - LEFT JOIN area AS area ON loc.idArea = area.idArea - WHERE co.X > 0 AND dp.idmessage_group>0 AND length(dp.unit)> 0 AND length(dp.value)> 0 - `; - - pool.query(sqlQuery, [idMap], (error, results) => { - if (error) { - console.error("Fehler beim Abrufen der gis_lines:", error); - return res.status(500).json({ error: "Fehler beim Abrufen der gis_lines" }); - } - - const response = { - Name: "Liste aller Messungen der Geraete", - Zeitstempel: new Date().toISOString(), - IdMap: idMap, - Statis: results.map((row) => ({ - IdLD: row.idLD, - IdDP: row.idDP, - Na: row.Na, - Val: row.Val, - Unit: row.Unit, - Gr: row.Gr, - IdLocation: row.idLocation, - Area_Name: row.Area_Name, - })), - }; - - res.json(response); - }); -} diff --git a/pages/api - Kopie/talas_v5_DB/gisLines/readGisLines.js b/pages/api - Kopie/talas_v5_DB/gisLines/readGisLines.js deleted file mode 100644 index b73448205..000000000 --- a/pages/api - Kopie/talas_v5_DB/gisLines/readGisLines.js +++ /dev/null @@ -1,50 +0,0 @@ -// /pages/api/talas_v5_DB/gisLines/readGisLines.js -import mysql from "mysql2/promise"; -import { store } from "../../../redux/store"; // Redux-Store importieren - -// Erstellen eines Pools von Datenbankverbindungen -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); - -export default async function handler(req, res) { - if (req.method !== "GET") { - return res.status(405).json({ error: "Nur GET Methode erlaubt" }); - } - - // **Hole `idLD`-Werte aus Redux** - const state = store.getState(); - const activeLines = state.lineVisibility.activeLines; - const activeIds = Object.keys(activeLines); // Alle `idLD` in Redux - - if (activeIds.length === 0) { - return res.status(404).json({ error: "Keine aktiven Geräte in Redux gefunden" }); - } - - // **SQL-Query mit Filterung** - const query = ` - SELECT * - FROM talas_v5.gis_lines - WHERE idLD IN (${activeIds.map(() => "?").join(",")});`; - - try { - console.log("🔍 Aktive Linien in Redux:", activeIds); - const [results] = await pool.query(query, activeIds); // Verwende aktive `idLD` als Parameter - if (results.length > 0) { - res.status(200).json(results); - console.log("✅ GIS-Linien erfolgreich abgerufen:", results.length, "Linien gefunden."); - } else { - res.status(404).json({ error: "Keine passenden Linien gefunden" }); - } - } catch (error) { - console.error("Fehler beim Abrufen der gis_lines:", error); - res.status(500).json({ error: "Fehler beim Abrufen der gis_lines" }); - } -} diff --git a/pages/api - Kopie/talas_v5_DB/gisLines/updateLineCoordinates.js b/pages/api - Kopie/talas_v5_DB/gisLines/updateLineCoordinates.js deleted file mode 100644 index 4271160a0..000000000 --- a/pages/api - Kopie/talas_v5_DB/gisLines/updateLineCoordinates.js +++ /dev/null @@ -1,58 +0,0 @@ -import mysql from "mysql2/promise"; - -// Erstellen eines Pools von Datenbankverbindungen -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); - -export default async function handler(req, res) { - if (req.method !== "POST") { - return res.status(405).json({ error: "Nur POST Methode erlaubt" }); - } - - const { idLD, idModul, newCoordinates } = req.body; - if (!idLD || !idModul || !newCoordinates) { - return res.status(400).json({ error: "Fehlende Daten" }); - } - - const newLineString = `LINESTRING(${newCoordinates.map((coord) => `${coord[0]} ${coord[1]}`).join(",")})`; - - const query = "UPDATE talas_v5.gis_lines SET points = ST_GeomFromText(?) WHERE idLD = ? AND idModul = ?;"; - - let connection; - - try { - // Hole eine Verbindung aus dem Pool - connection = await pool.getConnection(); - - // Beginne eine Transaktion - await connection.beginTransaction(); - - // Führe die Abfrage aus - const [results] = await connection.query(query, [newLineString, idLD, idModul]); - - // Commit der Transaktion - await connection.commit(); - - console.log("Transaction Complete."); - res.status(200).json({ - success: "Updated successfully.", - affectedRows: results.affectedRows, - }); - } catch (error) { - // Rollback im Falle eines Fehlers - if (connection) await connection.rollback(); - console.error("Fehler beim Aktualisieren der gis_lines:", error); - res.status(500).json({ error: "Fehler beim Aktualisieren der gis_lines" }); - } finally { - // Stelle sicher, dass die Verbindung zurückgegeben wird - if (connection) connection.release(); - } -} diff --git a/pages/api - Kopie/talas_v5_DB/locationDevice/getDeviceId.js b/pages/api - Kopie/talas_v5_DB/locationDevice/getDeviceId.js deleted file mode 100644 index 8b2326316..000000000 --- a/pages/api - Kopie/talas_v5_DB/locationDevice/getDeviceId.js +++ /dev/null @@ -1,41 +0,0 @@ -// API in /api/talas_v5_DB/locationDevice/getDeviceId.js -import mysql from "mysql2/promise"; - -// Erstellen eines Pools von Datenbankverbindungen -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); - -export default async function handler(req, res) { - if (req.method !== "GET") { - return res.status(405).json({ error: "Nur GET Methode erlaubt" }); - } - - const { deviceName } = req.query; - - if (!deviceName) { - return res.status(400).json({ error: "deviceName ist erforderlich" }); - } - - const query = "SELECT idLD FROM location_device WHERE name = ?"; - - try { - // Ausführen der Abfrage mit dem Pool - const [results] = await pool.query(query, [deviceName]); - if (results.length > 0) { - res.status(200).json({ idLD: results[0].idLD }); - } else { - res.status(404).json({ error: "Gerät nicht gefunden" }); - } - } catch (error) { - console.error("Fehler beim Abrufen der Geräte-ID:", error); - res.status(500).json({ error: "Fehler beim Abrufen der Geräte-ID" }); - } -} diff --git a/pages/api - Kopie/talas_v5_DB/locationDevice/locationDeviceNameById.js b/pages/api - Kopie/talas_v5_DB/locationDevice/locationDeviceNameById.js deleted file mode 100644 index 575541547..000000000 --- a/pages/api - Kopie/talas_v5_DB/locationDevice/locationDeviceNameById.js +++ /dev/null @@ -1,40 +0,0 @@ -// API in /api/talas_v5_DB/locationDevice/locationDeviceNameById.js -import mysql from "mysql2/promise"; - -// Erstellen eines Pools von Datenbankverbindungen -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); - -export default async function handler(req, res) { - if (req.method !== "GET") { - return res.status(405).json({ error: "Nur GET Methode erlaubt" }); - } - - const { idLD } = req.query; - - if (!idLD) { - return res.status(400).json({ error: "idLD ist erforderlich" }); - } - - try { - const query = "SELECT name FROM location_device WHERE idLD = ?"; - const [results] = await pool.query(query, [idLD]); - - if (results.length > 0) { - res.status(200).json({ name: results[0].name }); - } else { - res.status(404).json({ error: "Gerät nicht gefunden", idLD }); - } - } catch (error) { - console.error("Fehler beim Abrufen des Gerätenamens:", error); - res.status(500).json({ error: "Fehler beim Abrufen des Gerätenamens" }); - } -} diff --git a/pages/api - Kopie/talas_v5_DB/locationDevice/locationDevices.js b/pages/api - Kopie/talas_v5_DB/locationDevice/locationDevices.js deleted file mode 100644 index 082dc2929..000000000 --- a/pages/api - Kopie/talas_v5_DB/locationDevice/locationDevices.js +++ /dev/null @@ -1,32 +0,0 @@ -// API in /api/talas_v5_DB/locationDevice/locationDevices.js -import mysql from "mysql2/promise"; - -// Erstellen eines Pools von Datenbankverbindungen -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); - -export default async function handler(req, res) { - if (req.method !== "GET") { - return res.status(405).json({ error: "Nur GET Methode erlaubt" }); - } - - const query = "SELECT * FROM location_device WHERE iddevice = 160"; - - try { - // Ausführen der Abfrage mit dem Verbindungspool - const [results] = await pool.query(query); - - res.status(200).json(results); - } catch (error) { - console.error("Fehler beim Abrufen der Geräteinformationen:", error); - res.status(500).json({ error: "Fehler beim Abrufen der Geräteinformationen" }); - } -} diff --git a/pages/api - Kopie/talas_v5_DB/poiTyp/readPoiTyp.js b/pages/api - Kopie/talas_v5_DB/poiTyp/readPoiTyp.js deleted file mode 100644 index baff8f83d..000000000 --- a/pages/api - Kopie/talas_v5_DB/poiTyp/readPoiTyp.js +++ /dev/null @@ -1,37 +0,0 @@ -// pages/api/talas_v5_DB/poiTyp/readPoiTyp.js -import mysql from "mysql2/promise"; - -// Erstellen eines Pools von Datenbankverbindungen -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); - -export default async function handler(req, res) { - if (req.method !== "GET") { - res.setHeader("Allow", ["GET"]); - return res.status(405).end(`Method ${req.method} Not Allowed`); - } - - const query = "SELECT * FROM poityp"; - - try { - // Ausführen der Abfrage mit dem Verbindungspool - const [results] = await pool.query(query); - - if (results.length === 0) { - return res.status(404).json({ message: "Keine Einträge gefunden" }); - } - - res.status(200).json(results); - } catch (error) { - console.error("Fehler beim Abfragen der Datenbank:", error); - res.status(500).json({ error: "Ein Fehler ist aufgetreten" }); - } -} diff --git a/pages/api - Kopie/talas_v5_DB/pois/addLocation.js b/pages/api - Kopie/talas_v5_DB/pois/addLocation.js deleted file mode 100644 index 864835647..000000000 --- a/pages/api - Kopie/talas_v5_DB/pois/addLocation.js +++ /dev/null @@ -1,37 +0,0 @@ -// pages/api/addLocation.js -import mysql from "mysql"; - -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - connectionLimit: 10, // Maximale Anzahl gleichzeitiger Verbindungen -}); - -export default function handler(req, res) { - if (req.method === "POST") { - const { name, poiTypeId, latitude, longitude, idLD } = req.body; - console.log("Received data:", req.body); // Überprüfen der empfangenen Daten - - const query = "INSERT INTO poi (description, idPoiTyp, position, idLD) VALUES (?, ?, ST_GeomFromText(?),?)"; - const point = `POINT(${longitude} ${latitude})`; - const values = [name, poiTypeId, point, idLD]; - - // Verwende den Pool, um eine Verbindung zu bekommen und die Query auszuführen - pool.query(query, values, (error, results) => { - if (error) { - console.error("Fehler beim Einfügen des Standorts:", error); - return res.status(500).json({ error: "Ein Fehler ist aufgetreten" }); - } - res.status(200).json({ - id: results.insertId, - message: "Standort erfolgreich hinzugefügt", - }); - }); - } else { - res.setHeader("Allow", ["POST"]); - res.status(405).end(`Method ${req.method} Not Allowed`); - } -} diff --git a/pages/api - Kopie/talas_v5_DB/pois/deletePoi.js b/pages/api - Kopie/talas_v5_DB/pois/deletePoi.js deleted file mode 100644 index e9132bd6b..000000000 --- a/pages/api - Kopie/talas_v5_DB/pois/deletePoi.js +++ /dev/null @@ -1,42 +0,0 @@ -// pages/api/talas_v5_DB/pois/deletePoi.js -import mysql from "mysql2/promise"; - -// Erstellen eines Pools von Datenbankverbindungen -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); - -export default async function handler(req, res) { - if (req.method !== "DELETE") { - return res.status(405).json({ error: "Nur DELETE Methode erlaubt" }); - } - - const { id } = req.query; // ID aus der Anfrage holen - - if (!id) { - return res.status(400).json({ error: "POI ID ist erforderlich" }); - } - - const query = "DELETE FROM poi WHERE idPoi = ?"; - - try { - // Ausführen der Abfrage mit dem Verbindungspool - const [results] = await pool.query(query, [id]); - - if (results.affectedRows > 0) { - res.status(200).json({ message: "POI erfolgreich gelöscht" }); - } else { - res.status(404).json({ error: "POI nicht gefunden" }); - } - } catch (error) { - console.error("Fehler beim Löschen des POI 3:", error); - res.status(500).json({ error: "Fehler beim Löschen des POI" }); - } -} diff --git a/pages/api - Kopie/talas_v5_DB/pois/getPoiById.js b/pages/api - Kopie/talas_v5_DB/pois/getPoiById.js deleted file mode 100644 index 3bd2f1023..000000000 --- a/pages/api - Kopie/talas_v5_DB/pois/getPoiById.js +++ /dev/null @@ -1,43 +0,0 @@ -// pages/api/talas_v5_DB/pois/getPoiById.js -import mysql from "mysql2/promise"; - -// Erstellen eines Pools von Datenbankverbindungen -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); - -export default async function handler(req, res) { - if (req.method !== "GET") { - res.setHeader("Allow", ["GET"]); - return res.status(405).end(`Method ${req.method} Not Allowed`); - } - - const { idPoi } = req.query; - - if (!idPoi) { - return res.status(400).json({ error: "idPoi ist erforderlich" }); - } - - const query = "SELECT description FROM poi WHERE idPoi = ?"; - - try { - // Ausführen der Abfrage mit dem Verbindungspool - const [results] = await pool.query(query, [idPoi]); - - if (results.length === 0) { - return res.status(404).json({ error: "POI nicht gefunden" }); - } - - res.status(200).json(results[0]); - } catch (error) { - console.error("Fehler bei der Abfrage:", error); - res.status(500).json({ error: "Fehler bei der Abfrage" }); - } -} diff --git a/pages/api - Kopie/talas_v5_DB/pois/poi-icons.js b/pages/api - Kopie/talas_v5_DB/pois/poi-icons.js deleted file mode 100644 index 407704538..000000000 --- a/pages/api - Kopie/talas_v5_DB/pois/poi-icons.js +++ /dev/null @@ -1,36 +0,0 @@ -// pages/api/talas_v5_DB/pois/poi-icons.js -import mysql from "mysql2/promise"; - -// Erstellen eines Pools von Datenbankverbindungen -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); - -export default async function handler(req, res) { - if (req.method !== "GET") { - return res.status(405).json({ error: "Nur GET Methode erlaubt" }); - } - - const query = ` - SELECT p.idPoi, i.path - FROM poi p - JOIN poiTyp pt ON p.idPoiTyp = pt.idPoiTyp - JOIN poiicons i ON pt.icon = i.idpoiicons; - `; - - try { - // Ausführen der Abfrage mit dem Verbindungspool - const [results] = await pool.query(query); - res.status(200).json(results); - } catch (error) { - console.error("Fehler beim Abrufen der Icons:", error); - res.status(500).json({ error: "Fehler beim Abrufen der Icons" }); - } -} diff --git a/pages/api - Kopie/talas_v5_DB/pois/readLocations.js b/pages/api - Kopie/talas_v5_DB/pois/readLocations.js deleted file mode 100644 index 308de78af..000000000 --- a/pages/api - Kopie/talas_v5_DB/pois/readLocations.js +++ /dev/null @@ -1,32 +0,0 @@ -// pages/api/talas_v5_DB/pois/readLocations.js -import mysql from "mysql2/promise"; - -// Erstellen eines Pools von Datenbankverbindungen -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); - -export default async function handler(req, res) { - const query = ` - SELECT idPoi, description, idPoiTyp, idLD, ST_AsText(position) AS position - FROM poi - `; - - try { - // Ausführen der Abfrage mit dem Verbindungspool - const [results] = await pool.query(query); - - // Senden der Antwort zurück - res.status(200).json(results); - } catch (error) { - console.error("Fehler beim Abrufen der API:", error); - res.status(500).json({ error: "Fehler bei der Abfrage" }); - } -} diff --git a/pages/api - Kopie/talas_v5_DB/pois/updateLocation.js b/pages/api - Kopie/talas_v5_DB/pois/updateLocation.js deleted file mode 100644 index ee61070f2..000000000 --- a/pages/api - Kopie/talas_v5_DB/pois/updateLocation.js +++ /dev/null @@ -1,82 +0,0 @@ -// pages/api/talas_v5_DB/pois/updateLocation.js -import mysql from "mysql2/promise"; - -// Erstellen eines Pools von Datenbankverbindungen -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - charset: "utf8mb4", - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); - -export default async function handler(req, res) { - if (req.method !== "POST") { - res.setHeader("Allow", ["POST"]); - return res.status(405).end(`Method ${req.method} Not Allowed`); - } - - const { id, latitude, longitude } = req.body; - - if (!id || latitude === undefined || longitude === undefined) { - return res.status(400).json({ error: "id, latitude, und longitude sind erforderlich" }); - } - - const query = "UPDATE poi SET position = POINT(?, ?) WHERE idPoi = ?"; - - try { - const [result] = await pool.query(query, [longitude, latitude, id]); - - if (result.affectedRows > 0) { - res.status(200).json({ success: true }); - } else { - res.status(404).json({ error: "POI nicht gefunden" }); - } - } catch (error) { - console.error("Fehler beim Aktualisieren der Position:", error); - res.status(500).json({ error: "Ein Fehler ist aufgetreten" }); - } -} - -/* import mysql from "mysql"; -import util from "util"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - charset: "utf8mb4", -}; - -export default async function handler(req, res) { - if (req.method !== "POST") { - res.setHeader("Allow", ["POST"]); - return res.status(405).end(`Method ${req.method} Not Allowed`); - } - - const { id, latitude, longitude } = req.body; - - const connection = mysql.createConnection(dbConfig); - // Promisify the query method - const query = util.promisify(connection.query).bind(connection); - - try { - await query("UPDATE poi SET position = POINT(?, ?) WHERE idPoi = ?", [ - longitude, - latitude, - id, - ]); - res.status(200).json({ success: true }); - } catch (error) { - console.error(error); - res.status(500).json({ error: "Ein Fehler ist aufgetreten" }); - } finally { - connection.end(); - } -} */ diff --git a/pages/api - Kopie/talas_v5_DB/pois/updatePoi.js b/pages/api - Kopie/talas_v5_DB/pois/updatePoi.js deleted file mode 100644 index bc3356a2f..000000000 --- a/pages/api - Kopie/talas_v5_DB/pois/updatePoi.js +++ /dev/null @@ -1,45 +0,0 @@ -// pages/api/talas_v5_DB/pois/updatePoi.js -import mysql from "mysql2/promise"; - -// Erstellen eines Pools von Datenbankverbindungen -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); - -export default async function handler(req, res) { - if (req.method !== "POST") { - return res.status(405).json({ error: "Nur POST Methode erlaubt" }); - } - - const { idPoi, description, idPoiTyp, idLD } = req.body; - - if (!idPoi) { - return res.status(400).json({ error: "POI ID ist erforderlich" }); - } - - const query = ` - UPDATE talas_v5.poi - SET description = ?, idPoiTyp = ?, idLD = ? - WHERE idPoi = ? - `; - - try { - const [results] = await pool.query(query, [description, idPoiTyp, idLD, idPoi]); - - if (results.affectedRows > 0) { - res.status(200).json({ message: "POI erfolgreich aktualisiert" }); - } else { - res.status(404).json({ error: "POI nicht gefunden" }); - } - } catch (error) { - console.error("Fehler beim Aktualisieren des POI:", error); - res.status(500).json({ error: "Fehler beim Aktualisieren des POI" }); - } -} diff --git a/pages/api - Kopie/talas_v5_DB/priorityConfig.js b/pages/api - Kopie/talas_v5_DB/priorityConfig.js deleted file mode 100644 index 719007020..000000000 --- a/pages/api - Kopie/talas_v5_DB/priorityConfig.js +++ /dev/null @@ -1,31 +0,0 @@ -// pages/api/talas_v5_DB/priorityConfig.js -// in tals5 http://10.10.0.13/talas5/Management/PriorityConfig.aspx beinhaltet die Tabelle prio die Prioritäten der Meldungen (Level 1-4) oder (0-4) je nachdem DB-Design -// das ist die API, die die Prioritäten zurückgibt - -import mysql from "mysql2/promise"; - -// Erstellen eines Pools von Datenbankverbindungen -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); - -export default async function handler(req, res) { - try { - // Ausführen der Datenbankabfrage - const query = "SELECT idprio, level, name, color FROM prio"; - const results = await pool.query(query); - - // Wichtig: Senden Sie die Antwort zurück - res.status(200).json(results[0]); // Da mysql2 Tuple [rows, fields] zurückgibt, wählen wir nur rows mit [0] - } catch (error) { - console.error("Fehler beim Abrufen der API", error); - res.status(500).json({ error: "Fehler bei der Abfrage" }); - } -} diff --git a/pages/api - Kopie/talas_v5_DB/station/getAllStationsNames.js b/pages/api - Kopie/talas_v5_DB/station/getAllStationsNames.js deleted file mode 100644 index 0d5d5ca05..000000000 --- a/pages/api - Kopie/talas_v5_DB/station/getAllStationsNames.js +++ /dev/null @@ -1,43 +0,0 @@ -// /pages/api/talas_v5_DB/station/getAllStationsNames.js -import mysql from "mysql2/promise"; - -// Verbindungspool-Konfiguration -const pool = mysql.createPool({ - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - waitForConnections: true, - connectionLimit: 10, - queueLimit: 0, -}); - -export default async function handler(req, res) { - if (req.method !== "GET") { - res.setHeader("Allow", ["GET"]); - return res.status(405).end(`Method ${req.method} Not Allowed`); - } - - try { - // Abrufen aller idLD und ihrer Namen - const [results] = await pool.query("SELECT idLD, name FROM location_device"); - - if (results.length === 0) { - return res.status(404).json({ error: "No data found" }); - } - - // Struktur der Antwort anpassen - const namesMap = results.reduce((map, { idLD, name }) => { - if (!map[idLD]) { - map[idLD] = name; // Stelle sicher, dass hier keine Duplikate oder Überschreibungen entstehen - } - return map; - }, {}); - - res.status(200).json(namesMap); - } catch (err) { - console.error("Fehler beim Abrufen der Daten:", err); - res.status(500).json({ error: "Error retrieving data from the database" }); - } -} diff --git a/pages/api back30/[...path].js b/pages/api back30/[...path].js deleted file mode 100644 index 0578e8448..000000000 --- a/pages/api back30/[...path].js +++ /dev/null @@ -1,20 +0,0 @@ -// pages/api/[...path].js -import { createProxyMiddleware } from "http-proxy-middleware"; -import { SERVER_URL } from "../config/urls.js"; -console.log("SERVER_URL:", SERVER_URL); // Debug-Ausgabe - -export default createProxyMiddleware({ - //target: "http://192.168.10.58:3001", - // Stationen bekommen - //target: "http://10.10.0.13", // Ziel-URL des Proxys // API Aufruf zum mapGisStationsStaticDistrictUrl, mapGisStationsStatusDistrictUrl, mapGisStationsMeasurementsUrl, mapGisSystemStaticUrl und mapDataIconUrl - target: `${SERVER_URL}`, // - //target: urls.PROXY_TARGET, - //target: "http://localhost:3000", // Ziel-URL des Proxys - //target: "http://192.168.10.187:3000", // Ziel-URL des Proxys - //target: "http://192.168.10.14", - changeOrigin: true, - pathRewrite: { - "^/api": "/", // Optional: Entfernt /api aus dem Pfad, wenn das Backend dies nicht erfordert - }, - logLevel: "debug", // Setzt das Logging-Level auf "debug" für detaillierte Ausgaben -}); diff --git a/pages/api back30/get-talasIP.js b/pages/api back30/get-talasIP.js deleted file mode 100644 index 1216fbbb7..000000000 --- a/pages/api back30/get-talasIP.js +++ /dev/null @@ -1,20 +0,0 @@ -// pages/api/get-talasIP.js - -export default function handler(req, res) { - // Der x-forwarded-for Header könnte mehrere IP-Adressen enthalten, getrennt durch Kommas - let clientIp = - req.headers["x-forwarded-for"]?.split(",").map((ip) => ip.trim())[0] || - req.socket.remoteAddress; - - // Entfernen möglicher IPv6 "mapped" IPv4 Adressen - if (clientIp?.includes("::ffff:")) { - clientIp = clientIp.split("::ffff:")[1]; - } - - // Nur IPv4 Adressen weitergeben, IPv6 Adressen ausschließen - if (clientIp && clientIp.includes(":")) { - clientIp = ""; // Dies setzt die IP auf leer, wenn es sich um eine IPv6-Adresse handelt - } - - res.status(200).json({ ip: clientIp }); -} diff --git a/pages/api back30/gis-proxy.js b/pages/api back30/gis-proxy.js deleted file mode 100644 index b76883298..000000000 --- a/pages/api back30/gis-proxy.js +++ /dev/null @@ -1,34 +0,0 @@ -// /pages/api/gis-proxy.js -// Importieren der erforderlichen Module -import httpProxy from "http-proxy"; -import Cookies from "cookies"; - -// Erstellen eines Proxy-Servers -const proxy = httpProxy.createProxyServer(); - -export default (req, res) => { - return new Promise((resolve) => { - // CORS-Headers einstellen - res.setHeader("Access-Control-Allow-Credentials", true); - res.setHeader("Access-Control-Allow-Origin", "*"); - - // Cookies initialisieren - const cookies = new Cookies(req, res); - const targetUrl = `${process.env.NEXT_PUBLIC_SERVER_URL}/talas5/ClientData/WebserviceMap.asmx/GisSystemStatic`; - - // Proxy-Konfiguration und Event-Listener - req.on("data", () => {}); - req.on("end", () => { - proxy.web(req, res, { target: targetUrl, changeOrigin: true, selfHandleResponse: false }, (e) => { - if (e) { - console.error(e); - res.status(500).json({ error: "Proxy-Fehler", e }); - } - resolve(); - }); - }); - - // Weiterleitung der Headers - req.headers.cookie = cookies.get("cookie-name") || ""; - }); -}; diff --git a/pages/api back30/linesColorApi.js b/pages/api back30/linesColorApi.js deleted file mode 100644 index 57ee59262..000000000 --- a/pages/api back30/linesColorApi.js +++ /dev/null @@ -1,64 +0,0 @@ -// /pages/api/linesColorApi.js -// http://10.10.0.13/talas5/ClientData/WebServiceMap.asmx/GisStationsStatusDistrict -//In DB gis_lines idLD und idModul anpassen entsprechend - -// /pages/api/linesColorApi.js -import NextCors from "nextjs-cors"; - -export default async function handler(req, res) { - // Run the cors middleware - await NextCors(req, res, { - // Options - methods: ["GET", "HEAD", "PUT", "PATCH", "POST", "DELETE"], - origin: "*", // Erlauben Sie alle Ursprünge, oder geben Sie spezifische Ursprünge an - optionsSuccessStatus: 200, // Legacy-Browser-Unterstützung für 204 - }); - - const response = { - Name: "Liste aller Statis der Linien", - Zeitstempel: new Date().toISOString(), // Aktuellen Zeitstempel hinzufügen - IdMap: "10", - Statis: [ - /* { - IdLD: 50922, - Modul: 1, - DpName: "KUE01_Ausfall", - ModulName: "42 Wippershain Sender", - // ModulTyp: "nicht vorhanden", - ModulTyp: "KÜ705-FO", - Message: "KUEG 01: 42 Wippershain Sender Messwerkausfall kommend", - Level: 4, - PrioColor: "#FFFF00", - PrioName: "system", - Value: "10 MOhm", - }, - { - IdLD: 25440, - Modul: 3, - DpName: "KUE03_Ausfall", - ModulName: "42 Solz Sender", - //ModulTyp: "nicht vorhanden", - ModulTyp: "KÜSS V2", - Message: "KUEG 03: 42 Solz Sender Messwerkausfall kommend", - Level: 4, - PrioColor: "#FF0000", - PrioName: "system", - Value: "10 MOhm", - }, - { - IdLD: 25440, - Modul: 4, - DpName: "KUE04_Ausfall", - ModulName: "42/13 Bad Hersfeld Gaswerk", - ModulTyp: "Kue705-FO", - Message: "KUEG 04: 42/13 Bad Hersfeld Gaswerk Messwerkausfall kommend", - Level: 4, - PrioColor: "#FF00FF", - PrioName: "system", - Value: "10 MOhm", - }, */ - ], - }; - - res.status(200).json(response); -} diff --git a/pages/api back30/rights.js b/pages/api back30/rights.js deleted file mode 100644 index 507228147..000000000 --- a/pages/api back30/rights.js +++ /dev/null @@ -1,29 +0,0 @@ -// pages/api/rights.js - -export default function handler(req, res) { - const { idMap, idUser } = req.query; - - // Beispielhafte Rechte, die je nach idMap und idUser variieren können - const rights = { - '10': [ - { IdRight: 1, Name: "Zugriff auf Dashboard" }, - { IdRight: 56, Name: "Erweiterte Berechtigungen" } - ], - '2': [ - { IdRight: 2, Name: "Zugriff auf Einstellungen" } - ], - '1': [ - { IdRight: 10, Name: "Admin-Zugriff" }, - { IdRight: 11, Name: "Zugriff auf alle Daten" } - ] - }; - - // Prüfung, ob eine gültige idMap und idUser vorhanden sind - if (rights[idMap] && idUser === '484') { - // Rückgabe der spezifischen Rechte basierend auf der idMap und idUser - res.status(200).json({ Rights: rights[idMap] }); - } else { - // Rückgabe leerer Rechte für ungültige idMap oder andere Benutzer - res.status(200).json({ Rights: [] }); - } -} diff --git a/pages/api back30/talas5/area.js b/pages/api back30/talas5/area.js deleted file mode 100644 index 9205aa5ca..000000000 --- a/pages/api back30/talas5/area.js +++ /dev/null @@ -1,40 +0,0 @@ -// pages/api/talas_v5/area.js -// Lesen von talas_v5 MySQL-Datenbank -> area Tabelle enthält DAUZ Geräte -// Wenn gebraucht wird, dann nutzen ansonsten löschen - -import mysql from "mysql"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}; -//console.log("my dbconfig: ", dbConfig); -export default function handler(req, res) { - const connection = mysql.createConnection(dbConfig); - - connection.connect((err) => { - if (err) { - console.error("Fehler beim Verbinden:", err.stack); - res.status(500).json({ error: "Verbindungsfehler zur Datenbank" }); - return; - } - - //console.log("Verbunden als ID", connection.threadId); - //Fehler weil, existiertdie Tabelle auf localhost:3000 nicht - connection.query("SELECT ..., ..., ..., ... FROM ... WHERE ... = ...", (error, results) => { - if (error) { - console.error("Fehler beim Abrufen der API", error); - res.status(500).json({ error: "Fehler bei der Abfrage" }); - return; - } - - // Wichtig: Senden Sie die Antwort zurück - res.status(200).json(results); - - connection.end(); - }); - }); -} diff --git a/pages/api back30/talas5/location_device.js b/pages/api back30/talas5/location_device.js deleted file mode 100644 index 8c956f459..000000000 --- a/pages/api back30/talas5/location_device.js +++ /dev/null @@ -1,39 +0,0 @@ -// pages/api/talas_v5/location_device.js -// talas_v5 Datenbank -> location_device Tabelle enthält DAUZ Geräte - -import mysql from "mysql"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}; -//console.log("my dbconfig: ", dbConfig); -export default function handler(req, res) { - const connection = mysql.createConnection(dbConfig); - - connection.connect((err) => { - if (err) { - console.error("Fehler beim Verbinden:", err.stack); - res.status(500).json({ error: "Verbindungsfehler zur Datenbank" }); - return; - } - - //console.log("Verbunden als ID", connection.threadId); - //Fehler weil, existiertdie Tabelle auf localhost:3000 nicht - connection.query("SELECT idLD, iddevice, iddevice, name FROM location_device WHERE iddevice = 160", (error, results) => { - if (error) { - console.error("Fehler beim Abrufen der API", error); - res.status(500).json({ error: "Fehler bei der Abfrage" }); - return; - } - - // Wichtig: Senden Sie die Antwort zurück - res.status(200).json(results); - - connection.end(); - }); - }); -} diff --git a/pages/api back30/talas5/webserviceMap/GisStationsMeasurements.js b/pages/api back30/talas5/webserviceMap/GisStationsMeasurements.js deleted file mode 100644 index 5aba69fc6..000000000 --- a/pages/api back30/talas5/webserviceMap/GisStationsMeasurements.js +++ /dev/null @@ -1,116 +0,0 @@ -// /pages/api/talas5/webserviceMap/GisStationsMeasurements.js -const GisStationsMeasurements = { - "Name": "Liste aller Messungen der Geraete", - "Zeitstempel": "2024-05-31T15:25:32.5047629+02:00", - "IdMap": "10", - "Statis": [ - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 3, - "Na": "FBT", - "Val": "20.5", - "Unit": "°C", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - }, - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 10, - "Na": "GT", - "Val": "nicht ermittelbar", - "Unit": "°C", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - }, - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 2, - "Na": "LT", - "Val": "Datenlücke", - "Unit": "°C", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - }, - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 6, - "Na": "RLF", - "Val": "100.0", - "Unit": "%", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - }, - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 11, - "Na": "TPT", - "Val": "8.3", - "Unit": "°C", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - }, - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 12, - "Na": "TT1", - "Val": "---", - "Unit": "°C", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - }, - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 16, - "Na": "WFD", - "Val": "0.12", - "Unit": "mm", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - }, - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 8, - "Na": "WGM", - "Val": "---", - "Unit": "m/s", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - }, - { - "IdLD": 50004, - "IdL": 18624, - "IdDP": 9, - "Na": "WGS", - "Val": "---", - "Unit": "m/s", - "Gr": "GMA", - "Area_Name": "Renzenhof (RG)" - } - ] - } - - // Export an async function handler for the API route. - export default async function handler(req, res) { - // Initialize an empty params object to store query parameters. - const params = { - idMap: req.query.idMap, - - }; - - // Check if the requested ID map and user match certain conditions. - if (params.idMap === '10') { - // If the conditions are met, return the GisStationsMeasurements object with a 200 status code. - res.status(200).json(GisStationsMeasurements); - } else { - // If not, return a 404 error with the message "Not Found". - res.status(404).send('Not Found'); - } - }; \ No newline at end of file diff --git a/pages/api back30/talas5/webserviceMap/GisStationsStaticDistrict.js b/pages/api back30/talas5/webserviceMap/GisStationsStaticDistrict.js deleted file mode 100644 index bf302f3d7..000000000 --- a/pages/api back30/talas5/webserviceMap/GisStationsStaticDistrict.js +++ /dev/null @@ -1,281 +0,0 @@ -// /pages/api/talas5/webserviceMap/GisStationsStaticDistrict.js -const GisStationsStaticDistrict = { - "Name": "Liste aller Geraete einer bestimmten Karte", - "Zeitstempel": "2024-05-31T15:26:56.9235766+02:00", - "IdMap": "10", - "Points": [ - { - "LD_Name": "CPL Bentheim", - "IdLD": 50017, - "Device": "CPL V3.5 mit 16 Kü", - "Link": "cpl.aspx?ver=35&kue=16&id=50017", - "Location_Name": "Technikraum", - "Location_Short": "BEHE", - "IdLocation": 17448, - "Area_Name": "Bad-Bentheim", - "Area_Short": "BEHE--00", - "IdArea": 16418, - "X": 51.5728, - "Y": 9.00056, - "Icon": 20, - "System": 1, - "Active": 0 - }, - { - "LD_Name": "Drucker", - "IdLD": 50084, - "Device": "Basisgerät", - "Link": "basis.aspx?ver=1&id=50084", - "Location_Name": "Technikraum", - "Location_Short": "SLUE", - "IdLocation": 17776, - "Area_Name": "Schlüchtern II", - "Area_Short": "SLUE--00", - "IdArea": 14688, - "X": 53.2455, - "Y": 8.1614, - "Icon": 14, - "System": 200, - "Active": 0 - }, - { - "LD_Name": "Türkontakt", - "IdLD": 50666, - "Device": "ECI", - "Link": "eci.aspx?ver=1&id=50666", - "Location_Name": "Technikraum", - "Location_Short": "SLUE", - "IdLocation": 17776, - "Area_Name": "Schlüchtern II", - "Area_Short": "SLUE--00", - "IdArea": 14688, - "X": 53.2455, - "Y": 8.1614, - "Icon": 17, - "System": 2, - "Active": 0 - }, - { - "LD_Name": "Triptis", - "IdLD": 50888, - "Device": "CPL 200", - "Link": "cpl.aspx?ver=30&kue=16&id=50888", - "Location_Name": "Technikraum", - "Location_Short": "SLUE", - "IdLocation": 17776, - "Area_Name": "Schlüchtern II", - "Area_Short": "SLUE--00", - "IdArea": 14688, - "X": 53.2455, - "Y": 8.1614, - "Icon": 20, - "System": 1, - "Active": 0 - }, - { - "LD_Name": "Rodaborn I", - "IdLD": 50889, - "Device": "cpl.mio V>6", - "Link": "cplmio.aspx?ver=1&id=50889", - "Location_Name": "Technikraum", - "Location_Short": "SLUE", - "IdLocation": 17776, - "Area_Name": "Schlüchtern II", - "Area_Short": "SLUE--00", - "IdArea": 14688, - "X": 53.2455, - "Y": 8.1614, - "Icon": 20, - "System": 1, - "Active": 0 - }, - { - "LD_Name": "Rodaborn II", - "IdLD": 50900, - "Device": "cpl.mio V>6", - "Link": "cplmio.aspx?ver=1&id=50900", - "Location_Name": "Technikraum", - "Location_Short": "SLUE", - "IdLocation": 17776, - "Area_Name": "Schlüchtern II", - "Area_Short": "SLUE--00", - "IdArea": 14688, - "X": 53.2455, - "Y": 8.1614, - "Icon": 20, - "System": 1, - "Active": 0 - }, - { - "LD_Name": "Hermsdorf", - "IdLD": 50901, - "Device": "CPL V3.5 mit 24 Kü", - "Link": "cpl.aspx?ver=35&kue=24&id=50901", - "Location_Name": "Technikraum", - "Location_Short": "SLUE", - "IdLocation": 17776, - "Area_Name": "Schlüchtern II", - "Area_Short": "SLUE--00", - "IdArea": 14688, - "X": 53.2455, - "Y": 8.1614, - "Icon": 20, - "System": 1, - "Active": 1 - }, - { - "LD_Name": "GMA Littwin (TEST)", - "IdLD": 50004, - "Device": "Glättemeldeanlage", - "Link": "gma.aspx?ver=1&id=50004", - "Location_Name": "RG Relaisraum", - "Location_Short": "REZR", - "IdLocation": 18624, - "Area_Name": "Renzenhof (RG)", - "Area_Short": "REZHRG00", - "IdArea": 16570, - "X": 53.246036, - "Y": 8.163293, - "Icon": 1, - "System": 11, - "Active": 0 - }, - { - "LD_Name": "NRS Testserver", - "IdLD": 50005, - "Device": "Notruf Server", - "Link": "nrs_server.aspx?ver=1&id=50005", - "Location_Name": "(EV Ammersricht BZR REL)", - "Location_Short": "AMME", - "IdLocation": 21118, - "Area_Name": "Ammersricht BZR (FGN)", - "Area_Short": "AMMER--00", - "IdArea": 15958, - "X": 52.52726, - "Y": 12.165488, - "Icon": 19, - "System": 8, - "Active": 0 - }, - { - "LD_Name": "Gateway 2", - "IdLD": 50007, - "Device": "Notruf Server", - "Link": "nrs_server.aspx?ver=1&id=50007", - "Location_Name": "(EV Ammersricht BZR REL)", - "Location_Short": "AMME", - "IdLocation": 21118, - "Area_Name": "Ammersricht BZR (FGN)", - "Area_Short": "AMMER--00", - "IdArea": 15958, - "X": 52.52726, - "Y": 12.165488, - "Icon": 19, - "System": 8, - "Active": 0 - }, - { - "LD_Name": "Basisgerät mit SNMP MVP", - "IdLD": 50669, - "Device": "Basisgerät + SNMP", - "Link": "basisSNMP.aspx?&ver=1&id=50669", - "Location_Name": "Mylinghauserstraße Engelbert", - "Location_Short": "G-GEVELSBE-1", - "IdLocation": 24012, - "Area_Name": "Gevelsberg", - "Area_Short": "GMA-GEVELSBE", - "IdArea": 20919, - "X": 51.316799, - "Y": 7.33281, - "Icon": 14, - "System": 200, - "Active": 1 - }, - { - "LD_Name": "Server 3", - "IdLD": 50009, - "Device": "Notruf Server", - "Link": "nrs_server.aspx?ver=1&id=50009", - "Location_Name": "Militärringstraße Militärringstraße", - "Location_Short": "G-KÖLN-1", - "IdLocation": 24015, - "Area_Name": "Köln", - "Area_Short": "GMA-KÖLN", - "IdArea": 20921, - "X": 50.898399, - "Y": 6.92278, - "Icon": 19, - "System": 8, - "Active": 0 - }, - { - "LD_Name": "ICL Test 5", - "IdLD": 50054, - "Device": "ICL", - "Link": "icl.aspx?ver=1&id=50054", - "Location_Name": "Recheder Mühlenweg Dortmund-Ems-Kanal", - "Location_Short": "G-OLFEN-SE-1", - "IdLocation": 24022, - "Area_Name": "Olfen-Selm", - "Area_Short": "GMA-OLFEN-SE", - "IdArea": 20926, - "X": 51.702202, - "Y": 7.40822, - "Icon": 23, - "System": 100, - "Active": 0 - }, - { - "LD_Name": "ICL Test 3", - "IdLD": 50052, - "Device": "ICL", - "Link": "icl.aspx?ver=1&id=50052", - "Location_Name": "Weidenstraße Hestenberg", - "Location_Short": "G-PLETTENB-1", - "IdLocation": 24024, - "Area_Name": "Plettenberg", - "Area_Short": "GMA-PLETTENB", - "IdArea": 20928, - "X": 51.224098, - "Y": 7.86969, - "Icon": 23, - "System": 100, - "Active": 0 - }, - { - "LD_Name": "Test Februar Kai", - "IdLD": 50912, - "Device": "Dauerzählstelle DZ", - "Link": "dauz.aspx?ver=1&id=50912", - "Location_Name": "In der Hoffnung Kiesberg - BG Ost", - "Location_Short": "G-WUPPERTA-4", - "IdLocation": 24039, - "Area_Name": "Wuppertal", - "Area_Short": "GMA-WUPPERTA", - "IdArea": 20937, - "X": 51.238899, - "Y": 7.12715, - "Icon": 14, - "System": 110, - "Active": 1 - } - ] - } - - // Export an async function handler for the API route. - export default async function handler(req, res) { - // Initialize an empty params object to store query parameters. - const params = { - idMap: req.query.idMap, - idUser: req.query.idUser - }; - - // Check if the requested ID map and user match certain conditions. - if (params.idMap === '10' && params.idUser === '484') { - // If the conditions are met, return the GisStationsStaticDistrict object with a 200 status code. - res.status(200).json(GisStationsStaticDistrict); - } else { - // If not, return a 404 error with the message "Not Found". - res.status(404).send('Not Found'); - } - }; \ No newline at end of file diff --git a/pages/api back30/talas5/webserviceMap/GisStationsStatusDistrict.js b/pages/api back30/talas5/webserviceMap/GisStationsStatusDistrict.js deleted file mode 100644 index 9d0f2024c..000000000 --- a/pages/api back30/talas5/webserviceMap/GisStationsStatusDistrict.js +++ /dev/null @@ -1,100 +0,0 @@ -import mysql from "mysql2/promise"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}; - -export default async function handler(req, res) { - const { idMap, idUser } = req.query; - - if (!idMap || !idUser) { - res.status(400).json({ error: "idMap and idUser are required" }); - return; - } - - let connection; - try { - connection = await mysql.createConnection(dbConfig); - - let onlySystem = -1; - let districtCounter = 0; - - // Get onlySystem - const [mapResult] = await connection.execute( - "SELECT idsystem_typ FROM maps WHERE id = ?", - [idMap] - ); - if (mapResult.length > 0) { - onlySystem = mapResult[0].idsystem_typ ?? -1; - } - - // Get districtCounter - if (idUser > 0) { - const [userLayerResult] = await connection.execute( - "SELECT count(*) as count FROM user_User_layer1 WHERE iduser = ?", - [idUser] - ); - districtCounter = userLayerResult[0].count; - } - - // Get GisStatusStations - let query = ` - SELECT ld.idLD, dc.message, p.level, p.name, p.color, ld.idDevice, de.isService, dc.idIcon - FROM location as l - LEFT JOIN location_coordinates AS co ON l.idLocation = co.idLocation and co.idMaps = ? - LEFT JOIN location_device AS ld ON ld.idLocation = l.idLocation - LEFT JOIN datapoint as d ON d.idLD = ld.idLD - LEFT JOIN datapoint_conditions AS dc ON dc.idcondition = d.last_message_condition - LEFT JOIN prio AS p ON p.idPrio = dc.idprio - LEFT JOIN devices AS de ON de.idDevice = ld.idDevice - LEFT JOIN area as a on a.idArea = l.idArea - WHERE p.level < 100 AND co.X > 0 - `; - - if (districtCounter > 0) { - query += ` AND a.iddistrict IN (SELECT iddistrict FROM user_user_layer1 WHERE iduser = ?)`; - } - - if (onlySystem >= 0) { - query += ` AND de.idsystem_typ = ?`; - } - - query += ` ORDER BY p.level desc`; - - const queryParams = [idMap]; - if (districtCounter > 0) { - queryParams.push(idUser); - } - if (onlySystem >= 0) { - queryParams.push(onlySystem); - } - - const [results] = await connection.execute(query, queryParams); - - const mpss = { - IdMap: idMap.toString(), - Statis: results.map((row) => ({ - IdLD: row.idLD ?? -1, - Le: row.level ?? -1, - Me: row.message ?? "?", - Na: row.name ?? "?", - Co: row.color ?? "#ffffff", - Feld: row.idDevice ?? -1, - Icon: row.idIcon ?? 0, - })), - }; - - res.status(200).json(mpss); - } catch (error) { - console.error("Fehler beim Laden der Daten:", error); - res.status(500).json({ error: "Interner Serverfehler" }); - } finally { - if (connection) { - await connection.end(); - } - } -} diff --git a/pages/api back30/talas5/webserviceMap/GisSystemStatic.js b/pages/api back30/talas5/webserviceMap/GisSystemStatic.js deleted file mode 100644 index b2fb56635..000000000 --- a/pages/api back30/talas5/webserviceMap/GisSystemStatic.js +++ /dev/null @@ -1,273 +0,0 @@ -// /pages/api/webServiceMap.js -const gisSystemStatic = { - "Name": "Liste aller angezeigten Systeme", - "Zeitstempel": "2024-05-31T15:08:49.8599542+02:00", - "IdMap": "10", - "Systems": [ - { - "IdSystem": 1, - "Name": "TALAS", - "Longname": "Talas Meldestationen", - "Allow": 1, - "Icon": 1 - }, - { - "IdSystem": 2, - "Name": "ECI", - "Longname": "ECI Geräte", - "Allow": 1, - "Icon": 2 - }, - { - "IdSystem": 5, - "Name": "GSM Modem", - "Longname": "LR77 GSM Modems", - "Allow": 1, - "Icon": 5 - }, - { - "IdSystem": 6, - "Name": "Cisco Router", - "Longname": "Cisco Router", - "Allow": 1, - "Icon": 6 - }, - { - "IdSystem": 7, - "Name": "WAGO", - "Longname": "WAGO I/O Systeme", - "Allow": 1, - "Icon": 7 - }, - { - "IdSystem": 8, - "Name": "Siemens", - "Longname": "Siemens Notrufsystem", - "Allow": 0, - "Icon": 8 - }, - { - "IdSystem": 9, - "Name": "OTDR", - "Longname": "Glasfaserüberwachung OTU", - "Allow": 0, - "Icon": 9 - }, - { - "IdSystem": 10, - "Name": "WDM", - "Longname": " Wavelength Division Multiplexing", - "Allow": 0, - "Icon": 10 - }, - { - "IdSystem": 11, - "Name": "GMA", - "Longname": "Glättemeldeanlagen", - "Allow": 1, - "Icon": 11 - }, - { - "IdSystem": 13, - "Name": "Messstellen", - "Longname": "Messstellen", - "Allow": 0, - "Icon": 13 - }, - { - "IdSystem": 100, - "Name": "TALAS ICL", - "Longname": "Talas ICL Unterstationen", - "Allow": 1, - "Icon": 100 - }, - { - "IdSystem": 110, - "Name": "DAUZ", - "Longname": "Dauerzählstellen", - "Allow": 1, - "Icon": 110 - }, - { - "IdSystem": 111, - "Name": "SMS-Funkmodem", - "Longname": "SMS-Funkmodem", - "Allow": 0, - "Icon": 111 - }, - { - "IdSystem": 200, - "Name": "Sonstige", - "Longname": "Sonstige", - "Allow": 1, - "Icon": 200 - } - ], - "Rights": [ - { - "IdRight": 1 - }, - { - "IdRight": 2 - }, - { - "IdRight": 3 - }, - { - "IdRight": 5 - }, - { - "IdRight": 6 - }, - { - "IdRight": 7 - }, - { - "IdRight": 8 - }, - { - "IdRight": 10 - }, - { - "IdRight": 11 - }, - { - "IdRight": 12 - }, - { - "IdRight": 20 - }, - { - "IdRight": 22 - }, - { - "IdRight": 23 - }, - { - "IdRight": 25 - }, - { - "IdRight": 30 - }, - { - "IdRight": 40 - }, - { - "IdRight": 41 - }, - { - "IdRight": 42 - }, - { - "IdRight": 43 - }, - { - "IdRight": 44 - }, - { - "IdRight": 45 - }, - { - "IdRight": 46 - }, - { - "IdRight": 47 - }, - { - "IdRight": 48 - }, - { - "IdRight": 49 - }, - { - "IdRight": 50 - }, - { - "IdRight": 51 - }, - { - "IdRight": 52 - }, - { - "IdRight": 55 - }, - { - "IdRight": 56 - }, - { - "IdRight": 60 - }, - { - "IdRight": 61 - }, - { - "IdRight": 62 - }, - { - "IdRight": 63 - }, - { - "IdRight": 64 - }, - { - "IdRight": 65 - }, - { - "IdRight": 68 - }, - { - "IdRight": 69 - }, - { - "IdRight": 70 - }, - { - "IdRight": 71 - }, - { - "IdRight": 72 - }, - { - "IdRight": 73 - }, - { - "IdRight": 79 - }, - { - "IdRight": 80 - }, - { - "IdRight": 90 - }, - { - "IdRight": 93 - }, - { - "IdRight": 94 - }, - { - "IdRight": 95 - }, - { - "IdRight": 96 - } - ] -} - -// Export an async function handler for the API route. -export default async function handler(req, res) { - // Initialize an empty params object to store query parameters. - const params = { - idMap: req.query.idMap, - idUser: req.query.idUser - }; - - // Check if the requested ID map and user match certain conditions. - if (params.idMap === '10' && params.idUser === '484') { - // If the conditions are met, return the gisSystemStatic object with a 200 status code. - res.status(200).json(gisSystemStatic); - } else { - // If not, return a 404 error with the message "Not Found". - res.status(404).send('Not Found'); - } -}; \ No newline at end of file diff --git a/pages/api back30/talas5/webserviceMap/gisStationsMeasurementsSQL.js b/pages/api back30/talas5/webserviceMap/gisStationsMeasurementsSQL.js deleted file mode 100644 index de3670b6d..000000000 --- a/pages/api back30/talas5/webserviceMap/gisStationsMeasurementsSQL.js +++ /dev/null @@ -1,70 +0,0 @@ -import mysql from "mysql"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}; - -const connection = mysql.createConnection(dbConfig); -connection.connect((err) => { - if (err) { - console.error("Fehler beim Verbinden:", err.stack); - return; - } - console.log("Database connected successfully."); -}); - -export default function handler(req, res) { - const idMap = req.query.idMap; - if (req.method !== "GET") { - return res.status(405).json({ error: "Nur GET Methode erlaubt" }); - } - - connection.query(` - SELECT - ld.idLD, - dp.idDP, - dp.name AS Na, - dp.value AS Val, - dp.unit AS Unit, - mg.name AS Gr, - ld.idLocation, - area.Name AS Area_Name - FROM location_device as ld - LEFT JOIN location_coordinates AS co ON ld.idLocation = co.idLocation and co.idMaps = ${idMap} - LEFT JOIN devices AS de ON de.idDevice = ld.idDevice - LEFT JOIN datapoint AS dp ON ld.idLD = dp.idLD - LEFT JOIN message_group AS mg ON dp.idmessage_group = mg.idmessage_group - LEFT JOIN location AS loc ON ld.idLocation = loc.idLocation - LEFT JOIN area AS area ON loc.idArea = area.idArea - WHERE co.X > 0 AND dp.idmessage_group>0 AND length(dp.unit)> 0 AND length(dp.value)> 0 - `, (error, results) => { - if (error) { - console.error("Fehler beim Abrufen der gis_lines:", error); - return res - .status(500) - .json({ error: "Fehler beim Abrufen der gis_lines" }); - } - - const response = { - "Name": "Liste aller Messungen der Geraete", - "Zeitstempel": new Date().toISOString(), - "IdMap":idMap, - "Statis": results.map((row) => ({ - IdLD: row.idLD, - IdDP: row.idDP, - Na: row.Na, - Val: row.Val, - Unit: row.Unit, - Gr: row.Gr, - IdLocation: row.IdLocation, - Area_Name: row.Area_Name, - })), - }; - - res.json(response); - }); -} \ No newline at end of file diff --git a/pages/api back30/talas_v5_DB/gisLines/readGisLines.js b/pages/api back30/talas_v5_DB/gisLines/readGisLines.js deleted file mode 100644 index 7d8900a83..000000000 --- a/pages/api back30/talas_v5_DB/gisLines/readGisLines.js +++ /dev/null @@ -1,37 +0,0 @@ -// /pages/api/talas_v5_DB/gisLines/readGisLines.js -import mysql from "mysql"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}; - -const connection = mysql.createConnection(dbConfig); -connection.connect((err) => { - if (err) { - console.error("Fehler beim Verbinden:", err.stack); - return; - } - //console.log("Database connected successfully."); -}); - -export default function handler(req, res) { - if (req.method !== "GET") { - return res.status(405).json({ error: "Nur GET Methode erlaubt" }); - } - const query = "SELECT * FROM talas_v5.gis_lines;"; - connection.query(query, (error, results) => { - if (error) { - console.error("Fehler beim Abrufen der gis_lines:", error); - return res.status(500).json({ error: "Fehler beim Abrufen der gis_lines" }); - } - if (results.length > 0) { - res.json(results); - } else { - res.status(404).json({ error: "Gerät nicht gefunden" }); - } - }); -} diff --git a/pages/api back30/talas_v5_DB/gisLines/updateLineCoordinates.js b/pages/api back30/talas_v5_DB/gisLines/updateLineCoordinates.js deleted file mode 100644 index 48dfa36bc..000000000 --- a/pages/api back30/talas_v5_DB/gisLines/updateLineCoordinates.js +++ /dev/null @@ -1,61 +0,0 @@ -// /pages/api/talas_v5_DB/gisLines/updateLineCoordinates.js -import mysql from "mysql"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}; - -const connection = mysql.createConnection(dbConfig); -connection.connect((err) => { - if (err) { - console.error("Fehler beim Verbinden:", err.stack); - return; - } - //console.log("Database connected successfully."); -}); - -export default function handler(req, res) { - if (req.method !== "POST") { - return res.status(405).json({ error: "Nur POST Methode erlaubt" }); - } - - const { idLD, idModul, newCoordinates } = req.body; - if (!idLD || !idModul || !newCoordinates) { - return res.status(400).json({ error: "Fehlende Daten" }); - } - - const newLineString = `LINESTRING(${newCoordinates.map((coord) => `${coord[0]} ${coord[1]}`).join(",")})`; - - const query = "UPDATE talas_v5.gis_lines SET points = ST_GeomFromText(?) WHERE idLD = ? AND idModul = ?;"; - - connection.beginTransaction((err) => { - if (err) { - throw err; - } - connection.query(query, [newLineString, idLD, idModul], (error, results, fields) => { - if (error) { - return connection.rollback(() => { - console.error("Fehler beim Aktualisieren der gis_lines:", error); - res.status(500).json({ error: "Fehler beim Aktualisieren der gis_lines" }); - }); - } - - connection.commit((err) => { - if (err) { - return connection.rollback(() => { - throw err; - }); - } - console.log("Transaction Complete."); - res.status(200).json({ - success: "Updated successfully.", - affectedRows: results.affectedRows, - }); - }); - }); - }); -} diff --git a/pages/api back30/talas_v5_DB/locationDevice/getDeviceId.js b/pages/api back30/talas_v5_DB/locationDevice/getDeviceId.js deleted file mode 100644 index fa373c80c..000000000 --- a/pages/api back30/talas_v5_DB/locationDevice/getDeviceId.js +++ /dev/null @@ -1,40 +0,0 @@ -// API in /api/talas_v5_DB/locationDevice/getDeviceId.js -import mysql from "mysql"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}; - -const connection = mysql.createConnection(dbConfig); -connection.connect((err) => { - if (err) { - console.error("Fehler beim Verbinden:", err.stack); - return; - } -}); - -export default function handler(req, res) { - if (req.method !== "GET") { - return res.status(405).json({ error: "Nur GET Methode erlaubt" }); - } - const { deviceName } = req.query; - - const query = "SELECT idLD FROM location_device WHERE name = ?"; - connection.query(query, [deviceName], (error, results) => { - if (error) { - console.error("Fehler beim Abrufen der Geräte-ID:", error); - return res - .status(500) - .json({ error: "Fehler beim Abrufen der Geräte-ID" }); - } - if (results.length > 0) { - res.json({ idLD: results[0].idLD }); - } else { - res.status(404).json({ error: "Gerät nicht gefunden" }); - } - }); -} diff --git a/pages/api back30/talas_v5_DB/locationDevice/locationDeviceNameById.js b/pages/api back30/talas_v5_DB/locationDevice/locationDeviceNameById.js deleted file mode 100644 index efccd89d9..000000000 --- a/pages/api back30/talas_v5_DB/locationDevice/locationDeviceNameById.js +++ /dev/null @@ -1,46 +0,0 @@ -// API in /api/talas_v5_DB/locationDevice/locationDeviceNameById.js -import mysql from "mysql"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}; - -const connection = mysql.createConnection(dbConfig); -connection.connect((err) => { - if (err) { - console.error("Fehler beim Verbinden:", err.stack); - return; - } -}); - -export default async function handler(req, res) { - if (req.method !== "GET") { - return res.status(405).json({ error: "Nur GET Methode erlaubt" }); - } - const { idLD } = req.query; - - try { - const query = "SELECT name FROM location_device WHERE idLD = ?"; - const [results] = await new Promise((resolve, reject) => { - connection.query(query, [idLD], (error, results) => { - if (error) { - return reject(error); - } - resolve(results); - }); - }); - - if (results.length > 0) { - res.json({ name: results[0].name }); - } else { - res.status(404).json({ error: "Gerät nicht gefunden", idLD, results }); - } - } catch (error) { - console.error("Fehler beim Abrufen des Gerätenamens in locationDeviceNameById.js :", error); - res.status(500).json({ error: "Fehler beim Abrufen des Gerätenamens" }); - } -} diff --git a/pages/api back30/talas_v5_DB/locationDevice/locationDevices.js b/pages/api back30/talas_v5_DB/locationDevice/locationDevices.js deleted file mode 100644 index bfaf57654..000000000 --- a/pages/api back30/talas_v5_DB/locationDevice/locationDevices.js +++ /dev/null @@ -1,35 +0,0 @@ -// API in /api/talas_v5_DB/locationDevice/locationDevices.js -import mysql from "mysql"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}; - -const connection = mysql.createConnection(dbConfig); -connection.connect((err) => { - if (err) { - console.error("Fehler beim Verbinden:", err.stack); - return; - } -}); - -export default function handler(req, res) { - if (req.method !== "GET") { - return res.status(405).json({ error: "Nur GET Methode erlaubt" }); - } - - const query = "SELECT * FROM location_device WHERE iddevice = 160"; - connection.query(query, (error, results) => { - if (error) { - console.error("Fehler beim Abrufen der Geräteinformationen:", error); - return res - .status(500) - .json({ error: "Fehler beim Abrufen der Geräteinformationen" }); - } - res.json(results); - }); -} diff --git a/pages/api back30/talas_v5_DB/poiTyp/readPoiTyp.js b/pages/api back30/talas_v5_DB/poiTyp/readPoiTyp.js deleted file mode 100644 index 062c442cd..000000000 --- a/pages/api back30/talas_v5_DB/poiTyp/readPoiTyp.js +++ /dev/null @@ -1,33 +0,0 @@ -// pages/api/talas_v5_DB/poiTyp/readPoiTyp.js -import mysql from "mysql"; - -const pool = mysql.createPool({ - //connectionLimit: 10, - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}); - -export default function handler(req, res) { - if (req.method === "GET") { - const query = "SELECT * FROM poityp"; - - pool.query(query, (error, results) => { - if (error) { - console.error("Fehler beim Abfragen der Datenbank:", error); - return res.status(500).json({ error: "Ein Fehler ist aufgetreten" }); - } - - if (results.length === 0) { - return res.status(404).json({ message: "Keine Einträge gefunden" }); - } - - res.status(200).json(results); - }); - } else { - res.setHeader("Allow", ["GET"]); - res.status(405).end(`Method ${req.method} Not Allowed`); - } -} diff --git a/pages/api back30/talas_v5_DB/pois/addLocation.js b/pages/api back30/talas_v5_DB/pois/addLocation.js deleted file mode 100644 index 118704d7d..000000000 --- a/pages/api back30/talas_v5_DB/pois/addLocation.js +++ /dev/null @@ -1,38 +0,0 @@ -// pages/api/talas_v5_DB/pois/addLocation.js -import mysql from "mysql"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}; - -export default function handler(req, res) { - if (req.method === "POST") { - const { name, poiTypeId, latitude, longitude, idLD } = req.body; - console.log("Received data:", req.body); // Überprüfen der empfangenen Daten - const connection = mysql.createConnection(dbConfig); - - const query = - "INSERT INTO poi (description, idPoiTyp, position, idLD) VALUES (?, ?, ST_GeomFromText(?),?)"; - const point = `POINT(${longitude} ${latitude})`; - const values = [name, poiTypeId, point, idLD]; // Stellen Sie sicher, dass poiTypeId korrekt ist - - connection.query(query, values, (error, results) => { - connection.end(); - if (error) { - console.error("Fehler beim Einfügen des Standorts:", error); - return res.status(500).json({ error: "Ein Fehler ist aufgetreten" }); - } - res.status(200).json({ - id: results.insertId, - message: "Standort erfolgreich hinzugefügt", - }); - }); - } else { - res.setHeader("Allow", ["POST"]); - res.status(405).end(`Method ${req.method} Not Allowed`); - } -} diff --git a/pages/api back30/talas_v5_DB/pois/deletePoi.js b/pages/api back30/talas_v5_DB/pois/deletePoi.js deleted file mode 100644 index 780a1b755..000000000 --- a/pages/api back30/talas_v5_DB/pois/deletePoi.js +++ /dev/null @@ -1,45 +0,0 @@ -// pages/api/talas_v5_DB/pois/deletePoi.js -import mysql from "mysql"; - -// Datenbankkonfiguration -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}; - -const connection = mysql.createConnection(dbConfig); -connection.connect((err) => { - if (err) { - console.error("Fehler beim Verbinden:", err.stack); - return; - } - console.log("Verbunden als ID", connection.threadId); -}); - -export default function handler(req, res) { - if (req.method !== "DELETE") { - return res.status(405).json({ error: "Nur DELETE Methode erlaubt" }); - } - - const { id } = req.query; // ID aus der Anfrage holen - - if (!id) { - return res.status(400).json({ error: "POI ID ist erforderlich" }); - } - - const query = "DELETE FROM poi WHERE idPoi = ?"; - connection.query(query, [id], (error, results) => { - if (error) { - console.error("Fehler beim Löschen des POI 4:", error); - return res.status(500).json({ error: "Fehler beim Löschen des POI" }); - } - if (results.affectedRows > 0) { - res.json({ message: "POI erfolgreich gelöscht" }); - } else { - res.status(404).json({ error: "POI nicht gefunden" }); - } - }); -} diff --git a/pages/api back30/talas_v5_DB/pois/getPoiById.js b/pages/api back30/talas_v5_DB/pois/getPoiById.js deleted file mode 100644 index 4ebf5b62c..000000000 --- a/pages/api back30/talas_v5_DB/pois/getPoiById.js +++ /dev/null @@ -1,42 +0,0 @@ -// pages/api/talas_v5_DB/pois/getPoiById.js -import mysql from "mysql"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}; - -export default function handler(req, res) { - if (req.method === "GET") { - const { idPoi } = req.query; - const connection = mysql.createConnection(dbConfig); - - connection.connect((err) => { - if (err) { - console.error("Fehler beim Verbinden:", err.stack); - return res - .status(500) - .json({ error: "Verbindungsfehler zur Datenbank" }); - } - - const query = "SELECT description FROM poi WHERE idPoi = ?"; - connection.query(query, [idPoi], (error, results) => { - connection.end(); - if (error) { - console.error("Fehler bei der Abfrage:", error); - return res.status(500).json({ error: "Fehler bei der Abfrage" }); - } - if (results.length === 0) { - return res.status(404).json({ error: "POI nicht gefunden" }); - } - res.status(200).json(results[0]); - }); - }); - } else { - res.setHeader("Allow", ["GET"]); - res.status(405).end(`Method ${req.method} Not Allowed`); - } -} diff --git a/pages/api back30/talas_v5_DB/pois/poi-icons.js b/pages/api back30/talas_v5_DB/pois/poi-icons.js deleted file mode 100644 index ee092c226..000000000 --- a/pages/api back30/talas_v5_DB/pois/poi-icons.js +++ /dev/null @@ -1,42 +0,0 @@ -// pages/api/talas_v5_DB/pois/poi-icons.js -import mysql from "mysql"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}; - -const connection = mysql.createConnection(dbConfig); - -connection.connect((err) => { - if (err) { - console.error("Fehler beim Verbinden:", err.stack); - return; - } -}); - -export default function handler(req, res) { - if (req.method !== "GET") { - return res.status(405).json({ error: "Nur GET Methode erlaubt" }); - } - - const query = `SELECT p.idPoi, i.path - FROM poi p - JOIN poiTyp pt ON p.idPoiTyp = pt.idPoiTyp - JOIN poiicons i ON pt.icon = i.idpoiicons;`; - - connection.query(query, (error, results) => { - try { - if (error) { - throw error; - } - res.json(results); - } catch (err) { - console.error("Fehler beim Abrufen der icons:", err); - res.status(500).json({ error: "Fehler beim Abrufen der icons" }); - } - }); -} diff --git a/pages/api back30/talas_v5_DB/pois/readLocations.js b/pages/api back30/talas_v5_DB/pois/readLocations.js deleted file mode 100644 index 98a33cc88..000000000 --- a/pages/api back30/talas_v5_DB/pois/readLocations.js +++ /dev/null @@ -1,42 +0,0 @@ -// pages/api/talas_v5_DB/pois/readLocations.js -import mysql from "mysql"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}; -//console.log("my dbconfig: ", dbConfig); -export default function handler(req, res) { - const connection = mysql.createConnection(dbConfig); - - connection.connect((err) => { - if (err) { - console.error("Fehler beim Verbinden:", err.stack); - res.status(500).json({ error: "Verbindungsfehler zur Datenbank" }); - return; - } - - //console.log("Verbunden als ID", connection.threadId); - - connection.query("SELECT idPoi, description, idPoiTyp, idLD, ST_AsText(position) AS position FROM poi", (error, results) => { - if (error) { - console.error("Fehler beim Abrufen der API", error); - res.status(500).json({ error: "Fehler bei der Abfrage" }); - return; - } - - // Wichtig: Senden Sie die Antwort zurück - res.status(200).json(results); - /* console.log( - "--------------- location.js ---------------", - "results in location.js : ", - results, - "---------------------- location.js end ---------------------------" - ); */ - connection.end(); - }); - }); -} diff --git a/pages/api back30/talas_v5_DB/pois/updateLocation.js b/pages/api back30/talas_v5_DB/pois/updateLocation.js deleted file mode 100644 index 625be5a75..000000000 --- a/pages/api back30/talas_v5_DB/pois/updateLocation.js +++ /dev/null @@ -1,39 +0,0 @@ -// pages/api/talas_v5_DB/pois/updateLocation.js -import mysql from "mysql"; -import util from "util"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, - charset: "utf8mb4", -}; - -export default async function handler(req, res) { - if (req.method !== "POST") { - res.setHeader("Allow", ["POST"]); - return res.status(405).end(`Method ${req.method} Not Allowed`); - } - - const { id, latitude, longitude } = req.body; - - const connection = mysql.createConnection(dbConfig); - // Promisify the query method - const query = util.promisify(connection.query).bind(connection); - - try { - await query("UPDATE poi SET position = POINT(?, ?) WHERE idPoi = ?", [ - longitude, - latitude, - id, - ]); - res.status(200).json({ success: true }); - } catch (error) { - console.error(error); - res.status(500).json({ error: "Ein Fehler ist aufgetreten" }); - } finally { - connection.end(); - } -} diff --git a/pages/api back30/talas_v5_DB/pois/updatePoi.js b/pages/api back30/talas_v5_DB/pois/updatePoi.js deleted file mode 100644 index 0eb9eeed3..000000000 --- a/pages/api back30/talas_v5_DB/pois/updatePoi.js +++ /dev/null @@ -1,46 +0,0 @@ -// pages/api/talas_v5_DB/pois/updatePoi.js -import mysql from "mysql"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}; - -const connection = mysql.createConnection(dbConfig); -connection.connect((err) => { - if (err) { - console.error("Fehler beim Verbinden:", err.stack); - return; - } - //console.log("Verbunden als ID", connection.threadId); -}); - -export default function handler(req, res) { - if (req.method !== "POST") { - return res.status(405).json({ error: "Nur POST Methode erlaubt" }); - } - - const { idPoi, description, idPoiTyp, idLD } = req.body; // Stellen Sie sicher, dass die Felder korrekt benannt sind - - //console.log("Empfangene Daten:", req.body); // Loggen der empfangenen Daten zur Überprüfung - - if (!idPoi) { - return res.status(400).json({ error: "POI ID ist erforderlich" }); - } - - const query = "UPDATE talas_v5.poi SET description = ?, idPoiTyp = ?, idLD = ? WHERE idPoi = ?"; - connection.query(query, [description, idPoiTyp, idLD, idPoi], (error, results) => { - if (error) { - console.error("Fehler beim Aktualisieren des POI:", error); - return res.status(500).json({ error: "Fehler beim Aktualisieren des POI" }); - } - if (results.affectedRows > 0) { - res.json({ message: "POI erfolgreich aktualisiert" }); - } else { - res.status(404).json({ error: "POI nicht gefunden" }); - } - }); -} diff --git a/pages/api back30/talas_v5_DB/priorityConfig.js b/pages/api back30/talas_v5_DB/priorityConfig.js deleted file mode 100644 index 06bfefe3d..000000000 --- a/pages/api back30/talas_v5_DB/priorityConfig.js +++ /dev/null @@ -1,40 +0,0 @@ -// pages/api/talas_v5_DB/priorityConfig.js -// in tals5 http://10.10.0.13/talas5/Management/PriorityConfig.aspx beinhaltet die Tabelle prio die Prioritäten der Meldungen (Level 1-4) oder (0-4) je nachdem DB-Design -// das ist die API, die die Prioritäten zurückgibt - -import mysql from "mysql"; - -const dbConfig = { - host: process.env.DB_HOST, - user: process.env.DB_USER, - password: process.env.DB_PASSWORD, - database: process.env.DB_NAME, - port: process.env.DB_PORT, -}; -//console.log("my dbconfig: ", dbConfig); -export default function handler(req, res) { - const connection = mysql.createConnection(dbConfig); - - connection.connect((err) => { - if (err) { - console.error("Fehler beim Verbinden:", err.stack); - res.status(500).json({ error: "Verbindungsfehler zur Datenbank" }); - return; - } - - //console.log("Verbunden als ID", connection.threadId); - //Fehler weil, existiertdie Tabelle auf localhost:3000 nicht - connection.query("SELECT idprio, level, name, color FROM prio ", (error, results) => { - if (error) { - console.error("Fehler beim Abrufen der API", error); - res.status(500).json({ error: "Fehler bei der Abfrage" }); - return; - } - - // Wichtig: Senden Sie die Antwort zurück - res.status(200).json(results); - - connection.end(); - }); - }); -} diff --git a/pages/api.zip b/pages/api.zip deleted file mode 100644 index 345e83d41..000000000 Binary files a/pages/api.zip and /dev/null differ diff --git a/pages/api/talas_v5_DB/device/getAllStationsNames.js b/pages/api/talas_v5_DB/device/getAllStationsNames.js index 68299296c..3e6dce2a1 100644 --- a/pages/api/talas_v5_DB/device/getAllStationsNames.js +++ b/pages/api/talas_v5_DB/device/getAllStationsNames.js @@ -31,7 +31,7 @@ export default async function handler(req, res) { res.status(200).json(namesMap); } catch (err) { - console.error("Fehler beim Abrufen der Daten:", err); + console.error("Fehler beim Abrufen der Daten /device/getAllStationsNames.js :", err); res.status(500).json({ error: "Error retrieving data from the database" }); } finally { if (connection) connection.release(); // Gib die Verbindung zurück in den Pool diff --git a/pages/api/talas_v5_DB/device/getAllStationsNamesMock.js b/pages/api/talas_v5_DB/device/getAllStationsNamesMock.js deleted file mode 100644 index 34b80f812..000000000 --- a/pages/api/talas_v5_DB/device/getAllStationsNamesMock.js +++ /dev/null @@ -1,46 +0,0 @@ -// /pages/api/talas_v5_DB/device/getAllStationsNamesMock.js - -export default function handler(req, res) { - // JSON-Daten hier - const stationNames = { - 50035: "CPL Schulungssystem", - 50036: "CPL Varel", - 50039: "MIO Schulungssystem", - 50040: "LTE-Modem Belecke", - 50041: "LTE-Modem Halver", - 50042: "LTE-Modem Lipperbruch", - 50043: "GMA Bunde", - 50044: "GMA Albrechtsplatz", - 50045: "Cisco Router Engelbert", - 50046: "Cisco-Router Schmallenberg", - 50050: "GMA Testgerät", - 50051: "GMA Beleke", - 50052: "Router 1", - 50055: "Testgerät 2", - 50063: "Testgerät 1", - 50064: "CPL Meldestation A", - 50066: "CPL USV Raum", - 50067: "Kontrollmodul 1", - 50068: "Kontrollmodul 2", - 50071: "Testgerät MIK-245", - 50076: "SMS Funkmodem", - 50077: "Notrufserver", - 50078: "OGETest", - 50079: "OGETest", - 50080: "Insel", - 50081: "CPL Test", - 50082: "Buchhaim", - 50083: "Zählstelle B35", - 50084: "TEST JOL", - 50085: "KH Westerstede (Master CPL 232)", - 50086: "KH Oldenburg CPL 2 (Master CPL 233)", - 50087: "PWC Gebäude A (LON, Slave von 232)", - 50088: "PWC Gebäude B (CPL 231, Slave von 232)", - 50089: "LR 77", - 50091: "DC Server", - 50092: "DZ WIS 1", - }; - - // Sende die JSON-Daten als Antwort - res.status(200).json(stationNames); -} diff --git a/pages/api/talas_v5_DB/device/getAllStationsNamesMock.json b/pages/api/talas_v5_DB/device/getAllStationsNamesMock.json deleted file mode 100644 index ad867d096..000000000 --- a/pages/api/talas_v5_DB/device/getAllStationsNamesMock.json +++ /dev/null @@ -1,751 +0,0 @@ -{ - "Name": "Liste aller Statis der Linien", - "Zeitstempel": "2024-09-09T12:29:42.5075786+02:00", - "IdMap": "12", - "Statis": [ - { - "IdLD": 50035, - "Modul": 4, - "DpName": "KUE04_Messwertalarm", - "ModulName": "Ost LWL", - "ModulTyp": "Kü605µF", - "Message": "KÜG 04: Isolationsminderung kommend", - "Level": 2, - "PrioColor": "#FF9900", - "PrioName": "major", - "Value": "True" - }, - { - "IdLD": 50035, - "Modul": 3, - "DpName": "KUE03_Aderbruch", - "ModulName": "Ost", - "ModulTyp": "Kü705-FO", - "Message": "KÜG 03: Aderbruch kommend", - "Level": 1, - "PrioColor": "#FF0000", - "PrioName": "critical", - "Value": "?" - }, - { - "IdLD": 50035, - "Modul": 4, - "DpName": "KUE04_Aderbruch", - "ModulName": "Ost LWL", - "ModulTyp": "Kü605µF", - "Message": "KÜG 04: Aderbruch kommend", - "Level": 1, - "PrioColor": "#FF0000", - "PrioName": "critical", - "Value": "?" - }, - { - "IdLD": 50035, - "Modul": 5, - "DpName": "KUE05_Aderbruch", - "ModulName": " West", - "ModulTyp": "Kü605µC", - "Message": "KÜG 05: Aderbruch kommend", - "Level": 1, - "PrioColor": "#FF0000", - "PrioName": "critical", - "Value": "?" - }, - { - "IdLD": 50035, - "Modul": 6, - "DpName": "KUE06_Aderbruch", - "ModulName": "K54 AP12", - "ModulTyp": "Kü705-FO", - "Message": "KÜG 06: Aderbruch kommend", - "Level": 1, - "PrioColor": "#FF0000", - "PrioName": "critical", - "Value": "?" - }, - { - "IdLD": 50035, - "Modul": 1, - "DpName": "KUE01_Messwert", - "ModulName": "Nord", - "ModulTyp": "Kü705-FO", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "51.5 MOhm" - }, - { - "IdLD": 50035, - "Modul": 2, - "DpName": "KUE02_Messwert", - "ModulName": "Süd", - "ModulTyp": "Kü705-FO", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "30 MOhm" - }, - { - "IdLD": 50035, - "Modul": 6, - "DpName": "KUE06_Messwert", - "ModulName": "K54 AP12", - "ModulTyp": "Kü705-FO", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0 MOhm" - }, - { - "IdLD": 50035, - "Modul": 7, - "DpName": "KUE07_Messwert", - "ModulName": "Kreuzung 50Hz", - "ModulTyp": "KÜSS V2", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0 MOhm" - }, - { - "IdLD": 50035, - "Modul": 8, - "DpName": "KUE08_Messwert", - "ModulName": "Querung EWE", - "ModulTyp": "KÜSS V2", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0 MOhm" - }, - { - "IdLD": 50035, - "Modul": 21, - "DpName": "KUE21_Messwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0.61 MOhm" - }, - { - "IdLD": 50035, - "Modul": 22, - "DpName": "KUE22_Messwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0.72 MOhm" - }, - { - "IdLD": 50035, - "Modul": 1, - "DpName": "KUE01_Schleifenwert", - "ModulName": "Nord", - "ModulTyp": "Kü705-FO", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0.61 kOhm" - }, - { - "IdLD": 50035, - "Modul": 2, - "DpName": "KUE02_Schleifenwert", - "ModulName": "Süd", - "ModulTyp": "Kü705-FO", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0.79 kOhm" - }, - { - "IdLD": 50035, - "Modul": 4, - "DpName": "KUE04_Schleifenwert", - "ModulName": "Ost LWL", - "ModulTyp": "Kü605µF", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "64.01 kOhm" - }, - { - "IdLD": 50035, - "Modul": 5, - "DpName": "KUE05_Schleifenwert", - "ModulName": " West", - "ModulTyp": "Kü605µC", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "64.01 kOhm" - }, - { - "IdLD": 50035, - "Modul": 6, - "DpName": "KUE06_Schleifenwert", - "ModulName": "K54 AP12", - "ModulTyp": "Kü705-FO", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0 kOhm" - }, - { - "IdLD": 50035, - "Modul": 7, - "DpName": "KUE07_Schleifenwert", - "ModulName": "Kreuzung 50Hz", - "ModulTyp": "KÜSS V2", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0 kOhm" - }, - { - "IdLD": 50035, - "Modul": 8, - "DpName": "KUE08_Schleifenwert", - "ModulName": "Querung EWE", - "ModulTyp": "KÜSS V2", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0 kOhm" - }, - { - "IdLD": 50036, - "Modul": 1, - "DpName": "KUE01_Messwert", - "ModulName": "Friedrichsfehn", - "ModulTyp": "Kü705-FO", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "10.5 MOhm" - }, - { - "IdLD": 50036, - "Modul": 2, - "DpName": "KUE02_Messwert", - "ModulName": "Köln", - "ModulTyp": "Kü605µC", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "10 MOhm" - }, - { - "IdLD": 50036, - "Modul": 3, - "DpName": "KUE03_Messwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "200 MOhm" - }, - { - "IdLD": 50036, - "Modul": 4, - "DpName": "KUE04_Messwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0 MOhm" - }, - { - "IdLD": 50036, - "Modul": 5, - "DpName": "KUE05_Messwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "11.5 MOhm" - }, - { - "IdLD": 50036, - "Modul": 8, - "DpName": "KUE08_Messwert", - "ModulName": "Köln", - "ModulTyp": "KÜSS V2", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0 Events" - }, - { - "IdLD": 50036, - "Modul": 9, - "DpName": "KUE09_Messwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "11 MOhm" - }, - { - "IdLD": 50036, - "Modul": 10, - "DpName": "KUE10_Messwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "11 MOhm" - }, - { - "IdLD": 50036, - "Modul": 11, - "DpName": "KUE11_Messwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "11 MOhm" - }, - { - "IdLD": 50036, - "Modul": 12, - "DpName": "KUE12_Messwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "11 MOhm" - }, - { - "IdLD": 50036, - "Modul": 1, - "DpName": "KUE01_Schleifenwert", - "ModulName": "Friedrichsfehn", - "ModulTyp": "Kü705-FO", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "2.32 kOhm" - }, - { - "IdLD": 50036, - "Modul": 2, - "DpName": "KUE02_Schleifenwert", - "ModulName": "Köln", - "ModulTyp": "Kü605µC", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "2.15 kOhm" - }, - { - "IdLD": 50036, - "Modul": 6, - "DpName": "KUE06_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "64.01 kOhm" - }, - { - "IdLD": 50036, - "Modul": 7, - "DpName": "KUE07_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "64.01 kOhm" - }, - { - "IdLD": 50036, - "Modul": 8, - "DpName": "KUE08_Schleifenwert", - "ModulName": "Köln", - "ModulTyp": "KÜSS V2", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0 kOhm" - }, - { - "IdLD": 50071, - "Modul": 1, - "DpName": "KUE01_Messwert", - "ModulName": "Test 1", - "ModulTyp": "Kü705-FO", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0.1 MOhm" - }, - { - "IdLD": 50071, - "Modul": 2, - "DpName": "KUE02_Messwert", - "ModulName": "Test 2", - "ModulTyp": "Kü705-FO", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0.1 MOhm" - }, - { - "IdLD": 50071, - "Modul": 3, - "DpName": "KUE03_Messwert", - "ModulName": "Test 3", - "ModulTyp": "Kü705-FO", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0.1 MOhm" - }, - { - "IdLD": 50071, - "Modul": 4, - "DpName": "KUE04_Messwert", - "ModulName": "Test 4", - "ModulTyp": "Kü605µF", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0.1 MOhm" - }, - { - "IdLD": 50071, - "Modul": 5, - "DpName": "KUE05_Messwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0.1 MOhm" - }, - { - "IdLD": 50071, - "Modul": 6, - "DpName": "KUE06_Messwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0.1 MOhm" - }, - { - "IdLD": 50071, - "Modul": 7, - "DpName": "KUE07_Messwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0.1 Events" - }, - { - "IdLD": 50071, - "Modul": 8, - "DpName": "KUE08_Messwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "51 Events" - }, - { - "IdLD": 50071, - "Modul": 11, - "DpName": "KUE11_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0.59 kOhm" - }, - { - "IdLD": 50071, - "Modul": 12, - "DpName": "KUE12_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0.61 kOhm" - }, - { - "IdLD": 50071, - "Modul": 13, - "DpName": "KUE13_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0.58 kOhm" - }, - { - "IdLD": 50071, - "Modul": 14, - "DpName": "KUE14_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0.6 kOhm" - }, - { - "IdLD": 50071, - "Modul": 15, - "DpName": "KUE15_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0.6 kOhm" - }, - { - "IdLD": 50071, - "Modul": 16, - "DpName": "KUE16_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0.57 kOhm" - }, - { - "IdLD": 50082, - "Modul": 6, - "DpName": "KUE06_Messwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0 MOhm" - }, - { - "IdLD": 50082, - "Modul": 7, - "DpName": "KUE07_Messwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "10 MOhm" - }, - { - "IdLD": 50082, - "Modul": 6, - "DpName": "KUE06_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0 kOhm" - }, - { - "IdLD": 50082, - "Modul": 7, - "DpName": "KUE07_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "2.74 kOhm" - }, - { - "IdLD": 50086, - "Modul": 1, - "DpName": "KUE01_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "201 kOhm" - }, - { - "IdLD": 50086, - "Modul": 2, - "DpName": "KUE02_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "201 kOhm" - }, - { - "IdLD": 50086, - "Modul": 3, - "DpName": "KUE03_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "201 kOhm" - }, - { - "IdLD": 50086, - "Modul": 4, - "DpName": "KUE04_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "0 kOhm" - }, - { - "IdLD": 50086, - "Modul": 11, - "DpName": "KUE11_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "4.01 kOhm" - }, - { - "IdLD": 50086, - "Modul": 12, - "DpName": "KUE12_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "4.01 kOhm" - }, - { - "IdLD": 50086, - "Modul": 13, - "DpName": "KUE13_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "4.01 kOhm" - }, - { - "IdLD": 50086, - "Modul": 14, - "DpName": "KUE14_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "4.01 kOhm" - }, - { - "IdLD": 50086, - "Modul": 15, - "DpName": "KUE15_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "4.01 kOhm" - }, - { - "IdLD": 50086, - "Modul": 16, - "DpName": "KUE16_Schleifenwert", - "ModulName": "?", - "ModulTyp": "?", - "Message": "?", - "Level": -1, - "PrioColor": "#ffffff", - "PrioName": "?", - "Value": "4.01 kOhm" - } - ] -} \ No newline at end of file diff --git a/pages/api/talas_v5_DB/gisLines/readGisLines.js b/pages/api/talas_v5_DB/gisLines/readGisLines.js index 4ed49f76c..3dc1e3724 100644 --- a/pages/api/talas_v5_DB/gisLines/readGisLines.js +++ b/pages/api/talas_v5_DB/gisLines/readGisLines.js @@ -2,34 +2,29 @@ import getPool from "../../../../utils/mysqlPool"; // Singleton-Pool importieren export default async function handler(req, res) { - const pool = getPool(); + const pool = getPool(); // Singleton-Pool verwenden let connection; if (req.method !== "GET") { return res.status(405).json({ error: "Nur GET Methode erlaubt" }); } - const databaseName = process.env.NEXT_PUBLIC_DB_NAME; //talas_v5 - const query = `SELECT * FROM ${databaseName}.gis_lines;`; + const query = "SELECT * FROM gis_lines;"; try { + // Verbindung aus dem Pool holen connection = await pool.getConnection(); + // Abfrage ausführen const [results] = await connection.query(query); - if (results.length > 0) { - return res.status(200).json(results); + res.status(200).json(results); } else { - console.warn(`WARNUNG: Die Tabelle ${databaseName}.gis_lines ist leer oder existiert nicht.`); - return res.status(200).json({ message: `Die Tabelle ${databaseName}.gis_lines ist leer oder existiert nicht.` }); + res.status(404).json({ error: "Keine Daten gefunden" }); } } catch (error) { - if (error.code === "ER_NO_SUCH_TABLE") { - console.warn(`WARNUNG: Die Tabelle ${databaseName}.gis_lines existiert nicht.`); - return res.status(200).json({ message: `Die Tabelle ${databaseName}.gis_lines existiert nicht.` }); - } console.error("Fehler beim Abrufen der gis_lines:", error); - return res.status(500).json({ error: "Fehler beim Abrufen der gis_lines" }); + res.status(500).json({ error: "Fehler beim Abrufen der gis_lines" }); } finally { - if (connection) connection.release(); + if (connection) connection.release(); // Verbindung freigeben } } diff --git a/pages/api/talas_v5_DB/poiTyp/readPoiTyp.js b/pages/api/talas_v5_DB/poiTyp/readPoiTyp.js index 34fb06aaf..c3ccbf8f7 100644 --- a/pages/api/talas_v5_DB/poiTyp/readPoiTyp.js +++ b/pages/api/talas_v5_DB/poiTyp/readPoiTyp.js @@ -20,7 +20,7 @@ export default async function handler(req, res) { const [results] = await connection.query(query); if (results.length === 0) { - return res.status(404).json({ message: "Keine Einträge gefunden" }); + return res.status(200).json({ warning: "Keine Einträge gefunden in readPoiTyp.js" }); } res.status(200).json(results); diff --git a/pages/api/talas_v5_DB/pois/updatePoi.js b/pages/api/talas_v5_DB/pois/updatePoi.js index 1b46ec65e..cce8dcb12 100644 --- a/pages/api/talas_v5_DB/pois/updatePoi.js +++ b/pages/api/talas_v5_DB/pois/updatePoi.js @@ -15,7 +15,7 @@ export default async function handler(req, res) { } const query = ` - UPDATE talas_v5.poi + UPDATE poi SET description = ?, idPoiTyp = ?, idLD = ? WHERE idPoi = ? `; diff --git a/pages/api/talas_v5_DB/station/getAllStationsNames.js b/pages/api/talas_v5_DB/station/getAllStationsNames.js index 1bf158cb2..c7435c42e 100644 --- a/pages/api/talas_v5_DB/station/getAllStationsNames.js +++ b/pages/api/talas_v5_DB/station/getAllStationsNames.js @@ -31,7 +31,7 @@ export default async function handler(req, res) { res.status(200).json(namesMap); } catch (err) { - console.error("Fehler beim Abrufen der Daten:", err); + console.error("Fehler beim Abrufen der Daten in /station/getAllStationsNames.js:", err); res.status(500).json({ error: "Error retrieving data from the database" }); } finally { if (connection) connection.release(); // Gib die Verbindung zurück in den Pool diff --git a/services/apiService.js b/services/apiService.js index 930a9565f..2d9b57b3a 100644 --- a/services/apiService.js +++ b/services/apiService.js @@ -50,7 +50,7 @@ export const fetchGisStatusStations = async (idMap, idUser) => { const data = await response.json(); return data; } catch (error) { - console.error("Fehler beim Abrufen der Daten:", error); + console.error("Fehler beim Abrufen der Daten in /services/apiService.js :", error); throw error; } }, 500); // Debounce-Zeit auf 500ms gesetzt diff --git a/utils/utils.js b/utils/utils.js index b5d4407c2..edc55ecd0 100644 --- a/utils/utils.js +++ b/utils/utils.js @@ -81,7 +81,7 @@ export const createAndSetMarkers = async (systemId, setMarkersFunction) => { setMarkersFunction(markersData); } } catch (error) { - console.error("Error fetching data: ", error); + console.error("Error fetching data in utils/utils.js : ", error); } }; //---------------------------------------------- @@ -106,7 +106,7 @@ export const fetchGisStatusStations = async (idMap, idUser) => { console.log("GisStatusStations:", data); return data; } catch (error) { - console.error("Fehler beim Abrufen der Daten:", error); + console.error("Fehler beim Abrufen der Daten in utils/utils.js :", error); } }; //----------------------------------------------