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 ); } 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"); } }