Skip to content

Commit 3dece48

Browse files
MKirovaMKirova
authored andcommitted
Skip column generation for columns that are filtered out.
1 parent 484e361 commit 3dece48

File tree

4 files changed

+26
-8
lines changed

4 files changed

+26
-8
lines changed

projects/igniteui-angular/src/lib/grids/filtering/excel-style/excel-style-search.component.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -392,11 +392,12 @@ export class IgxExcelStyleSearchComponent implements AfterViewInit, OnDestroy {
392392
});
393393
}
394394
}
395-
396-
this.esf.grid.filteringService.filterInternal(this.esf.column.field, filterTree);
395+
const grid = this.esf.grid;
396+
const col = this.esf.column;
397+
grid.filteringService.filterInternal(col.field, filterTree);
397398
this.esf.expressionsList = new Array<ExpressionUI>();
398-
this.esf.grid.filteringService.generateExpressionsList(this.esf.column.filteringExpressionsTree,
399-
this.esf.grid.filteringLogic, this.esf.expressionsList);
399+
grid.filteringService.generateExpressionsList(col.filteringExpressionsTree,
400+
grid.filteringLogic, this.esf.expressionsList);
400401
} else {
401402
this.esf.grid.filteringService.clearFilter(this.esf.column.field);
402403
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ export class IgxPivotFilteringService extends IgxFilteringService {
2525
this.prepare_filtering_expression(filteringTree, fieldName, term, conditionOrExpressionsTree, ignoreCase, fieldFilterIndex);
2626
dim.filters = filteringTree;
2727
grid.filteringPipeTrigger++;
28+
if (PivotUtil.flatten(config.columns).indexOf(dim) !== -1) {
29+
// update columns
30+
(grid as any).setupColumns();
31+
}
2832
}
2933

3034
}

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

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,10 @@ import { IgxColumnResizingService } from '../resizing/resizing.service';
4141
import { IgxFlatTransactionFactory, IgxOverlayService, State, Transaction, TransactionService } from '../../services/public_api';
4242
import { DOCUMENT } from '@angular/common';
4343
import { DisplayDensityToken, IDisplayDensityOptions } from '../../core/displayDensity';
44-
import { PlatformUtil } from '../../core/utils';
44+
import { cloneArray, PlatformUtil } from '../../core/utils';
4545
import { IgxGridTransaction } from '../hierarchical-grid/public_api';
4646
import { IgxPivotFilteringService } from './pivot-filtering.service';
47+
import { DataUtil } from '../../data-operations/data-util';
4748

4849
let NEXT_ID = 0;
4950
const MINIMUM_COLUMN_WIDTH = 200;
@@ -424,7 +425,19 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
424425
const factoryColumnGroup = this.resolver.resolveComponentFactory(IgxColumnGroupComponent);
425426
let columns = [];
426427
fields.forEach((value, key) => {
427-
if (value.children == null || value.children.length === 0 || value.children.size === 0) {
428+
let shouldGenerate = true;
429+
if (value.dimension && value.dimension.filters) {
430+
const state = {
431+
expressionsTree: value.dimension.filters.filteringOperands[0],
432+
strategy: this.filterStrategy,
433+
advancedFilteringExpressionsTree: this.advancedFilteringExpressionsTree
434+
};
435+
const filtered = DataUtil.filter(cloneArray(value.records), state);
436+
if (filtered.length === 0) {
437+
shouldGenerate = false;
438+
}
439+
}
440+
if (shouldGenerate && (value.children == null || value.children.length === 0 || value.children.size === 0)) {
428441
const ref = this.hasMultipleValues ?
429442
factoryColumnGroup.create(this.viewRef.injector) :
430443
factoryColumn.create(this.viewRef.injector);
@@ -439,7 +452,7 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
439452
columns = columns.concat(measureChildren);
440453
}
441454

442-
} else {
455+
} else if(shouldGenerate) {
443456
const ref = factoryColumnGroup.create(this.viewRef.injector);
444457
ref.instance.parent = parent;
445458
ref.instance.field = key;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ export class PivotUtil {
150150
const value = this.extractValueFromDimension(col, recData);
151151
path.push(value);
152152
const newValue = path.join('-');
153-
lvlCollection.push({ value: newValue });
153+
lvlCollection.push({ value: newValue, dimension: col });
154154
lvlCollection[0].expandable = col.expandable;
155155
if (!lvlCollection[0].children) {
156156
lvlCollection[0].children = [];

0 commit comments

Comments
 (0)