feat: implement multi-variant persistence and Hilfsgeometrien toggle
Deploy Bürgerwind / deploy (push) Successful in 17s
Details
Deploy Bürgerwind / deploy (push) Successful in 17s
Details
This commit is contained in:
parent
d881c9fc64
commit
9164281cfb
31
app.js
31
app.js
|
|
@ -11,7 +11,8 @@ document.addEventListener('DOMContentLoaded', async () => {
|
||||||
activeVariant: 'A',
|
activeVariant: 'A',
|
||||||
bakedData: {}, // Cache for standalone persistence
|
bakedData: {}, // Cache for standalone persistence
|
||||||
ownerMapping: null, // { firstName: '', lastName: '' }
|
ownerMapping: null, // { firstName: '', lastName: '' }
|
||||||
ownerStatuses: {} // { "Name Vorname": "status" }
|
ownerStatuses: {}, // { "Name Vorname": "status" }
|
||||||
|
showAuxiliary: true
|
||||||
};
|
};
|
||||||
|
|
||||||
// Removed fetch for config to prevent CORS errors on file:// protocol
|
// Removed fetch for config to prevent CORS errors on file:// protocol
|
||||||
|
|
@ -319,7 +320,7 @@ document.addEventListener('DOMContentLoaded', async () => {
|
||||||
const turbine = {
|
const turbine = {
|
||||||
id: `WEA_${Date.now()}`,
|
id: `WEA_${Date.now()}`,
|
||||||
nr: weaNr,
|
nr: weaNr,
|
||||||
variant: state.activeVariant,
|
variant: overrideData?.variant || state.activeVariant,
|
||||||
type, rd, hh, fr, latlng,
|
type, rd, hh, fr, latlng,
|
||||||
ksfAngle, ksfMirrored,
|
ksfAngle, ksfMirrored,
|
||||||
totalHeight: geoms.totalHeight,
|
totalHeight: geoms.totalHeight,
|
||||||
|
|
@ -370,7 +371,9 @@ document.addEventListener('DOMContentLoaded', async () => {
|
||||||
|
|
||||||
Object.entries(turbine.layers).forEach(([name, layer]) => {
|
Object.entries(turbine.layers).forEach(([name, layer]) => {
|
||||||
if (name !== 'rotationHandle') {
|
if (name !== 'rotationHandle') {
|
||||||
variantLayers[state.activeVariant].addLayer(layer);
|
if (name === 'marker' || state.showAuxiliary) {
|
||||||
|
variantLayers[turbine.variant].addLayer(layer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -527,6 +530,25 @@ document.addEventListener('DOMContentLoaded', async () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Hilfsgeometrien Toggle
|
||||||
|
const checkShowAux = document.getElementById('checkShowAux');
|
||||||
|
if (checkShowAux) {
|
||||||
|
checkShowAux.onchange = () => {
|
||||||
|
state.showAuxiliary = checkShowAux.checked;
|
||||||
|
state.turbines.forEach(t => {
|
||||||
|
Object.entries(t.layers).forEach(([name, layer]) => {
|
||||||
|
if (name !== 'marker' && name !== 'rotationHandle') {
|
||||||
|
if (state.showAuxiliary) {
|
||||||
|
variantLayers[t.variant].addLayer(layer);
|
||||||
|
} else {
|
||||||
|
variantLayers[t.variant].removeLayer(layer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
// Simplified Measurement Tool
|
// Simplified Measurement Tool
|
||||||
let measureLayer = null;
|
let measureLayer = null;
|
||||||
let measurePoints = [];
|
let measurePoints = [];
|
||||||
|
|
@ -1497,7 +1519,8 @@ document.addEventListener('DOMContentLoaded', async () => {
|
||||||
type: t.type,
|
type: t.type,
|
||||||
rd: t.rd,
|
rd: t.rd,
|
||||||
hh: t.hh,
|
hh: t.hh,
|
||||||
ksfAngle: t.ksfangle ?? t.ksfAngle ?? 0
|
ksfAngle: t.ksfangle ?? t.ksfAngle ?? 0,
|
||||||
|
variant: t.variant
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
statusEl.innerText = `${dbTurbines.length} WEAs aus Datenbank geladen.`;
|
statusEl.innerText = `${dbTurbines.length} WEAs aus Datenbank geladen.`;
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,11 @@
|
||||||
<div class="variant-tab" data-variant="B">Var B</div>
|
<div class="variant-tab" data-variant="B">Var B</div>
|
||||||
<div class="variant-tab" data-variant="C">Var C</div>
|
<div class="variant-tab" data-variant="C">Var C</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div style="margin-top: 12px; padding: 0 5px;">
|
||||||
|
<label style="cursor: pointer; display: flex; align-items: center; gap: 8px; font-size: 0.85rem; color: var(--text-dim);">
|
||||||
|
<input type="checkbox" id="checkShowAux" checked> Hilfsgeometrien anzeigen
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="section">
|
<div class="section">
|
||||||
|
|
|
||||||
|
|
@ -75,9 +75,9 @@ app.post('/api/wea', async (req, res) => {
|
||||||
log(`Füge WEA ein: Nr=${t.nr}, Typ=${t.type}, Pos=${t.latlng?.lat},${t.latlng?.lng}`);
|
log(`Füge WEA ein: Nr=${t.nr}, Typ=${t.type}, Pos=${t.latlng?.lat},${t.latlng?.lng}`);
|
||||||
await client.query(
|
await client.query(
|
||||||
`INSERT INTO ${schema}.wea_standorte
|
`INSERT INTO ${schema}.wea_standorte
|
||||||
(projekt_id, wea_nummer, anlagentyp, nabenhoehe, rotordurchmesser, ksf_drehung, geom)
|
(projekt_id, wea_nummer, anlagentyp, nabenhoehe, rotordurchmesser, ksf_drehung, variante, geom)
|
||||||
VALUES ($1, $2, $3, $4, $5, $6, ST_Transform(ST_SetSRID(ST_MakePoint($7, $8), 4326), 25832))`,
|
VALUES ($1, $2, $3, $4, $5, $6, $7, ST_Transform(ST_SetSRID(ST_MakePoint($8, $9), 4326), 25832))`,
|
||||||
[targetProject, t.nr, t.type, t.hh, t.rd, t.ksfAngle, t.latlng.lng, t.latlng.lat]
|
[targetProject, t.nr, t.type, t.hh, t.rd, t.ksfAngle, t.variant, t.latlng.lng, t.latlng.lat]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -100,7 +100,7 @@ app.get('/api/wea/:projekt_id', async (req, res) => {
|
||||||
log(`Lade WEAs für Projekt: ${projekt_id}`);
|
log(`Lade WEAs für Projekt: ${projekt_id}`);
|
||||||
try {
|
try {
|
||||||
const result = await pool.query(
|
const result = await pool.query(
|
||||||
`SELECT wea_nummer as nr, anlagentyp as type, nabenhoehe as hh, rotordurchmesser as rd, ksf_drehung as ksfAngle,
|
`SELECT wea_nummer as nr, anlagentyp as type, nabenhoehe as hh, rotordurchmesser as rd, ksf_drehung as ksfAngle, variante as variant,
|
||||||
ST_X(ST_Transform(geom, 4326)) as lng, ST_Y(ST_Transform(geom, 4326)) as lat
|
ST_X(ST_Transform(geom, 4326)) as lng, ST_Y(ST_Transform(geom, 4326)) as lat
|
||||||
FROM geodaten.wea_standorte WHERE projekt_id = $1`,
|
FROM geodaten.wea_standorte WHERE projekt_id = $1`,
|
||||||
[projekt_id]
|
[projekt_id]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue