From 7ab85f2ab04d1bff15b10cd2aecf28dc74e6303c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr>
Date: Thu, 27 Oct 2022 16:45:26 +0200
Subject: [PATCH] fix: standard select defaut value from calculator
 configuration not honored

refs #483
---
 src/app/formulaire/elements/fieldset.ts            | 10 ++--------
 src/app/formulaire/elements/select/select-field.ts | 12 +++++++++---
 2 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/app/formulaire/elements/fieldset.ts b/src/app/formulaire/elements/fieldset.ts
index e5fbca7d7..d0229afe7 100644
--- a/src/app/formulaire/elements/fieldset.ts
+++ b/src/app/formulaire/elements/fieldset.ts
@@ -4,7 +4,7 @@ import {
     Props,
     Observer,
     Nub,
-    Session,
+    enumValueFromString
 } from "jalhyd";
 
 import { FormulaireElement } from "./formulaire-element";
@@ -295,13 +295,7 @@ export class FieldSet extends FormulaireElement implements Observer {
                     // Sets Nub default property, unless this property is already set
                     const currentValue = this.properties.getPropValue(prop);
                     if (defaultValue !== undefined && currentValue === undefined) {
-                        let formalValue = defaultValue;
-                        // !! property names must be unique throughout JaLHyd !!
-                        const enumClass = Session.enumFromProperty[prop];
-                        if (enumClass) {
-                            formalValue = enumClass[defaultValue];
-                        }
-                        this.setNubPropValue(prop, formalValue);
+                        this.setNubPropValue(prop, enumValueFromString(prop, defaultValue));
                     }
                 }
             }
diff --git a/src/app/formulaire/elements/select/select-field.ts b/src/app/formulaire/elements/select/select-field.ts
index f67c07404..5a174b636 100644
--- a/src/app/formulaire/elements/select/select-field.ts
+++ b/src/app/formulaire/elements/select/select-field.ts
@@ -4,7 +4,7 @@ import { arraysAreEqual } from "../../../util";
 import { FormulaireNode } from "../formulaire-node";
 import { ServiceFactory } from "app/services/service-factory";
 import { FormulaireDefinition } from "../../definition/form-definition";
-import { Nub } from "jalhyd";
+import { enumValueFromString, Nub } from "jalhyd";
 
 export abstract class SelectField extends Field {
 
@@ -128,10 +128,16 @@ export abstract class SelectField extends Field {
     protected findAndSetDefaultValue() {
         // default to first available entry if any
         if (this._entries.length > 0) {
+            let val;
+            if (this._configDefaultValue === undefined) {
+                val = this._entries[0];
+            } else {
+                val = this.getEntryFromValue(enumValueFromString(this._associatedProperty, this._configDefaultValue));
+            }
             if (this._multiple) {
-                this.setValue([this._entries[0]]);
+                this.setValue([val]);
             } else {
-                this.setValue(this._entries[0]);
+                this.setValue(val);
             }
         } else {
             // notify observers that no value is selected anymore
-- 
GitLab