This commit is contained in:
ISA
2025-05-27 13:26:47 +02:00
parent cdca624874
commit 69d28844a2
9 changed files with 156 additions and 5 deletions

3
.gitignore vendored
View File

@@ -24,9 +24,10 @@ trace
# Ignore specific Next.js build files # Ignore specific Next.js build files
pages-manifest.json pages-manifest.json
nodeMap für 13 am 16.07.2024.zip
Lastenheft.js Lastenheft.js
# Dendron-Verzeichnis ignorieren # Dendron-Verzeichnis ignorieren
/draw.io/ /draw.io/
# Ignore docs.zip
docs.zip

View File

@@ -1,2 +1,2 @@
// /config/appVersion // /config/appVersion
export const APP_VERSION = "1.1.189"; export const APP_VERSION = "1.1.190";

View File

@@ -1,3 +1,5 @@
<!-- /docs/README.md -->
# Entwickler-Dokumentation # Entwickler-Dokumentation
Willkommen in der technischen Dokumentation von NodeMap. Willkommen in der technischen Dokumentation von NodeMap.

View File

@@ -0,0 +1,90 @@
<!-- /docs/architecture.md -->
# 🧠 Architekturübersicht NodeMap
Dieses Dokument beschreibt die technische Gesamtarchitektur des Projekts **NodeMap**, einer kartenbasierten Webanwendung zur Anzeige, Bearbeitung und Verwaltung von GIS-Daten, POIs und Gerätestatus.
---
## ⚙️ Technologie-Stack
| Komponente | Beschreibung |
| --------------------- | ---------------------------------------------------------------------- |
| **Frontend** | React 18 + Next.js (App Router) |
| **State-Management** | Redux Toolkit mit zentralem Store, Thunks & Slices |
| **UI** | Tailwind CSS + Leaflet + React-Icons |
| **Backend-Anbindung** | Webservices via `WebServiceMap.asmx` (IIS) + lokale Next.js API für DB |
| **Datenbank** | MySQL (Produktiv & Entwicklung, z.T. via Docker) |
| **Deployment** | Windows Server (IIS), optional per `nssm` als Dienst |
---
## 🗺️ Architekturüberblick
```
+------------------+ +------------------+ +------------------+
| Leaflet Map | <---> | Redux Store | <---> | Webservices |
| (Interaktivität) | | (Status & Data) | | (IIS, .asmx) |
+------------------+ +------------------+ +------------------+
^
|
v
+------------------+ +------------------+ +-------------------+
| POI-Komponenten | <---> | Redux Slices | <---> | Next.js API-Routen|
| (Add/Edit) | | (z.B. poiSlice) | | (Datenbank) |
+------------------+ +------------------+ +-------------------+
```
---
## 🔁 Datenfluss (Beispiel: POI anzeigen)
1. Leaflet-Karte lädt bei `MapComponent` Mounting
2. Redux-Thunk `fetchPoiMarkersThunk` wird ausgelöst
3. Thunk ruft `fetchPoiDataService.js` (DB) oder Webservice (IIS) auf
4. Ergebnisse werden im Slice `readPoiMarkersStoreSlice` gespeichert
5. Komponenten lesen POI-Daten über `useSelector(...)` aus dem Store
6. POIs werden als Marker in Leaflet gesetzt
---
## 📁 Schlüsselfunktionen & Module
| Bereich | Datei/Modul | Aufgabe |
| ------------- | ----------------------------------------------- | ---------------------------------------- |
| Kartenlogik | `MapComponent.js` | Zentrale Initialisierung und Layer-Logik |
| Webservices | `services/webservice/` | Kommunikation mit TALAS V5 Webservice |
| Datenbank | `services/database/` | Zugriff auf lokale Next.js-API & DB |
| POIs | `AddPOIModal.js`, `PoiUpdateModal.js` | UI für POI-Erstellung & -Bearbeitung |
| Redux | `redux/slices/`, `redux/thunks/`, `redux/store` | Globaler State, API-Steuerung |
| Konfiguration | `.env.local`, `config.js`, dynamic URLs | IP, basePath, Ports |
---
## 🧩 Besonderheiten
- **Konfigurierbarer basePath:**
Pfad wie `/talas5` ist optional und kann per `NEXT_PUBLIC_BASE_PATH` in `.env.local` gesetzt werden.
- **Rechteabhängige UI:**
Funktionen (z.B. POI bearbeiten) basieren auf Benutzerrechten (`IdRight`) vom Server.
- **Zentrale Komponentensteuerung:**
Komponenten wie `MapLayersControlPanel` oder `CoordinatePopup` kontrollieren Layer & Interaktion.
- **Kontextmenü-Logik:**
Marker & Polylinien besitzen eigene Kontextmenüs dynamisch zusammengesetzt und verwaltet.
---
## 📦 Versionierung & Builds
- Version ist in `appVersion.js` definiert → wird über `NEXT_PUBLIC_APP_VERSION` eingeblendet
- Build erfolgt via `npm run build`, Auslieferung über `.next/`
- Nicht benötigte Dateien wie `__tests__`, `docs/`, `scripts/` etc. werden nicht in den Build aufgenommen
---
## 📚 Weiterführende Dokumentation
- [`build-and-deploy.md`](./build-and-deploy.md)
- [`env.local.schema.md`](./env.local.schema.md)
- [`redux/slices/`](./redux/slices/)
- [`services/webservice/`](./services/webservice/)

46
docs/build-and-deploy.md Normal file
View File

@@ -0,0 +1,46 @@
<!-- /docs/build-amddeploy.md -->
# 🛠 Deployment & Build-Verhalten (Next.js)
Diese Datei beschreibt, welche Projektdateien in den Build (`.next/`) aufgenommen werden und welche nicht.
Ziel: Klarheit für Onboarding, Deployment-ZIP-Erstellung oder CI/CD.
---
## 📦 Wird beim `npm run build` in `.next/` gespeichert
| Inhalt | Beschreibung |
| ---------------------- | -------------------------------------------------- |
| Kompilierte Seiten | Alle unter `/pages/` |
| API-Routen | Alles aus `pages/api/` |
| Assets aus `public/` | Werden im Build nicht verändert, aber ausgeliefert |
| CSS-Dateien (Tailwind) | Werden gebundelt und minimiert |
| `.env.local` | Wird eingelesen, aber nicht exportiert |
| JS/TS-Quellcode | Wird zu Client- und Server-Bundles kompiliert |
---
## 🧹 Wird **nicht** in `.next/` aufgenommen
| Ordner/Datei | Zweck / Grund |
| --------------------------- | -------------------------------------------- |
| `__tests__`, `__mocks__` | Nur lokal für Tests, nicht im Build |
| `cypress/` | End-to-End-Tests, nur für lokale Entwicklung |
| `scripts/` | Hilfsskripte, nicht für Runtime relevant |
| `docs/` | Dokumentation, nur für Entwickler |
| `README.md`, `CHANGELOG.md` | Doku nicht erforderlich zur Laufzeit |
| `Jenkinsfile`, `.github/` | CI/CD wird vom Buildsystem verwendet |
---
## 📂 Empfohlene Struktur für Deployment (z.B. ZIP-Upload auf Server)
Nur folgende Dateien/Ordner übertragen:
```bash
.next/
public/
package.json
package-lock.json
.env.local
```

View File

@@ -1,3 +1,5 @@
<!-- /docs/checklist.md -->
# 🧾 Projektpflege-Checkliste # 🧾 Projektpflege-Checkliste
Diese Datei dient als persönliche Gedächtnisstütze bei der Entwicklung und Pflege des Projekts. Diese Datei dient als persönliche Gedächtnisstütze bei der Entwicklung und Pflege des Projekts.

View File

View File

@@ -1,3 +1,5 @@
<!-- /docs/env.local -->
### /docs/env.local.schema.md ### /docs/env.local.schema.md
- `NEXT_PUBLIC_API_HOST` → Webservice-DNS oder IP - `NEXT_PUBLIC_API_HOST` → Webservice-DNS oder IP

View File

@@ -1,16 +1,21 @@
```markdown <!-- /docs/nssm-exe-installation.md -->
````markdown
- Als Administrator Eingabeaufforderung oder PowerShell öffnen - Als Administrator Eingabeaufforderung oder PowerShell öffnen
- Navigiere zu dem NodeMap Projekt Verzeichnis: - Navigiere zu dem NodeMap Projekt Verzeichnis:
```shell ```shell
C:\Users\Administrator>cd C:\inetpub\wwwroot\talas5\nodeMap C:\Users\Administrator>cd C:\inetpub\wwwroot\talas5\nodeMap
``` ```
````
- Befehl zum Erstellen eines Dienstes: - Befehl zum Erstellen eines Dienstes:
Führen Sie den folgenden Befehl aus, um einen neuen Dienst zu erstellen: Führen Sie den folgenden Befehl aus, um einen neuen Dienst zu erstellen:
```shell ```shell
nssm.exe install NodeMapService nssm.exe install NodeMapService
``` ```
Nachdem Sie diesen Befehl ausgeführt haben, öffnet sich ein NSSM-Dialogfenster. Nachdem Sie diesen Befehl ausgeführt haben, öffnet sich ein NSSM-Dialogfenster.
**Dienstkonfiguration:** **Dienstkonfiguration:**
@@ -45,4 +50,7 @@
nssm.exe remove NodeMapService confirm nssm.exe remove NodeMapService confirm
``` ```
dauert bis 1 Minute dauert bis 1 Minute
```
``` ```