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
This commit is contained in:
ISA
2025-02-04 09:27:42 +01:00
parent c10141b2f9
commit b467ff3835
5 changed files with 443 additions and 24 deletions

View File

@@ -12,6 +12,7 @@ import { openInNewTab } from "./openInNewTab";
import { toast } from "react-toastify";
import { polylineLayerVisibleState } from "../store/atoms/polylineLayerVisibleState";
import { useRecoilValue } from "recoil";
import { store } from "../redux/store"; // Importiere den Store
// Funktion zum Deaktivieren der Polyline-Ereignisse
export function disablePolylineEvents(polylines) {
@@ -81,11 +82,16 @@ function monitorContextMenu(map) {
}, 1000); // Alle 1 Sekunde überprüfen
}
export const setupPolylines = (map, linePositions, lineColors, tooltipContents, setNewCoords, tempMarker, currentZoom, currentCenter, polylineVisible, activeLines) => {
export const setupPolylines = (map, linePositions, lineColors, tooltipContents, setNewCoords, tempMarker, currentZoom, currentCenter, polylineVisible) => {
// Hole activeLines direkt aus Redux
const state = store.getState(); // Hole den gesamten Zustand
const activeLines = state.lineVisibility.activeLines; // Zugriff auf activeLines
if (!activeLines) {
console.warn("activeLines ist undefined oder null.");
return { markers: [], polylines: [] };
}
if (localStorage.getItem("polylineVisible") === null) {
localStorage.setItem("polylineVisible", "true"); // Standardwert setzen
polylineVisible = true; // Wert in der Funktion initialisieren
@@ -114,6 +120,7 @@ export const setupPolylines = (map, linePositions, lineColors, tooltipContents,
// **Fix: Sicherstellen, dass activeLines definiert ist und idLD existiert**
const isActive = activeLines && lineData.idLD && activeLines[String(lineData.idLD)] === 1;
if (!isActive) {
console.warn(`Linie mit idLD ${lineData.idLD} wird ausgeblendet.`);
return;