Skip to content

Commit 24d3dd7

Browse files
committed
fix(AdvanceFiltering): Adding missing resource strings
1 parent f3d87fc commit 24d3dd7

File tree

3 files changed

+122
-17
lines changed

3 files changed

+122
-17
lines changed

projects/igniteui-angular/src/lib/core/i18n/grid-resources.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ export interface IGridResourceStrings {
8989
igx_grid_excel_no_matches?: string;
9090
igx_grid_excel_matches_count?: string;
9191
igx_grid_advanced_filter_title?: string;
92+
igx_grid_advanced_filter_from_label?: string;
9293
igx_grid_advanced_filter_and_group?: string;
9394
igx_grid_advanced_filter_or_group?: string;
9495
igx_grid_advanced_filter_end_group?: string;
@@ -97,12 +98,17 @@ export interface IGridResourceStrings {
9798
igx_grid_advanced_filter_and_label?: string;
9899
igx_grid_advanced_filter_or_label?: string;
99100
igx_grid_advanced_filter_add_condition?: string;
101+
igx_grid_advanced_filter_add_condition_root?: string;
102+
igx_grid_advanced_filter_add_group?: string;
103+
igx_grid_advanced_filter_add_group_root?: string;
100104
igx_grid_advanced_filter_ungroup?: string;
101105
igx_grid_advanced_filter_delete?: string;
102106
igx_grid_advanced_filter_delete_filters?: string;
103107
igx_grid_advanced_filter_initial_text?: string;
104108
igx_grid_advanced_filter_column_placeholder?: string;
105109
igx_grid_advanced_filter_value_placeholder?: string;
110+
igx_grid_advanced_filter_query_value_placeholder?: string;
111+
igx_grid_advanced_filter_switch_group?: string;
106112
igx_grid_pinned_row_indicator?: string;
107113
igx_grid_hiding_check_all_label?: string;
108114
igx_grid_hiding_uncheck_all_label?: string;
@@ -257,20 +263,26 @@ export const GridResourceStringsEN: IGridResourceStrings = {
257263
igx_grid_excel_no_matches: 'No matches',
258264
igx_grid_excel_matches_count: '{0} matches.',
259265
igx_grid_advanced_filter_title: 'Advanced Filtering',
266+
igx_grid_advanced_filter_from_label: 'From',
260267
igx_grid_advanced_filter_and_group: '"And" Group',
261268
igx_grid_advanced_filter_or_group: '"Or" Group',
262269
igx_grid_advanced_filter_end_group: 'End Group',
263270
igx_grid_advanced_filter_create_and_group: 'Create "And" Group',
264271
igx_grid_advanced_filter_create_or_group: 'Create "Or" Group',
265272
igx_grid_advanced_filter_and_label: 'and',
266273
igx_grid_advanced_filter_or_label: 'or',
267-
igx_grid_advanced_filter_add_condition: 'Condition',
274+
igx_grid_advanced_filter_switch_group: 'Switch to {0}',
275+
igx_grid_advanced_filter_add_condition: 'Add condition',
276+
igx_grid_advanced_filter_add_group: 'Add group',
277+
igx_grid_advanced_filter_add_condition_root: 'Condition',
278+
igx_grid_advanced_filter_add_group_root: 'Group',
268279
igx_grid_advanced_filter_ungroup: 'Ungroup',
269280
igx_grid_advanced_filter_delete: 'Delete',
270281
igx_grid_advanced_filter_delete_filters: 'Delete filters',
271282
igx_grid_advanced_filter_initial_text: 'Start with creating a group of conditions linked with "And" or "Or"',
272283
igx_grid_advanced_filter_column_placeholder: 'Select column',
273284
igx_grid_advanced_filter_value_placeholder: 'Value',
285+
igx_grid_advanced_filter_query_value_placeholder: 'Sub-query results',
274286
igx_grid_pinned_row_indicator: 'Pinned',
275287
igx_grid_hiding_check_all_label: 'Show All',
276288
igx_grid_hiding_uncheck_all_label: 'Hide All',

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

Lines changed: 107 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import { By } from '@angular/platform-browser';
2828
import { IgxDateTimeEditorDirective } from '../../directives/date-time-editor/date-time-editor.directive';
2929
import { QueryBuilderSelectors } from '../../query-builder/query-builder.common';
3030
import { IgxHGridRemoteOnDemandComponent } from '../hierarchical-grid/hierarchical-grid.spec';
31+
import { IGridResourceStrings } from '../../core/i18n/grid-resources';
3132

3233
describe('IgxGrid - Advanced Filtering #grid - ', () => {
3334
beforeEach(waitForAsync(() => {
@@ -1263,47 +1264,75 @@ describe('IgxGrid - Advanced Filtering #grid - ', () => {
12631264
it('Should correctly change resource strings for Advanced Filtering dialog.', fakeAsync(() => {
12641265
const fix = TestBed.createComponent(IgxGridAdvancedFilteringComponent);
12651266
const grid: IgxGridComponent = fix.componentInstance.grid;
1266-
grid.resourceStrings = Object.assign({}, grid.resourceStrings, {
1267+
const myResourceStrings: IGridResourceStrings = {
12671268
igx_grid_filter_operator_and: 'My and',
12681269
igx_grid_filter_operator_or: 'My or',
12691270
igx_grid_advanced_filter_title: 'My advanced filter',
12701271
igx_grid_advanced_filter_end_group: 'My end group',
12711272
igx_grid_advanced_filter_create_and_group: 'My create and group',
12721273
igx_grid_advanced_filter_and_label: 'My and',
12731274
igx_grid_advanced_filter_or_label: 'My or',
1275+
igx_grid_advanced_filter_add_condition: 'Add my condition',
12741276
igx_grid_advanced_filter_add_condition_root: 'My condition',
12751277
igx_grid_advanced_filter_add_group_root: 'My group',
1278+
igx_grid_advanced_filter_add_group: 'Add my group',
12761279
igx_grid_advanced_filter_ungroup: 'My ungroup',
1280+
igx_grid_advanced_filter_switch_group: 'My switch to {0}',
12771281
igx_grid_advanced_filter_delete_filters: 'My delete filters'
1282+
};
1283+
1284+
grid.resourceStrings = {
1285+
...grid.resourceStrings,
1286+
...myResourceStrings
1287+
};
1288+
1289+
const tree = new FilteringExpressionsTree(FilteringLogic.And);
1290+
tree.filteringOperands.push({
1291+
fieldName: 'ProductName',
1292+
condition: IgxStringFilteringOperand.instance().condition('contains'),
1293+
searchVal: 'angular',
1294+
ignoreCase: true
12781295
});
1296+
1297+
grid.advancedFilteringExpressionsTree = tree;
12791298
fix.detectChanges();
12801299

12811300
// Open Advanced Filtering dialog.
12821301
grid.openAdvancedFilteringDialog();
12831302
fix.detectChanges();
12841303

12851304
expect(QueryBuilderFunctions.getQueryBuilderHeaderText(fix).trim()).toBe('My advanced filter');
1286-
expect(QueryBuilderFunctions.getQueryBuilderInitialAddConditionBtn(fix).querySelector('span').innerText)
1305+
expect((QueryBuilderFunctions.getQueryBuilderTreeRootGroupButtons(fix, 0)[0] as HTMLElement).querySelector('span').innerText)
12871306
.toBe('My condition');
1307+
expect((QueryBuilderFunctions.getQueryBuilderTreeRootGroupButtons(fix, 0)[1] as HTMLElement).querySelector('span').innerText)
1308+
.toBe('My group');
12881309

1289-
QueryBuilderFunctions.clickQueryBuilderInitialAddConditionBtn(fix, 0);
1310+
QueryBuilderFunctions.clickQueryBuilderGroupContextMenu(fix, 0);
12901311
tick(100);
12911312
fix.detectChanges();
1313+
1314+
const groupDDLItems = QueryBuilderFunctions.getQueryBuilderGroupContextMenuDropDownItems(fix);
1315+
expect(groupDDLItems[0].innerText).toBe('My switch to MY OR');
1316+
expect(groupDDLItems[1].innerText).toBe('My ungroup');
12921317

1318+
QueryBuilderFunctions.clickQueryBuilderGroupContextMenu(fix, 0);
1319+
tick(100);
1320+
fix.detectChanges();
12931321

1294-
// Populate edit inputs.
1295-
QueryBuilderFunctions.selectColumnInEditModeExpression(fix, 1); // Select 'ProductName' column.
1296-
QueryBuilderFunctions.selectOperatorInEditModeExpression(fix, 0); // Select 'Contains' operator.
1322+
// Hover the condition chip to show the add button
1323+
const expressionItem = fix.nativeElement.querySelectorAll(`.${QueryBuilderSelectors.FILTER_TREE_EXPRESSION_ITEM}`)[0];
1324+
expressionItem.dispatchEvent(new MouseEvent('mouseenter'));
1325+
tick();
1326+
fix.detectChanges();
12971327

1298-
const input = QueryBuilderFunctions.getQueryBuilderValueInput(fix).querySelector('input');
1299-
UIInteractions.clickAndSendInputElementValue(input, 'angular', fix); // Type filter value.
1300-
// Commit the populated expression.
1301-
QueryBuilderFunctions.clickQueryBuilderExpressionCommitButton(fix);
1328+
// Click the add icon to display the adding buttons and verify their content.
1329+
QueryBuilderFunctions.clickQueryBuilderTreeExpressionChipIcon(fix, [0], 'add');
13021330
fix.detectChanges();
1303-
expect((QueryBuilderFunctions.getQueryBuilderTreeRootGroupButtons(fix, 0)[0] as HTMLElement).querySelector('span').innerText)
1304-
.toBe('My condition');
1305-
expect((QueryBuilderFunctions.getQueryBuilderTreeRootGroupButtons(fix, 0)[1] as HTMLElement).querySelector('span').innerText)
1306-
.toBe('My group');
1331+
tick(50);
1332+
1333+
const addingButtons: any = QueryBuilderFunctions.getQueryBuilderTreeRootGroupButtons(fix, 0);
1334+
expect(addingButtons[0].innerText).toBe('add\nMy condition');
1335+
expect(addingButtons[1].innerText).toBe('add\nMy group');
13071336
}));
13081337
});
13091338

@@ -1792,6 +1821,70 @@ describe('IgxGrid - Advanced Filtering #grid - ', () => {
17921821
expectedValues = ['ID', 'ProductName'];
17931822
expect(dropdownValues).toEqual(expectedValues);
17941823
}));
1824+
1825+
it('Should correctly change resource strings for hierarchical Advanced Filtering dialog.', fakeAsync(() => {
1826+
debugger
1827+
hgrid.closeAdvancedFilteringDialog(false);
1828+
tick(200);
1829+
fix.detectChanges();
1830+
1831+
const innerTree = new FilteringExpressionsTree(0, undefined, 'childData', ['ID']);
1832+
innerTree.filteringOperands.push({
1833+
fieldName: 'ID',
1834+
ignoreCase: false,
1835+
conditionName: IgxStringFilteringOperand.instance().condition('contains').name,
1836+
searchVal: '39'
1837+
});
1838+
1839+
const tree = new FilteringExpressionsTree(0, undefined, 'rootData', ['ID']);
1840+
tree.filteringOperands.push({
1841+
fieldName: 'ID',
1842+
conditionName: IgxStringFilteringOperand.instance().condition('inQuery').name,
1843+
ignoreCase: false,
1844+
searchTree: innerTree
1845+
});
1846+
1847+
hgrid.advancedFilteringExpressionsTree = tree;
1848+
1849+
const myResourceStrings: IGridResourceStrings = {
1850+
igx_grid_filter_operator_and: 'My and',
1851+
igx_grid_filter_operator_or: 'My or',
1852+
igx_grid_advanced_filter_title: 'My advanced filter',
1853+
igx_grid_advanced_filter_end_group: 'My end group',
1854+
igx_grid_advanced_filter_create_and_group: 'My create and group',
1855+
igx_grid_advanced_filter_and_label: 'My and',
1856+
igx_grid_advanced_filter_or_label: 'My or',
1857+
igx_grid_advanced_filter_add_condition: 'Add my condition',
1858+
igx_grid_advanced_filter_add_condition_root: 'My condition',
1859+
igx_grid_advanced_filter_add_group_root: 'My group',
1860+
igx_grid_advanced_filter_add_group: 'Add my group',
1861+
igx_grid_advanced_filter_ungroup: 'My ungroup',
1862+
igx_grid_advanced_filter_switch_group: 'My switch to {0}',
1863+
igx_grid_advanced_filter_delete_filters: 'My delete filters',
1864+
igx_grid_advanced_filter_from_label: 'My from',
1865+
igx_grid_advanced_filter_query_value_placeholder: 'My sub-query results',
1866+
};
1867+
1868+
hgrid.resourceStrings = {
1869+
...hgrid.resourceStrings,
1870+
...myResourceStrings
1871+
};
1872+
1873+
fix.detectChanges();
1874+
1875+
// Open Advanced Filtering dialog.
1876+
hgrid.openAdvancedFilteringDialog();
1877+
fix.detectChanges();
1878+
1879+
// Open up the sub-query
1880+
QueryBuilderFunctions.clickQueryBuilderTreeExpressionChip(fix, [0]);
1881+
tick(100);
1882+
fix.detectChanges();
1883+
1884+
const valueInput: any = QueryBuilderFunctions.getQueryBuilderValueInput(fix);
1885+
expect(valueInput.querySelector('input').placeholder).toBe('My sub-query results');
1886+
1887+
}));
17951888
});
17961889
});
17971890

projects/igniteui-angular/src/lib/query-builder/query-builder-tree.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<ng-template #selectFromTemplate>
1010
<div class="igx-filter-tree__inputs" [style.display]="(isInEditMode() && (!this.isAdvancedFiltering() || this.isHierarchicalNestedQuery())) ? 'flex' : 'none'">
1111
<div class="igx-filter-tree__inputs-field">
12-
<span class="igx-query-builder__label">From</span>
12+
<span class="igx-query-builder__label">{{ this.resourceStrings.igx_query_builder_from_label }}</span>
1313
<igx-select #entitySelect
1414
type="box"
1515
(selectionChanging)="onEntitySelectChanging($event)"
@@ -30,7 +30,7 @@
3030

3131
<div class="igx-filter-tree__inputs-field">
3232
@if (!this.isHierarchicalNestedQuery()) {
33-
<span class="igx-query-builder__label">Select</span>
33+
<span class="igx-query-builder__label">{{ this.resourceStrings.igx_query_builder_select_label }}</span>
3434
}
3535
@if (!parentExpression) {
3636
<igx-combo

0 commit comments

Comments
 (0)