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