From ab5bf5628b0d163d8affc858fd652fa98f22b588 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr>
Date: Sun, 15 May 2022 11:02:17 +0200
Subject: [PATCH] feat: add ParamDefinition.allowInvalidValues flag to disable
 values validation

refs #309
---
 src/param/param-definition.ts | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/param/param-definition.ts b/src/param/param-definition.ts
index a2e3f635..10e50540 100644
--- a/src/param/param-definition.ts
+++ b/src/param/param-definition.ts
@@ -103,6 +103,9 @@ export class ParamDefinition implements INamedIterableValues, IObservable {
     /** implémentation par délégation de IObservable */
     private _observable: Observable;
 
+    /** disable value validation */
+    private _allowInvalidValues: boolean;
+
     /**
      * @param ignoreValue true if provided value must be ignored (@see nghyd/enableEmptyFieldsOnFormInit)
      */
@@ -131,6 +134,7 @@ export class ParamDefinition implements INamedIterableValues, IObservable {
         this.visible = visible;
         this.valueMode = ParamValueMode.SINGLE;
         this.extensionStrategy = ExtensionStrategy.REPEAT_LAST;
+        this._allowInvalidValues = false;
 
         this.setDomain(d);
 
@@ -578,6 +582,10 @@ export class ParamDefinition implements INamedIterableValues, IObservable {
      * an error if value is outside the domain
      */
     public checkValueAgainstDomain(v: number) {
+        if (this._allowInvalidValues) {
+            return;
+        }
+
         const sDomain = ParamDomainValue[this._domain.domain];
 
         switch (this._domain.domain) {
@@ -1208,6 +1216,18 @@ export class ParamDefinition implements INamedIterableValues, IObservable {
         return res;
     }
 
+    public get allowInvalidValues(): boolean {
+        return this._allowInvalidValues;
+    }
+
+    public set allowInvalidValues(b: boolean) {
+        const old = this._allowInvalidValues;
+        this._allowInvalidValues = b;
+        if (old && !b && !this.isValid) {
+            throw new Error("ParamDefinition : valeur non valide");
+        }
+    }
+
     /**
      * notification envoyée après la modification de la valeur du paramètre
      */
-- 
GitLab