From ea948a5001dba12f15640e5364252f6585cd2051 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr>
Date: Fri, 17 Mar 2023 15:25:05 +0100
Subject: [PATCH] feat: MacroRugoRemous calculator: add target rock-ramp
 fishpass select

refs #609
---
 .../elements/select/select-field-factory.ts   |  4 ++
 .../select/select-field-target-pam.ts         | 39 +++++++++++++++++++
 2 files changed, 43 insertions(+)
 create mode 100644 src/app/formulaire/elements/select/select-field-target-pam.ts

diff --git a/src/app/formulaire/elements/select/select-field-factory.ts b/src/app/formulaire/elements/select/select-field-factory.ts
index afb4246e0..68a9fae0f 100644
--- a/src/app/formulaire/elements/select/select-field-factory.ts
+++ b/src/app/formulaire/elements/select/select-field-factory.ts
@@ -11,6 +11,7 @@ import { SelectFieldSearchedParam } from "./select-field-searched-param";
 import { SelectFieldSpeciesList } from "./select-field-species-list";
 import { SelectFieldTargetPass } from "./select-field-target-pass";
 import { SelectFieldNubProperty } from "./select-field-nub-prop";
+import { SelectFieldTargetPam } from "./select-field-target-pam";
 
 export class SelectFieldFactory {
     /**
@@ -57,6 +58,9 @@ export class SelectFieldFactory {
             case "select_upstream_basin":
                 return new SelectFieldUpstreamBasin(parent);
 
+            case "select_target_pam":
+                return new SelectFieldTargetPam(parent);
+
             case "select_divingjetsupported":
             case "select_gridprofile":
             case "select_gridtype":
diff --git a/src/app/formulaire/elements/select/select-field-target-pam.ts b/src/app/formulaire/elements/select/select-field-target-pam.ts
new file mode 100644
index 000000000..9970670af
--- /dev/null
+++ b/src/app/formulaire/elements/select/select-field-target-pam.ts
@@ -0,0 +1,39 @@
+import { ServiceFactory } from "app/services/service-factory";
+import { decodeHtml } from "../../../util/util";
+import { CalculatorType, MacroRugoRemous } from "jalhyd";
+import { SelectField } from "./select-field";
+import { FormulaireNode } from "../formulaire-node";
+
+// Courbe de remous dans une passe à macro-rugo.
+export class SelectFieldTargetPam extends SelectField {
+    constructor(parent: FormulaireNode) {
+        super(parent);
+        this._associatedProperty = "nubMacroRugo";
+    }
+
+    protected populate() {
+
+        const fs = ServiceFactory.formulaireService;
+
+        // find all rock-ramp fishpass forms
+        const macroForms: any[] = fs.formulaires.filter((element, index, self) =>
+            element.calculatorType === CalculatorType.MacroRugo
+        );
+        for (const cn of macroForms) {
+            const calc = cn.calculatorName;
+            this.addEntry(this.createOrGetEntry(this._entriesBaseId + cn.uid, cn.uid, decodeHtml(calc)));
+        }
+    }
+
+    protected initSelectedValue() {
+        const mrr = (this.nub as MacroRugoRemous).nubMacroRugo;
+        if (mrr !== undefined) {
+            this.setValueFromId(this._entriesBaseId + mrr.uid);
+        }
+    }
+
+    public updateLocalisation() {
+        // do not override localisation done in populate()
+        // ie. avoid what is done by SelectField.updateLocalisation()
+    }
+}
-- 
GitLab