# 🧭 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`