Files
nodeMap/docs/utils/devices/createAndSetDevices.md
ISA b847b5d2c8 docs: Projektstruktur der Dokumentation an Quellcode angepasst
- Verzeichnisstruktur unter /docs spiegelt nun die tatsächliche Projektstruktur wider
- frontend/server-Trennung entfernt zugunsten von /docs/pages, /docs/redux, /docs/utils etc.
- Erhöht Wiederauffindbarkeit, Übersichtlichkeit und Entwicklerfreundlichkeit
2025-05-27 09:30:40 +02:00

79 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🧭 createAndSetDevices.js Geräte setzen und verwalten
## Zweck
Diese Datei erstellt Leaflet-Marker für aktive Geräte basierend auf Webservice-Daten
und konfiguriert Kontexteinträge für Interaktionen wie:
- Geräte-Popup anzeigen
- Station per Klick öffnen
- Statusinformationen einblenden
- Redux-Aktionen für ausgewähltes Gerät auslösen
---
## Datenquellen
Die Daten stammen aus:
- `GisStationsStaticDistrict` (statische Stationsinfos)
- `GisStationsStatusDistrict` (Statusinformationen)
Sie werden entweder über echte Webservices oder Mock-Daten geladen.
---
## Besonderheiten
- Marker werden mit Prioritätsicons gerendert
- Redux-Slices:
- `selectedDeviceSlice` wird bei Hover gesetzt
- `lineVisibilitySlice` aktualisiert Linienstatus
- Leaflet-Kontextmenü (nur Marker) mit Menüeintrag:
„Station öffnen (Tab)“
---
## Dynamische URL mit Port-Logik
Die Station-Links im Kontextmenü nutzen keine feste URL mehr.
Stattdessen wird dynamisch unterschieden:
```js
const mode = process.env.NEXT_PUBLIC_API_PORT_MODE;
const baseUrl =
mode === "dev"
? \`\${window.location.protocol}//\${window.location.hostname}:80/talas5/\`
: \`\${window.location.origin}/talas5/\`;
```
➡ Dadurch wird verhindert, dass bei jeder Server-IP `.env.local` oder ein Build nötig ist.
---
## Kontextmenüaktion
```js
window.open(`${baseUrl}cpl.aspx?ver=35&kue=24&id=${station.IdLD}`, "_blank");
```
---
## Weitere Funktionen
- Popup-HTML enthält Statusanzeigen (Name, Farbe, Meldung)
- Marker werden auf Klick animiert (bounce-Effekt)
- Kontextmenüeinträge werden sauber entfernt bei Klick außerhalb
---
## Siehe auch
- `setupPolylines.js`
- `redux/slices/selectedDeviceSlice.js`
- Webservices: `fetchGisStationsStaticDistrict.js`, `fetchGisStationsStatusDistrict.js`
---
📄 Pfad: `/docs/frontend/utils/devices/createAndSetDevices.md`