- alle Importe und Aufrufe von config.js entfernt - Webservices nutzen direkt window.location + NEXT_PUBLIC_API_PORT_MODE - zentrale Konfigurationsstrategie über .env.local abgeschlossen
92 lines
3.1 KiB
JavaScript
92 lines
3.1 KiB
JavaScript
// hooks/useMapComponentState.js
|
|
// POI -> Kontextmenü -> POI bearbeiten -> Dropdown Geräteauswahl
|
|
import { useState, useEffect } from "react";
|
|
import { useSelector } from "react-redux";
|
|
|
|
export const useMapComponentState = () => {
|
|
const [poiTypData, setPoiTypData] = useState([]);
|
|
const [isPoiTypLoaded, setIsPoiTypLoaded] = useState(false);
|
|
const [deviceName, setDeviceName] = useState("");
|
|
const [locationDeviceData, setLocationDeviceData] = useState([]);
|
|
const [priorityConfig, setPriorityConfig] = useState([]);
|
|
const [menuItemAdded, setMenuItemAdded] = useState(false);
|
|
|
|
// ✅ Redux: Zustand der Sichtbarkeit des POI-Layers
|
|
const poiLayerVisible = useSelector((state) => state.poiLayerVisible.visible);
|
|
|
|
useEffect(() => {
|
|
const fetchPoiTypData = async () => {
|
|
if (process.env.NEXT_PUBLIC_USE_MOCK_API === "true") {
|
|
console.log("⚠️ Mock-API: POI Typen geladen (Mock)");
|
|
|
|
const mockData = [
|
|
{ idPoiTyp: 1, name: "Mock Zähleranschlusskasten", icon: 4, onlySystemTyp: 0 },
|
|
{ idPoiTyp: 2, name: "Mock Geräteschrank", icon: 2, onlySystemTyp: 0 },
|
|
{ idPoiTyp: 4, name: "Mock Parkplatz", icon: 3, onlySystemTyp: 0 },
|
|
{ idPoiTyp: 6, name: "Mock Zufahrt", icon: 4, onlySystemTyp: 0 },
|
|
{ idPoiTyp: 20, name: "Mock Zählgerät", icon: 5, onlySystemTyp: 110 },
|
|
{ idPoiTyp: 21, name: "Mock Messschleife", icon: 6, onlySystemTyp: 110 },
|
|
{ idPoiTyp: 25, name: "Mock Sonstige", icon: 0, onlySystemTyp: 0 },
|
|
{ idPoiTyp: 33, name: "Mock Autobahnauffahrt", icon: 4, onlySystemTyp: null },
|
|
];
|
|
|
|
setPoiTypData(mockData);
|
|
setIsPoiTypLoaded(true);
|
|
return;
|
|
}
|
|
|
|
try {
|
|
const response = await fetch("/api/talas_v5_DB/poiTyp/readPoiTyp");
|
|
const data = await response.json();
|
|
setPoiTypData(data);
|
|
setIsPoiTypLoaded(true);
|
|
} catch (error) {
|
|
console.error("❌ Fehler beim Abrufen der POI-Typen:", error);
|
|
setPoiTypData([]);
|
|
setIsPoiTypLoaded(true);
|
|
}
|
|
};
|
|
|
|
const fetchDeviceData = async () => {
|
|
try {
|
|
const protocol = window.location.protocol;
|
|
const host = window.location.hostname;
|
|
const apiBaseUrl = `${protocol}//${host}/talas5/ClientData/WebServiceMap.asmx`;
|
|
|
|
const params = new URLSearchParams(window.location.search);
|
|
const idMap = params.get("m");
|
|
|
|
const url = `${apiBaseUrl}/GisStationsStatic?idMap=${idMap}`;
|
|
console.log("🌐 Geräte-API:", url);
|
|
|
|
const response = await fetch(url);
|
|
const data = await response.json();
|
|
|
|
setLocationDeviceData(data.Points || []);
|
|
if (data.Points && data.Points.length > 0) {
|
|
setDeviceName(data.Points[0].LD_Name);
|
|
}
|
|
} catch (error) {
|
|
console.error("❌ Fehler beim Abrufen der Gerätedaten:", error);
|
|
}
|
|
};
|
|
|
|
fetchPoiTypData();
|
|
fetchDeviceData();
|
|
}, []);
|
|
|
|
return {
|
|
poiTypData,
|
|
isPoiTypLoaded,
|
|
deviceName,
|
|
setDeviceName,
|
|
locationDeviceData,
|
|
setLocationDeviceData,
|
|
priorityConfig,
|
|
setPriorityConfig,
|
|
menuItemAdded,
|
|
setMenuItemAdded,
|
|
poiLayerVisible,
|
|
};
|
|
};
|