Exhaustive hardening of DB loading and geometry creation to fix map rendering
Deploy Bürgerwind / deploy (push) Successful in 16s Details

This commit is contained in:
Johannes Baumeister 2026-05-11 12:51:16 +02:00
parent 4fe64857d9
commit 5db86d82c3
1 changed files with 45 additions and 38 deletions

83
app.js
View File

@ -232,7 +232,12 @@ document.addEventListener('DOMContentLoaded', async () => {
try { try {
const blf = transform(blfCoords); const blf = transform(blfCoords);
const ksf = transform(ksfCoords); const ksf = transform(ksfCoords);
const mf = turf.featureCollection(mfParts.map(part => transform(part)));
// Create the feature collection of polygons
const mf = {
type: "FeatureCollection",
features: mfParts.map(part => transform(part))
};
return { sweptArea, techDist, techDistSmall, loadRadius, foundation, blf, ksf, mf, totalHeight, utmCoords }; return { sweptArea, techDist, techDistSmall, loadRadius, foundation, blf, ksf, mf, totalHeight, utmCoords };
} catch (err) { } catch (err) {
@ -1924,51 +1929,53 @@ document.addEventListener('DOMContentLoaded', async () => {
console.log(`Lade WEAs aus Datenbank für Projekt: ${projekt_id}...`); console.log(`Lade WEAs aus Datenbank für Projekt: ${projekt_id}...`);
try { try {
const response = await fetch(`/api/wea/${projekt_id}`); const response = await fetch(`/api/wea/${projekt_id}`);
if (response.ok) { if (!response.ok) {
const dbTurbines = await response.json(); throw new Error(`HTTP-Fehler! Status: ${response.status}`);
console.log(`Datenbank-Response: ${dbTurbines.length} WEAs erhalten.`); }
if (dbTurbines.length > 0) { const dbTurbines = await response.json();
// Clear existing turbines console.log(`Datenbank-Response: ${dbTurbines.length} WEAs erhalten.`);
state.turbines.forEach(t => {
if (dbTurbines.length > 0) {
// Clear existing turbines safely
state.turbines.forEach(t => {
try {
if (t.layers && t.variant && variantLayers[t.variant]) { if (t.layers && t.variant && variantLayers[t.variant]) {
Object.values(t.layers).forEach(l => variantLayers[t.variant].removeLayer(l)); Object.values(t.layers).forEach(l => variantLayers[t.variant].removeLayer(l));
} }
}); } catch (e) {}
state.turbines = []; });
state.turbines = [];
dbTurbines.forEach(t => { dbTurbines.forEach(t => {
try { try {
const latlng = L.latLng(t.lat, t.lng); const latlng = L.latLng(t.lat, t.lng);
const variant = t.variant || 'A'; const variant = t.variant || 'A';
// Check if variant layer exists if (!variantLayers[variant]) {
if (!variantLayers[variant]) { console.warn(`Ungültige Variante: ${variant}`);
console.warn(`WEA ${t.nr} hat ungültige Variante: ${variant}. Überspringe.`); return;
return;
}
createTurbine(latlng, null, {
nr: t.nr,
hersteller: t.hersteller,
type: t.type,
rd: t.rd,
hh: t.hh,
ksfAngle: t.ksfangle ?? t.ksfAngle ?? 0,
variant: variant
});
} catch (e) {
console.error(`Fehler beim Laden von WEA ${t.nr}:`, e);
} }
});
statusEl.innerText = `${dbTurbines.length} WEAs aus Datenbank geladen.`; createTurbine(latlng, null, {
} else { nr: t.nr,
console.log("Datenbank ist leer für dieses Projekt."); hersteller: t.hersteller,
} type: t.type,
rd: parseFloat(t.rd) || 160,
hh: parseFloat(t.hh) || 165,
ksfAngle: parseFloat(t.ksfangle ?? t.ksfAngle ?? 0),
variant: variant
});
} catch (e) {
console.error(`Fehler bei WEA ${t.nr}:`, e);
}
});
statusEl.innerText = `${dbTurbines.length} WEAs aus Datenbank geladen.`;
} else { } else {
console.error("Fehler beim API-Aufruf:", response.status); console.log("Datenbank ist leer.");
} }
} catch (err) { } catch (err) {
console.error("Netzwerkfehler beim Laden aus der DB:", err); console.error("GLOBALER FEHLER beim Laden aus der DB:", err);
if (statusEl) statusEl.innerText = "Fehler beim Laden der Standorte.";
} }
} }