From a7d0a7002b0f9dc5721be0e58959e7ab573b6758 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr> Date: Mon, 17 Oct 2022 16:27:09 +0200 Subject: [PATCH] refactor: SelectFieldNubProperty: move configuration parsing out of constructor refs #483 --- src/app/formulaire/elements/fieldset.ts | 1 + .../formulaire/elements/select/select-field-factory.ts | 4 ++-- .../formulaire/elements/select/select-field-nub-prop.ts | 8 ++++++-- src/app/formulaire/elements/select/select-field.ts | 4 ++-- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/app/formulaire/elements/fieldset.ts b/src/app/formulaire/elements/fieldset.ts index 1190098be..89a696bf0 100644 --- a/src/app/formulaire/elements/fieldset.ts +++ b/src/app/formulaire/elements/fieldset.ts @@ -111,6 +111,7 @@ export class FieldSet extends FormulaireElement implements Observer { private parse_select(json: {}): SelectField { const res: SelectField = SelectFieldFactory.newSelectField(json, this); res.parseConfig(json); + res.afterParseConfig(); res.addObserver(this); return res; } diff --git a/src/app/formulaire/elements/select/select-field-factory.ts b/src/app/formulaire/elements/select/select-field-factory.ts index 38e8e7b49..c7ae60316 100644 --- a/src/app/formulaire/elements/select/select-field-factory.ts +++ b/src/app/formulaire/elements/select/select-field-factory.ts @@ -57,10 +57,10 @@ export class SelectFieldFactory { case "select_section": case "select_sppoperation": case "select_unit": - return new SelectFieldNubProperty(parent, json); + return new SelectFieldNubProperty(parent); default: throw new Error("unknown select id ${id}"); } } -} \ No newline at end of file +} diff --git a/src/app/formulaire/elements/select/select-field-nub-prop.ts b/src/app/formulaire/elements/select/select-field-nub-prop.ts index eca0463b3..df62610a8 100644 --- a/src/app/formulaire/elements/select/select-field-nub-prop.ts +++ b/src/app/formulaire/elements/select/select-field-nub-prop.ts @@ -15,8 +15,12 @@ import { SelectField } from "./select-field"; // nub property values taken from an enum // "standard" select that normally does not require customisation export class SelectFieldNubProperty extends SelectField { - constructor(parent: FormulaireNode, json: {}) { + constructor(parent: FormulaireNode) { super(parent); + } + + public parseConfig(json: {}, data?: {}) { + super.parseConfig(json, data); this._associatedProperty = json["property"]; this._configDefaultValue = json["default"]; } @@ -35,4 +39,4 @@ export class SelectFieldNubProperty extends SelectField { protected initSelectedValue() { this.findAndSetDefaultValue(); } -} \ No newline at end of file +} diff --git a/src/app/formulaire/elements/select/select-field.ts b/src/app/formulaire/elements/select/select-field.ts index e90449882..435d042f3 100644 --- a/src/app/formulaire/elements/select/select-field.ts +++ b/src/app/formulaire/elements/select/select-field.ts @@ -143,7 +143,7 @@ export abstract class SelectField extends Field { this._confId = field["id"]; this._entriesBaseId = this._confId + "_"; this._helpLink = field["help"]; - this.afterParseConfig(); + //this.afterParseConfig(); // done in FieldSet.parse_select() } /** @@ -151,7 +151,7 @@ export abstract class SelectField extends Field { * (needs config for this._entriesBaseId to be set). * Triggered at the end of parseConfig() */ - protected afterParseConfig() { + public afterParseConfig() { this.populate(); this.initSelectedValue(); } -- GitLab