From 8a097804466e72bb6515fbceb42175f908ee881d Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Wed, 16 Sep 2020 14:53:08 +0200
Subject: [PATCH] Simplify calculator template data injection

---
 .../calculator-results.component.ts           |  4 ++--
 .../generic-calculator/calc-name.component.ts |  7 ++++++-
 .../calculator.component.html                 |  4 ++--
 .../calculator.component.ts                   | 21 ++++---------------
 4 files changed, 14 insertions(+), 22 deletions(-)

diff --git a/src/app/components/calculator-results/calculator-results.component.ts b/src/app/components/calculator-results/calculator-results.component.ts
index e26bc762f..796d0e481 100644
--- a/src/app/components/calculator-results/calculator-results.component.ts
+++ b/src/app/components/calculator-results/calculator-results.component.ts
@@ -1,4 +1,4 @@
-import { Component, Output, EventEmitter, AfterViewChecked, Inject, forwardRef } from "@angular/core";
+import { Component, Output, EventEmitter, AfterViewChecked, Inject, forwardRef, Input } from "@angular/core";
 
 import { FormulaireDefinition } from "../../formulaire/definition/form-definition";
 import { CalculatorResults } from "../../results/calculator-results";
@@ -20,7 +20,7 @@ export class CalculatorResultsComponent implements AfterViewChecked {
         @Inject(forwardRef(() => GenericCalculatorComponent)) private calculatorComponent: GenericCalculatorComponent
     ) { }
 
-    // @TODO @Input() ?
+    @Input()
     public set formulaire(f: FormulaireDefinition) {
         this._formulaire = f;
     }
diff --git a/src/app/components/generic-calculator/calc-name.component.ts b/src/app/components/generic-calculator/calc-name.component.ts
index a07f51b0c..c1cc4bb7e 100644
--- a/src/app/components/generic-calculator/calc-name.component.ts
+++ b/src/app/components/generic-calculator/calc-name.component.ts
@@ -1,4 +1,4 @@
-import { Component } from "@angular/core";
+import { Component, Input } from "@angular/core";
 import { GenericInputComponentDirective } from "../generic-input/generic-input.component";
 import { FormulaireDefinition } from "../../formulaire/definition/form-definition";
 import { I18nService } from "../../services/internationalisation.service";
@@ -20,6 +20,11 @@ export class CalculatorNameComponent extends GenericInputComponentDirective {
         super(null, intlService, appSetupService);
     }
 
+    @Input()
+    public set model(v: any) {
+        super.model = v;
+    }
+
     /**
      * formulaire géré
      */
diff --git a/src/app/components/generic-calculator/calculator.component.html b/src/app/components/generic-calculator/calculator.component.html
index 906fc6a98..7b085815a 100644
--- a/src/app/components/generic-calculator/calculator.component.html
+++ b/src/app/components/generic-calculator/calculator.component.html
@@ -57,7 +57,7 @@
         <mat-card-content>
 
             <!-- nom du module de calcul -->
-            <calc-name id="calculator-name" [title]="uitextCalculatorName"></calc-name>
+            <calc-name id="calculator-name" [model]="formulaire" [title]="uitextCalculatorName"></calc-name>
 
             <button mat-raised-button type="button" color="accent" id="load-predefined-espece" *ngIf="isEspece"
                 (click)="loadPredefinedEspece()" [title]="uitextLoadPredefinedEspece">
@@ -192,7 +192,7 @@
                     </button>
 
                     <mat-card-content>
-                        <calc-results id="resultsComp" (afterViewChecked)="onCalcResultsViewChecked()"></calc-results>
+                        <calc-results id="resultsComp" [formulaire]="formulaire" (afterViewChecked)="onCalcResultsViewChecked()"></calc-results>
                     </mat-card-content>
                 </mat-card>
 
diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts
index 2cd8d2d6f..33efee506 100644
--- a/src/app/components/generic-calculator/calculator.component.ts
+++ b/src/app/components/generic-calculator/calculator.component.ts
@@ -31,10 +31,8 @@ import { ApplicationSetupService } from "../../services/app-setup.service";
 import { I18nService } from "../../services/internationalisation.service";
 import { FieldSet } from "../../formulaire/elements/fieldset";
 import { FormulaireDefinition } from "../../formulaire/definition/form-definition";
-import { CalculatorResultsComponent } from "../../components/calculator-results/calculator-results.component";
 import { Subscription } from "rxjs";
 import { FieldSetComponent } from "../field-set/field-set.component";
-import { CalculatorNameComponent } from "./calc-name.component";
 import { FormulaireElement } from "../../formulaire/elements/formulaire-element";
 import { FieldsetContainer } from "../../formulaire/elements/fieldset-container";
 import { FieldsetContainerComponent } from "../fieldset-container/fieldset-container.component";
@@ -46,7 +44,6 @@ import { DialogGeneratePARSimulationComponent } from "../dialog-generate-par-sim
 import { DialogLoadPredefinedEspeceComponent } from "../dialog-load-predefined-espece/dialog-load-predefined-espece.component";
 import { PabTable } from "../../formulaire/elements/pab-table";
 import { MultiDimensionResults } from "../../results/multidimension-results";
-import { NgParameter } from "../../formulaire/elements/ngparam";
 import { FormulaireFixedVar } from "../../formulaire/definition/form-fixedvar";
 import { PbSchema } from "../../formulaire/elements/pb-schema";
 import { PbSchemaComponent } from "../pb-schema/pb-schema.component";
@@ -86,18 +83,6 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe
     @ViewChild(PbSchemaComponent)
     private _pbSchemaComponent: PbSchemaComponent;
 
-    /**
-     * composant d'affichage des résultats
-     */
-    @ViewChild(CalculatorResultsComponent, { static: true })
-    private resultsComponent: CalculatorResultsComponent;
-
-    /**
-     * composant "nom du module de calcul"
-     */
-    @ViewChild(CalculatorNameComponent, { static: true })
-    private _calculatorNameComponent: CalculatorNameComponent;
-
     /**
      * formulaire affiché
      */
@@ -179,6 +164,10 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe
         }, this)));
     }
 
+    public get formulaire(): FormulaireDefinition {
+        return this._formulaire;
+    }
+
     public get formElements(): FormulaireElement[] {
         if (this._formulaire === undefined) {
             return [];
@@ -447,8 +436,6 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe
                 case "currentFormChanged":
                     const uid: string = data["formId"];
                     this._formulaire = (this.formulaireService.getFormulaireFromId(uid));
-                    this.resultsComponent.formulaire = this._formulaire;
-                    this._calculatorNameComponent.model = this._formulaire;
                     // reload localisation in all cases (it does not eat bread)
                     this.formulaireService.updateFormulaireLocalisation(this._formulaire);
                     break;
-- 
GitLab