From 21fd69dbed783166052ebe9ef69b9b082fdf75ef Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Fri, 5 Jul 2019 16:13:03 +0200
Subject: [PATCH] PAB results : fix values display when Z2 is varying

---
 .../pab-results-table.component.ts            |  2 +-
 .../formulaire/definition/form-compute-pab.ts | 21 +++++++++++++++++--
 src/app/results/pab-results.ts                |  9 +++++---
 src/app/results/plottable-pab-results.ts      |  2 +-
 4 files changed, 27 insertions(+), 7 deletions(-)

diff --git a/src/app/components/pab-results/pab-results-table.component.ts b/src/app/components/pab-results/pab-results-table.component.ts
index 2bcfa689b..ed15acd8b 100644
--- a/src/app/components/pab-results/pab-results-table.component.ts
+++ b/src/app/components/pab-results/pab-results-table.component.ts
@@ -95,7 +95,7 @@ export class PabResultsTableComponent extends ResultsComponent {
                 const rln = pr.cloisonAvalResults.resultElements[vi].extraResults;
                 this._dataSet.push([
                     this.intlService.localizeText("INFO_LIB_AVAL"),
-                    pr.Z2.toFixed(nDigits),
+                    pr.Z2[vi].toFixed(nDigits),
                     rln.ZRAM.toFixed(nDigits),
                     rln.DH.toFixed(nDigits),
                     rln.Q.toFixed(nDigits),
diff --git a/src/app/formulaire/definition/form-compute-pab.ts b/src/app/formulaire/definition/form-compute-pab.ts
index ce39c432d..36c687371 100644
--- a/src/app/formulaire/definition/form-compute-pab.ts
+++ b/src/app/formulaire/definition/form-compute-pab.ts
@@ -49,12 +49,29 @@ export class FormComputePab extends FormCompute {
         pabr.cloisonsResults = cr,
         // résultat de la cloison aval
         pabr.cloisonAvalResults = pab.downWall.result;
+
         // cote aval de la passe
-        pabr.Z2 = pab.prms.Z2.v;
+        if (pab.prms.Z2.hasMultipleValues) {
+            // find longest list
+            let longest = 0;
+            for (let i = 0; i < varParams.length; i++) {
+                const vs = varParams[i].valuesIterator.count();
+                if (vs > longest) {
+                    longest = vs;
+                }
+            }
+            // get extended values lists for Z2
+            const iter = pab.prms.Z2.getExtendedValuesIterator(longest);
+            while (iter.hasNext) {
+                const nv = iter.next();
+                pabr.Z2.push(nv.value);
+            }
+        } else {
+            pabr.Z2 = [ pab.prms.Z2.singleValue ];
+        }
 
         if (varParams) {
             pabr.variatedParameters = varParams;
-            // pabr.update(false);
         }
     }
 
diff --git a/src/app/results/pab-results.ts b/src/app/results/pab-results.ts
index 334882bfe..93b980390 100644
--- a/src/app/results/pab-results.ts
+++ b/src/app/results/pab-results.ts
@@ -12,8 +12,11 @@ export class PabResults extends CalculatedParamResults {
     /** résultats du module ParallelStructure pour la cloison aval */
     public cloisonAvalResults: Result;
 
-    /** cote aval de l'ensemble de la passe */
-    public Z2: number;
+    /**
+     * valeurs de la cote aval de l'ensemble de la passe, pour chaque
+     * itération : si aucun paramètre ne varie, ne contient qu'un élément
+     * */
+    public Z2: number[];
 
     /** paramètres variés */
     public variatedParameters: NgParameter[];
@@ -63,7 +66,7 @@ export class PabResults extends CalculatedParamResults {
         super.reset();
         this.cloisonsResults = [];
         this.cloisonAvalResults = undefined;
-        this.Z2 = undefined;
+        this.Z2 = [];
     }
 
     /** retourne true si au moins un calcul a échoué (le log a un code négatif) */
diff --git a/src/app/results/plottable-pab-results.ts b/src/app/results/plottable-pab-results.ts
index 85bd80a19..ae7b294ef 100644
--- a/src/app/results/plottable-pab-results.ts
+++ b/src/app/results/plottable-pab-results.ts
@@ -97,7 +97,7 @@ export class PlottablePabResults implements PlottableData {
                     data.push(pr.cloisonsResults[i].resultElements[vi].vCalc.toFixed(nDigits));
                 }
                 data.push(pr.cloisonAvalResults.resultElements[vi].vCalc.toFixed(nDigits));
-                data.push(pr.Z2.toFixed(nDigits));
+                data.push(pr.Z2[vi].toFixed(nDigits));
                 break;
 
             case "PV":
-- 
GitLab