fix: move createDbLayer helper function to parent scope to prevent ReferenceError

This commit is contained in:
Johannes Baumeister 2026-06-25 09:03:33 +02:00
parent e68bee0bb1
commit 866d749388
1 changed files with 66 additions and 66 deletions

132
app.js
View File

@ -1105,6 +1105,72 @@ document.addEventListener('DOMContentLoaded', async () => {
const statusEl = document.getElementById('statusInfo');
const isLocalFile = globalThis.location?.protocol === 'file:';
const createDbLayer = (geojsonData, name, styleFunc, isFreileitung) => {
if (!geojsonData || !geojsonData.features || geojsonData.features.length === 0) return;
const layer = L.geoJSON(geojsonData, {
style: styleFunc,
onEachFeature: (feature, l) => {
if (feature.properties) {
let popup = `<b>${name}</b><br><hr style="margin: 5px 0; border: 0; border-top: 1px solid #444;">`;
for (let key in feature.properties) {
const val = feature.properties[key];
if (val !== null && val !== undefined) popup += `<b>${key}:</b> ${val}<br>`;
}
l.bindPopup(popup);
}
}
});
if (overlays[name]) {
state.map.removeLayer(overlays[name]);
layerControl.removeLayer(overlays[name]);
}
overlays[name] = layer;
state.map.addLayer(layer);
layerControl.addOverlay(layer, name);
// In bakedData eintragen für die Abstandslinien (updateProximityLines)
state.bakedData[name] = { data: geojsonData, style: styleFunc() };
// Dynamischer Turf Buffer für Freileitungen
if (isFreileitung) {
try {
const bufferedFeatures = [];
geojsonData.features.forEach(f => {
let dist = 0.05; // 50m default
const spannung = (f.properties.spannung || '').toString().toLowerCase();
if (spannung.includes('110')) dist = 0.035;
else if (spannung.includes('380')) dist = 0.05;
const b = turf.buffer(f, dist, {units: 'kilometers'});
if (b) bufferedFeatures.push(b);
});
if (bufferedFeatures.length > 0) {
const bufferLayer = L.geoJSON({ type: 'FeatureCollection', features: bufferedFeatures }, {
style: {
color: '#ffff00',
weight: 0,
fillColor: '#ffff00',
fillOpacity: 0.3
}
});
const bufferName = name + " (Puffer)";
if (overlays[bufferName]) {
state.map.removeLayer(overlays[bufferName]);
layerControl.removeLayer(overlays[bufferName]);
}
overlays[bufferName] = bufferLayer;
state.map.addLayer(bufferLayer);
layerControl.addOverlay(bufferLayer, bufferName);
bufferLayer.bringToBack();
}
} catch(err) {
console.error("Fehler beim Erstellen des Puffers für " + name, err);
}
}
};
try {
// Priority 1: Use globalThis.BAKED_DATA if available (Standalone Mode)
if (globalThis.BAKED_DATA) {
@ -1253,72 +1319,6 @@ document.addEventListener('DOMContentLoaded', async () => {
});
}
const createDbLayer = (geojsonData, name, styleFunc, isFreileitung) => {
if (geojsonData.features.length === 0) return;
const layer = L.geoJSON(geojsonData, {
style: styleFunc,
onEachFeature: (feature, l) => {
if (feature.properties) {
let popup = `<b>${name}</b><br><hr style="margin: 5px 0; border: 0; border-top: 1px solid #444;">`;
for (let key in feature.properties) {
const val = feature.properties[key];
if (val !== null && val !== undefined) popup += `<b>${key}:</b> ${val}<br>`;
}
l.bindPopup(popup);
}
}
});
if (overlays[name]) {
state.map.removeLayer(overlays[name]);
layerControl.removeLayer(overlays[name]);
}
overlays[name] = layer;
state.map.addLayer(layer);
layerControl.addOverlay(layer, name);
// In bakedData eintragen für die Abstandslinien (updateProximityLines)
state.bakedData[name] = { data: geojsonData, style: styleFunc() };
// Dynamischer Turf Buffer für Freileitungen
if (isFreileitung) {
try {
const bufferedFeatures = [];
geojsonData.features.forEach(f => {
let dist = 0.05; // 50m default
const spannung = (f.properties.spannung || '').toString().toLowerCase();
if (spannung.includes('110')) dist = 0.035;
else if (spannung.includes('380')) dist = 0.05;
const b = turf.buffer(f, dist, {units: 'kilometers'});
if (b) bufferedFeatures.push(b);
});
if (bufferedFeatures.length > 0) {
const bufferLayer = L.geoJSON({ type: 'FeatureCollection', features: bufferedFeatures }, {
style: {
color: '#ffff00',
weight: 0,
fillColor: '#ffff00',
fillOpacity: 0.3
}
});
const bufferName = name + " (Puffer)";
if (overlays[bufferName]) {
state.map.removeLayer(overlays[bufferName]);
layerControl.removeLayer(overlays[bufferName]);
}
overlays[bufferName] = bufferLayer;
state.map.addLayer(bufferLayer);
layerControl.addOverlay(bufferLayer, bufferName);
bufferLayer.bringToBack();
}
} catch(err) {
console.error("Fehler beim Erstellen des Puffers für " + name, err);
}
}
};
createDbLayer(freileitungen, "Freileitungen (DB)", () => ({ color: '#ccaa00', weight: 3, fillOpacity: 0 }), true);
createDbLayer(wasserstoff, "Wasserstoffleitungen (DB)", () => ({ color: '#9400d3', weight: 2.5, fillOpacity: 0 }), false);