From bc35330bcba61f315f7f2e46ddc92b2ff33b230b Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Mon, 18 Mar 2019 17:09:38 +0100
Subject: [PATCH] Fix #166

---
 .../dialog-confirm-close-calc.component.html  | 13 ++++++++++-
 .../dialog-confirm-close-calc.component.scss  |  3 +++
 .../dialog-confirm-close-calc.component.ts    | 22 ++++++++++++++++++-
 .../calculator.component.ts                   |  7 +++++-
 src/locale/messages.en.json                   |  1 +
 src/locale/messages.fr.json                   |  1 +
 6 files changed, 44 insertions(+), 3 deletions(-)
 create mode 100644 src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.scss

diff --git a/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.html b/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.html
index 8018436a7..f1abc0500 100644
--- a/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.html
+++ b/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.html
@@ -1,7 +1,18 @@
 <h1 mat-dialog-title [innerHTML]="uitextCloseCalcTitle"></h1>
 <div mat-dialog-content>
-  <p [innerHTML]="uitextCloseCalcBody"></p>
+
+  <div *ngIf="dependingNubs.length">
+    {{ uitextDependingModules }}
+    <mat-list role="list">
+      <mat-list-item role="listitem" *ngFor="let dn of dependingNubs">
+        {{ dn }}
+      </mat-list-item>
+    </mat-list>
+  </div>
 </div>
+
+<p [innerHTML]="uitextCloseCalcBody"></p>
+
 <div mat-dialog-actions>
   <button mat-raised-button color="primary" [mat-dialog-close]="false" cdkFocusInitial>
     {{ uitextNo }}
diff --git a/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.scss b/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.scss
new file mode 100644
index 000000000..268f18ad8
--- /dev/null
+++ b/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.scss
@@ -0,0 +1,3 @@
+.mat-list-base .mat-list-item {
+    height: 24px;
+}
diff --git a/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.ts b/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.ts
index e8a1f44ca..63cdc8fa4 100644
--- a/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.ts
+++ b/src/app/components/dialog-confirm-close-calc/dialog-confirm-close-calc.component.ts
@@ -1,18 +1,30 @@
 import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material";
 import { Inject, Component } from "@angular/core";
+import { FormulaireService } from "../../services/formulaire/formulaire.service";
 import { I18nService } from "../../services/internationalisation/internationalisation.service";
+import { Session } from "jalhyd";
 
 @Component({
     selector: "dialog-confirm-close-calc",
     templateUrl: "dialog-confirm-close-calc.component.html",
+    styleUrls: [
+      "dialog-confirm-close-calc.component.scss"
+    ]
 })
 export class DialogConfirmCloseCalcComponent {
 
+    private _dependingNubs: any[] = [];
+
     constructor(
         public dialogRef: MatDialogRef<DialogConfirmCloseCalcComponent>,
         private intlService: I18nService,
+        private formService: FormulaireService,
         @Inject(MAT_DIALOG_DATA) public data: any
-    ) { }
+    ) {
+        this._dependingNubs = Session.getInstance().getDependingNubs(data.uid).map((n) => {
+            return this.formService.getFormulaireFromNubId(n.uid).calculatorName;
+        });
+    }
 
     public get uitextYes() {
       return this.intlService.localizeText("INFO_OPTION_YES");
@@ -30,4 +42,12 @@ export class DialogConfirmCloseCalcComponent {
       return this.intlService.localizeText("INFO_CLOSE_DIALOGUE_TEXT");
     }
 
+    public get uitextDependingModules() {
+      return this.intlService.localizeText("INFO_CLOSE_DIALOGUE_DEPENDING_MODULES");
+    }
+
+    public get dependingNubs() {
+      return this._dependingNubs;
+    }
+
 }
diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts
index af807c109..a0cc4b468 100644
--- a/src/app/components/generic-calculator/calculator.component.ts
+++ b/src/app/components/generic-calculator/calculator.component.ts
@@ -386,7 +386,12 @@ export class GenericCalculatorComponent extends BaseComponent implements OnInit,
     public closeCalculator() {
         const dialogRef = this.confirmCloseCalcDialog.open(
             DialogConfirmCloseCalcComponent,
-            { disableClose: true }
+            {
+                data: {
+                  uid: this._formulaire.currentNub.uid
+                },
+                disableClose: true
+            }
         );
         dialogRef.afterClosed().subscribe(result => {
             if (result) {
diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json
index 0c952da55..506bda9e7 100644
--- a/src/locale/messages.en.json
+++ b/src/locale/messages.en.json
@@ -44,6 +44,7 @@
     "INFO_CLOISONS_TITRE_COURT": "Cross walls",
     "INFO_CLOSE_DIALOGUE_TEXT": "Warning ! Parameters and results will be lost. Really close?",
     "INFO_CLOSE_DIALOGUE_TITRE": "Please confirm",
+    "INFO_CLOSE_DIALOGUE_DEPENDING_MODULES": "The following modules depend on the one you are closing:",
     "INFO_CONDUITEDISTRIBUTRICE_TITRE": "Distributor pipe",
     "INFO_CONDUITEDISTRIBUTRICE_TITRE_COURT": "D. pipe",
     "INFO_COURBEREMOUS_TITRE": "Backwater curves",
diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json
index e48c43e99..90b8466f0 100644
--- a/src/locale/messages.fr.json
+++ b/src/locale/messages.fr.json
@@ -44,6 +44,7 @@
     "INFO_CLOISONS_TITRE_COURT": "Cloisons",
     "INFO_CLOSE_DIALOGUE_TEXT": "Attention&nbsp;! Les paramètres et résultats du module de calcul seront perdus. Vraiment fermer&nbsp;?",
     "INFO_CLOSE_DIALOGUE_TITRE": "Confirmer la fermeture",
+    "INFO_CLOSE_DIALOGUE_DEPENDING_MODULES": "Les modules suivants dépendent de celui que vous êtes en train de fermer :",
     "INFO_CONDUITEDISTRIBUTRICE_TITRE": "Conduite distributrice",
     "INFO_CONDUITEDISTRIBUTRICE_TITRE_COURT": "Conduite distri.",
     "INFO_COURBEREMOUS_TITRE": "Courbes de remous",
-- 
GitLab