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