From cc50553197e4a1c7b473523f0a1b38b61938e332 Mon Sep 17 00:00:00 2001 From: "mathias.chouet" <mathias.chouet@irstea.fr> Date: Mon, 26 Aug 2019 17:53:17 +0200 Subject: [PATCH] MacroRugoCompound: added ZRL, ZRR, BR for inclined apron --- .../macrorugo-compound.config.json | 6 ++- .../macrorugo-compound.en.json | 3 ++ .../macrorugo-compound.fr.json | 3 ++ .../concrete/form-macrorugo-compound.ts | 40 ++++++++++++++++++- src/app/formulaire/fieldset.ts | 1 - src/app/formulaire/select-field.ts | 4 +- 6 files changed, 52 insertions(+), 5 deletions(-) diff --git a/src/app/calculators/macrorugo-compound/macrorugo-compound.config.json b/src/app/calculators/macrorugo-compound/macrorugo-compound.config.json index 6a05f9cc3..0f7bd8eab 100644 --- a/src/app/calculators/macrorugo-compound/macrorugo-compound.config.json +++ b/src/app/calculators/macrorugo-compound/macrorugo-compound.config.json @@ -33,12 +33,16 @@ "id": "select_pass_type", "type": "select", "source": "mrc_pass_type" - } + }, + "ZRL", + "ZRR", + "BR" ] }, { "type": "options", "idCal": "Q", + "apronTypeSelectId": "select_pass_type", "help": "pam/macrorugo-compound" } ] \ No newline at end of file diff --git a/src/app/calculators/macrorugo-compound/macrorugo-compound.en.json b/src/app/calculators/macrorugo-compound/macrorugo-compound.en.json index dd0ba5be3..93e85029b 100644 --- a/src/app/calculators/macrorugo-compound/macrorugo-compound.en.json +++ b/src/app/calculators/macrorugo-compound/macrorugo-compound.en.json @@ -11,6 +11,9 @@ "PBD": "Diameter", "PBH": "Height", "Cd0": "Shape (1 for round, 2 for square)", + "ZRL": "Left apron elevation", + "ZRR": "Right apron elevation", + "BR": "Total width", "select_pass_type_0": "Multiple aprons", "select_pass_type_1": "Inclined apron" diff --git a/src/app/calculators/macrorugo-compound/macrorugo-compound.fr.json b/src/app/calculators/macrorugo-compound/macrorugo-compound.fr.json index dc9c6c7f3..aafd40280 100644 --- a/src/app/calculators/macrorugo-compound/macrorugo-compound.fr.json +++ b/src/app/calculators/macrorugo-compound/macrorugo-compound.fr.json @@ -10,6 +10,9 @@ "PBD": "Diamètre", "PBH": "Hauteur", "Cd0": "Forme (1 pour rond, 2 pour carré)", + "ZRL": "Cote de radier gauche", + "ZRR": "Cote de radier droite", + "BR": "Largeur totale", "select_pass_type_0": "Radiers multiples", "select_pass_type_1": "Radier incliné" diff --git a/src/app/formulaire/definition/concrete/form-macrorugo-compound.ts b/src/app/formulaire/definition/concrete/form-macrorugo-compound.ts index 6a9404d8f..8eda5e7e6 100644 --- a/src/app/formulaire/definition/concrete/form-macrorugo-compound.ts +++ b/src/app/formulaire/definition/concrete/form-macrorugo-compound.ts @@ -3,25 +3,63 @@ import { FormulaireBase } from "./form-base"; import { FormResultFixedVar } from "../form-result-fixedvar"; import { FormComputeFixedVar } from "../form-compute-fixedvar"; +import { IObservable } from 'jalhyd'; +import { FieldSet } from '../../fieldset'; /** * Formulaire pour les passes à macrorugosités complexes */ export class FormulaireMacrorugoCompound extends FormulaireBase { + /** id of select configuring apron type */ + private _apronTypeSelectId: string; + constructor() { super(); this._formResult = new FormResultFixedVar(this); // default properties - this._props["inclinedApron"] = "1"; + this._props["inclinedApron"] = false; // remove obsolete observer set by super() this.removeObserver(this._formCompute); this._formCompute = new FormComputeFixedVar(this, (this._formResult as FormResultFixedVar)); } + protected parseOptions(json: {}) { + super.parseOptions(json); + this._apronTypeSelectId = this.getOption(json, "apronTypeSelectId"); + } + /* public get pabNub(): Pab { return this.currentNub as Pab; } */ + + public afterParseFieldset(fs: FieldSet) { + // if Fieldset contains apron type selector + if (this._apronTypeSelectId) { + const sel = fs.getFormulaireNodeById(this._apronTypeSelectId); + if (sel) { + // on abonne le formulaire aux propriétés du FieldSet + fs.properties.addObserver(this); + } + } + } + + // interface Observer + + update(sender: IObservable, data: any) { + if (sender instanceof FieldSet && data.action === "propertyChange") { + switch (data.name) { + case "inclinedApron": + // reflect changes in GUI + for (const fs of this.allFieldsets) { + // show / hide dependent fields + fs.updateFields(); + } + this.reset(); + break; + } + } + } } diff --git a/src/app/formulaire/fieldset.ts b/src/app/formulaire/fieldset.ts index ac30f3e42..053d95f2f 100644 --- a/src/app/formulaire/fieldset.ts +++ b/src/app/formulaire/fieldset.ts @@ -246,7 +246,6 @@ export class FieldSet extends FormulaireElement implements Observer { } const selectElement = selectField.getSelectedEntryFromValue(propVal); try { - console.log(`setting propval ${propVal} (propKey ${propertyKey}) on select ${selectId}`, selectElement, selectField); selectField.setValue(selectElement); } catch (e) { console.error(`setSelectValueFromProperty: cannot set value ${propVal} on <select> ${selectId}`); diff --git a/src/app/formulaire/select-field.ts b/src/app/formulaire/select-field.ts index a4ad51902..bcf8cc69c 100644 --- a/src/app/formulaire/select-field.ts +++ b/src/app/formulaire/select-field.ts @@ -159,8 +159,8 @@ export class SelectField extends Field { break; case "mrc_pass_type": // macrorugo complexe: type de radier - this.addEntry(new SelectEntry(this._entriesBaseId + "0", "0")); - this.addEntry(new SelectEntry(this._entriesBaseId + "1", "1")); + this.addEntry(new SelectEntry(this._entriesBaseId + "0", false)); + this.addEntry(new SelectEntry(this._entriesBaseId + "1", true)); break; } } -- GitLab