diff --git a/components/pois/AddPoiModalWindow.js b/components/pois/AddPoiModalWindow.js index 56677bf79..f0e90efb6 100644 --- a/components/pois/AddPoiModalWindow.js +++ b/components/pois/AddPoiModalWindow.js @@ -1,22 +1,20 @@ // components/pois/AddPoiModalWindow.js -import React, { useState, useEffect, use } from "react"; -import ReactDOM from "react-dom"; -import { useRecoilValue, useRecoilState, useSetRecoilState } from "recoil"; +import React, { useState, useEffect } from "react"; +import Select from "react-select"; // Import react-select +import { 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 [poiTypData, setpoiTypData] = useState([]); const [name, setName] = useState(""); - const [poiTypeId, setPoiTypeId] = useState(""); // Initialize as string - const [poiTypeName, setPoiTypeName] = useState(""); // Initialize as string + const [poiTypeId, setPoiTypeId] = useState(""); 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(""); - //------------------------------------------------------------------------------------------ + const [deviceName, setDeviceName] = useState(null); // Initialize as null + useEffect(() => { const fetchInitialData = async () => { try { @@ -25,13 +23,6 @@ const AddPoiModalWindow = ({ onClose, map, latlng }) => { 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); @@ -46,8 +37,6 @@ const AddPoiModalWindow = ({ onClose, map, latlng }) => { fetchInitialData(); }, []); - //------------------------------------------------------------------------------------------ - //-----------------handleSubmit------------------- const handleSubmit = async (event) => { event.preventDefault(); const formData = { @@ -55,7 +44,7 @@ const AddPoiModalWindow = ({ onClose, map, latlng }) => { poiTypeId, latitude, longitude, - idLD: locationDeviceData.find((device) => device.name === deviceName).idLD, + idLD: locationDeviceData.find((device) => device.name === deviceName?.value).idLD, }; const response = await fetch("/api/talas_v5_DB/pois/addLocation", { @@ -65,16 +54,8 @@ const AddPoiModalWindow = ({ onClose, map, latlng }) => { }); 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(); + setTrigger((trigger) => trigger + 1); + onClose(); } else { console.error("Fehler beim Hinzufügen des POI"); } @@ -84,10 +65,29 @@ const AddPoiModalWindow = ({ onClose, map, latlng }) => { } }; - //-----------------handleSubmit------------------- + // Erstelle Optionen für react-select + const deviceOptions = locationDeviceData.map((device) => ({ + value: device.name, + label: device.name, + })); + + // Custom styles for react-select + const customStyles = { + control: (provided) => ({ + ...provided, + width: "100%", + minWidth: "300px", // Minimum width for the dropdown + maxWidth: "100%", // Maximum width (you can adjust this if needed) + }), + menu: (provided) => ({ + ...provided, + width: "100%", + minWidth: "300px", // Ensure the dropdown menu stays at the minimum width + }), + }; return ( -