UNPKG

@progress/kendo-angular-pivotgrid

Version:
77 lines (76 loc) 3.58 kB
/**----------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the project root for more information *-------------------------------------------------------------------------------------------*/ import { EventEmitter, Injectable, NgZone, Output } from '@angular/core'; import { isDocumentAvailable } from '@progress/kendo-angular-common'; import { toColumns, toData, toRows, toTree } from '@progress/kendo-pivotgrid-common'; import { matchAriaAttributes } from '../util'; import { BehaviorSubject } from 'rxjs'; import * as i0 from "@angular/core"; /** * @hidden */ let nextPivotGridId = 0; /** * @hidden */ export class PivotGridDataService { ngZone; expandedStateChange = new EventEmitter(); configuratorFieldChange = new EventEmitter(); expandedFieldChange = new EventEmitter(); directive; normalizedData; rows; columns; wrapper; aggregateData; state; columnHeaderLeaves; columnHeaderRows = new BehaviorSubject([]); columnHeaderCols = new BehaviorSubject([]); rowHeaderLeaves; rowHeaderCols = new BehaviorSubject([]); rowHeaderRows = new BehaviorSubject([]); valuesRows = new BehaviorSubject([]); loading = new BehaviorSubject(false); pivotGridId; constructor(ngZone) { this.ngZone = ngZone; this.pivotGridId = nextPivotGridId++; } fields = new BehaviorSubject([]); configuredFields = new BehaviorSubject([]); updateRowsAndCols() { const rowsTree = toTree((this.rows || []).slice()); const [rowHeaderRows, rowHeaderLeaves, rowHeaderDepth, rowHeaderBreadth] = toRows(rowsTree); const columnsTree = toTree((this.columns || []).slice()); const [columnHeaderRows, columnHeaderLeaves, columnHeaderBreadth] = toColumns(columnsTree); this.columnHeaderLeaves = columnHeaderLeaves; this.columnHeaderCols.next(columnHeaderLeaves); this.columnHeaderRows.next(columnHeaderRows); this.rowHeaderLeaves = rowHeaderLeaves; this.rowHeaderCols.next(new Array(rowHeaderBreadth).fill({})); this.rowHeaderRows.next(rowHeaderRows); this.valuesRows.next(toData((this.normalizedData || []).slice(), columnHeaderLeaves, rowHeaderLeaves, columnHeaderBreadth, rowHeaderDepth)); if (isDocumentAvailable()) { this.ngZone.runOutsideAngular(() => { // needed because all tables need to be rendered in accordance with the new settings // before applying the required DOM attributes setTimeout(() => matchAriaAttributes(this.wrapper)); }); } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PivotGridDataService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PivotGridDataService }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PivotGridDataService, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i0.NgZone }]; }, propDecorators: { expandedStateChange: [{ type: Output }], configuratorFieldChange: [{ type: Output }], expandedFieldChange: [{ type: Output }] } });