@progress/kendo-angular-pivotgrid 0.1.3 → 0.1.4-dev.202205131602
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/kendo-angular-pivotgrid.umd.js +1 -1
- package/esm2015/data-binding/pivotgrid-data.service.js +1 -1
- package/esm2015/main.js +1 -1
- package/esm2015/package-metadata.js +1 -1
- package/esm2015/pivotgrid.component.js +42 -9
- package/esm2015/rendering/pivotgrid-cell.directive.js +1 -1
- package/esm2015/util.js +66 -0
- package/fesm2015/kendo-angular-pivotgrid.js +108 -13
- package/main.d.ts +1 -1
- package/package.json +1 -1
- package/pivotgrid.component.d.ts +6 -2
- package/util.d.ts +26 -0
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
* Copyright © 2021 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@progress/kendo-licensing"),require("@progress/kendo-angular-common"),require("@progress/kendo-pivotgrid-common"),require("rxjs"),require("@angular/common"),require("@progress/kendo-angular-indicators"),require("@progress/kendo-angular-l10n")):"function"==typeof define&&define.amd?define("KendoAngularPivotgrid",["exports","@angular/core","@progress/kendo-licensing","@progress/kendo-angular-common","@progress/kendo-pivotgrid-common","rxjs","@angular/common","@progress/kendo-angular-indicators","@progress/kendo-angular-l10n"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).KendoAngularPivotgrid={},e.ng.core,e.KendoLicensing,e.KendoAngularCommon,e.KendoPivotgridCommon,e.rxjs,e.ng.common,e.KendoAngularIndicators,e.KendoAngularL10N)}(this,function(e,t,i,n,s,a,o,r,l){"use strict";function d(n){if(n&&n.__esModule)return n;var o=Object.create(null);return n&&Object.keys(n).forEach(function(e){var t;"default"!==e&&(t=Object.getOwnPropertyDescriptor(n,e),Object.defineProperty(o,e,t.get?t:{enumerable:!0,get:function(){return n[e]}}))}),o.default=n,Object.freeze(o)}var c=d(t),p=d(n),g=d(o),u=d(r),V={name:"@progress/kendo-angular-pivotgrid",productName:"Kendo UI for Angular",productCodes:["KENDOUIANGULAR","KENDOUICOMPLETE"],publishDate:1652381151,version:"",licensingDocsUrl:"https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning"},v=function(e,t){return(v=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function m(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}v(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}Object.create;function h(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var o,r,i=n.call(e),a=[];try{for(;(void 0===t||0<t--)&&!(o=i.next()).done;)a.push(o.value)}catch(e){r={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return a}function y(e,t,n){if(n||2===arguments.length)for(var o,r=0,i=t.length;r<i;r++)!o&&r in t||((o=o||Array.prototype.slice.call(t,0,r))[r]=t[r]);return e.concat(o||Array.prototype.slice.call(t))}Object.create;b.prototype.updateRowsAndCols=function(){var e=s.toTree((this.rows||[]).slice()),e=h(s.toRows(e),4),t=e[0],n=e[1],o=e[2],e=e[3],r=s.toTree((this.columns||[]).slice()),r=h(s.toColumns(r),3),i=r[0],a=r[1],r=r[2];this.columnHeaderLeaves=a,this.columnHeaderCols.next(new Array(r).fill({})),this.columnHeaderRows.next(i),this.rowHeaderLeaves=n,this.rowHeaderCols.next(new Array(e).fill({})),this.rowHeaderRows.next(t),this.valuesRows.next(s.toData((this.normalizedData||[]).slice(),a,n,r,o))};var f=b;function b(){this.expandedStateChange=new t.EventEmitter,this.columnHeaderRows=new a.BehaviorSubject([]),this.columnHeaderCols=new a.BehaviorSubject([]),this.rowHeaderCols=new a.BehaviorSubject([]),this.rowHeaderRows=new a.BehaviorSubject([]),this.valuesRows=new a.BehaviorSubject([]),this.loading=new a.BehaviorSubject(!1)}f.ɵfac=c.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:f,deps:[],target:c.ɵɵFactoryTarget.Injectable}),f.ɵprov=c.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:f}),c.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:f,decorators:[{type:t.Injectable}],propDecorators:{expandedStateChange:[{type:t.Output}]}});Object.defineProperty(I.prototype,"expanded",{get:function(){var e;return(null==(e=this.kendoPivotGridCell)?void 0:e.hasChildren)&&this.kendoPivotGridCell.children.length},enumerable:!1,configurable:!0}),I.prototype.ngOnInit=function(){var e,t=this.hostEl.nativeElement,n=(this.renderer.setAttribute(t,"rowspan",this.kendoPivotGridCell.rowSpan||1),this.renderer.setAttribute(t,"colspan",this.kendoPivotGridCell.colSpan||1),{"k-pivotgrid-header-total":this.kendoPivotGridCell.total||"values"===this.tableType&&(this.dataService.rowHeaderLeaves[this.rowIndex].total||this.dataService.columnHeaderLeaves[this.colIndex].total),"k-pivotgrid-header-root":0===this.kendoPivotGridCell.levelNum,"k-pivotgrid-expanded":this.kendoPivotGridCell.hasChildren&&this.kendoPivotGridCell.children.length,"k-first":1===this.colIndex});for(e in n)n[e]&&this.renderer.addClass(t,e)};var k=I;function I(e,t,n){var o=this;this.hostEl=e,this.renderer=t,this.dataService=n,this.cellClass=!0,this.handleClick=function(){o.dataService.expandedStateChange.emit({action:o.expanded?"collapse":"expand",cell:o.kendoPivotGridCell,tableType:o.tableType})}}k.ɵfac=c.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:k,deps:[{token:c.ElementRef},{token:c.Renderer2},{token:f}],target:c.ɵɵFactoryTarget.Component}),k.ɵcmp=c.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:k,selector:"[kendoPivotGridCell]",inputs:{kendoPivotGridCell:"kendoPivotGridCell",tableType:"tableType",rowIndex:"rowIndex",colIndex:"colIndex"},host:{properties:{"class.k-pivotgrid-cell":"this.cellClass"}},ngImport:c,template:'\n <span \n *ngIf="kendoPivotGridCell.hasChildren && !kendoPivotGridCell.total"\n class="k-icon"\n [kendoEventsOutsideAngular]="{\n click: handleClick\n }"\n [ngClass]="{\n \'k-i-arrow-chevron-up\': expanded,\n \'k-i-arrow-chevron-down\': !expanded\n }"></span>{{ kendoPivotGridCell.data ? kendoPivotGridCell.data.fmtValue : kendoPivotGridCell.caption }}',isInline:!0,directives:[{type:g.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{type:p.EventsOutsideAngularDirective,selector:"[kendoEventsOutsideAngular]",inputs:["kendoEventsOutsideAngular","scope"]},{type:g.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]}]}),c.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:k,decorators:[{type:t.Component,args:[{selector:"[kendoPivotGridCell]",template:'\n <span \n *ngIf="kendoPivotGridCell.hasChildren && !kendoPivotGridCell.total"\n class="k-icon"\n [kendoEventsOutsideAngular]="{\n click: handleClick\n }"\n [ngClass]="{\n \'k-i-arrow-chevron-up\': expanded,\n \'k-i-arrow-chevron-down\': !expanded\n }"></span>{{ kendoPivotGridCell.data ? kendoPivotGridCell.data.fmtValue : kendoPivotGridCell.caption }}'}]}],ctorParameters:function(){return[{type:c.ElementRef},{type:c.Renderer2},{type:f}]},propDecorators:{cellClass:[{type:t.HostBinding,args:["class.k-pivotgrid-cell"]}],kendoPivotGridCell:[{type:t.Input}],tableType:[{type:t.Input}],rowIndex:[{type:t.Input}],colIndex:[{type:t.Input}]}});C.prototype.ngOnInit=function(){var t=this;this.dataChangeSubs.add(this.dataService[this.tableType+"Rows"].subscribe(function(e){return t.rows=e})),this.dataChangeSubs.add("values"===this.tableType?this.dataService.columnHeaderCols.subscribe(function(e){return t.headerItems=e}):this.dataService[this.tableType+"Cols"].subscribe(function(e){return t.headerItems=e}))},C.prototype.ngOnDestroy=function(){this.dataChangeSubs.unsubscribe()};var x=C;function C(e){this.dataService=e,this.dataChangeSubs=new a.Subscription}x.ɵfac=c.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:x,deps:[{token:f}],target:c.ɵɵFactoryTarget.Component}),x.ɵcmp=c.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:x,selector:"kendo-pivotgrid-table",inputs:{tableType:"tableType"},ngImport:c,template:'\n <table class="k-pivotgrid-table">\n <colgroup>\n <col *ngFor="let item of headerItems;" />\n </colgroup>\n <tbody class="k-pivotgrid-tbody">\n <tr *ngFor="let row of rows; index as rowIndex"\n class="k-pivotgrid-row">\n <ng-container *ngFor="let cell of row.cells; index as colIndex">\n <th\n *ngIf="cell && tableType !== \'values\'" \n [kendoPivotGridCell]="cell"\n [tableType]="tableType"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"></th>\n <td\n *ngIf="cell && tableType === \'values\'"\n [kendoPivotGridCell]="cell"\n tableType="values"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"></td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n ',isInline:!0,components:[{type:k,selector:"[kendoPivotGridCell]",inputs:["kendoPivotGridCell","tableType","rowIndex","colIndex"]}],directives:[{type:g.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{type:g.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),c.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:x,decorators:[{type:t.Component,args:[{selector:"kendo-pivotgrid-table",template:'\n <table class="k-pivotgrid-table">\n <colgroup>\n <col *ngFor="let item of headerItems;" />\n </colgroup>\n <tbody class="k-pivotgrid-tbody">\n <tr *ngFor="let row of rows; index as rowIndex"\n class="k-pivotgrid-row">\n <ng-container *ngFor="let cell of row.cells; index as colIndex">\n <th\n *ngIf="cell && tableType !== \'values\'" \n [kendoPivotGridCell]="cell"\n [tableType]="tableType"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"></th>\n <td\n *ngIf="cell && tableType === \'values\'"\n [kendoPivotGridCell]="cell"\n tableType="values"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"></td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n '}]}],ctorParameters:function(){return[{type:f}]},propDecorators:{tableType:[{type:t.Input}]}});var w={type:"converging-spinner",themeColor:"primary",size:"large"},S=(Object.defineProperty(A.prototype,"loaderSettings",{get:function(){return this._loaderSettings},set:function(e){this._loaderSettings=Object.assign({},w,e)},enumerable:!1,configurable:!0}),A.prototype.ngAfterViewInit=function(){var r=this;n.isDocumentAvailable()&&this.zone.runOutsideAngular(function(){var e=document.querySelector(".k-pivotgrid-row-headers .k-pivotgrid-table"),t=new ResizeObserver(function(){return r.resizeContainer("Columns",e)}),n=(t.observe(e),document.querySelector(".k-pivotgrid-column-headers .k-pivotgrid-table")),o=new ResizeObserver(function(){return r.resizeContainer("Rows",n)});o.observe(n),r.resizeObservers=[t,o]})},A.prototype.ngAfterContentInit=function(){var t=this;this.loadingSubscription.add(this.dataService.loading.subscribe(function(e){return t.loading=e}))},A.prototype.ngOnDestroy=function(){this.resizeObservers.forEach(function(e){return e.disconnect()}),this.loadingSubscription.unsubscribe()},A);function A(e,t,n,o){var r=this;this.hostEl=e,this.zone=t,this.dataService=n,this.hostClass=!0,this.resizeObservers=[],this._loaderSettings=w,this.loadingSubscription=new a.Subscription,this.resizeContainer=function(e,t){var n=r.hostEl.nativeElement,o="Rows"===e?"offsetHeight":"offsetWidth";n.style["gridTemplate"+e]="",n.style["gridTemplate"+e]=t[o]+"px 1fr"},i.validatePackage(V)}S.ɵfac=c.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:S,deps:[{token:c.ElementRef},{token:c.NgZone},{token:f},{token:p.ScrollbarWidthService}],target:c.ɵɵFactoryTarget.Component}),S.ɵcmp=c.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:S,selector:"kendo-pivotgrid",inputs:{loaderSettings:"loaderSettings"},host:{properties:{"class.k-pivotgrid":"this.hostClass"}},providers:[f],ngImport:c,template:'\n <span class="k-pivotgrid-empty-cell"></span>\n <kendo-pivotgrid-table\n class="k-pivotgrid-column-headers"\n tableType="columnHeader"></kendo-pivotgrid-table>\n <kendo-pivotgrid-table\n class="k-pivotgrid-row-headers"\n tableType="rowHeader"></kendo-pivotgrid-table>\n <kendo-pivotgrid-table\n class="k-pivotgrid-values"\n tableType="values"></kendo-pivotgrid-table>\n\n <div *ngIf="loading" class="k-loader">\n <kendo-loader\n [type]="loaderSettings?.type"\n [themeColor]="loaderSettings?.themeColor"\n [size]="loaderSettings?.size"\n >\n </kendo-loader>\n </div>\n ',isInline:!0,styles:["\n /** TODO: Remove if added to themes */\n div.k-loader {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n "],components:[{type:x,selector:"kendo-pivotgrid-table",inputs:["tableType"]},{type:u.LoaderComponent,selector:"kendo-loader",inputs:["type","themeColor","size"]}],directives:[{type:g.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),c.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:S,decorators:[{type:t.Component,args:[{selector:"kendo-pivotgrid",providers:[f],template:'\n <span class="k-pivotgrid-empty-cell"></span>\n <kendo-pivotgrid-table\n class="k-pivotgrid-column-headers"\n tableType="columnHeader"></kendo-pivotgrid-table>\n <kendo-pivotgrid-table\n class="k-pivotgrid-row-headers"\n tableType="rowHeader"></kendo-pivotgrid-table>\n <kendo-pivotgrid-table\n class="k-pivotgrid-values"\n tableType="values"></kendo-pivotgrid-table>\n\n <div *ngIf="loading" class="k-loader">\n <kendo-loader\n [type]="loaderSettings?.type"\n [themeColor]="loaderSettings?.themeColor"\n [size]="loaderSettings?.size"\n >\n </kendo-loader>\n </div>\n ',styles:["\n /** TODO: Remove if added to themes */\n div.k-loader {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n "]}]}],ctorParameters:function(){return[{type:c.ElementRef},{type:c.NgZone},{type:f},{type:p.ScrollbarWidthService}]},propDecorators:{hostClass:[{type:t.HostBinding,args:["class.k-pivotgrid"]}],loaderSettings:[{type:t.Input}]}});P.prototype.ngOnInit=function(){var o=this;this.loadData(),this.expandedStateSub=this.dataService.expandedStateChange.subscribe(function(n){o.zone.run(function(){var e="columnHeader"===n.tableType,t=e?"columnAxes":"rowAxes",e=s.toTree((e?o.dataService.columns:o.dataService.rows||[]).slice());o.updateHeaders(t,e,n.cell.path)})})},P.prototype.ngOnDestroy=function(){this.expandedStateSub.unsubscribe()},P.prototype.updateDataServiceFields=function(){this.dataService.normalizedData=this.dataState.data,this.dataService.rows=this.dataState.rows,this.dataService.columns=this.dataState.columns,this.dataService.updateRowsAndCols()},P.prototype.updateHeaders=function(e,t,n){n={type:s.HEADERS_ACTION.toggle,payload:n},n=s.headersReducer(this[e].slice(),Object.assign(Object.assign({},n),{tree:t}));this[e]=n,this.loadData()};u=P;function P(e,t){this.dataService=e,this.zone=t,this.columnAxes=[],this.rowAxes=[],this.measureAxes=[],this.expandedStateSub=new a.Subscription}u.ɵfac=c.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:u,deps:[{token:f},{token:c.NgZone}],target:c.ɵɵFactoryTarget.Directive}),u.ɵdir=c.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:u,selector:"kendo-base-binding-directive",inputs:{columnAxes:"columnAxes",rowAxes:"rowAxes",measureAxes:"measureAxes"},ngImport:c}),c.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:u,decorators:[{type:t.Directive,args:[{selector:"kendo-base-binding-directive"}]}],ctorParameters:function(){return[{type:f},{type:c.NgZone}]},propDecorators:{columnAxes:[{type:t.Input}],rowAxes:[{type:t.Input}],measureAxes:[{type:t.Input}]}});var D,O={dataField:"aggregate",columnsData:"columns"},g=(m(T,D=u),T.prototype.ngOnChanges=function(e){n.anyChanged(["data","dimensions","columnAxes","rowAxes","measureAxes","measures"],e)&&this.loadData()},T.prototype.loadData=function(){var e=this,t=this.getRootAxes(this.columnAxes),n=this.getRootAxes(this.rowAxes),t=t.split("&").map(this.createAxisSettings),n=n.split("&").map(this.createAxisSettings),o=this.measureAxes.map(function(t){return e.measures.find(function(e){return String(e.name)===String(t.name)})}).filter(Boolean),r=s.createDataTree(this.data,n,t,o,O);this.dataState=s.createLocalDataState({dataTree:r,rowSettings:n,columnSettings:t,rowAxes:this.rowAxes,columnAxes:this.columnAxes,measures:o,sort:[],fields:O}),this.updateDataServiceFields()},T.prototype.getRootAxes=function(e){return Array.from(s.rootFields(e).keys()).join("&")},T);function T(e,t){var n=D.call(this,e,t)||this;return n.createAxisSettings=function(e){return Object.assign({key:e},n.dimensions[e])},n}g.ɵfac=c.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:g,deps:[{token:f},{token:c.NgZone}],target:c.ɵɵFactoryTarget.Directive}),g.ɵdir=c.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:g,selector:"[kendoPivotLocalBinding]",inputs:{data:["kendoPivotLocalBinding","data"],dimensions:"dimensions",measures:"measures"},exportAs:["kendoPivotLocalBinding"],usesInheritance:!0,usesOnChanges:!0,ngImport:c}),c.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:g,decorators:[{type:t.Directive,args:[{selector:"[kendoPivotLocalBinding]",exportAs:"kendoPivotLocalBinding"}]}],ctorParameters:function(){return[{type:f},{type:c.NgZone}]},propDecorators:{data:[{type:t.Input,args:["kendoPivotLocalBinding"]}],dimensions:[{type:t.Input}],measures:[{type:t.Input}]}});m(F,j=u),F.prototype.ngOnChanges=function(e){n.anyChanged(["url","cube","catalog","columnAxes","rowAxes","measureAxes"],e)&&this.loadData()},F.prototype.loadData=function(){var t=this,e=(this.dataService.loading.next(!0),{connection:{catalog:this.catalog,cube:this.cube},columnAxes:this.columnAxes,rowAxes:this.rowAxes,measureAxes:this.measureAxes});s.fetchData({url:this.url},JSON.parse(JSON.stringify(e))).then(s.createDataState).then(function(e){t.dataState=e,t.updateDataServiceFields(),t.dataService.loading.next(!1)})};var j,u=F;function F(e,t){return j.call(this,e,t)||this}u.ɵfac=c.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:u,deps:[{token:f},{token:c.NgZone}],target:c.ɵɵFactoryTarget.Directive}),u.ɵdir=c.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:u,selector:"[kendoPivotOLAPBinding]",inputs:{url:"url",cube:"cube",catalog:"catalog"},exportAs:["kendoPivotOLAPBinding"],usesInheritance:!0,usesOnChanges:!0,ngImport:c}),c.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:u,decorators:[{type:t.Directive,args:[{selector:"[kendoPivotOLAPBinding]",exportAs:"kendoPivotOLAPBinding"}]}],ctorParameters:function(){return[{type:f},{type:c.NgZone}]},propDecorators:{url:[{type:t.Input}],cube:[{type:t.Input}],catalog:[{type:t.Input}]}});var G=[o.CommonModule,n.EventsModule,r.IndicatorsModule],E=[S,x,k,g,u],R=function(){};R.ɵfac=c.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:R,deps:[],target:c.ɵɵFactoryTarget.NgModule}),R.ɵmod=c.ɵɵngDeclareNgModule({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:R,declarations:[S,x,k,g,u],imports:[o.CommonModule,n.EventsModule,r.IndicatorsModule],exports:[S,x,k,g,u]}),R.ɵinj=c.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:R,providers:[{provide:l.L10N_PREFIX,useValue:"kendo.pivotgrid"}],imports:[y([],h(G))]}),c.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:c,type:R,decorators:[{type:t.NgModule,args:[{imports:y([],h(G)),declarations:y([],h(E)),exports:y([],h(E)),providers:[{provide:l.L10N_PREFIX,useValue:"kendo.pivotgrid"}]}]}]}),Object.defineProperty(e,"averageAggregate",{enumerable:!0,get:function(){return s.averageAggregate}}),Object.defineProperty(e,"maxAggregate",{enumerable:!0,get:function(){return s.maxAggregate}}),Object.defineProperty(e,"minAggregate",{enumerable:!0,get:function(){return s.minAggregate}}),Object.defineProperty(e,"sumAggregate",{enumerable:!0,get:function(){return s.sumAggregate}}),e.PivotGridCellDirective=k,e.PivotGridComponent=S,e.PivotGridModule=R,e.PivotGridTableComponent=x,e.PivotLocalBindingDirective=g,e.PivotOLAPBindingDirective=u,Object.defineProperty(e,"__esModule",{value:!0})});
|
|
5
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@progress/kendo-licensing"),require("@progress/kendo-angular-common"),require("@progress/kendo-pivotgrid-common"),require("rxjs"),require("rxjs/operators"),require("@angular/common"),require("@progress/kendo-angular-indicators"),require("@progress/kendo-angular-l10n")):"function"==typeof define&&define.amd?define("KendoAngularPivotgrid",["exports","@angular/core","@progress/kendo-licensing","@progress/kendo-angular-common","@progress/kendo-pivotgrid-common","rxjs","rxjs/operators","@angular/common","@progress/kendo-angular-indicators","@progress/kendo-angular-l10n"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).KendoAngularPivotgrid={},e.ng.core,e.KendoLicensing,e.KendoAngularCommon,e.KendoPivotgridCommon,e.rxjs,e.rxjs.operators,e.ng.common,e.KendoAngularIndicators,e.KendoAngularL10N)}(this,function(t,e,G,n,s,a,V,o,r,i){"use strict";function l(n){if(n&&n.__esModule)return n;var o=Object.create(null);return n&&Object.keys(n).forEach(function(e){var t;"default"!==e&&(t=Object.getOwnPropertyDescriptor(n,e),Object.defineProperty(o,e,t.get?t:{enumerable:!0,get:function(){return n[e]}}))}),o.default=n,Object.freeze(o)}var d=l(e),c=l(n),p=l(o),u=l(r),N={name:"@progress/kendo-angular-pivotgrid",productName:"Kendo UI for Angular",productCodes:["KENDOUIANGULAR","KENDOUICOMPLETE"],publishDate:1652457707,version:"",licensingDocsUrl:"https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning"},g=function(e,t){return(g=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function v(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}g(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}Object.create;function m(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var o,r,a=n.call(e),i=[];try{for(;(void 0===t||0<t--)&&!(o=a.next()).done;)i.push(o.value)}catch(e){r={error:e}}finally{try{o&&!o.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}return i}function h(e,t,n){if(n||2===arguments.length)for(var o,r=0,a=t.length;r<a;r++)!o&&r in t||((o=o||Array.prototype.slice.call(t,0,r))[r]=t[r]);return e.concat(o||Array.prototype.slice.call(t))}Object.create;f.prototype.updateRowsAndCols=function(){var e=s.toTree((this.rows||[]).slice()),e=m(s.toRows(e),4),t=e[0],n=e[1],o=e[2],e=e[3],r=s.toTree((this.columns||[]).slice()),r=m(s.toColumns(r),3),a=r[0],i=r[1],r=r[2];this.columnHeaderLeaves=i,this.columnHeaderCols.next(i),this.columnHeaderRows.next(a),this.rowHeaderLeaves=n,this.rowHeaderCols.next(new Array(e).fill({})),this.rowHeaderRows.next(t),this.valuesRows.next(s.toData((this.normalizedData||[]).slice(),i,n,r,o))};var y=f;function f(){this.expandedStateChange=new e.EventEmitter,this.columnHeaderRows=new a.BehaviorSubject([]),this.columnHeaderCols=new a.BehaviorSubject([]),this.rowHeaderCols=new a.BehaviorSubject([]),this.rowHeaderRows=new a.BehaviorSubject([]),this.valuesRows=new a.BehaviorSubject([]),this.loading=new a.BehaviorSubject(!1)}y.ɵfac=d.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:y,deps:[],target:d.ɵɵFactoryTarget.Injectable}),y.ɵprov=d.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:y}),d.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:y,decorators:[{type:e.Injectable}],propDecorators:{expandedStateChange:[{type:e.Output}]}});function b(e,t,n,o){(e="Y"===o?-k(e,o):k(e,o))&&(t[0][n]=t[1][n]+=e)}var k=function(e,t){var n=e["wheelDelta"+t];return e.wheelDelta&&(void 0===n||n)?e.wheelDelta:e.detail&&e.axis===e["X"===t?"HORIZONTAL_AXIS":"VERTICAL_AXIS"]?10*-e.detail:0},I=(Object.defineProperty(C.prototype,"expanded",{get:function(){var e;return(null==(e=this.kendoPivotGridCell)?void 0:e.hasChildren)&&this.kendoPivotGridCell.children.length},enumerable:!1,configurable:!0}),C.prototype.ngOnInit=function(){var e,t=this.hostEl.nativeElement,n=(this.renderer.setAttribute(t,"rowspan",this.kendoPivotGridCell.rowSpan||1),this.renderer.setAttribute(t,"colspan",this.kendoPivotGridCell.colSpan||1),{"k-pivotgrid-header-total":this.kendoPivotGridCell.total||"values"===this.tableType&&(this.dataService.rowHeaderLeaves[this.rowIndex].total||this.dataService.columnHeaderLeaves[this.colIndex].total),"k-pivotgrid-header-root":0===this.kendoPivotGridCell.levelNum,"k-pivotgrid-expanded":this.kendoPivotGridCell.hasChildren&&this.kendoPivotGridCell.children.length,"k-first":0<this.colIndex});for(e in n)n[e]&&this.renderer.addClass(t,e)},C);function C(e,t,n){var o=this;this.hostEl=e,this.renderer=t,this.dataService=n,this.cellClass=!0,this.handleClick=function(){o.dataService.expandedStateChange.emit({action:o.expanded?"collapse":"expand",cell:o.kendoPivotGridCell,tableType:o.tableType})}}I.ɵfac=d.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:I,deps:[{token:d.ElementRef},{token:d.Renderer2},{token:y}],target:d.ɵɵFactoryTarget.Component}),I.ɵcmp=d.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:I,selector:"[kendoPivotGridCell]",inputs:{kendoPivotGridCell:"kendoPivotGridCell",tableType:"tableType",rowIndex:"rowIndex",colIndex:"colIndex"},host:{properties:{"class.k-pivotgrid-cell":"this.cellClass"}},ngImport:d,template:'\n <span \n *ngIf="kendoPivotGridCell.hasChildren && !kendoPivotGridCell.total"\n class="k-icon"\n [kendoEventsOutsideAngular]="{\n click: handleClick\n }"\n [ngClass]="{\n \'k-i-arrow-chevron-up\': expanded,\n \'k-i-arrow-chevron-down\': !expanded\n }"></span>{{ kendoPivotGridCell.data ? kendoPivotGridCell.data.fmtValue : kendoPivotGridCell.caption }}',isInline:!0,directives:[{type:p.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{type:c.EventsOutsideAngularDirective,selector:"[kendoEventsOutsideAngular]",inputs:["kendoEventsOutsideAngular","scope"]},{type:p.NgClass,selector:"[ngClass]",inputs:["class","ngClass"]}]}),d.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:I,decorators:[{type:e.Component,args:[{selector:"[kendoPivotGridCell]",template:'\n <span \n *ngIf="kendoPivotGridCell.hasChildren && !kendoPivotGridCell.total"\n class="k-icon"\n [kendoEventsOutsideAngular]="{\n click: handleClick\n }"\n [ngClass]="{\n \'k-i-arrow-chevron-up\': expanded,\n \'k-i-arrow-chevron-down\': !expanded\n }"></span>{{ kendoPivotGridCell.data ? kendoPivotGridCell.data.fmtValue : kendoPivotGridCell.caption }}'}]}],ctorParameters:function(){return[{type:d.ElementRef},{type:d.Renderer2},{type:y}]},propDecorators:{cellClass:[{type:e.HostBinding,args:["class.k-pivotgrid-cell"]}],kendoPivotGridCell:[{type:e.Input}],tableType:[{type:e.Input}],rowIndex:[{type:e.Input}],colIndex:[{type:e.Input}]}});x.prototype.ngOnInit=function(){var t=this;this.dataChangeSubs.add(this.dataService[this.tableType+"Rows"].subscribe(function(e){return t.rows=e})),this.dataChangeSubs.add("values"===this.tableType?this.dataService.columnHeaderCols.subscribe(function(e){return t.headerItems=e}):this.dataService[this.tableType+"Cols"].subscribe(function(e){return t.headerItems=e}))},x.prototype.ngOnDestroy=function(){this.dataChangeSubs.unsubscribe()};var w=x;function x(e){this.dataService=e,this.dataChangeSubs=new a.Subscription}w.ɵfac=d.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:w,deps:[{token:y}],target:d.ɵɵFactoryTarget.Component}),w.ɵcmp=d.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:w,selector:"kendo-pivotgrid-table",inputs:{tableType:"tableType"},ngImport:d,template:'\n <table class="k-pivotgrid-table">\n <colgroup>\n <col *ngFor="let item of headerItems;" />\n </colgroup>\n <tbody class="k-pivotgrid-tbody">\n <tr *ngFor="let row of rows; index as rowIndex"\n class="k-pivotgrid-row">\n <ng-container *ngFor="let cell of row.cells; index as colIndex">\n <th\n *ngIf="cell && tableType !== \'values\'" \n [kendoPivotGridCell]="cell"\n [tableType]="tableType"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"></th>\n <td\n *ngIf="cell && tableType === \'values\'"\n [kendoPivotGridCell]="cell"\n tableType="values"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"></td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n ',isInline:!0,components:[{type:I,selector:"[kendoPivotGridCell]",inputs:["kendoPivotGridCell","tableType","rowIndex","colIndex"]}],directives:[{type:p.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{type:p.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),d.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:w,decorators:[{type:e.Component,args:[{selector:"kendo-pivotgrid-table",template:'\n <table class="k-pivotgrid-table">\n <colgroup>\n <col *ngFor="let item of headerItems;" />\n </colgroup>\n <tbody class="k-pivotgrid-tbody">\n <tr *ngFor="let row of rows; index as rowIndex"\n class="k-pivotgrid-row">\n <ng-container *ngFor="let cell of row.cells; index as colIndex">\n <th\n *ngIf="cell && tableType !== \'values\'" \n [kendoPivotGridCell]="cell"\n [tableType]="tableType"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"></th>\n <td\n *ngIf="cell && tableType === \'values\'"\n [kendoPivotGridCell]="cell"\n tableType="values"\n [colIndex]="colIndex"\n [rowIndex]="rowIndex"></td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n '}]}],ctorParameters:function(){return[{type:y}]},propDecorators:{tableType:[{type:e.Input}]}});var T={type:"converging-spinner",themeColor:"primary",size:"large"},S=(Object.defineProperty(A.prototype,"loaderSettings",{get:function(){return this._loaderSettings},set:function(e){this._loaderSettings=Object.assign({},T,e)},enumerable:!1,configurable:!0}),A.prototype.ngAfterViewInit=function(){var r=this;n.isDocumentAvailable()&&this.zone.runOutsideAngular(function(){var e=r.rowHeadersTable.nativeElement.firstElementChild,t=new ResizeObserver(function(){return r.resizeContainer("Columns",e)}),n=(t.observe(e),r.colHeadersTable.nativeElement.firstElementChild),o=new ResizeObserver(function(){return r.resizeContainer("Rows",n)});o.observe(n),r.resizeObservers=[t,o],r.subs.add(a.fromEvent(e,"wheel").pipe(V.mergeWith(a.fromEvent(n,"wheel"),a.fromEvent(r.valuesTable.nativeElement,"scroll"))).subscribe(function(e){return r.handleScroll(e)}))})},A.prototype.ngAfterContentInit=function(){var t=this;this.subs.add(this.dataService.loading.subscribe(function(e){return t.loading=e}))},A.prototype.ngOnDestroy=function(){this.resizeObservers.forEach(function(e){return e.disconnect()}),this.subs.unsubscribe()},A);function A(e,t,n,o){var i=this;this.hostEl=e,this.zone=t,this.dataService=n,this.hostClass=!0,this.resizeObservers=[],this._loaderSettings=T,this.subs=new a.Subscription,this.resizeContainer=function(e,t){var n=i.hostEl.nativeElement,o="Rows"===e?"offsetHeight":"offsetWidth";n.style["gridTemplate"+e]="",n.style["gridTemplate"+e]=t[o]+"px 1fr"},this.handleScroll=function(e){var t,n,o,r,a;e.target===i.valuesTable.nativeElement?(t=e.target,n=[i.rowHeadersTable.nativeElement,i.colHeadersTable.nativeElement],o=t.scrollTop,t=t.scrollLeft,r=n[0].scrollTop,a=t!==n[1].scrollLeft,o!==r?n[0].scrollTop=o:a&&(n[1].scrollLeft=t)):e.target.closest(".k-pivotgrid-row-headers")?b(e,[i.valuesTable.nativeElement,i.rowHeadersTable.nativeElement],"scrollTop","Y"):e.target.closest(".k-pivotgrid-column-headers")&&b(e,[i.valuesTable.nativeElement,i.colHeadersTable.nativeElement],"scrollLeft","X")},G.validatePackage(N)}S.ɵfac=d.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:S,deps:[{token:d.ElementRef},{token:d.NgZone},{token:y},{token:c.ScrollbarWidthService}],target:d.ɵɵFactoryTarget.Component}),S.ɵcmp=d.ɵɵngDeclareComponent({minVersion:"12.0.0",version:"12.2.16",type:S,selector:"kendo-pivotgrid",inputs:{loaderSettings:"loaderSettings"},host:{properties:{"class.k-pivotgrid":"this.hostClass"}},providers:[y],viewQueries:[{propertyName:"colHeadersTable",first:!0,predicate:["colHeadersTable"],descendants:!0,read:e.ElementRef},{propertyName:"rowHeadersTable",first:!0,predicate:["rowHeadersTable"],descendants:!0,read:e.ElementRef},{propertyName:"valuesTable",first:!0,predicate:["valuesTable"],descendants:!0,read:e.ElementRef}],ngImport:d,template:'\n <span class="k-pivotgrid-empty-cell"></span>\n <kendo-pivotgrid-table\n #colHeadersTable\n class="k-pivotgrid-column-headers"\n tableType="columnHeader"></kendo-pivotgrid-table>\n <kendo-pivotgrid-table\n #rowHeadersTable\n class="k-pivotgrid-row-headers"\n tableType="rowHeader"></kendo-pivotgrid-table>\n <kendo-pivotgrid-table\n #valuesTable\n class="k-pivotgrid-values"\n tableType="values"></kendo-pivotgrid-table>\n\n <div *ngIf="loading" class="k-loader">\n <kendo-loader\n [type]="loaderSettings?.type"\n [themeColor]="loaderSettings?.themeColor"\n [size]="loaderSettings?.size"\n >\n </kendo-loader>\n </div>\n ',isInline:!0,styles:["\n /** TODO: Remove if added to themes */\n div.k-loader {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n "],components:[{type:w,selector:"kendo-pivotgrid-table",inputs:["tableType"]},{type:u.LoaderComponent,selector:"kendo-loader",inputs:["type","themeColor","size"]}],directives:[{type:p.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]}),d.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:S,decorators:[{type:e.Component,args:[{selector:"kendo-pivotgrid",providers:[y],template:'\n <span class="k-pivotgrid-empty-cell"></span>\n <kendo-pivotgrid-table\n #colHeadersTable\n class="k-pivotgrid-column-headers"\n tableType="columnHeader"></kendo-pivotgrid-table>\n <kendo-pivotgrid-table\n #rowHeadersTable\n class="k-pivotgrid-row-headers"\n tableType="rowHeader"></kendo-pivotgrid-table>\n <kendo-pivotgrid-table\n #valuesTable\n class="k-pivotgrid-values"\n tableType="values"></kendo-pivotgrid-table>\n\n <div *ngIf="loading" class="k-loader">\n <kendo-loader\n [type]="loaderSettings?.type"\n [themeColor]="loaderSettings?.themeColor"\n [size]="loaderSettings?.size"\n >\n </kendo-loader>\n </div>\n ',styles:["\n /** TODO: Remove if added to themes */\n div.k-loader {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n "]}]}],ctorParameters:function(){return[{type:d.ElementRef},{type:d.NgZone},{type:y},{type:c.ScrollbarWidthService}]},propDecorators:{hostClass:[{type:e.HostBinding,args:["class.k-pivotgrid"]}],colHeadersTable:[{type:e.ViewChild,args:["colHeadersTable",{read:e.ElementRef}]}],rowHeadersTable:[{type:e.ViewChild,args:["rowHeadersTable",{read:e.ElementRef}]}],valuesTable:[{type:e.ViewChild,args:["valuesTable",{read:e.ElementRef}]}],loaderSettings:[{type:e.Input}]}});D.prototype.ngOnInit=function(){var o=this;this.loadData(),this.expandedStateSub=this.dataService.expandedStateChange.subscribe(function(n){o.zone.run(function(){var e="columnHeader"===n.tableType,t=e?"columnAxes":"rowAxes",e=s.toTree((e?o.dataService.columns:o.dataService.rows||[]).slice());o.updateHeaders(t,e,n.cell.path)})})},D.prototype.ngOnDestroy=function(){this.expandedStateSub.unsubscribe()},D.prototype.updateDataServiceFields=function(){this.dataService.normalizedData=this.dataState.data,this.dataService.rows=this.dataState.rows,this.dataService.columns=this.dataState.columns,this.dataService.updateRowsAndCols()},D.prototype.updateHeaders=function(e,t,n){n={type:s.HEADERS_ACTION.toggle,payload:n},n=s.headersReducer(this[e].slice(),Object.assign(Object.assign({},n),{tree:t}));this[e]=n,this.loadData()};u=D;function D(e,t){this.dataService=e,this.zone=t,this.columnAxes=[],this.rowAxes=[],this.measureAxes=[],this.expandedStateSub=new a.Subscription}u.ɵfac=d.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:u,deps:[{token:y},{token:d.NgZone}],target:d.ɵɵFactoryTarget.Directive}),u.ɵdir=d.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:u,selector:"kendo-base-binding-directive",inputs:{columnAxes:"columnAxes",rowAxes:"rowAxes",measureAxes:"measureAxes"},ngImport:d}),d.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:u,decorators:[{type:e.Directive,args:[{selector:"kendo-base-binding-directive"}]}],ctorParameters:function(){return[{type:y},{type:d.NgZone}]},propDecorators:{columnAxes:[{type:e.Input}],rowAxes:[{type:e.Input}],measureAxes:[{type:e.Input}]}});var P,O={dataField:"aggregate",columnsData:"columns"},p=(v(E,P=u),E.prototype.ngOnChanges=function(e){n.anyChanged(["data","dimensions","columnAxes","rowAxes","measureAxes","measures"],e)&&this.loadData()},E.prototype.loadData=function(){var e=this,t=this.getRootAxes(this.columnAxes),n=this.getRootAxes(this.rowAxes),t=t.split("&").map(this.createAxisSettings),n=n.split("&").map(this.createAxisSettings),o=this.measureAxes.map(function(t){return e.measures.find(function(e){return String(e.name)===String(t.name)})}).filter(Boolean),r=s.createDataTree(this.data,n,t,o,O);this.dataState=s.createLocalDataState({dataTree:r,rowSettings:n,columnSettings:t,rowAxes:this.rowAxes,columnAxes:this.columnAxes,measures:o,sort:[],fields:O}),this.updateDataServiceFields()},E.prototype.getRootAxes=function(e){return Array.from(s.rootFields(e).keys()).join("&")},E);function E(e,t){var n=P.call(this,e,t)||this;return n.createAxisSettings=function(e){return Object.assign({key:e},n.dimensions[e])},n}p.ɵfac=d.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:p,deps:[{token:y},{token:d.NgZone}],target:d.ɵɵFactoryTarget.Directive}),p.ɵdir=d.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:p,selector:"[kendoPivotLocalBinding]",inputs:{data:["kendoPivotLocalBinding","data"],dimensions:"dimensions",measures:"measures"},exportAs:["kendoPivotLocalBinding"],usesInheritance:!0,usesOnChanges:!0,ngImport:d}),d.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:p,decorators:[{type:e.Directive,args:[{selector:"[kendoPivotLocalBinding]",exportAs:"kendoPivotLocalBinding"}]}],ctorParameters:function(){return[{type:y},{type:d.NgZone}]},propDecorators:{data:[{type:e.Input,args:["kendoPivotLocalBinding"]}],dimensions:[{type:e.Input}],measures:[{type:e.Input}]}});v(j,H=u),j.prototype.ngOnChanges=function(e){n.anyChanged(["url","cube","catalog","columnAxes","rowAxes","measureAxes"],e)&&this.loadData()},j.prototype.loadData=function(){var t=this,e=(this.dataService.loading.next(!0),{connection:{catalog:this.catalog,cube:this.cube},columnAxes:this.columnAxes,rowAxes:this.rowAxes,measureAxes:this.measureAxes});s.fetchData({url:this.url},JSON.parse(JSON.stringify(e))).then(s.createDataState).then(function(e){t.dataState=e,t.updateDataServiceFields(),t.dataService.loading.next(!1)})};var H,u=j;function j(e,t){return H.call(this,e,t)||this}u.ɵfac=d.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:u,deps:[{token:y},{token:d.NgZone}],target:d.ɵɵFactoryTarget.Directive}),u.ɵdir=d.ɵɵngDeclareDirective({minVersion:"12.0.0",version:"12.2.16",type:u,selector:"[kendoPivotOLAPBinding]",inputs:{url:"url",cube:"cube",catalog:"catalog"},exportAs:["kendoPivotOLAPBinding"],usesInheritance:!0,usesOnChanges:!0,ngImport:d}),d.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:u,decorators:[{type:e.Directive,args:[{selector:"[kendoPivotOLAPBinding]",exportAs:"kendoPivotOLAPBinding"}]}],ctorParameters:function(){return[{type:y},{type:d.NgZone}]},propDecorators:{url:[{type:e.Input}],cube:[{type:e.Input}],catalog:[{type:e.Input}]}});var R=[o.CommonModule,n.EventsModule,r.IndicatorsModule],L=[S,w,I,p,u],F=function(){};F.ɵfac=d.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:F,deps:[],target:d.ɵɵFactoryTarget.NgModule}),F.ɵmod=d.ɵɵngDeclareNgModule({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:F,declarations:[S,w,I,p,u],imports:[o.CommonModule,n.EventsModule,r.IndicatorsModule],exports:[S,w,I,p,u]}),F.ɵinj=d.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:F,providers:[{provide:i.L10N_PREFIX,useValue:"kendo.pivotgrid"}],imports:[h([],m(R))]}),d.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"12.2.16",ngImport:d,type:F,decorators:[{type:e.NgModule,args:[{imports:h([],m(R)),declarations:h([],m(L)),exports:h([],m(L)),providers:[{provide:i.L10N_PREFIX,useValue:"kendo.pivotgrid"}]}]}]}),t.PivotGridCellDirective=I,t.PivotGridComponent=S,t.PivotGridModule=F,t.PivotGridTableComponent=w,t.PivotLocalBindingDirective=p,t.PivotOLAPBindingDirective=u,Object.keys(s).forEach(function(e){"default"===e||t.hasOwnProperty(e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return s[e]}})}),Object.defineProperty(t,"__esModule",{value:!0})});
|
|
@@ -25,7 +25,7 @@ export class PivotGridDataService {
|
|
|
25
25
|
const columnsTree = toTree((this.columns || []).slice());
|
|
26
26
|
const [columnHeaderRows, columnHeaderLeaves, columnHeaderBreadth] = toColumns(columnsTree);
|
|
27
27
|
this.columnHeaderLeaves = columnHeaderLeaves;
|
|
28
|
-
this.columnHeaderCols.next(
|
|
28
|
+
this.columnHeaderCols.next(columnHeaderLeaves);
|
|
29
29
|
this.columnHeaderRows.next(columnHeaderRows);
|
|
30
30
|
this.rowHeaderLeaves = rowHeaderLeaves;
|
|
31
31
|
this.rowHeaderCols.next(new Array(rowHeaderBreadth).fill({}));
|
package/esm2015/main.js
CHANGED
|
@@ -11,4 +11,4 @@ export { PivotGridTableComponent } from './rendering/pivotgrid-table.component';
|
|
|
11
11
|
export { PivotLocalBindingDirective } from './data-binding/local-binding.directive';
|
|
12
12
|
export { PivotOLAPBindingDirective } from './data-binding/olap-binding.directive';
|
|
13
13
|
// Export types from PivotGrid common package
|
|
14
|
-
export
|
|
14
|
+
export * from '@progress/kendo-pivotgrid-common';
|
|
@@ -9,7 +9,7 @@ export const packageMetadata = {
|
|
|
9
9
|
name: '@progress/kendo-angular-pivotgrid',
|
|
10
10
|
productName: 'Kendo UI for Angular',
|
|
11
11
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
12
|
-
publishDate:
|
|
12
|
+
publishDate: 1652457707,
|
|
13
13
|
version: '',
|
|
14
14
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
|
|
15
15
|
};
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
* Copyright © 2021 Progress Software Corporation. All rights reserved.
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { Component, HostBinding, Input } from '@angular/core';
|
|
5
|
+
import { Component, ElementRef, HostBinding, Input, ViewChild } from '@angular/core';
|
|
6
6
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
7
7
|
import { packageMetadata } from './package-metadata';
|
|
8
8
|
import { isDocumentAvailable } from '@progress/kendo-angular-common';
|
|
9
9
|
import { PivotGridDataService } from './data-binding/pivotgrid-data.service';
|
|
10
|
-
import { Subscription } from 'rxjs';
|
|
10
|
+
import { fromEvent, Subscription } from 'rxjs';
|
|
11
|
+
import { mergeWith } from 'rxjs/operators';
|
|
12
|
+
import { syncScroll, syncWheel } from './util';
|
|
11
13
|
import * as i0 from "@angular/core";
|
|
12
14
|
import * as i1 from "./data-binding/pivotgrid-data.service";
|
|
13
15
|
import * as i2 from "@progress/kendo-angular-common";
|
|
@@ -20,7 +22,7 @@ const DEFAULT_LOADER_SETTINGS = {
|
|
|
20
22
|
size: 'large'
|
|
21
23
|
};
|
|
22
24
|
/**
|
|
23
|
-
*
|
|
25
|
+
* Represents the Kendo UI PivotGrid component for Angular.
|
|
24
26
|
*/
|
|
25
27
|
export class PivotGridComponent {
|
|
26
28
|
constructor(hostEl, zone, dataService, _scrollbarWidthService) {
|
|
@@ -30,7 +32,7 @@ export class PivotGridComponent {
|
|
|
30
32
|
this.hostClass = true;
|
|
31
33
|
this.resizeObservers = [];
|
|
32
34
|
this._loaderSettings = DEFAULT_LOADER_SETTINGS;
|
|
33
|
-
this.
|
|
35
|
+
this.subs = new Subscription();
|
|
34
36
|
this.resizeContainer = (axis, element) => {
|
|
35
37
|
const isRows = axis === 'Rows';
|
|
36
38
|
const wrapper = this.hostEl.nativeElement;
|
|
@@ -38,6 +40,20 @@ export class PivotGridComponent {
|
|
|
38
40
|
wrapper.style[`gridTemplate${axis}`] = '';
|
|
39
41
|
wrapper.style[`gridTemplate${axis}`] = `${element[size]}px 1fr`;
|
|
40
42
|
};
|
|
43
|
+
this.handleScroll = (event) => {
|
|
44
|
+
if (event.target === this.valuesTable.nativeElement) {
|
|
45
|
+
syncScroll(event.target, [
|
|
46
|
+
this.rowHeadersTable.nativeElement,
|
|
47
|
+
this.colHeadersTable.nativeElement
|
|
48
|
+
]);
|
|
49
|
+
}
|
|
50
|
+
else if (event.target.closest('.k-pivotgrid-row-headers')) {
|
|
51
|
+
syncWheel(event, [this.valuesTable.nativeElement, this.rowHeadersTable.nativeElement], 'scrollTop', 'Y');
|
|
52
|
+
}
|
|
53
|
+
else if (event.target.closest('.k-pivotgrid-column-headers')) {
|
|
54
|
+
syncWheel(event, [this.valuesTable.nativeElement, this.colHeadersTable.nativeElement], 'scrollLeft', 'X');
|
|
55
|
+
}
|
|
56
|
+
};
|
|
41
57
|
validatePackage(packageMetadata);
|
|
42
58
|
}
|
|
43
59
|
/**
|
|
@@ -58,36 +74,41 @@ export class PivotGridComponent {
|
|
|
58
74
|
ngAfterViewInit() {
|
|
59
75
|
if (isDocumentAvailable()) {
|
|
60
76
|
this.zone.runOutsideAngular(() => {
|
|
61
|
-
const rowHeadersTable =
|
|
77
|
+
const rowHeadersTable = this.rowHeadersTable.nativeElement.firstElementChild;
|
|
62
78
|
const headerColsResizeObserver = new ResizeObserver(() => this.resizeContainer('Columns', rowHeadersTable));
|
|
63
79
|
headerColsResizeObserver.observe(rowHeadersTable);
|
|
64
|
-
const colHeadersTable =
|
|
80
|
+
const colHeadersTable = this.colHeadersTable.nativeElement.firstElementChild;
|
|
65
81
|
const headerRowsResizeObserver = new ResizeObserver(() => this.resizeContainer('Rows', colHeadersTable));
|
|
66
82
|
headerRowsResizeObserver.observe(colHeadersTable);
|
|
67
83
|
this.resizeObservers = [headerColsResizeObserver, headerRowsResizeObserver];
|
|
84
|
+
this.subs.add(fromEvent(rowHeadersTable, 'wheel')
|
|
85
|
+
.pipe(mergeWith(fromEvent(colHeadersTable, 'wheel'), fromEvent(this.valuesTable.nativeElement, 'scroll'))).subscribe((ev) => this.handleScroll(ev)));
|
|
68
86
|
});
|
|
69
87
|
}
|
|
70
88
|
}
|
|
71
89
|
ngAfterContentInit() {
|
|
72
|
-
this.
|
|
90
|
+
this.subs.add(this.dataService.loading.subscribe(state => this.loading = state));
|
|
73
91
|
}
|
|
74
92
|
ngOnDestroy() {
|
|
75
93
|
this.resizeObservers.forEach(o => o.disconnect());
|
|
76
|
-
this.
|
|
94
|
+
this.subs.unsubscribe();
|
|
77
95
|
}
|
|
78
96
|
}
|
|
79
97
|
PivotGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.PivotGridDataService }, { token: i2.ScrollbarWidthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
80
98
|
PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: PivotGridComponent, selector: "kendo-pivotgrid", inputs: { loaderSettings: "loaderSettings" }, host: { properties: { "class.k-pivotgrid": "this.hostClass" } }, providers: [
|
|
81
99
|
PivotGridDataService
|
|
82
|
-
], ngImport: i0, template: `
|
|
100
|
+
], viewQueries: [{ propertyName: "colHeadersTable", first: true, predicate: ["colHeadersTable"], descendants: true, read: ElementRef }, { propertyName: "rowHeadersTable", first: true, predicate: ["rowHeadersTable"], descendants: true, read: ElementRef }, { propertyName: "valuesTable", first: true, predicate: ["valuesTable"], descendants: true, read: ElementRef }], ngImport: i0, template: `
|
|
83
101
|
<span class="k-pivotgrid-empty-cell"></span>
|
|
84
102
|
<kendo-pivotgrid-table
|
|
103
|
+
#colHeadersTable
|
|
85
104
|
class="k-pivotgrid-column-headers"
|
|
86
105
|
tableType="columnHeader"></kendo-pivotgrid-table>
|
|
87
106
|
<kendo-pivotgrid-table
|
|
107
|
+
#rowHeadersTable
|
|
88
108
|
class="k-pivotgrid-row-headers"
|
|
89
109
|
tableType="rowHeader"></kendo-pivotgrid-table>
|
|
90
110
|
<kendo-pivotgrid-table
|
|
111
|
+
#valuesTable
|
|
91
112
|
class="k-pivotgrid-values"
|
|
92
113
|
tableType="values"></kendo-pivotgrid-table>
|
|
93
114
|
|
|
@@ -110,12 +131,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
110
131
|
template: `
|
|
111
132
|
<span class="k-pivotgrid-empty-cell"></span>
|
|
112
133
|
<kendo-pivotgrid-table
|
|
134
|
+
#colHeadersTable
|
|
113
135
|
class="k-pivotgrid-column-headers"
|
|
114
136
|
tableType="columnHeader"></kendo-pivotgrid-table>
|
|
115
137
|
<kendo-pivotgrid-table
|
|
138
|
+
#rowHeadersTable
|
|
116
139
|
class="k-pivotgrid-row-headers"
|
|
117
140
|
tableType="rowHeader"></kendo-pivotgrid-table>
|
|
118
141
|
<kendo-pivotgrid-table
|
|
142
|
+
#valuesTable
|
|
119
143
|
class="k-pivotgrid-values"
|
|
120
144
|
tableType="values"></kendo-pivotgrid-table>
|
|
121
145
|
|
|
@@ -141,6 +165,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
141
165
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.PivotGridDataService }, { type: i2.ScrollbarWidthService }]; }, propDecorators: { hostClass: [{
|
|
142
166
|
type: HostBinding,
|
|
143
167
|
args: ['class.k-pivotgrid']
|
|
168
|
+
}], colHeadersTable: [{
|
|
169
|
+
type: ViewChild,
|
|
170
|
+
args: ['colHeadersTable', { read: ElementRef }]
|
|
171
|
+
}], rowHeadersTable: [{
|
|
172
|
+
type: ViewChild,
|
|
173
|
+
args: ['rowHeadersTable', { read: ElementRef }]
|
|
174
|
+
}], valuesTable: [{
|
|
175
|
+
type: ViewChild,
|
|
176
|
+
args: ['valuesTable', { read: ElementRef }]
|
|
144
177
|
}], loaderSettings: [{
|
|
145
178
|
type: Input
|
|
146
179
|
}] } });
|
|
@@ -38,7 +38,7 @@ export class PivotGridCellDirective {
|
|
|
38
38
|
this.dataService.columnHeaderLeaves[this.colIndex].total)),
|
|
39
39
|
'k-pivotgrid-header-root': this.kendoPivotGridCell.levelNum === 0,
|
|
40
40
|
'k-pivotgrid-expanded': this.kendoPivotGridCell.hasChildren && this.kendoPivotGridCell.children.length,
|
|
41
|
-
'k-first': this.colIndex
|
|
41
|
+
'k-first': this.colIndex > 0
|
|
42
42
|
};
|
|
43
43
|
for (let prop in classesToAdd) {
|
|
44
44
|
if (classesToAdd[prop]) {
|
package/esm2015/util.js
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2021 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
/**
|
|
6
|
+
* @hidden
|
|
7
|
+
*/
|
|
8
|
+
export const isPresent = (value) => value !== null && value !== undefined;
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
* Returns whether two arrays contain the same values.
|
|
12
|
+
* Assumes array elements are primitive types
|
|
13
|
+
*/
|
|
14
|
+
export const areSameArrays = (a1, a2) => {
|
|
15
|
+
const areArrays = (isPresent(a1) && Array.isArray(a1) && isPresent(a2) && Array.isArray(a2));
|
|
16
|
+
const areOfEqualLength = a1.length === a2.length;
|
|
17
|
+
if (!areArrays || !areOfEqualLength) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
for (let i = 0; i < a1.length; i++) {
|
|
21
|
+
if (a1[i] !== a2[i]) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* @hidden
|
|
29
|
+
*/
|
|
30
|
+
export const wheelDelta = (e, axis) => {
|
|
31
|
+
const delta = e[`wheelDelta${axis}`];
|
|
32
|
+
if (e.wheelDelta && (delta === undefined || delta)) {
|
|
33
|
+
return e.wheelDelta;
|
|
34
|
+
}
|
|
35
|
+
if (e.detail && e.axis === e[axis === 'X' ? 'HORIZONTAL_AXIS' : 'VERTICAL_AXIS']) {
|
|
36
|
+
return (-e.detail) * 10;
|
|
37
|
+
}
|
|
38
|
+
return 0;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* @hidden
|
|
42
|
+
*/
|
|
43
|
+
export const syncScroll = (source, targets) => {
|
|
44
|
+
const sourceScrollTop = source.scrollTop;
|
|
45
|
+
const sourceScrollLeft = source.scrollLeft;
|
|
46
|
+
const targetScrollTop = targets[0].scrollTop;
|
|
47
|
+
const targetScrollLeft = targets[1].scrollLeft;
|
|
48
|
+
const syncVertically = sourceScrollTop !== targetScrollTop;
|
|
49
|
+
const syncHorizontally = sourceScrollLeft !== targetScrollLeft;
|
|
50
|
+
if (syncVertically) {
|
|
51
|
+
targets[0].scrollTop = sourceScrollTop;
|
|
52
|
+
}
|
|
53
|
+
else if (syncHorizontally) {
|
|
54
|
+
targets[1].scrollLeft = sourceScrollLeft;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* @hidden
|
|
59
|
+
*/
|
|
60
|
+
export const syncWheel = (event, tables, prop, axis) => {
|
|
61
|
+
const delta = axis === 'Y' ? -(wheelDelta(event, axis)) : wheelDelta(event, axis);
|
|
62
|
+
if (delta) {
|
|
63
|
+
tables[0][prop] =
|
|
64
|
+
tables[1][prop] += delta;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
4
|
*-------------------------------------------------------------------------------------------*/
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
|
-
import { EventEmitter, Injectable, Output, Component, HostBinding, Input, Directive, NgModule } from '@angular/core';
|
|
6
|
+
import { EventEmitter, Injectable, Output, Component, HostBinding, Input, ElementRef, ViewChild, Directive, NgModule } from '@angular/core';
|
|
7
7
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
8
8
|
import * as i2$1 from '@progress/kendo-angular-common';
|
|
9
9
|
import { isDocumentAvailable, anyChanged, EventsModule } from '@progress/kendo-angular-common';
|
|
10
10
|
import { toTree, toRows, toColumns, toData, HEADERS_ACTION, headersReducer, createDataTree, createLocalDataState, rootFields, fetchData, createDataState } from '@progress/kendo-pivotgrid-common';
|
|
11
|
-
export
|
|
12
|
-
import { BehaviorSubject, Subscription } from 'rxjs';
|
|
11
|
+
export * from '@progress/kendo-pivotgrid-common';
|
|
12
|
+
import { BehaviorSubject, Subscription, fromEvent } from 'rxjs';
|
|
13
|
+
import { mergeWith } from 'rxjs/operators';
|
|
13
14
|
import * as i2 from '@angular/common';
|
|
14
15
|
import { CommonModule } from '@angular/common';
|
|
15
16
|
import * as i4 from '@progress/kendo-angular-indicators';
|
|
@@ -23,7 +24,7 @@ const packageMetadata = {
|
|
|
23
24
|
name: '@progress/kendo-angular-pivotgrid',
|
|
24
25
|
productName: 'Kendo UI for Angular',
|
|
25
26
|
productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
|
|
26
|
-
publishDate:
|
|
27
|
+
publishDate: 1652457707,
|
|
27
28
|
version: '',
|
|
28
29
|
licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/?utm_medium=product&utm_source=kendoangular&utm_campaign=kendo-ui-angular-purchase-license-keys-warning'
|
|
29
30
|
};
|
|
@@ -47,7 +48,7 @@ class PivotGridDataService {
|
|
|
47
48
|
const columnsTree = toTree((this.columns || []).slice());
|
|
48
49
|
const [columnHeaderRows, columnHeaderLeaves, columnHeaderBreadth] = toColumns(columnsTree);
|
|
49
50
|
this.columnHeaderLeaves = columnHeaderLeaves;
|
|
50
|
-
this.columnHeaderCols.next(
|
|
51
|
+
this.columnHeaderCols.next(columnHeaderLeaves);
|
|
51
52
|
this.columnHeaderRows.next(columnHeaderRows);
|
|
52
53
|
this.rowHeaderLeaves = rowHeaderLeaves;
|
|
53
54
|
this.rowHeaderCols.next(new Array(rowHeaderBreadth).fill({}));
|
|
@@ -63,6 +64,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
63
64
|
type: Output
|
|
64
65
|
}] } });
|
|
65
66
|
|
|
67
|
+
/**
|
|
68
|
+
* @hidden
|
|
69
|
+
*/
|
|
70
|
+
const isPresent = (value) => value !== null && value !== undefined;
|
|
71
|
+
/**
|
|
72
|
+
* @hidden
|
|
73
|
+
* Returns whether two arrays contain the same values.
|
|
74
|
+
* Assumes array elements are primitive types
|
|
75
|
+
*/
|
|
76
|
+
const areSameArrays = (a1, a2) => {
|
|
77
|
+
const areArrays = (isPresent(a1) && Array.isArray(a1) && isPresent(a2) && Array.isArray(a2));
|
|
78
|
+
const areOfEqualLength = a1.length === a2.length;
|
|
79
|
+
if (!areArrays || !areOfEqualLength) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
for (let i = 0; i < a1.length; i++) {
|
|
83
|
+
if (a1[i] !== a2[i]) {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return true;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* @hidden
|
|
91
|
+
*/
|
|
92
|
+
const wheelDelta = (e, axis) => {
|
|
93
|
+
const delta = e[`wheelDelta${axis}`];
|
|
94
|
+
if (e.wheelDelta && (delta === undefined || delta)) {
|
|
95
|
+
return e.wheelDelta;
|
|
96
|
+
}
|
|
97
|
+
if (e.detail && e.axis === e[axis === 'X' ? 'HORIZONTAL_AXIS' : 'VERTICAL_AXIS']) {
|
|
98
|
+
return (-e.detail) * 10;
|
|
99
|
+
}
|
|
100
|
+
return 0;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* @hidden
|
|
104
|
+
*/
|
|
105
|
+
const syncScroll = (source, targets) => {
|
|
106
|
+
const sourceScrollTop = source.scrollTop;
|
|
107
|
+
const sourceScrollLeft = source.scrollLeft;
|
|
108
|
+
const targetScrollTop = targets[0].scrollTop;
|
|
109
|
+
const targetScrollLeft = targets[1].scrollLeft;
|
|
110
|
+
const syncVertically = sourceScrollTop !== targetScrollTop;
|
|
111
|
+
const syncHorizontally = sourceScrollLeft !== targetScrollLeft;
|
|
112
|
+
if (syncVertically) {
|
|
113
|
+
targets[0].scrollTop = sourceScrollTop;
|
|
114
|
+
}
|
|
115
|
+
else if (syncHorizontally) {
|
|
116
|
+
targets[1].scrollLeft = sourceScrollLeft;
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* @hidden
|
|
121
|
+
*/
|
|
122
|
+
const syncWheel = (event, tables, prop, axis) => {
|
|
123
|
+
const delta = axis === 'Y' ? -(wheelDelta(event, axis)) : wheelDelta(event, axis);
|
|
124
|
+
if (delta) {
|
|
125
|
+
tables[0][prop] =
|
|
126
|
+
tables[1][prop] += delta;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
|
|
66
130
|
/**
|
|
67
131
|
* @hidden
|
|
68
132
|
*/
|
|
@@ -94,7 +158,7 @@ class PivotGridCellDirective {
|
|
|
94
158
|
this.dataService.columnHeaderLeaves[this.colIndex].total)),
|
|
95
159
|
'k-pivotgrid-header-root': this.kendoPivotGridCell.levelNum === 0,
|
|
96
160
|
'k-pivotgrid-expanded': this.kendoPivotGridCell.hasChildren && this.kendoPivotGridCell.children.length,
|
|
97
|
-
'k-first': this.colIndex
|
|
161
|
+
'k-first': this.colIndex > 0
|
|
98
162
|
};
|
|
99
163
|
for (let prop in classesToAdd) {
|
|
100
164
|
if (classesToAdd[prop]) {
|
|
@@ -231,7 +295,7 @@ const DEFAULT_LOADER_SETTINGS = {
|
|
|
231
295
|
size: 'large'
|
|
232
296
|
};
|
|
233
297
|
/**
|
|
234
|
-
*
|
|
298
|
+
* Represents the Kendo UI PivotGrid component for Angular.
|
|
235
299
|
*/
|
|
236
300
|
class PivotGridComponent {
|
|
237
301
|
constructor(hostEl, zone, dataService, _scrollbarWidthService) {
|
|
@@ -241,7 +305,7 @@ class PivotGridComponent {
|
|
|
241
305
|
this.hostClass = true;
|
|
242
306
|
this.resizeObservers = [];
|
|
243
307
|
this._loaderSettings = DEFAULT_LOADER_SETTINGS;
|
|
244
|
-
this.
|
|
308
|
+
this.subs = new Subscription();
|
|
245
309
|
this.resizeContainer = (axis, element) => {
|
|
246
310
|
const isRows = axis === 'Rows';
|
|
247
311
|
const wrapper = this.hostEl.nativeElement;
|
|
@@ -249,6 +313,20 @@ class PivotGridComponent {
|
|
|
249
313
|
wrapper.style[`gridTemplate${axis}`] = '';
|
|
250
314
|
wrapper.style[`gridTemplate${axis}`] = `${element[size]}px 1fr`;
|
|
251
315
|
};
|
|
316
|
+
this.handleScroll = (event) => {
|
|
317
|
+
if (event.target === this.valuesTable.nativeElement) {
|
|
318
|
+
syncScroll(event.target, [
|
|
319
|
+
this.rowHeadersTable.nativeElement,
|
|
320
|
+
this.colHeadersTable.nativeElement
|
|
321
|
+
]);
|
|
322
|
+
}
|
|
323
|
+
else if (event.target.closest('.k-pivotgrid-row-headers')) {
|
|
324
|
+
syncWheel(event, [this.valuesTable.nativeElement, this.rowHeadersTable.nativeElement], 'scrollTop', 'Y');
|
|
325
|
+
}
|
|
326
|
+
else if (event.target.closest('.k-pivotgrid-column-headers')) {
|
|
327
|
+
syncWheel(event, [this.valuesTable.nativeElement, this.colHeadersTable.nativeElement], 'scrollLeft', 'X');
|
|
328
|
+
}
|
|
329
|
+
};
|
|
252
330
|
validatePackage(packageMetadata);
|
|
253
331
|
}
|
|
254
332
|
/**
|
|
@@ -269,36 +347,41 @@ class PivotGridComponent {
|
|
|
269
347
|
ngAfterViewInit() {
|
|
270
348
|
if (isDocumentAvailable()) {
|
|
271
349
|
this.zone.runOutsideAngular(() => {
|
|
272
|
-
const rowHeadersTable =
|
|
350
|
+
const rowHeadersTable = this.rowHeadersTable.nativeElement.firstElementChild;
|
|
273
351
|
const headerColsResizeObserver = new ResizeObserver(() => this.resizeContainer('Columns', rowHeadersTable));
|
|
274
352
|
headerColsResizeObserver.observe(rowHeadersTable);
|
|
275
|
-
const colHeadersTable =
|
|
353
|
+
const colHeadersTable = this.colHeadersTable.nativeElement.firstElementChild;
|
|
276
354
|
const headerRowsResizeObserver = new ResizeObserver(() => this.resizeContainer('Rows', colHeadersTable));
|
|
277
355
|
headerRowsResizeObserver.observe(colHeadersTable);
|
|
278
356
|
this.resizeObservers = [headerColsResizeObserver, headerRowsResizeObserver];
|
|
357
|
+
this.subs.add(fromEvent(rowHeadersTable, 'wheel')
|
|
358
|
+
.pipe(mergeWith(fromEvent(colHeadersTable, 'wheel'), fromEvent(this.valuesTable.nativeElement, 'scroll'))).subscribe((ev) => this.handleScroll(ev)));
|
|
279
359
|
});
|
|
280
360
|
}
|
|
281
361
|
}
|
|
282
362
|
ngAfterContentInit() {
|
|
283
|
-
this.
|
|
363
|
+
this.subs.add(this.dataService.loading.subscribe(state => this.loading = state));
|
|
284
364
|
}
|
|
285
365
|
ngOnDestroy() {
|
|
286
366
|
this.resizeObservers.forEach(o => o.disconnect());
|
|
287
|
-
this.
|
|
367
|
+
this.subs.unsubscribe();
|
|
288
368
|
}
|
|
289
369
|
}
|
|
290
370
|
PivotGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PivotGridComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: PivotGridDataService }, { token: i2$1.ScrollbarWidthService }], target: i0.ɵɵFactoryTarget.Component });
|
|
291
371
|
PivotGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: PivotGridComponent, selector: "kendo-pivotgrid", inputs: { loaderSettings: "loaderSettings" }, host: { properties: { "class.k-pivotgrid": "this.hostClass" } }, providers: [
|
|
292
372
|
PivotGridDataService
|
|
293
|
-
], ngImport: i0, template: `
|
|
373
|
+
], viewQueries: [{ propertyName: "colHeadersTable", first: true, predicate: ["colHeadersTable"], descendants: true, read: ElementRef }, { propertyName: "rowHeadersTable", first: true, predicate: ["rowHeadersTable"], descendants: true, read: ElementRef }, { propertyName: "valuesTable", first: true, predicate: ["valuesTable"], descendants: true, read: ElementRef }], ngImport: i0, template: `
|
|
294
374
|
<span class="k-pivotgrid-empty-cell"></span>
|
|
295
375
|
<kendo-pivotgrid-table
|
|
376
|
+
#colHeadersTable
|
|
296
377
|
class="k-pivotgrid-column-headers"
|
|
297
378
|
tableType="columnHeader"></kendo-pivotgrid-table>
|
|
298
379
|
<kendo-pivotgrid-table
|
|
380
|
+
#rowHeadersTable
|
|
299
381
|
class="k-pivotgrid-row-headers"
|
|
300
382
|
tableType="rowHeader"></kendo-pivotgrid-table>
|
|
301
383
|
<kendo-pivotgrid-table
|
|
384
|
+
#valuesTable
|
|
302
385
|
class="k-pivotgrid-values"
|
|
303
386
|
tableType="values"></kendo-pivotgrid-table>
|
|
304
387
|
|
|
@@ -321,12 +404,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
321
404
|
template: `
|
|
322
405
|
<span class="k-pivotgrid-empty-cell"></span>
|
|
323
406
|
<kendo-pivotgrid-table
|
|
407
|
+
#colHeadersTable
|
|
324
408
|
class="k-pivotgrid-column-headers"
|
|
325
409
|
tableType="columnHeader"></kendo-pivotgrid-table>
|
|
326
410
|
<kendo-pivotgrid-table
|
|
411
|
+
#rowHeadersTable
|
|
327
412
|
class="k-pivotgrid-row-headers"
|
|
328
413
|
tableType="rowHeader"></kendo-pivotgrid-table>
|
|
329
414
|
<kendo-pivotgrid-table
|
|
415
|
+
#valuesTable
|
|
330
416
|
class="k-pivotgrid-values"
|
|
331
417
|
tableType="values"></kendo-pivotgrid-table>
|
|
332
418
|
|
|
@@ -352,6 +438,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
|
|
|
352
438
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: PivotGridDataService }, { type: i2$1.ScrollbarWidthService }]; }, propDecorators: { hostClass: [{
|
|
353
439
|
type: HostBinding,
|
|
354
440
|
args: ['class.k-pivotgrid']
|
|
441
|
+
}], colHeadersTable: [{
|
|
442
|
+
type: ViewChild,
|
|
443
|
+
args: ['colHeadersTable', { read: ElementRef }]
|
|
444
|
+
}], rowHeadersTable: [{
|
|
445
|
+
type: ViewChild,
|
|
446
|
+
args: ['rowHeadersTable', { read: ElementRef }]
|
|
447
|
+
}], valuesTable: [{
|
|
448
|
+
type: ViewChild,
|
|
449
|
+
args: ['valuesTable', { read: ElementRef }]
|
|
355
450
|
}], loaderSettings: [{
|
|
356
451
|
type: Input
|
|
357
452
|
}] } });
|
package/main.d.ts
CHANGED
|
@@ -8,4 +8,4 @@ export { PivotGridCellDirective } from './rendering/pivotgrid-cell.directive';
|
|
|
8
8
|
export { PivotGridTableComponent } from './rendering/pivotgrid-table.component';
|
|
9
9
|
export { PivotLocalBindingDirective } from './data-binding/local-binding.directive';
|
|
10
10
|
export { PivotOLAPBindingDirective } from './data-binding/olap-binding.directive';
|
|
11
|
-
export
|
|
11
|
+
export * from '@progress/kendo-pivotgrid-common';
|
package/package.json
CHANGED
package/pivotgrid.component.d.ts
CHANGED
|
@@ -8,13 +8,16 @@ import { PivotGridDataService } from './data-binding/pivotgrid-data.service';
|
|
|
8
8
|
import { LoaderSettings } from './models/loader-settings';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
11
|
+
* Represents the Kendo UI PivotGrid component for Angular.
|
|
12
12
|
*/
|
|
13
13
|
export declare class PivotGridComponent implements AfterViewInit, AfterContentInit, OnDestroy {
|
|
14
14
|
private hostEl;
|
|
15
15
|
private zone;
|
|
16
16
|
private dataService;
|
|
17
17
|
hostClass: boolean;
|
|
18
|
+
private colHeadersTable;
|
|
19
|
+
private rowHeadersTable;
|
|
20
|
+
private valuesTable;
|
|
18
21
|
/**
|
|
19
22
|
* Specify the type, size and color of the PivotGrid's loader.
|
|
20
23
|
*
|
|
@@ -28,12 +31,13 @@ export declare class PivotGridComponent implements AfterViewInit, AfterContentIn
|
|
|
28
31
|
loading: boolean;
|
|
29
32
|
private resizeObservers;
|
|
30
33
|
private _loaderSettings;
|
|
31
|
-
private
|
|
34
|
+
private subs;
|
|
32
35
|
constructor(hostEl: ElementRef, zone: NgZone, dataService: PivotGridDataService, _scrollbarWidthService: ScrollbarWidthService);
|
|
33
36
|
ngAfterViewInit(): void;
|
|
34
37
|
ngAfterContentInit(): void;
|
|
35
38
|
ngOnDestroy(): void;
|
|
36
39
|
private resizeContainer;
|
|
40
|
+
private handleScroll;
|
|
37
41
|
static ɵfac: i0.ɵɵFactoryDeclaration<PivotGridComponent, never>;
|
|
38
42
|
static ɵcmp: i0.ɵɵComponentDeclaration<PivotGridComponent, "kendo-pivotgrid", never, { "loaderSettings": "loaderSettings"; }, {}, never, never>;
|
|
39
43
|
}
|
package/util.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**-----------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright © 2021 Progress Software Corporation. All rights reserved.
|
|
3
|
+
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
+
*-------------------------------------------------------------------------------------------*/
|
|
5
|
+
/**
|
|
6
|
+
* @hidden
|
|
7
|
+
*/
|
|
8
|
+
export declare const isPresent: (value: any) => boolean;
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
* Returns whether two arrays contain the same values.
|
|
12
|
+
* Assumes array elements are primitive types
|
|
13
|
+
*/
|
|
14
|
+
export declare const areSameArrays: (a1: any[], a2: any[]) => boolean;
|
|
15
|
+
/**
|
|
16
|
+
* @hidden
|
|
17
|
+
*/
|
|
18
|
+
export declare const wheelDelta: (e: any, axis: 'X' | 'Y') => number;
|
|
19
|
+
/**
|
|
20
|
+
* @hidden
|
|
21
|
+
*/
|
|
22
|
+
export declare const syncScroll: (source: HTMLTableElement, targets: HTMLTableElement[]) => void;
|
|
23
|
+
/**
|
|
24
|
+
* @hidden
|
|
25
|
+
*/
|
|
26
|
+
export declare const syncWheel: (event: Event, tables: Element[], prop: 'scrollTop' | 'scrollLeft', axis: 'X' | 'Y') => void;
|