From 423038c4c0fe3add5b87a71538f34c5d3f780ede Mon Sep 17 00:00:00 2001 From: "francois.grand" <francois.grand@irstea.fr> Date: Wed, 13 Jun 2018 15:21:42 +0200 Subject: [PATCH] =?UTF-8?q?=20#45=20modif=20de=20la=20propri=C3=A9t=C3=A9?= =?UTF-8?q?=20ParamValues.valueMode=20(renvoie=20maintenant=20la=20valeur?= =?UTF-8?q?=20de=20=5FvalueMode=20et=20non=20=C3=A9ventuellement=20celle?= =?UTF-8?q?=20r=C3=A9f=C3=A9renc=C3=A9e)=20-=20modif=20de=20Nub.CalcSerie(?= =?UTF-8?q?)=20en=20cons=C3=A9quence?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/nub.ts | 49 +++++++++++++++++++++++++++++++++++---- src/param/param-values.ts | 11 +-------- 2 files changed, 45 insertions(+), 15 deletions(-) diff --git a/src/nub.ts b/src/nub.ts index 367114fa..c37f38c0 100644 --- a/src/nub.ts +++ b/src/nub.ts @@ -76,13 +76,19 @@ export abstract class Nub extends ComputeNode implements IReferencedObject { public CalcSerie(rPrec: number = 0.001, rInit?: number, sDonnee?: string): Result { let variatedParam: ParamDefinition; let computedParam: ParamDefinition; - for (const p of this.parameterIterator) { + let prmValue: ParamValues; // instance de ParamValues utilisée pour le paramètre varié (qui peut être un paramètre référencé (importé)) + for (const p of this.parameterIterator) { switch (p.valueMode) { + case ParamValueMode.SINGLE: + break; + case ParamValueMode.LISTE: case ParamValueMode.MINMAX: - if (variatedParam == undefined) + if (variatedParam == undefined) { variatedParam = p; + prmValue = p.paramValues; + } else throw new Error(`CalcSerie() : il y plusieurs paramètres à varier (au moins ${variatedParam.symbol} et ${p.symbol})`); break; @@ -95,6 +101,39 @@ export abstract class Nub extends ComputeNode implements IReferencedObject { throw new Error(`CalcSerie() : il y plusieurs paramètres à calculer (au moins ${computedParam.symbol} et ${p.symbol})`); } break; + + case ParamValueMode.LINK: + if (p.referencedParamValues !== undefined) + switch (p.referencedParamValues.valueMode) { + case ParamValueMode.SINGLE: + break; + + case ParamValueMode.LISTE: + case ParamValueMode.MINMAX: + if (variatedParam == undefined) { + variatedParam = p; + prmValue = p.referencedParamValues; + } + else + throw new Error(`CalcSerie() : il y plusieurs paramètres à varier (au moins ${variatedParam.symbol} et ${p.symbol})`); + break; + + case ParamValueMode.CALCUL: + if (sDonnee == undefined) { + if (computedParam == undefined) + computedParam = p; + else + throw new Error(`CalcSerie() : il y plusieurs paramètres à calculer (au moins ${computedParam.symbol} et ${p.symbol})`); + } + break; + + default: + throw new Error(`CalcSerie() : valeur référencée de ParamValueMode ${ParamValueMode[p.referencedParamValues.valueMode]} non prise en charge`); + } + break; + + default: + throw new Error(`CalcSerie() : valeur de ParamValueMode ${ParamValueMode[p.valueMode]} non prise en charge`); } } @@ -113,9 +152,9 @@ export abstract class Nub extends ComputeNode implements IReferencedObject { this._result = this.Calc(computedSymbol, rInit, rPrec); // résultat dans this._result else { const res = new Result(); - variatedParam.paramValues.initIterator(); - while (variatedParam.paramValues.hasNext) { - variatedParam.paramValues.next; + prmValue.initIterator(); + while (prmValue.hasNext) { + prmValue.next; this.Calc(computedSymbol, rInit, rPrec); // résultat dans this._result if (this._result.ok) { res.addResultElement(this._result.resultElement); diff --git a/src/param/param-values.ts b/src/param/param-values.ts index d4e5373c..98fe0615 100644 --- a/src/param/param-values.ts +++ b/src/param/param-values.ts @@ -81,16 +81,7 @@ export class ParamValues implements IObjectReference, IterableValues { } public get valueMode() { - switch (this._valueMode) { - case ParamValueMode.LINK: - const pv = this.referencedParamValues; - if (pv == undefined) - return undefined; - return pv.valueMode; - - default: - return this._valueMode; - } + return this._valueMode; } public set valueMode(m: ParamValueMode) { -- GitLab