From 4ff62d2dade52c3901343c243fa66b1ef7778074 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Tue, 23 Jul 2019 11:01:31 +0200
Subject: [PATCH] Fix #231 - input value update on model change

---
 ...chapt-calmon-material-selector.e2e-spec.ts | 47 +++++++++++++++++++
 src/app/formulaire/ngparam.ts                 |  8 +++-
 2 files changed, 54 insertions(+), 1 deletion(-)
 create mode 100644 e2e/lechapt-calmon-material-selector.e2e-spec.ts

diff --git a/e2e/lechapt-calmon-material-selector.e2e-spec.ts b/e2e/lechapt-calmon-material-selector.e2e-spec.ts
new file mode 100644
index 000000000..9f4ed20f6
--- /dev/null
+++ b/e2e/lechapt-calmon-material-selector.e2e-spec.ts
@@ -0,0 +1,47 @@
+import { AppPage } from "./app.po";
+import { ListPage } from "./list.po";
+import { CalculatorPage } from "./calculator.po";
+import { Navbar } from "./navbar.po";
+import { SideNav } from "./sidenav.po";
+import { browser, by } from "protractor";
+
+describe("Lechapt-Calmon", () => {
+  let listPage: ListPage;
+  let calcPage: CalculatorPage;
+  let navBar: Navbar;
+  let startPage: AppPage;
+  let sidenav: SideNav;
+
+  beforeEach(() => {
+    listPage = new ListPage();
+    calcPage = new CalculatorPage();
+    navBar = new Navbar();
+    startPage = new AppPage();
+    sidenav = new SideNav();
+
+  });
+
+  it(" − material selector should modify input values", async () => {
+    // create a Lechapt-Calmon
+    await startPage.navigateTo();
+    await listPage.clickMenuEntryForCalcType(1);
+    const L = calcPage.getInputById("L");
+    const M = calcPage.getInputById("M");
+    const N = calcPage.getInputById("N");
+
+    // check default values for L, M, N
+    expect(await L.getAttribute("value")).toBe("1.863");
+    expect(await M.getAttribute("value")).toBe("2");
+    expect(await N.getAttribute("value")).toBe("5.33");
+
+    // change material
+    const selectMaterial = calcPage.getSelectById("select_material");
+    await calcPage.changeSelectValue(selectMaterial, 4);
+
+    // check default values for L, M, N
+    expect(await L.getAttribute("value")).toBe("1.16");
+    expect(await M.getAttribute("value")).toBe("1.93");
+    expect(await N.getAttribute("value")).toBe("5.11");
+  });
+
+});
diff --git a/src/app/formulaire/ngparam.ts b/src/app/formulaire/ngparam.ts
index 679d3b1f3..5cc95c11f 100644
--- a/src/app/formulaire/ngparam.ts
+++ b/src/app/formulaire/ngparam.ts
@@ -308,11 +308,17 @@ export class NgParameter extends InputField implements Observer {
      * notification envoyée après la modification de la valeur du paramètre
      */
     private notifyValueModified(sender: any) {
+        let val: number;
+        if (this._paramDef.valueMode === ParamValueMode.SINGLE) {
+            val = this._paramDef.singleValue;
+        } else {
+            val = this._paramDef.v; // @WARNING coward retrocompat
+        }
         this.notifyObservers(
             {
                 "action": "ngparamAfterValue",
                 "param": this,
-                "value": this._paramDef.v
+                "value": val
             }, sender
         );
     }
-- 
GitLab