From 82a6d8111c48a4baa5d0fbe3882b7595bb58ba41 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Wed, 20 Mar 2019 11:40:51 +0100 Subject: [PATCH] Fix #172 --- .../param-field-line.component.ts | 1 + .../definition/form-def-fixedvar.ts | 8 ----- src/app/formulaire/ngparam.ts | 29 ++++++++++++------- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/app/components/param-field-line/param-field-line.component.ts b/src/app/components/param-field-line/param-field-line.component.ts index ed9bb5063..e147f1f9f 100644 --- a/src/app/components/param-field-line/param-field-line.component.ts +++ b/src/app/components/param-field-line/param-field-line.component.ts @@ -220,6 +220,7 @@ export class ParamFieldLineComponent implements OnChanges { case "fix": this.param.valueMode = ParamValueMode.SINGLE; // reset the value to avoid "undefined" after exiting CALC or LINK mode + // @TODO not always necessary; find out why this.param.setValue(this, this.param.paramDefinition.paramValues.singleValue); break; diff --git a/src/app/formulaire/definition/form-def-fixedvar.ts b/src/app/formulaire/definition/form-def-fixedvar.ts index 4474e9a7c..469bda41b 100644 --- a/src/app/formulaire/definition/form-def-fixedvar.ts +++ b/src/app/formulaire/definition/form-def-fixedvar.ts @@ -155,14 +155,6 @@ export class FormDefFixedVar { } } - private logParams() { - for (const fe of this._formBase.allFormElements) { - if (fe instanceof NgParameter) { - console.log(`${fe.paramDefinition.symbol} : ${ParamValueMode[fe.paramDefinition.valueMode]}`); - } - } - } - /** * gestion des événements clic sur les radios */ diff --git a/src/app/formulaire/ngparam.ts b/src/app/formulaire/ngparam.ts index de3ce46dc..ffc0b9183 100644 --- a/src/app/formulaire/ngparam.ts +++ b/src/app/formulaire/ngparam.ts @@ -56,13 +56,13 @@ export class NgParameter extends InputField implements Observer { public static preview(p: ParamDefinition): string { let valuePreview: string; const i18n = ServiceFactory.instance.i18nService; + const nDigits = ServiceFactory.instance.applicationSetupService.displayDigits; // console.log("NgParam::preview()", p.symbol, ParamValueMode[p.valueMode], p); switch (p.valueMode) { case ParamValueMode.SINGLE: - valuePreview = String(p.getValue()); + valuePreview = String(p.getValue().toFixed(nDigits)); break; case ParamValueMode.MINMAX: - const nDigits = ServiceFactory.instance.applicationSetupService.displayDigits; let min: any = p.paramValues.min; let max: any = p.paramValues.max; let step: any = p.paramValues.step; @@ -81,13 +81,15 @@ export class NgParameter extends InputField implements Observer { case ParamValueMode.LISTE: valuePreview = i18n.localizeText("INFO_PARAMFIELD_PARAMVARIER_VALUES"); const vals = p.paramValues.valueList || []; - valuePreview += " " + vals.slice(0, 5).join("; ") + "…"; + valuePreview += " " + vals.slice(0, 5).map((v) => { + return v.toFixed(nDigits); + }).join("; ") + "…"; break; case ParamValueMode.CALCUL: valuePreview = i18n.localizeText("INFO_PARAMFIELD_IN_CALCULATION"); if (p.calculability === ParamCalculability.DICHO) { valuePreview += " (" + i18n.localizeText("INFO_PARAMFIELD_IN_CALCULATION_INITIAL_VALUE") - + ": " + p.getValue() + ")"; + + ": " + p.getValue().toFixed(nDigits) + ")"; } break; case ParamValueMode.LINK: @@ -101,9 +103,11 @@ export class NgParameter extends InputField implements Observer { if (p.referencedValue.hasMultipleValues()) { // like LIST mode valuePreview = i18n.localizeText("INFO_PARAMFIELD_PARAMVARIER_VALUES"); - valuePreview += " " + p.referencedValue.nub.result.getCalculatedValues().slice(0, 5).join("; ") + "…"; + valuePreview += " " + p.referencedValue.nub.result.getCalculatedValues().map((v) => { + return v.toFixed(nDigits); + }).slice(0, 5).join("; ") + "…"; } else { - valuePreview = String(p.referencedValue.nub.result.vCalc); + valuePreview = String(p.referencedValue.nub.result.vCalc.toFixed(nDigits)); } } else { valuePreview = i18n.localizeText("INFO_PARAMFIELD_IN_CALCULATION"); @@ -120,10 +124,12 @@ export class NgParameter extends InputField implements Observer { if (p.referencedValue.hasMultipleValues()) { // like LIST mode valuePreview = i18n.localizeText("INFO_PARAMFIELD_PARAMVARIER_VALUES"); - valuePreview += " " + remoteValues.valueList.slice(0, 5).join("; ") + "…"; + valuePreview += " " + remoteValues.valueList.slice(0, 5).map((v) => { + return v.toFixed(nDigits); + }).join("; ") + "…"; } else { // like SINGLE mode - valuePreview = String(remoteValues.currentValue); + valuePreview = String(remoteValues.currentValue.toFixed(nDigits)); } } catch (e) { valuePreview = i18n.localizeText("INFO_PARAMFIELD_IN_CALCULATION"); @@ -183,16 +189,19 @@ export class NgParameter extends InputField implements Observer { return this._paramDef.valueMode; } - // @TODO vérifier : ça a une tête à faire 40x trop d'opérations pour rien + /** + * Unlinks the parameter and updates its value when value mode changes + */ public set valueMode(m: ParamValueMode) { // undefined si on clique en dehors du select après l'avoir ouvert (cad sans avoir fait de sélection) // et au même niveau, cad à côté du bouton et non à côté du menu déroulant if (m !== undefined && this._paramDef.valueMode !== m) { + const nDigits = ServiceFactory.instance.applicationSetupService.displayDigits; this.unlinkParameter(); this._paramDef.valueMode = m; this.notifyObservers({ "action": "valueModeChange", - "value": this._paramDef.getValue() + "value": Number(this._paramDef.getValue().toFixed(nDigits)) }); } } -- GitLab