Skip to content

Commit 5395368

Browse files
committed
fix(pivot): Fix specifying filter in dimensions
1 parent 6e822f9 commit 5395368

File tree

6 files changed

+65
-13
lines changed

6 files changed

+65
-13
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ import { FilteringLogic, IFilteringExpression } from '../data-operations/filteri
4343
import { IGroupByRecord } from '../data-operations/groupby-record.interface';
4444
import { IgxGridForOfDirective } from '../directives/for-of/for_of.directive';
4545
import { IgxTextHighlightDirective } from '../directives/text-highlight/text-highlight.directive';
46-
import { IgxSummaryOperand, ISummaryExpression } from './summaries/grid-summary';
46+
import { ISummaryExpression } from './summaries/grid-summary';
4747
import { RowEditPositionStrategy, IPinningConfig } from './grid.common';
4848
import { IgxGridToolbarComponent } from './toolbar/grid-toolbar.component';
4949
import { IgxRowDirective } from './row.directive';

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export class IgxPivotFilteringService extends IgxFilteringService {
1818
const config = (grid as IgxPivotGridComponent).pivotConfiguration;
1919
const allDimensions = PivotUtil.flatten(config.rows.concat(config.columns).concat(config.filters).filter(x => x !== null && x !== undefined));
2020
const dim = allDimensions.find(x => x.memberName === fieldName || x.member === fieldName);
21-
dim.filters = undefined;
21+
dim.filter = undefined;
2222
grid.filteringPipeTrigger++;
2323
if (PivotUtil.flatten(config.columns).indexOf(dim) !== -1) {
2424
// update columns
@@ -33,14 +33,14 @@ export class IgxPivotFilteringService extends IgxFilteringService {
3333
const allDimensions = PivotUtil.flatten(config.rows.concat(config.columns).concat(config.filters).filter(x => x !== null && x !== undefined));
3434
const enabledDimensions = allDimensions.filter(x => x && x.enabled);
3535
const dim = enabledDimensions.find(x => x.memberName === fieldName || x.member === fieldName);
36-
const filteringTree = dim.filters || new FilteringExpressionsTree(FilteringLogic.And);
36+
const filteringTree = dim.filter || new FilteringExpressionsTree(FilteringLogic.And);
3737
const fieldFilterIndex = filteringTree.findIndex(fieldName);
3838
if (fieldFilterIndex > -1) {
3939
filteringTree.filteringOperands.splice(fieldFilterIndex, 1);
4040
}
4141

4242
this.prepare_filtering_expression(filteringTree, fieldName, term, conditionOrExpressionsTree, ignoreCase, fieldFilterIndex);
43-
dim.filters = filteringTree;
43+
dim.filter = filteringTree;
4444
grid.filteringPipeTrigger++;
4545
if (PivotUtil.flatten(config.columns).indexOf(dim) !== -1) {
4646
// update columns

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1115,9 +1115,9 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
11151115
}
11161116
currentFields.forEach((value, key) => {
11171117
let shouldGenerate = true;
1118-
if (value.dimension && value.dimension.filters) {
1118+
if (value.dimension && value.dimension.filter) {
11191119
const state = {
1120-
expressionsTree: value.dimension.filters.filteringOperands[0],
1120+
expressionsTree: value.dimension.filter.filteringOperands[0],
11211121
strategy: this.filterStrategy || new DimensionValuesFilteringStrategy(),
11221122
advancedFilteringExpressionsTree: this.advancedFilteringExpressionsTree
11231123
};

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { cloneArray } from '../../core/utils';
33
import { DataUtil } from '../../data-operations/data-util';
44
import { FilteringExpressionsTree, IFilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
55
import { IFilteringStrategy } from '../../data-operations/filtering-strategy';
6-
import { DEFAULT_PIVOT_KEYS, IPivotConfiguration, IPivotKeys } from './pivot-grid.interface';
6+
import { DEFAULT_PIVOT_KEYS, IPivotConfiguration, IPivotDimension, IPivotKeys } from './pivot-grid.interface';
77
import {
88
DefaultPivotSortingStrategy, DimensionValuesFilteringStrategy, PivotColumnDimensionsStrategy,
99
PivotRowDimensionsStrategy
@@ -142,9 +142,9 @@ export class IgxPivotGridFilterPipe implements PipeTransform {
142142

143143
const expressionsTree = new FilteringExpressionsTree(FilteringLogic.And);
144144
// add expression trees from all filters
145-
PivotUtil.flatten(enabledDimensions).forEach(x => {
146-
if (x.filters) {
147-
expressionsTree.filteringOperands.push(x.filters);
145+
PivotUtil.flatten(enabledDimensions).forEach((x: IPivotDimension) => {
146+
if (x.filter && x.filter.filteringOperands) {
147+
expressionsTree.filteringOperands.push(...x.filter.filteringOperands);
148148
}
149149
});
150150
const state = {

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

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { fakeAsync, TestBed } from '@angular/core/testing';
22
import { By } from '@angular/platform-browser';
33
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
4-
import { IgxPivotDateDimension, IgxPivotGridModule } from 'igniteui-angular';
4+
import { FilteringExpressionsTree, FilteringLogic, IgxPivotDateDimension, IgxPivotGridModule, IgxStringFilteringOperand } from 'igniteui-angular';
55
import { configureTestSuite } from '../../test-utils/configure-suite';
66
import { GridFunctions, GridSelectionFunctions } from '../../test-utils/grid-functions.spec';
77
import { IgxPivotGridTestBaseComponent, IgxPivotGridTestComplexHierarchyComponent, IgxTotalSaleAggregate } from '../../test-utils/pivot-grid-samples.spec';
@@ -106,6 +106,37 @@ describe('Basic IgxPivotGrid #pivotGrid', () => {
106106
expect(pivotGrid.columns.length).not.toBe(9);
107107
});
108108

109+
it('should remove filter dimension from chip', () => {
110+
const pivotGrid = fixture.componentInstance.pivotGrid;
111+
112+
const filteringExpressionTree = new FilteringExpressionsTree(FilteringLogic.And);
113+
filteringExpressionTree.filteringOperands = [
114+
{
115+
condition: IgxStringFilteringOperand.instance().condition('equals'),
116+
fieldName: 'SellerName',
117+
searchVal: 'Stanley'
118+
}
119+
];
120+
const filterDimension = {
121+
memberName: 'SellerName',
122+
enabled: true,
123+
filter: filteringExpressionTree
124+
};
125+
pivotGrid.pivotConfiguration.filters = [filterDimension];
126+
pivotGrid.pipeTrigger++;
127+
fixture.detectChanges();
128+
expect(pivotGrid.pivotConfiguration.filters[0].enabled).toBeTrue();
129+
expect(pivotGrid.rowList.length).toBe(2);
130+
131+
const headerRow = fixture.nativeElement.querySelector('igx-pivot-header-row');
132+
const rowChip = headerRow.querySelector('igx-chip[id="SellerName"]');
133+
const removeIcon = rowChip.querySelectorAll('igx-icon')[2];
134+
removeIcon.click();
135+
fixture.detectChanges();
136+
expect(pivotGrid.pivotConfiguration.filters[0].enabled).toBeFalse();
137+
expect(pivotGrid.rowList.length).toBe(5);
138+
});
139+
109140
it('should collapse column with 1 value dimension', () => {
110141
const pivotGrid = fixture.componentInstance.pivotGrid;
111142
pivotGrid.pivotConfiguration.values.pop();

src/app/pivot-grid/pivot-grid.sample.ts

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ import {
88
IgxPivotDateDimension,
99
IPivotDimension,
1010
IDimensionsChange,
11-
DisplayDensity
11+
DisplayDensity,
12+
FilteringExpressionsTree,
13+
FilteringLogic,
14+
IgxStringFilteringOperand
1215
} from 'igniteui-angular';
1316
import { HIERARCHICAL_SAMPLE_DATA } from '../shared/sample-data';
1417

@@ -49,6 +52,18 @@ export class PivotGridSampleComponent {
4952
public cosy: DisplayDensity = DisplayDensity.cosy;
5053
public compact: DisplayDensity = DisplayDensity.compact;
5154

55+
public filterExpTree = new FilteringExpressionsTree(FilteringLogic.And);
56+
57+
constructor() {
58+
this.filterExpTree.filteringOperands = [
59+
{
60+
condition: IgxStringFilteringOperand.instance().condition('equals'),
61+
fieldName: 'SellerName',
62+
searchVal: 'Stanley'
63+
}
64+
];
65+
}
66+
5267
public dimensions: IPivotDimension[] = [
5368
{
5469
memberName: 'Country',
@@ -139,7 +154,13 @@ export class PivotGridSampleComponent {
139154
},
140155
}
141156
],
142-
filters: null
157+
filters: [
158+
{
159+
memberName: 'SellerName',
160+
enabled: true,
161+
filter: this.filterExpTree
162+
}
163+
]
143164
};
144165

145166
public origData = [

0 commit comments

Comments
 (0)