This commit is contained in:
Ismail Ali
2025-05-27 19:41:17 +02:00
parent 257341475c
commit 97fbb6fdc1
86 changed files with 1452 additions and 1185 deletions

View File

@@ -0,0 +1,13 @@
<!-- /docs/hooks/layers/useAreaMarkersLayer.md -->
# 🗺️ useAreaMarkersLayer.js
Lädt Bereichs-/Stationsmarker aus einer API und rendert sie auf der Karte.
## Features
- Marker mit Tooltip für Standort & Bereich
- Draggable Marker (verschiebbar)
- Automatischer API-Fetch mit `fetch(...)`
- Dynamisches Layer-Handling via localStorage ("mapLayersVisibility")
- Automatisches Speichern neuer Koordinaten per `updateAreaThunk()`

View File

@@ -0,0 +1,11 @@
<!-- /docs/hooks/layers/useCiscoRouterMarkersLayer.md -->
# 🌐 useCiscoRouterMarkersLayer.js
Hook zur Verwaltung aller Cisco-Router-Marker in der Leaflet-Karte.
## Funktionen
- Lädt Geräte per `createAndSetDevices(6, ...)`
- Fügt Marker hinzu & registriert Popup/Kontextmenü
- Verwendet `checkOverlappingMarkers(...)`

View File

@@ -0,0 +1,11 @@
<!-- /docs/hooks/layers/useDauzMarkersLayer.md -->
# 🔧 useDauzMarkersLayer.js
Spezialisierter Hook zur Verwaltung von DAUZ-Gerätemarkern (System-ID: 110)
## Verhalten
- Marker mit Popup & Kontextmenü
- Nutzung von `createAndSetDevices(...)`
- Sichtbarkeit direkt über Kartenlayer steuerbar

View File

@@ -0,0 +1,11 @@
<!-- /docs/hooks/layers/useDrawLines.md -->
# 🧬 useDrawLines.js
Hook zur Konvertierung von GIS-Linien in kartentaugliche Koordinatenpaare.
## Schritte
- Lädt Linien mit `fetchGisLinesThunk()`
- Wandelt `points[x, y]` in Leaflet-Koordinaten `[lat, lng]` um
- Gibt `setLinePositions([...])` zurück

View File

@@ -0,0 +1,11 @@
<!-- /docs/hooks/layers/useEciMarkersLayer.md -->
# 🛰️ useEciMarkersLayer.js
Verwaltet die Darstellung und Events für ECI-Marker (System-ID: 2)
## Features
- Kontextmenü & Popup für jeden Marker
- Erkennung überlappender Marker (`checkOverlappingMarkers`)
- Nutzung von `createAndSetDevices(...)`

View File

@@ -0,0 +1,11 @@
<!-- /docs/hooks/layers/useGmaMarkersLayer.md -->
# 🌡️ useGmaMarkersLayer.js
Spezialhook für GMA-Marker mit Messwertanzeige (LT, FBT, GT, RLF).
## Besonderheiten
- Tooltip enthält Temperatur-/Feuchtigkeitswerte aus Redux
- Eigenes Kontextmenü mit Zoom/Zentrieren
- Verwendet `marker.options.areaName` zur Messzuordnung

View File

@@ -0,0 +1,10 @@
<!-- /docs/hooks/layers/useLteModemMarkersLayer.md -->
# 📶 useLteModemMarkersLayer.js
Steuert Marker vom Typ LTE-Modem (System-ID: 5)
## Features
- Standard-Kontextmenü + Popup
- Integration mit OMS und Overlap-Check

View File

@@ -0,0 +1,10 @@
<!-- /docs/hooks/layers/useMessstellenMarkersLayer.md -->
# 🧾 useMessstellenMarkersLayer.js
Für Messstellen-Marker (System-ID: 13)
## Verhalten
- Einfache Marker mit Tooltip
- Nutzung von `createAndSetDevices(...)` + Kontextmenü

View File

@@ -0,0 +1,10 @@
<!-- /docs/hooks/layers/useOtdrMarkersLayer.md -->
# 🔍 useOtdrMarkersLayer.js
Darstellung von OTDR-Messpunkten (System-ID: 9)
## Funktionen
- Popup-Interaktion beim Hover
- Marker mit Kontextmenü via `addContextMenuToMarker`

View File

@@ -0,0 +1,7 @@
# 🏭 useSiemensMarkersLayer.js
Für Siemens-Geräte (System-ID: 8).
- Marker mit Kontextmenü und Overlap-Prüfung
- Integration mit OMS
- Nutzung von `checkOverlappingMarkers(...)`

View File

@@ -0,0 +1,7 @@
# 📡 useSmsfunkmodemMarkersLayer.js
Filtert `GisSystemStatic` nach SMS Modem (System 111 oder Name).
- Icon: `/img/icons/pois/sms-funkmodem.png`
- Kontextmenü & Popup
- Sichtbarkeit über `isVisible` steuerbar

View File

@@ -0,0 +1,7 @@
# ❔ useSonstigeMarkersLayer.js
Für alle Geräte mit System-ID 200 (Sonstige).
- Klassische Leaflet-Marker
- Kontextmenü und Popup
- Nutzung von `createAndSetDevices(...)`

View File

@@ -0,0 +1,6 @@
# 🌐 useTalasMarkersLayer.js
Für TALAS-Systeme (System-ID: 1).
- Popup + Kontextmenü auf Marker
- Fügt Marker zuerst zu OMS, dann zu Karte hinzu

View File

@@ -0,0 +1,6 @@
# 🔗 useTalasiclMarkersLayer.js
Spezialhook für Geräte vom Typ TALASICL (System-ID: 100).
- Erstellt Marker mit Standardverhalten
- Kontextmenü, Popup, Overlap-Prüfung

View File

@@ -0,0 +1,6 @@
# ⚙️ useTkComponentsMarkersLayer.js
Für TK-Komponenten (System-ID: 30).
- Lädt Marker via `createAndSetDevices`
- Marker-Koordinaten können debug-geloggt werden

View File

@@ -0,0 +1,7 @@
# 💡 useUlafMarkersLayer.js
Spezialhook für ULAF-Systeme (System-ID: 0).
- Marker mit ULAF-Icon
- Kontextmenü und Popup (statisch)
- Dynamisch generierter Popupinhalt

View File

@@ -0,0 +1,6 @@
# 🧰 useWagoMarkersLayer.js
Für WAGO-Systeme (System-ID: 7).
- Kontextmenü, Popup, Overlapping-Support
- OMS-Integration und Layer-Hinzufügung

View File

@@ -0,0 +1,7 @@
# 🔷 useWdmMarkersLayer.js
Verwaltet WDM-Marker (System-ID: 10) in Leaflet.
- Marker mit Kontextmenü
- Mouseover-Popup
- Nutzung von `createAndSetDevices(...)`

View File

@@ -0,0 +1,17 @@
<!-- /docs/hooks/useCreateAndSetDevices.md -->
# 🛠️ useCreateAndSetDevices.js
Custom Hook zur Initialisierung von Leaflet-Markern für ein bestimmtes System.
Bindet `createAndSetDevices(...)` automatisch in einen `useEffect`.
## Parameter
- `systemId`: ID des Gerätesystems (z.B. 1 = TALAS)
- `setMarkersFunction`: Funktion zum Speichern der erzeugten Marker
- `GisSystemStatic`: Systemdaten aus Redux
- `priorityConfig`: Konfigurationsobjekt zur Prioritätsbewertung
## Redux
- Bezieht `polylineEventsDisabled` aus Redux zur Steuerung der Interaktivität

View File

@@ -0,0 +1,17 @@
<!-- /docs/hooks/useDynamicMarkerLayers.md -->
# 🔄 useDynamicMarkerLayers.js
Verwaltet alle Marker-Layergruppen dynamisch und modular in einem zentralen Hook.
## Funktionen
- Initialisiert LayerGroups für 15+ Gerätesysteme
- Ruft `createAndSetDevices()` pro System-ID auf
- Führt automatisch Overlap-Check aus (`checkOverlappingMarkers`)
- Speichert erzeugte Marker in `setMarkerStates`
## Voraussetzungen
- Karte (`map`) muss bereit sein
- `GisSystemStatic` + `priorityConfig` + Marker-Setter müssen übergeben werden

View File

@@ -1,44 +0,0 @@
# 📍 useFetchPoiData Laden von POI-Typen und Icons
## Zweck
Dieser React-Hook wird im Frontend verwendet, um:
1. Alle POI-Typen (`poiTyp/readPoiTyp`)
2. Alle POI-Icons (`pois/poi-icons`)
vom Server abzurufen und sie in lokale React-Komponenten zu laden.
---
## Aufrufstruktur
```js
const API_BASE_URL = typeof window !== "undefined" ? `${window.location.protocol}//${window.location.hostname}:3000` : "";
await fetch(`${API_BASE_URL}/api/talas_v5_DB/poiTyp/readPoiTyp`);
await fetch(`${API_BASE_URL}/api/talas_v5_DB/pois/poi-icons`);
```
---
## Erklärung
Da die Anwendung produktiv über Port `80` läuft, aber die Next.js-API auf Port `3000`, wird `:3000` explizit in der URL ergänzt.
Dieser Hook funktioniert nur im Client-Browser. Die Prüfung mit `typeof window !== "undefined"` schützt davor, dass `window` im SSR-Kontext (Server-Side Rendering) undefined ist.
---
## Verhalten bei Fehlern
- Wenn die Antwort nicht `ok` ist (z.B. 404, 500), wird ein Fehler in der Console angezeigt.
- Wenn die Daten kein Array sind (für `poiTyp`), wird eine zusätzliche Validierung ausgelöst.
---
## Siehe auch
- [`MapComponent`](../components/MapComponent.md)
- `pages/api/talas_v5_DB/poiTyp/readPoiTyp.js`
- `pages/api/talas_v5_DB/pois/poi-icons.js`

View File

@@ -0,0 +1,15 @@
<!-- /docs/hooks/useLayerVisibility.md -->
# 👁️ useLayerVisibility.js
Custom Hook zur dynamischen Steuerung von Layer-Sichtbarkeit basierend auf Redux.
## Features
- Entfernt oder zeigt Marker je nach `mapLayersVisibility`
- Nutzt `OverlappingMarkerSpiderfier` (`oms`)
- Normalisiert Layer-Keys (z.B. `"GMA"``"gma"`)
## Intern
Verwendet `addContextMenuToMarker()` zur Kontextmenüintegration pro Marker.

19
docs/hooks/useLineData.md Normal file
View File

@@ -0,0 +1,19 @@
<!-- /docs/hooks/useLineData.md -->
# 📊 useLineData.js
Lädt Linienstatusdaten (Farben, Tooltips) aus zwei Webservices in Redux und bereitet sie auf.
## Rückgabe
- `lineColors`: Farben pro Linie basierend auf Status
- `tooltipContents`: HTML-Tooltip pro Modul/Station
## Datenquellen
- `fetchGisLinesThunk()` (Struktur)
- `fetchGisLinesStatusThunk()` (Statusdaten)
## Intern
- Nutzt Map `valueMap`, um Messwert, Schleifenwert, Meldungen zu gruppieren

View File

@@ -0,0 +1,18 @@
<!-- /docs/hooks/useMapComponentState.md -->
# 🧠 useMapComponentState.js
Sammelt zentrale UI-Zustände und Redux-Daten für die `MapComponent`.
## Rückgabe
- POI-Typen + Ladezustand
- `deviceName` (z.B. erstes Gerät)
- `locationDeviceData`
- `priorityConfig`
- `menuItemAdded`, `setMenuItemAdded`
- Sichtbarkeit des POI-Layers
## Redux
- `fetchPoiTypThunk`, `fetchGisStationsStaticDistrictThunk`, `fetchPriorityConfigThunk`

View File

@@ -0,0 +1,16 @@
<!-- /docs/hooks/useMarkerLayers.md -->
# 📍 useMarkerLayers.js
Steuert das Hinzufügen oder Entfernen von Markern in ein Leaflet-Map-Layer.
## Verwendung
```js
useMarkerLayers(map, gmaMarkers, "GMA");
```
## Redux
- Liest `mapLayersVisibility` aus dem Store
- Reagiert automatisch auf Änderungen

View File

@@ -0,0 +1,15 @@
<!-- /docs/hooks/usePolylineTooltipLayer.md -->
# 💬 usePolylineTooltipLayer.js
Initialisiert und steuert Polylinien + Tooltip-Verhalten für Linienmessdaten.
## Funktion
- Nutzt `setupPolylines(...)` zur Marker- und Linienerstellung
- Tooltip-Anzeige bei `mouseover`, dynamisch positioniert
- Entfernt alte Marker und Polylinien automatisch
## Parameter (gekürzt)
- `map`, `markers`, `setMarkers`, `setPolylines`, `linePositions`, `tooltipContents`, `lineColors`, etc.