@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
|
@@ -744,7 +744,7 @@ export declare class QueryBuilder extends Component<HTMLDivElement> implements I
|
|
|
744
744
|
*
|
|
745
745
|
* @param {RuleModel} rule - 'rule' to be passed to get the sql.
|
|
746
746
|
* @param {boolean} allowEscape - Set `true` if it exclude the escape character.
|
|
747
|
-
*
|
|
747
|
+
* @param {boolean} sqlLocale - Set `true` if Localization for Sql query.
|
|
748
748
|
* @returns {object} - Sql query from rules.
|
|
749
749
|
*/
|
|
750
750
|
getSqlFromRules(rule?: RuleModel, allowEscape?: boolean, sqlLocale?: boolean): string;
|
|
@@ -208,7 +208,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
208
208
|
var bodyElem = this.element.querySelector('.e-group-body');
|
|
209
209
|
var inputElement = this.element.querySelectorAll('input.e-control');
|
|
210
210
|
for (var i = 0, len = inputElement.length; i < len; i++) {
|
|
211
|
-
if (inputElement[i].
|
|
211
|
+
if (inputElement[i].className.indexOf('e-tooltip') > -1) {
|
|
212
|
+
getComponent(inputElement[i], 'tooltip').destroy();
|
|
213
|
+
}
|
|
214
|
+
else if (inputElement[i].parentElement.className.indexOf('e-tooltip') > -1) {
|
|
212
215
|
getComponent(inputElement[i].parentElement, 'tooltip').destroy();
|
|
213
216
|
}
|
|
214
217
|
}
|
|
@@ -392,7 +395,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
392
395
|
if (sqlIdx > -1) {
|
|
393
396
|
var operator_1 = column.operators[j];
|
|
394
397
|
var operColl = Object.keys(operator_1);
|
|
395
|
-
var values = operColl.map(function (key) { return operator_1[key]; }).join(',').split(',');
|
|
398
|
+
var values = operColl.map(function (key) { return operator_1["" + key]; }).join(',').split(',');
|
|
396
399
|
var valueIdx = operColl.indexOf('value');
|
|
397
400
|
this_1.operators[values[valueIdx]] = values[sqlIdx];
|
|
398
401
|
}
|
|
@@ -789,6 +792,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
789
792
|
var tooltip = new Tooltip({ content: this.l10n.getConstant('ValidationMessage'),
|
|
790
793
|
position: 'BottomCenter', cssClass: 'e-querybuilder-error' });
|
|
791
794
|
tooltip.appendTo(element);
|
|
795
|
+
// eslint-disable-next-line
|
|
792
796
|
tooltip.open(element);
|
|
793
797
|
};
|
|
794
798
|
/**
|
|
@@ -812,23 +816,25 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
812
816
|
var tempElem = void 0;
|
|
813
817
|
var rule = void 0;
|
|
814
818
|
var ruleElemCln = this.element.querySelectorAll('.e-rule-container');
|
|
815
|
-
var validateRule = void 0;
|
|
816
819
|
for (i = 0, len = ruleElemCln.length; i < len; i++) {
|
|
820
|
+
var validateRule = void 0;
|
|
817
821
|
groupElem = closest(ruleElemCln[i], '.e-group-container');
|
|
818
822
|
rule = this.getParentGroup(groupElem);
|
|
819
823
|
index = 0;
|
|
820
824
|
indexElem = tempElem = ruleElemCln[i];
|
|
821
825
|
if (this.fieldMode === 'DropdownTree') {
|
|
822
|
-
dropDownTreeObj = getComponent(ruleElemCln[i].querySelector('.e-rule-
|
|
823
|
-
if (dropDownTreeObj.value && dropDownTreeObj.value.length) {
|
|
826
|
+
dropDownTreeObj = getComponent(ruleElemCln[i].querySelector('.e-rule-filter input.e-dropdowntree'), 'dropdowntree');
|
|
827
|
+
if (dropDownTreeObj && dropDownTreeObj.value && dropDownTreeObj.value.length) {
|
|
824
828
|
this.selectedColumn = this.getColumn(dropDownTreeObj.value[0]);
|
|
825
829
|
validateRule = this.selectedColumn.validation;
|
|
826
830
|
}
|
|
827
831
|
}
|
|
828
832
|
else {
|
|
829
|
-
dropDownObj = getComponent(ruleElemCln[i].querySelector('.e-rule-
|
|
830
|
-
|
|
831
|
-
|
|
833
|
+
dropDownObj = getComponent(ruleElemCln[i].querySelector('.e-rule-filter input.e-dropdownlist'), 'dropdownlist');
|
|
834
|
+
if (dropDownObj && dropDownObj.value) {
|
|
835
|
+
this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);
|
|
836
|
+
validateRule = !isNullOrUndefined(dropDownObj.index) && this.selectedColumn.validation;
|
|
837
|
+
}
|
|
832
838
|
}
|
|
833
839
|
fieldElem = tempElem.querySelector('.e-rule-field input.e-control');
|
|
834
840
|
if (validateRule && validateRule.isRequired) {
|
|
@@ -846,8 +852,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
846
852
|
if (rule.rules[index].value instanceof Array) {
|
|
847
853
|
valArray = rule.rules[index].value;
|
|
848
854
|
}
|
|
849
|
-
if (excludeOprs.indexOf(rule.rules[index].operator) < 0 &&
|
|
850
|
-
rule.rules[index].
|
|
855
|
+
if (excludeOprs.indexOf(rule.rules[index].operator) < 0 &&
|
|
856
|
+
(isNullOrUndefined(rule.rules[index].value) &&
|
|
857
|
+
rule.rules[index].type !== 'date') || rule.rules[index].value === '' ||
|
|
851
858
|
(rule.rules[index].value instanceof Array && valArray.length < 1)) {
|
|
852
859
|
var valElem = tempElem.querySelectorAll('.e-rule-value .e-control');
|
|
853
860
|
isValid = false;
|
|
@@ -870,8 +877,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
870
877
|
else if ((dropDownObj && dropDownObj.element && isNullOrUndefined(dropDownObj.index)) ||
|
|
871
878
|
(dropDownTreeObj && dropDownTreeObj.element && (isNullOrUndefined(dropDownTreeObj.value) ||
|
|
872
879
|
dropDownTreeObj.value.length < 1))) {
|
|
873
|
-
if (fieldElem.
|
|
874
|
-
this.renderToolTip(fieldElem
|
|
880
|
+
if (fieldElem.className.indexOf('e-tooltip') < 0) {
|
|
881
|
+
this.renderToolTip(fieldElem);
|
|
875
882
|
}
|
|
876
883
|
isValid = false;
|
|
877
884
|
}
|
|
@@ -925,7 +932,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
925
932
|
groupElem.appendChild(grpBodyElem);
|
|
926
933
|
// create button group in OR and AND process
|
|
927
934
|
if (!this.headerTemplate) {
|
|
928
|
-
glueElem = this.createElement('div', { attrs: { class: 'e-lib e-btn-group' } });
|
|
935
|
+
glueElem = this.createElement('div', { attrs: { class: 'e-lib e-btn-group', role: 'group' } });
|
|
929
936
|
if (this.enableNotCondition) {
|
|
930
937
|
inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });
|
|
931
938
|
glueElem.appendChild(inputElem);
|
|
@@ -1535,6 +1542,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1535
1542
|
}
|
|
1536
1543
|
};
|
|
1537
1544
|
QueryBuilder.prototype.createSubFields = function (filterElem, rule, tempRule, ddlArgs) {
|
|
1545
|
+
var subFieldValue = false;
|
|
1538
1546
|
var fieldElem = closest(filterElem, '.e-rule-field');
|
|
1539
1547
|
var tempElem = this.createElement('div', { attrs: { class: 'e-rule-sub-filter', id: 'subfilter' + this.subFilterCounter } });
|
|
1540
1548
|
fieldElem.insertBefore(tempElem, fieldElem.querySelector('.e-rule-operator'));
|
|
@@ -1564,6 +1572,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1564
1572
|
if (rule.field === subField[i].field || rule.field.indexOf(subField[i].field) > -1) {
|
|
1565
1573
|
dropDownList.value = subField[i].field;
|
|
1566
1574
|
this.selectedColumn = subField[i];
|
|
1575
|
+
subFieldValue = true;
|
|
1567
1576
|
break;
|
|
1568
1577
|
}
|
|
1569
1578
|
}
|
|
@@ -1572,7 +1581,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1572
1581
|
this.subFieldElem = subFieldElem;
|
|
1573
1582
|
// eslint-disable-next-line
|
|
1574
1583
|
ddlArgs.itemData = ddlArgs.itemData;
|
|
1575
|
-
if (!this.isImportRules) {
|
|
1584
|
+
if (!this.isImportRules || (!subFieldValue && this.selectedColumn.columns)) {
|
|
1585
|
+
if (!subFieldValue && this.isImportRules) {
|
|
1586
|
+
dropDownList.value = null;
|
|
1587
|
+
}
|
|
1576
1588
|
this.selectedColumn = this.selectedColumn.columns[0];
|
|
1577
1589
|
}
|
|
1578
1590
|
if (!this.selectedColumn.columns) {
|
|
@@ -1809,29 +1821,29 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1809
1821
|
for (var j = 0, jLen = fieldColl.length; j < jLen; j++) {
|
|
1810
1822
|
fieldStr = fieldColl[j];
|
|
1811
1823
|
if (fieldColl.length === (j + 1)) {
|
|
1812
|
-
value = dataObj[fieldStr];
|
|
1813
|
-
if (Number(dataObj[fieldStr]) === dataObj[fieldStr] && dataObj[fieldStr] % 1 !== 0) {
|
|
1814
|
-
value = dataObj[fieldStr].toString();
|
|
1824
|
+
value = dataObj["" + fieldStr];
|
|
1825
|
+
if (Number(dataObj["" + fieldStr]) === dataObj["" + fieldStr] && dataObj["" + fieldStr] % 1 !== 0) {
|
|
1826
|
+
value = dataObj["" + fieldStr].toString();
|
|
1815
1827
|
}
|
|
1816
1828
|
}
|
|
1817
1829
|
else {
|
|
1818
|
-
dataObj = dataObj[fieldStr];
|
|
1830
|
+
dataObj = dataObj["" + fieldStr];
|
|
1819
1831
|
}
|
|
1820
1832
|
}
|
|
1821
1833
|
}
|
|
1822
1834
|
else {
|
|
1823
|
-
value = dataSource[i][field];
|
|
1824
|
-
if (Number(dataSource[i][field]) === dataSource[i][field] && dataSource[i][field] % 1 !== 0) {
|
|
1825
|
-
value = dataSource[i][field].toString();
|
|
1835
|
+
value = dataSource[i]["" + field];
|
|
1836
|
+
if (Number(dataSource[i]["" + field]) === dataSource[i]["" + field] && dataSource[i]["" + field] % 1 !== 0) {
|
|
1837
|
+
value = dataSource[i]["" + field].toString();
|
|
1826
1838
|
}
|
|
1827
1839
|
}
|
|
1828
1840
|
if (!(value in original)) {
|
|
1829
|
-
original[value] = 1;
|
|
1841
|
+
original["" + value] = 1;
|
|
1830
1842
|
if (fieldColl.length > 1) {
|
|
1831
1843
|
this.createNestedObject(data, fieldColl, value);
|
|
1832
1844
|
}
|
|
1833
1845
|
else {
|
|
1834
|
-
data[field] = value;
|
|
1846
|
+
data["" + field] = value;
|
|
1835
1847
|
}
|
|
1836
1848
|
result.push(data);
|
|
1837
1849
|
}
|
|
@@ -1845,9 +1857,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1845
1857
|
for (var k = 0; k < lastIndex; ++k) {
|
|
1846
1858
|
key = fieldColl[k];
|
|
1847
1859
|
if (!(key in obj)) {
|
|
1848
|
-
obj[key] = {};
|
|
1860
|
+
obj["" + key] = {};
|
|
1849
1861
|
}
|
|
1850
|
-
obj = obj[key];
|
|
1862
|
+
obj = obj["" + key];
|
|
1851
1863
|
}
|
|
1852
1864
|
obj[fieldColl[lastIndex]] = value;
|
|
1853
1865
|
};
|
|
@@ -1859,28 +1871,28 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1859
1871
|
var isNested = field.indexOf(this.separator);
|
|
1860
1872
|
var _loop_2 = function (i, iLen) {
|
|
1861
1873
|
if (isNested === 0) {
|
|
1862
|
-
value = dataSource[i][field];
|
|
1874
|
+
value = dataSource[i]["" + field];
|
|
1863
1875
|
}
|
|
1864
1876
|
else {
|
|
1865
1877
|
nest = field.split(this_2.separator);
|
|
1866
1878
|
// eslint-disable-next-line @typescript-eslint/tslint/config
|
|
1867
1879
|
nest.forEach(function (element) {
|
|
1868
1880
|
if (value) {
|
|
1869
|
-
value = value[element];
|
|
1881
|
+
value = value["" + element];
|
|
1870
1882
|
}
|
|
1871
1883
|
else {
|
|
1872
|
-
value = dataSource[i][element];
|
|
1884
|
+
value = dataSource[i]["" + element];
|
|
1873
1885
|
}
|
|
1874
1886
|
});
|
|
1875
1887
|
}
|
|
1876
|
-
if (Number(dataSource[i][field]) === dataSource[i][field] && dataSource[i][field] % 1 !== 0) {
|
|
1877
|
-
value = dataSource[i][field].toString();
|
|
1888
|
+
if (Number(dataSource[i]["" + field]) === dataSource[i]["" + field] && dataSource[i]["" + field] % 1 !== 0) {
|
|
1889
|
+
value = dataSource[i]["" + field].toString();
|
|
1878
1890
|
}
|
|
1879
1891
|
var data = {};
|
|
1880
1892
|
if (!(value in original)) {
|
|
1881
|
-
original[value] = 1;
|
|
1893
|
+
original["" + value] = 1;
|
|
1882
1894
|
if (isNested === 0) {
|
|
1883
|
-
data[field] = value;
|
|
1895
|
+
data["" + field] = value;
|
|
1884
1896
|
}
|
|
1885
1897
|
else {
|
|
1886
1898
|
data[nest[nest.length - 1]] = value;
|
|
@@ -2360,7 +2372,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2360
2372
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2361
2373
|
prevItemData = this.getColumn(prevItemData.value);
|
|
2362
2374
|
}
|
|
2363
|
-
if (column.template && prevItemData && Object.keys(prevItemData).length < 4) {
|
|
2375
|
+
if (column && column.template && prevItemData && Object.keys(prevItemData).length < 4) {
|
|
2364
2376
|
prevItemData.template = column.template;
|
|
2365
2377
|
}
|
|
2366
2378
|
return prevItemData;
|
|
@@ -2416,7 +2428,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2416
2428
|
this.validateValue(rule, closest(target, '.e-rule-container'));
|
|
2417
2429
|
this.destroyControls(target);
|
|
2418
2430
|
}
|
|
2419
|
-
|
|
2431
|
+
if (column) {
|
|
2432
|
+
itemData.template = column.template;
|
|
2433
|
+
}
|
|
2420
2434
|
if (itemData.template) {
|
|
2421
2435
|
addClass([target.nextElementSibling], 'e-template-value');
|
|
2422
2436
|
itemData.template = column.template;
|
|
@@ -2628,7 +2642,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2628
2642
|
var column = this.fieldMode === 'DropdownTree' ? this.getColumn(dropDownObj.value[0])
|
|
2629
2643
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2630
2644
|
: this.getColumn(dropDownObj.value);
|
|
2631
|
-
if (!this.isImportRules && rule.rules[index].field &&
|
|
2645
|
+
if (!this.isImportRules && rule.rules[index].field &&
|
|
2646
|
+
rule.rules[index].field.toLowerCase() !== column.field.toLowerCase()) {
|
|
2632
2647
|
if (!(ruleElem.querySelectorAll('.e-template')) && !(operator.indexOf('null') > -1)
|
|
2633
2648
|
|| (operator.indexOf('empty') > -1)) {
|
|
2634
2649
|
rule.rules[index].value = '';
|
|
@@ -2664,8 +2679,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2664
2679
|
if (!this.isImportRules) {
|
|
2665
2680
|
this.trigger('change', eventsArgs);
|
|
2666
2681
|
}
|
|
2667
|
-
if (this.allowValidation && rule.rules[index].field && target.
|
|
2668
|
-
getComponent(target
|
|
2682
|
+
if (this.allowValidation && rule.rules[index].field && target.className.indexOf('e-tooltip') > -1) {
|
|
2683
|
+
getComponent(target, 'tooltip').destroy();
|
|
2669
2684
|
}
|
|
2670
2685
|
this.filterRules(beforeRules, this.getValidRules(this.rule), 'field');
|
|
2671
2686
|
}
|
|
@@ -3423,7 +3438,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3423
3438
|
EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);
|
|
3424
3439
|
};
|
|
3425
3440
|
QueryBuilder.prototype.getParentGroup = function (target, isParent) {
|
|
3426
|
-
var groupLevel = (target instanceof Element) ? this.levelColl[target.id] : this.levelColl[target];
|
|
3441
|
+
var groupLevel = (target instanceof Element) ? this.levelColl[target.id] : this.levelColl["" + target];
|
|
3427
3442
|
var len = isParent ? groupLevel.length - 1 : groupLevel.length;
|
|
3428
3443
|
var rule = this.rule;
|
|
3429
3444
|
for (var i = 0; i < len; i++) {
|
|
@@ -3585,6 +3600,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3585
3600
|
err = [];
|
|
3586
3601
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3587
3602
|
var error = 'error';
|
|
3603
|
+
// eslint-disable-next-line
|
|
3588
3604
|
err[error] = error;
|
|
3589
3605
|
}
|
|
3590
3606
|
// eslint-enable
|
|
@@ -3746,6 +3762,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3746
3762
|
else {
|
|
3747
3763
|
rule = { 'condition': rule.condition, 'rules': rule.rules };
|
|
3748
3764
|
}
|
|
3765
|
+
if (rule.rules.length === 0) {
|
|
3766
|
+
rule = {};
|
|
3767
|
+
}
|
|
3749
3768
|
}
|
|
3750
3769
|
}
|
|
3751
3770
|
return rule;
|
|
@@ -3954,7 +3973,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3954
3973
|
if (i === 0) {
|
|
3955
3974
|
if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 || oper.indexOf('null') > -1 ||
|
|
3956
3975
|
oper.indexOf('empty') > -1) && oper.indexOf('contains') < 0) {
|
|
3957
|
-
pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue) :
|
|
3976
|
+
pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue) :
|
|
3977
|
+
this.arrayPredicate(ruleColl[i]);
|
|
3958
3978
|
}
|
|
3959
3979
|
else {
|
|
3960
3980
|
var value = ruleValue;
|
|
@@ -4438,89 +4458,90 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4438
4458
|
queryStr += rulesNotCondition;
|
|
4439
4459
|
}
|
|
4440
4460
|
}
|
|
4441
|
-
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
|
|
4446
|
-
|
|
4447
|
-
|
|
4448
|
-
|
|
4449
|
-
|
|
4450
|
-
|
|
4451
|
-
|
|
4452
|
-
|
|
4453
|
-
|
|
4454
|
-
|
|
4461
|
+
if (rules.rules) {
|
|
4462
|
+
for (var j = 0, jLen = rules.rules.length; j < jLen; j++) {
|
|
4463
|
+
if (rules.rules[j].rules) {
|
|
4464
|
+
queryStr = this.getSqlString(rules.rules[j], enableEscape, queryStr, sqlLocale);
|
|
4465
|
+
}
|
|
4466
|
+
else {
|
|
4467
|
+
var rule = rules.rules[j];
|
|
4468
|
+
var valueStr = '';
|
|
4469
|
+
var ruleOpertor = sqlLocale ? this.sqlOperators[rule.operator] : this.operators[rule.operator];
|
|
4470
|
+
if (rule.value instanceof Array) {
|
|
4471
|
+
if (rule.operator.toString().indexOf('between') > -1) {
|
|
4472
|
+
var ruleCondition = sqlLocale ? ' ' + this.l10n.getConstant('AND').toUpperCase() + ' ' : ' ' + 'AND' + ' ';
|
|
4473
|
+
if (rule.type === 'date' && !this.isDateFunction(rule.value[0])) {
|
|
4474
|
+
valueStr += '"' + rule.value[0] + '"' + ruleCondition + '"' + rule.value[1] + '"';
|
|
4475
|
+
}
|
|
4476
|
+
else {
|
|
4477
|
+
valueStr += rule.value[0] + ruleCondition + rule.value[1];
|
|
4478
|
+
}
|
|
4455
4479
|
}
|
|
4456
4480
|
else {
|
|
4457
|
-
|
|
4481
|
+
if (typeof rule.value[0] === 'string' && rule.value !== null) {
|
|
4482
|
+
valueStr += '("' + rule.value[0] + '"';
|
|
4483
|
+
for (var k = 1, kLen = rule.value.length; k < kLen; k++) {
|
|
4484
|
+
valueStr += ',"' + rule.value[k] + '"';
|
|
4485
|
+
}
|
|
4486
|
+
valueStr += ')';
|
|
4487
|
+
}
|
|
4488
|
+
else {
|
|
4489
|
+
valueStr += '(' + rule.value + ')';
|
|
4490
|
+
}
|
|
4458
4491
|
}
|
|
4459
4492
|
}
|
|
4460
4493
|
else {
|
|
4461
|
-
if (
|
|
4462
|
-
valueStr += '("' + rule.value
|
|
4463
|
-
|
|
4464
|
-
|
|
4465
|
-
|
|
4466
|
-
|
|
4494
|
+
if (rule.operator.toString().indexOf('startswith') > -1) {
|
|
4495
|
+
valueStr += rule.value ? '("' + rule.value + '%")' : '(' + rule.value + ')';
|
|
4496
|
+
}
|
|
4497
|
+
else if (rule.operator.toString().indexOf('endswith') > -1) {
|
|
4498
|
+
valueStr += rule.value ? '("%' + rule.value + '")' : '(' + rule.value + ')';
|
|
4499
|
+
}
|
|
4500
|
+
else if (rule.operator.toString().indexOf('contains') > -1) {
|
|
4501
|
+
valueStr += rule.value ? '("%' + rule.value + '%")' : '(' + rule.value + ')';
|
|
4467
4502
|
}
|
|
4468
4503
|
else {
|
|
4469
|
-
|
|
4504
|
+
if (rule.type === 'number' || typeof rule.value === 'boolean' || rule.value === null) {
|
|
4505
|
+
valueStr += rule.value;
|
|
4506
|
+
}
|
|
4507
|
+
else {
|
|
4508
|
+
valueStr += '"' + rule.value + '"';
|
|
4509
|
+
}
|
|
4470
4510
|
}
|
|
4471
4511
|
}
|
|
4472
|
-
|
|
4473
|
-
|
|
4474
|
-
|
|
4475
|
-
valueStr += rule.value ? '("' + rule.value + '%")' : '(' + rule.value + ')';
|
|
4476
|
-
}
|
|
4477
|
-
else if (rule.operator.toString().indexOf('endswith') > -1) {
|
|
4478
|
-
valueStr += rule.value ? '("%' + rule.value + '")' : '(' + rule.value + ')';
|
|
4479
|
-
}
|
|
4480
|
-
else if (rule.operator.toString().indexOf('contains') > -1) {
|
|
4481
|
-
valueStr += rule.value ? '("%' + rule.value + '%")' : '(' + rule.value + ')';
|
|
4482
|
-
}
|
|
4483
|
-
else {
|
|
4484
|
-
if (rule.type === 'number' || typeof rule.value === 'boolean' || rule.value === null) {
|
|
4485
|
-
valueStr += rule.value;
|
|
4512
|
+
if (rule.operator.toString().indexOf('null') > -1 || (rule.operator.toString().indexOf('empty') > -1)) {
|
|
4513
|
+
if (enableEscape) {
|
|
4514
|
+
rule.field = '`' + rule.field + '`';
|
|
4486
4515
|
}
|
|
4487
4516
|
else {
|
|
4488
|
-
|
|
4517
|
+
if (rule.field.indexOf(' ') > -1) {
|
|
4518
|
+
rule.field = '"' + rule.field + '"';
|
|
4519
|
+
}
|
|
4489
4520
|
}
|
|
4490
|
-
|
|
4491
|
-
}
|
|
4492
|
-
if (rule.operator.toString().indexOf('null') > -1 || (rule.operator.toString().indexOf('empty') > -1)) {
|
|
4493
|
-
if (enableEscape) {
|
|
4494
|
-
rule.field = '`' + rule.field + '`';
|
|
4521
|
+
queryStr += rule.field + ' ' + ruleOpertor;
|
|
4495
4522
|
}
|
|
4496
4523
|
else {
|
|
4497
|
-
if (
|
|
4498
|
-
rule.field = '
|
|
4524
|
+
if (enableEscape) {
|
|
4525
|
+
rule.field = '`' + rule.field + '`';
|
|
4499
4526
|
}
|
|
4500
|
-
|
|
4501
|
-
|
|
4502
|
-
|
|
4503
|
-
|
|
4504
|
-
if (enableEscape) {
|
|
4505
|
-
rule.field = '`' + rule.field + '`';
|
|
4506
|
-
}
|
|
4507
|
-
else {
|
|
4508
|
-
if (rule.field.indexOf(' ') > -1) {
|
|
4509
|
-
rule.field = '"' + rule.field + '"';
|
|
4527
|
+
else {
|
|
4528
|
+
if (rule.field.indexOf(' ') > -1) {
|
|
4529
|
+
rule.field = '"' + rule.field + '"';
|
|
4530
|
+
}
|
|
4510
4531
|
}
|
|
4532
|
+
queryStr += rule.field + ' ' + ruleOpertor + ' ' + valueStr;
|
|
4533
|
+
}
|
|
4534
|
+
if (rule.condition && rule.condition !== '') {
|
|
4535
|
+
condition = rule.condition;
|
|
4511
4536
|
}
|
|
4512
|
-
queryStr += rule.field + ' ' + ruleOpertor + ' ' + valueStr;
|
|
4513
|
-
}
|
|
4514
|
-
if (rule.condition && rule.condition !== '') {
|
|
4515
|
-
condition = rule.condition;
|
|
4516
4537
|
}
|
|
4517
|
-
|
|
4518
|
-
|
|
4519
|
-
|
|
4520
|
-
|
|
4538
|
+
if (j !== jLen - 1) {
|
|
4539
|
+
if (condition === '') {
|
|
4540
|
+
condition = rules.rules[j].condition;
|
|
4541
|
+
}
|
|
4542
|
+
condition = sqlLocale ? this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();
|
|
4543
|
+
queryStr += ' ' + condition + ' ';
|
|
4521
4544
|
}
|
|
4522
|
-
condition = sqlLocale ? this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();
|
|
4523
|
-
queryStr += ' ' + condition + ' ';
|
|
4524
4545
|
}
|
|
4525
4546
|
}
|
|
4526
4547
|
if (!isRoot) {
|
|
@@ -4567,7 +4588,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4567
4588
|
*
|
|
4568
4589
|
* @param {RuleModel} rule - 'rule' to be passed to get the sql.
|
|
4569
4590
|
* @param {boolean} allowEscape - Set `true` if it exclude the escape character.
|
|
4570
|
-
*
|
|
4591
|
+
* @param {boolean} sqlLocale - Set `true` if Localization for Sql query.
|
|
4571
4592
|
* @returns {object} - Sql query from rules.
|
|
4572
4593
|
*/
|
|
4573
4594
|
QueryBuilder.prototype.getSqlFromRules = function (rule, allowEscape, sqlLocale) {
|
|
@@ -4611,6 +4632,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4611
4632
|
var matchValue;
|
|
4612
4633
|
for (var i = 0, iLen = operators.length; i < iLen; i++) {
|
|
4613
4634
|
regexStr = /^\w+$/.test(operators[i]) ? '\\b' : '';
|
|
4635
|
+
// eslint-disable-next-line
|
|
4614
4636
|
regex = new RegExp('^(' + operators[i] + ')' + regexStr, 'ig');
|
|
4615
4637
|
if (regex.exec(sqlString)) {
|
|
4616
4638
|
this.parser.push(['Operators', operators[i].toLowerCase()]);
|
|
@@ -4621,6 +4643,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4621
4643
|
if (!lastPasrser || (lastPasrser && lastPasrser[0] !== 'Literal')) {
|
|
4622
4644
|
for (var i = 0, iLen = conditions.length; i < iLen; i++) {
|
|
4623
4645
|
regexStr = /^\w+$/.test(conditions[i]) ? '\\b' : '';
|
|
4646
|
+
// eslint-disable-next-line
|
|
4624
4647
|
regex = new RegExp('^(' + conditions[i] + ')' + regexStr, 'ig');
|
|
4625
4648
|
if (regex.exec(sqlString)) {
|
|
4626
4649
|
this.parser.push(['Conditions', conditions[i].toLowerCase()]);
|
|
@@ -4630,6 +4653,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4630
4653
|
}
|
|
4631
4654
|
for (var i = 0, iLen = subOp.length; i < iLen; i++) {
|
|
4632
4655
|
regexStr = /^\w+$/.test(subOp[i]) ? '\\b' : '';
|
|
4656
|
+
// eslint-disable-next-line
|
|
4633
4657
|
regex = new RegExp('^(' + subOp[i] + ')' + regexStr, 'ig');
|
|
4634
4658
|
if (regex.exec(sqlString)) {
|
|
4635
4659
|
this.parser.push(['SubOperators', subOp[i].toLowerCase()]);
|
|
@@ -4673,30 +4697,39 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4673
4697
|
return matchValue.length + 2;
|
|
4674
4698
|
}
|
|
4675
4699
|
if (this.checkNumberLiteral(sqlString, sqlLocale)) {
|
|
4700
|
+
// eslint-disable-next-line
|
|
4676
4701
|
matchValue = /^[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
|
|
4677
4702
|
this.parser.push(['Literal', matchValue]);
|
|
4678
4703
|
return matchValue.length;
|
|
4679
4704
|
}
|
|
4680
4705
|
//String
|
|
4706
|
+
// eslint-disable-next-line
|
|
4681
4707
|
if (/^'((?:[^\\']+?|\\.|'')*)'(?!')/.exec(sqlString)) {
|
|
4708
|
+
// eslint-disable-next-line
|
|
4682
4709
|
matchValue = /^'((?:[^\\']+?|\\.|'')*)'(?!')/.exec(sqlString)[0];
|
|
4683
4710
|
this.parser.push(['String', matchValue]);
|
|
4684
4711
|
return matchValue.length;
|
|
4685
4712
|
}
|
|
4686
4713
|
//Double String
|
|
4714
|
+
// eslint-disable-next-line
|
|
4687
4715
|
if (/^"([^\\"]*(?:\\.[^\\"]*)*)"/.exec(sqlString)) {
|
|
4716
|
+
// eslint-disable-next-line
|
|
4688
4717
|
matchValue = /^"([^\\"]*(?:\\.[^\\"]*)*)"/.exec(sqlString)[0];
|
|
4689
4718
|
this.parser.push(['DoubleString', matchValue]);
|
|
4690
4719
|
return matchValue.length;
|
|
4691
4720
|
}
|
|
4692
4721
|
//Number
|
|
4722
|
+
// eslint-disable-next-line
|
|
4693
4723
|
if (/^[0-9]+(\.[0-9]+)?/.exec(sqlString)) {
|
|
4724
|
+
// eslint-disable-next-line
|
|
4694
4725
|
matchValue = /^[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
|
|
4695
4726
|
this.parser.push(['Number', matchValue]);
|
|
4696
4727
|
return matchValue.length;
|
|
4697
4728
|
}
|
|
4698
4729
|
//Negative Number
|
|
4730
|
+
// eslint-disable-next-line
|
|
4699
4731
|
if (/^-?[0-9]+(\.[0-9]+)?/.exec(sqlString)) {
|
|
4732
|
+
// eslint-disable-next-line
|
|
4700
4733
|
matchValue = /^-?[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
|
|
4701
4734
|
this.parser.push(['Number', matchValue]);
|
|
4702
4735
|
return matchValue.length;
|
|
@@ -4722,6 +4755,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4722
4755
|
return true;
|
|
4723
4756
|
}
|
|
4724
4757
|
else {
|
|
4758
|
+
// eslint-disable-next-line
|
|
4725
4759
|
if (/^[0-9]+(\.[0-9]+)?/.exec(sqlString)) {
|
|
4726
4760
|
var secParser = this.parser[this.parser.length - 2];
|
|
4727
4761
|
var betweenParser = this.parser[this.parser.length - 3];
|
|
@@ -4779,7 +4813,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4779
4813
|
return 'equal';
|
|
4780
4814
|
}
|
|
4781
4815
|
}
|
|
4782
|
-
return operators[operator];
|
|
4816
|
+
return operators["" + operator];
|
|
4783
4817
|
};
|
|
4784
4818
|
QueryBuilder.prototype.getTypeFromColumn = function (rules) {
|
|
4785
4819
|
var columnData = this.getColumn(rules.field);
|
package/styles/bootstrap4.css
CHANGED