Skip to content

Commit ffbb821

Browse files
Merge branch 'master' into rivanova/fix-16273-20.2.x
2 parents e850cfc + 7b9c095 commit ffbb821

File tree

10 files changed

+301
-101
lines changed

10 files changed

+301
-101
lines changed

projects/igniteui-angular-elements/src/public_api.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { IgxPivotDateDimension } from 'projects/igniteui-angular/src/lib/grids/p
1212
import { PivotDimensionType } from 'projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.interface';
1313
import { IgxDateSummaryOperand, IgxNumberSummaryOperand, IgxSummaryOperand, IgxTimeSummaryOperand } from 'projects/igniteui-angular/src/lib/grids/summaries/grid-summary';
1414
import { HorizontalAlignment, VerticalAlignment } from 'projects/igniteui-angular/src/lib/services/overlay/utilities';
15-
import { ByLevelTreeGridMergeStrategy, DefaultTreeGridMergeStrategy } from 'projects/igniteui-angular/src/lib/data-operations/merge-strategy';
15+
import { ByLevelTreeGridMergeStrategy, DefaultMergeStrategy, DefaultTreeGridMergeStrategy } from 'projects/igniteui-angular/src/lib/data-operations/merge-strategy';
1616

1717
/** Export Public API, TODO: reorganize, Generate all w/ renames? */
1818
export {
@@ -35,6 +35,7 @@ export {
3535

3636
NoopSortingStrategy as IgcNoopSortingStrategy,
3737
NoopFilteringStrategy as IgcNoopFilteringStrategy,
38+
DefaultMergeStrategy as IgcDefaultMergeStrategy,
3839
DefaultTreeGridMergeStrategy as IgcDefaultTreeGridMergeStrategy,
3940
ByLevelTreeGridMergeStrategy as IgcByLevelTreeGridMergeStrategy,
4041

projects/igniteui-angular/src/lib/data-operations/sorting-strategy.spec.ts

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,34 +24,46 @@ describe('Unit testing SortingStrategy', () => {
2424
strategy: DefaultSortingStrategy.instance()
2525
}]);
2626
expect(dataGenerator.getValuesForColumn(res, 'number'))
27-
.toEqual([4, 2, 0, 3, 1]);
27+
.toEqual([4, 2, 0, 3, 1]);
2828
});
2929
it('tests `compareObjects`', () => {
3030
const strategy = DefaultSortingStrategy.instance();
3131
expect(strategy.compareValues(1, 0) === 1 &&
32-
strategy.compareValues(true, false) === 1 &&
33-
strategy.compareValues('bc', 'adfc') === 1)
32+
strategy.compareValues(true, false) === 1 &&
33+
strategy.compareValues('bc', 'adfc') === 1)
3434
.toBeTruthy('compare first argument greater than second');
3535
expect(strategy.compareValues(1, 2) === -1 &&
36-
strategy.compareValues('a', 'b') === -1 &&
37-
strategy.compareValues(false, true) === -1)
36+
strategy.compareValues('a', 'b') === -1 &&
37+
strategy.compareValues(false, true) === -1)
3838
.toBeTruthy('compare 0, 1');
3939
expect(strategy.compareValues(0, 0) === 0 &&
40-
strategy.compareValues(true, true) === 0 &&
41-
strategy.compareValues('test', 'test') === 0
42-
)
40+
strategy.compareValues(true, true) === 0 &&
41+
strategy.compareValues('test', 'test') === 0
42+
)
4343
.toBeTruthy('Comare equal variables');
4444
});
4545
it('tests default settings', () => {
4646
(data[4] as { string: string }).string = 'ROW';
4747
const res = sorting.sort(data, [{
48-
dir: SortingDirection.Asc,
49-
fieldName: 'string',
50-
ignoreCase: true,
51-
strategy: DefaultSortingStrategy.instance()
52-
}]);
48+
dir: SortingDirection.Asc,
49+
fieldName: 'string',
50+
ignoreCase: true,
51+
strategy: DefaultSortingStrategy.instance()
52+
}]);
5353
expect(dataGenerator.getValuesForColumn(res, 'number'))
54-
.toEqual([4, 0, 1, 2, 3]);
54+
.toEqual([4, 0, 1, 2, 3]);
55+
});
56+
57+
it('should not sort when sorting direction is None', () => {
58+
const unsortedData = [{ number: 3 }, { number: 1 }, { number: 4 }, { number: 0 }, { number: 2 }];
59+
const res = sorting.sort(unsortedData, [{
60+
dir: SortingDirection.None,
61+
fieldName: 'number',
62+
ignoreCase: false,
63+
strategy: DefaultSortingStrategy.instance()
64+
}]);
65+
expect(res.map(d => d.number))
66+
.toEqual([3, 1, 4, 0, 2]);
5567
});
5668

5769
});

projects/igniteui-angular/src/lib/grids/common/strategy.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { IGroupingState } from '../../data-operations/groupby-state.interface';
55
import { IGroupingExpression } from '../../data-operations/grouping-expression.interface';
66
import { IGroupByResult } from '../../data-operations/grouping-result.interface';
77
import { getHierarchy, isHierarchyMatch } from '../../data-operations/operations';
8-
import { DefaultSortingStrategy, ISortingExpression } from '../../data-operations/sorting-strategy';
8+
import { DefaultSortingStrategy, ISortingExpression, SortingDirection } from '../../data-operations/sorting-strategy';
99
import { GridType } from './grid.interface';
1010

1111
const DATE_TYPE = 'date';
@@ -141,6 +141,9 @@ export class IgxSorting implements IGridSortingStrategy {
141141
private prepareExpressions(expressions: ISortingExpression[], grid: GridType): IGridInternalSortingExpression[] {
142142
const multipleSortingExpressions: IGridInternalSortingExpression[] = [];
143143
for (const expr of expressions) {
144+
if (expr.dir === SortingDirection.None) {
145+
continue;
146+
}
144147
if (!expr.strategy) {
145148
expr.strategy = DefaultSortingStrategy.instance();
146149
}

0 commit comments

Comments
 (0)