From c1ab59e9b3655c3bc753f7985530ab46d7da3576 Mon Sep 17 00:00:00 2001
From: Olivier Maury <Olivier.Maury@inrae.fr>
Date: Thu, 1 Aug 2024 15:23:03 +0200
Subject: [PATCH] =?UTF-8?q?Correction=20de=20changement=20de=20r=C3=A9gion?=
 =?UTF-8?q?=20apr=C3=A8s=20s=C3=A9lection=20de=20PRA.=20refs=20#103?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../client/presenter/RightPanelPresenter.java |  7 +++++-
 .../www/client/view/LayoutView.java           |  4 ++--
 .../www/client/view/LeftPanelView.java        |  8 ++++++-
 .../www/client/view/RightPanelView.java       | 24 ++++++++++++-------
 4 files changed, 31 insertions(+), 12 deletions(-)

diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/presenter/RightPanelPresenter.java b/www-client/src/main/java/fr/agrometinfo/www/client/presenter/RightPanelPresenter.java
index 225431d..b23c312 100644
--- a/www-client/src/main/java/fr/agrometinfo/www/client/presenter/RightPanelPresenter.java
+++ b/www-client/src/main/java/fr/agrometinfo/www/client/presenter/RightPanelPresenter.java
@@ -109,7 +109,9 @@ public final class RightPanelPresenter implements FeatureSelectHandler, MapClick
         periodName = pName;
         view.setPeriodName(pName);
         App.getEventBus().fireEvent(LoadingEvent.of(LoadingEventType.START));
-        if (FeatureLevel.REGION == c.getLevel() && selectedPra != null
+        if (FeatureLevel.REGION == c.getLevel() //
+                && selectedPra != null //
+                && regionOfSelectedPra != null //
                 && !Objects.equals(regionOfSelectedPra, c.getFeatureId())) {
             c.setLevel(FeatureLevel.PRA);
             c.setFeatureId(selectedPra);
@@ -120,6 +122,8 @@ public final class RightPanelPresenter implements FeatureSelectHandler, MapClick
             GWT.log("RightPanelPresenter.loadValues() succcess");
             if (FeatureLevel.PRA == c.getLevel() && FeatureLevel.REGION == d.getParentFeature().getLevel()) {
                 regionOfSelectedPra = d.getParentFeature().getId();
+            } else {
+                regionOfSelectedPra = null;
             }
             view.setSummary(d);
         }) //
@@ -142,6 +146,7 @@ public final class RightPanelPresenter implements FeatureSelectHandler, MapClick
 
     @Override
     public void onFeatureSelect(final FeatureSelectEvent event) {
+        GWT.log("RightPanelPresenter.onFeatureSelect()");
         // keep the selected PRA on the map
         if (FeatureLevel.PRA == event.getLevel()) {
             selectedPra = event.getId();
diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/view/LayoutView.java b/www-client/src/main/java/fr/agrometinfo/www/client/view/LayoutView.java
index 7380db7..2f628f9 100644
--- a/www-client/src/main/java/fr/agrometinfo/www/client/view/LayoutView.java
+++ b/www-client/src/main/java/fr/agrometinfo/www/client/view/LayoutView.java
@@ -314,7 +314,7 @@ implements LayoutPresenter.View, LoadingHandler {
     }
 
     private void initRightPanel() {
-        GWT.log("LayoutView.initRightPannel()");
+        GWT.log("LayoutView.initRightPanel()");
         // NB cannot get z-index using layout.getFooter().getZIndex()
         final int footerZIndex = 9;
         // incrementing z-index to change also z-index in modal
@@ -324,7 +324,7 @@ implements LayoutPresenter.View, LoadingHandler {
         } while (rightPanelZIndex <= footerZIndex);
 
         layout.getRightPanel().setZIndex(rightPanelZIndex);
-        GWT.log("LayoutView.initRightPannel() " + rightPanelZIndex);
+        GWT.log("LayoutView.initRightPanel() " + rightPanelZIndex);
     }
 
     private void initTopBar() {
diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/view/LeftPanelView.java b/www-client/src/main/java/fr/agrometinfo/www/client/view/LeftPanelView.java
index 76b6666..d171645 100644
--- a/www-client/src/main/java/fr/agrometinfo/www/client/view/LeftPanelView.java
+++ b/www-client/src/main/java/fr/agrometinfo/www/client/view/LeftPanelView.java
@@ -252,6 +252,8 @@ public final class LeftPanelView extends AbstractBaseView<LeftPanelPresenter> im
         if (newValue.length() > 2) {
             choice.setFeatureId(null);
         } else {
+            // France métropolitaine : "0"
+            choice.setLevel(FeatureLevel.REGION);
             choice.setFeatureId(newValue);
         }
         onChoiceChange();
@@ -269,7 +271,11 @@ public final class LeftPanelView extends AbstractBaseView<LeftPanelPresenter> im
 
     @Override
     public void selectRegionId(final String id) {
-        regionSelect.selectByKey(id);
+        if (id == null || id.isEmpty()) {
+            regionSelect.selectByKey("0");
+        } else {
+            regionSelect.selectByKey(id);
+        }
     }
 
     @Override
diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/view/RightPanelView.java b/www-client/src/main/java/fr/agrometinfo/www/client/view/RightPanelView.java
index 3827bb7..b98016a 100644
--- a/www-client/src/main/java/fr/agrometinfo/www/client/view/RightPanelView.java
+++ b/www-client/src/main/java/fr/agrometinfo/www/client/view/RightPanelView.java
@@ -31,6 +31,7 @@ import fr.agrometinfo.www.client.presenter.RightPanelPresenter;
 import fr.agrometinfo.www.client.ui.CardDetails;
 import fr.agrometinfo.www.client.ui.chart.DailyValuesChart;
 import fr.agrometinfo.www.client.util.UiUtils;
+import fr.agrometinfo.www.shared.dto.FeatureLevel;
 import fr.agrometinfo.www.shared.dto.IndicatorDTO;
 import fr.agrometinfo.www.shared.dto.SummaryDTO;
 
@@ -230,21 +231,28 @@ public final class RightPanelView implements RightPanelPresenter.View {
             }
         }
 
-        if (data.getParentFeature() != null) {
+        if (backBtnClickListener != null) {
+            backBtn.removeEventListener(EventType.click, backBtnClickListener);
+        }
+        if (featureName == null || featureName.isEmpty()) {
+            backBtn.style().setDisplay("none");
+            backBtnClickListener = null;
+        } else if (data.getParentFeature() != null) {
             backBtn.getTextSpan().textContent(data.getParentFeature().getName());
-            if (backBtnClickListener != null) {
-                backBtn.removeEventListener(EventType.click, backBtnClickListener);
-            }
             backBtnClickListener = e -> {
                 final FeatureSelectEvent event = new FeatureSelectEvent();
                 event.setId(data.getParentFeature().getId());
                 event.setLevel(data.getParentFeature().getLevel());
-                App.getEventBus().fireEvent(FeatureSelectEvent.of(event.getLevel(), event.getId()));
+                App.getEventBus().fireEvent(event);
             };
-            backBtn.addClickListener(backBtnClickListener);
-            backBtn.style().setDisplay("inline-block");
         } else {
-            backBtn.style().setDisplay("none");
+            backBtn.getTextSpan().textContent(CSTS.metropolitanFrance());
+            backBtnClickListener = e -> App.getEventBus().fireEvent(FeatureSelectEvent.of(FeatureLevel.REGION, ""));
+            backBtn.style().setDisplay("inline-block");
+        }
+        if (backBtnClickListener != null) {
+            backBtn.style().setDisplay("inline-block");
+            backBtn.addClickListener(backBtnClickListener);
         }
 
         final NumberFormat nf = NumberFormat.getFormat("0.#");
-- 
GitLab