diff --git a/app.js b/app.js index 018f554..74b8e9c 100644 --- a/app.js +++ b/app.js @@ -524,10 +524,26 @@ document.addEventListener('DOMContentLoaded', async () => { if (state.isEditMode) openEditPanel(turbine); }); - // Drag Update + // Drag Update (Nur Marker und Panel bewegen, Geometrien erst bei dragend) turbine.layers.marker.on('drag', (e) => { const newPos = e.target.getLatLng(); turbine.latlng = newPos; + + // Move rotation handle along with it during drag + updateRotationHandlePos(turbine); + + if (activeTurbine?.id === turbine.id) { + // Keep fields updated + editNr.value = turbine.nr; + updateEditPanelPosition(); // Sync floating panel + } + }); + + turbine.layers.marker.on('dragend', (e) => { + const newPos = e.target.getLatLng(); + turbine.latlng = newPos; + + // Recalculate all geometries ONCE after dragging is finished to avoid lagging const newGeoms = calculateGeometries(newPos, turbine.rd, turbine.hh, turbine.fr, turbine.ksfAngle, turbine.ksfMirrored, turbine.hersteller); turbine.layers.sweptArea.clearLayers().addData(newGeoms.sweptArea); turbine.layers.techDist.clearLayers().addData(newGeoms.techDist); @@ -537,16 +553,11 @@ document.addEventListener('DOMContentLoaded', async () => { turbine.layers.ksf.clearLayers().addData(newGeoms.ksf); turbine.layers.blf.clearLayers().addData(newGeoms.blf); turbine.layers.mf.clearLayers().addData(newGeoms.mf); + updateRotationHandlePos(turbine); updateLabel(turbine, newGeoms); updateProximityLines(); - updateLegend(); // Show symbols in legend triggerAutoSave(); - if (activeTurbine?.id === turbine.id) { - // Keep fields updated - editNr.value = turbine.nr; - updateEditPanelPosition(); // Sync floating panel - } }); // Rotation Handle drag logic @@ -2740,11 +2751,11 @@ document.addEventListener('DOMContentLoaded', async () => { state.turbines.forEach(t => { if (state.isEditMode) { - t.layers.marker.dragging.enable(); - t.layers.rotationHandle.dragging.enable(); + if (t.layers.marker.dragging) t.layers.marker.dragging.enable(); + if (t.layers.rotationHandle.dragging) t.layers.rotationHandle.dragging.enable(); } else { - t.layers.marker.dragging.disable(); - t.layers.rotationHandle.dragging.disable(); + if (t.layers.marker.dragging) t.layers.marker.dragging.disable(); + if (t.layers.rotationHandle.dragging) t.layers.rotationHandle.dragging.disable(); } }); }