From ee2f1a2c879aeea1c1d2a8fb5dd2a6fdfff48666 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Mon, 29 Apr 2019 14:25:49 +0200
Subject: [PATCH] Fix #86

---
 src/nub.ts                        | 10 ++++++++++
 src/regime_uniforme.ts            |  2 +-
 src/remous.ts                     |  2 +-
 src/section/section_nub.ts        |  4 ----
 src/section/section_parametree.ts |  2 +-
 src/structure/cloisons.ts         | 14 +++++++++++---
 6 files changed, 24 insertions(+), 10 deletions(-)

diff --git a/src/nub.ts b/src/nub.ts
index d6132a92..f18235de 100644
--- a/src/nub.ts
+++ b/src/nub.ts
@@ -411,6 +411,8 @@ export abstract class Nub extends ComputeNode implements IObservable {
         child.parent = this;
         // propagate precision
         child.prms.Pr.setValue(this.prms.Pr.v); // does not write to .v to bypass calculability control
+        // postprocessing
+        this.adjustChildParameters(child);
     }
 
     public getChildren(): Nub[] {
@@ -882,6 +884,8 @@ export abstract class Nub extends ComputeNode implements IObservable {
         }
         // add reference to parent collection (this)
         child.parent = this;
+        // postprocessing
+        this.adjustChildParameters(child);
     }
 
     /**
@@ -1053,6 +1057,12 @@ export abstract class Nub extends ComputeNode implements IObservable {
         }, this);
     }
 
+    /**
+     * Optional postprocessing after adding / replacing a child
+     */
+    // tslint:disable-next-line:no-empty
+    protected adjustChildParameters(child: Nub) {}
+
     /**
      * Résoud l'équation par une méthode numérique
      * @param sVarCalc nom de la variable à calculer
diff --git a/src/regime_uniforme.ts b/src/regime_uniforme.ts
index 4a349f3b..bf0685c5 100644
--- a/src/regime_uniforme.ts
+++ b/src/regime_uniforme.ts
@@ -50,7 +50,7 @@ export class RegimeUniforme extends SectionNub {
     // tslint:disable-next-line:no-empty
     protected setParametersCalculability() {}
 
-    protected setSectionParametersCalculability(): void {
+    protected adjustChildParameters(): void {
         this.section.prms.Q.calculability = ParamCalculability.EQUATION;
         this.section.prms.Y.calculability = ParamCalculability.EQUATION;
     }
diff --git a/src/remous.ts b/src/remous.ts
index 234c1d8a..867f3cbf 100644
--- a/src/remous.ts
+++ b/src/remous.ts
@@ -519,7 +519,7 @@ export class CourbeRemous extends SectionNub {
         this.prms.Yaval.calculability = ParamCalculability.FREE;
     }
 
-    protected setSectionParametersCalculability(): void {
+    protected adjustChildParameters(): void {
         this.section.prms.Y.calculability = ParamCalculability.DICHO;
     }
 
diff --git a/src/section/section_nub.ts b/src/section/section_nub.ts
index 37cf0dff..c53b7cda 100644
--- a/src/section/section_nub.ts
+++ b/src/section/section_nub.ts
@@ -96,10 +96,6 @@ export abstract class SectionNub extends Nub {
                 this._children[0] = undefined;
             }
             this.replaceChild(0, s);
-            this.setSectionParametersCalculability();
         }
     }
-
-    /** Called everytime a section is set / replaced */
-    protected abstract setSectionParametersCalculability(): void;
 }
diff --git a/src/section/section_parametree.ts b/src/section/section_parametree.ts
index 874418aa..b3d03d8d 100644
--- a/src/section/section_parametree.ts
+++ b/src/section/section_parametree.ts
@@ -202,7 +202,7 @@ export class SectionParametree extends SectionNub {
     protected setParametersCalculability(): void {}
 
     // tslint:disable-next-line:no-empty
-    protected setSectionParametersCalculability(): void {}
+    protected adjustChildParameters(): void {}
 
     protected setExtraResultsFamilies() {
         this._extraResultsFamilies = {
diff --git a/src/structure/cloisons.ts b/src/structure/cloisons.ts
index 056bf4f2..5dd0b519 100644
--- a/src/structure/cloisons.ts
+++ b/src/structure/cloisons.ts
@@ -1,10 +1,11 @@
 import { CalculatorType } from "../compute-node";
+import { Nub } from "../index";
 import { PabPuissance, PabPuissanceParams } from "../pab/pab_puissance";
 import { ParamCalculability } from "../param/param-definition";
 import { Result } from "../util/result";
 import { CloisonsParams } from "./cloisons_params";
 import { ParallelStructure } from "./parallel_structure";
-import { StructureKiviParams } from "./structure_kivi";
+import { StructureKivi, StructureKiviParams } from "./structure_kivi";
 import { loiAdmissiblesCloisons, LoiDebit } from "./structure_props";
 
 export { CloisonsParams };
@@ -86,12 +87,19 @@ export class Cloisons extends ParallelStructure {
         );
         r.extraResults.PV = puissanceNub.Calc("PV", 0).vCalc;
 
-        // Ajout de la cote de radier
-        r.extraResults.ZB = prms.Z1 - prms.DH - prms.PB;
+        // Ajout de la cote de radier de bassin
+        r.extraResults.ZRB = prms.Z1 - prms.DH - prms.PB;
 
         return r;
     }
 
+    public adjustChildParameters(child: Nub) {
+        if (child.prms instanceof StructureKiviParams) {
+            // hide ZRAM for KIVI, in Cloisons context only
+            child.prms.ZRAM.visible = false;
+        }
+    }
+
     /**
      * paramétrage de la calculabilité des paramètres
      */
-- 
GitLab