An error occurred while loading the file. Please try again.
-
Mathias Chouet authoredb6cc92bf
import { ParamCalculability, ParamDefinition, ParamFamily} from "../param/param-definition";
import { ParamDomainValue } from "../param/param-domain";
import { CalculatorType, Session } from "../index";
import { Cloisons, CloisonsParams } from "../structure/cloisons";
import { Pab } from "./pab";
class PabCloisonsParams extends CloisonsParams {
/** Débit d'attrait d'un bassin (m3/s) */
public _QA: ParamDefinition;
/**
* Paramètres communs à toutes les équations de structure
* @param rQ Débit total (m3/s)
* @param rZ1 Cote de l'eau amont (m)
* @param rLB Longueur des bassins (m)
* @param rBB Largeur des bassins (m)
* @param rPB Profondeur moyenne (m)
* @param rDH Hauteur de chute (m)
*/
constructor(modelCloisonsParams?: CloisonsParams, rQA: number = 0) {
super(1, 1, 1, 1, 1, 1); // overwritten by init() below
this.init(modelCloisonsParams);
// On garde Pr en propre sur cet objet (Pointage impossible car en lecture seule)
this.addParamDefinition(this.Pr, true);
// Débit d'attrait
this._QA = new ParamDefinition(this, "QA", ParamDomainValue.ANY, rQA, ParamFamily.FLOWS);
this.addParamDefinition(this._QA);
}
public get QA() {
return this._QA;
}
public init(modelCloisonsParams: CloisonsParams) {
// might be undefined when created by a Session
if (modelCloisonsParams) {
this.Q = modelCloisonsParams.Q;
this.Z1 = modelCloisonsParams.Z1;
this.LB = modelCloisonsParams.LB;
this.BB = modelCloisonsParams.BB;
this.PB = modelCloisonsParams.PB;
this.DH = modelCloisonsParams.DH;
// Force la MAJ de la map avec les propriétés pointant vers celles de CloisonsParam
this.addParamDefinitions(modelCloisonsParams);
}
}
}
// tslint:disable-next-line:max-classes-per-file
export class PabCloisons extends Cloisons {
public parent: Pab;
constructor(modelCloisons: Cloisons, rQA: number = 0, dbg: boolean = false) {
super(new PabCloisonsParams(), dbg); // model is set below
this.initModelCloisons(modelCloisons);
this._calcType = CalculatorType.PabCloisons;
}
/**
* paramètres castés au bon type
*/
get prms(): PabCloisonsParams {
return this._prms as PabCloisonsParams;
}
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
/**
* Sets modelCloisons as the current model, initializing the parameters with it
*/
public initModelCloisons(modelCloisons: Cloisons) {
this.prms.init(modelCloisons ? modelCloisons.prms : undefined);
this._children = modelCloisons ? modelCloisons.structures : [];
}
/**
* Finds the Cloisons targetted by modelUid and defines it as the current model
*/
public setModel(modelUid: string) {
this.properties.setPropValue("modeleCloisons", modelUid);
const cloisons = (Session.getInstance().findNubByUid(modelUid) as Cloisons);
if (cloisons) {
this.initModelCloisons(cloisons);
} else {
console.error("PabCloisons.setModel : cannot find target Cloisons");
}
}
/**
* Returns an object representation of the Nub's current state
*/
public objectRepresentation() {
const ret: any = {
uid: this.uid,
props: this.properties.props,
parameters: []
};
// ! do not iterate over local parameters (would copy the parameters of the Cloisons used as model),
// just serialise QA
ret.parameters.push(this.prms.QA.objectRepresentation());
// ! do not iterate over children Nubs (would copy the children of the Cloisons used as model)
return ret;
}
/**
* paramétrage de la calculabilité des paramètres
*/
protected setParametersCalculability() {
super.setParametersCalculability();
this.prms._QA.calculability = ParamCalculability.FREE;
}
}