From 9fe807190647a27db956244e88c8ce521597b634 Mon Sep 17 00:00:00 2001
From: "francois.grand" <francois.grand@irstea.fr>
Date: Wed, 27 Jun 2018 11:55:29 +0200
Subject: [PATCH] =?UTF-8?q?=20#45=20IterableValues=20:=20ajout=20de=20la?=
 =?UTF-8?q?=20propri=C3=A9t=C3=A9=20hasMultipleValues?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/param/param-base.ts           |  4 ++++
 src/param/param-value-iterator.ts |  8 ++++++++
 src/param/param-values.ts         | 25 +++++++++++--------------
 src/util/result.ts                | 10 +++++++++-
 4 files changed, 32 insertions(+), 15 deletions(-)

diff --git a/src/param/param-base.ts b/src/param/param-base.ts
index b9919ce4..d44e0aeb 100644
--- a/src/param/param-base.ts
+++ b/src/param/param-base.ts
@@ -354,6 +354,10 @@ export class BaseParam extends JalhydObject implements INubReference, NamedItera
         return this._paramValues.valuesIterator;
     }
 
+    public get hasMultipleValues(): boolean {
+        return this._paramValues.hasMultipleValues;
+    }
+
     public get name(): string {
         return this._symbol;
     }
diff --git a/src/param/param-value-iterator.ts b/src/param/param-value-iterator.ts
index 9bc23b86..b94e3095 100644
--- a/src/param/param-value-iterator.ts
+++ b/src/param/param-value-iterator.ts
@@ -6,7 +6,15 @@ import { INamedObject } from "../jalhyd_object";
  * interface implémentée par les objets pouvant renvoyer un itérateur sur une série de valeurs numériques
  */
 export interface IterableValues {
+    /**
+     * itérateur sur les valeurs
+     */
     readonly valuesIterator: IterableIterator<number>;
+
+    /**
+     * true si la série de valeurs a plus d'une valeur
+     */
+    readonly hasMultipleValues: boolean;
 }
 
 /**
diff --git a/src/param/param-values.ts b/src/param/param-values.ts
index f8e46ff9..903e1b74 100644
--- a/src/param/param-values.ts
+++ b/src/param/param-values.ts
@@ -278,20 +278,6 @@ export class ParamValues implements INubReference, IterableValues {
         return this._currentValue.value;
     }
 
-    /**
-     * @return true si la config actuelle génère plusieurs valeurs
-     */
-    public get hasMultipleValues(): boolean {
-        const it = this.getValuesIterator();
-        let n = 0;
-        for (const v of it) {
-            n++;
-            if (n > 1)
-                break;
-        }
-        return n > 1;
-    }
-
     // interface INubReference
 
     public defineReference(target: IReferencedNub, desc: string) {
@@ -342,4 +328,15 @@ export class ParamValues implements INubReference, IterableValues {
     public get valuesIterator(): IterableIterator<number> {
         return this.getValuesIterator();
     }
+
+    public get hasMultipleValues(): boolean {
+        const it = this.getValuesIterator();
+        let n = 0;
+        for (const v of it) {
+            n++;
+            if (n > 1)
+                break;
+        }
+        return n > 1;
+    }
 }
diff --git a/src/util/result.ts b/src/util/result.ts
index 7b1530b4..5fce9449 100644
--- a/src/util/result.ts
+++ b/src/util/result.ts
@@ -268,11 +268,15 @@ export class Result extends JalhydObject implements NamedIterableValues {
 
     public get valuesIterator(): IterableIterator<number> {
         const tmp: number[] = [];
-        for (const re of this.resultElements)
+        for (const re of this._resultElements)
             tmp.push(re.vCalc);
         return tmp[Symbol.iterator]();
     }
 
+    public get hasMultipleValues(): boolean {
+        return this._resultElements.length > 1;
+    }
+
     //  interface NamedIterableValues pour les résultats complémentaires
 
     public getIterableExtraResults(name: string): NamedIterableValues {
@@ -318,6 +322,10 @@ export class ExtraResults extends JalhydObject implements NamedIterableValues {
         return this._values[Symbol.iterator]();
     }
 
+    public get hasMultipleValues(): boolean {
+        return this._values.length > 1;
+    }
+
     public get name(): string {
         return this._name;
     }
-- 
GitLab