Commit Graph

547 Commits

Author SHA1 Message Date
ISA
5c06abc85e Systeme mit Map === 0 vollständig ausgeblenden 2025-08-11 10:17:09 +02:00
ISA
85266aa1ed GisSystemStytic system => system.IdSystem === 1 && system.Allow === 1 && system.Map === 1 dann anzeigen in controll panel 2025-08-11 08:52:46 +02:00
ISA
8073c787bc Merge branch 'v306' into develop 2025-07-30 15:35:05 +02:00
ISA
4ee6d42a61 fix: Systemtyp Berechtigung der User werden nicht beachtet 2025-07-30 15:19:53 +02:00
ISA
53c670feba fix: Geräte-Marker für Systeme ohne Statusdaten anzeigen (z. B. GMA)
- `createAndSetDevices.js` angepasst, sodass Marker auch ohne `statusDistrictData` erzeugt werden.
- Problem behoben, dass Marker wie GMA trotz vorhandener Koordinaten und Sichtbarkeit nicht gezeichnet wurden.
- Sicherheitsprüfung für Statusdaten optional gemacht, um Systems ohne Messdaten darzustellen.
2025-07-30 11:13:34 +02:00
ISA
d8567a9928 feat: implement map-specific localStorage and TALAS-Kabelstrecken dependency logic
- Add map-specific localStorage keys using URL parameters (m=mapId, u=userId)
- Implement kartenspezifische Sichtbarkeitseinstellungen per Map/User
- Fix localStorage priority over GisSystemStatic Allow values to preserve user settings
- Add bidirectional TALAS ↔ Kabelstrecken dependency logic:
  * Kabelstrecken aktiviert → TALAS automatisch aktiviert
  * TALAS deaktiviert → Kabelstrecken automatisch deaktiviert
- Update mapLayersSlice.js to respect existing localStorage values over system defaults
- Modify MapComponent.js to load map-specific visibility settings on mount
- Update MapLayersControlPanel.js with kartenspezifische localStorage handling
- Fix useDynamicDeviceLayers.js visibility logic (corrected boolean conditions)
- Update useAreaMarkersLayer.js for map-specific localStorage keys

BREAKING CHANGES:
- localStorage structure changed from "mapLayersVisibility" to "mapLayersVisibility_m{mapId}_u{userId}"
- User visibility preferences now have priority over GisSystemStatic Allow values
- TALAS and Kabelstrecken are now logically linked (dependency relationship)

This resolves issues with:
- Map switching losing visibility settings
- Browser reload overriding user preferences with system defaults
- Missing logical connection between TALAS stations and their cable routes
2025-07-29 10:12:56 +02:00
ISA
4755cefdd7 feat: implement device filtering based on GisSystemStatic Allow property
- Add Allow=1 filter in createAndSetDevices.js to hide devices with Allow=0
- Update mapLayersSlice.js setInitialLayers to respect Allow values for visibility
- Modify MapLayersControlPanel.js localStorage initialization to set visibility based on Allow property
- Only systems with Allow=1 are now visible by default, Allow=0 systems are hidden
- Ensures consistent filtering across device markers and layer visibility controls

This change addresses the requirement to hide stations/devices when their corresponding
IdSystem in GisSystemStatic.json has Allow=0, improving the map display by showing
only authorized/allowed systems to users.
2025-07-29 08:11:31 +02:00
ISA
9d7a696f91 feat: Add persistent localStorage for Kabelstrecken (polylines) visibility
- Add kabelstreckenVisible state with localStorage persistence
- Implement dual localStorage variables (kabelstreckenVisible + polylineVisible) for compatibility
- Add event system for cross-component polyline visibility updates
- Update MapComponent to listen for polylineVisibilityChanged events
- Ensure polylines display correctly on browser reload
- Migrate from Redux-only state to localStorage-first approach
- Add comprehensive debug logging for troubleshooting

Fixes issue where Kabelstrecken checkbox state was lost on page reload
and polylines were not displayed until manual toggle.
2025-07-25 13:09:18 +02:00
ISA
e1bfe7496b fix: Kabelstrecken-Checkbox und Anzeige an TALAS Allow-Status gekoppelt
- Checkbox für Kabelstrecken (polylines) wird deaktiviert, wenn TALAS (IdSystem: 1) Allow: 0 ist
- Polylinien werden auf der Karte nur angezeigt, wenn Allow: 1 für TALAS gesetzt ist
- Synchronisation zwischen UI
2025-07-25 10:08:45 +02:00
ISA
016e1a927d refactor: Tooltip-Generierung für Linien ausgelagert und Anzeige von Stationsnamen (LD_Name) hinzugefügt
- `generateLineTooltipContent` in eigene Datei extrahiert
- `useLineData` angepasst, um Stationen aus `gisStationsStaticDistrict` zu übergeben
- Anzeige der Station im Tooltip nun über `LD_Name` statt `matchingLine.name`
- Bugfix: "Station: N/A" wird nun korrekt angezeigt
2025-06-25 08:43:26 +02:00
ISA
89403164c6 refactor: Tooltip-HTML-Generierung aus useLineData ausgelagert
- Funktion `generateLineTooltipContent` aus `useLineData.js` extrahiert
- Neue Datei: `components/gisPolylines/tooltip/generateLineTooltipContent.js`
- Trennung von Logik (Hook) und Darstellung (Tooltip-HTML)
- Verbesserte Lesbarkeit und Wiederverwendbarkeit der Tooltip-Generierung
2025-06-25 07:49:52 +02:00
ISA
7c4fbc3988 refactor: Komponenten-Hooks strukturiert und in passende UI-Unterverzeichnisse verschoben
- useLineData.js → components/gisPolylines/tooltip/
- useLayerVisibility.js → components/mapLayersControlPanel/hooks/
- useAreaMarkersLayer.js → components/area/hooks/
- useDynamicDeviceLayers.js → components/devices/hooks/
- useDataUpdater.js & useMapComponentState.js → components/hooks/

💡 Ziel: Alle UI-bezogenen Hooks an logische Stellen verschoben, um Wartbarkeit zu verbessern.
🔍 Vorteil: Schnellere Navigation bei UI-Fehlern oder Layout-Anpassungen.
2025-06-25 07:21:05 +02:00
ISA
4070429193 docs: 2025-06-24 15:07:00 +02:00
ISA
acab69b74d docs: MapLayersControlPanel 2025-06-24 11:13:39 +02:00
ISA
23ec079eb9 chore: zentrale Versionsverwaltung verbessert und appVersion.js entfernt
- Versionsnummer wird nun automatisch in package.json, package-lock.json, .env.development und .env.production aktualisiert
- appVersion.js entfernt, da die Version nun direkt über process.env.NEXT_PUBLIC_APP_VERSION verwendet wird
- bumpVersion-Skript aktualisiert und vereinfacht
- Vorbereitungen für klarere Versionshistorie und Releases
2025-06-17 13:55:27 +02:00
ISA
71df8df72d fix: WebSocket funktioniert 2025-06-12 07:16:38 +02:00
ISA
0a97c359d8 feat: POI-Erstellung, -Bearbeitung und -Löschung vollständig überarbeitet
- POI-Tooltip zeigt jetzt den korrekten Gerätenamen aus Redux (gisStationsStaticDistrict)
- Bearbeitungsmodal (PoiUpdateModal) verwendet Redux-Daten (idLD → Gerätelabel) zur Initialisierung
- Fix: Geräte-Dropdown im Modal zeigt nun den ausgewählten POI korrekt an
- Refactor: `handleUpdatePoi()` nutzt `description` statt `name`
- Fehlerbehandlung im Modal verbessert (alert bei leerem Feld, besseres Logging)
- Redux-Thunk `updatePoiThunk` + `updatePoiService` stabilisiert
- Map aktualisiert POIs nach Bearbeitung automatisch

📦 Version erhöht auf 1.1.253
🗓️ 11.06.2025
2025-06-11 07:41:10 +02:00
Ismail Ali
8e5dac82b5 feat: Geräteauswahl und Anzeige beim POI-Handling auf WebService umgestellt
- setupPOIs.js angepasst: Gerätedaten (LD_Name) aus GisStationsStaticDistrict verwendet
- MapComponent.js übergibt WebService-Geräte (`Points`) als gisDevices an setupPOIs
- PoiUpdateModal.js nutzt LD_Name für react-select Dropdown statt name aus DB
- Dropdown-Anzeige und Tooltip-Daten für POIs nun konsistent mit WebService-Geräteliste
2025-06-10 17:55:36 +02:00
Ismail Ali
2d897081c5 feat: Duplikate im Stationen-Dropdown entfernt (Area_Name wird nur einmal angezeigt)
- Dropdown-Liste in MapLayersControlPanel.js angepasst
- Mehrfach vorkommende Area_Name-Einträge werden nun gefiltert
- Anzeige beschränkt sich auf eindeutige Namen, z. B. "Rastede" nur einmal
- Grundlage: Map-basierte Filterung im JSX-Rendering
2025-06-09 10:28:44 +02:00
Ismail Ali
b067a4c97e feat: WebSocket-Integration mit UI-Reaktivierung für GisStationsStaticDistrict
- WebSocket-Trigger implementiert, der `fetchGisStationsStaticDistrictThunk` ausführt.
- Trigger-Mechanismus über `useState` (`triggerUpdate`) sorgt für gezielten UI-Re-Render.
- Problem gelöst, dass Redux-Store zwar neue Daten enthielt, aber die UI nicht aktualisiert wurde.
- MapComponent.js und useDynamicDeviceLayers.js entsprechend angepasst.
2025-06-09 00:24:33 +02:00
Ismail Ali
fbffc82e1b websocket alle Links 2025-06-08 10:21:19 +02:00
Ismail Ali
a8978034d2 feat: Änderungen werden von websocket zu client gesendet und Redux aktualisiert UI 2025-06-07 14:25:42 +02:00
Ismail Ali
17def7357c socket.io und mock Data 2025-06-07 09:12:58 +02:00
Ismail Ali
a55b5b0189 feat: WebSocket durch Socket.io 2025-06-07 07:32:14 +02:00
Ismail Ali
368f1ae095 ws webSocket test 2025-06-06 21:33:54 +02:00
ISA
b6a946660a feat: EditModeToggle zeigt deaktiviertes Icon bei fehlender Bearbeitungsberechtigung (Right 56) 2025-06-06 14:10:40 +02:00
ISA
51d2d58f8e ♻️ Refactor: cleanupMarkers util eingeführt für alle Marker-Typen + Feature: Heap-Memory-Monitoring über Redux-Slice mit Auto-Reload bei >8GB 2025-06-06 11:36:06 +02:00
ISA
1ec0a8a611 feat: automatische Heap-Überwachung integriert mit Reload bei Überschreitung
- monitorHeapAndReload() in /utils/common/monitorMemory.js ausgelagert
- automatische Heap-Prüfung im 10s-Intervall in MapComponent integriert
- reload bei Überschreitung von 8 GB Heap zur Stabilisierung bei Langzeitbetrieb
- useEffect-Cleanup ergänzt mit clearInterval für sauberes Entfernen bei Unmount
- Ziel: frühzeitige Entlastung vor möglichem Memory Overflow
2025-06-06 11:05:33 +02:00
ISA
f7f7122620 feat: Marker-Cleanup zur Vermeidung von Memory Leaks implementiert
- cleanupMarkers() Utility in /utils/common/cleanupMarkers.js erstellt
- Marker-Cleanup in MapComponent.js vor createAndSetDevices() integriert
- createAndSetDevices.js von Cleanup-Verantwortung befreit (reine Erzeugung)
- setupPOIs.js erweitert um cleanupMarkers() vor Layer-Neuerstellung
- poiUtils.js und markerUtils.js angepasst: cleanupMarkers() ersetzt .remove()
- Memory Leaks durch verwaiste Tooltips, Events und Marker behoben
- Grundlage für wiederverwendbare Marker-Cleanup-Logik für POIs, Geräte, Linien geschaffen
2025-06-06 10:21:56 +02:00
ISA
ec31b36b3d feat: Healthcheck um Webservices, API-Routen und .env-Prüfungen erweitert
- Externe Webservices von TALAS V5 integriert und geprüft (Statuscode + Antwortstruktur)
- Eigene API-Endpunkte wie /api/talas_v5_DB/getDevices hinzugefügt und validiert
- Prüfung von NEXT_PUBLIC_USE_MOCKS zur Vermeidung von Mockdaten in Produktion
- Validierung der Umgebungsvariablen wie DB_HOST, DB_NAME und NODE_ENV ergänzt
- Response-Status 200 bei vollständigem Erfolg, 207 bei Teilfehlern
- Verbesserung der JSON-Antwortstruktur zur einfacheren Analyse
2025-06-05 15:23:59 +02:00
ISA
9273195d8f docs: Screenshots in README.md 2025-06-05 11:28:56 +02:00
ISA
f4342e17ef feat(gma): GMA-Werte aus Measurements-Redux im Marker-Tooltip angezeigt
- createAndSetDevices.js erweitert mit dynamischer GMA-Zuordnung
- Tooltip für System 11 zeigt LT, FBT, GT, RLF
- GMA-Zuordnung über gmaMap basierend auf Na und IdLD
- Version auf 1.1.232 erhöht
2025-06-04 12:14:14 +02:00
ISA
d80b36cb2d feat(mock): zentrale Mock-API-Struktur eingeführt mit .env-Steuerung
- Mock-API-Endpunkte unter pages/api/mocks/webservice erstellt (JSON-basiert)
- Zentrale Variable NEXT_PUBLIC_USE_MOCKS zur Modussteuerung eingeführt
- fetchGis*-Services rufen je nach Modus reale oder Mockdaten ab
- Alert-Hinweis im UI für aktive Mockumgebung eingebaut
- .env.production sichert produktives Verhalten (Mocks deaktiviert)
- mockData-Verzeichnis via .gitignore vom Repo ausgeschlossen
- appVersion.js auf 1.1.231 erhöht
2025-06-04 11:18:44 +02:00
ISA
569790d35f fix: Marker-Duplikate & Spiderfy repariert | version 1.1.230 2025-06-04 08:23:55 +02:00
ISA
66afc1cee7 cleanup: veraltete datei für Layers gelöscht 2025-06-04 07:52:12 +02:00
ISA
5cf84fb14e fix: Gerätemarker-Sichtbarkeit an Redux-Layerzustand gekoppelt
- Hardcodiertes Zeichnen der Gerätemarker beim Initialisieren entfernt
- Sichtbarkeitssteuerung vollständig über mapLayersVisibility aus Redux umgesetzt
- Dynamische Layererzeugung aus GisSystemStatic integriert
- Marker werden nur angezeigt, wenn zugehöriger Layer aktiv ist
2025-06-04 07:08:35 +02:00
ISA
be2da8414c git commit -m "refactor: Gerätelayer dynamisch über IdSystem initialisiert
BREAKING CHANGE: Sichtbarkeit der Gerätegruppen basiert nun auf 'system-<IdSystem>' statt auf Namen wie 'SMSFunkmodem'. Statische Layer-Konfiguration im Redux-Slice entfernt."
2025-06-02 09:00:49 +02:00
ISA
313fc24a97 Dynamische Marker-Verwaltung in MapComponent.js 2025-05-28 14:50:59 +02:00
ISA
fe3ecaa900 feat(map): OMS (OverlappingMarkerSpiderfier) vollständig integriert
- Marker werden nun korrekt bei OMS registriert
- Klick auf Plus-Icon spiderfied überlappende Marker
- useDynamicDeviceLayers um oms erweitert
- checkOverlappingMarkers optimiert für dynamische Marker-Gruppen
- Fehlerbehandlung für ungültige Marker-Typen ergänzt
2025-05-28 14:23:11 +02:00
ISA
85924e575f wip: Dynamische Layers /Geräte Gruppen Erkennung , overlapping funktioniert es noch nicht 2025-05-28 13:57:34 +02:00
Ismail Ali
97fbb6fdc1 docs 2025-05-27 19:41:17 +02:00
ISA
a19bf96843 fix(ui): Dropdown in MapLayersControlPanel zeigt jetzt Stationen/Bereiche korrekt an
- Zugriff auf GisStationsStaticDistrict.Points korrigiert
- Verhindert leere Dropdown-Liste bei gültigen Daten
- Neue Markdown-Dokus für UI-Komponenten erstellt (MapLayersControlPanel, EditModeToggle, VersionInfoModal, CoordinateInput)
- Version auf 1.1.190 gesetzt
2025-05-27 14:12:01 +02:00
ISA
44cb27ce0f refactor(area): Bereichsaktualisierung von util auf Redux umgestellt
- updateAreaUtil.js entfernt
- updateAreaService, updateAreaThunk, updateAreaSlice eingeführt
- useAreaMarkersLayer nutzt jetzt updateAreaThunk
- MapComponent umgestellt auf Redux-Dispatch
- Version erhöht auf 1.1.182
2025-05-27 07:55:12 +02:00
ISA
5dea7f3e5d refactor(poiTypes): fetch-Logik aus Slice entfernt, fetchPoiTypThunk korrekt eingebunden
- fetchPoiTypes aus poiTypesSlice entfernt
- fetchPoiTypThunk.js + Service verwendet
- dispatch-Aufrufe in Komponenten angepasst
- Fehler "is not a function" beseitigt
- Version auf 1.1.180 erhöht
2025-05-26 14:54:39 +02:00
ISA
cd46401f14 fix(poi): Fehler beim Hinzufügen von POIs behoben (Modal blieb offen)
- Falsche URL im addPoiService korrigiert (/addLocation → /addPoi)
- Redux-Status wird nach erfolgreichem Hinzufügen zurückgesetzt (resetAddPoiStatus)
- Modal schließt jetzt zuverlässig nach dem Dispatch
- Ladeanzeige "Wird hinzugefügt..." verschwindet korrekt
- Version auf 1.1.176 erhöht
2025-05-26 13:52:17 +02:00
ISA
bbca980b5b refactor(hooks): useMapComponentState vollständig auf Redux umgestellt
- fetch-Aufrufe entfernt und durch Redux-Selektoren ersetzt
- poiTypData über poiTypSlice + fetchPoiTypThunk geladen
- locationDeviceData über gisStationsStaticDistrictThunk
- priorityConfig über Redux mit fetchPriorityConfigThunk integriert
- poiLayerVisible direkt aus Redux-State gelesen
- Version auf 1.1.173 erhöht
2025-05-26 11:42:11 +02:00
ISA
03a1f480e0 refactor 2025-05-26 11:12:45 +02:00
ISA
7c8a553235 refactoring 2025-05-26 10:11:58 +02:00
ISA
8034e28a45 refactoring 2025-05-26 10:04:08 +02:00
ISA
90db829095 refactoring 2025-05-26 09:14:13 +02:00