From 7374318842be02775d2a1f99f48125f0c99db499 Mon Sep 17 00:00:00 2001
From: "francois.grand" <francois.grand@irstea.fr>
Date: Thu, 21 Jun 2018 10:24:51 +0200
Subject: [PATCH] =?UTF-8?q?=20#48=20ParamLinkComponent=20:=20raffinement?=
 =?UTF-8?q?=20des=20=C3=A9tiquettes=20dans=20le=20s=C3=A9lecteur=20de=20pa?=
 =?UTF-8?q?ram=C3=A8tres=20liables?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../param-link/param-link.component.ts        | 41 +++++++++++++++++--
 1 file changed, 37 insertions(+), 4 deletions(-)

diff --git a/src/app/components/param-link/param-link.component.ts b/src/app/components/param-link/param-link.component.ts
index e3efcd9ac..ab78d4d85 100644
--- a/src/app/components/param-link/param-link.component.ts
+++ b/src/app/components/param-link/param-link.component.ts
@@ -29,7 +29,17 @@ export class ParamLinkComponent implements OnChanges, Observer, OnDestroy {
 
     /**
      * liste des paramètres liables sous la forme
-     * {"value":<valeur liable>, "nub":<Nub d'origine du paramètre>, "formTitle":<nom de la calculette liée au nub>}
+     * {"name":<étiquette>, "value":<valeur liable>, "nub":<Nub d'origine du paramètre>, "formTitle":<nom de la calculette liée au nub>}
+     * 
+     * l'étiquette "name" est de la forme <n|N1>[.[N2]]
+     * n : indice de de l'ouvrage dans le cas des ouvrages parallèles
+     * N1 : un nom de paramètre/résultat (dans le cas d'un résultat, il est suivi d'un point)
+     * N2 : nom de résultat complémentaire (optionnel)
+     * ex : 
+     *   Q, Z1 (paramètres)
+     *   J. (résultat)
+     *   .Yf (résultat complémentaire du résultat courant)
+     *   Q.Yf (résultat complémentaire du résultat nommé "Q")
      */
     private _linkableParams: any[];
 
@@ -94,9 +104,32 @@ export class ParamLinkComponent implements OnChanges, Observer, OnDestroy {
      * attribut "label" d'une entrée du select des paramètres
      */
     private selectItemLabel(i: any) {
-        const s = i.value.name;
-        const c = i.formTitle;
-        return `${s} (${c})`;
+        const s = i.name; // nom associé au paramètre/à la valeur
+        const c = i.formTitle; // nom de la calculette
+
+        const re1 = /([^\.]+)\.$/;  // forme xxx. (résultat)
+        const match1 = re1.exec(s);
+        if (match1 !== null)
+            return `${match1[1]} (résultat de ${c})`;
+
+        const re4 = /(\d+)\.(.+)/;  // forme <nombre>.xxx (ouvrage)
+        const match4 = re4.exec(s);
+        if (match4 !== null) {
+            const n = +match4[1] + 1
+            return `${match4[2]} (${c}, ouvrage n°${n})`;
+        }
+
+        const re2 = /([^\.]+)\.(.+)/;  // forme xxx.yyy (résultat complémentaire)
+        const match2 = re2.exec(s);
+        if (match2 !== null)
+            return `${match2[2]} (${c}, résultat complémentaire de ${match2[1]})`;
+
+        const re3 = /^\.(.+)/;  // forme .xxx (résultat complémentaire)
+        const match3 = re3.exec(s);
+        if (match3 !== null)
+            return `${match3[1]} (${c}, résultat complémentaire)`;
+
+        return `${s} (${c})`; // forme simple (paramètre)
     }
 
     /**
-- 
GitLab