feat: Set default POI type in dropdown based on selected POI

This commit is contained in:
isa
2024-05-25 22:23:25 +02:00
parent 153d423555
commit d7fdda761c
12 changed files with 708 additions and 24 deletions

View File

@@ -1,6 +1,6 @@
DB_HOST=localhost #DB_HOST=localhost
#DB_HOST=192.168.10.58 DB_HOST=192.168.10.58
DB_USER=root DB_USER=root
DB_PASSWORD="root#$" DB_PASSWORD="root#$"
DB_NAME=talas_v5 DB_NAME=talas_v5

View File

@@ -0,0 +1 @@
<%@ WebService Language="C#" CodeBehind="WebServiceMap.asmx.cs" Class="TALAS_V5.WebService1" %>

View File

@@ -0,0 +1,118 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using Newtonsoft.Json;
using System.Data;
using System.Data.Odbc;
using System.Diagnostics;
namespace TALAS_V5
{
/// <summary>
/// Zusammenfassungsbeschreibung für WebService1
/// </summary>
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// Wenn der Aufruf dieses Webdiensts aus einem Skript zulässig sein soll, heben Sie mithilfe von ASP.NET AJAX die Kommentarmarkierung für die folgende Zeile auf.
[System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
public string Test1()
{
return "Hier steht ein Beispieltext "+DateTime.Now.ToLongTimeString();
}
[WebMethod]
public string Test2()
{
MapPoints mps = new MapPoints();
LoadAllPoints(out mps);
//return "Hier steht ein Beispieltext " + DateTime.Now.ToLongTimeString();
return JsonConvert.SerializeObject(mps, Formatting.Indented);
}
public void LoadAllPoints(out MapPoints mps)
{
MapPoint mp;
mps = new MapPoints();
mp = new MapPoint();
using (OdbcConnection con = new OdbcConnection(TalasLibary.SqlHelper.SqlConnectionString()))
{
OdbcCommand dataCommand = new OdbcCommand();
OdbcDataReader dataReader;
con.Open();
dataCommand.Connection = con;
dataCommand.CommandText = string.Format("SELECT b.STO_NAME, b.BER_NR, b.REFERENZ, POS_X, POS_Y");
dataCommand.CommandText += string.Format(" FROM stsisy_bereiche as b");
dataCommand.CommandText += string.Format(" LEFT JOIN stsisy_Ber_koord as k on b.BER_NR=k.BER_NR");
dataCommand.CommandText += string.Format(" WHERE LENGTH(REFERENZ)>0 and POS_X>0 and POS_Y>0 LIMIT 100");
dataReader = dataCommand.ExecuteReader();
while (dataReader.Read())
{
mp = new MapPoint();
if (dataReader.IsDBNull(0))
mp.Name = "unbekannt";
else
mp.Name = dataReader.GetString(0);
mp.Name=mp.Name.Replace('"', ' ');
if (dataReader.IsDBNull(2))
mp.Short = "unbekannt";
else
mp.Short = dataReader.GetString(2);
if (dataReader.IsDBNull(3))
mp.x = 0;
else
mp.x = dataReader.GetDouble(3);
if (dataReader.IsDBNull(4))
mp.y = 0;
else
mp.y = dataReader.GetDouble(4);
mps.Points.Add(mp);
}
}
//return mps;
}
}
public class MapPoint
{
public string Name { get; set; }
public string Short { get; set; }
public double x { get; set; }
public double y { get; set; }
}
public class MapPoints
{
public string Name = "Liste aller Bereiche";
public DateTime Zeitstempel = DateTime.Now;
public List<MapPoint> Points = new List<MapPoint>();
}
}

View File

@@ -10,7 +10,7 @@ import dynamic from "next/dynamic";
import "leaflet.smooth_marker_bouncing"; import "leaflet.smooth_marker_bouncing";
import OverlappingMarkerSpiderfier from "overlapping-marker-spiderfier-leaflet"; import OverlappingMarkerSpiderfier from "overlapping-marker-spiderfier-leaflet";
import DataSheet from "./DataSheet.js"; import DataSheet from "./DataSheet.js";
import { useRecoilState, useRecoilValue } from "recoil"; import { useRecoilState, useRecoilValue, useSetRecoilState } from "recoil";
import { gisStationsStaticDistrictState } from "../store/atoms/gisStationState.js"; import { gisStationsStaticDistrictState } from "../store/atoms/gisStationState.js";
import { gisSystemStaticState } from "../store/atoms/gisSystemState.js"; import { gisSystemStaticState } from "../store/atoms/gisSystemState.js";
import { mapLayersState } from "../store/atoms/mapLayersState.js"; import { mapLayersState } from "../store/atoms/mapLayersState.js";
@@ -21,6 +21,7 @@ import ShowAddStationPopup from "./ShowAddStationPopup";
import { poiReadFromDbTriggerAtom } from "../store/atoms/poiReadFromDbTriggerAtom"; import { poiReadFromDbTriggerAtom } from "../store/atoms/poiReadFromDbTriggerAtom";
import { InformationCircleIcon } from "@heroicons/react/20/solid"; // oder 'outline' import { InformationCircleIcon } from "@heroicons/react/20/solid"; // oder 'outline'
import PoiUpdateModal from "./PoiUpdateModal.js"; import PoiUpdateModal from "./PoiUpdateModal.js";
import { selectedPoiState } from "../store/atoms/poiState.js";
//import { createRoot } from "react-dom/client"; //import { createRoot } from "react-dom/client";
@@ -33,11 +34,17 @@ const plusRoundIcon = L.icon({
}); });
const MapComponent = ({ locations, onLocationUpdate }) => { const MapComponent = ({ locations, onLocationUpdate }) => {
const setSelectedPoi = useSetRecoilState(selectedPoiState);
const openPoiUpdateModal = () => setShowPoiUpdateModal(true); const openPoiUpdateModal = () => setShowPoiUpdateModal(true);
const closePoiUpdateModal = () => setShowPoiUpdateModal(false); const closePoiUpdateModal = () => setShowPoiUpdateModal(false);
const [showPoiUpdateModal, setShowPoiUpdateModal] = useState(false); const [showPoiUpdateModal, setShowPoiUpdateModal] = useState(false);
const [currentPoiData, setCurrentPoiData] = useState(null); const [currentPoiData, setCurrentPoiData] = useState(null);
const handlePoiSelect = (poiData) => {
setSelectedPoi(poiData); // poiData should be the data of the selected POI
// Open the modal or any other logic
};
const handleEditPoi = (marker) => { const handleEditPoi = (marker) => {
console.log("Selected Marker ID (idPoi):", marker.options.idPoi); console.log("Selected Marker ID (idPoi):", marker.options.idPoi);
console.log("Selected Marker Description:", marker.options.description); console.log("Selected Marker Description:", marker.options.description);
@@ -71,8 +78,8 @@ const MapComponent = ({ locations, onLocationUpdate }) => {
const zoomTrigger = useRecoilValue(zoomTriggerState); const zoomTrigger = useRecoilValue(zoomTriggerState);
const offlineTileLayer = "/mapTiles/{z}/{x}/{y}.png"; const offlineTileLayer = "/mapTiles/{z}/{x}/{y}.png";
//const onlineTileLayer = "/mapTiles/{z}/{x}/{y}.png"; //const onlineTileLayer = "/mapTiles/{z}/{x}/{y}.png";
//const onlineTileLayer = "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"; const onlineTileLayer = "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png";
const onlineTileLayer = "http://10.10.0.13:3000/mapTiles/{z}/{x}/{y}.png"; //Talas_v5 Server //const onlineTileLayer = "http://10.10.0.13:3000/mapTiles/{z}/{x}/{y}.png"; //Talas_v5 Server
// Create map layers // Create map layers
const TALAS = new L.layerGroup(); const TALAS = new L.layerGroup();
const ECI = new L.layerGroup(); const ECI = new L.layerGroup();
@@ -930,19 +937,24 @@ const MapComponent = ({ locations, onLocationUpdate }) => {
${poiTypName}<br> ${poiTypName}<br>
</div> </div>
`); `);
/**
marker.bindPopup(` const poiData = {
<div> id: location.idPoi,
<b class="text-xl text-black-700">${location.description || "Unbekannt"}</b><br> typ: poiTypName,
Type: ${poiTypName}<br> description: location.description,
Lat: ${latitude.toFixed(5)}, Lng: ${longitude.toFixed(5)} };
</div>
`);
*/
// Event-Handler hinzufügen // Event-Handler hinzufügen
marker.on("mouseover", function () { marker.on("mouseover", function () {
this.openPopup(); this.openPopup();
//Informationen in der Konsole anzeigen
console.log("poiLayer Marker ID:", location.idPoi);
console.log("poiLayer Marker Typ:", poiTypName);
console.log("poiLayer Marker Beschreibung:", location.description);
//Informationen an handlePoiSelect übergeben
handlePoiSelect(poiData);
console.log("poiData in MapComponent.js:", poiData);
}); });
marker.on("mouseout", function () { marker.on("mouseout", function () {
this.closePopup(); this.closePopup();

View File

@@ -1,8 +1,12 @@
// pages/api/poiUpdateModal.js // pages/api/poiUpdateModal.js
// //
import React, { useState, useEffect } from "react"; import React, { useState, useEffect } from "react";
import { useRecoilValue } from "recoil";
import { selectedPoiState } from "../store/atoms/poiState";
const PoiUpdateModal = ({ onClose, poiData }) => { const PoiUpdateModal = ({ onClose, poiData }) => {
const selectedPoi = useRecoilValue(selectedPoiState);
const [poiId, setPoiId] = useState(poiData ? poiData.idPoi : ""); const [poiId, setPoiId] = useState(poiData ? poiData.idPoi : "");
const [name, setName] = useState(poiData ? poiData.name : ""); const [name, setName] = useState(poiData ? poiData.name : "");
const [poiTypData, setPoiTypData] = useState([]); const [poiTypData, setPoiTypData] = useState([]);
@@ -89,17 +93,19 @@ 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 (selectedPoi && data) {
setPoiTypeId(data[0].idPoiTyp); // Set the first type as default const matchingType = data.find(pt => pt.name === selectedPoi.typ);
if (matchingType) {
setPoiTypeId(matchingType.idPoiTyp);
}
} }
} catch (error) { } catch (error) {
console.error("Fehler beim Abrufen der poiTyp Daten:", error); console.error("Fehler beim Abrufen der poiTyp Daten:", error);
} }
}; };
fetchPoiTypData(); fetchPoiTypData();
}, []); }, [selectedPoi]);
// Fetch device data // Fetch device data
useEffect(() => { useEffect(() => {
@@ -166,6 +172,12 @@ const PoiUpdateModal = ({ onClose, poiData }) => {
} }
}; };
//ausgewählte poi Informationen in Console anzeigen
console.log("Selected POI:", selectedPoi);
console.log("Selected POI Gerät id in poiUpdateModal.js:", selectedPoi.id);
console.log("Selected POI Typ name in poiUpdateModal.js:", selectedPoi.typ);//als Typ in dropdown menu
console.log("Selected POI Beschreibung in poiUpdateModal.js:", selectedPoi.description);
return ( return (
<form onSubmit={handleSubmit} className="m-0 p-2 w-full"> <form onSubmit={handleSubmit} className="m-0 p-2 w-full">
<div className="flex items-center mb-4"> <div className="flex items-center mb-4">

View File

@@ -5,6 +5,7 @@ import { useRecoilValue, useRecoilState, useSetRecoilState } from "recoil";
import { readPoiMarkersStore } from "../store/selectors/readPoiMarkersStore"; import { readPoiMarkersStore } from "../store/selectors/readPoiMarkersStore";
import { poiReadFromDbTriggerAtom } from "../store/atoms/poiReadFromDbTriggerAtom"; import { poiReadFromDbTriggerAtom } from "../store/atoms/poiReadFromDbTriggerAtom";
const ShowAddStationPopup = ({ onClose, map, latlng }) => { const ShowAddStationPopup = ({ onClose, map, latlng }) => {
const [poiTypData, setpoiTypData] = useState(); // Recoil State verwenden const [poiTypData, setpoiTypData] = useState(); // Recoil State verwenden
const [name, setName] = useState(""); const [name, setName] = useState("");

View File

@@ -24,17 +24,17 @@ if (typeof window !== "undefined") {
// Konstruktion von URLs, die auf spezifische Ressourcen auf dem Server zeigen // Konstruktion von URLs, die auf spezifische Ressourcen auf dem Server zeigen
//http://localhost:3000/?m=10&u=485 //http://localhost:3000/?m=10&u=485
mapGisStationsStaticDistrictUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GisStationsStaticDistrict?idMap=${c}&idUser=${user}`; //idMap: 10, idUser: 484 /* mapGisStationsStaticDistrictUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GisStationsStaticDistrict?idMap=${c}&idUser=${user}`; //idMap: 10, idUser: 484
mapGisStationsStatusDistrictUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GisStationsStatusDistrict?idMap=${c}&idUser=${user}`; mapGisStationsStatusDistrictUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GisStationsStatusDistrict?idMap=${c}&idUser=${user}`;
mapGisStationsMeasurementsUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GisStationsMeasurements?idMap=${c}`; mapGisStationsMeasurementsUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GisStationsMeasurements?idMap=${c}`;
mapGisSystemStaticUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GisSystemStatic?idMap=${c}&idUser=${user}`; mapGisSystemStaticUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GisSystemStatic?idMap=${c}&idUser=${user}`;
mapDataIconUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GetIconsStatic`; mapDataIconUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GetIconsStatic`; */
/* mapGisStationsStaticDistrictUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GisStationsStaticDistrict`; mapGisStationsStaticDistrictUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GisStationsStaticDistrict`;
mapGisStationsStatusDistrictUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GisStationsStatusDistrict`; mapGisStationsStatusDistrictUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GisStationsStatusDistrict`;
mapGisStationsMeasurementsUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GisStationsMeasurements`; mapGisStationsMeasurementsUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GisStationsMeasurements`;
mapGisSystemStaticUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GisSystemStatic`; mapGisSystemStaticUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GisSystemStatic`;
mapDataIconUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GetIconsStatic`; */ mapDataIconUrl = `${serverURL}/talas5/ClientData/WebserviceMap.asmx/GetIconsStatic`;
} }
// Export der definierten Variablen und URLs, damit sie in anderen Teilen der Anwendung verwendet werden können // Export der definierten Variablen und URLs, damit sie in anderen Teilen der Anwendung verwendet werden können

View File

@@ -2,8 +2,8 @@
import { createProxyMiddleware } from "http-proxy-middleware"; import { createProxyMiddleware } from "http-proxy-middleware";
export default createProxyMiddleware({ export default createProxyMiddleware({
//target: "http://192.168.10.58:3001", target: "http://192.168.10.58:3001",
target: "http://10.10.0.13", // Ziel-URL des Proxys //target: "http://10.10.0.13", // Ziel-URL des Proxys
//target: "http://192.168.10.187:3000", // Ziel-URL des Proxys //target: "http://192.168.10.187:3000", // Ziel-URL des Proxys
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {

152
public/Web.config.13 Normal file
View File

@@ -0,0 +1,152 @@
<?xml version="1.0" encoding="UTF-8"?><!--
Informationen zur Konfiguration Ihrer ASP.NET-Anwendung finden Sie unter
https://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<configSections>
<sectionGroup name="devExpress">
<section name="themes" type="DevExpress.Web.ThemesConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
<section name="compression" type="DevExpress.Web.CompressionConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
<section name="settings" type="DevExpress.Web.SettingsConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
<section name="errors" type="DevExpress.Web.ErrorsConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
<section name="resources" type="DevExpress.Web.ResourcesConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
<section name="bootstrap" type="DevExpress.Web.Bootstrap.BootstrapConfigurationSection, DevExpress.Web.Bootstrap.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web>
<compilation debug="true" defaultLanguage="c#" targetFramework="4.5">
<assemblies>
<add assembly="DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.Data.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.Printing.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.Office.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="DevExpress.RichEdit.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="System.Web.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="DevExpress.Web.ASPxThemes.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<add assembly="DevExpress.Web.ASPxTreeList.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.Web.ASPxGantt.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.RichEdit.v19.2.Export, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<add assembly="DevExpress.XtraCharts.v19.2.Web, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.XtraCharts.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.Charts.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.Web.ASPxPivotGrid.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.PivotGrid.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.Web.ASPxScheduler.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.XtraScheduler.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.DataAccess.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.Web.ASPxHtmlEditor.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.Web.ASPxSpellChecker.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.SpellChecker.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.Web.ASPxDiagram.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.Web.Bootstrap.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.Web.ASPxRichEdit.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.Web.ASPxSpreadsheet.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
</assemblies>
</compilation>
<authentication mode="Forms">
<forms loginUrl="Login.aspx" />
</authentication>
<httpRuntime targetFramework="4.5" maxRequestLength="4096" requestValidationMode="4.0" executionTimeout="110" />
<httpModules>
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
</httpModules>
<httpHandlers>
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DX.ashx" validate="false" />
<add verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
</httpHandlers>
<globalization culture="de" uiCulture="de" />
<webServices>
<protocols>
<add name="HttpGet" />
<add name="HttpPost" />
</protocols>
</webServices>
<sessionState cookieless="UseCookies" mode="StateServer" stateConnectionString="tcpip=localhost:42424" stateNetworkTimeout="200" timeout="240" />
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
</compilers>
</system.codedom>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Origin, X_Requested-With, Content-Type, Accept" />"/&gt;
</customHeaders>
</httpProtocol>
<modules>
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
</modules>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DX.ashx" name="ASPxHttpHandlerModule" preCondition="integratedMode" />
<add name="ASPxUploadProgressHandler" preCondition="integratedMode" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
</handlers>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="30000000" />
</requestFiltering>
</security>
<defaultDocument>
<files>
<remove value="index.html" />
<remove value="iisstart.htm" />
<remove value="default.aspx" />
<add value="Login.aspx" />
</files>
</defaultDocument>
</system.webServer>
<devExpress>
<themes customThemeAssemblies="ThemeAssembly" theme="TALAS5Standard" enableThemesAssembly="true" styleSheetTheme="" baseColor="" font="" />
<compression enableHtmlCompression="false" enableCallbackCompression="true" enableResourceCompression="true" enableResourceMerging="true" />
<settings accessibilityCompliant="false" bootstrapMode="Bootstrap3" doctypeMode="Html5" rightToLeft="false" checkReferencesToExternalScripts="true" protectControlState="true" ieCompatibilityVersion="edge" />
<errors callbackErrorRedirectUrl="" />
<bootstrap allowClientObjectDeferredInitialization="true" mode="Bootstrap3" iconSet="Embedded" />
<resources>
<add type="DevExtreme" />
<add type="ThirdParty" />
</resources>
</devExpress>
<appSettings>
<add key="vs:EnableBrowserLink" value="false" />
<add key="ConnectionString" value="DRIVER={MySQL ODBC 8.0 ANSI Driver};SERVER=localhost;PORT=3306;DATABASE=talas_v5;USER=root;PASSWORD=root#$;OPTION=3;MULTI_STATEMENTS=1;Pooling=true" />
<add key="RadiusEnable" value="False" />
<add key="RadiusSecret" value="RADIUSTEST" />
<add key="RadiusServer1" value="10.54.159.11" />
<add key="RadiusServer2" value="10.54.159.12" />
<add key="EmailSupport" value="technik@littwin-systemtechnik.de" />
<add key="PathDocuments" value="C:/inetpub/wwwroot/talas5/Files/" />
<add key="PathAccess" value="C:/inetpub/wwwroot/talas5/AccessSync/" />
<add key="TALASserviceName" value="TALASservice" />
<add key="TALASservicePath" value="C:\Program Files (x86)\TALAS5\TALAS.service\TALASservice.exe" />
<add key="Email_Server" value="mail.gmx.net" />
<add key="Email_Port" value="587" />
<add key="Email_From" value="fernwirk@gmx.de" />
<add key="Email_User" value="fernwirk@gmx.de" />
<add key="Email_Pass" value="oldenburg" />
<add key="Email_Login" value="True" />
<add key="Email_Support1" value="kai.schmidt@littwin-systemtechnik.de" />
<add key="Email_Ssl" value="True" />
<add key="TitelZeile1" value="TALAS" />
<add key="TitelZeile2" value="TZW" />
<add key="EmailSupport" value="svoge@littwin-systemtechnik.de" />
<add key="EditPassword" value="True" />
<add key="CustomErrorPage" value="true" />
</appSettings>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000" />
</webServices>
</scripting>
</system.web.extensions>
</configuration>

140
public/Web.config.30 Normal file
View File

@@ -0,0 +1,140 @@
<?xml version="1.0" encoding="UTF-8"?><!--
Informationen zur Konfiguration Ihrer ASP.NET-Anwendung finden Sie unter
https://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<configSections>
<sectionGroup name="devExpress">
<section name="themes" type="DevExpress.Web.ThemesConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
<section name="compression" type="DevExpress.Web.CompressionConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
<section name="settings" type="DevExpress.Web.SettingsConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
<section name="errors" type="DevExpress.Web.ErrorsConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
<section name="resources" type="DevExpress.Web.ResourcesConfigurationSection, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
<section name="bootstrap" type="DevExpress.Web.Bootstrap.BootstrapConfigurationSection, DevExpress.Web.Bootstrap.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web>
<compilation debug="true" defaultLanguage="c#" optimizeCompilations="false" targetFramework="4.5">
<assemblies>
<add assembly="DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.Data.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.Printing.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.Office.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="DevExpress.RichEdit.v19.2.Core, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="System.Web.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
<add assembly="DevExpress.Web.ASPxThemes.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<add assembly="DevExpress.Web.ASPxTreeList.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.Web.ASPxGantt.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=B88D1754D700E49A" />
<add assembly="DevExpress.RichEdit.v19.2.Export, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
</assemblies>
</compilation>
<authentication mode="Forms">
<forms loginUrl="Login.aspx" />
</authentication>
<httpRuntime targetFramework="4.6.1" maxRequestLength="100000000" requestValidationMode="4.0" executionTimeout="110" />
<httpModules>
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
</httpModules>
<httpHandlers>
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DX.ashx" validate="false" />
<add verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
</httpHandlers>
<globalization culture="de" uiCulture="de" />
<webServices>
<protocols>
<add name="HttpGet" />
<add name="HttpPost" />
</protocols>
</webServices>
<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424" cookieless="false" timeout="240" />
<roleManager enabled="true" />
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
</compilers>
</system.codedom>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Origin, X_Requested-With, Content-Type, Accept" />"/&gt;
</customHeaders>
</httpProtocol>
<modules>
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
</modules>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="DX.ashx" name="ASPxHttpHandlerModule" preCondition="integratedMode" />
<add name="ASPxUploadProgressHandler" preCondition="integratedMode" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" type="DevExpress.Web.ASPxUploadProgressHttpHandler, DevExpress.Web.v19.2, Version=19.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
</handlers>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="30000000" />
</requestFiltering>
</security>
<defaultDocument>
<files>
<remove value="index.html" />
<remove value="iisstart.htm" />
<remove value="default.aspx" />
<add value="Login.aspx" />
</files>
</defaultDocument>
</system.webServer>
<devExpress>
<themes customThemeAssemblies="ThemeAssembly" theme="TALAS5Standard" enableThemesAssembly="true" styleSheetTheme="" baseColor="" font="" />
<compression enableHtmlCompression="false" enableCallbackCompression="true" enableResourceCompression="true" enableResourceMerging="true" />
<settings accessibilityCompliant="false" bootstrapMode="Bootstrap3" doctypeMode="Html5" rightToLeft="false" checkReferencesToExternalScripts="true" protectControlState="true" ieCompatibilityVersion="edge" />
<errors callbackErrorRedirectUrl="" />
<bootstrap allowClientObjectDeferredInitialization="true" mode="Bootstrap3" iconSet="Embedded" />
<resources>
<add type="DevExtreme"/>
<add type="ThirdParty"/>
</resources>
</devExpress>
<appSettings>
<add key="vs:EnableBrowserLink" value="false" />
<add key="ConnectionString" value="DRIVER={MySQL ODBC 8.0 ANSI Driver};SERVER=localhost;PORT=3306;DATABASE=talas_v5;USER=root;PASSWORD=root#$;OPTION=3;MULTI_STATEMENTS=1" />
<add key="RadiusEnable" value="False" />
<add key="RadiusSecret" value="RADIUSTEST" />
<add key="RadiusServer1" value="10.54.159.11" />
<add key="RadiusServer2" value="10.54.159.12" />
<add key="EmailSupport" value="technik@littwin-systemtechnik.de" />
<add key="PathDocuments" value="C:/inetpub/wwwroot/talas5/Files/" />
<add key="PathAccess" value="C:/inetpub/wwwroot/talas5/AccessSync/" />
<add key="PathCplExport" value="C:/inetpub/wwwroot/talas5/CplSync/" />
<add key="TALASserviceName" value="TALASservice" />
<add key="TALASservicePath" value="C:\Program Files (x86)\Littwin\TALASservice\TALASservice.exe" />
<add key="Email_Server" value="mail.gmx.net" />
<add key="Email_Port" value="587" />
<add key="Email_From" value="fernwirk@gmx.de" />
<add key="Email_User" value="fernwirk@gmx.de" />
<add key="Email_Pass" value="oldenburg" />
<add key="Email_Login" value="True" />
<add key="Email_Support1" value="kai.schmidt@littwin-systemtechnik.de" />
<add key="Email_Ssl" value="True" />
<add key="TitelZeile1" value="TALAS" />
<add key="TitelZeile2" value="" />
<add key="EmailSupport" value="svoge@littwin-systemtechnik.de" />
<add key="EditPassword" value="True" />
<add key="EmailSupport" value="svoge@littwin-systemtechnik.de" />
<add key="Background" value="0.gif" />
<add key="CustomErrorPage" value="true" />
</appSettings>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000" />
</webServices>
</scripting>
</system.web.extensions>
</configuration>

8
store/atoms/poiState.js Normal file
View File

@@ -0,0 +1,8 @@
// store/atoms/poiState.js
//Ist gedacht um ausgewählte Poi Informationen zu speichern und zu PoiUpdateModal.js zu übergeben
import { atom } from "recoil";
export const selectedPoiState = atom({
key: "poiState", // Einzigartiger Key (mit der gesamten Anwendung)
default: null, // Standardwert
});

240
tree.txt Normal file
View File

@@ -0,0 +1,240 @@
kannst du mir den wiki besser formulieren und anpassen
# TALAS V5 nodeMap
## Einführung
Dieses Dokument bietet einen umfassenden Überblick über das TALAS V5-GIS-Projekt Web-Anwendung nodeMap, die es ermöglicht visuell und auf interaktive Weise, verschiedene Daten und Informationen zu speichern, zu verwalten und anzuzeigen. Die Anwendung basiert auf Geographic Information Systems (GIS) und verwendet MySQL als Datenbank.
## Installation
### Voraussetzungen
- **Node.js und npm:** Stellen Sie sicher, dass Node.js und npm auf Ihrem System installiert sind. Besuchen Sie [Node.js](https://nodejs.org) für Installationsanleitungen.
### Projekt von Teams herunterladen
nodeMap.zip von Teams herunterladen von den URL ...
### Projekt entpacken und kopieren
Mit 7-Zip oder andere Tools die Datei entpacken.
Den entpackte Ordner "nodeMap" in diesen Verzeichnis kopieren C:\inetpub\wwwroot\talas5
### mapTiles Ordner in den Projekt einfügen
mapTiles Verzeichnis in C:\inetpub\wwwroot\talas5\nodeMap\public Verzeichnis einfügen, die mapTiles sollen lokal sein
### Konfiguration des Servers
Port 3000 muss auf dem Server Frei gegeben.
In C:\inetpub\wwwroot\talas5\MessagesMap\MapTypC.aspx muss die IP des Servers und pPort 3000 eingegeben aber kein localhost oder 127.0.0.1
z.B.
"http://10.10.0.30:3000?m=" + encodeURIComponent(mValue) + "&u=" + encodeURIComponent(uValue);
In /pages/api/[...path].js muss die IP des Servers eingegeben werden
z.B. target: "10.10.0.30",
### Lokale Entwicklungsumgebung starten
In C:\inetpub\wwwroot\talas5\nodeMap die Datei StartNodeApp.bat von Projekt Ordner kopieren und auf dem Desktop kopierren um Zeit zu sparen ,doppelklick dann wird die App gestartet, dann kann den Kommandozeile minimiert werden, Den Fenster nicht schließen.
## Nutzung
### Karte ansehen
Die Hauptseite zeigt eine interaktive Karte, auf der verschiedene geografische Punkte dargestellt werden.
-Mit der Maus über ein Element (Station oder PoI) ercheint ein Popuo mit Informationen üder dieses Element
-Überlappende Stationen erkennt man mit Plus Icon: Falls mehrere Station überlappend sind kann mit linke Mausklick, wird dan die Stationen visuell auseinander gehen ,und dann über Mausover auf ein Station bekommt man über ein popup Information dieses Station.
### Layer auswählen
Benutzer können verschiedene Layer über Checkboxen ein- und ausblenden, um spezifische Daten auf der Karte anzuzeigen oder zu verbergen.
### Station wählen
In Dropdown Menü kann nach Station gesucht werden, wird dann zu den ausgewählter Station Reingezoomt.
### Feste Zoom-Stufe
Falls Rein- und Rausgezoomt wird , hier kann den Icon klick zu einer bestimmte Zoom-Stufe gehen.
### Station öffnen
Station kann in selben Browser-Fenster oder in einem neuen Tab geöffnet werden
Maus über eine Station -> Rechte Maustaste um konetxt menü öffnen dann auf "station öffnen (tab)" klicken falls in neue Browser-Tab geöffnet werden soll oder "Station öffnen " klicken fall in selben Browser-fenster geöffnet werden soll.
### Hinzufügen neuer PoI
Nutzer können über ein Formular neue Marker(PoI) zur Datenbank hinzufügen.
Rechter Maustaste -> POI hinzufügen -> Formular ausfühlen -> "POI hinzufügen" Button klicken.
dann erscheint POI schon auf die Karte
### Koordinaten anzeigen
im Kontext-Menü den Koordinaten anzeigen klicken, wird ein alert Fenster geöffnet mit den Koordinaten
### Zoom
Mit Mausrad oder in Kontextmenü Reinzoomen oder Rauszoom.
### Hier zentrieren
die aktuelle Maus Koordinaten wird im Browser-Fenster in zu mitte stationiert
## Fehlerbehebung
### Problembehandlung bei der Installation
Stellen Sie sicher, dass alle Umgebungsvariablen korrekt gesetzt sind.
### Lösungen bei häufigen Fehlern
Bei Neben-Effekten während der Weiterentwicklung könnte es hilfreich sein, die Seite neu zu laden (aktualisieren).
## Verzeichnisstruktur
### /pages
- _app.js
Grundlegende Konfiguration und Layout für die gesamte Anwendung. Importiert globale Styles und Recoil-Root für State Management.
- index.js
Startseite der Anwendung, lädt die Hauptkomponenten und initiiert die Karte.
- [...path].js
Eine Dynamic Route, die verwendet wird, um verschiedene URLs zu verarbeiten, die spezifische Ansichten oder Funktionen in der Anwendung darstellen.
### /components
- DataSheet.js
Verantwortlich für die Anzeige und Interaktion mit den Layer- und Stationsauswahlen. Ermöglicht das Aktivieren/Deaktivieren von Layern und zeigt Informationen zu geografischen Punkten.
- MapComponent.js
Kernkomponente für die Darstellung der Karte. Beinhaltet Logik für das Hinzufügen von Layern, Zoom-Funktionen und andere interaktive Elemente.
### /public
- Speicherort für statische Dateien wie Map (falls Internet nicht vorhanden), Bilder, Icons und andere Medien, die in der Benutzeroberfläche verwendet werden.
### /styles
- Enthält CSS-Dateien und andere Styling-Ressourcen für das Tailwind CSS-Framework.
### /store
- Zustandsmanagement-Dateien, die mit Recoil erstellt wurden. Diese Dateien definieren Atome und Selektoren für den globalen Zustand der Anwendung.
### /api
- addLocation.js
API-Route zur Handhabung des Hinzufügens neuer Standortdaten zur Datenbank.
- updateLocation.js
API-Route zur Aktualisierung bestehender Standortdaten.
- locations.js
API-Route, die für das Abrufen von Standortdaten zuständig ist.
### /config
- config.js
Konfigurationsdatei, die wichtige Konstanten und Einstellungen für die Anwendung enthält, wie z.B. API-Endpoints.
# Benutzeranleitung
## Hauptfunktionen
### Karteninteraktionen
#### Zoomen und Verschieben
- **Zoomen:** Sie können mit dem Mausrad ein- und auszoomen, um näher an Bereiche heranzukommen oder sich für eine Übersicht zu entfernen.
- **Verschieben:** Halten Sie die linke Maustaste gedrückt und bewegen Sie die Maus, um die Karte zu verschieben und verschiedene Bereiche zu erkunden.
#### Kontextmenü
- **Zoom-Optionen:** Das Kontextmenü bietet Funktionen zum gezielten Rein- und Rauszoomen in definierte Bereiche.
- **Zentrieren:** Sie können eine bestimmte Koordinate in der Mitte des Bildschirms zentrieren, indem Sie diese Option im Kontextmenü auswählen.
#### Steuerung der Kartenansicht
- **Stationsauswahl:** Oben rechts auf der Karte befindet sich ein Dropdown-Menü, mit dem Sie direkt zu einer ausgewählten Station zoomen können.
- **Layer-Kontrolle:** In derselben Oberfläche können Sie über Checkboxen verschiedene System-Layer ein- oder ausblenden, um spezifische Informationen auf der Karte anzuzeigen oder zu verbergen.
- **Rauszoomen-Icon:** Ein Icon zum Rauszoomen ermöglicht es Ihnen, schnell zu einem definierten Bereich zurückzukehren.
#### Koordinatenanzeige
- **Koordinaten-Alert:** Im Kontextmenü können Sie die aktuellen Koordinaten der Mausposition in einem Alert-Fenster anzeigen lassen.
### POIs hinzufügen und bearbeiten
1. **POI hinzufügen:**
- Rechtsklicken Sie auf den gewünschten Ort auf der Karte, um das Kontextmenü zu öffnen.
- Wählen Sie die Option "Neuen Standort hinzufügen".
- Füllen Sie das Formular mit den notwendigen Informationen über den POI aus und klicken Sie auf "Speichern", um den Standort zur Karte und zur Datenbank hinzuzufügen.
2. **POI bearbeiten:**
- Um einen bestehenden POI zu verschieben, klicken und halten Sie den Marker des POI und ziehen Sie ihn an die neue Position.
- Lassen Sie den Marker los, um die neue Position zu bestätigen. Die Position wird automatisch in der MySQL-Datenbank aktualisiert.
### Autostart
-Die Datei StartNodeApp.bat kann kopiert werden und in einem beliebige Ort eingefügt werden,bei Doppel-Klick startet die Datei dann die
Start-Dev.ps1, Start-Dev.ps1 startet die Web-Anwendung
Diese Dokumentation und Benutzeranleitung kann weiter angepasst und erweitert werden.
PS C:\Users\isa.LTW\Desktop\24.05.2024> .\FilterTreeOutput.ps1
Auflistung der Ordnerpfade f³r Volume OS
Volumeseriennummer : ECF0-871C
C:\USERS\ISA.LTW\DESKTOP\24.05.2024\NODEMAP 24.05.2024
| .env.local
| .gitignore
| package-lock.json
| package.json
| postcss.config.js
| Recoil in Next.js-Projekt _ Wiki.js.pdf
| Start-Dev.ps1
| StartNodeApp.bat
| tailwind.config.js
|
+---.next
| | build-manifest.json
| | package.json
| | react-loadable-manifest.json
| | trace
| |
| +---cache
| | +---swc
| | | \---plugins
| | | \---v7_windows_x86_64_0.106.15
| | \---webpack
| |
| +---server
| | | components_MapComponent_js.js
| | | interception-route-rewrite-manifest.js
| | | middleware-build-manifest.js
| | | middleware-manifest.json
| | | middleware-react-loadable-manifest.js
| | | next-font-manifest.js
| | | next-font-manifest.json
| | | pages-manifest.json
| | | webpack-api-runtime.js
| | | webpack-runtime.js
| | | _error.js
| | |
| | +---pages
| | | | index.js
| | | | _app.js
| | | | _document.js
| | | | _error.js
| | | |
| | | \---api
| | | | getPoiById.js
| | | | readLocations.js
| | | | readPoiTyp.js
| | | | [...path].js
| | | |
| | | \---talas_v5
| | | location_device.js
| | |
| | \---vendor-chunks
| | @heroicons.js
PS C:\Users\isa.LTW\Desktop\24.05.2024>