Skip to content

Commit 91260c0

Browse files
committed
Merge branch 'pivot-grid-master' of https://github.com/IgniteUI/igniteui-angular into mdragnev/pivot-api-hiding
2 parents e375873 + cf14977 commit 91260c0

File tree

12 files changed

+6624
-6
lines changed

12 files changed

+6624
-6
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
EventEmitter,
@@ -58,7 +59,7 @@ const MINIMUM_COLUMN_WIDTH = 200;
5859
]
5960
})
6061
export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnInit, AfterContentInit,
61-
GridType {
62+
GridType, AfterViewInit {
6263

6364
/** @hidden @internal */
6465
@ViewChild(IgxPivotHeaderRowComponent, { static: true })
@@ -390,6 +391,12 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
390391
});
391392
}
392393

394+
public ngAfterViewInit() {
395+
Promise.resolve().then(() => {
396+
super.ngAfterViewInit();
397+
});
398+
}
399+
393400
/** @hidden */
394401
public featureColumnsWidth() {
395402
return this.pivotRowWidths;
@@ -808,6 +815,8 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
808815
ref.instance.header = parent != null ? key.split(parent.header + '-')[1] : key;
809816
ref.instance.field = key;
810817
ref.instance.parent = parent;
818+
ref.instance.dataType = this.pivotConfiguration.values[0]?.dataType || this.resolveDataTypes(data[0][key]);
819+
ref.instance.formatter = this.pivotConfiguration.values[0]?.formatter;
811820
ref.changeDetectorRef.detectChanges();
812821
columns.push(ref.instance);
813822
if (this.hasMultipleValues) {
@@ -828,9 +837,10 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
828837
const refSibling = factoryColumn.create(this.viewRef.injector);
829838
refSibling.instance.header = parent != null ? key.split(parent.header + '-')[1] : key;
830839
refSibling.instance.field = key;
831-
refSibling.instance.dataType = this.resolveDataTypes(data[0][key]);
832840
refSibling.instance.parent = parent;
833841
refSibling.instance.hidden = true;
842+
refSibling.instance.dataType = this.pivotConfiguration.values[0]?.dataType || this.resolveDataTypes(data[0][key]);
843+
refSibling.instance.formatter = this.pivotConfiguration.values[0]?.formatter;
834844
columns.push(refSibling.instance);
835845
}
836846
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: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,10 @@ export class IgxPivotRowComponent extends IgxRowDirective<IgxPivotGridComponent>
8888
}
8989

9090
public getCellClass(col: any) {
91+
const configuration = this.grid.pivotConfiguration;
92+
if (configuration.values.length === 1) {
93+
return configuration.values[0].styles;
94+
}
9195
const colName = col.field.split('-');
9296
const measureName = colName[colName.length - 1];
9397
return this.grid.pivotConfiguration.values.find(v => v.member === measureName)?.styles;
@@ -111,7 +115,9 @@ export class IgxPivotRowComponent extends IgxRowDirective<IgxPivotGridComponent>
111115
let header = null;
112116
if (typeof dim.member === 'string') {
113117
header = this.rowData[dim.member];
114-
} else if (typeof dim.member === 'function'){
118+
} else if (typeof dim.member === 'function' && dim.fieldName) {
119+
header = this.rowData[dim.fieldName];
120+
} else {
115121
header = dim.member.call(this, this.rowData);
116122
}
117123
const col = this._createColComponent(field, header, index, dim, lvl);

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)