@syncfusion/ej2-querybuilder 20.3.59 → 20.4.40
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 +16 -1
- package/CHANGELOG.md +5 -11
- package/README.md +43 -43
- package/dist/ej2-querybuilder.min.js +2 -2
- 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 +141 -107
- package/dist/es6/ej2-querybuilder.es2015.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es5.js +139 -105
- 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/package.json +22 -26
- package/src/query-builder/query-builder-model.d.ts +248 -248
- package/src/query-builder/query-builder.d.ts +1 -1
- package/src/query-builder/query-builder.js +139 -105
- package/styles/bootstrap4.css +1 -1
- package/styles/query-builder/bootstrap4.css +1 -1
|
@@ -199,7 +199,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
199
199
|
var bodyElem = this.element.querySelector('.e-group-body');
|
|
200
200
|
var inputElement = this.element.querySelectorAll('input.e-control');
|
|
201
201
|
for (var i = 0, len = inputElement.length; i < len; i++) {
|
|
202
|
-
if (inputElement[i].
|
|
202
|
+
if (inputElement[i].className.indexOf('e-tooltip') > -1) {
|
|
203
|
+
getComponent(inputElement[i], 'tooltip').destroy();
|
|
204
|
+
}
|
|
205
|
+
else if (inputElement[i].parentElement.className.indexOf('e-tooltip') > -1) {
|
|
203
206
|
getComponent(inputElement[i].parentElement, 'tooltip').destroy();
|
|
204
207
|
}
|
|
205
208
|
}
|
|
@@ -383,7 +386,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
383
386
|
if (sqlIdx > -1) {
|
|
384
387
|
var operator_1 = column.operators[j];
|
|
385
388
|
var operColl = Object.keys(operator_1);
|
|
386
|
-
var values = operColl.map(function (key) { return operator_1[key]; }).join(',').split(',');
|
|
389
|
+
var values = operColl.map(function (key) { return operator_1["" + key]; }).join(',').split(',');
|
|
387
390
|
var valueIdx = operColl.indexOf('value');
|
|
388
391
|
this_1.operators[values[valueIdx]] = values[sqlIdx];
|
|
389
392
|
}
|
|
@@ -780,6 +783,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
780
783
|
var tooltip = new Tooltip({ content: this.l10n.getConstant('ValidationMessage'),
|
|
781
784
|
position: 'BottomCenter', cssClass: 'e-querybuilder-error' });
|
|
782
785
|
tooltip.appendTo(element);
|
|
786
|
+
// eslint-disable-next-line
|
|
783
787
|
tooltip.open(element);
|
|
784
788
|
};
|
|
785
789
|
/**
|
|
@@ -803,23 +807,25 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
803
807
|
var tempElem = void 0;
|
|
804
808
|
var rule = void 0;
|
|
805
809
|
var ruleElemCln = this.element.querySelectorAll('.e-rule-container');
|
|
806
|
-
var validateRule = void 0;
|
|
807
810
|
for (i = 0, len = ruleElemCln.length; i < len; i++) {
|
|
811
|
+
var validateRule = void 0;
|
|
808
812
|
groupElem = closest(ruleElemCln[i], '.e-group-container');
|
|
809
813
|
rule = this.getParentGroup(groupElem);
|
|
810
814
|
index = 0;
|
|
811
815
|
indexElem = tempElem = ruleElemCln[i];
|
|
812
816
|
if (this.fieldMode === 'DropdownTree') {
|
|
813
|
-
dropDownTreeObj = getComponent(ruleElemCln[i].querySelector('.e-rule-
|
|
814
|
-
if (dropDownTreeObj.value && dropDownTreeObj.value.length) {
|
|
817
|
+
dropDownTreeObj = getComponent(ruleElemCln[i].querySelector('.e-rule-filter input.e-dropdowntree'), 'dropdowntree');
|
|
818
|
+
if (dropDownTreeObj && dropDownTreeObj.value && dropDownTreeObj.value.length) {
|
|
815
819
|
this.selectedColumn = this.getColumn(dropDownTreeObj.value[0]);
|
|
816
820
|
validateRule = this.selectedColumn.validation;
|
|
817
821
|
}
|
|
818
822
|
}
|
|
819
823
|
else {
|
|
820
|
-
dropDownObj = getComponent(ruleElemCln[i].querySelector('.e-rule-
|
|
821
|
-
|
|
822
|
-
|
|
824
|
+
dropDownObj = getComponent(ruleElemCln[i].querySelector('.e-rule-filter input.e-dropdownlist'), 'dropdownlist');
|
|
825
|
+
if (dropDownObj && dropDownObj.value) {
|
|
826
|
+
this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);
|
|
827
|
+
validateRule = !isNullOrUndefined(dropDownObj.index) && this.selectedColumn.validation;
|
|
828
|
+
}
|
|
823
829
|
}
|
|
824
830
|
fieldElem = tempElem.querySelector('.e-rule-field input.e-control');
|
|
825
831
|
if (validateRule && validateRule.isRequired) {
|
|
@@ -837,8 +843,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
837
843
|
if (rule.rules[index].value instanceof Array) {
|
|
838
844
|
valArray = rule.rules[index].value;
|
|
839
845
|
}
|
|
840
|
-
if (excludeOprs.indexOf(rule.rules[index].operator) < 0 &&
|
|
841
|
-
rule.rules[index].
|
|
846
|
+
if (excludeOprs.indexOf(rule.rules[index].operator) < 0 &&
|
|
847
|
+
(isNullOrUndefined(rule.rules[index].value) &&
|
|
848
|
+
rule.rules[index].type !== 'date') || rule.rules[index].value === '' ||
|
|
842
849
|
(rule.rules[index].value instanceof Array && valArray.length < 1)) {
|
|
843
850
|
var valElem = tempElem.querySelectorAll('.e-rule-value .e-control');
|
|
844
851
|
isValid = false;
|
|
@@ -861,8 +868,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
861
868
|
else if ((dropDownObj && dropDownObj.element && isNullOrUndefined(dropDownObj.index)) ||
|
|
862
869
|
(dropDownTreeObj && dropDownTreeObj.element && (isNullOrUndefined(dropDownTreeObj.value) ||
|
|
863
870
|
dropDownTreeObj.value.length < 1))) {
|
|
864
|
-
if (fieldElem.
|
|
865
|
-
this.renderToolTip(fieldElem
|
|
871
|
+
if (fieldElem.className.indexOf('e-tooltip') < 0) {
|
|
872
|
+
this.renderToolTip(fieldElem);
|
|
866
873
|
}
|
|
867
874
|
isValid = false;
|
|
868
875
|
}
|
|
@@ -916,7 +923,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
916
923
|
groupElem.appendChild(grpBodyElem);
|
|
917
924
|
// create button group in OR and AND process
|
|
918
925
|
if (!this.headerTemplate) {
|
|
919
|
-
glueElem = this.createElement('div', { attrs: { class: 'e-lib e-btn-group' } });
|
|
926
|
+
glueElem = this.createElement('div', { attrs: { class: 'e-lib e-btn-group', role: 'group' } });
|
|
920
927
|
if (this.enableNotCondition) {
|
|
921
928
|
inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });
|
|
922
929
|
glueElem.appendChild(inputElem);
|
|
@@ -1526,6 +1533,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1526
1533
|
}
|
|
1527
1534
|
};
|
|
1528
1535
|
QueryBuilder.prototype.createSubFields = function (filterElem, rule, tempRule, ddlArgs) {
|
|
1536
|
+
var subFieldValue = false;
|
|
1529
1537
|
var fieldElem = closest(filterElem, '.e-rule-field');
|
|
1530
1538
|
var tempElem = this.createElement('div', { attrs: { class: 'e-rule-sub-filter', id: 'subfilter' + this.subFilterCounter } });
|
|
1531
1539
|
fieldElem.insertBefore(tempElem, fieldElem.querySelector('.e-rule-operator'));
|
|
@@ -1555,6 +1563,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1555
1563
|
if (rule.field === subField[i].field || rule.field.indexOf(subField[i].field) > -1) {
|
|
1556
1564
|
dropDownList.value = subField[i].field;
|
|
1557
1565
|
this.selectedColumn = subField[i];
|
|
1566
|
+
subFieldValue = true;
|
|
1558
1567
|
break;
|
|
1559
1568
|
}
|
|
1560
1569
|
}
|
|
@@ -1563,7 +1572,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1563
1572
|
this.subFieldElem = subFieldElem;
|
|
1564
1573
|
// eslint-disable-next-line
|
|
1565
1574
|
ddlArgs.itemData = ddlArgs.itemData;
|
|
1566
|
-
if (!this.isImportRules) {
|
|
1575
|
+
if (!this.isImportRules || (!subFieldValue && this.selectedColumn.columns)) {
|
|
1576
|
+
if (!subFieldValue && this.isImportRules) {
|
|
1577
|
+
dropDownList.value = null;
|
|
1578
|
+
}
|
|
1567
1579
|
this.selectedColumn = this.selectedColumn.columns[0];
|
|
1568
1580
|
}
|
|
1569
1581
|
if (!this.selectedColumn.columns) {
|
|
@@ -1800,29 +1812,29 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1800
1812
|
for (var j = 0, jLen = fieldColl.length; j < jLen; j++) {
|
|
1801
1813
|
fieldStr = fieldColl[j];
|
|
1802
1814
|
if (fieldColl.length === (j + 1)) {
|
|
1803
|
-
value = dataObj[fieldStr];
|
|
1804
|
-
if (Number(dataObj[fieldStr]) === dataObj[fieldStr] && dataObj[fieldStr] % 1 !== 0) {
|
|
1805
|
-
value = dataObj[fieldStr].toString();
|
|
1815
|
+
value = dataObj["" + fieldStr];
|
|
1816
|
+
if (Number(dataObj["" + fieldStr]) === dataObj["" + fieldStr] && dataObj["" + fieldStr] % 1 !== 0) {
|
|
1817
|
+
value = dataObj["" + fieldStr].toString();
|
|
1806
1818
|
}
|
|
1807
1819
|
}
|
|
1808
1820
|
else {
|
|
1809
|
-
dataObj = dataObj[fieldStr];
|
|
1821
|
+
dataObj = dataObj["" + fieldStr];
|
|
1810
1822
|
}
|
|
1811
1823
|
}
|
|
1812
1824
|
}
|
|
1813
1825
|
else {
|
|
1814
|
-
value = dataSource[i][field];
|
|
1815
|
-
if (Number(dataSource[i][field]) === dataSource[i][field] && dataSource[i][field] % 1 !== 0) {
|
|
1816
|
-
value = dataSource[i][field].toString();
|
|
1826
|
+
value = dataSource[i]["" + field];
|
|
1827
|
+
if (Number(dataSource[i]["" + field]) === dataSource[i]["" + field] && dataSource[i]["" + field] % 1 !== 0) {
|
|
1828
|
+
value = dataSource[i]["" + field].toString();
|
|
1817
1829
|
}
|
|
1818
1830
|
}
|
|
1819
1831
|
if (!(value in original)) {
|
|
1820
|
-
original[value] = 1;
|
|
1832
|
+
original["" + value] = 1;
|
|
1821
1833
|
if (fieldColl.length > 1) {
|
|
1822
1834
|
this.createNestedObject(data, fieldColl, value);
|
|
1823
1835
|
}
|
|
1824
1836
|
else {
|
|
1825
|
-
data[field] = value;
|
|
1837
|
+
data["" + field] = value;
|
|
1826
1838
|
}
|
|
1827
1839
|
result.push(data);
|
|
1828
1840
|
}
|
|
@@ -1836,9 +1848,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1836
1848
|
for (var k = 0; k < lastIndex; ++k) {
|
|
1837
1849
|
key = fieldColl[k];
|
|
1838
1850
|
if (!(key in obj)) {
|
|
1839
|
-
obj[key] = {};
|
|
1851
|
+
obj["" + key] = {};
|
|
1840
1852
|
}
|
|
1841
|
-
obj = obj[key];
|
|
1853
|
+
obj = obj["" + key];
|
|
1842
1854
|
}
|
|
1843
1855
|
obj[fieldColl[lastIndex]] = value;
|
|
1844
1856
|
};
|
|
@@ -1850,28 +1862,28 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1850
1862
|
var isNested = field.indexOf(this.separator);
|
|
1851
1863
|
var _loop_2 = function (i, iLen) {
|
|
1852
1864
|
if (isNested === 0) {
|
|
1853
|
-
value = dataSource[i][field];
|
|
1865
|
+
value = dataSource[i]["" + field];
|
|
1854
1866
|
}
|
|
1855
1867
|
else {
|
|
1856
1868
|
nest = field.split(this_2.separator);
|
|
1857
1869
|
// eslint-disable-next-line @typescript-eslint/tslint/config
|
|
1858
1870
|
nest.forEach(function (element) {
|
|
1859
1871
|
if (value) {
|
|
1860
|
-
value = value[element];
|
|
1872
|
+
value = value["" + element];
|
|
1861
1873
|
}
|
|
1862
1874
|
else {
|
|
1863
|
-
value = dataSource[i][element];
|
|
1875
|
+
value = dataSource[i]["" + element];
|
|
1864
1876
|
}
|
|
1865
1877
|
});
|
|
1866
1878
|
}
|
|
1867
|
-
if (Number(dataSource[i][field]) === dataSource[i][field] && dataSource[i][field] % 1 !== 0) {
|
|
1868
|
-
value = dataSource[i][field].toString();
|
|
1879
|
+
if (Number(dataSource[i]["" + field]) === dataSource[i]["" + field] && dataSource[i]["" + field] % 1 !== 0) {
|
|
1880
|
+
value = dataSource[i]["" + field].toString();
|
|
1869
1881
|
}
|
|
1870
1882
|
var data = {};
|
|
1871
1883
|
if (!(value in original)) {
|
|
1872
|
-
original[value] = 1;
|
|
1884
|
+
original["" + value] = 1;
|
|
1873
1885
|
if (isNested === 0) {
|
|
1874
|
-
data[field] = value;
|
|
1886
|
+
data["" + field] = value;
|
|
1875
1887
|
}
|
|
1876
1888
|
else {
|
|
1877
1889
|
data[nest[nest.length - 1]] = value;
|
|
@@ -2351,7 +2363,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2351
2363
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2352
2364
|
prevItemData = this.getColumn(prevItemData.value);
|
|
2353
2365
|
}
|
|
2354
|
-
if (column.template && prevItemData && Object.keys(prevItemData).length < 4) {
|
|
2366
|
+
if (column && column.template && prevItemData && Object.keys(prevItemData).length < 4) {
|
|
2355
2367
|
prevItemData.template = column.template;
|
|
2356
2368
|
}
|
|
2357
2369
|
return prevItemData;
|
|
@@ -2407,7 +2419,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2407
2419
|
this.validateValue(rule, closest(target, '.e-rule-container'));
|
|
2408
2420
|
this.destroyControls(target);
|
|
2409
2421
|
}
|
|
2410
|
-
|
|
2422
|
+
if (column) {
|
|
2423
|
+
itemData.template = column.template;
|
|
2424
|
+
}
|
|
2411
2425
|
if (itemData.template) {
|
|
2412
2426
|
addClass([target.nextElementSibling], 'e-template-value');
|
|
2413
2427
|
itemData.template = column.template;
|
|
@@ -2619,7 +2633,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2619
2633
|
var column = this.fieldMode === 'DropdownTree' ? this.getColumn(dropDownObj.value[0])
|
|
2620
2634
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2621
2635
|
: this.getColumn(dropDownObj.value);
|
|
2622
|
-
if (!this.isImportRules && rule.rules[index].field &&
|
|
2636
|
+
if (!this.isImportRules && rule.rules[index].field &&
|
|
2637
|
+
rule.rules[index].field.toLowerCase() !== column.field.toLowerCase()) {
|
|
2623
2638
|
if (!(ruleElem.querySelectorAll('.e-template')) && !(operator.indexOf('null') > -1)
|
|
2624
2639
|
|| (operator.indexOf('empty') > -1)) {
|
|
2625
2640
|
rule.rules[index].value = '';
|
|
@@ -2655,8 +2670,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2655
2670
|
if (!this.isImportRules) {
|
|
2656
2671
|
this.trigger('change', eventsArgs);
|
|
2657
2672
|
}
|
|
2658
|
-
if (this.allowValidation && rule.rules[index].field && target.
|
|
2659
|
-
getComponent(target
|
|
2673
|
+
if (this.allowValidation && rule.rules[index].field && target.className.indexOf('e-tooltip') > -1) {
|
|
2674
|
+
getComponent(target, 'tooltip').destroy();
|
|
2660
2675
|
}
|
|
2661
2676
|
this.filterRules(beforeRules, this.getValidRules(this.rule), 'field');
|
|
2662
2677
|
}
|
|
@@ -3414,7 +3429,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3414
3429
|
EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);
|
|
3415
3430
|
};
|
|
3416
3431
|
QueryBuilder.prototype.getParentGroup = function (target, isParent) {
|
|
3417
|
-
var groupLevel = (target instanceof Element) ? this.levelColl[target.id] : this.levelColl[target];
|
|
3432
|
+
var groupLevel = (target instanceof Element) ? this.levelColl[target.id] : this.levelColl["" + target];
|
|
3418
3433
|
var len = isParent ? groupLevel.length - 1 : groupLevel.length;
|
|
3419
3434
|
var rule = this.rule;
|
|
3420
3435
|
for (var i = 0; i < len; i++) {
|
|
@@ -3576,6 +3591,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3576
3591
|
err = [];
|
|
3577
3592
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3578
3593
|
var error = 'error';
|
|
3594
|
+
// eslint-disable-next-line
|
|
3579
3595
|
err[error] = error;
|
|
3580
3596
|
}
|
|
3581
3597
|
// eslint-enable
|
|
@@ -3737,6 +3753,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3737
3753
|
else {
|
|
3738
3754
|
rule = { 'condition': rule.condition, 'rules': rule.rules };
|
|
3739
3755
|
}
|
|
3756
|
+
if (rule.rules.length === 0) {
|
|
3757
|
+
rule = {};
|
|
3758
|
+
}
|
|
3740
3759
|
}
|
|
3741
3760
|
}
|
|
3742
3761
|
return rule;
|
|
@@ -3945,7 +3964,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3945
3964
|
if (i === 0) {
|
|
3946
3965
|
if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 || oper.indexOf('null') > -1 ||
|
|
3947
3966
|
oper.indexOf('empty') > -1) && oper.indexOf('contains') < 0) {
|
|
3948
|
-
pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue) :
|
|
3967
|
+
pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue) :
|
|
3968
|
+
this.arrayPredicate(ruleColl[i]);
|
|
3949
3969
|
}
|
|
3950
3970
|
else {
|
|
3951
3971
|
var value = ruleValue;
|
|
@@ -4429,89 +4449,90 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4429
4449
|
queryStr += rulesNotCondition;
|
|
4430
4450
|
}
|
|
4431
4451
|
}
|
|
4432
|
-
|
|
4433
|
-
|
|
4434
|
-
|
|
4435
|
-
|
|
4436
|
-
|
|
4437
|
-
|
|
4438
|
-
|
|
4439
|
-
|
|
4440
|
-
|
|
4441
|
-
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
|
|
4452
|
+
if (rules.rules) {
|
|
4453
|
+
for (var j = 0, jLen = rules.rules.length; j < jLen; j++) {
|
|
4454
|
+
if (rules.rules[j].rules) {
|
|
4455
|
+
queryStr = this.getSqlString(rules.rules[j], enableEscape, queryStr, sqlLocale);
|
|
4456
|
+
}
|
|
4457
|
+
else {
|
|
4458
|
+
var rule = rules.rules[j];
|
|
4459
|
+
var valueStr = '';
|
|
4460
|
+
var ruleOpertor = sqlLocale ? this.sqlOperators[rule.operator] : this.operators[rule.operator];
|
|
4461
|
+
if (rule.value instanceof Array) {
|
|
4462
|
+
if (rule.operator.toString().indexOf('between') > -1) {
|
|
4463
|
+
var ruleCondition = sqlLocale ? ' ' + this.l10n.getConstant('AND').toUpperCase() + ' ' : ' ' + 'AND' + ' ';
|
|
4464
|
+
if (rule.type === 'date' && !this.isDateFunction(rule.value[0])) {
|
|
4465
|
+
valueStr += '"' + rule.value[0] + '"' + ruleCondition + '"' + rule.value[1] + '"';
|
|
4466
|
+
}
|
|
4467
|
+
else {
|
|
4468
|
+
valueStr += rule.value[0] + ruleCondition + rule.value[1];
|
|
4469
|
+
}
|
|
4446
4470
|
}
|
|
4447
4471
|
else {
|
|
4448
|
-
|
|
4472
|
+
if (typeof rule.value[0] === 'string' && rule.value !== null) {
|
|
4473
|
+
valueStr += '("' + rule.value[0] + '"';
|
|
4474
|
+
for (var k = 1, kLen = rule.value.length; k < kLen; k++) {
|
|
4475
|
+
valueStr += ',"' + rule.value[k] + '"';
|
|
4476
|
+
}
|
|
4477
|
+
valueStr += ')';
|
|
4478
|
+
}
|
|
4479
|
+
else {
|
|
4480
|
+
valueStr += '(' + rule.value + ')';
|
|
4481
|
+
}
|
|
4449
4482
|
}
|
|
4450
4483
|
}
|
|
4451
4484
|
else {
|
|
4452
|
-
if (
|
|
4453
|
-
valueStr += '("' + rule.value
|
|
4454
|
-
|
|
4455
|
-
|
|
4456
|
-
|
|
4457
|
-
|
|
4485
|
+
if (rule.operator.toString().indexOf('startswith') > -1) {
|
|
4486
|
+
valueStr += rule.value ? '("' + rule.value + '%")' : '(' + rule.value + ')';
|
|
4487
|
+
}
|
|
4488
|
+
else if (rule.operator.toString().indexOf('endswith') > -1) {
|
|
4489
|
+
valueStr += rule.value ? '("%' + rule.value + '")' : '(' + rule.value + ')';
|
|
4490
|
+
}
|
|
4491
|
+
else if (rule.operator.toString().indexOf('contains') > -1) {
|
|
4492
|
+
valueStr += rule.value ? '("%' + rule.value + '%")' : '(' + rule.value + ')';
|
|
4458
4493
|
}
|
|
4459
4494
|
else {
|
|
4460
|
-
|
|
4495
|
+
if (rule.type === 'number' || typeof rule.value === 'boolean' || rule.value === null) {
|
|
4496
|
+
valueStr += rule.value;
|
|
4497
|
+
}
|
|
4498
|
+
else {
|
|
4499
|
+
valueStr += '"' + rule.value + '"';
|
|
4500
|
+
}
|
|
4461
4501
|
}
|
|
4462
4502
|
}
|
|
4463
|
-
|
|
4464
|
-
|
|
4465
|
-
|
|
4466
|
-
valueStr += rule.value ? '("' + rule.value + '%")' : '(' + rule.value + ')';
|
|
4467
|
-
}
|
|
4468
|
-
else if (rule.operator.toString().indexOf('endswith') > -1) {
|
|
4469
|
-
valueStr += rule.value ? '("%' + rule.value + '")' : '(' + rule.value + ')';
|
|
4470
|
-
}
|
|
4471
|
-
else if (rule.operator.toString().indexOf('contains') > -1) {
|
|
4472
|
-
valueStr += rule.value ? '("%' + rule.value + '%")' : '(' + rule.value + ')';
|
|
4473
|
-
}
|
|
4474
|
-
else {
|
|
4475
|
-
if (rule.type === 'number' || typeof rule.value === 'boolean' || rule.value === null) {
|
|
4476
|
-
valueStr += rule.value;
|
|
4503
|
+
if (rule.operator.toString().indexOf('null') > -1 || (rule.operator.toString().indexOf('empty') > -1)) {
|
|
4504
|
+
if (enableEscape) {
|
|
4505
|
+
rule.field = '`' + rule.field + '`';
|
|
4477
4506
|
}
|
|
4478
4507
|
else {
|
|
4479
|
-
|
|
4508
|
+
if (rule.field.indexOf(' ') > -1) {
|
|
4509
|
+
rule.field = '"' + rule.field + '"';
|
|
4510
|
+
}
|
|
4480
4511
|
}
|
|
4481
|
-
|
|
4482
|
-
}
|
|
4483
|
-
if (rule.operator.toString().indexOf('null') > -1 || (rule.operator.toString().indexOf('empty') > -1)) {
|
|
4484
|
-
if (enableEscape) {
|
|
4485
|
-
rule.field = '`' + rule.field + '`';
|
|
4512
|
+
queryStr += rule.field + ' ' + ruleOpertor;
|
|
4486
4513
|
}
|
|
4487
4514
|
else {
|
|
4488
|
-
if (
|
|
4489
|
-
rule.field = '
|
|
4515
|
+
if (enableEscape) {
|
|
4516
|
+
rule.field = '`' + rule.field + '`';
|
|
4490
4517
|
}
|
|
4491
|
-
|
|
4492
|
-
|
|
4493
|
-
|
|
4494
|
-
|
|
4495
|
-
if (enableEscape) {
|
|
4496
|
-
rule.field = '`' + rule.field + '`';
|
|
4497
|
-
}
|
|
4498
|
-
else {
|
|
4499
|
-
if (rule.field.indexOf(' ') > -1) {
|
|
4500
|
-
rule.field = '"' + rule.field + '"';
|
|
4518
|
+
else {
|
|
4519
|
+
if (rule.field.indexOf(' ') > -1) {
|
|
4520
|
+
rule.field = '"' + rule.field + '"';
|
|
4521
|
+
}
|
|
4501
4522
|
}
|
|
4523
|
+
queryStr += rule.field + ' ' + ruleOpertor + ' ' + valueStr;
|
|
4524
|
+
}
|
|
4525
|
+
if (rule.condition && rule.condition !== '') {
|
|
4526
|
+
condition = rule.condition;
|
|
4502
4527
|
}
|
|
4503
|
-
queryStr += rule.field + ' ' + ruleOpertor + ' ' + valueStr;
|
|
4504
|
-
}
|
|
4505
|
-
if (rule.condition && rule.condition !== '') {
|
|
4506
|
-
condition = rule.condition;
|
|
4507
4528
|
}
|
|
4508
|
-
|
|
4509
|
-
|
|
4510
|
-
|
|
4511
|
-
|
|
4529
|
+
if (j !== jLen - 1) {
|
|
4530
|
+
if (condition === '') {
|
|
4531
|
+
condition = rules.rules[j].condition;
|
|
4532
|
+
}
|
|
4533
|
+
condition = sqlLocale ? this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();
|
|
4534
|
+
queryStr += ' ' + condition + ' ';
|
|
4512
4535
|
}
|
|
4513
|
-
condition = sqlLocale ? this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();
|
|
4514
|
-
queryStr += ' ' + condition + ' ';
|
|
4515
4536
|
}
|
|
4516
4537
|
}
|
|
4517
4538
|
if (!isRoot) {
|
|
@@ -4558,7 +4579,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4558
4579
|
*
|
|
4559
4580
|
* @param {RuleModel} rule - 'rule' to be passed to get the sql.
|
|
4560
4581
|
* @param {boolean} allowEscape - Set `true` if it exclude the escape character.
|
|
4561
|
-
*
|
|
4582
|
+
* @param {boolean} sqlLocale - Set `true` if Localization for Sql query.
|
|
4562
4583
|
* @returns {object} - Sql query from rules.
|
|
4563
4584
|
*/
|
|
4564
4585
|
QueryBuilder.prototype.getSqlFromRules = function (rule, allowEscape, sqlLocale) {
|
|
@@ -4602,6 +4623,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4602
4623
|
var matchValue;
|
|
4603
4624
|
for (var i = 0, iLen = operators.length; i < iLen; i++) {
|
|
4604
4625
|
regexStr = /^\w+$/.test(operators[i]) ? '\\b' : '';
|
|
4626
|
+
// eslint-disable-next-line
|
|
4605
4627
|
regex = new RegExp('^(' + operators[i] + ')' + regexStr, 'ig');
|
|
4606
4628
|
if (regex.exec(sqlString)) {
|
|
4607
4629
|
this.parser.push(['Operators', operators[i].toLowerCase()]);
|
|
@@ -4612,6 +4634,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4612
4634
|
if (!lastPasrser || (lastPasrser && lastPasrser[0] !== 'Literal')) {
|
|
4613
4635
|
for (var i = 0, iLen = conditions.length; i < iLen; i++) {
|
|
4614
4636
|
regexStr = /^\w+$/.test(conditions[i]) ? '\\b' : '';
|
|
4637
|
+
// eslint-disable-next-line
|
|
4615
4638
|
regex = new RegExp('^(' + conditions[i] + ')' + regexStr, 'ig');
|
|
4616
4639
|
if (regex.exec(sqlString)) {
|
|
4617
4640
|
this.parser.push(['Conditions', conditions[i].toLowerCase()]);
|
|
@@ -4621,6 +4644,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4621
4644
|
}
|
|
4622
4645
|
for (var i = 0, iLen = subOp.length; i < iLen; i++) {
|
|
4623
4646
|
regexStr = /^\w+$/.test(subOp[i]) ? '\\b' : '';
|
|
4647
|
+
// eslint-disable-next-line
|
|
4624
4648
|
regex = new RegExp('^(' + subOp[i] + ')' + regexStr, 'ig');
|
|
4625
4649
|
if (regex.exec(sqlString)) {
|
|
4626
4650
|
this.parser.push(['SubOperators', subOp[i].toLowerCase()]);
|
|
@@ -4664,30 +4688,39 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4664
4688
|
return matchValue.length + 2;
|
|
4665
4689
|
}
|
|
4666
4690
|
if (this.checkNumberLiteral(sqlString, sqlLocale)) {
|
|
4691
|
+
// eslint-disable-next-line
|
|
4667
4692
|
matchValue = /^[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
|
|
4668
4693
|
this.parser.push(['Literal', matchValue]);
|
|
4669
4694
|
return matchValue.length;
|
|
4670
4695
|
}
|
|
4671
4696
|
//String
|
|
4697
|
+
// eslint-disable-next-line
|
|
4672
4698
|
if (/^'((?:[^\\']+?|\\.|'')*)'(?!')/.exec(sqlString)) {
|
|
4699
|
+
// eslint-disable-next-line
|
|
4673
4700
|
matchValue = /^'((?:[^\\']+?|\\.|'')*)'(?!')/.exec(sqlString)[0];
|
|
4674
4701
|
this.parser.push(['String', matchValue]);
|
|
4675
4702
|
return matchValue.length;
|
|
4676
4703
|
}
|
|
4677
4704
|
//Double String
|
|
4705
|
+
// eslint-disable-next-line
|
|
4678
4706
|
if (/^"([^\\"]*(?:\\.[^\\"]*)*)"/.exec(sqlString)) {
|
|
4707
|
+
// eslint-disable-next-line
|
|
4679
4708
|
matchValue = /^"([^\\"]*(?:\\.[^\\"]*)*)"/.exec(sqlString)[0];
|
|
4680
4709
|
this.parser.push(['DoubleString', matchValue]);
|
|
4681
4710
|
return matchValue.length;
|
|
4682
4711
|
}
|
|
4683
4712
|
//Number
|
|
4713
|
+
// eslint-disable-next-line
|
|
4684
4714
|
if (/^[0-9]+(\.[0-9]+)?/.exec(sqlString)) {
|
|
4715
|
+
// eslint-disable-next-line
|
|
4685
4716
|
matchValue = /^[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
|
|
4686
4717
|
this.parser.push(['Number', matchValue]);
|
|
4687
4718
|
return matchValue.length;
|
|
4688
4719
|
}
|
|
4689
4720
|
//Negative Number
|
|
4721
|
+
// eslint-disable-next-line
|
|
4690
4722
|
if (/^-?[0-9]+(\.[0-9]+)?/.exec(sqlString)) {
|
|
4723
|
+
// eslint-disable-next-line
|
|
4691
4724
|
matchValue = /^-?[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
|
|
4692
4725
|
this.parser.push(['Number', matchValue]);
|
|
4693
4726
|
return matchValue.length;
|
|
@@ -4713,6 +4746,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4713
4746
|
return true;
|
|
4714
4747
|
}
|
|
4715
4748
|
else {
|
|
4749
|
+
// eslint-disable-next-line
|
|
4716
4750
|
if (/^[0-9]+(\.[0-9]+)?/.exec(sqlString)) {
|
|
4717
4751
|
var secParser = this.parser[this.parser.length - 2];
|
|
4718
4752
|
var betweenParser = this.parser[this.parser.length - 3];
|
|
@@ -4770,7 +4804,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4770
4804
|
return 'equal';
|
|
4771
4805
|
}
|
|
4772
4806
|
}
|
|
4773
|
-
return operators[operator];
|
|
4807
|
+
return operators["" + operator];
|
|
4774
4808
|
};
|
|
4775
4809
|
QueryBuilder.prototype.getTypeFromColumn = function (rules) {
|
|
4776
4810
|
var columnData = this.getColumn(rules.field);
|