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