fix: GIS-Messdaten-Service korrigiert – URL-Aufbau mit idMap, idUser und Port-Logik vereinheitlicht in fetchGisStationsMeasurementsService

This commit is contained in:
ISA
2025-05-20 11:55:31 +02:00
parent ae40aa5d75
commit c877342e38
14 changed files with 49 additions and 22 deletions

View File

@@ -12,7 +12,7 @@ NEXT_PUBLIC_DEBUG_LOG=true
#auf dem Entwicklungsrechner dev und auf dem Server prod
#auf dem Entwicklungsrechner dev läuft auf Port 3000 und auf dem Server prod auf Port 80, aber der WebService ist immer auf PORT 80
NEXT_PUBLIC_API_PORT_MODE=dev
# Der Unterordner talas5 gleich hinter der IP-Adresse (oder Servername) muss konfigurierbar sein.

View File

@@ -37,7 +37,7 @@ import CoordinateModal from "../CoordinateModal.js";
import CoordinatePopup from "../CoordinatePopup.js";
//------------------------Daten aus API--------------------
import { fetchPoiData } from "../../services/api/fetchPoiData.js";
import { fetchGisStationsMeasurements } from "../../services/api/fetchGisStationsMeasurements.js";
import { fetchGisStationsMeasurementsService } from "../../services/api/fetchGisStationsMeasurementsService.js";
import { selectPolylineVisible, setPolylineVisible } from "../../redux/slices/polylineLayerVisibleSlice.js";
import { fetchLocationDevicesFromDB } from "../../redux/slices/db/locationDevicesFromDBSlice";
import { fetchGisStationsStaticDistrictFromWebService } from "../../redux/slices/webService/gisStationsStaticDistrictSlice";

View File

@@ -1,4 +1,4 @@
// /components/mainComponent/hooks/useFetchWebServiceMap.js
// /components/mainComponent/hooks/useFetchPoiData.js
import { useEffect, useState } from "react";
const API_BASE_URL = typeof window !== "undefined" ? `${window.location.protocol}//${window.location.hostname}:3000` : "";

View File

@@ -1,7 +1,7 @@
// /components/mainComponent/hooks/useFetchWebServiceMap.js
import { useEffect } from "react";
import { fetchGisStationsStatusDistrict } from "../../../services/api/fetchGisStationsStatusDistrict";
import { fetchGisStationsMeasurements } from "../../../services/api/fetchGisStationsMeasurements";
import { fetchGisStationsMeasurementsService } from "../../../services/api/fetchGisStationsMeasurementsService";
import { fetchGisSystemStatic } from "../../../services/api/fetchGisSystemStatic";
const useFetchWebServiceMap = (mapGisStationsStatusDistrictUrl, mapGisStationsMeasurementsUrl, mapGisSystemStaticUrl, setGisStationsStatusDistrict, setGisStationsMeasurements, setGisSystemStatic, setGisSystemStaticLoaded) => {
@@ -29,8 +29,8 @@ const useFetchWebServiceMap = (mapGisStationsStatusDistrictUrl, mapGisStationsMe
// GIS Stations Measurements abrufen
//console.log("⏳ Abrufen von GIS Stations Measurements...");
await fetchGisStationsMeasurements(mapGisStationsMeasurementsUrl, setGisStationsMeasurements, fetchOptions);
// console.log("✅ fetchGisStationsMeasurements erfolgreich!");
await fetchGisStationsMeasurementsService(mapGisStationsMeasurementsUrl, setGisStationsMeasurements, fetchOptions);
// console.log("✅ fetchGisStationsMeasurementsService erfolgreich!");
requestCount++;
localStorage.setItem("fetchWebServiceMap", requestCount);

View File

@@ -1,2 +1,2 @@
// /config/appVersion
export const APP_VERSION = "1.1.114";
export const APP_VERSION = "1.1.115";

View File

@@ -1,3 +1,4 @@
// /services/api/fetchDeviceNameById.js
export const fetchDeviceNameById = async (idLD) => {
try {
const response = await fetch(`/api/talas_v5_DB/locationDevice/locationDeviceNameById?idLD=${idLD}`);

View File

@@ -1,15 +0,0 @@
export const fetchGisStationsMeasurements = async (url, setGisStationsMeasurements) => {
try {
const response = await fetch(url);
const jsonResponse = await response.json();
if (jsonResponse && jsonResponse.Statis) {
setGisStationsMeasurements(jsonResponse.Statis);
} else {
console.error('Erwartete Daten im "Statis"-Array nicht gefunden', jsonResponse);
setGisStationsMeasurements([]);
}
} catch (error) {
console.error("Fehler beim Laden der Daten: ", error);
setGisStationsMeasurements([]);
}
};

View File

@@ -0,0 +1,30 @@
// /services/api/fetchGisStationsMeasurementsService.js
export const fetchGisStationsMeasurementsService = async () => {
const mode = process.env.NEXT_PUBLIC_API_PORT_MODE;
const apiBaseUrl = mode === "dev" ? `${window.location.protocol}//${window.location.hostname}:80/talas5/ClientData/WebServiceMap.asmx` : `${window.location.origin}/talas5/ClientData/WebServiceMap.asmx`;
const params = new URLSearchParams(window.location.search);
const idMap = params.get("m");
const idUser = params.get("u");
const url = `${apiBaseUrl}/GisStationsMeasurements?idMap=${idMap}&idUser=${idUser}`;
console.log("📡 fetchGisStationsMeasurementsService URL:", url);
const response = await fetch(url);
if (!response.ok) {
const message = `❌ Fehler: ${response.status} ${response.statusText}`;
console.error(message);
throw new Error(message);
}
const jsonResponse = await response.json();
if (!jsonResponse?.Statis) {
throw new Error("Antwortstruktur ungültig 'Statis' fehlt");
}
return jsonResponse.Statis;
};

View File

@@ -1,3 +1,4 @@
// /services/api/fetchGisStationsStaticDistrict.js
import { setGisStationsStaticDistrict } from "../../redux/slices/webService/gisStationsStaticDistrictSlice";
export const fetchGisStationsStaticDistrict = async (url, dispatch, fetchOptions) => {

View File

@@ -1,3 +1,5 @@
// /services/api/fetchGisStationsStatusDistrict.js
export const fetchGisStationsStatusDistrict = async (url, setGisStationsStatusDistrict) => {
try {
const response = await fetch(url);

View File

@@ -1,3 +1,5 @@
// /services/api/fetchGisSystemStatic.js
export const fetchGisSystemStatic = async (url, setGisSystemStatic, setGisSystemStaticLoaded) => {
try {
const response = await fetch(url);

View File

@@ -1,3 +1,5 @@
// /services/api/fetchPoiData.js
export const fetchPoiData = async (idPoi) => {
try {
const response = await fetch(`/api/talas_v5_DB/pois/getPoiById?idPoi=${idPoi}`);

View File

@@ -1,3 +1,5 @@
// services/api/fetchWithTimeout.js
const fetchWithTimeout = (url, options, timeout = 5000) => {
const controller = new AbortController();
const id = setTimeout(() => controller.abort(), timeout);

View File

@@ -1,3 +1,5 @@
// /services/api/updateLocationInDatabase.js
export const updateLocationInDatabase = async (id, newLatitude, newLongitude) => {
const response = await fetch("/api/talas_v5_DB/pois/updateLocation", {
method: "POST",