From d77c2489eef006c178fca32127ba49b070aa72b0 Mon Sep 17 00:00:00 2001
From: "mathias.chouet" <mathias.chouet@irstea.fr>
Date: Wed, 16 Oct 2019 16:04:13 +0200
Subject: [PATCH] PABNombre: round N to integer if needed

convert "N must be integer" error to "N was rounded" warning
---
 src/pab/pab_nombre.ts | 13 ++++++++++---
 src/util/message.ts   |  7 ++++++-
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/src/pab/pab_nombre.ts b/src/pab/pab_nombre.ts
index 27b76643..c26ee742 100644
--- a/src/pab/pab_nombre.ts
+++ b/src/pab/pab_nombre.ts
@@ -22,10 +22,10 @@ export class PabNombre extends Nub {
     }
 
     public Equation(sVarCalc: string): Result {
+        let rounded = false;
         if (sVarCalc !== "N" && ! Number.isInteger(this.prms.N.v)) {
-            const m = new Message(MessageCode.ERROR_PARAMDEF_VALUE_INTEGER);
-            m.extraVar.N = this.prms.N.v;
-            return new Result(m);
+            this.prms.N.v = Math.round(this.prms.N.v);
+            rounded = true;
         }
 
         let v: number;
@@ -53,6 +53,13 @@ export class PabNombre extends Nub {
         const r = new Result(v, this);
         r.resultElement.values.DHR = DHR;
 
+        if (rounded) {
+            const m = new Message(MessageCode.WARNING_VALUE_ROUNDED_TO_INTEGER);
+            m.extraVar.symbol = "N";
+            m.extraVar.rounded = this.prms.N.v;
+            r.resultElement.log.add(m);
+        }
+
         return r;
     }
 
diff --git a/src/util/message.ts b/src/util/message.ts
index 32334e5e..3c128937 100644
--- a/src/util/message.ts
+++ b/src/util/message.ts
@@ -350,7 +350,12 @@ export enum MessageCode {
     /**
      * Des problèmes ont été rencontrés durant le calcul
      */
-    WARNING_PROBLEMS_ENCOUNTERED
+    WARNING_PROBLEMS_ENCOUNTERED,
+
+    /**
+     * La valeur du paramètre a été arrondie à l'entier
+     */
+    WARNING_VALUE_ROUNDED_TO_INTEGER
 }
 
 /**
-- 
GitLab