From 006c61231ea3400fab22eb372fbd333315d2b703 Mon Sep 17 00:00:00 2001
From: "francois.grand" <francois.grand@irstea.fr>
Date: Thu, 21 Jun 2018 10:43:50 +0200
Subject: [PATCH] =?UTF-8?q?=20#48=20MAJ=20de=20tous=20les=20composants=20P?=
 =?UTF-8?q?aramLinkComponent=20d'un=20formulaire=20quand=20un=20de=20ces?=
 =?UTF-8?q?=20composants=20est=20modifi=C3=A9=20(liste=20des=20param=C3=A8?=
 =?UTF-8?q?tres=20liables)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/app/components/field-set/field-set.component.ts  |  7 +++++++
 .../fieldset-container.component.ts                  |  7 +++++++
 .../generic-calculator/calculator.component.ts       |  9 +++++++++
 .../param-field-line/param-field-line.component.ts   | 12 ++++++++++++
 .../components/param-link/param-link.component.ts    |  2 +-
 5 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/src/app/components/field-set/field-set.component.ts b/src/app/components/field-set/field-set.component.ts
index 1c14aafc4..cbf78ed49 100644
--- a/src/app/components/field-set/field-set.component.ts
+++ b/src/app/components/field-set/field-set.component.ts
@@ -261,6 +261,13 @@ export class FieldSetComponent implements DoCheck {
         this._paramComponents.forEach(fsc => fsc.updateParameterFromUI());
     }
 
+    /**
+     * met à jour les paramètres liés
+     */
+    public updateLinkedParameters() {
+        this._paramComponents.forEach(fsc => fsc.updateLinkedParameter());
+    }
+
     /**
      * clic sur le bouton ajouter
      */
diff --git a/src/app/components/fieldset-container/fieldset-container.component.ts b/src/app/components/fieldset-container/fieldset-container.component.ts
index 240f408b9..947302dee 100644
--- a/src/app/components/fieldset-container/fieldset-container.component.ts
+++ b/src/app/components/fieldset-container/fieldset-container.component.ts
@@ -161,6 +161,13 @@ export class FieldsetContainerComponent implements DoCheck, AfterViewInit {
         this._fieldsetComponents.forEach(fsc => fsc.updateParametersFromUI());
     }
 
+    /**
+     * met à jour les paramètres liés
+     */
+    public updateLinkedParameters() {
+        this._fieldsetComponents.forEach(fsc => fsc.updateLinkedParameters());
+    }
+
     /**
     * réception d'un événement de demande d'ajout d'un FieldSet
     */
diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts
index b7b8a07fc..6a293b7bf 100644
--- a/src/app/components/generic-calculator/calculator.component.ts
+++ b/src/app/components/generic-calculator/calculator.component.ts
@@ -194,6 +194,7 @@ export class GenericCalculatorComponent extends BaseComponent implements OnInit,
      */
     private onRadioClick(info: any) {
         this._formulaire.onRadioClick(info);
+        this.updateLinkedParameters();
     }
 
     private onCloseForm() {
@@ -219,6 +220,14 @@ export class GenericCalculatorComponent extends BaseComponent implements OnInit,
         this._fieldsetContainerComponents.forEach(fscc => fscc.updateParametersFromUI());
     }
 
+    /**
+     * met à jour les paramètres liés
+     */
+    private updateLinkedParameters() {
+        this._fieldsetComponents.forEach(fsc => fsc.updateLinkedParameters());
+        this._fieldsetContainerComponents.forEach(fscc => fscc.updateLinkedParameters());
+    }
+
     private doCompute() {
         this.updateParametersFromUI();
         this._formulaire.doCompute();
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 6b1883394..a741c7cb2 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
@@ -6,6 +6,7 @@ import { NgParamInputComponent } from "../ngparam-input/ngparam-input.component"
 import { ServiceFactory } from "../../services/service-factory";
 import { ParamValueMode, CalculatorType, ParallelStructure } from "jalhyd";
 import { FormulaireService } from "../../services/formulaire/formulaire.service";
+import { ParamLinkComponent } from "../param-link/param-link.component";
 
 @Component({
     selector: "param-field-line",
@@ -34,6 +35,9 @@ export class ParamFieldLineComponent implements OnChanges {
     @ViewChild(NgParamInputComponent)
     private _ngParamInputComponent: NgParamInputComponent;
 
+    @ViewChild(ParamLinkComponent)
+    private _paramLinkComponent: ParamLinkComponent;
+
     @Output()
     private onValid: EventEmitter<void>;
 
@@ -360,4 +364,12 @@ export class ParamFieldLineComponent implements OnChanges {
     public updateParameterFromUI() {
         this._ngParamInputComponent.updateModelFromUI();
     }
+
+    /**
+     * met à jour les paramètres liés
+     */
+    public updateLinkedParameter() {
+        if (this._paramLinkComponent !== undefined)
+            this._paramLinkComponent.updateParamList();
+    }
 }
diff --git a/src/app/components/param-link/param-link.component.ts b/src/app/components/param-link/param-link.component.ts
index ab78d4d85..8ad07ff0c 100644
--- a/src/app/components/param-link/param-link.component.ts
+++ b/src/app/components/param-link/param-link.component.ts
@@ -145,7 +145,7 @@ export class ParamLinkComponent implements OnChanges, Observer, OnDestroy {
         }
     }
 
-    private updateParamList() {
+    public updateParamList() {
         // liste des paramètres liables
         // this._linkableParams = this._formService.getLinkableParameters(this._param);
         this._linkableParams = this._formService.getLinkableValues(this._param);
-- 
GitLab