Files
nodeMap/docs/frontend/utils/devices/createAndSetDevices.md
Ismail Ali 7b1d255432 refactor+docs: BASE_URL entfernt, Port-Logik vereinheitlicht (v1.1.75)
- setupPolylines.js und createAndSetDevices.js auf dynamische Link-Generierung umgestellt
- Entfernung von NEXT_PUBLIC_BASE_URL aus .env.local
- Verwendung von NEXT_PUBLIC_API_PORT_MODE zur Steuerung von :80 in Dev
- Neue Dokumentationen unter /docs/frontend/utils/{polylines,devices}/
- CHANGELOG.md und appVersion.js auf Version 1.1.75 aktualisiert
2025-05-16 20:44:52 +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`