From e5094d9b10fca01d4bda31d372721f5ec634d8cd Mon Sep 17 00:00:00 2001
From: "francois.grand" <francois.grand@irstea.fr>
Date: Thu, 14 Jun 2018 16:33:01 +0200
Subject: [PATCH] =?UTF-8?q?=20#45=20Nub=20:=20ajout=20de=20la=20m=C3=A9tho?=
 =?UTF-8?q?de=20getLinkableParameters()=20pour=20cr=C3=A9er=20la=20liste?=
 =?UTF-8?q?=20des=20param=C3=A8tres=20liables=20=C3=A0=20un=20param=C3=A8t?=
 =?UTF-8?q?re?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/nub.ts         | 29 +++++++++++++++++++++++++++++
 src/session_nub.ts |  9 +++++++++
 2 files changed, 38 insertions(+)

diff --git a/src/nub.ts b/src/nub.ts
index c37f38c0..e8000036 100644
--- a/src/nub.ts
+++ b/src/nub.ts
@@ -224,4 +224,33 @@ export abstract class Nub extends ComputeNode implements IReferencedObject {
                 throw new Error(`Nub.getReferencedValuesIterator() : mode de valeur ${ParamValueMode[p.paramValues.valueMode]} invalide pour le paramètre référencé par ${desc}`);
         }
     }
+
+    /**
+     * @returns liste des paramètres liables à un paramètre
+     * @param p paramètre qui sert de clé de recherche des paramètres liables
+     */
+    public getLinkableParameters(param: ParamDefinition): any[] {
+        const res: any[] = [];
+
+        for (const p of this._prms)
+            if (p.uid !== param.uid)
+                switch (p.valueMode) {
+                    case ParamValueMode.SINGLE:
+                    case ParamValueMode.MINMAX:
+                    case ParamValueMode.LISTE:
+                        switch (param.symbol) {
+                            case "Z1":
+                            case "Z2":
+                                if (p.symbol === "Z1" || p.symbol === "Z2")
+                                    res.push({ "param": p, "nub": this });
+                                break;
+
+                            default:
+                                if (p.symbol === param.symbol)
+                                    res.push({ "param": p, "nub": this });
+                        }
+                }
+
+        return res;
+    }
 }
diff --git a/src/session_nub.ts b/src/session_nub.ts
index 781bd7ec..49176561 100644
--- a/src/session_nub.ts
+++ b/src/session_nub.ts
@@ -1,5 +1,6 @@
 import { Nub } from "./nub";
 import { IObservable, Observer, Observable } from "./util/observer";
+import { ParamDefinition } from "./param/param-definition";
 
 /**
  * gestion d'un ensemble de propriétés (clé/valeur)
@@ -187,4 +188,12 @@ export class SessionNub {
     public hasProperties(p: Props | {}): boolean {
         return this._props.hasProperties(p);
     }
+
+    /**
+     * @returns liste des paramètres liables à un paramètre
+     * @param p paramètre qui sert de clé de recherche des paramètres liables
+     */
+    public getLinkableParameters(p: ParamDefinition): any[] {
+        return this._nub.getLinkableParameters(p);
+    }
 }
-- 
GitLab