diff --git a/src/nub.ts b/src/nub.ts index c37f38c003d21f42967232905493de08a784c6fa..e80000368ca26952a51f0ad76e58630bc064af31 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 781bd7ec1eee7b6771cebc3ad066b2e43cec8c29..491765614f7c69bdd0376cbd330acd0c928a6128 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); + } }