From ce7ed5b796c87a6cd8ee8272281fab9154145649 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Thu, 12 Sep 2019 16:51:06 +0200
Subject: [PATCH] [WIP] #287 jet type results

---
 src/app/app.module.ts                         |  2 ++
 .../calculator-results.component.html         |  1 +
 .../calculator-results.component.ts           | 30 +++++++++++++++++--
 .../calculator.component.ts                   |  9 ++++++
 .../jet-results/jet-results.component.html    | 18 +++++++++++
 .../jet-results/jet-results.component.scss    |  4 +++
 .../jet-results/jet-results.component.ts      | 14 +++++++++
 .../form-iterator/deep-node-iterator.ts       | 10 -------
 src/app/results/multidimension-results.ts     |  2 +-
 9 files changed, 76 insertions(+), 14 deletions(-)
 create mode 100644 src/app/components/jet-results/jet-results.component.html
 create mode 100644 src/app/components/jet-results/jet-results.component.scss
 create mode 100644 src/app/components/jet-results/jet-results.component.ts
 delete mode 100644 src/app/formulaire/form-iterator/deep-node-iterator.ts

diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 88491f109..794becbda 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -90,6 +90,7 @@ import { QuicknavComponent } from "./components/quicknav/quicknav.component";
 import { ModulesDiagramComponent } from "./components/modules-diagram/modules-diagram.component";
 import { MacrorugoCompoundResultsTableComponent } from "./components/macrorugo-compound-results/macrorugo-compound-results-table.component";
 import { MacrorugoCompoundResultsComponent } from "./components/macrorugo-compound-results/macrorugo-compound-results.component";
+import { JetResultsComponent } from "./components/jet-results/jet-results.component";
 
 import { DialogConfirmEmptySessionComponent } from "./components/dialog-confirm-empty-session/dialog-confirm-empty-session.component";
 import { DialogConfirmCloseCalcComponent } from "./components/dialog-confirm-close-calc/dialog-confirm-close-calc.component";
@@ -193,6 +194,7 @@ const appRoutes: Routes = [
     JalhydModelValidationMinDirective,
     JalhydModelValidationMaxDirective,
     JalhydModelValidationStepDirective,
+    JetResultsComponent,
     LogComponent,
     LogEntryComponent,
     ModulesDiagramComponent,
diff --git a/src/app/components/calculator-results/calculator-results.component.html b/src/app/components/calculator-results/calculator-results.component.html
index 93748fe04..e15f90423 100644
--- a/src/app/components/calculator-results/calculator-results.component.html
+++ b/src/app/components/calculator-results/calculator-results.component.html
@@ -3,5 +3,6 @@
     <remous-results></remous-results>
     <pab-results></pab-results>
     <macrorugo-compound-results></macrorugo-compound-results>
+    <jet-results></jet-results>
     <fixedvar-results></fixedvar-results>
 </div>
diff --git a/src/app/components/calculator-results/calculator-results.component.ts b/src/app/components/calculator-results/calculator-results.component.ts
index 9dd4576c5..dcc7e97fb 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, ViewChild, Output, EventEmitter, AfterViewChecked } from "@angular/core";
+import { Component, ViewChild, Output, EventEmitter, AfterViewChecked, Inject, forwardRef } from "@angular/core";
 
 import { FixedVarResultsComponent } from "../../components/fixedvar-results/fixedvar-results.component";
 import { SectionResultsComponent } from "../../components/section-results/section-results.component";
@@ -6,12 +6,15 @@ import { RemousResultsComponent } from "../../components/remous-results/remous-r
 import { PabResultsComponent } from "../../components/pab-results/pab-results.component";
 import { MacrorugoCompoundResultsComponent } from "../macrorugo-compound-results/macrorugo-compound-results.component";
 import { FormulaireDefinition } from "../../formulaire/definition/form-definition";
+import { JetResultsComponent } from "../jet-results/jet-results.component";
+import { GenericCalculatorComponent } from "../generic-calculator/calculator.component";
 
 @Component({
     selector: "calc-results",
     templateUrl: "./calculator-results.component.html",
 })
 export class CalculatorResultsComponent implements AfterViewChecked {
+
     private _formulaire: FormulaireDefinition;
 
     /**
@@ -42,7 +45,13 @@ export class CalculatorResultsComponent implements AfterViewChecked {
      * composant d'affichage des résultats des passes à macrorugosités complexes
      */
     @ViewChild(MacrorugoCompoundResultsComponent, { static: true })
-    private mrcResultsComponent: PabResultsComponent;
+    private mrcResultsComponent: MacrorugoCompoundResultsComponent;
+
+    /**
+     * composant d'affichage des résultats des impacts de jet
+     */
+    @ViewChild(JetResultsComponent, { static: true })
+    private jetResultsComponent: JetResultsComponent;
 
     /**
      * événement émis à la fin du dessin de la vue
@@ -50,6 +59,10 @@ export class CalculatorResultsComponent implements AfterViewChecked {
     @Output()
     private afterViewChecked = new EventEmitter();
 
+    public constructor(
+        @Inject(forwardRef(() => GenericCalculatorComponent)) private calculatorComponent: GenericCalculatorComponent
+    ) { }
+
     public set formulaire(f: FormulaireDefinition) {
         this._formulaire = f;
         if (this._formulaire === undefined) {
@@ -58,12 +71,18 @@ export class CalculatorResultsComponent implements AfterViewChecked {
             this.remousResultsComponent.results = undefined;
             this.pabResultsComponent.results = undefined;
             this.mrcResultsComponent.results = undefined;
+            this.jetResultsComponent.results = undefined;
         } else {
-            this.fixedVarResultsComponent.results = f.results;
             this.sectionResultsComponent.results = f.results;
             this.remousResultsComponent.results = f.results;
             this.pabResultsComponent.results = f.results;
             this.mrcResultsComponent.results = f.results;
+            // FixedVar and Jet are mutually incompatible (the 2nd extend the 1st)
+            if (this.isJet) {
+                this.jetResultsComponent.results = f.results;
+            } else {
+                this.fixedVarResultsComponent.results = f.results;
+            }
         }
     }
 
@@ -73,9 +92,14 @@ export class CalculatorResultsComponent implements AfterViewChecked {
         this.remousResultsComponent.updateView();
         this.pabResultsComponent.updateView();
         this.mrcResultsComponent.updateView();
+        this.jetResultsComponent.updateView();
     }
 
     public ngAfterViewChecked() {
         this.afterViewChecked.emit();
     }
+
+    public get isJet() {
+        return this.calculatorComponent.isJet;
+    }
 }
diff --git a/src/app/components/generic-calculator/calculator.component.ts b/src/app/components/generic-calculator/calculator.component.ts
index c68de58db..8ad2d4194 100644
--- a/src/app/components/generic-calculator/calculator.component.ts
+++ b/src/app/components/generic-calculator/calculator.component.ts
@@ -500,6 +500,15 @@ export class GenericCalculatorComponent implements OnInit, DoCheck, AfterViewChe
         );
     }
 
+    // true if current Nub is Jet
+    public get isJet() {
+        return (
+            this._formulaire
+            && this._formulaire.currentNub
+            && this._formulaire.currentNub.calcType === CalculatorType.Jet
+        );
+    }
+
     // for "generate PAB" button
     public get isPABCloisons() {
         return (
diff --git a/src/app/components/jet-results/jet-results.component.html b/src/app/components/jet-results/jet-results.component.html
new file mode 100644
index 000000000..ca214f920
--- /dev/null
+++ b/src/app/components/jet-results/jet-results.component.html
@@ -0,0 +1,18 @@
+<div class="container">
+    <!-- journal -->
+    <log></log>
+
+    <results-graph *ngIf="showVarResults"></results-graph>
+
+    <trajectory-graph></trajectory-graph>
+
+    <div>
+        <!-- table des résultats fixés -->
+        <fixed-results [results]=fixedResults></fixed-results>
+
+        <!-- table des résultats variés -->
+        <div *ngIf="showVarResults">
+            <var-results [results]=varResults></var-results>
+        </div>
+    </div>
+</div>
diff --git a/src/app/components/jet-results/jet-results.component.scss b/src/app/components/jet-results/jet-results.component.scss
new file mode 100644
index 000000000..6f5eb10d5
--- /dev/null
+++ b/src/app/components/jet-results/jet-results.component.scss
@@ -0,0 +1,4 @@
+results-graph {
+    margin-left: 1em;
+    margin-right: 1em;
+}
diff --git a/src/app/components/jet-results/jet-results.component.ts b/src/app/components/jet-results/jet-results.component.ts
new file mode 100644
index 000000000..4bbf4a2d0
--- /dev/null
+++ b/src/app/components/jet-results/jet-results.component.ts
@@ -0,0 +1,14 @@
+import { Component } from "@angular/core";
+
+import { FixedVarResultsComponent } from "../fixedvar-results/fixedvar-results.component";
+
+@Component({
+    selector: "jet-results",
+    templateUrl: "./jet-results.component.html",
+    styleUrls: [
+        "./jet-results.component.scss"
+    ]
+})
+export class JetResultsComponent extends FixedVarResultsComponent {
+
+}
diff --git a/src/app/formulaire/form-iterator/deep-node-iterator.ts b/src/app/formulaire/form-iterator/deep-node-iterator.ts
deleted file mode 100644
index cca6046a1..000000000
--- a/src/app/formulaire/form-iterator/deep-node-iterator.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { AbstractFormulaireNodeIterator } from "./abstract-node-iterator";
-import { FormulaireNode } from "../formulaire-node";
-
-export class DeepFormulaireNodeIterator extends AbstractFormulaireNodeIterator<FormulaireNode> implements IterableIterator<FormulaireNode> {
-    // interface IterableIterator
-
-    [Symbol.iterator](): IterableIterator<FormulaireNode> {
-        return this;
-    }
-}
diff --git a/src/app/results/multidimension-results.ts b/src/app/results/multidimension-results.ts
index 5475c6c60..b0ecbca0e 100644
--- a/src/app/results/multidimension-results.ts
+++ b/src/app/results/multidimension-results.ts
@@ -2,7 +2,7 @@ import { CalculatedParamResults } from "./param-calc-results";
 import { NgParameter } from "../formulaire/ngparam";
 
 
-export class MultiDimensionResults extends CalculatedParamResults/*  implements PlottableData */ {
+export class MultiDimensionResults extends CalculatedParamResults {
 
     /** paramètres variés */
     public variatedParameters: NgParameter[];
-- 
GitLab