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 {
const blf = transform(blfCoords);
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 };
} catch (err) {
@ -1924,51 +1929,53 @@ document.addEventListener('DOMContentLoaded', async () => {
console.log(`Lade WEAs aus Datenbank für Projekt: ${projekt_id}...`);
try {
const response = await fetch(`/api/wea/${projekt_id}`);
if (response.ok) {
const dbTurbines = await response.json();
console.log(`Datenbank-Response: ${dbTurbines.length} WEAs erhalten.`);
if (dbTurbines.length > 0) {
// Clear existing turbines
state.turbines.forEach(t => {
if (!response.ok) {
throw new Error(`HTTP-Fehler! Status: ${response.status}`);
}
const dbTurbines = await response.json();
console.log(`Datenbank-Response: ${dbTurbines.length} WEAs erhalten.`);
if (dbTurbines.length > 0) {
// Clear existing turbines safely
state.turbines.forEach(t => {
try {
if (t.layers && t.variant && variantLayers[t.variant]) {
Object.values(t.layers).forEach(l => variantLayers[t.variant].removeLayer(l));
}
});
state.turbines = [];
} catch (e) {}
});
state.turbines = [];
dbTurbines.forEach(t => {
try {
const latlng = L.latLng(t.lat, t.lng);
const variant = t.variant || 'A';
// Check if variant layer exists
if (!variantLayers[variant]) {
console.warn(`WEA ${t.nr} hat ungültige Variante: ${variant}. Überspringe.`);
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);
dbTurbines.forEach(t => {
try {
const latlng = L.latLng(t.lat, t.lng);
const variant = t.variant || 'A';
if (!variantLayers[variant]) {
console.warn(`Ungültige Variante: ${variant}`);
return;
}
});
statusEl.innerText = `${dbTurbines.length} WEAs aus Datenbank geladen.`;
} else {
console.log("Datenbank ist leer für dieses Projekt.");
}
createTurbine(latlng, null, {
nr: t.nr,
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 {
console.error("Fehler beim API-Aufruf:", response.status);
console.log("Datenbank ist leer.");
}
} 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.";
}
}