From aa6c3b69e031aa6f7fdc34e4531b251ff0214b53 Mon Sep 17 00:00:00 2001
From: Jean-Pascal <jean-pascal.aubry@inrae.fr>
Date: Wed, 29 Nov 2023 12:02:55 +0100
Subject: [PATCH] feat: add message if no species is selected and trigger it
 when species select field is empty Refs #637

---
 .../elements/select/select-field-species-list.ts           | 1 +
 src/app/formulaire/elements/select/select-field.ts         | 7 ++++++-
 src/locale/messages.en.json                                | 1 +
 src/locale/messages.fr.json                                | 1 +
 4 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/app/formulaire/elements/select/select-field-species-list.ts b/src/app/formulaire/elements/select/select-field-species-list.ts
index 7b94345aa..7b0246758 100644
--- a/src/app/formulaire/elements/select/select-field-species-list.ts
+++ b/src/app/formulaire/elements/select/select-field-species-list.ts
@@ -16,6 +16,7 @@ import { SelectField } from "./select-field";
 export class SelectFieldSpeciesList extends SelectField {
     constructor(parent: FormulaireNode) {
         super(parent);
+        this._messageWhenEmpty = "INFO_VERIF_SELECT_SPECIES_FIRST";
         this._multiple = true;
     }
 
diff --git a/src/app/formulaire/elements/select/select-field.ts b/src/app/formulaire/elements/select/select-field.ts
index b45f59c42..59e0c8d21 100644
--- a/src/app/formulaire/elements/select/select-field.ts
+++ b/src/app/formulaire/elements/select/select-field.ts
@@ -292,9 +292,14 @@ export abstract class SelectField extends Field {
         return this._entriesBaseId;
     }
 
+    public isEmptySelectField() {
+        return this._selectedEntry !== undefined && Object.keys(this._selectedEntry).length === 0;
+    }
+    
+
     public get messageWhenEmpty(): string {
         let msg: string;
-        if (this._selectedEntry === undefined && this._messageWhenEmpty) {
+        if ((this._selectedEntry === undefined && this._messageWhenEmpty) || this.isEmptySelectField()) {
             msg = ServiceFactory.i18nService.localizeText(this._messageWhenEmpty);
         }
         return msg;
diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json
index 49d04bcaa..46a339559 100755
--- a/src/locale/messages.en.json
+++ b/src/locale/messages.en.json
@@ -664,6 +664,7 @@
     "INFO_TRIGO_DESCRIPTION": "cosinus sinus tangent arc maths mathematics",
     "INFO_TRIGO_TITRE_COURT": "Trigo. f.",
     "INFO_VERIF_CREATE_PASS_FRIST": "Create first a fish ladder, a baffle fishway or a rock-ramp fishpass",
+    "INFO_VERIF_SELECT_SPECIES_FIRST": "Select first one or several fish species",
     "INFO_VERIF_OK": "Crossing criteria are met for all species",
     "INFO_VERIF_VARYING_OK": "Crossing criteria are met for all species and all pass modalities",
     "WARNING_VERIF_OK_BUT": "Crossing criteria are met for all species, but there are warnings",
diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json
index 764dfbbbf..d305b2ecc 100755
--- a/src/locale/messages.fr.json
+++ b/src/locale/messages.fr.json
@@ -665,6 +665,7 @@
     "INFO_TRIGO_DESCRIPTION": "cosinus sinus tangente arc maths mathématiques",
     "INFO_TRIGO_TITRE_COURT": "F. trigo.",
     "INFO_VERIF_CREATE_PASS_FRIST": "Créer d'abord une passe à bassins, à ralentisseurs, ou à macrorugosités",
+    "INFO_VERIF_SELECT_SPECIES_FIRST": "Selectionner d'abord une ou plusieurs espèces",
     "INFO_VERIF_OK": "Les critères de franchissement sont remplis pour toutes les espèces",
     "INFO_VERIF_VARYING_OK": "Les critères de franchissement sont remplis pour toutes les espèces et toutes les modalités de la passe",
     "WARNING_VERIF_OK_BUT": "Les critères de franchissement sont remplis pour toutes les espèces, mais il y a des avertissements",
-- 
GitLab