diff --git a/spec/session/serialisation.spec.ts b/spec/session/serialisation.spec.ts index 075ac8f7843704bfc556eb7ee10a78c443e241de..3c541b545c40c500cec676933fd6e2e72eaed6f8 100644 --- a/spec/session/serialisation.spec.ts +++ b/spec/session/serialisation.spec.ts @@ -246,6 +246,14 @@ describe("serialising / deserialising session - ", () => { }); + it ("nghyd#263 - errors without consequences should not appear", () => { + Session.getInstance().clear(); + // tslint:disable-next-line:max-line-length + const json = `{"header":{"source":"jalhyd","format_version":"1.1","created":"2019-07-31T12:08:20.284Z"},"session":[{"uid":"NjdmM3","props":{"calcType":"PabChute","nodeType":"None"},"meta":{"title":"PAB : chute"},"children":[],"parameters":[{"symbol":"Z1","mode":"SINGLE","value":29.99},{"symbol":"Z2","mode":"SINGLE","value":26.81},{"symbol":"DH","mode":"CALCUL"}]},{"uid":"eWNjdG","props":{"calcType":"PabNombre","nodeType":"None"},"meta":{"title":"PAB : nombre"},"children":[],"parameters":[{"symbol":"DHT","mode":"LINK","targetNub":"NjdmM3","targetParam":"DH"},{"symbol":"N","mode":"SINGLE","value":14},{"symbol":"DH","mode":"CALCUL"}]},{"uid":"dXM4em","props":{"calcType":"PabPuissance","nodeType":"None"},"meta":{"title":"PAB : puissance"},"children":[],"parameters":[{"symbol":"DH","mode":"LINK","targetNub":"eWNjdG","targetParam":"DH"},{"symbol":"Q","mode":"SINGLE","value":1.8},{"symbol":"V","mode":"CALCUL"},{"symbol":"PV","mode":"SINGLE","value":140}]},{"uid":"bzNlaX","props":{"calcType":"PabDimensions","nodeType":"None"},"meta":{"title":"PAB : dimensions"},"children":[],"parameters":[{"symbol":"L","mode":"SINGLE","value":5},{"symbol":"W","mode":"SINGLE","value":3.6},{"symbol":"Y","mode":"CALCUL"},{"symbol":"V","mode":"LINK","targetNub":"dXM4em","targetParam":"V"}]},{"uid":"cGI5d3","props":{"calcType":"Cloisons","nodeType":"None"},"meta":{"title":"Cloisons"},"children":[{"uid":"ZzZzbD","props":{"calcType":"Structure","structureType":"SeuilRectangulaire","loiDebit":"WeirSubmergedLarinier"},"children":[],"parameters":[{"symbol":"h1","mode":"CALCUL"},{"symbol":"L","mode":"SINGLE","value":0.5},{"symbol":"CdWSL","mode":"SINGLE","value":0.83}]}],"parameters":[{"symbol":"Q","mode":"LINK","targetNub":"dXM4em","targetParam":"Q"},{"symbol":"Z1","mode":"SINGLE","value":30.14},{"symbol":"LB","mode":"SINGLE","value":4.5},{"symbol":"BB","mode":"LINK","targetNub":"bzNlaX","targetParam":"W"},{"symbol":"PB","mode":"SINGLE","value":2.5},{"symbol":"DH","mode":"LINK","targetNub":"eWNjdG","targetParam":"DH"}]}]}`; + const res = Session.getInstance().unserialise(json); + expect(res.hasErrors).toBe(false); + }); + }); describe("nodeType property - ", () => { diff --git a/src/param/param-definition.ts b/src/param/param-definition.ts index 53ca53572379548517c645b980e6498af6c64b0a..c5adb6fb9b49823b6a6c630681317650255d1c1d 100644 --- a/src/param/param-definition.ts +++ b/src/param/param-definition.ts @@ -102,7 +102,7 @@ export class ParamDefinition implements INamedIterableValues, IObservable { private _observable: Observable; constructor(parent: ParamsEquation, symb: string, d: ParamDomain | ParamDomainValue, unit?: string, - val?: number, family?: ParamFamily, visible: boolean = true + val?: number, family?: ParamFamily, visible: boolean = true ) { this._parent = parent; this._symbol = symb; @@ -826,9 +826,12 @@ export class ParamDefinition implements INamedIterableValues, IObservable { try { this.valueMode = mode; } catch (err) { - ret.hasErrors = true; - // tslint:disable-next-line:no-console - console.error("loadObjectRepresentation: set valueMode error"); + // silent fail : impossible to determine if this is an error, because + // at this time, it is possible that no candidate for calculatedParam can + // be found, since Nub children are not loaded yet (see nghyd#263) + + /* ret.hasErrors = true; + console.error("loadObjectRepresentation: set valueMode error"); */ } } @@ -867,10 +870,12 @@ export class ParamDefinition implements INamedIterableValues, IObservable { try { this.defineReference(destNub, obj.targetParam); } catch (err) { - ret.hasErrors = true; - // tslint:disable-next-line:no-console + // silent fail : impossible to determine if this is an error, because + // fixLinks() might solve it later + + /* ret.hasErrors = true; console.error("loadObjectRepresentation: defineReference error" - + ` (${this.symbol} => ${destNub.uid}.${obj.targetParam})`); + + ` (${this.symbol} => ${destNub.uid}.${obj.targetParam})`); */ } } // si la cible du lien n'existe pas, Session.fixLinks() est censé s'en occuper break;