From e37dbbcbbc78cec40932d5f5ce60bc38e737fd0b Mon Sep 17 00:00:00 2001
From: "francois.grand" <francois.grand@irstea.fr>
Date: Thu, 17 May 2018 11:26:36 +0200
Subject: [PATCH]  #45 classe FieldSet : remplacement du membre _parentForm par
 un getter

---
 .../formulaire/definition/form-definition.ts  |  2 +-
 src/app/formulaire/fieldset-template.ts       |  2 +-
 src/app/formulaire/fieldset.ts                | 20 +++++++++++--------
 3 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/src/app/formulaire/definition/form-definition.ts b/src/app/formulaire/definition/form-definition.ts
index 37fbddfd4..dbe234bae 100644
--- a/src/app/formulaire/definition/form-definition.ts
+++ b/src/app/formulaire/definition/form-definition.ts
@@ -160,7 +160,7 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs
 
     private parse_fieldset(json: {}) {
         const fs = this.createFieldset(this, json);
-        fs.parseConfig(json, { "parentForm": this });
+        fs.parseConfig(json);
         this.afterParseFieldset(fs);
     }
 
diff --git a/src/app/formulaire/fieldset-template.ts b/src/app/formulaire/fieldset-template.ts
index a5d618349..ce3fcf353 100644
--- a/src/app/formulaire/fieldset-template.ts
+++ b/src/app/formulaire/fieldset-template.ts
@@ -46,7 +46,7 @@ export class FieldsetTemplate {
     public instantiateTemplate(cont: FieldsetContainer, after: number): FieldSet {
         const parentForm = cont.parent as FormulaireDefinition;
         const res = parentForm.createFieldset(cont, this._jsonConfig, { "template": this, "after": after });
-        res.parseConfig(this._jsonConfig, { "parentForm": parentForm });
+        res.parseConfig(this._jsonConfig);
         parentForm.afterParseFieldset(res);
         return res;
     }
diff --git a/src/app/formulaire/fieldset.ts b/src/app/formulaire/fieldset.ts
index 434cf1115..c562852e7 100644
--- a/src/app/formulaire/fieldset.ts
+++ b/src/app/formulaire/fieldset.ts
@@ -15,11 +15,6 @@ import { FieldsetContainer } from "./fieldset-container";
 import { FormulaireNode } from "./formulaire-node";
 
 export class FieldSet extends FormulaireElement implements Observer {
-    /**
-     * formulaire parent
-     */
-    private _parentForm: FormulaireDefinition;
-
     /**
      * SessionNub associé
      */
@@ -45,6 +40,16 @@ export class FieldSet extends FormulaireElement implements Observer {
         this._props = new Props();
     }
 
+    /**
+     * formulaire parent
+     */
+    private get parentForm(): FormulaireDefinition {
+        let res = this.parent;
+        while (!(res instanceof FormulaireDefinition))
+            res = res.parent;
+        return res as FormulaireDefinition;
+
+    }
     public get sessionNub(): SessionNub {
         return this._sessionNub;
     }
@@ -279,17 +284,16 @@ export class FieldSet extends FormulaireElement implements Observer {
 
         // fin MAJ selects
 
-        this.applyDependencies(this._parentForm);
+        this.applyDependencies(this.parentForm);
     }
 
     public parseConfig(json: {}, data?: {}) {
         this._jsonConfig = json;
-        this._parentForm = data["parentForm"];
 
         this._confId = json["id"];
 
         const ct: string = json["calcType"];
-        const calc_type: CalculatorType = ct == undefined ? this._parentForm.calculatorType : CalculatorType[ct];
+        const calc_type: CalculatorType = ct == undefined ? this.parentForm.calculatorType : CalculatorType[ct];
         this.setPropValue("calcType", calc_type);
 
         const nt: string = json["nodeType"];
-- 
GitLab