form-compute-fixedvar.ts 2.40 KiB
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);