// components/pois/AddPoiModalWindow.js import React, { useState, useEffect, use } from "react"; import ReactDOM from "react-dom"; import { useRecoilValue, useRecoilState, useSetRecoilState } from "recoil"; import { readPoiMarkersStore } from "../../store/selectors/readPoiMarkersStore"; import { poiReadFromDbTriggerAtom } from "../../store/atoms/poiReadFromDbTriggerAtom"; const AddPoiModalWindow = ({ onClose, map, latlng }) => { const [poiTypData, setpoiTypData] = useState(); // Recoil State verwenden const [name, setName] = useState(""); const [poiTypeId, setPoiTypeId] = useState(""); // Initialize as string const [poiTypeName, setPoiTypeName] = useState(""); // Initialize as string const [latitude] = useState(latlng.lat.toFixed(5)); const [longitude] = useState(latlng.lng.toFixed(5)); const setLoadData = useSetRecoilState(readPoiMarkersStore); const setTrigger = useSetRecoilState(poiReadFromDbTriggerAtom); const [locationDeviceData, setLocationDeviceData] = useState([]); const [deviceName, setDeviceName] = useState(""); //------------------------------------------------------------------------------------------ useEffect(() => { const fetchInitialData = async () => { try { const [poiTypResponse, locationDeviceResponse] = await Promise.all([fetch("/api/talas_v5_DB/poiTyp/readPoiTyp"), fetch("/api/talas5/location_device")]); const poiTypData = await poiTypResponse.json(); setpoiTypData(poiTypData); if (poiTypData.length > 0) { setPoiTypeId(poiTypData[0].idPoiTyp); // Set initial poiTypeId to the id of the first poiType if (poiTypData[1]) { setPoiTypeName(poiTypData[1].name); } } const locationDeviceData = await locationDeviceResponse.json(); setLocationDeviceData(locationDeviceData); if (locationDeviceData.length > 0) { setDeviceName(locationDeviceData[0].name); // Set initial device name } } catch (error) { console.error("Fehler beim Abrufen der Daten:", error); } }; fetchInitialData(); }, []); //------------------------------------------------------------------------------------------ //-----------------handleSubmit------------------- const handleSubmit = async (event) => { event.preventDefault(); const formData = { name, poiTypeId, latitude, longitude, idLD: locationDeviceData.find((device) => device.name === deviceName).idLD, }; const response = await fetch("/api/talas_v5_DB/pois/addLocation", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(formData), }); if (response.ok) { setTrigger((trigger) => { //console.log("Aktueller Trigger-Wert:", trigger); // Vorheriger Wert const newTrigger = trigger + 1; //console.log("Neuer Trigger-Wert:", newTrigger); // Aktualisierter Wert onClose(); return newTrigger; }); // Browser aktualisieren window.location.reload(); } else { console.error("Fehler beim Hinzufügen des POI"); } if (map && typeof map.closePopup === "function") { map.closePopup(); } }; //-----------------handleSubmit------------------- return (
setName(e.target.value)} placeholder="Name der Station" className="block p-2 w-full border-2 border-gray-200 rounded-md text-sm" />
{/* {locationDeviceData.----------------------------------------------*/}
{/* {locationDeviceData.----------------------------------------------*/}
); }; export default AddPoiModalWindow;