pb-results-table.component.ts 4.39 KiB
import { Component, ViewChild, ElementRef, Input, OnChanges } from "@angular/core";
import { PreBarrage, PbBassin } from "jalhyd";
import { I18nService } from "../../services/internationalisation.service";
import { ResultsComponentDirective } from "../fixedvar-results/results.component";
import { AppComponent } from "../../app.component";
import { fv, getIthValue } from "../../util";
import { PrebarrageResults } from "../../results/prebarrage-results";
@Component({
    selector: "pb-results-table",
    templateUrl: "./pb-results-table.component.html",
    styleUrls: [
        "./pb-results-table.component.scss"
export class PbResultsTableComponent extends ResultsComponentDirective implements OnChanges {
    /** résultats non mis en forme */
    private _pbResults: PrebarrageResults;
    /** entêtes des colonnes */
    private _headers: string[];
    /** résultats mis en forme */
    private _dataSet: any[];
    /** index de l'élément de résultat à afficher (modifié par le sélecteur de conditions limites) */
    @Input()
    public variableIndex = 0;
    @ViewChild("tableContainer")
    table: ElementRef;
    constructor(
        protected intlService: I18nService
    ) {
        super();
    @Input()
    public set results(r: PrebarrageResults) {
        this._pbResults = r;
    public ngOnChanges() {
        this._dataSet = [];
        if (
            this._pbResults
            && this._pbResults.bassinsResults
            && this._pbResults.bassinsResults.length > 0
            && !this._pbResults.hasOnlyErrors()
        ) {
            const pr = this._pbResults;
            const pb = pr.result.sourceNub as PreBarrage;
            // @TODO results.size ? To extend values lists…
            // refresh headers here if language changed
            this._headers = pr.headers;
            // upstream line
            if (pr.result.resultElements[this.variableIndex]?.vCalc) { // le calcul peut avoir échoué
                this._dataSet.push([
                    this.intlService.localizeText("INFO_LIB_AMONT"),
                    "", "",
                    getIthValue(pb.prms.Z1, this.variableIndex, this._pbResults.size),
                    "", "",
                    getIthValue(pb.prms.Q, this.variableIndex, this._pbResults.size),
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
]); } // basins 1 - n for (let i = 0; i < pr.bassinsResults.length; i++) { if ( pr.bassinsResults[i].resultElements[this.variableIndex] !== undefined && Object.keys(pr.bassinsResults[i].resultElements[this.variableIndex].values).length > 0 // no vCalc in this case ) { const rb = pr.bassinsResults[i].resultElements[this.variableIndex].values; const basin = pr.bassinsResults[i].sourceNub as PbBassin; this._dataSet.push([ i + 1, // n° cloison fv(basin.prms.S.V), fv(basin.prms.ZF.V), fv(rb.Z), fv(rb.PV), fv(rb.YMOY), fv(rb.Q) ]); } } // downstream line if (pr.result.resultElements[this.variableIndex]?.vCalc) { // le calcul peut avoir échoué this._dataSet.push([ this.intlService.localizeText("INFO_LIB_AVAL"), "", "", getIthValue(pb.prms.Z2, this.variableIndex, this._pbResults.size), "", "", getIthValue(pb.prms.Q, this.variableIndex, this._pbResults.size), ]); } } } public get headers() { return this._headers; } /** * Returns a combination of parameters and results for mat-table */ public get dataSet() { return this._dataSet; } public exportAsSpreadsheet() { AppComponent.exportAsSpreadsheet(this.table.nativeElement); } public get uitextExportAsSpreadsheet() { return this.intlService.localizeText("INFO_RESULTS_EXPORT_AS_SPREADSHEET"); } public get uitextEnterFSTitle() { return this.intlService.localizeText("INFO_CHART_BUTTON_TITLE_ENTER_FS"); } public get uitextExitFSTitle() { return this.intlService.localizeText("INFO_CHART_BUTTON_TITLE_EXIT_FS"); } }