@syncfusion/ej2-querybuilder 19.2.60 → 19.3.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +1 -1
- package/CHANGELOG.md +17 -0
- package/dist/ej2-querybuilder.umd.min.js +2 -2
- package/dist/ej2-querybuilder.umd.min.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es2015.js +176 -66
- package/dist/es6/ej2-querybuilder.es2015.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es5.js +174 -64
- package/dist/es6/ej2-querybuilder.es5.js.map +1 -1
- package/dist/global/ej2-querybuilder.min.js +2 -2
- package/dist/global/ej2-querybuilder.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/helpers/e2e/index.d.ts +1 -0
- package/helpers/e2e/index.js +6 -0
- package/helpers/e2e/querybuilderHelper.d.ts +37 -0
- package/helpers/e2e/querybuilderHelper.js +36 -0
- package/package.json +11 -11
- package/src/query-builder/query-builder-model.d.ts +10 -3
- package/src/query-builder/query-builder.d.ts +17 -2
- package/src/query-builder/query-builder.js +174 -64
- package/styles/bootstrap5-dark.css +962 -0
- package/styles/bootstrap5-dark.scss +1 -0
- package/styles/bootstrap5.css +962 -0
- package/styles/bootstrap5.scss +1 -0
- package/styles/material-dark.css +3 -3
- package/styles/query-builder/_bootstrap5-dark-definition.scss +1 -0
- package/styles/query-builder/_bootstrap5-definition.scss +107 -0
- package/styles/query-builder/_tailwind-dark-definition.scss +1 -106
- package/styles/query-builder/_tailwind-definition.scss +17 -16
- package/styles/query-builder/_theme.scss +1 -1
- package/styles/query-builder/bootstrap5-dark.css +962 -0
- package/styles/query-builder/bootstrap5-dark.scss +15 -0
- package/styles/query-builder/bootstrap5.css +962 -0
- package/styles/query-builder/bootstrap5.scss +15 -0
- package/styles/query-builder/icons/_bootstrap5-dark.scss +1 -0
- package/styles/query-builder/icons/_bootstrap5.scss +8 -0
- package/styles/query-builder/icons/_tailwind.scss +1 -1
- package/styles/query-builder/material-dark.css +3 -3
- package/styles/query-builder/tailwind-dark.css +9 -9
- package/styles/query-builder/tailwind.css +10 -10
- package/styles/tailwind-dark.css +9 -9
- package/styles/tailwind.css +10 -10
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Animation, Browser, ChildProperty, Collection, Complex, Component, Event, EventHandler, Internationalization, L10n, NotifyPropertyChanges, Property, addClass, classList, cldrData, closest, compile, detach, extend, getComponent, getInstance, getUniqueID, getValue, isNullOrUndefined, removeClass, rippleEffect, select } from '@syncfusion/ej2-base';
|
|
2
2
|
import { Button, RadioButton } from '@syncfusion/ej2-buttons';
|
|
3
|
-
import { CheckBoxSelection, DropDownList, MultiSelect } from '@syncfusion/ej2-dropdowns';
|
|
3
|
+
import { CheckBoxSelection, DropDownList, DropDownTree, MultiSelect } from '@syncfusion/ej2-dropdowns';
|
|
4
4
|
import { DataManager, Deferred, Predicate, Query } from '@syncfusion/ej2-data';
|
|
5
5
|
import { NumericTextBox, TextBox } from '@syncfusion/ej2-inputs';
|
|
6
6
|
import { DatePicker } from '@syncfusion/ej2-calendars';
|
|
@@ -279,7 +279,9 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
279
279
|
}
|
|
280
280
|
updateSubFieldsFromColumns(col, field) {
|
|
281
281
|
for (let i = 0; i < col.length; i++) {
|
|
282
|
-
|
|
282
|
+
if (this.separator != '' && col[i].field.indexOf(this.separator) < 0) {
|
|
283
|
+
col[i].field = field ? field + this.separator + col[i].field : col[i].field;
|
|
284
|
+
}
|
|
283
285
|
if (col[i].operators) {
|
|
284
286
|
this.updateCustomOperator(col[i]);
|
|
285
287
|
}
|
|
@@ -598,28 +600,57 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
598
600
|
this.updateAddedRule(trgt, rule, newRule, isRlTmp, pId);
|
|
599
601
|
}
|
|
600
602
|
if (!column || (column && !column.ruleTemplate)) {
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
603
|
+
if (this.fieldMode === 'Default') {
|
|
604
|
+
let ddlField;
|
|
605
|
+
const ddlValue = this.isImportRules ? this.GetRootColumnName(rule.field) : rule.field;
|
|
606
|
+
ddlField = {
|
|
607
|
+
dataSource: this.columns,
|
|
608
|
+
fields: this.fields, placeholder: this.l10n.getConstant('SelectField'),
|
|
609
|
+
popupHeight: ((this.columns.length > 5) ? height : 'auto'),
|
|
610
|
+
change: this.changeField.bind(this), value: rule ? ddlValue : null, open: this.popupOpen.bind(this)
|
|
611
|
+
};
|
|
612
|
+
if (this.fieldModel) {
|
|
613
|
+
ddlField = Object.assign({}, ddlField, this.fieldModel);
|
|
614
|
+
}
|
|
615
|
+
dropDownList = new DropDownList(ddlField);
|
|
616
|
+
dropDownList.appendTo('#' + ruleElem.id + '_filterkey');
|
|
617
|
+
const ddlVal = this.isImportRules ?
|
|
618
|
+
this.GetRootColumnName(rule.field) : dropDownList.value;
|
|
619
|
+
this.selectedColumn = dropDownList.getDataByValue(ddlVal);
|
|
620
|
+
if (Object.keys(rule).length) {
|
|
621
|
+
this.changeRule(rule, {
|
|
622
|
+
element: dropDownList.element, itemData: this.selectedColumn
|
|
623
|
+
});
|
|
624
|
+
}
|
|
612
625
|
}
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
this.
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
626
|
+
else {
|
|
627
|
+
let dropdowntree;
|
|
628
|
+
let ddlField;
|
|
629
|
+
const ddlValue = this.isImportRules ? rule.field : rule.field;
|
|
630
|
+
ddlField = {
|
|
631
|
+
fields: { dataSource: this.columns,
|
|
632
|
+
value: "field", text: "label", child: 'columns', expanded: "expanded" },
|
|
633
|
+
placeholder: this.l10n.getConstant('SelectField'), showClearButton: false,
|
|
634
|
+
popupHeight: ((this.columns.length > 5) ? height : 'auto'), changeOnBlur: false,
|
|
635
|
+
change: this.changeField.bind(this), value: this.isImportRules ? [ddlValue] : null,
|
|
636
|
+
open: this.popupOpen.bind(this)
|
|
637
|
+
};
|
|
638
|
+
if (this.fieldModel) {
|
|
639
|
+
ddlField = Object.assign({}, ddlField, this.fieldModel);
|
|
640
|
+
}
|
|
641
|
+
dropdowntree = new DropDownTree(ddlField);
|
|
642
|
+
dropdowntree.appendTo('#' + ruleElem.id + '_filterkey');
|
|
643
|
+
if (!isNullOrUndefined(dropdowntree.value)) {
|
|
644
|
+
dropdowntree.element.value = dropdowntree.value[0];
|
|
645
|
+
}
|
|
646
|
+
const ddlVal = this.isImportRules ?
|
|
647
|
+
this.GetRootColumnName(rule.field) : dropdowntree.value;
|
|
648
|
+
this.selectedColumn = this.getColumn(ddlVal);
|
|
649
|
+
if (Object.keys(rule).length) {
|
|
650
|
+
this.changeRule(rule, {
|
|
651
|
+
element: dropdowntree.element, itemData: this.selectedColumn
|
|
652
|
+
});
|
|
653
|
+
}
|
|
623
654
|
}
|
|
624
655
|
}
|
|
625
656
|
ruleID = ruleElem.id.replace(this.element.id + '_', '');
|
|
@@ -847,7 +878,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
847
878
|
else {
|
|
848
879
|
clsName = 'e-removerule e-rule-delete e-css e-btn e-small e-button-hide';
|
|
849
880
|
}
|
|
850
|
-
const delBtnElem = this.createElement('button', { attrs: { class: clsName } });
|
|
881
|
+
const delBtnElem = this.createElement('button', { attrs: { type: 'button', class: clsName } });
|
|
851
882
|
tempElem.appendChild(delBtnElem);
|
|
852
883
|
fieldElem.appendChild(tempElem);
|
|
853
884
|
ruleElem.appendChild(fieldElem);
|
|
@@ -898,7 +929,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
898
929
|
}
|
|
899
930
|
if (isGroup) {
|
|
900
931
|
const clsName = this.showButtons.groupDelete ? 'e-deletegroup' : 'e-deletegroup e-button-hide';
|
|
901
|
-
dltGroupBtn = this.createElement('button', { attrs: { class: clsName } });
|
|
932
|
+
dltGroupBtn = this.createElement('button', { attrs: { type: 'button', class: clsName } });
|
|
902
933
|
const button = new Button({ iconCss: 'e-icons e-delete-icon', cssClass: 'e-small e-round' });
|
|
903
934
|
button.appendTo(dltGroupBtn);
|
|
904
935
|
dltGroupBtn.setAttribute('title', this.l10n.getConstant('DeleteGroup'));
|
|
@@ -974,7 +1005,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
974
1005
|
const groupHdr = groupElem.querySelector('.e-group-header');
|
|
975
1006
|
if (this.headerTemplate) {
|
|
976
1007
|
args = { requestType: 'header-template-initialize', ruleID: groupElem.id,
|
|
977
|
-
notCondition: this.enableNotCondition ? not : undefined, condition: condition, rule: rule };
|
|
1008
|
+
notCondition: this.enableNotCondition ? not : undefined, condition: condition, rule: this.getRuleCollection(rule, true) };
|
|
978
1009
|
this.trigger('actionBegin', args);
|
|
979
1010
|
this.headerFn = this.templateParser(this.headerTemplate);
|
|
980
1011
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -1127,12 +1158,17 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1127
1158
|
}
|
|
1128
1159
|
changeValue(i, args) {
|
|
1129
1160
|
let element;
|
|
1130
|
-
|
|
1161
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1162
|
+
if (args.element && args.element.classList.contains('e-multiselect')) {
|
|
1163
|
+
const multiSelectArgs = args;
|
|
1164
|
+
element = multiSelectArgs.element;
|
|
1165
|
+
}
|
|
1166
|
+
else if (args.event) {
|
|
1131
1167
|
element = args.event.target;
|
|
1132
1168
|
}
|
|
1133
1169
|
else {
|
|
1134
|
-
|
|
1135
|
-
element =
|
|
1170
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1171
|
+
element = args.element;
|
|
1136
1172
|
}
|
|
1137
1173
|
if (element.className.indexOf('e-day') > -1 || element.className.indexOf('e-today') > -1 || element.className.indexOf('e-cell') > -1) {
|
|
1138
1174
|
const calenderArgs = args;
|
|
@@ -1200,10 +1236,41 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1200
1236
|
changeField(args) {
|
|
1201
1237
|
if (args.isInteracted) {
|
|
1202
1238
|
const fieldElem = closest(args.element, '.e-rule-filter') || closest(args.element, '.e-rule-sub-filter');
|
|
1239
|
+
const column = this.fieldMode === 'DropdownTree' ? this.getColumn(args.value[0]) : this.getColumn(args.value);
|
|
1240
|
+
if (this.fieldMode === 'DropdownTree' && fieldElem != null) {
|
|
1241
|
+
const ddtElem = fieldElem.querySelector(".e-control");
|
|
1242
|
+
const ddt = getComponent(ddtElem, 'dropdowntree');
|
|
1243
|
+
if (column) {
|
|
1244
|
+
if (column.type == 'object') {
|
|
1245
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1246
|
+
ddt.value = args.oldValue;
|
|
1247
|
+
ddt.dataBind();
|
|
1248
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1249
|
+
if (isNullOrUndefined(args.oldValue)) {
|
|
1250
|
+
ddtElem.value = "";
|
|
1251
|
+
}
|
|
1252
|
+
else {
|
|
1253
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1254
|
+
ddtElem.value = args.oldValue[0];
|
|
1255
|
+
}
|
|
1256
|
+
return;
|
|
1257
|
+
}
|
|
1258
|
+
else {
|
|
1259
|
+
if (!isNullOrUndefined(args.value[0])) {
|
|
1260
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1261
|
+
ddt.value = args.value[0];
|
|
1262
|
+
ddt.dataBind();
|
|
1263
|
+
ddtElem.value = args.value[0];
|
|
1264
|
+
}
|
|
1265
|
+
}
|
|
1266
|
+
}
|
|
1267
|
+
else {
|
|
1268
|
+
return;
|
|
1269
|
+
}
|
|
1270
|
+
}
|
|
1203
1271
|
this.destroySubFields(fieldElem);
|
|
1204
1272
|
this.subFieldElem = null;
|
|
1205
1273
|
this.isNotValueChange = true;
|
|
1206
|
-
const column = this.getColumn(args.value);
|
|
1207
1274
|
if (column && column.ruleTemplate) {
|
|
1208
1275
|
this.templateChange(args.element, column.field, 'field');
|
|
1209
1276
|
}
|
|
@@ -1222,23 +1289,41 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1222
1289
|
}
|
|
1223
1290
|
changeRule(rule, ddlArgs) {
|
|
1224
1291
|
if (!ddlArgs.itemData) {
|
|
1225
|
-
|
|
1292
|
+
if (this.fieldMode === "DropdownTree") {
|
|
1293
|
+
const ddt = getComponent(ddlArgs.element, 'dropdowntree');
|
|
1294
|
+
if (ddt.value == null) {
|
|
1295
|
+
return;
|
|
1296
|
+
}
|
|
1297
|
+
}
|
|
1298
|
+
else {
|
|
1299
|
+
return;
|
|
1300
|
+
}
|
|
1226
1301
|
}
|
|
1227
1302
|
const tempRule = {};
|
|
1228
1303
|
let filterElem = closest(ddlArgs.element, '.e-rule-filter');
|
|
1229
1304
|
filterElem = filterElem ? filterElem : closest(ddlArgs.element, '.e-rule-sub-filter');
|
|
1230
|
-
|
|
1305
|
+
let ddlObj = getComponent(ddlArgs.element, 'dropdownlist');
|
|
1306
|
+
if (this.fieldMode === 'DropdownTree' && filterElem != null) {
|
|
1307
|
+
ddlObj = getComponent(ddlArgs.element, 'dropdowntree');
|
|
1308
|
+
}
|
|
1231
1309
|
const element = closest(ddlArgs.element, '.e-group-container');
|
|
1232
1310
|
const groupID = element.id.replace(this.element.id + '_', '');
|
|
1233
1311
|
this.changeFilter(filterElem, ddlObj, groupID, rule, tempRule, ddlArgs);
|
|
1234
1312
|
}
|
|
1235
1313
|
changeFilter(flt, dl, grID, rl, tmpRl, dArg) {
|
|
1236
1314
|
if (flt) {
|
|
1237
|
-
|
|
1238
|
-
this.
|
|
1315
|
+
let ddlValue;
|
|
1316
|
+
if (this.fieldMode === 'DropdownTree') {
|
|
1317
|
+
ddlValue = (dl.value[0]);
|
|
1318
|
+
}
|
|
1319
|
+
else {
|
|
1320
|
+
ddlValue = this.isImportRules ? this.GetRootColumnName(dl.value) : dl.value;
|
|
1321
|
+
}
|
|
1322
|
+
this.selectedColumn = this.getColumn(ddlValue);
|
|
1239
1323
|
const ruleElem = closest(flt, '.e-rule-container');
|
|
1240
1324
|
const ruleID = ruleElem.id.replace(this.element.id + '_', '');
|
|
1241
|
-
const eventsArgs = { groupID: grID, ruleID: ruleID, selectedField:
|
|
1325
|
+
const eventsArgs = { groupID: grID, ruleID: ruleID, selectedField: this.fieldMode === 'DropdownTree' ?
|
|
1326
|
+
dl.value[0] : dl.value, cancel: false, type: 'field' };
|
|
1242
1327
|
if (!this.isImportRules) {
|
|
1243
1328
|
this.trigger('beforeChange', eventsArgs, (observedChangeArgs) => {
|
|
1244
1329
|
this.fieldChangeSuccess(observedChangeArgs, tmpRl, flt, rl, dArg);
|
|
@@ -1289,7 +1374,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1289
1374
|
if (ruleElem.querySelector('.e-template')) {
|
|
1290
1375
|
rule.value = '';
|
|
1291
1376
|
}
|
|
1292
|
-
if (this.selectedColumn.type === 'object') {
|
|
1377
|
+
if (this.selectedColumn.type === 'object' && this.fieldMode === 'Default') {
|
|
1293
1378
|
tempRule.type = this.selectedColumn.columns[0].type;
|
|
1294
1379
|
while (this.selectedColumn.columns) {
|
|
1295
1380
|
this.createSubFields(filterElem, rule, tempRule, ddlArgs);
|
|
@@ -1412,9 +1497,16 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1412
1497
|
addClass([operatorElem], 'e-operator');
|
|
1413
1498
|
if (operatorElem.childElementCount) {
|
|
1414
1499
|
ddlObj = getComponent(operatorElem.querySelector('.e-dropdownlist'), 'dropdownlist');
|
|
1415
|
-
const fieldObj = getComponent(filterElem.querySelector('.e-dropdownlist'), 'dropdownlist');
|
|
1416
1500
|
tempRule.operator = ddlObj.value;
|
|
1417
|
-
|
|
1501
|
+
let fieldObj;
|
|
1502
|
+
if (this.fieldMode === 'DropdownTree') {
|
|
1503
|
+
fieldObj = getComponent(filterElem.querySelector('.e-dropdowntree'), 'dropdowntree');
|
|
1504
|
+
}
|
|
1505
|
+
else {
|
|
1506
|
+
fieldObj = getComponent(filterElem.querySelector('.e-dropdownlist'), 'dropdownlist');
|
|
1507
|
+
}
|
|
1508
|
+
tempRule.type = this.fieldMode === 'DropdownTree' ? this.getColumn(fieldObj.value[0]).type :
|
|
1509
|
+
this.getColumn(fieldObj.value).type;
|
|
1418
1510
|
const itemData = ddlArgs.itemData;
|
|
1419
1511
|
this.renderValues(operatorElem, itemData, ddlArgs.previousItemData, true, rule, tempRule, ddlArgs.element);
|
|
1420
1512
|
}
|
|
@@ -1720,8 +1812,10 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1720
1812
|
processTemplate(target, itemData, rule, tempRule) {
|
|
1721
1813
|
const container = closest(target, '.e-rule-container');
|
|
1722
1814
|
const tempElements = container.querySelectorAll('.e-template');
|
|
1723
|
-
const
|
|
1724
|
-
const
|
|
1815
|
+
const filterElem = container.querySelector('.e-rule-filter .e-filter-input');
|
|
1816
|
+
const ddlObj = this.fieldMode === 'DropdownTree' ? getComponent(filterElem, 'dropdowntree')
|
|
1817
|
+
: getComponent(container.querySelector('.e-rule-filter .e-filter-input'), 'dropdownlist');
|
|
1818
|
+
const column = this.fieldMode === 'DropdownTree' ? this.getColumn(ddlObj.value[0]) : this.getColumn(ddlObj.value);
|
|
1725
1819
|
if (typeof itemData.template === 'string' || itemData.template.write === undefined) {
|
|
1726
1820
|
const args = { rule: rule, ruleID: container.id, operator: tempRule.operator, field: column.field,
|
|
1727
1821
|
requestType: 'value-template-create' };
|
|
@@ -1740,8 +1834,11 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1740
1834
|
}
|
|
1741
1835
|
}
|
|
1742
1836
|
getItemData(parentId) {
|
|
1743
|
-
|
|
1744
|
-
|
|
1837
|
+
let fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdownlist');
|
|
1838
|
+
if (this.fieldMode === "DropdownTree") {
|
|
1839
|
+
fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdowntree');
|
|
1840
|
+
}
|
|
1841
|
+
return this.fieldMode === "DropdownTree" ? this.getColumn(fieldObj.value[0]) : this.getColumn(fieldObj.value);
|
|
1745
1842
|
}
|
|
1746
1843
|
setDefaultValue(parentId, isArryValue, isNumber) {
|
|
1747
1844
|
const itemData = this.getItemData(parentId);
|
|
@@ -1833,8 +1930,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1833
1930
|
input.dataBind();
|
|
1834
1931
|
}
|
|
1835
1932
|
else {
|
|
1836
|
-
|
|
1837
|
-
itemData = this.getColumn(fieldObj.value);
|
|
1933
|
+
itemData = columnData;
|
|
1838
1934
|
const min = (itemData.validation && itemData.validation.min) ? itemData.validation.min : 0;
|
|
1839
1935
|
const max = (itemData.validation && itemData.validation.max) ? itemData.validation.max : Number.MAX_VALUE;
|
|
1840
1936
|
const format = itemData.format ? itemData.format : 'n';
|
|
@@ -2080,10 +2176,11 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
2080
2176
|
renderValues(target, itemData, prevItemData, isRender, rule, tempRule, element) {
|
|
2081
2177
|
const subFldElem = target.previousElementSibling;
|
|
2082
2178
|
const filtElem = subFldElem.getElementsByTagName('input')[0];
|
|
2083
|
-
const filtObj = getComponent(filtElem, '
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2179
|
+
const filtObj = this.fieldMode === 'DropdownTree' ? getComponent(filtElem, 'dropdowntree')
|
|
2180
|
+
: getComponent(filtElem, 'dropdownlist');
|
|
2181
|
+
let column = this.fieldMode === 'DropdownTree' ? this.getColumn(filtObj.value[0])
|
|
2182
|
+
: this.getColumn(filtObj.value);
|
|
2183
|
+
this.selectedRule = column;
|
|
2087
2184
|
if (isRender) {
|
|
2088
2185
|
const ddlObj = getComponent(target.querySelector('input'), 'dropdownlist');
|
|
2089
2186
|
itemData = element.id.indexOf('operator') > -1 ? itemData : this.selectedRule;
|
|
@@ -2323,15 +2420,17 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
2323
2420
|
if (this.subFieldElem) {
|
|
2324
2421
|
target = this.subFieldElem;
|
|
2325
2422
|
}
|
|
2326
|
-
dropDownObj = getComponent(target, '
|
|
2327
|
-
|
|
2423
|
+
dropDownObj = this.fieldMode === 'DropdownTree' ? getComponent(target, 'dropdowntree') :
|
|
2424
|
+
getComponent(target, 'dropdownlist');
|
|
2425
|
+
const column = this.fieldMode === 'DropdownTree' ? this.getColumn(dropDownObj.value[0])
|
|
2426
|
+
: this.getColumn(dropDownObj.value);
|
|
2328
2427
|
if (!this.isImportRules && rule.rules[index].field && rule.rules[index].field.toLowerCase() !== column.field.toLowerCase()) {
|
|
2329
2428
|
if (!(ruleElem.querySelectorAll('.e-template')) && !(operator.indexOf('null') > -1)
|
|
2330
2429
|
|| (operator.indexOf('empty') > -1)) {
|
|
2331
2430
|
rule.rules[index].value = '';
|
|
2332
2431
|
}
|
|
2333
2432
|
}
|
|
2334
|
-
this.selectedColumn =
|
|
2433
|
+
this.selectedColumn = this.getColumn(this.selectedColumn.field);
|
|
2335
2434
|
rule.rules[index].field = this.selectedColumn.field;
|
|
2336
2435
|
rule.rules[index].type = this.selectedColumn.type;
|
|
2337
2436
|
rule.rules[index].label = this.selectedColumn.label;
|
|
@@ -2464,8 +2563,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
2464
2563
|
}
|
|
2465
2564
|
}
|
|
2466
2565
|
else if (target.className.indexOf('e-datepicker') > -1) {
|
|
2467
|
-
const
|
|
2468
|
-
const format = this.getFormat(this.getColumn(ddlInst.value).format);
|
|
2566
|
+
const format = this.getFormat(this.getColumn(this.selectedColumn.field).format);
|
|
2469
2567
|
if (format.type) {
|
|
2470
2568
|
if (arrOperator.indexOf(oper) > -1) {
|
|
2471
2569
|
if (typeof rule.rules[index].value === 'string') {
|
|
@@ -2583,7 +2681,12 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
2583
2681
|
element = this.element.querySelectorAll('.e-rule-filter .e-control:not(.e-tooltip)');
|
|
2584
2682
|
len = element.length;
|
|
2585
2683
|
for (i = 0; i < len; i++) {
|
|
2586
|
-
getComponent(element[i], 'dropdownlist')
|
|
2684
|
+
if (getComponent(element[i], 'dropdownlist')) {
|
|
2685
|
+
getComponent(element[i], 'dropdownlist').destroy();
|
|
2686
|
+
}
|
|
2687
|
+
else {
|
|
2688
|
+
getComponent(element[i], 'dropdowntree').destroy();
|
|
2689
|
+
}
|
|
2587
2690
|
detach(element[i]);
|
|
2588
2691
|
}
|
|
2589
2692
|
tooltip = this.element.querySelectorAll('.e-rule-operator .e-control.e-tooltip');
|
|
@@ -2593,8 +2696,10 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
2593
2696
|
element = this.element.querySelectorAll('.e-rule-operator .e-control:not(.e-tooltip)');
|
|
2594
2697
|
len = element.length;
|
|
2595
2698
|
for (i = 0; i < len; i++) {
|
|
2596
|
-
getComponent(element[i], 'dropdownlist')
|
|
2597
|
-
|
|
2699
|
+
if (getComponent(element[i], 'dropdownlist')) {
|
|
2700
|
+
getComponent(element[i], 'dropdownlist').destroy();
|
|
2701
|
+
detach(element[i]);
|
|
2702
|
+
}
|
|
2598
2703
|
}
|
|
2599
2704
|
tooltip = this.element.querySelectorAll('.e-rule-value .e-control.e-tooltip');
|
|
2600
2705
|
for (i = 0; i < tooltip.length; i++) {
|
|
@@ -2736,7 +2841,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
2736
2841
|
}
|
|
2737
2842
|
});
|
|
2738
2843
|
const textElem = this.createElement('textarea', { attrs: { class: 'e-summary-text', readonly: 'true' }, styles: 'max-height:500px' });
|
|
2739
|
-
const editElem = this.createElement('button', { attrs: { class: 'e-edit-rule e-css e-btn e-small e-flat e-primary' } });
|
|
2844
|
+
const editElem = this.createElement('button', { attrs: { type: 'button', class: 'e-edit-rule e-css e-btn e-small e-flat e-primary' } });
|
|
2740
2845
|
const divElem = this.createElement('div', { attrs: { class: 'e-summary-btndiv' } });
|
|
2741
2846
|
contentElem.appendChild(textElem);
|
|
2742
2847
|
textElem.textContent = this.getSqlFromRules(this.rule);
|
|
@@ -3338,6 +3443,9 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
3338
3443
|
return rule;
|
|
3339
3444
|
}
|
|
3340
3445
|
getRuleCollection(rule, isValidRule) {
|
|
3446
|
+
if (isNullOrUndefined(rule)) {
|
|
3447
|
+
return null;
|
|
3448
|
+
}
|
|
3341
3449
|
let orgRule;
|
|
3342
3450
|
if (rule.rules && rule.rules.length && (Object.keys(rule.rules[0]).length > 6 || isValidRule)) {
|
|
3343
3451
|
let jLen = rule.rules.length;
|
|
@@ -4340,14 +4448,8 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
4340
4448
|
return operators[operator];
|
|
4341
4449
|
}
|
|
4342
4450
|
getTypeFromColumn(rules) {
|
|
4343
|
-
const columnData = this.
|
|
4344
|
-
|
|
4345
|
-
if (columnData[i].field === rules.field) {
|
|
4346
|
-
rules.type = columnData[i].type;
|
|
4347
|
-
break;
|
|
4348
|
-
}
|
|
4349
|
-
}
|
|
4350
|
-
return rules.type;
|
|
4451
|
+
const columnData = this.getColumn(rules.field);
|
|
4452
|
+
return columnData.type;
|
|
4351
4453
|
}
|
|
4352
4454
|
processParser(parser, rules, levelColl) {
|
|
4353
4455
|
let j;
|
|
@@ -4362,6 +4464,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
4362
4464
|
let lLen;
|
|
4363
4465
|
let grpCount;
|
|
4364
4466
|
let operator;
|
|
4467
|
+
let isLeftOpened = false;
|
|
4365
4468
|
for (let i = 0, iLen = parser.length; i < iLen; i++) {
|
|
4366
4469
|
if (parser[i][0] === 'Literal') {
|
|
4367
4470
|
rule = { label: parser[i][1], field: parser[i][1] };
|
|
@@ -4380,8 +4483,12 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
4380
4483
|
j = i + 1;
|
|
4381
4484
|
jLen = iLen;
|
|
4382
4485
|
for (j = i + 1; j < jLen; j++) {
|
|
4383
|
-
if (parser[j][0] === '
|
|
4486
|
+
if (operator.indexOf('between') < 0 && parser[j][0] === 'Left') {
|
|
4487
|
+
isLeftOpened = true;
|
|
4488
|
+
}
|
|
4489
|
+
else if (parser[j][0] === 'Right' && isLeftOpened) {
|
|
4384
4490
|
i = j;
|
|
4491
|
+
isLeftOpened = false;
|
|
4385
4492
|
break;
|
|
4386
4493
|
}
|
|
4387
4494
|
else {
|
|
@@ -4519,6 +4626,9 @@ __decorate([
|
|
|
4519
4626
|
__decorate([
|
|
4520
4627
|
Property(false)
|
|
4521
4628
|
], QueryBuilder.prototype, "allowValidation", void 0);
|
|
4629
|
+
__decorate([
|
|
4630
|
+
Property('Default')
|
|
4631
|
+
], QueryBuilder.prototype, "fieldMode", void 0);
|
|
4522
4632
|
__decorate([
|
|
4523
4633
|
Property([])
|
|
4524
4634
|
], QueryBuilder.prototype, "columns", void 0);
|