Der Name von POI lesen und in Aktualisierung-Popup einfügen
This commit is contained in:
@@ -39,12 +39,30 @@ const MapComponent = ({ locations, onLocationUpdate }) => {
|
|||||||
const [currentPoiData, setCurrentPoiData] = useState(null);
|
const [currentPoiData, setCurrentPoiData] = useState(null);
|
||||||
|
|
||||||
const handleEditPoi = (marker) => {
|
const handleEditPoi = (marker) => {
|
||||||
console.log("Gewählte Marker ID (idPoi):", marker.options.id);
|
console.log("Selected Marker ID (idPoi):", marker.options.idPoi);
|
||||||
// Setzen der aktuellen POI-Daten für die Übergabe an das Modal
|
console.log("Selected Marker Description:", marker.options.description);
|
||||||
|
|
||||||
setCurrentPoiData({
|
setCurrentPoiData({
|
||||||
idPoi: marker.options.id,
|
idPoi: marker.options.id,
|
||||||
//name: marker.options.name, // Angenommen, name ist ebenfalls in options gespeichert
|
name: marker.options.name,
|
||||||
// Weitere relevante Markerdaten können hier hinzugefügt werden
|
description: marker.options.description,
|
||||||
|
});
|
||||||
|
fetchPoiData(marker.options.id);
|
||||||
|
|
||||||
|
setShowPoiUpdateModal(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
const fetchPoiData = async (idPoi) => {
|
||||||
|
const response = await fetch(`/api/getPoiById?idPoi=${idPoi}`);
|
||||||
|
if (!response.ok) {
|
||||||
|
console.error("Fehler beim Abrufen der POI-Daten");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const data = await response.json();
|
||||||
|
setCurrentPoiData({
|
||||||
|
idPoi,
|
||||||
|
name: data.name,
|
||||||
|
description: data.description,
|
||||||
});
|
});
|
||||||
setShowPoiUpdateModal(true);
|
setShowPoiUpdateModal(true);
|
||||||
};
|
};
|
||||||
@@ -877,8 +895,10 @@ const MapComponent = ({ locations, onLocationUpdate }) => {
|
|||||||
locations.forEach((location) => {
|
locations.forEach((location) => {
|
||||||
const { latitude, longitude } = parsePoint(location.position);
|
const { latitude, longitude } = parsePoint(location.position);
|
||||||
const poiTypName = poiTypMap.get(location.idPoiTyp) || "Unbekannt ";
|
const poiTypName = poiTypMap.get(location.idPoiTyp) || "Unbekannt ";
|
||||||
//console.log("poiTypName:", poiTypName);
|
console.log("poiTypName in poiLayer:", poiTypName);
|
||||||
//console.log("location.idPoiTyp:", location.idPoiTyp);
|
//console.log("location.idPoiTyp poiLayer:", location.idPoiTyp);
|
||||||
|
console.log("location.idPoiTyp poiLayer:", location);
|
||||||
|
|
||||||
const marker = L.marker([latitude, longitude], {
|
const marker = L.marker([latitude, longitude], {
|
||||||
icon: L.icon({
|
icon: L.icon({
|
||||||
iconUrl: `/img/icons/pois/poi-marker-icon-${location.idPoiTyp}.png`,
|
iconUrl: `/img/icons/pois/poi-marker-icon-${location.idPoiTyp}.png`,
|
||||||
@@ -900,7 +920,7 @@ const MapComponent = ({ locations, onLocationUpdate }) => {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
//console.log("location.idPoi:", location.idPoi);
|
console.log("location.idPoi:", location);
|
||||||
|
|
||||||
// Popup konfigurieren
|
// Popup konfigurieren
|
||||||
marker.bindPopup(`
|
marker.bindPopup(`
|
||||||
|
|||||||
@@ -13,6 +13,52 @@ const PoiUpdateModal = ({ onClose, poiData }) => {
|
|||||||
poiData ? poiData.description : ""
|
poiData ? poiData.description : ""
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Log the initial POI data
|
||||||
|
useEffect(() => {
|
||||||
|
if (poiData) {
|
||||||
|
setPoiId(poiData.idPoi);
|
||||||
|
setName(poiData.name);
|
||||||
|
setPoiTypeId(poiData.idPoiTyp);
|
||||||
|
|
||||||
|
setDescription(poiData.description);
|
||||||
|
console.log("Loaded POI Data for editing:", poiData);
|
||||||
|
console.log("POI ID:", poiData.idPoi);
|
||||||
|
console.log("POI Name:", poiData.name);
|
||||||
|
console.log("POI Typ ID:", poiData.idPoiTyp);
|
||||||
|
console.log("POI Beschreibung:", poiData.description);
|
||||||
|
console.log("POI Geräte-ID:", poiData.idLD);
|
||||||
|
}
|
||||||
|
}, [poiData]);
|
||||||
|
|
||||||
|
const fetchDeviceNameById = async (idLD) => {
|
||||||
|
try {
|
||||||
|
const response = await fetch(`/api/getDeviceNameById?idLD=${idLD}`);
|
||||||
|
const data = await response.json();
|
||||||
|
setDeviceName(data.deviceName);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error fetching device name:", error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Beim Öffnen des Modals die Geräte-ID basierend auf dem Gerätenamen abrufen, wenn vorhanden
|
||||||
|
useEffect(() => {
|
||||||
|
const fetchDeviceId = async () => {
|
||||||
|
if (poiData && poiData.idLD) {
|
||||||
|
try {
|
||||||
|
const response = await fetch(
|
||||||
|
`/api/getDeviceIdById?idLD=${poiData.idLD}`
|
||||||
|
);
|
||||||
|
const data = await response.json();
|
||||||
|
if (data) setDeviceName(data.name);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Fehler beim Abrufen der Geräteinformation:", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
fetchDeviceId();
|
||||||
|
}, [poiData]);
|
||||||
|
|
||||||
// Function to handle deleting a POI
|
// Function to handle deleting a POI
|
||||||
const handleDeletePoi = async () => {
|
const handleDeletePoi = async () => {
|
||||||
if (confirm("Sind Sie sicher, dass Sie diesen POI löschen möchten?")) {
|
if (confirm("Sind Sie sicher, dass Sie diesen POI löschen möchten?")) {
|
||||||
@@ -41,6 +87,7 @@ const PoiUpdateModal = ({ onClose, poiData }) => {
|
|||||||
try {
|
try {
|
||||||
const response = await fetch("/api/readPoiTyp");
|
const response = await fetch("/api/readPoiTyp");
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
|
//console.log("POI Typ Daten:", data);
|
||||||
setPoiTypData(data);
|
setPoiTypData(data);
|
||||||
if (data && data.length > 0) {
|
if (data && data.length > 0) {
|
||||||
setPoiTypeId(data[0].idPoiTyp); // Set the first type as default
|
setPoiTypeId(data[0].idPoiTyp); // Set the first type as default
|
||||||
@@ -58,6 +105,7 @@ const PoiUpdateModal = ({ onClose, poiData }) => {
|
|||||||
try {
|
try {
|
||||||
const response = await fetch("/api/talas_v5/location_device");
|
const response = await fetch("/api/talas_v5/location_device");
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
|
//console.log("Standort- und Gerätedaten:", data);
|
||||||
setLocationDeviceData(data);
|
setLocationDeviceData(data);
|
||||||
if (data.length > 0) {
|
if (data.length > 0) {
|
||||||
setDeviceName(data[0].name); // Set initial device name
|
setDeviceName(data[0].name); // Set initial device name
|
||||||
@@ -95,8 +143,9 @@ const PoiUpdateModal = ({ onClose, poiData }) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
alert("POI wurde erfolgreich aktualisiert.");
|
//alert("POI wurde erfolgreich aktualisiert.");
|
||||||
onClose(); // Schließen des Modals und Aktualisieren der Ansicht
|
onClose(); // Schließen des Modals und Aktualisieren der Ansicht
|
||||||
|
window.location.reload();
|
||||||
} else {
|
} else {
|
||||||
const errorResponse = await response.json();
|
const errorResponse = await response.json();
|
||||||
throw new Error(
|
throw new Error(
|
||||||
@@ -119,7 +168,7 @@ const PoiUpdateModal = ({ onClose, poiData }) => {
|
|||||||
type="text"
|
type="text"
|
||||||
id="name"
|
id="name"
|
||||||
name="name"
|
name="name"
|
||||||
value={name}
|
value={poiData.description || name}
|
||||||
onChange={(e) => setName(e.target.value)}
|
onChange={(e) => setName(e.target.value)}
|
||||||
placeholder="Name der Station"
|
placeholder="Name der Station"
|
||||||
className="block p-2 w-full border-2 border-gray-200 rounded-md text-sm"
|
className="block p-2 w-full border-2 border-gray-200 rounded-md text-sm"
|
||||||
|
|||||||
42
pages/api/getPoiById.js
Normal file
42
pages/api/getPoiById.js
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
// pages/api/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`);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user