Skip to content
Snippets Groups Projects
var-results.ts 3.01 KiB
Newer Older
import { CalculatorResults } from "./calculator-results";
import { CalculatedParamResults } from "./param-calc-results";
import { NgParameter } from "../formulaire/ngparam";
import { ResultElement } from "jalhyd";

/**
 * type de graphe
 */
export enum GraphType {
    /**
     * histogramme
     */
    Histogram,

    /**
     * points indépendants reliés par une courbe
     */
    HistoLine,

    /**
     * graphe XY classique
     */
    Scatter,
}


export class VarResults extends CalculatedParamResults {
    /**
     * paramètre varié
     */
    private _variatedParam: NgParameter;

    /**
     * titre de la 1ère colonne des résultats variés
     */
    private _variableParamHeader: string;

    /**
     * titre de la 2ème colonne des résultats variés
     */
    private _variableResultHeader: string;

    /**
     * entête des colonnes des résultats supplémentaires
     */
    private _extraResultHeaders: string[];

    /**
     * titre du graphe des résultats variés
     */
    private _graphTitle: string;

    /**
     * type de graphe
     */
    public graphType: GraphType = GraphType.Scatter;

    /**
     * tableau des ordonnées du graphe des résultats variés
     */
    private _yValues: number[] = [];

    constructor() {
        super();
        this.reset();
    }

    public reset() {
        super.reset();
        this._variableParamHeader = undefined;
        this._variableResultHeader = undefined;
        this._extraResultHeaders = [];
        this._yValues = [];
        this._graphTitle = undefined;
    }

    public get variatedParameter(): NgParameter {
        return this._variatedParam;
    }

    public set variatedParameter(p: NgParameter) {
        this._variatedParam = p;
    }

    private get variableParamHeader() {
        return this._variableParamHeader;
    }

    private get variableResultHeader() {
        return this._variableResultHeader;
    }

    public get yValues() {
        return this._yValues;
    }

    public get resultElements(): ResultElement[] {
        return this._result.resultElements;
    }

    public get graphTitle() {
        return this._graphTitle;
    }

    public set graphTitle(t: string) {
        this._graphTitle = t;
    }

    public get extraResultHeaders() {
        return this._extraResultHeaders;
    }

    public update(displaySymbol: boolean) {
        // this.reset();

        this._variableParamHeader = CalculatorResults.paramLabel(this.variatedParameter, displaySymbol);
        if (this._calculatedParam)
            this._variableResultHeader = CalculatorResults.paramLabel(this._calculatedParam, true);

        // valeurs du paramètre à calculer
        for (const r of this._result.resultElements)
            this._yValues.push(r.vCalc);

        // entêtes des résultats supplémentaires
        for (const re of this._result.resultElements) // re:ResultElement
            for (const erk in re.extraResults)
                if (!this._extraResultHeaders.includes(erk))
                    this._extraResultHeaders.push(erk);
    }
}