From dd6da1dffcae3c51de9923329112757b7f86cb9d Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Thu, 25 Jul 2019 17:51:19 +0200
Subject: [PATCH] Removed "option" from config, read acceptable modes from
 parameter calculability instead

---
 .../calculators/cloisons/cloisons.config.json | 14 +++------
 .../cond_distri/cond_distri.config.json       |  1 -
 src/app/calculators/dever/dever.config.json   |  8 ++---
 .../lechapt-calmon/lechapt-calmon.config.json |  2 --
 .../macrorugo/macrorugo.config.json           |  3 --
 .../pab-chute/pab-chute.config.json           |  1 -
 .../pab-dimensions/pab-dimensions.config.json |  1 -
 .../pab-nombre/pab-nombre.config.json         |  1 -
 .../pab-puissance/pab-puissance.config.json   |  1 -
 src/app/calculators/pab/pab.config.json       |  4 +--
 .../parallel-structures.config.json           |  2 --
 .../regime-uniforme.config.json               |  3 --
 src/app/calculators/remous/remous.config.json |  4 ---
 .../section-param/section-param.config.json   |  3 --
 src/app/formulaire/fieldset.ts                | 12 ++++----
 src/app/formulaire/ngparam.ts                 | 30 +++++++++----------
 16 files changed, 27 insertions(+), 63 deletions(-)

diff --git a/src/app/calculators/cloisons/cloisons.config.json b/src/app/calculators/cloisons/cloisons.config.json
index 43f69863c..fe39ea7f1 100644
--- a/src/app/calculators/cloisons/cloisons.config.json
+++ b/src/app/calculators/cloisons/cloisons.config.json
@@ -3,26 +3,21 @@
         "id": "fs_param_hydro",
         "type": "fieldset",
         "calcType": "Dever",
-        "option": "cal",
         "fields": [
             {
                 "id": "Q"
             },
             {
-                "id": "Z1",
-                "option": "var"
+                "id": "Z1"
             },
             {
-                "id": "LB",
-                "option": "var"
+                "id": "LB"
             },
             {
-                "id": "BB",
-                "option": "var"
+                "id": "BB"
             },
             {
-                "id": "PB",
-                "option": "var"
+                "id": "PB"
             },
             {
                 "id": "DH"
@@ -36,7 +31,6 @@
         "defaultNodeType": "StructureRectangle",
         "defaultStructType": "SeuilRectangulaire",
         "defaultLoiDebit": "WeirSubmergedLarinier",
-        "option": "cal",
         "fields": [
             {
                 "id": "select_ouvrage",
diff --git a/src/app/calculators/cond_distri/cond_distri.config.json b/src/app/calculators/cond_distri/cond_distri.config.json
index d4ebc675d..27563717a 100644
--- a/src/app/calculators/cond_distri/cond_distri.config.json
+++ b/src/app/calculators/cond_distri/cond_distri.config.json
@@ -2,7 +2,6 @@
     {
         "id": "fs_hydraulique",
         "type": "fieldset",
-        "option": "cal",
         "fields": [
             {
                 "id": "Q"
diff --git a/src/app/calculators/dever/dever.config.json b/src/app/calculators/dever/dever.config.json
index c49fe100c..501eb6e78 100644
--- a/src/app/calculators/dever/dever.config.json
+++ b/src/app/calculators/dever/dever.config.json
@@ -3,7 +3,6 @@
         "id": "fs_param_hydro",
         "type": "fieldset",
         "calcType": "Dever",
-        "option": "cal",
         "fields": [
             {
                 "id": "Q"
@@ -12,12 +11,10 @@
                 "id": "Z1"
             },
             {
-                "id": "BR",
-                "option": "var"
+                "id": "BR"
             },
             {
-                "id": "ZR",
-                "option": "var"
+                "id": "ZR"
             }
         ]
     },
@@ -28,7 +25,6 @@
         "defaultNodeType": "StructureRectangle",
         "defaultStructType": "SeuilRectangulaire",
         "defaultLoiDebit": "WeirFree",
-        "option": "cal",
         "fields": [
             {
                 "id": "select_ouvrage",
diff --git a/src/app/calculators/lechapt-calmon/lechapt-calmon.config.json b/src/app/calculators/lechapt-calmon/lechapt-calmon.config.json
index 3505e8fa8..dcb289eec 100644
--- a/src/app/calculators/lechapt-calmon/lechapt-calmon.config.json
+++ b/src/app/calculators/lechapt-calmon/lechapt-calmon.config.json
@@ -2,7 +2,6 @@
     {
         "id": "fs_materiau",
         "type": "fieldset",
-        "option": "fix",
         "fields": [
             {
                 "id": "select_material",
@@ -23,7 +22,6 @@
     {
         "id": "fs_hydraulique",
         "type": "fieldset",
-        "option": "cal",
         "fields": [
             {
                 "id": "Q"
diff --git a/src/app/calculators/macrorugo/macrorugo.config.json b/src/app/calculators/macrorugo/macrorugo.config.json
index 0f5f9b00a..5c7dc9968 100644
--- a/src/app/calculators/macrorugo/macrorugo.config.json
+++ b/src/app/calculators/macrorugo/macrorugo.config.json
@@ -2,7 +2,6 @@
     {
         "id": "fs_hydraulique_fix",
         "type": "fieldset",
-        "option": "var",
         "fields": [
             {
                 "id": "ZF1"
@@ -18,7 +17,6 @@
     {
         "id": "fs_hydraulique_cal",
         "type": "fieldset",
-        "option": "cal",
         "fields": [
             {
                 "id": "B"
@@ -40,7 +38,6 @@
     {
         "id": "fs_bloc",
         "type": "fieldset",
-        "option": "var",
         "fields": [
             {
                 "id": "PBD"
diff --git a/src/app/calculators/pab-chute/pab-chute.config.json b/src/app/calculators/pab-chute/pab-chute.config.json
index f45e9317b..acdd425b7 100644
--- a/src/app/calculators/pab-chute/pab-chute.config.json
+++ b/src/app/calculators/pab-chute/pab-chute.config.json
@@ -2,7 +2,6 @@
     {
         "id": "fs_chute",
         "type": "fieldset",
-        "option": "cal",
         "fields": [
             {
                 "id": "Z1"
diff --git a/src/app/calculators/pab-dimensions/pab-dimensions.config.json b/src/app/calculators/pab-dimensions/pab-dimensions.config.json
index 88837dddf..0dc5a6724 100644
--- a/src/app/calculators/pab-dimensions/pab-dimensions.config.json
+++ b/src/app/calculators/pab-dimensions/pab-dimensions.config.json
@@ -2,7 +2,6 @@
     {
         "id": "fs_dimensions",
         "type": "fieldset",
-        "option": "cal",
         "fields": [
             {
                 "id": "L"
diff --git a/src/app/calculators/pab-nombre/pab-nombre.config.json b/src/app/calculators/pab-nombre/pab-nombre.config.json
index 983a87bbf..152afc882 100644
--- a/src/app/calculators/pab-nombre/pab-nombre.config.json
+++ b/src/app/calculators/pab-nombre/pab-nombre.config.json
@@ -2,7 +2,6 @@
     {
         "id": "fs_nombre",
         "type": "fieldset",
-        "option": "cal",
         "fields": [
             {
                 "id": "DHT"
diff --git a/src/app/calculators/pab-puissance/pab-puissance.config.json b/src/app/calculators/pab-puissance/pab-puissance.config.json
index 3cf2766c7..d7e9228a5 100644
--- a/src/app/calculators/pab-puissance/pab-puissance.config.json
+++ b/src/app/calculators/pab-puissance/pab-puissance.config.json
@@ -2,7 +2,6 @@
     {
         "id": "fs_puissance",
         "type": "fieldset",
-        "option": "cal",
         "fields": [
             {
                 "id": "DH"
diff --git a/src/app/calculators/pab/pab.config.json b/src/app/calculators/pab/pab.config.json
index 1e7ae82cd..2028b9a19 100644
--- a/src/app/calculators/pab/pab.config.json
+++ b/src/app/calculators/pab/pab.config.json
@@ -3,7 +3,6 @@
         "id": "fs_param_hydro",
         "type": "fieldset",
         "calcType": "Pab",
-        "option": "cal",
         "fields": [
             {
                 "id": "Q"
@@ -12,8 +11,7 @@
                 "id": "Z1"
             },
             {
-                "id": "Z2",
-                "option": "var"
+                "id": "Z2"
             }
         ]
     },
diff --git a/src/app/calculators/parallel-structures/parallel-structures.config.json b/src/app/calculators/parallel-structures/parallel-structures.config.json
index a1ea704a2..1fb0a205e 100644
--- a/src/app/calculators/parallel-structures/parallel-structures.config.json
+++ b/src/app/calculators/parallel-structures/parallel-structures.config.json
@@ -3,7 +3,6 @@
         "id": "fs_param_hydro",
         "type": "fieldset",
         "calcType": "ParallelStructure",
-        "option": "cal",
         "fields": [
             {
                 "id": "Q"
@@ -23,7 +22,6 @@
         "defaultNodeType": "StructureRectangle",
         "defaultStructType": "VanneRectangulaire",
         "defaultLoiDebit": "GateCem88v",
-        "option": "cal",
         "fields": [
             {
                 "id": "select_ouvrage",
diff --git a/src/app/calculators/regime-uniforme/regime-uniforme.config.json b/src/app/calculators/regime-uniforme/regime-uniforme.config.json
index e976dfaf1..393a1f3a6 100644
--- a/src/app/calculators/regime-uniforme/regime-uniforme.config.json
+++ b/src/app/calculators/regime-uniforme/regime-uniforme.config.json
@@ -2,7 +2,6 @@
     {
         "id": "fs_section",
         "type": "fieldset",
-        "option": "cal",
         "fields": [
             {
                 "id": "select_section",
@@ -29,7 +28,6 @@
     {
         "id": "fs_bief",
         "type": "fieldset",
-        "option": "cal",
         "fields": [
             {
                 "id": "Ks"
@@ -45,7 +43,6 @@
     {
         "id": "fs_hydraulique",
         "type": "fieldset",
-        "option": "cal",
         "fields": [
             {
                 "id": "Q"
diff --git a/src/app/calculators/remous/remous.config.json b/src/app/calculators/remous/remous.config.json
index 99163d72f..a87ad77e0 100644
--- a/src/app/calculators/remous/remous.config.json
+++ b/src/app/calculators/remous/remous.config.json
@@ -2,7 +2,6 @@
     {
         "id": "fs_section",
         "type": "fieldset",
-        "option": "fix",
         "fields": [
             {
                 "id": "select_section",
@@ -29,7 +28,6 @@
     {
         "id": "fs_bief",
         "type": "fieldset",
-        "option": "fix",
         "fields": [
             {
                 "id": "Ks"
@@ -48,7 +46,6 @@
     {
         "id": "fs_condlim",
         "type": "fieldset",
-        "option": "fix",
         "fields": [
             {
                 "id": "Q"
@@ -64,7 +61,6 @@
     {
         "id": "fs_param_calc",
         "type": "fieldset",
-        "option": "fix",
         "fields": [
             {
                 "id": "Dx"
diff --git a/src/app/calculators/section-param/section-param.config.json b/src/app/calculators/section-param/section-param.config.json
index 41a03556a..b92c51876 100644
--- a/src/app/calculators/section-param/section-param.config.json
+++ b/src/app/calculators/section-param/section-param.config.json
@@ -2,7 +2,6 @@
     {
         "id": "fs_section",
         "type": "fieldset",
-        "option": "var",
         "fields": [
             {
                 "id": "select_section",
@@ -29,7 +28,6 @@
     {
         "id": "fs_bief",
         "type": "fieldset",
-        "option": "var",
         "fields": [
             {
                 "id": "Ks"
@@ -45,7 +43,6 @@
     {
         "id": "fs_hydraulique",
         "type": "fieldset",
-        "option": "var",
         "fields": [
             {
                 "id": "Q"
diff --git a/src/app/formulaire/fieldset.ts b/src/app/formulaire/fieldset.ts
index e888256e4..01b95f337 100644
--- a/src/app/formulaire/fieldset.ts
+++ b/src/app/formulaire/fieldset.ts
@@ -114,14 +114,14 @@ export class FieldSet extends FormulaireElement implements Observer {
      * @param node_type_filter filtre sur le type de noeud (input créé si undefined ou égal)
      * @param default_radio_config config du radio fixé/à varier/à calculer
      */
-    private parse_input(json: {}, default_radio_config: string): NgParameter {
+    private parse_input(json: {}): NgParameter {
         const input_id: string = json["id"];
         let res: NgParameter;
         let nubParam: ParamDefinition;
         try {
             nubParam = this.getNubParamFromSymbol(input_id);
             res = new NgParameter(nubParam, this);
-            res.parseConfig(json, { "radioConfig": default_radio_config });
+            res.parseConfig(json);
         } catch (e) {
             // parameter does not exist in Nub, it's normal, simply do not show it (silent fail)
             // console.error(`FieldSet::parse_input : cannot find param from symbol ${input_id}`);
@@ -138,10 +138,10 @@ export class FieldSet extends FormulaireElement implements Observer {
 
             switch (type) {
                 case "input":
-                    const default_radio_config = this._jsonConfig["option"];
-                    param = this.parse_input(field, default_radio_config);
-                    // tslint:disable-next-line:max-line-length
-                    if (param) { // potentiellement undefined car certaines définitions de FieldSet comportent des paramètres qui ne sont pas tous affichés en même temps (cf. ouvrages //)
+                    param = this.parse_input(field);
+                    // potentiellement undefined car certaines définitions de FieldSet comportent des paramètres
+                    // qui ne sont pas tous affichés en même temps (cf. ouvrages //)
+                    if (param) {
                         this.addField(param);
                     }
                     break;
diff --git a/src/app/formulaire/ngparam.ts b/src/app/formulaire/ngparam.ts
index 46d010e42..c10a48d45 100644
--- a/src/app/formulaire/ngparam.ts
+++ b/src/app/formulaire/ngparam.ts
@@ -261,20 +261,19 @@ export class NgParameter extends InputField implements Observer {
         return this._paramDef.valuesIterator;
     }
 
-    private static getRadioConfig(s: string) {
-        if (s === "fix") {
-            return ParamRadioConfig.FIX;
-        }
-
-        if (s === "var") {
-            return ParamRadioConfig.VAR;
-        }
-
-        if (s === "cal") {
-            return ParamRadioConfig.CAL;
+    /**
+     * Reads radio config from parameter calculability
+     */
+    private getRadioConfig() {
+        switch (this.paramDefinition.calculability) {
+            case ParamCalculability.FIXED:
+                return ParamRadioConfig.FIX;
+            case ParamCalculability.FREE:
+                return ParamRadioConfig.VAR;
+            case ParamCalculability.DICHO:
+            case ParamCalculability.EQUATION:
+                return ParamRadioConfig.CAL;
         }
-
-        throw new Error("invalid parameter radio configuration " + s);
     }
 
     /**
@@ -438,11 +437,10 @@ export class NgParameter extends InputField implements Observer {
         return this._paramDef.checkStep(step);
     }
 
-    public parseConfig(json: {}, data?: {}) {
-        const radioConfig: string = json["option"] || data["radioConfig"];
+    public parseConfig(json: {}) {
         this._confId = json["id"];
         this.unit = this.paramDefinition.unit;
-        this.radioConfig = NgParameter.getRadioConfig(radioConfig);
+        this.radioConfig = this.getRadioConfig();
     }
 
     // interface Observer
-- 
GitLab