Commit eaa314b8 authored by Grand Francois's avatar Grand Francois
Browse files

#45 Nub : méthode getLinkableParameters remplacée par getLinkableValues qui...

 #45 Nub : méthode getLinkableParameters remplacée par getLinkableValues qui retourne également les résultats et résultats complémentaires
Showing with 101 additions and 10 deletions
+101 -10
...@@ -116,6 +116,16 @@ class Expect { ...@@ -116,6 +116,16 @@ class Expect {
} }
} }
public toBeDefined(message?: string) {
if (this.actual === undefined) {
if (message !== undefined) {
console.error(message);
} else {
console.error(`${this.actual} should be defined`);
}
}
}
public toBeUndefined(message?: string) { public toBeUndefined(message?: string) {
if (this.actual !== undefined) { if (this.actual !== undefined) {
if (message !== undefined) { if (message !== undefined) {
......
...@@ -46,8 +46,16 @@ describe("référence d'un paramètre à un résultat complémentaire multivalu ...@@ -46,8 +46,16 @@ describe("référence d'un paramètre à un résultat complémentaire multivalu
0.9962500000000004, 0.9970000000000003, 0.9977500000000002, 0.9962500000000004, 0.9970000000000003, 0.9977500000000002,
0.9985000000000002, 0.9992500000000001, 1]; 0.9985000000000002, 0.9992500000000001, 1];
const vs = rem.getLinkableValues("flu");
expect(Object.keys(vs).length).toEqual(1);
const vs2 = vs[0]["value"];
expect(vs2.name).toEqual("flu");
let i = 0; let i = 0;
for (const v of res.getExtraResultValuesIterator("flu")) for (const v of vs2.valuesIterator) {
expect(f[i]).toBeDefined();
expect(Math.abs(v - f[i++]) < 0.01).toBeTruthy(); expect(Math.abs(v - f[i++]) < 0.01).toBeTruthy();
}
}); });
}); });
...@@ -229,27 +229,77 @@ export abstract class Nub extends ComputeNode implements IReferencedNub { ...@@ -229,27 +229,77 @@ export abstract class Nub extends ComputeNode implements IReferencedNub {
* @returns liste des paramètres liables à un paramètre * @returns liste des paramètres liables à un paramètre
* @param p paramètre qui sert de clé de recherche des paramètres liables * @param p paramètre qui sert de clé de recherche des paramètres liables
*/ */
public getLinkableParameters(param: ParamDefinition): any[] { // public getLinkableParameters(param: ParamDefinition): any[] {
// const res: any[] = [];
// for (const p of this._prms)
// if (p.uid !== param.uid)
// switch (p.valueMode) {
// case ParamValueMode.SINGLE:
// case ParamValueMode.MINMAX:
// case ParamValueMode.LISTE:
// switch (param.symbol) {
// case "Z1":
// case "Z2":
// if (p.symbol === "Z1" || p.symbol === "Z2")
// res.push({ "param": p, "nub": this });
// break;
// default:
// if (p.symbol === param.symbol)
// res.push({ "param": p, "nub": this });
// }
// }
// return res;
// }
/**
* liste des valeurs (paramètre, résultat, résultat complémentaire) liables à un paramètre
* @param src objet qui sert de clé de recherche des paramètres liables, de type INamedObject | string
* @returns tableau d'objets de la forme { "name":string, "value":NamedIterableValues, "nub":Nub}, nub=Nub d'origine de la "value"
*/
public getLinkableValues(src: any): any[] {
const res: any[] = []; const res: any[] = [];
for (const p of this._prms) const isStr = typeof (src) === "string";
if (p.uid !== param.uid) const name = isStr ? src : src.name;
const hasUid = isStr ? false : "uid" in src;
// paramètres
for (const p of this._prms) {
const cond = hasUid ? p.uid !== src.uid : true; // pour éviter d'ajouter le paramètre d'entrée dans le tableau résultat
if (cond)
switch (p.valueMode) { switch (p.valueMode) {
case ParamValueMode.SINGLE: case ParamValueMode.SINGLE:
case ParamValueMode.MINMAX: case ParamValueMode.MINMAX:
case ParamValueMode.LISTE: case ParamValueMode.LISTE:
switch (param.symbol) { switch (name) {
case "Z1": case "Z1":
case "Z2": case "Z2":
if (p.symbol === "Z1" || p.symbol === "Z2") if (p.symbol === "Z1" || p.symbol === "Z2")
res.push({ "param": p, "nub": this }); res.push({ "name": p.symbol, "value": p, "nub": this });
break; break;
default: default:
if (p.symbol === param.symbol) if (p.symbol === name)
res.push({ "param": p, "nub": this }); res.push({ "name": name, "value": p, "nub": this });
} }
} }
}
// résultat
if (this._result !== undefined) {
if (this._result.name === name)
res.push({ "name": `${name}.`, "value": this._result, "nub": this });
// résultats complémentaires
const erIter = this._result.getIterableExtraResults(name)
if (erIter !== undefined)
res.push({ "name": `${this._result.name}.${name}`, "value": erIter, "nub": this });
}
return res; return res;
} }
......
...@@ -473,6 +473,8 @@ export class CourbeRemous extends Nub { ...@@ -473,6 +473,8 @@ export class CourbeRemous extends Nub {
} }
} }
this._result = res;
return res; return res;
} }
......
...@@ -193,7 +193,16 @@ export class SessionNub { ...@@ -193,7 +193,16 @@ export class SessionNub {
* @returns liste des paramètres liables à un paramètre * @returns liste des paramètres liables à un paramètre
* @param p paramètre qui sert de clé de recherche des paramètres liables * @param p paramètre qui sert de clé de recherche des paramètres liables
*/ */
public getLinkableParameters(p: ParamDefinition): any[] { // public getLinkableParameters(p: ParamDefinition): any[] {
return this._nub.getLinkableParameters(p); // return this._nub.getLinkableParameters(p);
// }
/**
* liste des valeurs(paramètre, résultat, résultat complémentaire) liables à un paramètre
* @param src objet qui sert de clé de recherche des paramètres liables, de type INamedObject | string
* @returns tableau d'objets de la forme { "value":NamedIterableValues, "nub":Nub}, nub=Nub d'origine de la "value"
*/
public getLinkableValues(src: any): any[] {
return this._nub.getLinkableValues(src);
} }
} }
...@@ -293,4 +293,16 @@ export class ParallelStructure extends Nub { ...@@ -293,4 +293,16 @@ export class ParallelStructure extends Nub {
public getReferencedExtraResult(desc: string): any { public getReferencedExtraResult(desc: string): any {
return this._result.getExtraResult(desc); return this._result.getExtraResult(desc);
} }
/**
* liste des valeurs (paramètre, résultat, résultat complémentaire) liables à un paramètre
* @param src objet qui sert de clé de recherche des paramètres liables, de type INamedObject | string
* @returns tableau d'objets de la forme { "name":string, "value":NamedIterableValues, "nub":Nub}, nub=Nub d'origine de la "value"
*/
public getLinkableValues(src: any): any[] {
let res = super.getLinkableValues(src);
for (const s of this.structures)
res = res.concat(s.getLinkableValues(src));
return res;
}
} }
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment