From d1bed13a0e53678af4388570aac78bd2afda3070 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Mon, 1 Jul 2019 17:17:01 +0200
Subject: [PATCH] Improved PAB results

fix #229
added translations
fix bug in Z plotted data
---
 .../pab-results-table.component.ts            |  4 ++--
 src/app/results/plottable-pab-results.ts      | 24 +++++++++++++++----
 src/locale/messages.en.json                   |  2 ++
 src/locale/messages.fr.json                   |  2 ++
 4 files changed, 25 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 ac9fda71d..959e2a848 100644
--- a/src/app/components/pab-results/pab-results-table.component.ts
+++ b/src/app/components/pab-results/pab-results-table.component.ts
@@ -53,7 +53,7 @@ export class PabResultsTableComponent extends ResultsComponent {
             // line 1
             if (pr.cloisonsResults[0].vCalc) { // parfois le calcul des cloisons échoue
                 this._dataSet.push([
-                    "",
+                    this.intlService.localizeText("INFO_LIB_AMONT"),
                     pr.cloisonsResults[0] ? pr.cloisonsResults[0].vCalc.toFixed(nDigits) : "",
                     "", "", "", "", "", "", ""
                 ]);
@@ -89,7 +89,7 @@ export class PabResultsTableComponent extends ResultsComponent {
             if (pr.cloisonAvalResults.vCalc) {
                 const rln = pr.cloisonAvalResults.resultElement.extraResults;
                 this._dataSet.push([
-                    this.intlService.localizeText("INFO_LIB_AVAL"), // n° cloison
+                    this.intlService.localizeText("INFO_LIB_AVAL"),
                     pr.Z2.toFixed(nDigits),
                     rln.ZRAM.toFixed(nDigits),
                     rln.DH.toFixed(nDigits),
diff --git a/src/app/results/plottable-pab-results.ts b/src/app/results/plottable-pab-results.ts
index 95d123e39..bcfa6cf53 100644
--- a/src/app/results/plottable-pab-results.ts
+++ b/src/app/results/plottable-pab-results.ts
@@ -30,7 +30,11 @@ export class PlottablePabResults implements PlottableData {
      * @param symbol parameter / result symbol (ex: "Q")
      */
     public getChartAxisLabel(symbol: string): string {
-        return this.pabResults.headers[this.pabResults.columns.indexOf(symbol)];
+        if (symbol === "x") { // specific case for wall abscissa
+            return ServiceFactory.instance.i18nService.localizeText("INFO_LIB_ABSCISSE_CLOISON");
+        } else {
+            return this.pabResults.headers[this.pabResults.columns.indexOf(symbol)];
+        }
     }
 
     public expandLabelFromSymbol(symbol: string): string {
@@ -42,7 +46,8 @@ export class PlottablePabResults implements PlottableData {
      * as X or Y chart axis
      */
     public getAvailableChartAxis(): string[] {
-        return this.pabResults.columns;
+        // add wall abscissa on the fly
+        return [ "x" ].concat(this.pabResults.columns);
     }
 
     // just to implement interface
@@ -67,10 +72,9 @@ export class PlottablePabResults implements PlottableData {
         switch (symbol) {
             case "CLOISON":
                 data.push("");
-                for (let i = 0; i < l; i++) {
+                for (let i = 0; i <= l; i++) { // <= for one extra step (downwall)
                     data.push("" + (i + 1));
                 }
-                data.push(ServiceFactory.instance.i18nService.localizeText("INFO_LIB_AVAL"));
                 break;
 
             case "DH":
@@ -86,7 +90,7 @@ export class PlottablePabResults implements PlottableData {
                 break;
 
             case "Z":
-                for (let i = 0; i < l - 1; i++) {
+                for (let i = 0; i < l; i++) {
                     data.push(pr.cloisonsResults[i].vCalc.toFixed(nDigits));
                 }
                 data.push(pr.cloisonAvalResults.vCalc.toFixed(nDigits));
@@ -104,6 +108,16 @@ export class PlottablePabResults implements PlottableData {
                 }
                 data.push("");
                 break;
+
+            case "x": // wall abscissa
+                data.push("");
+                for (let i = 0; i < l; i++) {
+                    const er = pr.cloisonsResults[i].getExtraResult(symbol);
+                    data.push((er !== undefined) ? er.toFixed(nDigits) : "");
+                }
+                const erXdw = pr.cloisonAvalResults.getExtraResult(symbol);
+                data.push((erXdw !== undefined) ? erXdw.toFixed(nDigits) : "");
+                break;
         }
 
         return data;
diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json
index f88b0bb85..1abffb6c6 100644
--- a/src/locale/messages.en.json
+++ b/src/locale/messages.en.json
@@ -111,8 +111,10 @@
     "INFO_WALL_REMOVED": "Wall #%s removed",
     "INFO_LECHAPTCALMON_TITRE_COURT": "Lechapt-C.",
     "INFO_LECHAPTCALMON_TITRE": "Lechapt-Calmon",
+    "INFO_LIB_ABSCISSE_CLOISON": "Wall abscissa",
     "INFO_LIB_ALPHA": "Alpha coefficient",
     "INFO_LIB_ALPHA2": "Half-angle at the apex",
+    "INFO_LIB_AMONT": "Upstream",
     "INFO_LIB_AVAL": "Downstream",
     "INFO_LIB_B": "Surface width",
     "INFO_LIB_BB": "Pool width",
diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json
index 1e4e1bb5a..db1a816be 100644
--- a/src/locale/messages.fr.json
+++ b/src/locale/messages.fr.json
@@ -111,8 +111,10 @@
     "INFO_WALL_REMOVED": "Cloison n°%s supprimée",
     "INFO_LECHAPTCALMON_TITRE_COURT": "Lechapt-C.",
     "INFO_LECHAPTCALMON_TITRE": "Lechapt-Calmon",
+    "INFO_LIB_ABSCISSE_CLOISON": "Abscisse de la cloison",
     "INFO_LIB_ALPHA": "Coefficient alpha",
     "INFO_LIB_ALPHA2": "Demi-angle au sommet",
+    "INFO_LIB_AMONT": "Amont",
     "INFO_LIB_AVAL": "Aval",
     "INFO_LIB_B": "Largeur au miroir",
     "INFO_LIB_BB": "Largeur du bassin",
-- 
GitLab