From 14d1ce9995cb82d4c33c2c2a5cc0be2f3143939a Mon Sep 17 00:00:00 2001 From: Thibault Jouannic Date: Thu, 28 Nov 2024 11:06:37 +0100 Subject: [PATCH 1/2] Fix rounding issue in hedge length --- envergo/hedges/admin.py | 4 ++-- envergo/hedges/models.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/envergo/hedges/admin.py b/envergo/hedges/admin.py index e657de0cd..4ffcff73c 100644 --- a/envergo/hedges/admin.py +++ b/envergo/hedges/admin.py @@ -53,10 +53,10 @@ def hedges_to_plant(self, obj): return len(obj.hedges_to_plant()) def length_to_plant(self, obj): - return sum(h.length for h in obj.hedges_to_plant()) + return obj.length_to_plant() def hedges_to_remove(self, obj): return len(obj.hedges_to_remove()) def length_to_remove(self, obj): - return sum(h.length for h in obj.hedges_to_remove()) + return obj.length_to_remove() diff --git a/envergo/hedges/models.py b/envergo/hedges/models.py index 1e9b2106c..63b257b24 100644 --- a/envergo/hedges/models.py +++ b/envergo/hedges/models.py @@ -38,7 +38,7 @@ def length(self): geod = Geod(ellps="WGS84") length = geod.geometry_length(self.geometry) - return int(length) + return length class HedgeData(models.Model): @@ -60,10 +60,10 @@ def hedges_to_plant(self): return [Hedge(**h) for h in self.data if h["type"] == TO_PLANT] def length_to_plant(self): - return sum(h.length for h in self.hedges_to_plant()) + return round(sum(h.length for h in self.hedges_to_plant())) def hedges_to_remove(self): return [Hedge(**h) for h in self.data if h["type"] == TO_REMOVE] def length_to_remove(self): - return sum(h.length for h in self.hedges_to_remove()) + return round(sum(h.length for h in self.hedges_to_remove())) From 3c0de2adce501d38e16b08494362d83c8db57d9c Mon Sep 17 00:00:00 2001 From: Thibault Jouannic Date: Thu, 28 Nov 2024 14:05:25 +0100 Subject: [PATCH 2/2] Fix edit markers displayed out of the polylines --- envergo/hedges/static/hedge_input/app.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/envergo/hedges/static/hedge_input/app.js b/envergo/hedges/static/hedge_input/app.js index 1f6659fc0..50415a568 100644 --- a/envergo/hedges/static/hedge_input/app.js +++ b/envergo/hedges/static/hedge_input/app.js @@ -397,7 +397,7 @@ createApp({ doubleClickZoom: false, zoomControl: false, layers: [satelliteLayer] - }).setView([43.6861, 3.5911], 14); + }); L.control.layers(baseMaps, null, { position: 'bottomleft' }).addTo(map); @@ -405,7 +405,6 @@ createApp({ position: 'bottomright' }).addTo(map); - // Zoom on the selected address window.addEventListener('EnvErgo:citycode_selected', function (event) { const coordinates = event.detail.coordinates; @@ -414,7 +413,19 @@ createApp({ map.setView(latLng, zoomLevel); }); + // Here, we want to restore existing hedges + // If there are any, set view to see them all + // Otherwise, set a default view with a zoom level of 14 + // There is a catch though. If we set a zoom level of 14 in the + // first `setView` call, it triggers a bug with hedges polylines middle + // markers that are displayed outside of the actual line. That's because + // the marker positions are calculated with a precision that is dependant + // on the zoom level. + // So we have to set the view with a zoom maxed out, restore the markers, + // then zoom out. + map.setView([43.6861, 3.5911], 22); restoreHedges(); + map.setZoom(14); zoomOut(); });