- fetch-Aufruf ersetzt durch Redux-Thunk fetchGisLinesThunk - gisLines aus Redux-Store bezogen mit selectGisLines - Datenmapping erfolgt reaktiv via useEffect - Version auf 1.1.174 erhöht
41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
// /hooks/layers/useDrawLines.js
|
|
import { useEffect } from "react";
|
|
import { useDispatch, useSelector } from "react-redux";
|
|
import { fetchGisLinesThunk } from "../../redux/thunks/database/polylines/fetchGisLinesThunk";
|
|
import { selectGisLines } from "../../redux/slices/database/polylines/gisLinesSlice";
|
|
|
|
const useDrawLines = (setLinePositions) => {
|
|
const dispatch = useDispatch();
|
|
const gisLines = useSelector(selectGisLines);
|
|
|
|
// Daten laden (nur einmal)
|
|
useEffect(() => {
|
|
dispatch(fetchGisLinesThunk());
|
|
}, [dispatch]);
|
|
|
|
// Linien aus GIS-Daten berechnen
|
|
useEffect(() => {
|
|
if (!Array.isArray(gisLines)) return;
|
|
|
|
try {
|
|
const newLinePositions = gisLines.map((item) => {
|
|
if (item.points && Array.isArray(item.points)) {
|
|
return {
|
|
coordinates: item.points.map((point) => [point.x, point.y]),
|
|
idModul: item.idModul,
|
|
idLD: item.idLD,
|
|
};
|
|
} else {
|
|
throw new Error("Points missing or not an array");
|
|
}
|
|
});
|
|
|
|
setLinePositions(newLinePositions);
|
|
} catch (err) {
|
|
console.error("❌ Fehler beim Zeichnen der Linien:", err.message);
|
|
}
|
|
}, [gisLines, setLinePositions]);
|
|
};
|
|
|
|
export default useDrawLines;
|