-
Mathias Chouet authored0102dfa2
import { Nub, Result, ComputeNode, ParamValueMode } from "jalhyd";
import { FormCompute } from "./form-compute";
import { NgParameter, ParamRadioConfig } from "../ngparam";
import { FormResultFixedVar } from "./form-result-fixedvar";
import { FormulaireDefinition } from "./form-definition";
export class FormComputeFixedVar extends FormCompute {
constructor(formBase: FormulaireDefinition, formResult: FormResultFixedVar) {
super(formBase, formResult);
}
protected get formResult(): FormResultFixedVar {
return this._formResult as FormResultFixedVar;
}
private getVariatedParameter(): NgParameter {
const res = this._formBase.getDisplayedParamFromState(ParamRadioConfig.VAR);
if (res !== undefined) {
return res;
}
const pms = this._formBase.getDisplayedParamListFromState(ParamRadioConfig.LINK);
for (const p of pms) {
if (p.paramDefinition.hasMultipleValues) {
return p;
}
}
}
private getComputedParameter(): NgParameter {
return this._formBase.getDisplayedParamFromState(ParamRadioConfig.CAL);
}
/**
* fixe la valeur d'un paramètre de ComputeNode
* @param node ComputeNode contenant le paramètre
* @param p paramètre dont on fixe la valeur
* @param val valeur à fixer
*/
protected setParameterValue(node: ComputeNode, p: NgParameter, val: number) {
node.getParameter(p.symbol).v = val;
}
protected compute() {
const nub: Nub = this._formBase.currentNub;
const computedParam: NgParameter = this.getComputedParameter();
this.formResult.addFixedParameters();
const varParam: NgParameter = this.getVariatedParameter();
if (varParam === undefined) {
// pas de paramètre à varier
const res: Result = this.runNubCalc(nub, computedParam);
this.formResult.fixedResults.result = res;
this.formResult.fixedResults.calculatedParameter = computedParam;
} else {
// il y a un paramètre à varier
const res: Result = this.runNubCalc(nub, computedParam);
this.formResult.varResults.variatedParameter = varParam;
this.formResult.varResults.calculatedParameter = computedParam;
this.formResult.varResults.result = res;
this.formResult.varResults.update(false);
}
}
}