pab-variable-results-selector.component.ts 3.16 KiB
import { Component, Output, EventEmitter } from "@angular/core";
import { PabResults } from "../../results/pab-results";
import { I18nService } from "../../services/internationalisation/internationalisation.service";
import { ApplicationSetupService } from "../../services/app-setup/app-setup.service";
@Component({
    selector: "pab-variable-results-selector",
    templateUrl: "./pab-variable-results-selector.component.html",
    styleUrls: [
        "./pab-variable-results-selector.component.scss"
export class PabVariableResultsSelectorComponent {
    /** résultats non mis en forme */
    private _pabResults: PabResults;
    private _selectedValue: number;
    /** size of the longest variable value */
    private size = 0;
    /** inferred extended values list for each variating parameter */
    private varValues = [];
    @Output()
    protected indexChange = new EventEmitter();
    constructor(
        protected intlService: I18nService,
        protected appSetupService: ApplicationSetupService
    ) {
        this._selectedValue = 0;
    public set results(r: PabResults) {
        this._pabResults = r;
        if (this._pabResults) {
            // pre-extract variable parameters values
            this.varValues = [];
            const nDigits = this.appSetupService.displayDigits;
            // find longest list
            this.size = 0;
            for (let i = 0; i < this._pabResults.variatedParameters.length; i++) {
                const vs = this._pabResults.variatedParameters[i].valuesIterator.count();
                if (vs > this.size) {
                    this.size = vs;
            // get extended values lists for each variable parameter
            for (const v of this._pabResults.variatedParameters) {
                const vv = [];
                const iter = v.getExtendedValuesIterator(this.size);
                while (iter.hasNext) {
                    const nv = iter.next();
                    vv.push(nv.value.toFixed(nDigits));
                this.varValues.push(vv);
    public get hasVariableResults(): boolean {
        return (
            this._pabResults
            && this._pabResults.hasResults
            && this._pabResults.variatedParameters.length > 0
7172737475767778798081828384858687888990919293949596979899100101102103104105
} public get entries(): number[] { let i = 0; const entries: number[] = this._pabResults.variatedParameters[0].inferredValuesList.map((v) => { return i++; }); return entries; } protected entryLabel(index: number): string { let i = 0; return this.varValues.map((vv) => { const vp = this._pabResults.variatedParameters[i]; i++; let value = "0"; value = vv[index]; return `${vp.symbol} = ${value}`; }).join(", "); } public get selectedValue(): number { return this._selectedValue; } public set selectedValue(v: number) { this._pabResults.variableIndex = v; this.indexChange.emit(); } public get label() { return this.intlService.localizeText("INFO_PARAMFIELD_BOUNDARY_CONDITIONS"); } }