@syncfusion/ej2-querybuilder 19.4.40 → 19.4.50
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/.github/PULL_REQUEST_TEMPLATE/Bug.md +63 -0
- package/.github/PULL_REQUEST_TEMPLATE/feature.md +39 -0
- package/CHANGELOG.md +27 -1
- package/dist/ej2-querybuilder.umd.min.js +2 -11
- package/dist/ej2-querybuilder.umd.min.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es2015.js +118 -21
- package/dist/es6/ej2-querybuilder.es2015.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es5.js +117 -20
- package/dist/es6/ej2-querybuilder.es5.js.map +1 -1
- package/dist/global/ej2-querybuilder.min.js +2 -11
- package/dist/global/ej2-querybuilder.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -10
- package/package.json +13 -17
- package/src/query-builder/query-builder.d.ts +6 -0
- package/src/query-builder/query-builder.js +117 -20
- package/styles/bootstrap4.css +5 -0
- package/styles/bootstrap5-dark.css +8 -3
- package/styles/bootstrap5.css +8 -3
- package/styles/query-builder/_bootstrap5-definition.scss +1 -1
- package/styles/query-builder/_fluent-definition.scss +107 -0
- package/styles/query-builder/_layout.scss +6 -1
- package/styles/query-builder/_tailwind-definition.scss +1 -1
- package/styles/query-builder/bootstrap4.css +5 -0
- package/styles/query-builder/bootstrap5-dark.css +8 -3
- package/styles/query-builder/bootstrap5.css +8 -3
- package/styles/query-builder/icons/_fluent.scss +8 -0
- package/styles/query-builder/tailwind-dark.css +3 -3
- package/styles/query-builder/tailwind.css +3 -3
- package/styles/tailwind-dark.css +3 -3
- package/styles/tailwind.css +3 -3
|
@@ -134,6 +134,9 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
134
134
|
this.isNotified = false;
|
|
135
135
|
this.isAddSuccess = false;
|
|
136
136
|
this.isNotValueChange = false;
|
|
137
|
+
this.isFieldChange = false;
|
|
138
|
+
this.isFieldClose = false;
|
|
139
|
+
this.isDestroy = false;
|
|
137
140
|
MultiSelect.Inject(CheckBoxSelection);
|
|
138
141
|
}
|
|
139
142
|
getPersistData() {
|
|
@@ -606,8 +609,8 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
606
609
|
ddlField = {
|
|
607
610
|
dataSource: this.columns,
|
|
608
611
|
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)
|
|
612
|
+
popupHeight: ((this.columns.length > 5) ? height : 'auto'), close: this.fieldClose.bind(this, ruleElem.id + '_filterkey'),
|
|
613
|
+
change: this.changeField.bind(this), value: rule ? ddlValue : null, open: this.popupOpen.bind(this, true)
|
|
611
614
|
};
|
|
612
615
|
if (this.fieldModel) {
|
|
613
616
|
ddlField = Object.assign({}, ddlField, this.fieldModel);
|
|
@@ -629,11 +632,11 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
629
632
|
const ddlValue = this.isImportRules ? rule.field : rule.field;
|
|
630
633
|
ddlField = {
|
|
631
634
|
fields: { dataSource: this.columns,
|
|
632
|
-
value:
|
|
635
|
+
value: 'field', text: 'label', child: 'columns', expanded: 'expanded' },
|
|
633
636
|
placeholder: this.l10n.getConstant('SelectField'), showClearButton: false,
|
|
634
637
|
popupHeight: ((this.columns.length > 5) ? height : 'auto'), changeOnBlur: false,
|
|
635
638
|
change: this.changeField.bind(this), value: this.isImportRules ? [ddlValue] : null,
|
|
636
|
-
open: this.popupOpen.bind(this)
|
|
639
|
+
open: this.popupOpen.bind(this, false)
|
|
637
640
|
};
|
|
638
641
|
if (this.fieldModel) {
|
|
639
642
|
ddlField = Object.assign({}, ddlField, this.fieldModel);
|
|
@@ -677,12 +680,19 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
677
680
|
else {
|
|
678
681
|
groupElem = closest(target, '.e-group-container');
|
|
679
682
|
rules = this.getParentGroup(groupElem);
|
|
683
|
+
const custom = rule.custom;
|
|
680
684
|
if (Object.keys(rule).length) {
|
|
681
685
|
rules.rules.push({
|
|
682
686
|
'field': rule.field, 'type': rule.type, 'label': rule.label, 'operator': rule.operator, value: rule.value
|
|
683
687
|
});
|
|
688
|
+
if (custom) {
|
|
689
|
+
rules.rules[rules.rules.length - 1].custom = custom;
|
|
690
|
+
}
|
|
684
691
|
}
|
|
685
692
|
else {
|
|
693
|
+
if (custom) {
|
|
694
|
+
newRule.custom = custom;
|
|
695
|
+
}
|
|
686
696
|
rules.rules.push(newRule);
|
|
687
697
|
}
|
|
688
698
|
}
|
|
@@ -1233,21 +1243,41 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1233
1243
|
}
|
|
1234
1244
|
}
|
|
1235
1245
|
}
|
|
1246
|
+
fieldClose(id) {
|
|
1247
|
+
if (this.isFieldChange || this.isDestroy) {
|
|
1248
|
+
return;
|
|
1249
|
+
}
|
|
1250
|
+
this.isFieldClose = true;
|
|
1251
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1252
|
+
const ddl = getComponent(id, 'dropdownlist');
|
|
1253
|
+
const item = ddl.popupObj.element.querySelector('.e-active');
|
|
1254
|
+
const itemData = ddl.getItemData();
|
|
1255
|
+
ddl.value = itemData.value;
|
|
1256
|
+
const customArgs = { element: ddl.element, value: itemData.value, isInteracted: true,
|
|
1257
|
+
previousItemData: this.prevItemData, previousItem: null, item: item, itemData: itemData, event: null, e: null };
|
|
1258
|
+
this.changeField(customArgs);
|
|
1259
|
+
this.isFieldChange = false;
|
|
1260
|
+
}
|
|
1236
1261
|
changeField(args) {
|
|
1237
1262
|
if (args.isInteracted) {
|
|
1263
|
+
if (isNullOrUndefined(args.value)) {
|
|
1264
|
+
return;
|
|
1265
|
+
}
|
|
1266
|
+
this.isFieldChange = true;
|
|
1267
|
+
this.prevItemData = args.itemData;
|
|
1238
1268
|
const fieldElem = closest(args.element, '.e-rule-filter') || closest(args.element, '.e-rule-sub-filter');
|
|
1239
1269
|
const column = this.fieldMode === 'DropdownTree' ? this.getColumn(args.value[0]) : this.getColumn(args.value);
|
|
1240
1270
|
if (this.fieldMode === 'DropdownTree' && fieldElem != null) {
|
|
1241
|
-
const ddtElem = fieldElem.querySelector(
|
|
1271
|
+
const ddtElem = fieldElem.querySelector('.e-control');
|
|
1242
1272
|
const ddt = getComponent(ddtElem, 'dropdowntree');
|
|
1243
1273
|
if (column) {
|
|
1244
|
-
if (column.type
|
|
1274
|
+
if (column.type === 'object') {
|
|
1245
1275
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1246
1276
|
ddt.value = args.oldValue;
|
|
1247
1277
|
ddt.dataBind();
|
|
1248
1278
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1249
1279
|
if (isNullOrUndefined(args.oldValue)) {
|
|
1250
|
-
ddtElem.value =
|
|
1280
|
+
ddtElem.value = '';
|
|
1251
1281
|
}
|
|
1252
1282
|
else {
|
|
1253
1283
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -1283,6 +1313,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1283
1313
|
ruleElem = ruleElem.previousElementSibling;
|
|
1284
1314
|
index++;
|
|
1285
1315
|
}
|
|
1316
|
+
rules.rules[index].value = '';
|
|
1286
1317
|
this.changeRule(rules.rules[index], args);
|
|
1287
1318
|
}
|
|
1288
1319
|
}
|
|
@@ -1370,6 +1401,9 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1370
1401
|
getComponent(tooltipElem[i], 'tooltip').destroy();
|
|
1371
1402
|
}
|
|
1372
1403
|
if (!args.cancel) {
|
|
1404
|
+
if (isNullOrUndefined(this.selectedColumn)) {
|
|
1405
|
+
return;
|
|
1406
|
+
}
|
|
1373
1407
|
tempRule.type = this.selectedColumn.type;
|
|
1374
1408
|
if (ruleElem.querySelector('.e-template')) {
|
|
1375
1409
|
rule.value = '';
|
|
@@ -1404,15 +1438,20 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1404
1438
|
tempElem.appendChild(subFieldElem);
|
|
1405
1439
|
const height = (this.element.className.indexOf('e-device') > -1) ? '250px' : '200px';
|
|
1406
1440
|
const subFieldData = Object.keys(this.selectedColumn.columns[0]);
|
|
1407
|
-
|
|
1441
|
+
let ddlField;
|
|
1442
|
+
ddlField = {
|
|
1408
1443
|
dataSource: this.selectedColumn.columns,
|
|
1409
1444
|
fields: this.fields,
|
|
1410
1445
|
placeholder: this.l10n.getConstant('SelectField'),
|
|
1411
1446
|
popupHeight: ((subFieldData.length > 5) ? height : 'auto'),
|
|
1412
1447
|
change: this.changeField.bind(this),
|
|
1413
1448
|
index: 0,
|
|
1414
|
-
open: this.popupOpen.bind(this)
|
|
1415
|
-
}
|
|
1449
|
+
open: this.popupOpen.bind(this, false)
|
|
1450
|
+
};
|
|
1451
|
+
if (this.fieldModel) {
|
|
1452
|
+
ddlField = Object.assign({}, ddlField, this.fieldModel);
|
|
1453
|
+
}
|
|
1454
|
+
const dropDownList = new DropDownList(ddlField);
|
|
1416
1455
|
dropDownList.appendTo('#' + ruleId + '_subfilterkey' + this.subFilterCounter);
|
|
1417
1456
|
if (this.isImportRules) {
|
|
1418
1457
|
const subField = this.selectedColumn.columns;
|
|
@@ -1532,7 +1571,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1532
1571
|
change: this.changeField.bind(this),
|
|
1533
1572
|
index: 0,
|
|
1534
1573
|
value: value,
|
|
1535
|
-
open: this.popupOpen.bind(this)
|
|
1574
|
+
open: this.popupOpen.bind(this, false)
|
|
1536
1575
|
};
|
|
1537
1576
|
if (this.operatorModel) {
|
|
1538
1577
|
ddlOperator = Object.assign({}, ddlOperator, this.operatorModel);
|
|
@@ -1551,10 +1590,13 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1551
1590
|
this.updateRules(ddlArgs.element, ddlArgs.item);
|
|
1552
1591
|
}
|
|
1553
1592
|
}
|
|
1554
|
-
popupOpen(args) {
|
|
1593
|
+
popupOpen(isField, args) {
|
|
1555
1594
|
if (this.enableRtl) {
|
|
1556
1595
|
addClass([args.popup.element], 'e-rtl');
|
|
1557
1596
|
}
|
|
1597
|
+
if (isField) {
|
|
1598
|
+
this.isFieldClose = false;
|
|
1599
|
+
}
|
|
1558
1600
|
}
|
|
1559
1601
|
destroyControls(target, isRuleTemplate) {
|
|
1560
1602
|
const element = isRuleTemplate ? target : target.nextElementSibling;
|
|
@@ -1747,7 +1789,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1747
1789
|
change: this.changeValue.bind(this, i),
|
|
1748
1790
|
close: this.closePopup.bind(this, i),
|
|
1749
1791
|
actionBegin: this.multiSelectOpen.bind(this, parentId + '_valuekey' + i),
|
|
1750
|
-
open: this.popupOpen.bind(this)
|
|
1792
|
+
open: this.popupOpen.bind(this, false)
|
|
1751
1793
|
};
|
|
1752
1794
|
if (this.valueModel && this.valueModel.multiSelectModel) {
|
|
1753
1795
|
multiSelectValue = Object.assign({}, multiSelectValue, this.valueModel.multiSelectModel);
|
|
@@ -1806,8 +1848,10 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1806
1848
|
}
|
|
1807
1849
|
closePopup(i, args) {
|
|
1808
1850
|
const element = document.getElementById(args.popup.element.id.replace('_popup', ''));
|
|
1809
|
-
|
|
1810
|
-
|
|
1851
|
+
if (element) {
|
|
1852
|
+
const value = getComponent(element, 'multiselect').value;
|
|
1853
|
+
this.updateRules(element, value, i);
|
|
1854
|
+
}
|
|
1811
1855
|
}
|
|
1812
1856
|
processTemplate(target, itemData, rule, tempRule) {
|
|
1813
1857
|
const container = closest(target, '.e-rule-container');
|
|
@@ -2168,6 +2212,9 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
2168
2212
|
return 0;
|
|
2169
2213
|
}
|
|
2170
2214
|
getPreviousItemData(prevItemData, column) {
|
|
2215
|
+
if (this.isFieldClose && prevItemData) {
|
|
2216
|
+
prevItemData = this.getColumn(prevItemData.value);
|
|
2217
|
+
}
|
|
2171
2218
|
if (column.template && prevItemData && Object.keys(prevItemData).length < 4) {
|
|
2172
2219
|
prevItemData.template = column.template;
|
|
2173
2220
|
}
|
|
@@ -2659,6 +2706,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
2659
2706
|
* @returns {void}
|
|
2660
2707
|
*/
|
|
2661
2708
|
destroy() {
|
|
2709
|
+
this.isDestroy = true;
|
|
2662
2710
|
const queryElement = this.element;
|
|
2663
2711
|
if (!queryElement) {
|
|
2664
2712
|
return;
|
|
@@ -2714,6 +2762,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
2714
2762
|
this.clearQBTemplate();
|
|
2715
2763
|
}
|
|
2716
2764
|
classList(this.element, [], ['e-rtl', 'e-responsive', 'e-device']);
|
|
2765
|
+
this.isDestroy = false;
|
|
2717
2766
|
}
|
|
2718
2767
|
/**
|
|
2719
2768
|
* Adds single or multiple rules.
|
|
@@ -3350,7 +3399,11 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
3350
3399
|
}
|
|
3351
3400
|
}
|
|
3352
3401
|
const isTemplateRendered = clnruleElem.querySelector('.e-template-value');
|
|
3353
|
-
|
|
3402
|
+
try {
|
|
3403
|
+
detach(clnruleElem);
|
|
3404
|
+
}
|
|
3405
|
+
catch (err) {
|
|
3406
|
+
}
|
|
3354
3407
|
if (column && column.ruleTemplate) {
|
|
3355
3408
|
this.clearQBTemplate([clnruleElem.id]);
|
|
3356
3409
|
}
|
|
@@ -3470,10 +3523,14 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
3470
3523
|
}
|
|
3471
3524
|
}
|
|
3472
3525
|
if ((this.isRefreshed && this.enablePersistence) || (this.rule.field !== '' && rule.operator !== '' && (rule.value !== '' &&
|
|
3473
|
-
rule.value !== undefined))) {
|
|
3526
|
+
rule.value !== undefined)) || (customObj && customObj.isQuestion)) {
|
|
3527
|
+
const condition = rule.condition;
|
|
3474
3528
|
rule = {
|
|
3475
3529
|
'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value
|
|
3476
3530
|
};
|
|
3531
|
+
if (condition) {
|
|
3532
|
+
rule.condition = condition;
|
|
3533
|
+
}
|
|
3477
3534
|
if (customObj) {
|
|
3478
3535
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3479
3536
|
rule.custom = customObj;
|
|
@@ -3495,6 +3552,9 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
3495
3552
|
rule.not = notValue;
|
|
3496
3553
|
}
|
|
3497
3554
|
}
|
|
3555
|
+
else if ((isNullOrUndefined(rule.condition)) && isNullOrUndefined(rule.rules)) {
|
|
3556
|
+
rule = { 'label': '', 'field': '', 'operator': '', 'type': '', 'value': '' };
|
|
3557
|
+
}
|
|
3498
3558
|
else {
|
|
3499
3559
|
if (this.enableNotCondition) {
|
|
3500
3560
|
rule = { 'condition': rule.condition, 'rules': rule.rules, 'not': rule.not };
|
|
@@ -3678,7 +3738,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
3678
3738
|
}
|
|
3679
3739
|
}
|
|
3680
3740
|
}
|
|
3681
|
-
else if (ruleColl[i].operator.length) {
|
|
3741
|
+
else if (!isNullOrUndefined(ruleColl[i].operator) && !isNullOrUndefined(ruleColl[i].operator.length)) {
|
|
3682
3742
|
const oper = ruleColl[i].operator.toLowerCase();
|
|
3683
3743
|
let isDateFilter = false;
|
|
3684
3744
|
const dateOperColl = ['equal', 'notequal', 'greaterthan', 'greaterthanorequal', 'lessthan', 'lessthanorequal'];
|
|
@@ -3779,6 +3839,12 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
3779
3839
|
break;
|
|
3780
3840
|
}
|
|
3781
3841
|
}
|
|
3842
|
+
else if (field.indexOf(this.separator) > -1) {
|
|
3843
|
+
if (columns[i].field === field.split(this.separator)[0]) {
|
|
3844
|
+
column = columns[i];
|
|
3845
|
+
break;
|
|
3846
|
+
}
|
|
3847
|
+
}
|
|
3782
3848
|
}
|
|
3783
3849
|
return column;
|
|
3784
3850
|
}
|
|
@@ -3868,7 +3934,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
3868
3934
|
}
|
|
3869
3935
|
if (!(operator.indexOf('null') > -1 || operator.indexOf('empty') > -1)) {
|
|
3870
3936
|
for (let j = 0, jLen = value.length; j < jLen; j++) {
|
|
3871
|
-
if (value[j] !== '') {
|
|
3937
|
+
if (value[j] !== '' || ((operator === 'in' || operator === 'notin') && column.type === 'string')) {
|
|
3872
3938
|
if (j === 0) {
|
|
3873
3939
|
const gte = 'greaterthanorequal';
|
|
3874
3940
|
switch (operator) {
|
|
@@ -4010,7 +4076,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
4010
4076
|
if (!isNullOrUndefined(ruleColl)) {
|
|
4011
4077
|
for (let i = 0, len = ruleColl.length; i < len; i++) {
|
|
4012
4078
|
const keys = Object.keys(ruleColl[i]);
|
|
4013
|
-
if (!isNullOrUndefined(ruleColl[i].rules) && keys.indexOf('rules') > -1) {
|
|
4079
|
+
if (!isNullOrUndefined(ruleColl[i].rules) && keys.indexOf('rules') > -1 && (ruleColl[i].rules.length !== 0)) {
|
|
4014
4080
|
parentElem = this.renderGroup(ruleColl[i], ruleColl[i].condition, parentElem, ruleColl[i].not);
|
|
4015
4081
|
parentElem = this.importRules(ruleColl[i], parentElem, true);
|
|
4016
4082
|
}
|
|
@@ -4167,7 +4233,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
4167
4233
|
else {
|
|
4168
4234
|
queryStr += '(';
|
|
4169
4235
|
}
|
|
4170
|
-
|
|
4236
|
+
let condition = rules.condition;
|
|
4171
4237
|
if (rules.not) {
|
|
4172
4238
|
if (isRoot) {
|
|
4173
4239
|
queryStr += 'NOT (';
|
|
@@ -4246,8 +4312,14 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
4246
4312
|
}
|
|
4247
4313
|
queryStr += rule.field + ' ' + this.operators[rule.operator] + ' ' + valueStr;
|
|
4248
4314
|
}
|
|
4315
|
+
if (rule.condition && rule.condition != '') {
|
|
4316
|
+
condition = rule.condition;
|
|
4317
|
+
}
|
|
4249
4318
|
}
|
|
4250
4319
|
if (j !== jLen - 1) {
|
|
4320
|
+
if (condition === '') {
|
|
4321
|
+
condition = rules.rules[j].condition;
|
|
4322
|
+
}
|
|
4251
4323
|
queryStr += ' ' + condition.toUpperCase() + ' ';
|
|
4252
4324
|
}
|
|
4253
4325
|
}
|
|
@@ -4381,6 +4453,12 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
4381
4453
|
this.parser.push(['Literal', matchValue]);
|
|
4382
4454
|
return matchValue.length + 2;
|
|
4383
4455
|
}
|
|
4456
|
+
// eslint-disable-next-line
|
|
4457
|
+
if (this.checkNumberLiteral(sqlString)) {
|
|
4458
|
+
matchValue = /^[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
|
|
4459
|
+
this.parser.push(['Literal', matchValue]);
|
|
4460
|
+
return matchValue.length;
|
|
4461
|
+
}
|
|
4384
4462
|
//String
|
|
4385
4463
|
if (/^'((?:[^\\']+?|\\.|'')*)'(?!')/.exec(sqlString)) {
|
|
4386
4464
|
matchValue = /^'((?:[^\\']+?|\\.|'')*)'(?!')/.exec(sqlString)[0];
|
|
@@ -4420,6 +4498,25 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
4420
4498
|
}
|
|
4421
4499
|
return false;
|
|
4422
4500
|
}
|
|
4501
|
+
checkNumberLiteral(sqlString) {
|
|
4502
|
+
const lastParser = this.parser[this.parser.length - 1];
|
|
4503
|
+
if (!lastParser) {
|
|
4504
|
+
return true;
|
|
4505
|
+
}
|
|
4506
|
+
else {
|
|
4507
|
+
if (/^[0-9]+(\.[0-9]+)?/.exec(sqlString)) {
|
|
4508
|
+
const secParser = this.parser[this.parser.length - 2];
|
|
4509
|
+
const betweenParser = this.parser[this.parser.length - 3];
|
|
4510
|
+
if (lastParser[0] === 'Left' && (secParser && secParser[0] === 'Conditions')) {
|
|
4511
|
+
return true;
|
|
4512
|
+
}
|
|
4513
|
+
if (lastParser[0] === 'Conditions' && (betweenParser && betweenParser[1].indexOf('between') < 0)) {
|
|
4514
|
+
return true;
|
|
4515
|
+
}
|
|
4516
|
+
}
|
|
4517
|
+
}
|
|
4518
|
+
return false;
|
|
4519
|
+
}
|
|
4423
4520
|
getOperator(value, operator) {
|
|
4424
4521
|
const operators = {
|
|
4425
4522
|
'=': 'equal', '!=': 'notequal', '<': 'lessthan', '>': 'greaterthan', '<=': 'lessthanorequal',
|