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

/**
 * 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;

    /**
     * clés des résultats complémentaires
    private _extraResultKeys: 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._extraResultHeaders = [];
        this._yValues = [];
        this._graphTitle = undefined;
    }

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

    public set variatedParameter(p: NgParameter) {
        this._variatedParam = p;
        this._variableParamHeader = CalculatorResults.paramLabel(this._variatedParam, true);
    public get variableParamHeader() {
        return this._variableParamHeader;
    }

    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 get extraResultKeys() {
        return this._extraResultKeys;
    }
    public set extraResultKeys(k: string[]) {
        this._extraResultKeys = k;
    }

    public update(displaySymbol: boolean) {
        if (this._variableParamHeader === undefined)
            this._variableParamHeader = CalculatorResults.paramLabel(this.variatedParameter, displaySymbol);

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

        // clés des résultats supplémentaires

        if (this._extraResultKeys.length === 0)
            for (const re of this._result.resultElements) // re:ResultElement
                for (const erk in re.extraResults)
                    if (!this._extraResultKeys.includes(erk))
                        this._extraResultKeys.push(erk);

        // entêtes des résultats supplémentaires
        const intlService = ServiceFactory.instance.internationalisationService;
        for (const k of this._extraResultKeys)
            this._extraResultHeaders.push(intlService.getExtraResLabel(k));