Skip to content

Commit f5e5b8f

Browse files
MKirovaMKirova
authored andcommitted
Merge from base.
2 parents 6753035 + 6e822f9 commit f5e5b8f

File tree

8 files changed

+790
-111
lines changed

8 files changed

+790
-111
lines changed

projects/igniteui-angular/src/lib/grids/grid-base.directive.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2704,6 +2704,7 @@ export abstract class IgxGridBaseDirective extends DisplayDensityBase implements
27042704
protected _transactions: TransactionService<Transaction, State>;
27052705
protected _batchEditing = false;
27062706
protected _autoGeneratedCols = [];
2707+
protected _dataView = [];
27072708

27082709
/** @hidden @internal */
27092710
public get paginator() {
@@ -2763,7 +2764,6 @@ export abstract class IgxGridBaseDirective extends DisplayDensityBase implements
27632764
private _unpinnedWidth = NaN;
27642765
private _visibleColumns = [];
27652766
private _columnGroups = false;
2766-
private _dataView = [];
27672767

27682768
private _columnWidth: string;
27692769

@@ -3447,7 +3447,7 @@ export abstract class IgxGridBaseDirective extends DisplayDensityBase implements
34473447
this._filteredSortedData = data;
34483448
this.refreshSearch(true, false);
34493449
}
3450-
this.buildDataView();
3450+
this.buildDataView(data);
34513451
}
34523452

34533453
/**
@@ -6925,7 +6925,7 @@ export abstract class IgxGridBaseDirective extends DisplayDensityBase implements
69256925
column.resetCaches();
69266926
}
69276927

6928-
private buildDataView() {
6928+
protected buildDataView(data: any[]) {
69296929
this._dataView = this.isRowPinningToTop ?
69306930
[...this.pinnedDataView, ...this.unpinnedDataView] :
69316931
[...this.unpinnedDataView, ...this.pinnedDataView];

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1014,6 +1014,10 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
10141014
protected calcGridHeadRow() {
10151015
}
10161016

1017+
protected buildDataView(data: any[]) {
1018+
this._dataView = data;
1019+
}
1020+
10171021
/**
10181022
* @hidden @internal
10191023
*/

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

Lines changed: 733 additions & 85 deletions
Large diffs are not rendered by default.

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Pipe, PipeTransform } from '@angular/core';
1+
import { Inject, Pipe, PipeTransform } from '@angular/core';
22
import { cloneArray } from '../../core/utils';
33
import { DataUtil } from '../../data-operations/data-util';
44
import { FilteringExpressionsTree, IFilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
@@ -11,7 +11,7 @@ import {
1111
import { PivotUtil } from './pivot-util';
1212
import { FilteringLogic } from '../../data-operations/filtering-expression.interface';
1313
import { ISortingExpression, SortingDirection } from '../../data-operations/sorting-strategy';
14-
import { GridType } from '../common/grid.interface';
14+
import { GridType, IGX_GRID_BASE } from '../common/grid.interface';
1515
import { GridBaseAPIService } from '../api.service';
1616
import { IgxGridBaseDirective } from '../grid-base.directive';
1717
import { IGridSortingStrategy } from '../common/strategy';
@@ -51,7 +51,7 @@ export class IgxPivotRowPipe implements PipeTransform {
5151
})
5252
export class IgxPivotRowExpansionPipe implements PipeTransform {
5353

54-
constructor() { }
54+
constructor(@Inject(IGX_GRID_BASE) private grid?: GridType) { }
5555

5656
public transform(
5757
collection: any[],
@@ -74,6 +74,10 @@ export class IgxPivotRowExpansionPipe implements PipeTransform {
7474
}
7575
const finalData = config.columnStrategy ? data : data.filter(x => x[pivotKeys.records]);
7676
this.cleanState(finalData, pivotKeys);
77+
78+
if (this.grid) {
79+
this.grid.setFilteredSortedData(finalData, false);
80+
}
7781
return finalData;
7882
}
7983

@@ -168,7 +172,6 @@ export class IgxPivotGridFilterPipe implements PipeTransform {
168172
pure: true
169173
})
170174
export class IgxPivotGridColumnSortingPipe implements PipeTransform {
171-
172175
public transform(
173176
collection: any[],
174177
expressions: ISortingExpression[],

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ describe('Basic IgxPivotGrid #pivotGrid', () => {
456456
pivotGrid.setupColumns();
457457
fixture.detectChanges();
458458
const headerRow = fixture.nativeElement.querySelector('igx-pivot-header-row');
459-
const valueChip = headerRow.querySelector('igx-chip[id="AmountOfSale"]');
459+
const valueChip = headerRow.querySelector('igx-chip[id="Amount of Sale"]');
460460
let content = valueChip.querySelector('.igx-chip__content');
461461
expect(content.textContent.trim()).toBe('SUM(Amount of Sale)');
462462

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353

5454
<!-- Value area -->
5555
<igx-chips-area #valueArea droppable='true'>
56-
<igx-chip #currChip *ngFor="let value of grid.values" [draggable]="true" [id]="value.member"
56+
<igx-chip #currChip *ngFor="let value of grid.values" [draggable]="true" [id]="value.displayName || value.member"
5757
[displayDensity]="grid.displayDensity"
5858
[removable]="true" (remove)="valueRemoved($event)"
5959
(dragLeave)="onDimDragLeave($event)"

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

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent {
8484
row.enabled = false;
8585
this.grid.pipeTrigger++;
8686
this.grid.filteringService.clearFilter(row.memberName);
87-
this.grid.dimensionsChange.emit({dimensions: this.grid.pivotConfiguration.rows, dimensionCollectionType: PivotDimensionType.Row});
87+
this.grid.dimensionsChange.emit({ dimensions: this.grid.pivotConfiguration.rows, dimensionCollectionType: PivotDimensionType.Row });
8888
}
8989

9090
public columnRemoved(event: IBaseChipEventArgs) {
@@ -93,23 +93,23 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent {
9393
this.grid.setupColumns();
9494
this.grid.filteringService.clearFilter(col.memberName);
9595
this.grid.pipeTrigger++;
96-
this.grid.dimensionsChange.emit({dimensions: this.grid.pivotConfiguration.columns, dimensionCollectionType: PivotDimensionType.Row});
96+
this.grid.dimensionsChange.emit({ dimensions: this.grid.pivotConfiguration.columns, dimensionCollectionType: PivotDimensionType.Row });
9797
}
9898

9999
public valueRemoved(event: IBaseChipEventArgs) {
100-
const value = this.grid.pivotConfiguration.values.find(x => x.member === event.owner.id);
100+
const value = this.grid.pivotConfiguration.values.find(x => x.member === event.owner.id || x.displayName === event.owner.id);
101101
value.enabled = false;
102102
this.grid.setupColumns();
103103
this.grid.pipeTrigger++;
104-
this.grid.valuesChange.emit({values: this.grid.pivotConfiguration.values});
104+
this.grid.valuesChange.emit({ values: this.grid.pivotConfiguration.values });
105105
}
106106

107107
public filterRemoved(event: IBaseChipEventArgs) {
108108
const filter = this.grid.pivotConfiguration.filters.find(x => x.memberName === event.owner.id);
109109
filter.enabled = false;
110110
this.grid.filteringService.clearFilter(filter.memberName);
111111
this.grid.pipeTrigger++;
112-
this.grid.dimensionsChange.emit({dimensions: this.grid.pivotConfiguration.filters, dimensionCollectionType: PivotDimensionType.Filter});
112+
this.grid.dimensionsChange.emit({ dimensions: this.grid.pivotConfiguration.filters, dimensionCollectionType: PivotDimensionType.Filter });
113113
}
114114

115115
public onFilteringIconPointerDown(event) {
@@ -122,7 +122,7 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent {
122122
event.preventDefault();
123123
let dim = dimension;
124124
let col;
125-
while(dim) {
125+
while (dim) {
126126
col = this.grid.dimensionDataColumns.find(x => x.field === dim.memberName || x.field === dim.member);
127127
if (col) {
128128
break;
@@ -162,10 +162,10 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent {
162162
dimension.sortDirection = SortingDirection.None;
163163
}
164164
dimension.sortDirection = dimension.sortDirection + 1 > SortingDirection.Desc ?
165-
SortingDirection.None : dimension.sortDirection + 1;
165+
SortingDirection.None : dimension.sortDirection + 1;
166166
// apply same sort direction to children.
167167
let dim = dimension;
168-
while(dim.childLevel) {
168+
while (dim.childLevel) {
169169
dim.childLevel.sortDirection = dimension.sortDirection;
170170
dim = dim.childLevel;
171171
}
@@ -176,8 +176,9 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent {
176176
}
177177

178178
public onDimDragOver(event, dimension?: PivotDimensionType) {
179-
const typeMismatch = dimension !== undefined ? this.grid.pivotConfiguration.values.find(x => x.member === event.dragChip.id) :
180-
!this.grid.pivotConfiguration.values.find(x => x.member === event.dragChip.id);
179+
const typeMismatch = dimension !== undefined ? this.grid.pivotConfiguration.values.find(x => x.member === event.dragChip.id
180+
|| x.displayName === event.dragChip.id) :
181+
!this.grid.pivotConfiguration.values.find(x => x.member === event.dragChip.id || x.displayName === event.dragChip.id);
181182
if (typeMismatch) {
182183
// cannot drag between dimensions and value
183184
return;
@@ -211,8 +212,8 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent {
211212

212213
public onAreaDragEnter(event, area, dimension?: PivotDimensionType) {
213214
const dragId = event.detail.owner.element.nativeElement.parentElement.id;
214-
const typeMismatch = dimension !== undefined ? this.grid.pivotConfiguration.values.find(x => x.member === dragId) :
215-
!this.grid.pivotConfiguration.values.find(x => x.member === dragId);
215+
const typeMismatch = dimension !== undefined ? this.grid.pivotConfiguration.values.find(x => x.member === dragId || x.displayName === dragId) :
216+
!this.grid.pivotConfiguration.values.find(x => x.member === dragId || x.displayName === dragId);
216217
if (typeMismatch) {
217218
// cannot drag between dimensions and value
218219
return;
@@ -240,14 +241,15 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent {
240241
const currentDim = this.grid.pivotConfiguration.values;
241242
const dragId = event.dragChip?.id || event.dragData?.chip.id;
242243
const chipsArray = area.chipsList.toArray();
243-
const chipIndex = chipsArray.indexOf(event.owner) !== -1 ? chipsArray.indexOf(event.owner) : chipsArray.length;
244-
const newDim = currentDim.find(x => x.member === dragId);
244+
let chipIndex = chipsArray.indexOf(event.owner) !== -1 ? chipsArray.indexOf(event.owner) : chipsArray.length;
245+
chipIndex = this._dropPos === DropPosition.AfterDropTarget ? chipIndex + 1 : chipIndex;
246+
const newDim = currentDim.find(x => x.member === dragId || x.displayName === dragId);
245247
if (newDim) {
246248
const dragChipIndex = chipsArray.indexOf(event.dragChip || event.dragData.chip);
247249
currentDim.splice(dragChipIndex, 1);
248-
currentDim.splice(dragChipIndex > chipIndex ? chipIndex : chipIndex - 1, 0, newDim);
250+
currentDim.splice(dragChipIndex >= chipIndex ? chipIndex : chipIndex - 1, 0, newDim);
249251
this.grid.setupColumns();
250-
this.grid.valuesChange.emit({values: this.grid.pivotConfiguration.values});
252+
this.grid.valuesChange.emit({ values: this.grid.pivotConfiguration.values });
251253
}
252254
}
253255

@@ -304,7 +306,7 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent {
304306
this.grid.setupColumns();
305307
}
306308
this.grid.pipeTrigger++;
307-
this.grid.dimensionsChange.emit({dimensions: currentDim, dimensionCollectionType: dimension});
309+
this.grid.dimensionsChange.emit({ dimensions: currentDim, dimensionCollectionType: dimension });
308310
}
309311

310312
protected getDimensionsByType(dimension: PivotDimensionType) {
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { DEFAULT_PIVOT_KEYS, IPivotDimension } from '../grids/pivot-grid/pivot-grid.interface';
2+
import { PivotUtil } from '../grids/pivot-grid/pivot-util';
3+
4+
export class PivotGridFunctions {
5+
/* Extract the value populated for each record for the given dimension and its children.*/
6+
public static getDimensionData(data: any[], dimensions: IPivotDimension[]) {
7+
return data.map(x => {
8+
const obj = {};
9+
for (let dim of dimensions) {
10+
const dimData = PivotUtil.getDimensionLevel(dim, x, DEFAULT_PIVOT_KEYS);
11+
const field = dimData.dimension.memberName;
12+
const value = x[field];
13+
obj[field] = value;
14+
}
15+
return obj;
16+
});
17+
}
18+
19+
public static checkUniqueValuesCount(data: any[], value: string, count:number) {
20+
expect(data.filter(x => x === data).length).toBe(count);
21+
}
22+
}

0 commit comments

Comments
 (0)