From c9008f3b151d54a7ad17b6465fcade932b453460 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr>
Date: Wed, 4 May 2022 07:44:48 +0200
Subject: [PATCH] fix: adapt to useDefaultParamValue flag removal in jalhyd

refs #516
---
 src/app/components/pb-schema/pb-schema.component.ts       | 3 ++-
 src/app/formulaire/definition/form-definition.ts          | 4 +++-
 src/app/formulaire/definition/form-parallel-structures.ts | 4 +++-
 src/app/services/app-setup.service.ts                     | 5 +++--
 4 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/app/components/pb-schema/pb-schema.component.ts b/src/app/components/pb-schema/pb-schema.component.ts
index 1862a8dcf..7ea4ba81d 100644
--- a/src/app/components/pb-schema/pb-schema.component.ts
+++ b/src/app/components/pb-schema/pb-schema.component.ts
@@ -21,6 +21,7 @@ import { AppComponent } from "../../app.component";
 
 import { fv } from "app/util";
 import { FormulaireNode } from "app/formulaire/elements/formulaire-node";
+import { ServiceFactory } from "app/services/service-factory";
 
 /**
  * The interactive schema for calculator type "PreBarrage" (component)
@@ -494,7 +495,7 @@ export class PbSchemaComponent implements AfterViewInit, AfterContentInit, OnIni
 
     /** Adds a new lone basin */
     public onAddBasinClick() {
-        const newBasin = new PbBassin(new PbBassinParams(20, 99));
+        const newBasin = new PbBassin(new PbBassinParams(20, 99, ServiceFactory.applicationSetupService.enableEmptyFieldsOnFormInit));
         this.model.addChild(newBasin);
         this.clearResults();
         this.refreshWithSelection(newBasin.uid);
diff --git a/src/app/formulaire/definition/form-definition.ts b/src/app/formulaire/definition/form-definition.ts
index 442a96ef6..3fd3ee3a2 100644
--- a/src/app/formulaire/definition/form-definition.ts
+++ b/src/app/formulaire/definition/form-definition.ts
@@ -9,7 +9,8 @@ import {
     acSection,
     ParamDefinition,
     Result,
-    VariatedDetails
+    VariatedDetails,
+    Prop_NullParameters
 } from "jalhyd";
 
 import { FormulaireElement } from "../elements/formulaire-element";
@@ -110,6 +111,7 @@ export abstract class FormulaireDefinition extends FormulaireNode implements Obs
      */
     public initNub(props?: Props) {
         const p = props ? props : new Props(this.defaultProperties);
+        p.setPropValue(Prop_NullParameters, ServiceFactory.applicationSetupService.enableEmptyFieldsOnFormInit); // transmit "empty fields" flag
         this.currentNub = Session.getInstance().createSessionNub(p);
 
         if (this.currentNub instanceof SectionNub) {
diff --git a/src/app/formulaire/definition/form-parallel-structures.ts b/src/app/formulaire/definition/form-parallel-structures.ts
index 5e35710f9..9e4dd86d6 100644
--- a/src/app/formulaire/definition/form-parallel-structures.ts
+++ b/src/app/formulaire/definition/form-parallel-structures.ts
@@ -1,4 +1,4 @@
-import { Structure, Nub, ParallelStructure, StructureProperties, Props, Session, ParamDefinition } from "jalhyd";
+import { Structure, Nub, ParallelStructure, StructureProperties, Props, Session, ParamDefinition, Prop_NullParameters } from "jalhyd";
 
 import { FieldsetContainer } from "../elements/fieldset-container";
 import { FieldSet } from "../elements/fieldset";
@@ -7,6 +7,7 @@ import { NgParameter } from "../elements/ngparam";
 import { FieldsetTemplate } from "../elements/fieldset-template";
 import { FormulaireNode } from "../elements/formulaire-node";
 import { FormulaireRepeatableFieldset } from "./form-repeatable-fieldset";
+import { ServiceFactory } from "app/services/service-factory";
 
 export class FormulaireParallelStructure extends FormulaireRepeatableFieldset {
 
@@ -66,6 +67,7 @@ export class FormulaireParallelStructure extends FormulaireRepeatableFieldset {
         params["nodeType"] = templ.defaultNodeTypeFromConfig;
         params["structureType"] = templ.defaultStructTypeFromConfig;
         params["loiDebit"] = templ.defaultLoiDebitFromConfig;
+        params[Prop_NullParameters] = ServiceFactory.applicationSetupService.enableEmptyFieldsOnFormInit;
 
         return this.createStructure(new Props(params));
     }
diff --git a/src/app/services/app-setup.service.ts b/src/app/services/app-setup.service.ts
index 193b32aaf..32b9f517d 100644
--- a/src/app/services/app-setup.service.ts
+++ b/src/app/services/app-setup.service.ts
@@ -24,6 +24,7 @@ export class ApplicationSetupService extends Observable {
     private _maxIterations = 100; // tied to model
     public enableNotifications = true;
     public enableHotkeys = false;
+    private _enableEmptyFieldsOnFormInit = true;
 
     public set computePrecision(p: number) {
         this._computePrecision = p;
@@ -46,11 +47,11 @@ export class ApplicationSetupService extends Observable {
     }
 
     public get enableEmptyFieldsOnFormInit() {
-        return !SessionSettings.useDefaultParamValue;
+        return this._enableEmptyFieldsOnFormInit;
     }
 
     public set enableEmptyFieldsOnFormInit(b: boolean) {
-        SessionSettings.useDefaultParamValue = !b;
+        this._enableEmptyFieldsOnFormInit = b;
     }
 
     /**
-- 
GitLab