Skip to content

Commit 178aa56

Browse files
authored
Merge branch 'pivot-grid-master' into mdragnev/row-dimensions
2 parents a97df61 + cf14977 commit 178aa56

File tree

12 files changed

+6621
-5
lines changed

12 files changed

+6621
-5
lines changed

projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.component.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {
22
AfterContentInit,
3+
AfterViewInit,
34
ChangeDetectionStrategy,
45
Component,
56
forwardRef,
@@ -45,7 +46,7 @@ const MINIMUM_COLUMN_WIDTH = 200;
4546
]
4647
})
4748
export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnInit, AfterContentInit,
48-
GridType {
49+
GridType, AfterViewInit {
4950

5051
/** @hidden @internal */
5152
@ViewChild(IgxPivotHeaderRowComponent, { static: true })
@@ -109,6 +110,12 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
109110
});
110111
}
111112

113+
public ngAfterViewInit() {
114+
Promise.resolve().then(() => {
115+
super.ngAfterViewInit();
116+
});
117+
}
118+
112119
/** @hidden */
113120
public featureColumnsWidth() {
114121
return this.pivotRowWidths;
@@ -328,6 +335,8 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
328335
ref.instance.header = parent != null ? key.split(parent.header + '-')[1] : key;
329336
ref.instance.field = key;
330337
ref.instance.parent = parent;
338+
ref.instance.dataType = this.pivotConfiguration.values[0]?.dataType || this.resolveDataTypes(data[0][key]);
339+
ref.instance.formatter = this.pivotConfiguration.values[0]?.formatter;
331340
ref.changeDetectorRef.detectChanges();
332341
columns.push(ref.instance);
333342
if (this.hasMultipleValues) {
@@ -348,9 +357,10 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
348357
const refSibling = factoryColumn.create(this.viewRef.injector);
349358
refSibling.instance.header = parent != null ? key.split(parent.header + '-')[1] : key;
350359
refSibling.instance.field = key;
351-
refSibling.instance.dataType = this.resolveDataTypes(data[0][key]);
352360
refSibling.instance.parent = parent;
353361
refSibling.instance.hidden = true;
362+
refSibling.instance.dataType = this.pivotConfiguration.values[0]?.dataType || this.resolveDataTypes(data[0][key]);
363+
refSibling.instance.formatter = this.pivotConfiguration.values[0]?.formatter;
354364
columns.push(refSibling.instance);
355365
}
356366
const children = this.generateColumnHierarchy(value.children, data, ref.instance);

projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.interface.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { GridColumnDataType } from '../../data-operations/data-util';
12
import { FilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
23
import { IPivotDimensionStrategy } from '../../data-operations/pivot-strategy';
34

@@ -40,7 +41,7 @@ export interface IPivotValue {
4041
// Allow conditionally styling of the IgxPivotGrid cells
4142
styles?: any;
4243
// Enables a data type specific template of the cells
43-
dataType?: string;
44+
dataType?: GridColumnDataType;
4445
// Applies display format to cell values.
4546
formatter?: (value: any, rowData?: any) => any;
4647
}

projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-header-row.component.html

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@
55
<div class="igx-grid__tr" role="row" [style.width.px]="width">
66

77
<ng-container *ngIf="!row">
8-
<div #pivotContainer class="igx-grid__tr-action" [style.min-width.px] = "grid.pivotRowWidths"
8+
<div #pivotContainer class="igx-grid__tr-action" [style.min-width.px] = "grid.pivotRowWidths"
99
(pointerdown)="$event.preventDefault()">
10-
1110
</div>
1211
</ng-container>
1312

projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-row.component.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,10 @@ export class IgxPivotRowComponent extends IgxRowDirective<IgxPivotGridComponent>
8989
}
9090

9191
public getCellClass(col: any) {
92+
const configuration = this.grid.pivotConfiguration;
93+
if (configuration.values.length === 1) {
94+
return configuration.values[0].styles;
95+
}
9296
const colName = col.field.split('-');
9397
const measureName = colName[colName.length - 1];
9498
return this.grid.pivotConfiguration.values.find(v => v.member === measureName)?.styles;

src/app/app.component.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,11 @@ export class AppComponent implements OnInit {
540540
icon: 'view_column',
541541
name: 'Pivot Grid'
542542
},
543+
{
544+
link: '/pivot-hierarchy',
545+
icon: 'view_column',
546+
name: 'Pivot Grid Hierarchy'
547+
},
543548
{
544549
link: '/pivot-noop',
545550
icon: 'view_column',

src/app/app.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ import { TreeGridGroupBySampleComponent } from './tree-grid-groupby/tree-grid-gr
156156
import { PaginationSampleComponent } from './pagination/pagination.component';
157157
import { GridCellAPISampleComponent } from './grid-cell-api/grid-cell-api.sample';
158158
import { PivotGridSampleComponent } from './pivot-grid/pivot-grid.sample';
159+
import { PivotGridHierarchySampleComponent } from './pivot-grid-hierarchy/pivot-grid-hierarchy.sample';
159160
import { PivotGridNoopSampleComponent } from './pivot-grid-noop/pivot-grid-noop.sample';
160161
import { IgxStepperSampleComponent } from './stepper/stepper.sample';
161162

@@ -294,6 +295,7 @@ const components = [
294295
GridColumnTypesSampleComponent,
295296
GridLocalizationSampleComponent,
296297
PivotGridSampleComponent,
298+
PivotGridHierarchySampleComponent,
297299
PivotGridNoopSampleComponent,
298300
IgxStepperSampleComponent
299301
];

src/app/app.routing.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ import { TreeGridGroupBySampleComponent } from './tree-grid-groupby/tree-grid-gr
9696
import { PaginationSampleComponent } from './pagination/pagination.component';
9797
import { GridCellAPISampleComponent } from './grid-cell-api/grid-cell-api.sample';
9898
import { PivotGridSampleComponent } from './pivot-grid/pivot-grid.sample';
99+
import { PivotGridHierarchySampleComponent } from './pivot-grid-hierarchy/pivot-grid-hierarchy.sample';
99100
import { PivotGridNoopSampleComponent } from './pivot-grid-noop/pivot-grid-noop.sample';
100101
import { IgxStepperSampleComponent } from './stepper/stepper.sample';
101102

@@ -454,6 +455,10 @@ const appRoutes = [
454455
path: 'pivot',
455456
component: PivotGridSampleComponent
456457
},
458+
{
459+
path: 'pivotHierarchy',
460+
component: PivotGridHierarchySampleComponent
461+
},
457462
{
458463
path: 'pivot-noop',
459464
component: PivotGridNoopSampleComponent
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<div class="sample-column">
2+
<igx-pivot-grid #grid1 [data]="origData" [pivotConfiguration]="pivotConfigHierarchy">
3+
</igx-pivot-grid>
4+
</div>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
:host ::ng-deep {
2+
.upFont {
3+
color: green;
4+
}
5+
6+
.downFont {
7+
color:red;
8+
}
9+
10+
.upFont1 {
11+
color: blue;
12+
}
13+
14+
.downFont1 {
15+
color:yellow;
16+
}
17+
18+
.sample-column {
19+
max-width: 900px;
20+
}
21+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import { Component, ViewChild } from '@angular/core';
2+
import { IgxNumberSummaryOperand, IgxPivotGridComponent, IPivotConfiguration } from 'igniteui-angular';
3+
import { DATA } from '../shared/pivot-data';
4+
5+
@Component({
6+
providers: [],
7+
selector: 'app-pivot-grid-hierarchy-sample',
8+
styleUrls: ['pivot-grid-hierarchy.sample.scss'],
9+
templateUrl: 'pivot-grid-hierarchy.sample.html'
10+
})
11+
12+
export class PivotGridHierarchySampleComponent {
13+
@ViewChild('grid1', { static: true }) public grid1: IgxPivotGridComponent;
14+
15+
public pivotConfigHierarchy: IPivotConfiguration = {
16+
columns: [{
17+
member: () => 'All',
18+
enabled: true,
19+
childLevel:
20+
{
21+
22+
member: (data) => data.Product.Name,
23+
enabled: true,
24+
childLevel:
25+
{
26+
member: (data) => data.Seller.City,
27+
enabled: true,
28+
}
29+
30+
}
31+
},
32+
],
33+
rows: [{
34+
member: () => 'All',
35+
enabled: true,
36+
childLevel:
37+
{
38+
member: (data) => data.Seller.Name,
39+
enabled: true,
40+
}
41+
}],
42+
values: [
43+
{
44+
member: 'NumberOfUnits',
45+
aggregate: IgxNumberSummaryOperand.sum,
46+
enabled: true
47+
48+
}, {
49+
member: 'Value',
50+
aggregate: IgxNumberSummaryOperand.sum,
51+
enabled: true,
52+
formatter: (val) => val ? parseFloat(val).toFixed(2) : undefined
53+
}
54+
],
55+
filters: null
56+
};
57+
58+
public origData = DATA;
59+
}

0 commit comments

Comments
 (0)