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

1.8 KiB
Raw Blame History

🧭 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:

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

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