From c16f3d218b908b0fa0010cad25eb79b71de40c08 Mon Sep 17 00:00:00 2001
From: Olivier Maury <Olivier.Maury@inrae.fr>
Date: Wed, 14 Feb 2024 09:23:06 +0100
Subject: [PATCH] =?UTF-8?q?R=C3=A9initialiser=20la=20liste=20des=20indicat?=
 =?UTF-8?q?eurs=20au=20changement=20de=20p=C3=A9riode.=20fixes=20#53?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../fr/agrometinfo/www/client/ui/DominoSelectBuilder.java | 6 ++++++
 .../www/client/ui/HTMLSelectElementBuilder.java           | 8 ++++++++
 .../java/fr/agrometinfo/www/client/ui/SelectBuilder.java  | 7 +++++++
 .../java/fr/agrometinfo/www/client/view/LayoutView.java   | 2 +-
 4 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/ui/DominoSelectBuilder.java b/www-client/src/main/java/fr/agrometinfo/www/client/ui/DominoSelectBuilder.java
index 035e7c2..6e91731 100644
--- a/www-client/src/main/java/fr/agrometinfo/www/client/ui/DominoSelectBuilder.java
+++ b/www-client/src/main/java/fr/agrometinfo/www/client/ui/DominoSelectBuilder.java
@@ -67,6 +67,12 @@ public final class DominoSelectBuilder<T> extends SelectBuilder<T, Select<T>> {
         return select;
     }
 
+    @Override
+    public DominoSelectBuilder<T> removeOptions() {
+        getSelect().getOptions().clear();
+        return this;
+    }
+
     @Override
     public DominoSelectBuilder<T> select(final T value) {
         select.select(createSelectOption(value));
diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/ui/HTMLSelectElementBuilder.java b/www-client/src/main/java/fr/agrometinfo/www/client/ui/HTMLSelectElementBuilder.java
index 17f8273..9f0e9d2 100644
--- a/www-client/src/main/java/fr/agrometinfo/www/client/ui/HTMLSelectElementBuilder.java
+++ b/www-client/src/main/java/fr/agrometinfo/www/client/ui/HTMLSelectElementBuilder.java
@@ -76,6 +76,14 @@ public final class HTMLSelectElementBuilder<T> extends SelectBuilder<T, HtmlCont
         return select;
     }
 
+    @Override
+    public HTMLSelectElementBuilder<T> removeOptions() {
+        for (int i = getSelect().element().options.length - 1; i >= 0; i--) {
+            getSelect().element().options.remove(i);
+        }
+        return this;
+    }
+
     @Override
     public HTMLSelectElementBuilder<T> select(final T value) {
         GWT.log("SelectBuilder.setSelect()");
diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/ui/SelectBuilder.java b/www-client/src/main/java/fr/agrometinfo/www/client/ui/SelectBuilder.java
index 642f0d1..d48c894 100644
--- a/www-client/src/main/java/fr/agrometinfo/www/client/ui/SelectBuilder.java
+++ b/www-client/src/main/java/fr/agrometinfo/www/client/ui/SelectBuilder.java
@@ -65,6 +65,13 @@ public abstract class SelectBuilder<T, U> {
         return valueFunction;
     }
 
+    /**
+     * Remove all existing options.
+     *
+     * @return same builder instance
+     */
+    public abstract SelectBuilder<T, U> removeOptions();
+
     /**
      * Select the option.
      *
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 1da2a22..b0233e0 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
@@ -405,7 +405,6 @@ public final class LayoutView extends AbstractBaseView<LayoutPresenter> implemen
         choice.setIndicator(null);
 
         // fill indicators
-        // TODO clear select
         List<IndicatorDTO> list = null;
         for (final PeriodDTO p : this.periods) {
             if (p.getCode().equals(newValue)) {
@@ -421,6 +420,7 @@ public final class LayoutView extends AbstractBaseView<LayoutPresenter> implemen
         .setSelect(indicatorSelect) //
         .setTextFunction(IndicatorDTO::getDescription) //
         .setValueFunction(IndicatorDTO::getCode) //
+        .removeOptions() //
         .addOptions(list) //
         .build();
         // select "meant"
-- 
GitLab