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