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