Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
1d4ca37
refactor(samples): query-builder sample1, style, template
ivanvpetrov Feb 11, 2025
7b0f1e3
refactor(samples): new styles for the query builder styling sample
adrianptrv Feb 11, 2025
cc7d9fe
refactor(sample): query-builder template sample add formatter
ivanvpetrov Feb 12, 2025
0a5b41b
fix(sampe): query-builder style sample now uses entities
ivanvpetrov Feb 12, 2025
3b017a4
refactor(sample): query-builder formatter example
ivanvpetrov Feb 14, 2025
a47c28c
refactor(sample): query-builder formatter example simplified
ivanvpetrov Feb 14, 2025
ab89d5c
fix(sample): query-builder style sample lint warning
ivanvpetrov Feb 14, 2025
dd0e68e
fix(sample): query-builder style sample
ivanvpetrov Feb 14, 2025
abebc99
revert: chore(file): package and package-lock modifications reverted …
ivanvpetrov Feb 14, 2025
2dea0f0
fix(sample): query-builder style sample theme
ivanvpetrov Feb 14, 2025
ea44240
revert: refactor(sample): theme css changes in PR
ivanvpetrov Feb 18, 2025
4a0c3a5
Merge remote-tracking branch 'origin/vnext' into ipetrov/query-builde…
ChronosSF Feb 21, 2025
9b3abb8
chore(*): updating to latest beta
ChronosSF Feb 21, 2025
44cd317
fix(query-builder): add header&temp demo to QB config generator
teodosiah Feb 24, 2025
21e4c9a
chore(*): update theming in package-lock
igdmdimitrov Feb 24, 2025
1f9c63a
chore(*): update package-lock
igdmdimitrov Feb 24, 2025
76ce983
fix(theming): prop that was depricated removed again
ivanvpetrov Feb 24, 2025
d6b4f27
fix(query-builder): fix header position
teodosiah Feb 24, 2025
fbe28af
fix(sample): query-builder sample now scrollable
ivanvpetrov Feb 24, 2025
4ec75d0
fix(sample): query-builder margin-right added to tree
ivanvpetrov Feb 24, 2025
dccccb0
Merge branch 'vnext' into ipetrov/query-builder-samples-update-36242
damyanpetev Feb 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions live-editing/configs/QueryBuilderConfigGenerator.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import {IgxQueryBuilderModule} from 'igniteui-angular';
import {AppModuleConfig, Config, IConfigGenerator} from 'igniteui-live-editing'
import { Config, IConfigGenerator} from 'igniteui-live-editing'
import { BaseAppConfig } from './BaseConfig';
export class QueryBuilderConfigGenerator implements IConfigGenerator {

Expand All @@ -13,6 +12,12 @@ export class QueryBuilderConfigGenerator implements IConfigGenerator {
shortenComponentPathBy: "/interactions/query-builder/"
}));

configs.push(new Config({
component: 'QueryBuilderTemplateSampleComponent',
appConfig: BaseAppConfig,
shortenComponentPathBy: "/interactions/query-builder/"
}));

configs.push(new Config({
component: 'QueryBuilderStyleComponent',
additionalFiles: ["/src/app/interactions/query-builder/query-builder-style/layout.scss"],
Expand Down
17 changes: 9 additions & 8 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
"bootstrap": "5.3.3",
"file-saver": "^2.0.2",
"hammerjs": "^2.0.8",
"igniteui-angular": "^19.0.10",
"igniteui-angular": "^19.1.0-beta.4",
"igniteui-angular-charts": "^19.0.0",
"igniteui-angular-core": "^19.0.0",
"igniteui-angular-extras": "^19.0.3",
Expand All @@ -80,8 +80,8 @@
},
"overrides": {
"igniteui-angular-extras": {
"igniteui-angular": "^19.0.0",
"@infragistics/igniteui-angular": "^19.0.0",
"igniteui-angular": "^19.1.0-beta.4",
"@infragistics/igniteui-angular": "^19.1.0-beta.4",
"igniteui-angular-charts": "^19.0.0",
"igniteui-angular-core": "^19.0.0",
"@angular/core": "^19.0.0",
Expand Down
3 changes: 2 additions & 1 deletion src/app/interactions/interactions-routes-data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,6 @@ export const interactionsRoutesData = {
'drag-dialog-sample': { displayName: 'Drag Dialog Sample', parentName: 'Drag and Drop'},
'icons-sample': { displayName: 'Icons sample', parentName: 'Drag and Drop' },
'query-builder-sample-1': { displayName: 'Query Builder Sample 1', parentName: 'Query Builder' },
'query-builder-style': { displayName: 'Query Builder Style Sample', parentName: 'Query Builder' }
'query-builder-style': { displayName: 'Query Builder Style Sample', parentName: 'Query Builder' },
'query-builder-template-sample': { displayName: 'Query Builder Template Sample', parentName: 'Query Builder' }
};
6 changes: 6 additions & 0 deletions src/app/interactions/interactions.routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import { OverlayScrollSample2Component } from './overlay/overlay-scroll-2/overla
import { OverlayStylingComponent } from './overlay/overlay-styling/overlay-styling.component';
import { QueryBuilderSample1Component } from './query-builder/query-builder-sample-1/query-builder-sample-1.component';
import { QueryBuilderStyleComponent } from './query-builder/query-builder-style/query-builder-style.component';
import { QueryBuilderTemplateSampleComponent } from './query-builder/query-builder-template-sample/query-builder-template-sample.component';
import { RippleSample2Component } from './ripple/ripple-sample-2/ripple-sample-2.component';
import { RippleSample3Component } from './ripple/ripple-sample-3/ripple-sample-3.component';
import { RippleSample4Component } from './ripple/ripple-sample-4/ripple-sample-4.component';
Expand Down Expand Up @@ -298,5 +299,10 @@ export const InteractionsRoutes: Routes = [
component: QueryBuilderStyleComponent,
data: interactionsRoutesData['query-builder-style'],
path: 'query-builder-style'
},
{
component: QueryBuilderTemplateSampleComponent,
data: interactionsRoutesData['query-builder-template-sample'],
path: 'query-builder-template-sample'
}
];
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<div class="wrapper">
<igx-query-builder #queryBuilder
[fields]="fields"
[entities]="entities"
[expressionTree]="expressionTree">
<igx-query-builder-header [title]="'Query Builder Overview'" [showLegend]="true">
</igx-query-builder-header>
<igx-query-builder-header [title]="'Query Builder Overview'"></igx-query-builder-header>
</igx-query-builder>

<div class="output-area">
<pre>{{ printExpressionTree(queryBuilder.expressionTree) }}</pre>
</div>
</div>
</div>
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
.wrapper{
margin: 10px;
height: 100%;
overflow-y: auto;
}

.output-area{
overflow-y: auto;
height: 200px;
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.2), 0 1px 1px 0 rgba(0, 0, 0, 0.14), 0 2px 1px -1px rgba(0, 0, 0, 0.12);
margin-top: 15px;
margin-right: 15px;
border-radius: 4px;
padding-left: 16px;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Component, OnInit } from '@angular/core';
import { FilteringExpressionsTree, FilteringLogic, IExpressionTree, IgxQueryBuilderComponent, IgxStringFilteringOperand, IgxQueryBuilderHeaderComponent } from 'igniteui-angular';
import { FilteringExpressionsTree, FilteringLogic, IExpressionTree, IgxBooleanFilteringOperand, IgxDateFilteringOperand, IgxNumberFilteringOperand, IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent, IgxStringFilteringOperand } from 'igniteui-angular';

@Component({
selector: 'app-query-builder-sample-1',
Expand All @@ -8,52 +8,100 @@ import { FilteringExpressionsTree, FilteringLogic, IExpressionTree, IgxQueryBuil
imports: [IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent]
})
export class QueryBuilderSample1Component implements OnInit {
public entities: any[];
public companiesFields: any[];
public ordersFields: any[];
public expressionTree: IExpressionTree;

public fields: any[] = [
{ field: 'ID', dataType: 'string' },
{ field: 'CompanyName', dataType: 'string' },
{ field: 'ContactName', dataType: 'string' },
{ field: 'Employees', dataType: 'number' },
{ field: 'ContactTitle', dataType: 'string' },
{ field: 'DateCreated', dataType: 'date' },
{ field: 'TimeCreated', dataType: 'time' },
{ field: 'Address', dataType: 'string' },
{ field: 'City', dataType: 'string' },
{ field: 'Region', dataType: 'string' },
{ field: 'PostalCode', dataType: 'string' },
{ field: 'Phone', dataType: 'string' },
{ field: 'Fax', dataType: 'string' },
{ field: 'Contract', dataType: 'boolean' }
];

public ngOnInit(): void {
const tree = new FilteringExpressionsTree(FilteringLogic.And);
tree.filteringOperands.push({
fieldName: 'ID',
condition: IgxStringFilteringOperand.instance().condition('contains'),
searchVal: 'a',
ignoreCase: true
this.companiesFields = [
{ field: "ID", dataType: "string" },
{ field: "CompanyName", dataType: "string" },
{ field: "ContactName", dataType: "string" },
{ field: "Employees", dataType: "number" },
{ field: "ContactTitle", dataType: "string" },
{ field: "DateCreated", dataType: "date" },
{ field: "TimeCreated", dataType: "time" },
{ field: "Address", dataType: "string" },
{ field: "City", dataType: "string" },
{ field: "Region", dataType: "string" },
{ field: "PostalCode", dataType: "string" },
{ field: "Phone", dataType: "string" },
{ field: "Fax", dataType: "string" },
{ field: "Contract", dataType: "boolean" }
];

this.ordersFields = [
{ field: "CompanyID", dataType: "string" },
{ field: "OrderID", dataType: "number" },
{ field: "EmployeeId", dataType: "number" },
{ field: "OrderDate", dataType: "date" },
{ field: "RequiredDate", dataType: "date" },
{ field: "ShippedDate", dataType: "date" },
{ field: "ShipVia", dataType: "number" },
{ field: "Freight", dataType: "number" },
{ field: "ShipName", dataType: "string" },
{ field: "ShipCity", dataType: "string" },
{ field: "ShipPostalCode", dataType: "string" },
{ field: "ShipCountry", dataType: "string" },
{ field: "Region", dataType: "string" }
];

this.entities = [
{
name: "Companies",
fields: this.companiesFields
},
{
name: "Orders",
fields: this.ordersFields
}
];

const innerTree = new FilteringExpressionsTree(FilteringLogic.And, undefined, 'Companies', ['ID']);
innerTree.filteringOperands.push({
fieldName: 'Employees',
condition: IgxNumberFilteringOperand.instance().condition('greaterThan'),
conditionName: 'greaterThan',
searchVal: 100
});
innerTree.filteringOperands.push({
fieldName: 'Contract',
condition: IgxBooleanFilteringOperand.instance().condition('true'),
conditionName: 'true'
});
const orTree = new FilteringExpressionsTree(FilteringLogic.Or);
orTree.filteringOperands.push({
fieldName: 'ID',
condition: IgxStringFilteringOperand.instance().condition('contains'),
searchVal: 'b',
ignoreCase: true

const subGroup = new FilteringExpressionsTree(FilteringLogic.Or, undefined, 'Orders', ['*']);
subGroup.filteringOperands.push({
fieldName: 'ShipCity',
condition: IgxStringFilteringOperand.instance().condition('endsWith'),
conditionName: IgxStringFilteringOperand.instance().condition('endsWith').name,
searchVal: 'bar'
});
subGroup.filteringOperands.push({
fieldName: 'OrderDate',
condition: IgxDateFilteringOperand.instance().condition('today'),
conditionName: IgxDateFilteringOperand.instance().condition('today').name
});
orTree.filteringOperands.push({
fieldName: 'CompanyName',
condition: IgxStringFilteringOperand.instance().condition('contains'),
searchVal: 'c',
ignoreCase: true

const tree = new FilteringExpressionsTree(FilteringLogic.And, undefined, 'Orders', ['*']);
tree.filteringOperands.push({
fieldName: 'CompanyID',
condition: IgxStringFilteringOperand.instance().condition('in'),
conditionName: 'in',
searchTree: innerTree
});
tree.filteringOperands.push({
fieldName: 'OrderDate',
condition: IgxDateFilteringOperand.instance().condition('before'),
conditionName: 'before',
searchVal: new Date('2024-01-01T00:00:00.000Z')
});
tree.filteringOperands.push(orTree);
tree.filteringOperands.push(subGroup);
tree.filteringOperands.push({
fieldName: 'CompanyName',
condition: IgxStringFilteringOperand.instance().condition('contains'),
searchVal: 'd',
ignoreCase: true
fieldName: 'ShippedDate',
condition: IgxDateFilteringOperand.instance().condition('null'),
conditionName: 'null'
});

this.expressionTree = tree;
Expand All @@ -62,4 +110,4 @@ export class QueryBuilderSample1Component implements OnInit {
public printExpressionTree(tree: IExpressionTree) {
return tree ? JSON.stringify(tree, null, 2) : 'Please add an expression!';
}
}
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
<igx-query-builder #queryBuilder
[fields]="fields">
</igx-query-builder>
<div class="wrapper">
<igx-query-builder #queryBuilder
[entities]="entities">
</igx-query-builder>
</div>
Loading
Loading