Commit Graph

526 Commits

Author SHA1 Message Date
Ismail Ali
6c7b372291 Seite neu laden wenn die Fehler kommt , aber wird kurz angezeigt 2025-03-10 22:21:36 +01:00
Ismail Ali
cc716eb4e7 contextmenu, manchmal geht manchmal nicht, Timing Problem 2025-03-10 22:01:22 +01:00
ISA
8ab1c53996 fix: Behebt TypeError: Cannot read properties of null (reading 'contextmenu') mit Redux
- Implementiert `store.subscribe()` in `setupPolylines.js`, um das Kontextmenü-Handling über Redux zu steuern.
- Ersetzt `useDispatch()` und `useSelector()` durch `store.dispatch()` und `store.getState()` in einer Nicht-React-Datei.
- Fügt eine `forceClose`-Action in `polylineContextMenuSlice.js` hinzu, um das Kontextmenü synchron mit `setInterval` zu schließen.
- Stellt sicher, dass das Kontextmenü **immer vor Ablauf des 20-Sekunden-Intervalls** geschlossen wird.
- Verhindert doppelte Menüinstanzen und sorgt für ein stabiles Verhalten bei wiederholten Interaktionen.

 Fix für `TypeError: Cannot read properties of null (reading 'contextmenu')`
 **Verhindert Kontextmenü-Fehler beim automatischen Datenupdate**
 **Redux-gesteuerte Menüverwaltung für stabilere Performance**
 **Kein unerwartetes Offenbleiben oder erneutes Rendern des Menüs mehr**
2025-03-10 13:49:11 +01:00
ISA
1298ce3a81 POI hinzufügen auf die Kabelstrecken/Polylines ausgeblendert 2025-03-10 10:02:48 +01:00
Ismail Ali
1f1ab4b818 fix: POI-Typ Auswahl korrigiert, Initialwert wird nun gesetzt
- Problem behoben, dass der erste POI-Typ (Index 0) nicht korrekt übernommen wurde
- useEffect hinzugefügt, um sicherzustellen, dass poiTypeId gesetzt wird, sobald Daten verfügbar sind
- Fehlerhafte Initialisierung von poiTypeId korrigiert, damit das Dropdown sofort den ersten Eintrag auswählt
2025-03-09 19:30:11 +01:00
Ismail Ali
6f47709256 fix: Automatische Aktualisierung von Spiderfy/Unspiderfy im Intervall
- `map.fire("click")` im `setInterval()` hinzugefügt, um Linien sofort auszublenden
- Spiderfy/Unspiderfy wird nun regelmäßig aktualisiert, ohne manuelles Klicken
- Debugging-Log hinzugefügt, um Klick-Event zu überwachen
2025-03-09 18:46:38 +01:00
Ismail Ali
58d0f1a8a7 fix: Seite nach POI-Hinzufügen automatisch neu laden
- Problem mit der Icon-Aktualisierung nach dem Hinzufügen eines POI behoben
- Temporäre Lösung: `window.location.reload()` nach `handleSubmit`
- Redux bleibt weiterhin für POI-Typen aktiv, spätere Optimierung ohne Reload geplant
2025-03-09 18:13:43 +01:00
Ismail Ali
06e468e560 fix: Korrektur der Datenquelle für Geräte-Dropdown
- API-Antwort direkt analysiert: `Points` liegt auf oberster Ebene, nicht unter `data`
- Anpassung der Zuweisung: `const locationDeviceData = gisStationsStatic?.Points ?? [];`
- Dropdown wird nun korrekt mit Gerätenamen befüllt
2025-03-09 13:23:02 +01:00
Ismail Ali
42217e09e6 Umbenennung von ShowAddStationPopup.js in AddPOIModal.js für bessere Verständlichkeit" 2025-03-09 09:45:32 +01:00
Ismail Ali
ffb76857c7 feat(context-menu): Fix POI hinzufügen Modal und State-Handling
- `useMapContextMenu.js`:
  - `openPoiModal` in `addItemsToMapContextMenu` integriert, um Zugriff auf `setShowCoordinatesModal` und `setShowPoiModal` zu ermöglichen.
  - `setShowCoordinatesModal` wird korrekt als Parameter übergeben und verwaltet.
  - `POI hinzufügen`-Eintrag im Kontextmenü wurde verbessert.

- `MapComponent.js`:
  - `setShowCoordinatesModal`, `setShowPoiModal` und `setPopupCoordinates` werden jetzt korrekt an `addItemsToMapContextMenu` übergeben.
  - `ShowAddStationPopup` Modal öffnet sich jetzt korrekt und überlagert die Seite.
  - UI-Verbesserungen für Modale und Fix für doppeltes Öffnen von Modalen.

Fixes: Problem, dass mehrere Modale gleichzeitig geöffnet wurden und `setShowCoordinatesModal` nicht definiert war.
2025-03-09 09:37:01 +01:00
Ismail Ali
e4bb12fe18 WIP: POI hinzufügen Modal 2025-03-09 00:52:34 +01:00
Ismail Ali
c227b57f9b POI hinzufügen in useMapContextMenu.js aber noch kein Logik 2025-03-08 22:33:20 +01:00
Ismail Ali
d6a95f8885 feat: Animiertes Zoomen mit dynamischer Dauer hinzugefügt
- Leaflet `flyTo` für sanfte Zoom-Animationen implementiert.
- Zoom-Stufen auf max. 15 und min. 6 begrenzt.
- Dauer der Animation dynamisch auf 0.5s pro Zoomstufe gesetzt.
- Verbesserte Benutzererfahrung durch flüssige Zoom-Bewegungen.
2025-03-08 13:26:24 +01:00
Ismail Ali
806347f0dd feat: Fix Redux-Datenstruktur für GisStationsStaticDistrict und Bereichs-Dropdown
- `GisStationsStaticDistrict` wird jetzt korrekt aus Redux gelesen und verwendet `Points` als Array.
- Fehler `find is not a function` behoben durch Zugriff auf `GisStationsStaticDistrict.Points`.
- Sicherstellung, dass `Points` existiert, bevor darauf zugegriffen wird.
- Konsole-Logs für Debugging hinzugefügt, um leere oder ungültige Daten zu erkennen.
- Bereichsauswahl im Dropdown funktioniert jetzt korrekt und fliegt zur gewählten Station auf der Karte.

 Tested: Dropdown zeigt jetzt die `Area_Name`-Werte und `map.flyTo()` funktioniert korrekt.
2025-03-08 12:10:21 +01:00
Ismail Ali
28dbf80462 feat: API-URLs dynamisch aus .env.local statt config.js
- Alle API-URLs nutzen jetzt `process.env.NEXT_PUBLIC_API_BASE_URL`
- `fetchGisStationsMeasurements`, `fetchGisStationsStaticDistrict`, `fetchGisStationsStatusDistrict`, `fetchGisSystemStatic` angepasst
- `idMap` und `idUser` werden dynamisch aus URL oder `.env.local` bezogen
- Entfernte `config.js`-Abhängigkeit für API-URLs
- `.env.local` erlaubt jetzt flexible Server-IPs ohne Code-Anpassung
2025-03-08 08:06:07 +01:00
Ismail Ali
53ad8b3402 feat: GisSystemStatic in Redux integriert
- API-Response für GisSystemStatic in Redux Store gespeichert
- Server-IP aus `.env.local` geladen (`NEXT_PUBLIC_API_BASE_URL`)
- `idMap` und `idUser` aus URL-Parametern extrahiert
- fetchGisSystemStatic angepasst für dynamische Werte
- Redux Store aktualisiert und getestet
2025-03-07 23:50:42 +01:00
Ismail Ali
6636f841a2 feat: GisStationsMeasurements in Redux-Store integriert
- API-Loader für GisStationsMeasurements erstellt
- Redux-Slice für GisStationsMeasurements angelegt und im Store registriert
- Initialisierungs-Hook useInitGisStationsMeasurements hinzugefügt
- Daten werden jetzt beim Start automatisch geladen und zentral im Redux-Store gespeichert
- Vorbereitung für spätere Nutzung in UI-Komponenten
2025-03-07 22:33:47 +01:00
Ismail Ali
86d8e4924a feat: GisStationsStaticDistrict in Redux-Store integriert
- WebService-Endpoint für GisStationsStaticDistrict angebunden
- Daten beim Start der Anwendung automatisch geladen und in Redux gespeichert
- UI (DataSheet) verwendet die Daten direkt aus dem Redux-Store
- Fehlerhandling und Initialzustand in Redux-Slice verbessert
- Alte lokale Fetch-Logik entfernt, zentrale Datenhaltung über Redux
2025-03-07 22:20:21 +01:00
Ismail Ali
c57ae7717a feat: Geräte-Daten aus Redux-Store in POI-Bearbeiten-Modal integriert
- Geräte-Liste wird jetzt direkt aus dem Redux-Store (locationDevicesFromDB) verwendet.
- Dropdown-Menü zeigt alle verfügbaren Geräte aus der Datenbank.
- Beim Öffnen des Modals wird der vorher zugewiesene Gerätname automatisch ausgewählt (Pre-Selection).
- Cleanup und Optimierung: Keine separaten API-Calls mehr im Modal.
- Struktur verbessert durch Auslagerung der Lade-Logik in useInitLocationDevices Hook.
2025-03-07 20:52:00 +01:00
Ismail Ali
5a27bc5d75 WIP: POI->contextmenu ->POI bearbeiten ->Gerät: Dropdown 2025-03-07 18:13:09 +01:00
ISA
a9d8b9f632 MapComponent.js etwas gereinegt von ungenutzte URLs 2025-03-07 12:08:49 +01:00
ISA
da8112e43a fix: Clipboard-Kopierfunktion in CoordinatePopup.js mit Fallback abgesichert
- Clipboard-API Nutzung abgesichert gegen nicht unterstützte Umgebungen
- Fallback mit document.execCommand implementiert für ältere Browser
- Fehlerbehandlung und Benutzer-Feedback verbessert
2025-03-07 10:34:49 +01:00
ISA
c6269b75a3 git commit -m "feat: Mock-API über /api/mockData/webService erfolgreich implementiert 🚀
- JSON-Dateien aus /webServiceMockdata als echte API-Mocks verfügbar
- API-Endpunkte unter /api/mockData/webService/ hinzugefügt
- Fehlerhafte Platzhalter in den API-Handlern korrigiert
- Alle Mock-URLs in config.js auf die neuen API-Routen umgestellt
- Tests erfolgreich durchgeführt, Mock-API funktioniert einwandfrei"
2025-03-07 10:01:18 +01:00
ISA
aa218b1c96 GisLines Mock funktioniert 2025-03-07 08:38:34 +01:00
Ismail Ali
bed9ce7772 feat: Automatische Aktivierung von TALAS Meldestation bei Aktivierung der Kabelstrecken-Checkbox
- Wenn die Checkbox "Kabelstrecken" aktiviert wird, wird automatisch die Checkbox "TALAS Meldestation" ebenfalls aktiviert.
- Status-Synchronisierung erfolgt über Redux und localStorage.
- TALAS Meldestation kann weiterhin unabhängig deaktiviert werden.
- Wenn die TALAS-Checkbox aktiviert wird, beeinflusst das nicht die Kabelstrecken.
- Stellt sicher, dass bei aktivierten Kabelstrecken die zugehörigen TALAS-Stationen immer sichtbar sind.
2025-03-06 20:11:24 +01:00
Ismail Ali
a837291048 refactor: Polyline-Sichtbarkeit auf Redux umgestellt (ersetzt Recoil)
- Sichtbarkeitsstatus für Kabelstrecken/Polylines wird jetzt zentral im Redux-Store verwaltet.
- Initialer Zustand wird aus localStorage gelesen und direkt in Redux gesetzt.
- DataSheet-Checkbox steuert Redux-Status und synchronisiert mit localStorage.
- MapComponent.js verwendet Redux-State direkt zur Steuerung von setupPolylines.
- setupPolylines.js ist jetzt komplett "dumm" und bekommt den Sichtbarkeitsstatus nur noch als Parameter.
- Konsistente Lösung für Initial-Laden, Checkbox-Wechsel und Map-Neuladen umgesetzt.
2025-03-06 19:54:29 +01:00
ISA
915ffbd85e Marker aktualisieren alle 60 Sekunden, später in Redux lösen 2025-03-06 10:25:47 +01:00
Ismail Ali
fc13176471 Mock aus public Verzeichnis bekommen 2025-03-06 00:25:19 +01:00
ISA
82001a4beb mockApi erstellt, um die Eingabe zu simulieren, aber funktioniert nocht nicht ganz 2025-03-05 12:37:08 +01:00
ISA
3a21abd4bb Test Datei entfernt 2025-03-05 09:48:02 +01:00
ISA
e355fdc919 talas5 Verzeichnis gelöscht, weil ich bekomme alles von WebServices und in der Produktionsumgebung läuft Entwicklungsumgebung 2025-03-05 09:28:30 +01:00
ISA
7efbc4f6d8 LTE-Modem statt GSM-Modem, das sind das selbe gemeint 2025-03-04 13:48:29 +01:00
ISA
9ba3129ba6 LTE-Modem funktioniert 2025-03-04 13:35:08 +01:00
ISA
6f1df8db94 merge fix v1.0.8.1 Browser lädt ständig die Seite neu wenn keine Linien existieren 2025-02-12 14:51:17 +01:00
ISA
52e9939eb8 git commit -m "fix: Fehlerbehandlung für fehlende gis_lines-Tabelle und Verwendung des DB-Namens aus .env
- Verhindert Absturz der Anwendung, wenn die gis_lines-Tabelle fehlt
- Gibt stattdessen eine Warnung in der Konsole aus
- Stellt sicher, dass der Datenbankname dynamisch aus der .env-Datei geladen wird"
2025-02-05 13:29:54 +01:00
ISA
2e37545e55 Noch alte image für Geräte.
Bereiche und Standorte von Auswahlmenü auskommentiert,
2025-02-05 10:51:05 +01:00
ISA
f4210a4776 Merge branch 'v1.0.8.1' into fix/ohne-externe-babel 2025-02-05 10:27:36 +01:00
ISA
b467ff3835 feat: Linienanzeige abhängig vom Status der Stationen (CPLs)
- Polylinien werden nur angezeigt, wenn die zugehörigen Stationen (CPLs) aktiv sind
- Redux speichert den Status der Stationen (1 = aktiv, 0 = inaktiv)
- setupPolylines.js überprüft jetzt direkt in Redux, ob eine Linie gezeichnet werden soll
- Entfernt den unnötigen activeLines-Parameter in MapComponent.js für eine bessere Struktur
- Optimierte Performance: Linien ändern sich dynamisch ohne Seiten-Reload
2025-02-04 09:27:42 +01:00
ISA
3e92fda934 WIP: referesh polyline wennactive oder inaktive sind (GIS Lines) 2025-02-03 15:56:57 +01:00
ISA
1f9286a6cf CPL nicht anzeigen wenn nicht Aktive ist idLD und Active Spalte in location_device, Status wird in Redux gespeichert für die ensprechende Linie(WIP) 2025-02-03 14:51:14 +01:00
ISA
e03dff4814 Redux: alle Active 1 und 0 speichern 2025-02-03 13:15:59 +01:00
Ismail Ali
5b2cb762cc fix: Behebt Endlosschleife und doppelte Recoil-Atom-Registrierung
- `index.js` als Client-Komponente deklariert (`"use client"`) zur Vermeidung von SSR-Problemen.
- `useEffect` optimiert, um unendliche API-Requests durch `isMounted`-Check zu verhindern.
- `loadData()` angepasst, um API-Fehler korrekt abzufangen und erneute Ladeversuche zu vermeiden.
- Doppelte Registrierung von `poiReadFromDbTriggerAtom` durch HMR verhindert.
- Ungültige MySQL-Option `acquireTimeout` entfernt, um Verbindungsfehler zu beheben.

Diese Änderungen verhindern unerwartete Reloads und verbessern die Stabilität der Anwendung.
2025-02-02 13:01:04 +01:00
Ismail Ali
47f1535883 Latidute und Longitude in Popuphinzugefügt 2025-01-17 22:37:47 +01:00
ismailali1553
486c1a903c Popup statt Modal ,um die Koordinaten zu kopieren 2025-01-17 22:16:12 +01:00
ismailali1553
e9abcacf1e Popup statt Modal für die Koordinaten kopieren 2025-01-17 20:20:53 +01:00
ismailali1553
f69f54dba9 Modal wird angezeigt, aber muss noch angepasst werden 2025-01-17 19:13:29 +01:00
ismailali1553
d8ab5bd0a5 Eingabefeld für Koordinaten 2025-01-17 14:32:03 +01:00
ISA
d7978790e1 feat: Proxy-APIs und Integrationstests für WebServices hinzugefügt
- Vier Proxy-Endpunkte implementiert:
  1. gisStationsStatusDistrict
  2. gisStationsStaticDistrict
  3. gisStationsMeasurements
  4. gisSystemStatic

- API-Integrationstests mit Jest für alle Endpunkte erstellt:
  - Tests verwenden echte API-Responses statt Mock-Daten.
  - Erfolgreiche Anfragen mit gültigen Parametern getestet.
  - Fehlende Parameter und ungültige Parameter getestet.

- Code enthält:
  - Dynamische URL-Generierung für Proxy-Weiterleitungen.
  - Prüfung von Headern, Statuscodes und JSON-Strukturen.
  - Unterstützung für CORS und OPTIONS-Anfragen.

- Ergebnis:
  - Alle Tests erfolgreich bestanden.
  - APIs bereit für produktive Nutzung und Erweiterungen.
2025-01-03 14:02:29 +01:00
ISA
20a2abd9b6 feat: API-Proxy für SOAP-Webservice implementiert
- API-Route hinzugefügt: /api/gisStationsStaticDistrict
- Dynamisches Lesen von URL-Parametern (idMap, idUser) aus Anfrage
- SOAP-Anfrage an ASP.NET-Webservice weitergeleitet
- XML-Antwort verarbeitet und zurückgegeben
- CORS-Header und OPTIONS-Preflight für Sicherheit konfiguriert
- Fehlerbehandlung und Debug-Logs integriert
2025-01-02 13:59:18 +01:00
ISA
e6dff1dcf8 test: Überprüfung der Kartenladung, Kontextmenü und Geräte-URL-Erreichbarkeit
- Stellt sicher, dass die Karte erfolgreich geladen wird und sichtbar ist.
- Simuliert Rechtsklick auf Marker und überprüft, ob das Kontextmenü erscheint.
- Validiert die Sichtbarkeit des Menüeintrags "Station öffnen (Tab)" im Kontextmenü.
- Testet, ob ein Klick auf den Menüeintrag "Station öffnen (Tab)" , dass das  Gerät in einem Tab öffnet.
- Überprüft, ob die URL des geöffneten Geräts den HTTP-Status 200 zurückgibt (erreichbar).
- Fügt Logs und Screenshots zur Fehlerbehebung hinzu.
2025-01-02 08:42:31 +01:00