chore: config.js entfernt – Konfiguration zentral über .env.local
- alle Importe und Aufrufe von config.js entfernt - Webservices nutzen direkt window.location + NEXT_PUBLIC_API_PORT_MODE - zentrale Konfigurationsstrategie über .env.local abgeschlossen
This commit is contained in:
21
CHANGELOG.md
21
CHANGELOG.md
@@ -4,6 +4,27 @@ Alle bedeutenden Änderungen an diesem Projekt werden in dieser Datei dokumentie
|
||||
|
||||
---
|
||||
|
||||
## [1.1.150] - 2025-05-22
|
||||
|
||||
### Removed
|
||||
|
||||
- `config.js` vollständig gelöscht – keine Abhängigkeiten mehr im Projekt
|
||||
- Funktion `isMockMode()` entfernt – direkter Zugriff auf `process.env.NEXT_PUBLIC_USE_MOCK_API` ersetzt zentrale Hilfsfunktion
|
||||
|
||||
### Changed
|
||||
|
||||
- `fetchUserRightsService.js`, `fetchGisSystemStaticService.js` und `useMapComponentState.js` angepasst:
|
||||
- Verwendet dynamisch `window.location` + `.env.local` statt config.js
|
||||
- Verbesserte Übersichtlichkeit und zentrale Steuerung über `.env.local`
|
||||
|
||||
### Architecture
|
||||
|
||||
- Konfiguration und API-Port-Steuerung vollständig in `.env.local` ausgelagert
|
||||
- Einheitliche Struktur für Webservice-Aufrufe (`window.location + mode`)
|
||||
- Vereinfachtes Debugging, klarere Struktur für neue Entwickler
|
||||
|
||||
---
|
||||
|
||||
## [1.1.148] - 2025-05-22
|
||||
|
||||
### Hinzugefügt
|
||||
|
||||
@@ -261,7 +261,7 @@ NEXT_PUBLIC_USE_MOCK_API=true
|
||||
### Serverkonfiguration
|
||||
|
||||
- Port 3000 muss freigegeben sein
|
||||
- `.env.local`, `config.js`, `[...]path.js` und `MapComponent.js` müssen IP und API-Endpunkte korrekt konfiguriert haben
|
||||
- .env.local, MapComponent.js und alle Services verwenden dynamische API-Endpunkte basierend auf window.location und NEXT_PUBLIC_API_PORT_MODE
|
||||
- Die Anwendung wird über einen `nssm` Windows-Service gestartet (optional)
|
||||
- Browser: Chrome ab Version 125.0.6420.142 empfohlen
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@ import L from "leaflet";
|
||||
import "leaflet/dist/leaflet.css";
|
||||
import "leaflet-contextmenu/dist/leaflet.contextmenu.css";
|
||||
import "leaflet-contextmenu";
|
||||
import * as config from "../../config/config.js";
|
||||
import "leaflet.smooth_marker_bouncing";
|
||||
import OverlappingMarkerSpiderfier from "overlapping-marker-spiderfier-leaflet"; //sieht deaktiviert aber ist das nicht so und wird benötigt
|
||||
import "react-toastify/dist/ReactToastify.css";
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
// /config/appVersion
|
||||
export const APP_VERSION = "1.1.149";
|
||||
export const APP_VERSION = "1.1.150";
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
// Datei: /config/config.js
|
||||
import { BASE_URL } from "../config/paths";
|
||||
|
||||
// Prüfen, ob Mock-Modus aktiv ist
|
||||
function isMockMode() {
|
||||
return process.env.NEXT_PUBLIC_USE_MOCK_API === "true";
|
||||
}
|
||||
|
||||
// Definieren der grundlegenden Umgebungseinstellungen und Konfigurationen der Karte
|
||||
|
||||
const mode = process.env.NEXT_PUBLIC_API_PORT_MODE;
|
||||
let serverURL = "";
|
||||
|
||||
if (typeof window !== "undefined") {
|
||||
serverURL = mode === "dev" ? `${window.location.protocol}//${window.location.hostname}:80` : `${window.location.origin}`;
|
||||
}
|
||||
|
||||
if (typeof window !== "undefined" && !serverURL && !isMockMode()) {
|
||||
throw new Error("Die Umgebungsvariable ist nicht gesetzt!");
|
||||
}
|
||||
|
||||
if (typeof window !== "undefined") {
|
||||
console.log("%c 1- serverURL in config:", "color: #006400;", serverURL);
|
||||
}
|
||||
|
||||
// Initialisieren von Variablen, die später im Browserkontext gesetzt werden
|
||||
let windowHeight, url_string, url, idMap, idUser;
|
||||
|
||||
// URL-Setup - dynamisch abhängig von Mock oder Echtbetrieb
|
||||
if (typeof window !== "undefined") {
|
||||
windowHeight = window.innerHeight;
|
||||
url_string = window.location.href;
|
||||
url = new URL(url_string);
|
||||
console.log("%c 2- URL in config:", "color: #006400; font-size: 16px; background-color: #f0f0f0;", url);
|
||||
|
||||
idMap = url.searchParams.get("m");
|
||||
idUser = url.searchParams.get("u");
|
||||
console.log(`4- Parameter 'idMap' : ${idMap}`);
|
||||
console.log(`5- Parameter 'idUser': ${idUser}`);
|
||||
}
|
||||
|
||||
// Export der Variablen und URLs
|
||||
export { serverURL, windowHeight, url_string, url, idMap, idUser, isMockMode };
|
||||
@@ -2,7 +2,6 @@
|
||||
// POI -> Kontextmenü -> POI bearbeiten -> Dropdown Geräteauswahl
|
||||
import { useState, useEffect } from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
import { isMockMode } from "../config/config";
|
||||
|
||||
export const useMapComponentState = () => {
|
||||
const [poiTypData, setPoiTypData] = useState([]);
|
||||
@@ -17,7 +16,7 @@ export const useMapComponentState = () => {
|
||||
|
||||
useEffect(() => {
|
||||
const fetchPoiTypData = async () => {
|
||||
if (isMockMode()) {
|
||||
if (process.env.NEXT_PUBLIC_USE_MOCK_API === "true") {
|
||||
console.log("⚠️ Mock-API: POI Typen geladen (Mock)");
|
||||
|
||||
const mockData = [
|
||||
|
||||
@@ -1,26 +1,25 @@
|
||||
// /services/webservice/fetchUserRightsService.js
|
||||
import * as config from "../../config/config";
|
||||
|
||||
export const fetchUserRightsService = async () => {
|
||||
if (config.USE_MOCK_API) {
|
||||
console.log("⚠️ Mock-API: Benutzerrechte geladen");
|
||||
return [56, 57, 58]; // Beispielrechte
|
||||
const mode = process.env.NEXT_PUBLIC_API_PORT_MODE;
|
||||
const apiBaseUrl = mode === "dev" ? `${window.location.protocol}//${window.location.hostname}:80/talas5/ClientData/WebServiceMap.asmx` : `${window.location.origin}/talas5/ClientData/WebServiceMap.asmx`;
|
||||
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
const idMap = params.get("m");
|
||||
const idUser = params.get("u");
|
||||
|
||||
const url = `${apiBaseUrl}/GetUserRights?idMap=${idMap}&idUser=${idUser}`;
|
||||
|
||||
const response = await fetch(url, {
|
||||
method: "GET",
|
||||
headers: {
|
||||
Connection: "close",
|
||||
},
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error("Fehler beim Abrufen der Benutzerrechte");
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await fetch(`${config.serverURL}/talas5/ClientData/WebserviceMap.asmx/GisSystemStatic?idMap=${config.idMap}&idUser=${config.idUser}`, {
|
||||
method: "GET",
|
||||
headers: { Connection: "close" },
|
||||
});
|
||||
|
||||
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
|
||||
|
||||
const data = await response.json();
|
||||
if (!data || !data.Rights || !Array.isArray(data.Rights)) throw new Error("Invalid response structure");
|
||||
|
||||
return data.Rights.map((right) => right.IdRight);
|
||||
} catch (error) {
|
||||
console.error("Fehler beim Abrufen der Benutzerrechte:", error);
|
||||
return [];
|
||||
}
|
||||
const json = await response.json();
|
||||
return json.Rights || [];
|
||||
};
|
||||
|
||||
@@ -5,7 +5,6 @@ import { redrawPolyline } from "./polylines/redrawPolyline.js";
|
||||
import L from "leaflet";
|
||||
import "leaflet.smooth_marker_bouncing";
|
||||
import { toast } from "react-toastify";
|
||||
import * as config from "../config/config.js";
|
||||
|
||||
export const insertNewPOI = (closestPoints, newPoint, lineData, map) => {
|
||||
const newMarker = L.marker(newPoint, {
|
||||
|
||||
Reference in New Issue
Block a user