From 6cfd1047a2b9895c268097bf9bce29d535b1041c Mon Sep 17 00:00:00 2001
From: "francois.grand" <francois.grand@irstea.fr>
Date: Fri, 30 Mar 2018 10:21:33 +0200
Subject: [PATCH] =?UTF-8?q?=20#77=20effacement=20des=20r=C3=A9sultats=20qu?=
 =?UTF-8?q?and=20on=20modifie=20un=20input?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../field-set/field-set.component.html           |  2 +-
 .../components/field-set/field-set.component.ts  | 13 +++++++++++++
 .../fieldset-container.component.html            |  2 +-
 .../fieldset-container.component.ts              | 13 +++++++++++++
 .../generic-calculator/calculator.component.html |  2 +-
 .../generic-calculator/calculator.component.ts   |  7 +++++++
 .../param-field-line.component.ts                | 16 +++++++++++++---
 7 files changed, 49 insertions(+), 6 deletions(-)

diff --git a/src/app/components/field-set/field-set.component.html b/src/app/components/field-set/field-set.component.html
index cd33a4983..50c2405b0 100644
--- a/src/app/components/field-set/field-set.component.html
+++ b/src/app/components/field-set/field-set.component.html
@@ -15,7 +15,7 @@
 -->
 
 <ng-template ngFor let-p [ngForOf]="fields">
-    <param-field-line *ngIf="isInputField(p)" [param]=p (onRadio)=onRadioClick($event) (onValid)=onParamLineValid()>
+    <param-field-line *ngIf="isInputField(p)" [param]=p (onRadio)=onRadioClick($event) (onValid)=onParamLineValid() (inputChange)=onInputChange()>
     </param-field-line>
 
     <select-field-line *ngIf="isSelectField(p)" [param]=p>
diff --git a/src/app/components/field-set/field-set.component.ts b/src/app/components/field-set/field-set.component.ts
index 462644627..a192bd1d7 100644
--- a/src/app/components/field-set/field-set.component.ts
+++ b/src/app/components/field-set/field-set.component.ts
@@ -45,6 +45,12 @@ export class FieldSetComponent implements DoCheck {
     @Output()
     private validChange = new EventEmitter();
 
+    /**
+     * événément de changement de valeur d'un input
+     */
+    @Output()
+    private inputChange = new EventEmitter();
+
     /**
      * flag de validité de la saisie
      */
@@ -177,4 +183,11 @@ export class FieldSetComponent implements DoCheck {
     private onParamLineValid(event: boolean) {
         this.updateValidity();
     }
+
+    /**
+    * réception d'un événement de changement de valeur d'un input
+    */
+    private onInputChange(event: boolean) {
+        this.inputChange.emit();
+    }
 }
diff --git a/src/app/components/fieldset-container/fieldset-container.component.html b/src/app/components/fieldset-container/fieldset-container.component.html
index 154696041..9ba68f234 100644
--- a/src/app/components/fieldset-container/fieldset-container.component.html
+++ b/src/app/components/fieldset-container/fieldset-container.component.html
@@ -6,6 +6,6 @@
         <!-- bouton d'ajout d'un ouvrage -->
         <button type="button" class="btn btn-grey waves-light" mdbRippleRadius (click)="addStructure()">Ajouter un ouvrage</button>
     </div>
-    <field-set *ngFor="let fs of fieldsets" [fieldSet]=fs (onRadio)=onRadioClick($event) (onValid)=onFieldsetValid()>
+    <field-set *ngFor="let fs of fieldsets" [fieldSet]=fs (onRadio)=onRadioClick($event) (onValid)=onFieldsetValid() (inputChange)=onInputChange()>
     </field-set>
 </div>
\ No newline at end of file
diff --git a/src/app/components/fieldset-container/fieldset-container.component.ts b/src/app/components/fieldset-container/fieldset-container.component.ts
index 26ac2f5f1..e091ef408 100644
--- a/src/app/components/fieldset-container/fieldset-container.component.ts
+++ b/src/app/components/fieldset-container/fieldset-container.component.ts
@@ -101,4 +101,17 @@ export class FieldsetContainerComponent implements DoCheck {
     private onFieldsetValid() {
         this.updateValidity();
     }
+
+    /**
+     * événément de changement de valeur d'un input
+     */
+    @Output()
+    private inputChange = new EventEmitter();
+
+    /**
+    * réception d'un événement de changement de valeur d'un input
+    */
+    private onInputChange(event: boolean) {
+        this.inputChange.emit();
+    }
 }
\ No newline at end of file
diff --git a/src/app/components/generic-calculator/calculator.component.html b/src/app/components/generic-calculator/calculator.component.html
index 47e2a2e53..058792c2a 100644
--- a/src/app/components/generic-calculator/calculator.component.html
+++ b/src/app/components/generic-calculator/calculator.component.html
@@ -24,7 +24,7 @@
             <!-- chapitres -->
             <ng-template ngFor let-fe [ngForOf]="formElements">
                 <field-set *ngIf="isFieldset(fe)" [style.display]="getFieldsetStyleDisplay(fe.id)" [fieldSet]=fe (onRadio)=onRadioClick($event)
-                    (validChange)=OnFieldsetValid()></field-set>
+                    (validChange)=OnFieldsetValid() (inputChange)=onInputChange()></field-set>
 
                 <fieldset-container *ngIf="isFieldsetContainer(fe)" [container]=fe (onRadio)=onRadioClick($event) (validChange)=onFieldsetContainerValid()></fieldset-container>
             </ng-template>
diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts
index 3e0d05322..2ed9990ca 100644
--- a/src/app/components/generic-calculator/calculator.component.ts
+++ b/src/app/components/generic-calculator/calculator.component.ts
@@ -332,4 +332,11 @@ export class GenericCalculatorComponent extends BaseComponent implements OnInit,
     private onFieldsetContainerValid() {
         this.updateUIValidity();
     }
+
+    /**
+     * réception d'un événement de changement de valeur d'un input
+     */
+    private onInputChange() {
+        this._formulaire.reset();
+    }
 }
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 5ec1d3de0..ebee96d49 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
@@ -36,6 +36,9 @@ export class ParamFieldLineComponent implements OnChanges {
     @Output()
     private onValid: EventEmitter<void>;
 
+    @Output()
+    private inputChange: EventEmitter<void>;
+
     /**
      * true si la valeur saisie est valide
      */
@@ -50,6 +53,7 @@ export class ParamFieldLineComponent implements OnChanges {
         private formulaireService: FormulaireService
     ) {
         this.onValid = new EventEmitter();
+        this.inputChange = new EventEmitter();
     }
 
     private get title(): string {
@@ -261,9 +265,15 @@ export class ParamFieldLineComponent implements OnChanges {
      * réception d'un événement de NgParamInputComponent
      */
     private onInputChange(event: any) {
-        if (event.action == "valid") {
-            this._isInputValid = event.value;
-            this.emitValidity();
+        switch (event.action) {
+            case "valid":
+                this._isInputValid = event.value;
+                this.emitValidity();
+                break;
+
+            case "model":
+                this.inputChange.emit();
+                break;
         }
     }
 
-- 
GitLab