@syncfusion/ej2-querybuilder 24.2.8 → 25.1.35
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/CHANGELOG.md +18 -0
- 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 +1615 -157
- package/dist/es6/ej2-querybuilder.es2015.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es5.js +1617 -157
- 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 +12 -12
- package/src/global.js +2 -0
- package/src/query-builder/index.d.ts +1 -0
- package/src/query-builder/index.js +1 -0
- package/src/query-builder/query-builder-model.d.ts +69 -1
- package/src/query-builder/query-builder.d.ts +189 -4
- package/src/query-builder/query-builder.js +903 -130
- package/src/query-builder/query-library.d.ts +24 -0
- package/src/query-builder/query-library.js +689 -0
- package/styles/bootstrap-dark.css +29 -12
- package/styles/bootstrap.css +29 -12
- package/styles/bootstrap4.css +25 -12
- package/styles/bootstrap5-dark.css +35 -11
- package/styles/bootstrap5.css +35 -11
- package/styles/fabric-dark.css +25 -12
- package/styles/fabric.css +25 -12
- package/styles/fluent-dark.css +39 -11
- package/styles/fluent.css +39 -11
- package/styles/highcontrast-light.css +25 -12
- package/styles/highcontrast.css +25 -12
- package/styles/material-dark.css +25 -12
- package/styles/material.css +25 -12
- package/styles/material3-dark.css +25 -12
- package/styles/material3.css +25 -12
- package/styles/query-builder/_bds-definition.scss +107 -0
- package/styles/query-builder/_layout.scss +37 -7
- package/styles/query-builder/_theme.scss +16 -1
- package/styles/query-builder/bootstrap-dark.css +29 -12
- package/styles/query-builder/bootstrap.css +29 -12
- package/styles/query-builder/bootstrap4.css +25 -12
- package/styles/query-builder/bootstrap5-dark.css +35 -11
- package/styles/query-builder/bootstrap5.css +35 -11
- package/styles/query-builder/fabric-dark.css +25 -12
- package/styles/query-builder/fabric.css +25 -12
- package/styles/query-builder/fluent-dark.css +39 -11
- package/styles/query-builder/fluent.css +39 -11
- package/styles/query-builder/highcontrast-light.css +25 -12
- package/styles/query-builder/highcontrast.css +25 -12
- package/styles/query-builder/icons/_bds.scss +7 -0
- package/styles/query-builder/material-dark.css +25 -12
- package/styles/query-builder/material.css +25 -12
- package/styles/query-builder/material3-dark.css +25 -12
- package/styles/query-builder/material3.css +25 -12
- package/styles/query-builder/tailwind-dark.css +30 -11
- package/styles/query-builder/tailwind.css +30 -11
- package/styles/tailwind-dark.css +30 -11
- package/styles/tailwind.css +30 -11
|
@@ -121,6 +121,9 @@ var Rule = /** @__PURE__ @class */ (function (_super) {
|
|
|
121
121
|
__decorate([
|
|
122
122
|
Property(false)
|
|
123
123
|
], Rule.prototype, "not", void 0);
|
|
124
|
+
__decorate([
|
|
125
|
+
Property(false)
|
|
126
|
+
], Rule.prototype, "isLocked", void 0);
|
|
124
127
|
return Rule;
|
|
125
128
|
}(ChildProperty));
|
|
126
129
|
/**
|
|
@@ -156,6 +159,18 @@ var ShowButtons = /** @__PURE__ @class */ (function (_super) {
|
|
|
156
159
|
function ShowButtons() {
|
|
157
160
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
158
161
|
}
|
|
162
|
+
__decorate([
|
|
163
|
+
Property(false)
|
|
164
|
+
], ShowButtons.prototype, "cloneRule", void 0);
|
|
165
|
+
__decorate([
|
|
166
|
+
Property(false)
|
|
167
|
+
], ShowButtons.prototype, "cloneGroup", void 0);
|
|
168
|
+
__decorate([
|
|
169
|
+
Property(false)
|
|
170
|
+
], ShowButtons.prototype, "lockRule", void 0);
|
|
171
|
+
__decorate([
|
|
172
|
+
Property(false)
|
|
173
|
+
], ShowButtons.prototype, "lockGroup", void 0);
|
|
159
174
|
__decorate([
|
|
160
175
|
Property(true)
|
|
161
176
|
], ShowButtons.prototype, "ruleDelete", void 0);
|
|
@@ -173,7 +188,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
173
188
|
var _this = _super.call(this, options, element) || this;
|
|
174
189
|
_this.isReadonly = true;
|
|
175
190
|
_this.fields = { text: 'label', value: 'field' };
|
|
176
|
-
_this.updatedRule = { not: false, condition: 'and' };
|
|
191
|
+
_this.updatedRule = { not: false, condition: 'and', isLocked: false };
|
|
177
192
|
_this.isLocale = false;
|
|
178
193
|
_this.isRefreshed = false;
|
|
179
194
|
_this.isNotified = false;
|
|
@@ -184,6 +199,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
184
199
|
_this.isDestroy = false;
|
|
185
200
|
_this.isGetNestedData = false;
|
|
186
201
|
_this.isCustomOprCols = [];
|
|
202
|
+
_this.groupCounter = 0;
|
|
203
|
+
_this.lockItems = [];
|
|
204
|
+
_this.groupIndex = -1;
|
|
205
|
+
_this.ruleIndex = -1;
|
|
206
|
+
_this.isLastGroup = false;
|
|
207
|
+
_this.cloneGrpBtnClick = false;
|
|
208
|
+
_this.isMiddleGroup = false;
|
|
209
|
+
_this.cloneRuleBtnClick = false;
|
|
187
210
|
MultiSelect.Inject(CheckBoxSelection);
|
|
188
211
|
return _this;
|
|
189
212
|
}
|
|
@@ -236,6 +259,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
236
259
|
QueryBuilder.prototype.getModuleName = function () {
|
|
237
260
|
return 'query-builder';
|
|
238
261
|
};
|
|
262
|
+
QueryBuilder.prototype.requiredModules = function () {
|
|
263
|
+
var modules = [];
|
|
264
|
+
modules.push({
|
|
265
|
+
member: 'query-library',
|
|
266
|
+
args: [this]
|
|
267
|
+
});
|
|
268
|
+
return modules;
|
|
269
|
+
};
|
|
239
270
|
QueryBuilder.prototype.GetRootColumnName = function (field) {
|
|
240
271
|
return this.separator ? field.split(this.separator)[0] : field;
|
|
241
272
|
};
|
|
@@ -429,31 +460,51 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
429
460
|
txtareaElem.style.height = txtareaElem.scrollHeight + 'px';
|
|
430
461
|
}
|
|
431
462
|
if (target.tagName === 'BUTTON' && target.className.indexOf('e-qb-toggle') < 0) {
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
this.
|
|
448
|
-
this.
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
463
|
+
switch (true) {
|
|
464
|
+
case target.className.indexOf('e-removerule') > -1:
|
|
465
|
+
this.actionButton = target;
|
|
466
|
+
this.deleteRule(target);
|
|
467
|
+
break;
|
|
468
|
+
case target.className.indexOf('e-clone-rule-btn') > -1:
|
|
469
|
+
this.actionButton = target;
|
|
470
|
+
this.cloneRuleBtnClick = true;
|
|
471
|
+
this.ruleClone(target);
|
|
472
|
+
break;
|
|
473
|
+
case target.className.indexOf('e-lock-rule-btn') > -1:
|
|
474
|
+
this.actionButton = target;
|
|
475
|
+
this.ruleLock(target);
|
|
476
|
+
break;
|
|
477
|
+
case target.className.indexOf('e-lock-grp-btn') > -1:
|
|
478
|
+
this.actionButton = target;
|
|
479
|
+
this.groupLock(target);
|
|
480
|
+
break;
|
|
481
|
+
case target.className.indexOf('e-clone-grp-btn') > -1:
|
|
482
|
+
this.actionButton = target;
|
|
483
|
+
this.cloneGrpBtnClick = true;
|
|
484
|
+
this.groupClone(closest(target, '.e-group-container'));
|
|
485
|
+
break;
|
|
486
|
+
case target.className.indexOf('e-deletegroup') > -1:
|
|
487
|
+
this.actionButton = target;
|
|
488
|
+
this.deleteGroup(closest(target, '.e-group-container'));
|
|
489
|
+
break;
|
|
490
|
+
case target.className.indexOf('e-edit-rule') > -1:
|
|
491
|
+
var animation = new Animation({ duration: 1000, delay: 0 });
|
|
492
|
+
animation.animate('.e-query-builder', { name: 'SlideLeftIn' });
|
|
493
|
+
document.getElementById(this.element.id + '_summary_content').style.display = 'none';
|
|
494
|
+
if (this.element.querySelectorAll('.e-group-container').length < 1) {
|
|
495
|
+
this.addGroupElement(false, this.element, this.rule.condition, false, this.rule.not);
|
|
496
|
+
var mRules = extend({}, this.rule, {}, true);
|
|
497
|
+
this.setGroupRules(mRules);
|
|
453
498
|
this.renderSummaryCollapse();
|
|
454
499
|
}
|
|
455
|
-
|
|
456
|
-
|
|
500
|
+
else {
|
|
501
|
+
var groupElem = this.element.querySelector('.e-group-container');
|
|
502
|
+
if (groupElem.querySelectorAll('.e-collapse-rule').length < 1) {
|
|
503
|
+
this.renderSummaryCollapse();
|
|
504
|
+
}
|
|
505
|
+
groupElem.style.display = 'block';
|
|
506
|
+
}
|
|
507
|
+
break;
|
|
457
508
|
}
|
|
458
509
|
}
|
|
459
510
|
else if ((target.tagName === 'LABEL' && target.parentElement.className.indexOf('e-btn-group') > -1) ||
|
|
@@ -553,7 +604,18 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
553
604
|
else {
|
|
554
605
|
ruleElem = this.createElement('div', { attrs: { class: 'e-rule-container' } });
|
|
555
606
|
ruleElem.setAttribute('id', target.id + '_rule' + this.ruleIdCounter);
|
|
556
|
-
|
|
607
|
+
if (this.showButtons.cloneRule && this.cloneRuleBtnClick) {
|
|
608
|
+
if (this.ruleIndex < 0) {
|
|
609
|
+
ruleListElem.appendChild(ruleElem);
|
|
610
|
+
}
|
|
611
|
+
else {
|
|
612
|
+
ruleListElem.insertBefore(ruleElem, ruleListElem.children[this.ruleIndex + 1]); // added clone rule to next position
|
|
613
|
+
}
|
|
614
|
+
this.cloneRuleBtnClick = false;
|
|
615
|
+
}
|
|
616
|
+
else {
|
|
617
|
+
ruleListElem.appendChild(ruleElem);
|
|
618
|
+
}
|
|
557
619
|
this.ruleIdCounter++;
|
|
558
620
|
}
|
|
559
621
|
if (column && column.ruleTemplate && rule) {
|
|
@@ -603,6 +665,21 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
603
665
|
elem = this.ruleElem.querySelector('.e-rule-field').cloneNode(true);
|
|
604
666
|
ruleElem.appendChild(elem);
|
|
605
667
|
}
|
|
668
|
+
if (this.showButtons.lockGroup) {
|
|
669
|
+
removeClass(ruleElem.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');
|
|
670
|
+
}
|
|
671
|
+
if (this.showButtons.lockRule) {
|
|
672
|
+
removeClass(ruleElem.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');
|
|
673
|
+
}
|
|
674
|
+
if (this.showButtons.cloneGroup) {
|
|
675
|
+
removeClass(ruleElem.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');
|
|
676
|
+
}
|
|
677
|
+
if (this.showButtons.cloneRule) {
|
|
678
|
+
removeClass(ruleElem.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');
|
|
679
|
+
}
|
|
680
|
+
if (this.showButtons.ruleDelete) {
|
|
681
|
+
removeClass(ruleElem.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');
|
|
682
|
+
}
|
|
606
683
|
if (column && column.ruleTemplate && rule) {
|
|
607
684
|
this.renderReactTemplates();
|
|
608
685
|
}
|
|
@@ -646,7 +723,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
646
723
|
else {
|
|
647
724
|
ruleElem = this.appendRuleElem(trgt, column, act, pId, 'field');
|
|
648
725
|
ruleElem.querySelector('.e-filter-input').setAttribute('id', ruleElem.id + '_filterkey');
|
|
649
|
-
var element = ruleElem.querySelector('
|
|
726
|
+
var element = ruleElem.querySelector('.e-rule-delete');
|
|
650
727
|
if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {
|
|
651
728
|
element.textContent = this.l10n.getConstant('Remove');
|
|
652
729
|
addClass([element], 'e-flat');
|
|
@@ -656,8 +733,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
656
733
|
addClass([element], 'e-round');
|
|
657
734
|
addClass([element], 'e-icon-btn');
|
|
658
735
|
element.setAttribute('title', this.l10n.getConstant('DeleteRule'));
|
|
659
|
-
|
|
660
|
-
ruleElem.querySelector('
|
|
736
|
+
var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-delete-icon' } });
|
|
737
|
+
ruleElem.querySelector('.e-rule-delete').appendChild(spanElement);
|
|
738
|
+
}
|
|
739
|
+
if (!this.showButtons.ruleDelete) {
|
|
740
|
+
element.classList.add('e-button-hide');
|
|
661
741
|
}
|
|
662
742
|
}
|
|
663
743
|
if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {
|
|
@@ -688,6 +768,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
688
768
|
if (this.separator && rule.field) {
|
|
689
769
|
ddlValue = this.GetRootColumnName(rule.field);
|
|
690
770
|
}
|
|
771
|
+
else if (this.autoSelectField) {
|
|
772
|
+
ddlValue = this.GetRootColumnName(rule.field);
|
|
773
|
+
}
|
|
691
774
|
else {
|
|
692
775
|
ddlValue = this.isImportRules ? this.GetRootColumnName(rule.field) : rule.field;
|
|
693
776
|
}
|
|
@@ -695,8 +778,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
695
778
|
dataSource: this.columns,
|
|
696
779
|
fields: this.fields, placeholder: this.l10n.getConstant('SelectField'),
|
|
697
780
|
popupHeight: ((this.columns.length > 5) ? height : 'auto'), close: this.fieldClose.bind(this, ruleElem.id + '_filterkey'),
|
|
698
|
-
change: this.changeField.bind(this), value: rule ? ddlValue : null, open: this.popupOpen.bind(this, true),
|
|
699
|
-
cssClass: 'qb-dropdownlist'
|
|
781
|
+
change: this.changeField.bind(this), value: rule ? ddlValue : null, open: this.popupOpen.bind(this, true), cssClass: 'qb-dropdownlist'
|
|
700
782
|
};
|
|
701
783
|
if (this.fieldModel) {
|
|
702
784
|
ddlField = __assign({}, ddlField, this.fieldModel);
|
|
@@ -786,12 +868,23 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
786
868
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
787
869
|
var custom = rule.custom;
|
|
788
870
|
if (Object.keys(rule).length) {
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
871
|
+
if (this.ruleIndex < 0) {
|
|
872
|
+
rules.rules.push({
|
|
873
|
+
'field': rule.field, 'type': rule.type, 'label': rule.label, 'operator': rule.operator, value: rule.value
|
|
874
|
+
});
|
|
875
|
+
if (custom) {
|
|
876
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
877
|
+
rules.rules[rules.rules.length - 1].custom = custom;
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
else {
|
|
881
|
+
rules.rules.splice(this.ruleIndex + 1, 0, {
|
|
882
|
+
'field': rule.field, 'type': rule.type, 'label': rule.label, 'operator': rule.operator, value: rule.value
|
|
883
|
+
});
|
|
884
|
+
if (custom) {
|
|
885
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
886
|
+
rules.rules[this.ruleIndex + 1].custom = custom;
|
|
887
|
+
}
|
|
795
888
|
}
|
|
796
889
|
}
|
|
797
890
|
else {
|
|
@@ -799,6 +892,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
799
892
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
800
893
|
newRule.custom = custom;
|
|
801
894
|
}
|
|
895
|
+
if (this.autoSelectField) {
|
|
896
|
+
rule.field = newRule.field = this.rule.rules[0].field;
|
|
897
|
+
}
|
|
802
898
|
rules.rules.push(newRule);
|
|
803
899
|
}
|
|
804
900
|
}
|
|
@@ -998,6 +1094,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
998
1094
|
QueryBuilder.prototype.ruleTemplate = function () {
|
|
999
1095
|
var tempElem;
|
|
1000
1096
|
var clsName;
|
|
1097
|
+
var cloneClsName;
|
|
1098
|
+
var lockClsName;
|
|
1001
1099
|
var ruleElem = this.createElement('div');
|
|
1002
1100
|
var fieldElem = this.createElement('div', { attrs: { class: 'e-rule-field' } });
|
|
1003
1101
|
tempElem = this.createElement('div', { attrs: { class: 'e-rule-filter' } });
|
|
@@ -1009,6 +1107,24 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1009
1107
|
tempElem = this.createElement('div', { attrs: { class: 'e-rule-value' } });
|
|
1010
1108
|
fieldElem.appendChild(tempElem);
|
|
1011
1109
|
tempElem = this.createElement('div', { attrs: { class: 'e-rule-value-delete' } });
|
|
1110
|
+
if (this.showButtons.cloneRule) {
|
|
1111
|
+
cloneClsName = 'e-clone-rule-btn e-clone-rule e-css e-btn e-small e-round e-icon-btn';
|
|
1112
|
+
}
|
|
1113
|
+
else {
|
|
1114
|
+
cloneClsName = 'e-clone-rule-btn e-clone-rule e-css e-btn e-small e-round e-icon-btn e-button-hide';
|
|
1115
|
+
}
|
|
1116
|
+
if (this.showButtons.lockRule) {
|
|
1117
|
+
lockClsName = 'e-lock-rule-btn e-lock-rule e-css e-btn e-small e-round e-icons e-icon-btn';
|
|
1118
|
+
}
|
|
1119
|
+
else {
|
|
1120
|
+
lockClsName = 'e-lock-rule-btn e-lock-rule e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';
|
|
1121
|
+
}
|
|
1122
|
+
var cloneRuleBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('CloneRule'), type: 'button', class: cloneClsName } });
|
|
1123
|
+
var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-copy' } });
|
|
1124
|
+
cloneRuleBtnElem.appendChild(spanElement);
|
|
1125
|
+
var cloneLockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockRule'), type: 'button', class: lockClsName } });
|
|
1126
|
+
spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });
|
|
1127
|
+
cloneLockBtnElem.appendChild(spanElement);
|
|
1012
1128
|
if (this.showButtons.ruleDelete || isNullOrUndefined(this.showButtons.ruleDelete)) {
|
|
1013
1129
|
clsName = 'e-removerule e-rule-delete e-css e-btn e-small';
|
|
1014
1130
|
}
|
|
@@ -1016,6 +1132,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1016
1132
|
clsName = 'e-removerule e-rule-delete e-css e-btn e-small e-button-hide';
|
|
1017
1133
|
}
|
|
1018
1134
|
var delBtnElem = this.createElement('button', { attrs: { type: 'button', class: clsName } });
|
|
1135
|
+
tempElem.appendChild(cloneRuleBtnElem);
|
|
1136
|
+
tempElem.appendChild(cloneLockBtnElem);
|
|
1019
1137
|
tempElem.appendChild(delBtnElem);
|
|
1020
1138
|
fieldElem.appendChild(tempElem);
|
|
1021
1139
|
ruleElem.appendChild(fieldElem);
|
|
@@ -1085,9 +1203,6 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1085
1203
|
button.appendTo(dltGroupBtn);
|
|
1086
1204
|
dltGroupBtn.setAttribute('title', this.l10n.getConstant('DeleteGroup'));
|
|
1087
1205
|
rippleEffect(dltGroupBtn, { selector: '.deletegroup' });
|
|
1088
|
-
if (!this.headerTemplate) {
|
|
1089
|
-
groupElem.querySelector('.e-group-action').appendChild(dltGroupBtn);
|
|
1090
|
-
}
|
|
1091
1206
|
var ruleList = target.querySelector('.e-rule-list');
|
|
1092
1207
|
var childElems = ruleList.children;
|
|
1093
1208
|
var grpLen = 0;
|
|
@@ -1096,20 +1211,72 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1096
1211
|
grpLen += 1;
|
|
1097
1212
|
}
|
|
1098
1213
|
}
|
|
1099
|
-
|
|
1214
|
+
if (this.showButtons.cloneGroup && this.cloneGrpBtnClick) {
|
|
1215
|
+
if (this.groupIndex === (childElems.length - 1)) {
|
|
1216
|
+
ruleList.appendChild(groupElem);
|
|
1217
|
+
this.isLastGroup = true;
|
|
1218
|
+
}
|
|
1219
|
+
else {
|
|
1220
|
+
childElems[this.groupIndex + 1].parentNode.insertBefore(groupElem, childElems[this.groupIndex + 1]); // clone the element to nxt element
|
|
1221
|
+
this.isMiddleGroup = true;
|
|
1222
|
+
}
|
|
1223
|
+
}
|
|
1224
|
+
else {
|
|
1225
|
+
ruleList.appendChild(groupElem);
|
|
1226
|
+
}
|
|
1100
1227
|
var level = this.levelColl[target.id].slice(0);
|
|
1101
1228
|
level.push(grpLen);
|
|
1102
1229
|
this.levelColl[groupElem.id] = level;
|
|
1230
|
+
if (this.groupIndex > -1) {
|
|
1231
|
+
this.refreshLevelColl();
|
|
1232
|
+
}
|
|
1103
1233
|
if (!this.isImportRules) {
|
|
1104
1234
|
this.isAddSuccess = true;
|
|
1105
1235
|
this.addGroups([], target.id.replace(this.element.id + '_', ''));
|
|
1106
1236
|
this.isAddSuccess = false;
|
|
1107
|
-
if (isBtnClick) {
|
|
1237
|
+
if (isBtnClick && this.addRuleToNewGroups) {
|
|
1108
1238
|
this.addRuleElement(groupElem, {});
|
|
1109
1239
|
}
|
|
1110
1240
|
}
|
|
1241
|
+
if (!this.headerTemplate) {
|
|
1242
|
+
var lockClsName = '';
|
|
1243
|
+
if (this.showButtons.cloneGroup) {
|
|
1244
|
+
lockClsName = 'e-clone-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';
|
|
1245
|
+
}
|
|
1246
|
+
else {
|
|
1247
|
+
lockClsName = 'e-clone-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';
|
|
1248
|
+
}
|
|
1249
|
+
var cloneBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('CloneGroup'), type: 'button', class: lockClsName } });
|
|
1250
|
+
var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-copy' } });
|
|
1251
|
+
cloneBtnElem.appendChild(spanElement);
|
|
1252
|
+
groupElem.querySelector('.e-group-action').appendChild(cloneBtnElem);
|
|
1253
|
+
if (this.showButtons.lockGroup) {
|
|
1254
|
+
lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';
|
|
1255
|
+
}
|
|
1256
|
+
else {
|
|
1257
|
+
lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';
|
|
1258
|
+
}
|
|
1259
|
+
var lockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockGroup'), type: 'button', class: lockClsName } });
|
|
1260
|
+
var lockSpanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });
|
|
1261
|
+
lockBtnElem.appendChild(lockSpanElement);
|
|
1262
|
+
groupElem.querySelector('.e-group-action').appendChild(lockBtnElem);
|
|
1263
|
+
groupElem.querySelector('.e-group-action').appendChild(dltGroupBtn);
|
|
1264
|
+
}
|
|
1111
1265
|
}
|
|
1112
1266
|
else {
|
|
1267
|
+
if (!this.headerTemplate) {
|
|
1268
|
+
var lockClsName = '';
|
|
1269
|
+
if (this.showButtons.lockGroup) {
|
|
1270
|
+
lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';
|
|
1271
|
+
}
|
|
1272
|
+
else {
|
|
1273
|
+
lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';
|
|
1274
|
+
}
|
|
1275
|
+
var lockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockGroup'), type: 'button', class: lockClsName } });
|
|
1276
|
+
var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });
|
|
1277
|
+
lockBtnElem.appendChild(spanElement);
|
|
1278
|
+
groupElem.querySelector('.e-group-action').appendChild(lockBtnElem);
|
|
1279
|
+
}
|
|
1113
1280
|
target.appendChild(groupElem);
|
|
1114
1281
|
this.levelColl[groupElem.id] = [0];
|
|
1115
1282
|
}
|
|
@@ -1367,6 +1534,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1367
1534
|
if (this.fieldMode === 'Default') {
|
|
1368
1535
|
dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdownlist');
|
|
1369
1536
|
this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);
|
|
1537
|
+
if (this.selectedColumn.columns) {
|
|
1538
|
+
dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-rule-sub-filter .e-dropdownlist'), 'dropdownlist');
|
|
1539
|
+
this.selectedColumn = this.getColumn(dropDownObj.value);
|
|
1540
|
+
}
|
|
1370
1541
|
}
|
|
1371
1542
|
else {
|
|
1372
1543
|
dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdowntree');
|
|
@@ -1441,7 +1612,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1441
1612
|
this.prevItemData = args.itemData;
|
|
1442
1613
|
var fieldElem = closest(args.element, '.e-rule-filter') || closest(args.element, '.e-rule-sub-filter');
|
|
1443
1614
|
var column = this.fieldMode === 'DropdownTree' ? this.getColumn(args.value[0]) : this.getColumn(args.value);
|
|
1444
|
-
if (this.fieldMode === 'DropdownTree' && fieldElem
|
|
1615
|
+
if (this.fieldMode === 'DropdownTree' && fieldElem !== null) {
|
|
1445
1616
|
var ddtElem = fieldElem.querySelector('.e-dropdowntree.e-control');
|
|
1446
1617
|
var ddt = getComponent(ddtElem, 'dropdowntree');
|
|
1447
1618
|
if (column) {
|
|
@@ -1513,7 +1684,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1513
1684
|
var filterElem = closest(ddlArgs.element, '.e-rule-filter');
|
|
1514
1685
|
filterElem = filterElem ? filterElem : closest(ddlArgs.element, '.e-rule-sub-filter');
|
|
1515
1686
|
var ddlObj = getComponent(ddlArgs.element, 'dropdownlist');
|
|
1516
|
-
if (this.fieldMode === 'DropdownTree' && filterElem
|
|
1687
|
+
if (this.fieldMode === 'DropdownTree' && filterElem !== null) {
|
|
1517
1688
|
ddlObj = getComponent(ddlArgs.element, 'dropdowntree');
|
|
1518
1689
|
}
|
|
1519
1690
|
var element = closest(ddlArgs.element, '.e-group-container');
|
|
@@ -1642,7 +1813,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1642
1813
|
this.GetRootColumnName(rule.field) === this.GetRootColumnName(this.previousColumn.field))) {
|
|
1643
1814
|
var subField = this.selectedColumn.columns;
|
|
1644
1815
|
for (var i = 0; i < subField.length; i++) {
|
|
1645
|
-
if (rule.field === subField[i].field
|
|
1816
|
+
if (rule.field === subField[i].field) {
|
|
1646
1817
|
dropDownList.value = subField[i].field;
|
|
1647
1818
|
this.selectedColumn = subField[i];
|
|
1648
1819
|
subFieldValue = true;
|
|
@@ -1681,7 +1852,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1681
1852
|
rule.value = [];
|
|
1682
1853
|
}
|
|
1683
1854
|
}
|
|
1684
|
-
else if (typeof rule.value === 'object' && rule.value
|
|
1855
|
+
else if (typeof rule.value === 'object' && rule.value !== null) {
|
|
1685
1856
|
rule.value = rule.value.length > 0 ? rule.value[0] : rule.type === 'number' ? 0 : '';
|
|
1686
1857
|
}
|
|
1687
1858
|
if (ddlArgs.previousItemData) {
|
|
@@ -1708,6 +1879,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1708
1879
|
if (valElem && this.getColumn(rule.field).template) {
|
|
1709
1880
|
filterElem = operatorElem.previousElementSibling;
|
|
1710
1881
|
}
|
|
1882
|
+
if (valElem.children.length == 0) {
|
|
1883
|
+
filterElem = operatorElem.previousElementSibling;
|
|
1884
|
+
}
|
|
1711
1885
|
this.changeRuleValues(filterElem, rule, tempRule, ddlArgs);
|
|
1712
1886
|
}
|
|
1713
1887
|
};
|
|
@@ -1738,7 +1912,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1738
1912
|
tempRule.type = this.fieldMode === 'DropdownTree' ? this.getColumn(fieldObj.value[0]).type :
|
|
1739
1913
|
this.getColumn(fieldObj.value).type;
|
|
1740
1914
|
var itemData = ddlArgs.itemData;
|
|
1741
|
-
|
|
1915
|
+
if (ddlObj.value !== '') {
|
|
1916
|
+
this.renderValues(operatorElem, itemData, ddlArgs.previousItemData, true, rule, tempRule, ddlArgs.element);
|
|
1917
|
+
}
|
|
1742
1918
|
}
|
|
1743
1919
|
else {
|
|
1744
1920
|
var ruleId = closest(operatorElem, '.e-rule-container').id;
|
|
@@ -1752,7 +1928,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1752
1928
|
}
|
|
1753
1929
|
var height = (this.element.className.indexOf('e-device') > -1) ? '250px' : '200px';
|
|
1754
1930
|
var value = operatorList[0].value;
|
|
1755
|
-
|
|
1931
|
+
var ddlIdx = 0;
|
|
1932
|
+
if (!this.autoSelectOperator) {
|
|
1933
|
+
value = '';
|
|
1934
|
+
ddlIdx = -1;
|
|
1935
|
+
}
|
|
1936
|
+
if (this.isImportRules || (this.ruleIndex > -1 || this.groupIndex > -1)) {
|
|
1937
|
+
value = rule ? (rule.operator ? rule.operator : value) : value;
|
|
1938
|
+
}
|
|
1756
1939
|
var ddlOperator = void 0;
|
|
1757
1940
|
ddlOperator = {
|
|
1758
1941
|
dataSource: operatorList,
|
|
@@ -1760,7 +1943,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1760
1943
|
placeholder: this.l10n.getConstant('SelectOperator'),
|
|
1761
1944
|
popupHeight: ((operatorList.length > 5) ? height : 'auto'),
|
|
1762
1945
|
change: this.changeField.bind(this),
|
|
1763
|
-
index:
|
|
1946
|
+
index: ddlIdx,
|
|
1764
1947
|
value: value,
|
|
1765
1948
|
open: this.popupOpen.bind(this, false)
|
|
1766
1949
|
};
|
|
@@ -1774,7 +1957,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1774
1957
|
tempRule.type = this.selectedColumn.type;
|
|
1775
1958
|
tempRule.operator = rule.operator;
|
|
1776
1959
|
}
|
|
1777
|
-
|
|
1960
|
+
if (!isNullOrUndefined(value) && value !== '') {
|
|
1961
|
+
this.renderValues(operatorElem, this.selectedColumn, ddlArgs.previousItemData, false, rule, tempRule, ddlArgs.element);
|
|
1962
|
+
}
|
|
1963
|
+
else if (this.autoSelectField && this.autoSelectOperator) {
|
|
1964
|
+
this.renderValues(operatorElem, this.selectedColumn, ddlArgs.previousItemData, false, rule, tempRule, ddlArgs.element);
|
|
1965
|
+
}
|
|
1778
1966
|
}
|
|
1779
1967
|
}
|
|
1780
1968
|
if (!this.isImportRules) {
|
|
@@ -2136,14 +2324,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2136
2324
|
var columnData = this.getItemData(parentId);
|
|
2137
2325
|
var selectedValue;
|
|
2138
2326
|
var isTemplate = (typeof columnData.template === 'string');
|
|
2139
|
-
if (this.isImportRules || this.isPublic || isTemplate) {
|
|
2327
|
+
if (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate) {
|
|
2140
2328
|
selectedValue = rule.value;
|
|
2141
2329
|
}
|
|
2142
2330
|
else {
|
|
2143
2331
|
selectedValue = this.setDefaultValue(parentId, false, false);
|
|
2144
2332
|
}
|
|
2145
2333
|
if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {
|
|
2146
|
-
selectedVal = this.isImportRules ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2334
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2147
2335
|
this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
|
|
2148
2336
|
if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {
|
|
2149
2337
|
ruleValElem.style.width = '100%';
|
|
@@ -2155,7 +2343,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2155
2343
|
}
|
|
2156
2344
|
else {
|
|
2157
2345
|
if (operator === 'in' || operator === 'notin') {
|
|
2158
|
-
selectedVal = this.isImportRules ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2346
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2159
2347
|
selectedValue = selectedVal.join(',');
|
|
2160
2348
|
}
|
|
2161
2349
|
var txtBox = void 0;
|
|
@@ -2175,9 +2363,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2175
2363
|
QueryBuilder.prototype.renderNumberValue = function (parentId, rule, operator, idx, ruleValElem, itemData, length) {
|
|
2176
2364
|
var columnData = this.getItemData(parentId);
|
|
2177
2365
|
var isTemplate = (typeof columnData.template === 'string');
|
|
2178
|
-
var selectedVal = (this.isImportRules || this.isPublic || isTemplate) ? rule.value : this.setDefaultValue(parentId, false, true);
|
|
2366
|
+
var selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate) ? rule.value : this.setDefaultValue(parentId, false, true);
|
|
2179
2367
|
if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {
|
|
2180
|
-
selectedVal = this.isImportRules ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2368
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2181
2369
|
this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
|
|
2182
2370
|
if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {
|
|
2183
2371
|
ruleValElem.style.width = '100%';
|
|
@@ -2188,7 +2376,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2188
2376
|
}
|
|
2189
2377
|
}
|
|
2190
2378
|
else if (operator === 'in' || operator === 'notin') {
|
|
2191
|
-
selectedVal = this.isImportRules ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2379
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2192
2380
|
var selVal = selectedVal.join(',');
|
|
2193
2381
|
var txtInp = void 0;
|
|
2194
2382
|
txtInp = {
|
|
@@ -2461,8 +2649,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2461
2649
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2462
2650
|
: this.getColumn(filtObj.value);
|
|
2463
2651
|
this.selectedRule = column;
|
|
2652
|
+
var ddlObj = getComponent(target.querySelector('input'), 'dropdownlist');
|
|
2464
2653
|
if (isRender) {
|
|
2465
|
-
var ddlObj = getComponent(target.querySelector('input'), 'dropdownlist');
|
|
2466
2654
|
itemData = element.id.indexOf('operator') > -1 ? itemData : this.selectedRule;
|
|
2467
2655
|
if (itemData.operators) {
|
|
2468
2656
|
ddlObj.value = null;
|
|
@@ -2470,7 +2658,13 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2470
2658
|
ddlObj.dataSource = itemData.operators;
|
|
2471
2659
|
ddlObj.index = this.getOperatorIndex(ddlObj, rule);
|
|
2472
2660
|
ddlObj.value = tempRule.operator = ddlObj.dataSource[ddlObj.index].value;
|
|
2473
|
-
|
|
2661
|
+
if (!this.autoSelectOperator) {
|
|
2662
|
+
ddlObj.index = -1;
|
|
2663
|
+
tempRule.operator = ddlObj.value = '';
|
|
2664
|
+
}
|
|
2665
|
+
else {
|
|
2666
|
+
ddlObj.dataBind();
|
|
2667
|
+
}
|
|
2474
2668
|
}
|
|
2475
2669
|
}
|
|
2476
2670
|
var operator = tempRule.operator.toString();
|
|
@@ -2503,39 +2697,41 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2503
2697
|
this.validateValue(rule, closest(target, '.e-rule-container'));
|
|
2504
2698
|
this.destroyControls(target);
|
|
2505
2699
|
}
|
|
2506
|
-
if (
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
else {
|
|
2525
|
-
removeClass([target.nextElementSibling], 'e-template-value');
|
|
2526
|
-
var inputLen = 1;
|
|
2527
|
-
if (tempRule.type === 'boolean') {
|
|
2528
|
-
inputLen = this.selectedColumn.values ? this.selectedColumn.values.length : 2;
|
|
2700
|
+
if (this.isImportRules || (ddlObj && ddlObj.value !== '')) {
|
|
2701
|
+
if (column) {
|
|
2702
|
+
itemData.template = column.template;
|
|
2703
|
+
}
|
|
2704
|
+
if (itemData.template) {
|
|
2705
|
+
addClass([target.nextElementSibling], 'e-template-value');
|
|
2706
|
+
itemData.template = column.template;
|
|
2707
|
+
isTempRendered = this.setColumnTemplate(itemData, parentId, column.field, itemData.value ||
|
|
2708
|
+
operator, target, rule);
|
|
2709
|
+
}
|
|
2710
|
+
if (isTempRendered) {
|
|
2711
|
+
var parentElem = target.parentElement.querySelector('.e-rule-value');
|
|
2712
|
+
if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {
|
|
2713
|
+
parentElem.style.width = '100%';
|
|
2714
|
+
}
|
|
2715
|
+
else {
|
|
2716
|
+
parentElem.style.width = '200px';
|
|
2717
|
+
}
|
|
2529
2718
|
}
|
|
2530
2719
|
else {
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2720
|
+
removeClass([target.nextElementSibling], 'e-template-value');
|
|
2721
|
+
var inputLen = 1;
|
|
2722
|
+
if (tempRule.type === 'boolean') {
|
|
2723
|
+
inputLen = this.selectedColumn.values ? this.selectedColumn.values.length : 2;
|
|
2724
|
+
}
|
|
2725
|
+
else {
|
|
2726
|
+
inputLen = (operator && operator.toLowerCase().indexOf('between') > -1) ? 2 : 1;
|
|
2727
|
+
}
|
|
2728
|
+
for (var i = 0; i < inputLen; i++) {
|
|
2729
|
+
var valElem = this.createElement('input', { attrs: { type: 'text', id: parentId + '_valuekey' + i } });
|
|
2730
|
+
target.nextElementSibling.appendChild(valElem);
|
|
2731
|
+
}
|
|
2536
2732
|
}
|
|
2733
|
+
this.renderControls(target, itemData, rule, tempRule, isTempRendered);
|
|
2537
2734
|
}
|
|
2538
|
-
this.renderControls(target, itemData, rule, tempRule, isTempRendered);
|
|
2539
2735
|
}
|
|
2540
2736
|
else {
|
|
2541
2737
|
var parentElem = target.parentElement.querySelector('.e-rule-value');
|
|
@@ -2969,8 +3165,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2969
3165
|
var i;
|
|
2970
3166
|
var len;
|
|
2971
3167
|
var tooltip;
|
|
2972
|
-
var popupElement;
|
|
2973
3168
|
_super.prototype.destroy.call(this);
|
|
3169
|
+
var popupElement;
|
|
2974
3170
|
element = this.element.querySelectorAll('.e-addrulegroup');
|
|
2975
3171
|
len = element.length;
|
|
2976
3172
|
for (i = 0; i < len; i++) {
|
|
@@ -3056,7 +3252,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3056
3252
|
if (grouplen) {
|
|
3057
3253
|
this.isPublic = true;
|
|
3058
3254
|
for (var i = 0, len = groups.length; i < len; i++) {
|
|
3059
|
-
this.updatedRule = {
|
|
3255
|
+
this.updatedRule = { isLocked: groups[i].isLocked, condition: groups[i].condition,
|
|
3256
|
+
not: groups[i].not };
|
|
3060
3257
|
this.importRules(groups[i], groupElem, false, groups[i].not);
|
|
3061
3258
|
}
|
|
3062
3259
|
this.isPublic = false;
|
|
@@ -3064,15 +3261,27 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3064
3261
|
else {
|
|
3065
3262
|
var condition = 'and';
|
|
3066
3263
|
var not = false;
|
|
3264
|
+
var isLocked = false;
|
|
3067
3265
|
if (this.updatedRule) {
|
|
3068
3266
|
condition = this.updatedRule.condition;
|
|
3069
3267
|
not = this.updatedRule.not;
|
|
3268
|
+
isLocked = this.updatedRule.isLocked;
|
|
3070
3269
|
}
|
|
3071
|
-
if (this.
|
|
3072
|
-
|
|
3270
|
+
if (this.groupIndex < 0) {
|
|
3271
|
+
if (this.enableNotCondition) {
|
|
3272
|
+
rule.rules.push({ 'condition': condition, 'not': not, rules: [] });
|
|
3273
|
+
}
|
|
3274
|
+
else {
|
|
3275
|
+
rule.rules.push({ 'condition': condition, rules: [] });
|
|
3276
|
+
}
|
|
3073
3277
|
}
|
|
3074
3278
|
else {
|
|
3075
|
-
|
|
3279
|
+
if (this.enableNotCondition) {
|
|
3280
|
+
rule.rules.splice(this.groupIndex + 1, 0, { condition: condition, not: not, rules: [], isLocked: isLocked });
|
|
3281
|
+
}
|
|
3282
|
+
else {
|
|
3283
|
+
rule.rules.splice(this.groupIndex + 1, 0, { condition: condition, rules: [], isLocked: isLocked });
|
|
3284
|
+
}
|
|
3076
3285
|
}
|
|
3077
3286
|
}
|
|
3078
3287
|
if (!this.headerTemplate) {
|
|
@@ -3255,17 +3464,53 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3255
3464
|
this.refresh();
|
|
3256
3465
|
break;
|
|
3257
3466
|
case 'showButtons':
|
|
3258
|
-
if (newProp.showButtons.
|
|
3259
|
-
|
|
3467
|
+
if (!isNullOrUndefined(newProp.showButtons.lockGroup)) {
|
|
3468
|
+
if (newProp.showButtons.lockGroup) {
|
|
3469
|
+
removeClass(this.element.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');
|
|
3470
|
+
}
|
|
3471
|
+
else {
|
|
3472
|
+
addClass(this.element.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');
|
|
3473
|
+
}
|
|
3260
3474
|
}
|
|
3261
|
-
|
|
3262
|
-
|
|
3475
|
+
if (!isNullOrUndefined(newProp.showButtons.lockRule)) {
|
|
3476
|
+
if (newProp.showButtons.lockRule) {
|
|
3477
|
+
removeClass(this.element.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');
|
|
3478
|
+
}
|
|
3479
|
+
else {
|
|
3480
|
+
addClass(this.element.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');
|
|
3481
|
+
}
|
|
3263
3482
|
}
|
|
3264
|
-
if (newProp.showButtons.
|
|
3265
|
-
|
|
3483
|
+
if (!isNullOrUndefined(newProp.showButtons.cloneGroup)) {
|
|
3484
|
+
if (newProp.showButtons.cloneGroup) {
|
|
3485
|
+
removeClass(this.element.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');
|
|
3486
|
+
}
|
|
3487
|
+
else {
|
|
3488
|
+
addClass(this.element.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');
|
|
3489
|
+
}
|
|
3266
3490
|
}
|
|
3267
|
-
|
|
3268
|
-
|
|
3491
|
+
if (!isNullOrUndefined(newProp.showButtons.cloneRule)) {
|
|
3492
|
+
if (newProp.showButtons.cloneRule) {
|
|
3493
|
+
removeClass(this.element.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');
|
|
3494
|
+
}
|
|
3495
|
+
else {
|
|
3496
|
+
addClass(this.element.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');
|
|
3497
|
+
}
|
|
3498
|
+
}
|
|
3499
|
+
if (!isNullOrUndefined(newProp.showButtons.ruleDelete)) {
|
|
3500
|
+
if (newProp.showButtons.ruleDelete) {
|
|
3501
|
+
removeClass(this.element.querySelectorAll('.e-rule-delete'), 'e-button-hide');
|
|
3502
|
+
}
|
|
3503
|
+
else {
|
|
3504
|
+
addClass(this.element.querySelectorAll('.e-rule-delete'), 'e-button-hide');
|
|
3505
|
+
}
|
|
3506
|
+
}
|
|
3507
|
+
if (!isNullOrUndefined(newProp.showButtons.groupDelete)) {
|
|
3508
|
+
if (newProp.showButtons.groupDelete) {
|
|
3509
|
+
removeClass(this.element.querySelectorAll('.e-deletegroup'), 'e-button-hide');
|
|
3510
|
+
}
|
|
3511
|
+
else {
|
|
3512
|
+
addClass(this.element.querySelectorAll('.e-deletegroup'), 'e-button-hide');
|
|
3513
|
+
}
|
|
3269
3514
|
}
|
|
3270
3515
|
break;
|
|
3271
3516
|
case 'cssClass':
|
|
@@ -3342,8 +3587,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3342
3587
|
this.element.id = this.element.id || getUniqueID('ej2-querybuilder');
|
|
3343
3588
|
this.defaultLocale = {
|
|
3344
3589
|
StartsWith: 'Starts With',
|
|
3590
|
+
DoesNotStartWith: 'Does Not Start With',
|
|
3345
3591
|
EndsWith: 'Ends With',
|
|
3592
|
+
DoesNotEndWith: 'Does Not End With',
|
|
3346
3593
|
Contains: 'Contains',
|
|
3594
|
+
DoesNotContain: 'Does Not Contain',
|
|
3347
3595
|
NotLike: 'Not Like',
|
|
3348
3596
|
Like: 'Like',
|
|
3349
3597
|
Equal: 'Equal',
|
|
@@ -3377,7 +3625,13 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3377
3625
|
IsNotNull: 'Is Not Null',
|
|
3378
3626
|
True: 'true',
|
|
3379
3627
|
False: 'false',
|
|
3380
|
-
AddButton: 'Add Group/Condition'
|
|
3628
|
+
AddButton: 'Add Group/Condition',
|
|
3629
|
+
CloneGroup: 'Clone Group',
|
|
3630
|
+
LockGroup: 'Lock Group',
|
|
3631
|
+
CloneRule: 'Clone Rule',
|
|
3632
|
+
LockRule: 'Lock Rule',
|
|
3633
|
+
UnlockRule: 'Unlock Rule',
|
|
3634
|
+
UnlockGroup: 'Unlock Group'
|
|
3381
3635
|
};
|
|
3382
3636
|
this.l10n = new L10n('querybuilder', this.defaultLocale, this.locale);
|
|
3383
3637
|
this.intl = new Internationalization(this.locale);
|
|
@@ -3390,8 +3644,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3390
3644
|
this.customOperators = {
|
|
3391
3645
|
stringOperator: [
|
|
3392
3646
|
{ value: 'startswith', key: this.l10n.getConstant('StartsWith') },
|
|
3647
|
+
{ value: 'notstartswith', key: this.l10n.getConstant('DoesNotStartWith') },
|
|
3393
3648
|
{ value: 'endswith', key: this.l10n.getConstant('EndsWith') },
|
|
3649
|
+
{ value: 'notendswith', key: this.l10n.getConstant('DoesNotEndWith') },
|
|
3394
3650
|
{ value: 'contains', key: this.l10n.getConstant('Contains') },
|
|
3651
|
+
{ value: 'notcontains', key: this.l10n.getConstant('DoesNotContain') },
|
|
3395
3652
|
{ value: 'equal', key: this.l10n.getConstant('Equal') },
|
|
3396
3653
|
{ value: 'notequal', key: this.l10n.getConstant('NotEqual') },
|
|
3397
3654
|
{ value: 'in', key: this.l10n.getConstant('In') },
|
|
@@ -3405,7 +3662,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3405
3662
|
{ value: 'greaterthanorequal', key: this.l10n.getConstant('GreaterThanOrEqual') },
|
|
3406
3663
|
{ value: 'lessthan', key: this.l10n.getConstant('LessThan') },
|
|
3407
3664
|
{ value: 'lessthanorequal', key: this.l10n.getConstant('LessThanOrEqual') },
|
|
3408
|
-
{ value: 'notequal', key: this.l10n.getConstant('NotEqual') }
|
|
3665
|
+
{ value: 'notequal', key: this.l10n.getConstant('NotEqual') },
|
|
3666
|
+
{ value: 'between', key: this.l10n.getConstant('Between') },
|
|
3667
|
+
{ value: 'notbetween', key: this.l10n.getConstant('NotBetween') }
|
|
3409
3668
|
],
|
|
3410
3669
|
booleanOperator: [
|
|
3411
3670
|
{ value: 'equal', key: this.l10n.getConstant('Equal') },
|
|
@@ -3709,6 +3968,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3709
3968
|
if (!(rule.rules[0] && rule.rules[0].rules)) {
|
|
3710
3969
|
this.disableRuleCondition(groupElem, rule);
|
|
3711
3970
|
}
|
|
3971
|
+
var tooltipElem = this.element.querySelectorAll('.e-tooltip');
|
|
3972
|
+
for (var i_3 = 0; i_3 < tooltipElem.length; i_3++) {
|
|
3973
|
+
getComponent(tooltipElem[i_3], 'tooltip').refresh(tooltipElem[i_3]);
|
|
3974
|
+
}
|
|
3712
3975
|
if (!this.isImportRules) {
|
|
3713
3976
|
this.trigger('change', args);
|
|
3714
3977
|
}
|
|
@@ -3726,6 +3989,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3726
3989
|
this.setProperties({ rule: rule }, true);
|
|
3727
3990
|
rule = this.getRuleCollection(this.rule, false);
|
|
3728
3991
|
this.importRules(this.rule, this.element.querySelector('.e-group-container'), true, this.rule.not, isRoot);
|
|
3992
|
+
if (rule.isLocked) {
|
|
3993
|
+
var lockGrpTarget = this.element.querySelector('.e-group-container').querySelector('.e-lock-grp-btn');
|
|
3994
|
+
this.groupLock(lockGrpTarget);
|
|
3995
|
+
}
|
|
3729
3996
|
this.isImportRules = false;
|
|
3730
3997
|
};
|
|
3731
3998
|
QueryBuilder.prototype.keyBoardHandler = function (e) {
|
|
@@ -3821,7 +4088,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3821
4088
|
rule.value !== undefined)) || (customObj && customObj.isQuestion)) {
|
|
3822
4089
|
var condition = rule.condition;
|
|
3823
4090
|
rule = {
|
|
3824
|
-
'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value
|
|
4091
|
+
'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value,
|
|
4092
|
+
'isLocked': rule.isLocked
|
|
3825
4093
|
};
|
|
3826
4094
|
if (condition) {
|
|
3827
4095
|
rule.condition = condition;
|
|
@@ -3830,6 +4098,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3830
4098
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3831
4099
|
rule.custom = customObj;
|
|
3832
4100
|
}
|
|
4101
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3833
4102
|
if ((rule.operator === 'in' || rule.operator === 'notin') && rule.value && rule.value.length === 0) {
|
|
3834
4103
|
rule = {};
|
|
3835
4104
|
}
|
|
@@ -3855,10 +4124,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3855
4124
|
}
|
|
3856
4125
|
else {
|
|
3857
4126
|
if (this.enableNotCondition) {
|
|
3858
|
-
rule = { 'condition': rule.condition, 'rules': rule.rules, 'not': rule.not };
|
|
4127
|
+
rule = { 'condition': rule.condition, 'rules': rule.rules, 'not': rule.not, 'isLocked': rule.isLocked };
|
|
3859
4128
|
}
|
|
3860
4129
|
else {
|
|
3861
|
-
rule = { 'condition': rule.condition, 'rules': rule.rules };
|
|
4130
|
+
rule = { 'condition': rule.condition, 'rules': rule.rules, 'isLocked': rule.isLocked };
|
|
3862
4131
|
}
|
|
3863
4132
|
if (customObj) {
|
|
3864
4133
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -4023,11 +4292,20 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4023
4292
|
var ruleValue;
|
|
4024
4293
|
var ignoreCase = false;
|
|
4025
4294
|
var column;
|
|
4026
|
-
var ignoreOper = ['notcontains', 'notstartswith', 'notendswith'];
|
|
4027
4295
|
if (!ruleColl) {
|
|
4028
4296
|
return pred;
|
|
4029
4297
|
}
|
|
4030
4298
|
for (var i = 0, len = ruleColl.length; i < len; i++) {
|
|
4299
|
+
var operator = ruleColl[i].operator;
|
|
4300
|
+
if (operator === 'notstartswith') {
|
|
4301
|
+
operator = 'doesnotstartwith';
|
|
4302
|
+
}
|
|
4303
|
+
else if (operator === 'notendswith') {
|
|
4304
|
+
operator = 'doesnotendwith';
|
|
4305
|
+
}
|
|
4306
|
+
else if (operator === 'notcontains') {
|
|
4307
|
+
operator = 'doesnotcontain';
|
|
4308
|
+
}
|
|
4031
4309
|
var keys = Object.keys(ruleColl[i]);
|
|
4032
4310
|
ignoreCase = false;
|
|
4033
4311
|
if (keys.indexOf('rules') > -1 && ruleColl[i].rules) {
|
|
@@ -4046,7 +4324,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4046
4324
|
}
|
|
4047
4325
|
}
|
|
4048
4326
|
}
|
|
4049
|
-
else if (!isNullOrUndefined(
|
|
4327
|
+
else if (!isNullOrUndefined(operator) && !isNullOrUndefined(operator.length)) {
|
|
4050
4328
|
var oper = ruleColl[i].operator.toLowerCase();
|
|
4051
4329
|
var isDateFilter = false;
|
|
4052
4330
|
var dateOperColl = ['equal', 'notequal', 'greaterthan', 'greaterthanorequal', 'lessthan', 'lessthanorequal'];
|
|
@@ -4077,23 +4355,20 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4077
4355
|
}
|
|
4078
4356
|
if (i === 0) {
|
|
4079
4357
|
if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 || oper.indexOf('null') > -1 ||
|
|
4080
|
-
oper.indexOf('empty') > -1) && oper.indexOf('
|
|
4358
|
+
oper.indexOf('empty') > -1) && (oper.indexOf('contain') < 0)) {
|
|
4081
4359
|
pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue) :
|
|
4082
4360
|
this.arrayPredicate(ruleColl[i]);
|
|
4083
4361
|
}
|
|
4084
4362
|
else {
|
|
4085
4363
|
var value = ruleValue;
|
|
4086
|
-
if (value !== ''
|
|
4087
|
-
pred = new Predicate(ruleColl[i].field,
|
|
4364
|
+
if (value !== '') {
|
|
4365
|
+
pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4088
4366
|
}
|
|
4089
4367
|
}
|
|
4090
4368
|
}
|
|
4091
4369
|
else {
|
|
4092
|
-
if (ignoreOper.indexOf(oper) > -1) {
|
|
4093
|
-
continue;
|
|
4094
|
-
}
|
|
4095
4370
|
if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 ||
|
|
4096
|
-
oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) && oper.indexOf('
|
|
4371
|
+
oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) && oper.indexOf('contain') < 0) {
|
|
4097
4372
|
pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue, pred, rule.condition) :
|
|
4098
4373
|
this.arrayPredicate(ruleColl[i], pred, rule.condition);
|
|
4099
4374
|
}
|
|
@@ -4102,19 +4377,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4102
4377
|
var value = ruleValue;
|
|
4103
4378
|
if (pred && value !== '') {
|
|
4104
4379
|
pred
|
|
4105
|
-
= pred.and(ruleColl[i].field,
|
|
4380
|
+
= pred.and(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4106
4381
|
}
|
|
4107
4382
|
else if (value !== '') {
|
|
4108
|
-
pred = new Predicate(ruleColl[i].field,
|
|
4383
|
+
pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4109
4384
|
}
|
|
4110
4385
|
}
|
|
4111
4386
|
else {
|
|
4112
4387
|
var value = ruleValue;
|
|
4113
4388
|
if (pred && value !== '') {
|
|
4114
|
-
pred = pred.or(ruleColl[i].field,
|
|
4389
|
+
pred = pred.or(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4115
4390
|
}
|
|
4116
4391
|
else if (value !== '') {
|
|
4117
|
-
pred = new Predicate(ruleColl[i].field,
|
|
4392
|
+
pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4118
4393
|
}
|
|
4119
4394
|
}
|
|
4120
4395
|
}
|
|
@@ -4394,15 +4669,28 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4394
4669
|
for (var i = 0, len = ruleColl.length; i < len; i++) {
|
|
4395
4670
|
var keys = Object.keys(ruleColl[i]);
|
|
4396
4671
|
if (!isNullOrUndefined(ruleColl[i].rules) && keys.indexOf('rules') > -1 && (ruleColl[i].rules.length !== 0)) {
|
|
4672
|
+
if (this.element.querySelectorAll('.e-group-container').length > this.maxGroupCount) {
|
|
4673
|
+
return null;
|
|
4674
|
+
}
|
|
4397
4675
|
parentElem = this.renderGroup(ruleColl[i], ruleColl[i].condition, parentElem, ruleColl[i].not);
|
|
4398
4676
|
parentElem = this.importRules(ruleColl[i], parentElem, true);
|
|
4399
4677
|
}
|
|
4400
4678
|
else {
|
|
4401
4679
|
this.renderRule(ruleColl[i], parentElem);
|
|
4402
4680
|
}
|
|
4681
|
+
if (!isNullOrUndefined(ruleColl[i].rules) && ruleColl[i].isLocked) {
|
|
4682
|
+
var lockGrpTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-grp-btn');
|
|
4683
|
+
this.groupLock(lockGrpTarget);
|
|
4684
|
+
}
|
|
4685
|
+
if (isNullOrUndefined(ruleColl[i].rules) && ruleColl[i].isLocked) {
|
|
4686
|
+
var lockRuleTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-rule-btn');
|
|
4687
|
+
this.ruleLock(lockRuleTarget);
|
|
4688
|
+
}
|
|
4403
4689
|
}
|
|
4404
4690
|
}
|
|
4405
|
-
|
|
4691
|
+
if (parentElem) {
|
|
4692
|
+
parentElem = closest(parentElem, '.e-rule-list');
|
|
4693
|
+
}
|
|
4406
4694
|
if (parentElem) {
|
|
4407
4695
|
parentElem = closest(parentElem, '.e-group-container');
|
|
4408
4696
|
}
|
|
@@ -4411,7 +4699,20 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4411
4699
|
QueryBuilder.prototype.renderGroup = function (rule, condition, parentElem, not, isRoot) {
|
|
4412
4700
|
this.addGroupElement(true, parentElem, condition, false, not, isRoot, rule); //Child group
|
|
4413
4701
|
var element = parentElem.querySelectorAll('.e-group-container');
|
|
4414
|
-
|
|
4702
|
+
var cloneElem = parentElem.querySelector('.e-rule-list').children;
|
|
4703
|
+
if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isMiddleGroup) {
|
|
4704
|
+
this.isMiddleGroup = false;
|
|
4705
|
+
this.cloneGrpBtnClick = false;
|
|
4706
|
+
return cloneElem[this.groupIndex + 1]; // group added in the middle
|
|
4707
|
+
}
|
|
4708
|
+
else if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isLastGroup) {
|
|
4709
|
+
this.isLastGroup = false;
|
|
4710
|
+
this.cloneGrpBtnClick = false;
|
|
4711
|
+
return cloneElem[cloneElem.length - 1]; // group added in the end
|
|
4712
|
+
}
|
|
4713
|
+
else {
|
|
4714
|
+
return element[element.length - 1];
|
|
4715
|
+
}
|
|
4415
4716
|
};
|
|
4416
4717
|
QueryBuilder.prototype.renderRule = function (rule, parentElem) {
|
|
4417
4718
|
if (parentElem.className.indexOf('e-group-container') > -1) {
|
|
@@ -4610,15 +4911,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4610
4911
|
valueStr += rule.value ? '("%' + rule.value + '%")' : '(' + rule.value + ')';
|
|
4611
4912
|
}
|
|
4612
4913
|
else {
|
|
4613
|
-
if (rule.type === 'number' || typeof rule.value === 'boolean' ||
|
|
4914
|
+
if (rule.type === 'number' || typeof rule.value === 'boolean' ||
|
|
4915
|
+
(rule.value === null && (rule.operator.toString().indexOf('empty') < -1))) {
|
|
4614
4916
|
valueStr += rule.value;
|
|
4615
4917
|
}
|
|
4918
|
+
else if (rule.operator.toString().indexOf('empty') > -1) {
|
|
4919
|
+
valueStr += '""';
|
|
4920
|
+
}
|
|
4616
4921
|
else {
|
|
4617
4922
|
valueStr += '"' + rule.value + '"';
|
|
4618
4923
|
}
|
|
4619
4924
|
}
|
|
4620
4925
|
}
|
|
4621
|
-
if (rule.operator.toString().indexOf('null') > -1
|
|
4926
|
+
if (rule.operator.toString().indexOf('null') > -1) {
|
|
4622
4927
|
if (enableEscape) {
|
|
4623
4928
|
rule.field = '`' + rule.field + '`';
|
|
4624
4929
|
}
|
|
@@ -4630,6 +4935,13 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4630
4935
|
queryStr += rule.field + ' ' + ruleOpertor;
|
|
4631
4936
|
}
|
|
4632
4937
|
else {
|
|
4938
|
+
var custOper = ruleOpertor;
|
|
4939
|
+
if (rule.operator === 'isempty') {
|
|
4940
|
+
custOper = '=';
|
|
4941
|
+
}
|
|
4942
|
+
else if (rule.operator === 'isnotempty') {
|
|
4943
|
+
custOper = '!=';
|
|
4944
|
+
}
|
|
4633
4945
|
if (enableEscape) {
|
|
4634
4946
|
rule.field = '`' + rule.field + '`';
|
|
4635
4947
|
}
|
|
@@ -4638,7 +4950,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4638
4950
|
rule.field = '"' + rule.field + '"';
|
|
4639
4951
|
}
|
|
4640
4952
|
}
|
|
4641
|
-
queryStr += rule.field + ' ' +
|
|
4953
|
+
queryStr += rule.field + ' ' + custOper + ' ' + valueStr;
|
|
4642
4954
|
}
|
|
4643
4955
|
if (rule.condition && rule.condition !== '') {
|
|
4644
4956
|
condition = rule.condition;
|
|
@@ -4668,7 +4980,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4668
4980
|
* Sets the rules from the sql query.
|
|
4669
4981
|
*
|
|
4670
4982
|
* @param {string} sqlString - 'sql String' to be passed to set the rule.
|
|
4671
|
-
* @param {boolean} sqlLocale -
|
|
4983
|
+
* @param {boolean} sqlLocale - Optional. Set `true` if Localization for Sql query.
|
|
4672
4984
|
* @returns {void}
|
|
4673
4985
|
*/
|
|
4674
4986
|
QueryBuilder.prototype.setRulesFromSql = function (sqlString, sqlLocale) {
|
|
@@ -4700,15 +5012,163 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4700
5012
|
*
|
|
4701
5013
|
* @param {RuleModel} rule - 'rule' to be passed to get the sql.
|
|
4702
5014
|
* @param {boolean} allowEscape - Set `true` if it exclude the escape character.
|
|
4703
|
-
*
|
|
4704
|
-
* @returns {
|
|
5015
|
+
* @param {boolean} sqlLocale - Set `true` if Localization for Sql query.
|
|
5016
|
+
* @returns {string} - Sql query from rules.
|
|
4705
5017
|
*/
|
|
4706
5018
|
QueryBuilder.prototype.getSqlFromRules = function (rule, allowEscape, sqlLocale) {
|
|
4707
5019
|
if (!rule) {
|
|
4708
5020
|
rule = this.getValidRules();
|
|
4709
5021
|
}
|
|
4710
5022
|
rule = this.getRuleCollection(rule, false);
|
|
4711
|
-
|
|
5023
|
+
var sqlString = this.getSqlString(this.getValidRules(rule), allowEscape, null, sqlLocale).replace(/"/g, '\'');
|
|
5024
|
+
return sqlString;
|
|
5025
|
+
};
|
|
5026
|
+
/**
|
|
5027
|
+
* Gets the parameter SQL query from rules.
|
|
5028
|
+
*
|
|
5029
|
+
* @param {RuleModel} rule – Specify the rule to be passed to get the parameter sql string.
|
|
5030
|
+
* @returns {ParameterizedSql} – Parameterized SQL query from rules.
|
|
5031
|
+
*/
|
|
5032
|
+
QueryBuilder.prototype.getParameterizedSql = function (rule) {
|
|
5033
|
+
if (!rule) {
|
|
5034
|
+
rule = this.getValidRules();
|
|
5035
|
+
}
|
|
5036
|
+
var obj = { sql: null };
|
|
5037
|
+
this.notify('query-library', { prop: 'getParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
|
|
5038
|
+
return obj['sql'];
|
|
5039
|
+
};
|
|
5040
|
+
/**
|
|
5041
|
+
* Sets the rules from the parameter sql query.
|
|
5042
|
+
*
|
|
5043
|
+
* @param { ParameterizedSql} sqlQuery – Specifies the parameter SQL to be passed to set the rule and load it to the query builder.
|
|
5044
|
+
* @returns {void}
|
|
5045
|
+
*/
|
|
5046
|
+
QueryBuilder.prototype.setParameterizedSql = function (sqlQuery) {
|
|
5047
|
+
var obj = { sql: null };
|
|
5048
|
+
this.notify('query-library', { prop: 'convertParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
|
|
5049
|
+
var sql = obj['sql'];
|
|
5050
|
+
if (sql) {
|
|
5051
|
+
sql = sql.replace(/`/g, '');
|
|
5052
|
+
var ruleModel = this.getRulesFromSql(sql);
|
|
5053
|
+
this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
|
|
5054
|
+
}
|
|
5055
|
+
};
|
|
5056
|
+
/**
|
|
5057
|
+
* Gets the named parameter SQL query from rules.
|
|
5058
|
+
*
|
|
5059
|
+
* @param {RuleModel} rule – Specify the rule to be passed to get the named parameter SQL string.
|
|
5060
|
+
* @returns {ParameterizedNamedSql} – Parameterized Named SQL query from rules.
|
|
5061
|
+
*/
|
|
5062
|
+
QueryBuilder.prototype.getParameterizedNamedSql = function (rule) {
|
|
5063
|
+
if (!rule) {
|
|
5064
|
+
rule = this.getValidRules();
|
|
5065
|
+
}
|
|
5066
|
+
var obj = { sql: null };
|
|
5067
|
+
this.notify('query-library', { prop: 'getNamedParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
|
|
5068
|
+
return obj['sql'];
|
|
5069
|
+
};
|
|
5070
|
+
/**
|
|
5071
|
+
* Sets the rules from the named parameter SQL query.
|
|
5072
|
+
*
|
|
5073
|
+
* @param { ParameterizedNamedSql } sqlQuery – Specifies the named parameter SQL to be passed to set the rule and load it to the query builder.
|
|
5074
|
+
* @returns {void}
|
|
5075
|
+
*/
|
|
5076
|
+
QueryBuilder.prototype.setParameterizedNamedSql = function (sqlQuery) {
|
|
5077
|
+
var obj = { sql: null };
|
|
5078
|
+
this.notify('query-library', { prop: 'convertNamedParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
|
|
5079
|
+
var sql = obj['sql'];
|
|
5080
|
+
if (sql) {
|
|
5081
|
+
sql = sql.replace(/`/g, '');
|
|
5082
|
+
var ruleModel = this.getRulesFromSql(sql);
|
|
5083
|
+
this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
|
|
5084
|
+
}
|
|
5085
|
+
};
|
|
5086
|
+
/**
|
|
5087
|
+
* Set the rules from Mongo query.
|
|
5088
|
+
*
|
|
5089
|
+
* @param {string} mongoQuery - 'sql String' to be passed to get the rule.
|
|
5090
|
+
* @param {boolean} mongoLocale - Set `true` if Localization for Mongo query.
|
|
5091
|
+
* @returns {void}
|
|
5092
|
+
*/
|
|
5093
|
+
QueryBuilder.prototype.setMongoQuery = function (mongoQuery, mongoLocale) {
|
|
5094
|
+
this.rule = { condition: 'and', not: false, rules: [] };
|
|
5095
|
+
this.notify('query-library', { prop: 'mongoParser', onPropertyChange: false, value: { mongoQuery: JSON.parse(mongoQuery), rule: this.rule, mongoLocale: mongoLocale } });
|
|
5096
|
+
};
|
|
5097
|
+
/**
|
|
5098
|
+
* Gets the Mongo query from rules.
|
|
5099
|
+
*
|
|
5100
|
+
* @param {RuleModel} rule - 'rule' to be passed to get the sql.
|
|
5101
|
+
* @returns {object} - Sql query from rules.
|
|
5102
|
+
*/
|
|
5103
|
+
QueryBuilder.prototype.getMongoQuery = function (rule) {
|
|
5104
|
+
if (!rule) {
|
|
5105
|
+
rule = this.getValidRules();
|
|
5106
|
+
}
|
|
5107
|
+
var obj = { mongoQuery: null };
|
|
5108
|
+
this.notify('query-library', { prop: 'getMongoFromRules', onPropertyChange: false, value: { rule: rule, mongoQuery: '', obj: obj } });
|
|
5109
|
+
return obj['mongoQuery'];
|
|
5110
|
+
};
|
|
5111
|
+
/**
|
|
5112
|
+
* Clones the rule based on the rule ID to the specific group.
|
|
5113
|
+
*
|
|
5114
|
+
* @param {string} ruleID - Specifies the ruleID that needs to be cloned.
|
|
5115
|
+
* @param {string} groupID - Specifies the groupID in which the rule to be cloned.
|
|
5116
|
+
* @param {number} index - Specifies the index to insert the cloned rule inside the group.
|
|
5117
|
+
* @returns {void}
|
|
5118
|
+
*/
|
|
5119
|
+
QueryBuilder.prototype.cloneRule = function (ruleID, groupID, index) {
|
|
5120
|
+
var getRule = this.getRule(ruleID.replace(this.element.id + '_', ''));
|
|
5121
|
+
groupID = groupID.replace(this.element.id + '_', '');
|
|
5122
|
+
this.ruleIndex = index;
|
|
5123
|
+
this.cloneRuleBtnClick = true;
|
|
5124
|
+
this.showButtons.cloneRule = true;
|
|
5125
|
+
this.addRules([{
|
|
5126
|
+
'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
|
|
5127
|
+
'value': getRule.value
|
|
5128
|
+
}], groupID);
|
|
5129
|
+
this.ruleIndex = -1;
|
|
5130
|
+
this.cloneRuleBtnClick = false;
|
|
5131
|
+
this.showButtons.cloneRule = false;
|
|
5132
|
+
};
|
|
5133
|
+
/**
|
|
5134
|
+
* Clones the group based on the group ID to the specific group.
|
|
5135
|
+
*
|
|
5136
|
+
* @param {string} groupID - Specifies the groupID that needs to be cloned.
|
|
5137
|
+
* @param {string} parentGroupID - Specifies the parentGroupID in which the group to be cloned.
|
|
5138
|
+
* @param {number} index - Specifies the index to insert the cloned group inside the parent group.
|
|
5139
|
+
* @returns {void}
|
|
5140
|
+
*/
|
|
5141
|
+
QueryBuilder.prototype.cloneGroup = function (groupID, parentGroupID, index) {
|
|
5142
|
+
parentGroupID = parentGroupID.replace(this.element.id + '_', '');
|
|
5143
|
+
var group = this.getGroup(parentGroupID);
|
|
5144
|
+
groupID = groupID.replace(this.element.id + '_', '');
|
|
5145
|
+
this.groupIndex = index;
|
|
5146
|
+
this.cloneGrpBtnClick = true;
|
|
5147
|
+
this.showButtons.cloneGroup = true;
|
|
5148
|
+
this.addGroups([{ 'condition': group.condition, 'not': group.not, 'rules': group.rules }], groupID);
|
|
5149
|
+
this.groupIndex = -1;
|
|
5150
|
+
this.cloneGrpBtnClick = false;
|
|
5151
|
+
this.showButtons.cloneGroup = false;
|
|
5152
|
+
};
|
|
5153
|
+
/**
|
|
5154
|
+
* Locks the rule based on the rule ID.
|
|
5155
|
+
*
|
|
5156
|
+
* @param {string} ruleID - Specifies the ruleID that needs to be locked.
|
|
5157
|
+
* @returns {void}
|
|
5158
|
+
*/
|
|
5159
|
+
QueryBuilder.prototype.lockRule = function (ruleID) {
|
|
5160
|
+
var target = document.getElementById(ruleID).querySelectorAll('.e-lock-rule-btn')[0];
|
|
5161
|
+
this.ruleLock(target);
|
|
5162
|
+
};
|
|
5163
|
+
/**
|
|
5164
|
+
* Locks the group based on the group ID
|
|
5165
|
+
*
|
|
5166
|
+
* @param {string} groupID - Specifies the groupID that needs to be locked.
|
|
5167
|
+
* @returns {void}
|
|
5168
|
+
*/
|
|
5169
|
+
QueryBuilder.prototype.lockGroup = function (groupID) {
|
|
5170
|
+
var target = document.getElementById(groupID).querySelectorAll('.e-lock-grp-btn')[0];
|
|
5171
|
+
this.groupLock(target);
|
|
4712
5172
|
};
|
|
4713
5173
|
QueryBuilder.prototype.sqlParser = function (sqlString, sqlLocale) {
|
|
4714
5174
|
var st = 0;
|
|
@@ -4910,13 +5370,13 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4910
5370
|
for (var i = 0; i < localeOperator.length; i++) {
|
|
4911
5371
|
if (this.sqlOperators[localeOperator[i]] === operator.toUpperCase()) {
|
|
4912
5372
|
if (value && value.indexOf('%') === 0 && value[value.length - 1] === '%') {
|
|
4913
|
-
return (
|
|
5373
|
+
return (operator.toUpperCase() === 'NOT LIKE') ? 'notcontains' : 'contains';
|
|
4914
5374
|
}
|
|
4915
5375
|
else if (value && value.indexOf('%') !== 0 && value.indexOf('%') === value.length - 1) {
|
|
4916
|
-
return (
|
|
5376
|
+
return (operator.toUpperCase() === 'NOT LIKE') ? 'notstartswith' : 'startswith';
|
|
4917
5377
|
}
|
|
4918
5378
|
else if (value && value.indexOf('%') === 0 && value.indexOf('%') !== value.length - 1) {
|
|
4919
|
-
return (
|
|
5379
|
+
return (operator.toUpperCase() === 'NOT LIKE') ? 'notendswith' : 'endswith';
|
|
4920
5380
|
}
|
|
4921
5381
|
return localeOperator[i];
|
|
4922
5382
|
}
|
|
@@ -5101,6 +5561,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
5101
5561
|
}
|
|
5102
5562
|
else if (parser[i + 1][0] === 'Operators') {
|
|
5103
5563
|
rule.operator = this.getOperator(parser[i + 2][1], parser[i + 1][1], sqlLocale);
|
|
5564
|
+
if (rule.operator == "equal" && parser[i + 2][0] === "String" && parser[i + 2][1] === "''") {
|
|
5565
|
+
rule.operator = "isempty";
|
|
5566
|
+
|
|
5567
|
+
}
|
|
5568
|
+
else if (rule.operator == "notequal" && parser[i + 2][0] === "String" && parser[i + 2][1] === "''") {
|
|
5569
|
+
rule.operator = "isnotempty";
|
|
5570
|
+
|
|
5571
|
+
}
|
|
5104
5572
|
if (parser[i + 2][0] === 'Number') {
|
|
5105
5573
|
rule.type = 'number';
|
|
5106
5574
|
rule.value = Number(parser[i + 2][1]);
|
|
@@ -5157,34 +5625,329 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
5157
5625
|
}
|
|
5158
5626
|
return rules;
|
|
5159
5627
|
};
|
|
5628
|
+
/**
|
|
5629
|
+
* Clone the Group
|
|
5630
|
+
*
|
|
5631
|
+
* @param {Element | string} target - 'target' to be passed to clone the group.
|
|
5632
|
+
* @returns {void}
|
|
5633
|
+
*/
|
|
5634
|
+
QueryBuilder.prototype.groupClone = function (target) {
|
|
5635
|
+
var groupElem = target.closest('.e-rule-list').closest('.e-group-container');
|
|
5636
|
+
var targetGrpId;
|
|
5637
|
+
var groupId;
|
|
5638
|
+
if (typeof target === 'string') {
|
|
5639
|
+
groupId = this.element.id + '_' + target;
|
|
5640
|
+
target = document.getElementById(groupId);
|
|
5641
|
+
}
|
|
5642
|
+
else {
|
|
5643
|
+
targetGrpId = target.id.replace(this.element.id + '_', '');
|
|
5644
|
+
groupId = groupElem.id.replace(this.element.id + '_', '');
|
|
5645
|
+
}
|
|
5646
|
+
var group = this.getGroup(targetGrpId);
|
|
5647
|
+
this.groupIndex = Array.prototype.indexOf.call(target.closest('.e-rule-list').children, target.closest('.e-group-container'));
|
|
5648
|
+
this.addGroups([{ 'condition': group.condition, 'not': group.not, 'rules': group.rules }], groupId);
|
|
5649
|
+
this.groupIndex = -1;
|
|
5650
|
+
};
|
|
5651
|
+
QueryBuilder.prototype.ruleClone = function (target) {
|
|
5652
|
+
var ruleElem = closest(target, '.e-rule-container');
|
|
5653
|
+
var groupElem = target.closest('.e-rule-list').closest('.e-group-container');
|
|
5654
|
+
var getRule = this.getRule(target);
|
|
5655
|
+
var groupId = groupElem.id.replace(this.element.id + '_', '');
|
|
5656
|
+
var ruleElemColl = groupElem.querySelectorAll('.e-rule-container');
|
|
5657
|
+
for (var i = 0, iLen = ruleElemColl.length; i < iLen; i++) {
|
|
5658
|
+
if (ruleElem.id === ruleElemColl[i].id) {
|
|
5659
|
+
this.ruleIndex = i;
|
|
5660
|
+
}
|
|
5661
|
+
}
|
|
5662
|
+
this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
|
|
5663
|
+
'value': getRule.value }], groupId);
|
|
5664
|
+
this.ruleIndex = -1;
|
|
5665
|
+
};
|
|
5666
|
+
QueryBuilder.prototype.ruleLock = function (target) {
|
|
5667
|
+
var ruleElem = closest(target, '.e-rule-container');
|
|
5668
|
+
var rule = this.getRule(ruleElem.id.replace(this.element.id + '_', ''));
|
|
5669
|
+
if (ruleElem.classList.contains('e-disable')) {
|
|
5670
|
+
rule.isLocked = false;
|
|
5671
|
+
this.lockItems = this.lockItems.filter(function (lockItem) { return lockItem !== ruleElem.id; });
|
|
5672
|
+
ruleElem.classList.remove('e-disable');
|
|
5673
|
+
this.disableRuleControls(target, ruleElem, false);
|
|
5674
|
+
target.children[0].classList.add('e-unlock');
|
|
5675
|
+
target.children[0].classList.remove('e-lock');
|
|
5676
|
+
target.setAttribute('title', this.l10n.getConstant('LockRule'));
|
|
5677
|
+
}
|
|
5678
|
+
else {
|
|
5679
|
+
rule.isLocked = true;
|
|
5680
|
+
if (this.lockItems.indexOf(ruleElem.id) < 0) {
|
|
5681
|
+
this.lockItems.splice(this.lockItems.length - 1, 0, ruleElem.id);
|
|
5682
|
+
}
|
|
5683
|
+
ruleElem.classList.add('e-disable');
|
|
5684
|
+
this.disableRuleControls(target, ruleElem, true);
|
|
5685
|
+
target.children[0].classList.add('e-lock');
|
|
5686
|
+
target.children[0].classList.remove('e-unlock');
|
|
5687
|
+
target.setAttribute('title', this.l10n.getConstant('UnlockRule'));
|
|
5688
|
+
}
|
|
5689
|
+
};
|
|
5690
|
+
QueryBuilder.prototype.groupLock = function (target) {
|
|
5691
|
+
var groupElem = closest(target, '.e-group-container');
|
|
5692
|
+
var group = this.getGroup(groupElem.id.replace(this.element.id + '_', ''));
|
|
5693
|
+
var isRoot = groupElem.id.indexOf('group0') > -1;
|
|
5694
|
+
if (groupElem.classList.contains('e-disable')) {
|
|
5695
|
+
if (isRoot) {
|
|
5696
|
+
var newGroup = {};
|
|
5697
|
+
newGroup.condition = group.condition;
|
|
5698
|
+
newGroup.not = group.not;
|
|
5699
|
+
newGroup.isLocked = false;
|
|
5700
|
+
this.setProperties({ rule: newGroup }, true);
|
|
5701
|
+
}
|
|
5702
|
+
else {
|
|
5703
|
+
group.isLocked = false;
|
|
5704
|
+
}
|
|
5705
|
+
this.lockItems = this.lockItems.filter(function (lockItem) { return lockItem !== groupElem.id; });
|
|
5706
|
+
groupElem.classList.remove('e-disable');
|
|
5707
|
+
this.disableHeaderControls(target, groupElem, false);
|
|
5708
|
+
target.children[0].classList.add('e-unlock');
|
|
5709
|
+
target.children[0].classList.remove('e-lock');
|
|
5710
|
+
target.setAttribute('title', this.l10n.getConstant('LockGroup'));
|
|
5711
|
+
this.updateLockItems();
|
|
5712
|
+
}
|
|
5713
|
+
else {
|
|
5714
|
+
if (isRoot) {
|
|
5715
|
+
var newGroup = {};
|
|
5716
|
+
newGroup.condition = group.condition;
|
|
5717
|
+
newGroup.not = group.not;
|
|
5718
|
+
newGroup.isLocked = true;
|
|
5719
|
+
this.setProperties({ rule: newGroup }, true);
|
|
5720
|
+
}
|
|
5721
|
+
else {
|
|
5722
|
+
group.isLocked = true;
|
|
5723
|
+
}
|
|
5724
|
+
if (this.lockItems.indexOf(groupElem.id) < 0) {
|
|
5725
|
+
this.lockItems.splice(this.lockItems.length - 1, 0, groupElem.id);
|
|
5726
|
+
}
|
|
5727
|
+
groupElem.classList.add('e-disable');
|
|
5728
|
+
this.disableHeaderControls(target, groupElem, true);
|
|
5729
|
+
target.children[0].classList.add('e-lock');
|
|
5730
|
+
target.children[0].classList.remove('e-unlock');
|
|
5731
|
+
target.setAttribute('title', this.l10n.getConstant('UnlockGroup'));
|
|
5732
|
+
}
|
|
5733
|
+
};
|
|
5734
|
+
QueryBuilder.prototype.updateLockItems = function () {
|
|
5735
|
+
for (var i = 0; i < this.lockItems.length; i++) {
|
|
5736
|
+
var idColl = this.lockItems[i].split('_');
|
|
5737
|
+
if (idColl.length > 2) {
|
|
5738
|
+
var ruleElem = this.element.querySelector('#' + this.lockItems[i]);
|
|
5739
|
+
var target = ruleElem.querySelector('.e-lock-rule-btn');
|
|
5740
|
+
ruleElem = closest(target, '.e-rule-container');
|
|
5741
|
+
if (!ruleElem.classList.contains('e-disable')) {
|
|
5742
|
+
this.ruleLock(target);
|
|
5743
|
+
}
|
|
5744
|
+
}
|
|
5745
|
+
else {
|
|
5746
|
+
var groupElem = this.element.querySelector('#' + this.lockItems[i]);
|
|
5747
|
+
var target = groupElem.querySelector('.e-lock-grp-btn');
|
|
5748
|
+
groupElem = closest(target, '.e-group-container');
|
|
5749
|
+
if (!groupElem.classList.contains('e-disable')) {
|
|
5750
|
+
this.groupLock(target);
|
|
5751
|
+
}
|
|
5752
|
+
}
|
|
5753
|
+
}
|
|
5754
|
+
};
|
|
5755
|
+
QueryBuilder.prototype.disableHeaderControls = function (target, groupElem, isDisabled) {
|
|
5756
|
+
var andElem = groupElem.querySelectorAll('.e-btngroup-and');
|
|
5757
|
+
var orElem = groupElem.querySelectorAll('.e-btngroup-or');
|
|
5758
|
+
var notElem = groupElem.querySelectorAll('.e-qb-toggle');
|
|
5759
|
+
var addElem = groupElem.querySelectorAll('.e-add-btn');
|
|
5760
|
+
var deleteGrpElem = groupElem.querySelectorAll('.e-deletegroup');
|
|
5761
|
+
var lockElem = groupElem.querySelectorAll('.e-lock-grp-btn');
|
|
5762
|
+
var cloneElem = groupElem.querySelectorAll('.e-clone-grp-btn');
|
|
5763
|
+
var groupContElem = groupElem.querySelectorAll('.e-group-container');
|
|
5764
|
+
for (var i = 0; i < andElem.length; i++) {
|
|
5765
|
+
if (isDisabled) {
|
|
5766
|
+
if (groupContElem[i] && groupContElem[i].classList.contains('e-disable')) {
|
|
5767
|
+
groupContElem[i].classList.add('e-disable');
|
|
5768
|
+
}
|
|
5769
|
+
andElem[i].disabled = true;
|
|
5770
|
+
orElem[i].disabled = true;
|
|
5771
|
+
addElem[i].disabled = true;
|
|
5772
|
+
if (notElem[i]) {
|
|
5773
|
+
notElem[i].disabled = true;
|
|
5774
|
+
}
|
|
5775
|
+
if (deleteGrpElem[i]) {
|
|
5776
|
+
deleteGrpElem[i].disabled = true;
|
|
5777
|
+
}
|
|
5778
|
+
if (cloneElem[i]) {
|
|
5779
|
+
cloneElem[i].disabled = true;
|
|
5780
|
+
}
|
|
5781
|
+
andElem[i].parentElement.classList.add('e-disabled');
|
|
5782
|
+
if (lockElem[i] !== target) {
|
|
5783
|
+
lockElem[i].disabled = true;
|
|
5784
|
+
lockElem[i].children[0].classList.remove('e-unlock');
|
|
5785
|
+
lockElem[i].children[0].classList.add('e-lock');
|
|
5786
|
+
}
|
|
5787
|
+
}
|
|
5788
|
+
else {
|
|
5789
|
+
if (groupContElem[i]) {
|
|
5790
|
+
groupContElem[i].classList.remove('e-disable');
|
|
5791
|
+
}
|
|
5792
|
+
andElem[i].disabled = false;
|
|
5793
|
+
orElem[i].disabled = false;
|
|
5794
|
+
addElem[i].disabled = false;
|
|
5795
|
+
lockElem[i].disabled = false;
|
|
5796
|
+
if (notElem[i]) {
|
|
5797
|
+
notElem[i].disabled = false;
|
|
5798
|
+
}
|
|
5799
|
+
if (deleteGrpElem[i]) {
|
|
5800
|
+
deleteGrpElem[i].disabled = false;
|
|
5801
|
+
}
|
|
5802
|
+
if (cloneElem[i]) {
|
|
5803
|
+
cloneElem[i].disabled = false;
|
|
5804
|
+
}
|
|
5805
|
+
andElem[i].parentElement.classList.remove('e-disabled');
|
|
5806
|
+
lockElem[i].children[0].classList.remove('e-lock');
|
|
5807
|
+
lockElem[i].children[0].classList.add('e-unlock');
|
|
5808
|
+
}
|
|
5809
|
+
}
|
|
5810
|
+
this.disableRuleControls(target, groupElem, isDisabled);
|
|
5811
|
+
};
|
|
5812
|
+
QueryBuilder.prototype.disableRuleControls = function (target, groupElem, isDisabled) {
|
|
5813
|
+
var ddlElement = groupElem.querySelectorAll('.e-control.e-dropdownlist');
|
|
5814
|
+
var numericElement = groupElem.querySelectorAll('.e-control.e-numerictextbox');
|
|
5815
|
+
var textElement = groupElem.querySelectorAll('.e-control.e-textbox');
|
|
5816
|
+
var dateElement = groupElem.querySelectorAll('.e-control.e-datepicker');
|
|
5817
|
+
var checkboxElement = groupElem.querySelectorAll('.e-control.e-checkbox');
|
|
5818
|
+
var radioBtnElement = groupElem.querySelectorAll('.e-control.e-radio');
|
|
5819
|
+
var multiSelectElement = groupElem.querySelectorAll('.e-control.e-multiselect');
|
|
5820
|
+
var deleteElem = groupElem.querySelectorAll('.e-rule-delete');
|
|
5821
|
+
var lockElem = groupElem.querySelectorAll('.e-lock-rule');
|
|
5822
|
+
var cloneElem = groupElem.querySelectorAll('.e-clone-rule');
|
|
5823
|
+
var ruleElem = groupElem.querySelectorAll('.e-rule-container');
|
|
5824
|
+
for (var i = 0; i < deleteElem.length; i++) {
|
|
5825
|
+
if (isDisabled) {
|
|
5826
|
+
if (ruleElem[i] && ruleElem[i].classList.contains('e-disable')) {
|
|
5827
|
+
ruleElem[i].classList.add('e-disable');
|
|
5828
|
+
}
|
|
5829
|
+
deleteElem[i].disabled = true;
|
|
5830
|
+
if (cloneElem[i]) {
|
|
5831
|
+
cloneElem[i].disabled = true;
|
|
5832
|
+
}
|
|
5833
|
+
if (lockElem[i] !== target) {
|
|
5834
|
+
lockElem[i].disabled = true;
|
|
5835
|
+
lockElem[i].children[0].classList.remove('e-unlock');
|
|
5836
|
+
lockElem[i].children[0].classList.add('e-lock');
|
|
5837
|
+
}
|
|
5838
|
+
}
|
|
5839
|
+
else {
|
|
5840
|
+
if (ruleElem[i]) {
|
|
5841
|
+
ruleElem[i].classList.remove('e-disable');
|
|
5842
|
+
}
|
|
5843
|
+
if (cloneElem[i]) {
|
|
5844
|
+
cloneElem[i].disabled = false;
|
|
5845
|
+
}
|
|
5846
|
+
deleteElem[i].disabled = false;
|
|
5847
|
+
lockElem[i].disabled = false;
|
|
5848
|
+
lockElem[i].children[0].classList.remove('e-lock');
|
|
5849
|
+
lockElem[i].children[0].classList.add('e-unlock');
|
|
5850
|
+
}
|
|
5851
|
+
}
|
|
5852
|
+
var dropDownObj;
|
|
5853
|
+
var numericObj;
|
|
5854
|
+
var textObj;
|
|
5855
|
+
var dateObj;
|
|
5856
|
+
var checkBoxObj;
|
|
5857
|
+
var radioBtnObj;
|
|
5858
|
+
var multiSelectObj;
|
|
5859
|
+
for (var i = 0; i < ddlElement.length; i++) {
|
|
5860
|
+
dropDownObj = getComponent(ddlElement[i], 'dropdownlist');
|
|
5861
|
+
if (isDisabled) {
|
|
5862
|
+
dropDownObj.enabled = false;
|
|
5863
|
+
}
|
|
5864
|
+
else {
|
|
5865
|
+
dropDownObj.enabled = true;
|
|
5866
|
+
}
|
|
5867
|
+
}
|
|
5868
|
+
for (var i = 0; i < numericElement.length; i++) {
|
|
5869
|
+
numericObj = getComponent(numericElement[i], 'numerictextbox');
|
|
5870
|
+
if (isDisabled) {
|
|
5871
|
+
numericObj.enabled = false;
|
|
5872
|
+
}
|
|
5873
|
+
else {
|
|
5874
|
+
numericObj.enabled = true;
|
|
5875
|
+
}
|
|
5876
|
+
}
|
|
5877
|
+
for (var i = 0; i < textElement.length; i++) {
|
|
5878
|
+
textObj = getComponent(textElement[i], 'textbox');
|
|
5879
|
+
if (isDisabled) {
|
|
5880
|
+
textObj.enabled = false;
|
|
5881
|
+
}
|
|
5882
|
+
else {
|
|
5883
|
+
textObj.enabled = true;
|
|
5884
|
+
}
|
|
5885
|
+
}
|
|
5886
|
+
for (var i = 0; i < dateElement.length; i++) {
|
|
5887
|
+
dateObj = getComponent(dateElement[i], 'datepicker');
|
|
5888
|
+
if (isDisabled) {
|
|
5889
|
+
dateObj.enabled = false;
|
|
5890
|
+
}
|
|
5891
|
+
else {
|
|
5892
|
+
dateObj.enabled = true;
|
|
5893
|
+
}
|
|
5894
|
+
}
|
|
5895
|
+
for (var i = 0; i < checkboxElement.length; i++) {
|
|
5896
|
+
checkBoxObj = getComponent(checkboxElement[i], 'checkbox');
|
|
5897
|
+
if (isDisabled) {
|
|
5898
|
+
checkBoxObj.disabled = true;
|
|
5899
|
+
}
|
|
5900
|
+
else {
|
|
5901
|
+
checkBoxObj.disabled = false;
|
|
5902
|
+
}
|
|
5903
|
+
}
|
|
5904
|
+
for (var i = 0; i < radioBtnElement.length; i++) {
|
|
5905
|
+
radioBtnObj = getComponent(radioBtnElement[i], 'radio');
|
|
5906
|
+
if (isDisabled) {
|
|
5907
|
+
radioBtnObj.disabled = true;
|
|
5908
|
+
}
|
|
5909
|
+
else {
|
|
5910
|
+
radioBtnObj.disabled = false;
|
|
5911
|
+
}
|
|
5912
|
+
}
|
|
5913
|
+
for (var i = 0; i < multiSelectElement.length; i++) {
|
|
5914
|
+
multiSelectObj = getComponent(multiSelectElement[i], 'multiselect');
|
|
5915
|
+
if (isDisabled) {
|
|
5916
|
+
multiSelectObj.enabled = false;
|
|
5917
|
+
}
|
|
5918
|
+
else {
|
|
5919
|
+
multiSelectObj.enabled = true;
|
|
5920
|
+
}
|
|
5921
|
+
}
|
|
5922
|
+
};
|
|
5923
|
+
__decorate([
|
|
5924
|
+
Event()
|
|
5925
|
+
], QueryBuilder.prototype, "created", void 0);
|
|
5926
|
+
__decorate([
|
|
5927
|
+
Event()
|
|
5928
|
+
], QueryBuilder.prototype, "actionBegin", void 0);
|
|
5929
|
+
__decorate([
|
|
5930
|
+
Event()
|
|
5931
|
+
], QueryBuilder.prototype, "beforeChange", void 0);
|
|
5932
|
+
__decorate([
|
|
5933
|
+
Event()
|
|
5934
|
+
], QueryBuilder.prototype, "change", void 0);
|
|
5935
|
+
__decorate([
|
|
5936
|
+
Event()
|
|
5937
|
+
], QueryBuilder.prototype, "dataBound", void 0);
|
|
5938
|
+
__decorate([
|
|
5939
|
+
Event()
|
|
5940
|
+
], QueryBuilder.prototype, "ruleChange", void 0);
|
|
5941
|
+
__decorate([
|
|
5942
|
+
Complex({}, ShowButtons)
|
|
5943
|
+
], QueryBuilder.prototype, "showButtons", void 0);
|
|
5944
|
+
__decorate([
|
|
5945
|
+
Property(false)
|
|
5946
|
+
], QueryBuilder.prototype, "summaryView", void 0);
|
|
5947
|
+
__decorate([
|
|
5948
|
+
Property(false)
|
|
5949
|
+
], QueryBuilder.prototype, "allowValidation", void 0);
|
|
5160
5950
|
__decorate([
|
|
5161
|
-
Event()
|
|
5162
|
-
], QueryBuilder.prototype, "created", void 0);
|
|
5163
|
-
__decorate([
|
|
5164
|
-
Event()
|
|
5165
|
-
], QueryBuilder.prototype, "actionBegin", void 0);
|
|
5166
|
-
__decorate([
|
|
5167
|
-
Event()
|
|
5168
|
-
], QueryBuilder.prototype, "beforeChange", void 0);
|
|
5169
|
-
__decorate([
|
|
5170
|
-
Event()
|
|
5171
|
-
], QueryBuilder.prototype, "change", void 0);
|
|
5172
|
-
__decorate([
|
|
5173
|
-
Event()
|
|
5174
|
-
], QueryBuilder.prototype, "dataBound", void 0);
|
|
5175
|
-
__decorate([
|
|
5176
|
-
Event()
|
|
5177
|
-
], QueryBuilder.prototype, "ruleChange", void 0);
|
|
5178
|
-
__decorate([
|
|
5179
|
-
Property({ ruleDelete: true, groupInsert: true, groupDelete: true })
|
|
5180
|
-
], QueryBuilder.prototype, "showButtons", void 0);
|
|
5181
|
-
__decorate([
|
|
5182
|
-
Property(false)
|
|
5183
|
-
], QueryBuilder.prototype, "summaryView", void 0);
|
|
5184
|
-
__decorate([
|
|
5185
|
-
Property(false)
|
|
5186
|
-
], QueryBuilder.prototype, "allowValidation", void 0);
|
|
5187
|
-
__decorate([
|
|
5188
5951
|
Property('Default')
|
|
5189
5952
|
], QueryBuilder.prototype, "fieldMode", void 0);
|
|
5190
5953
|
__decorate([
|
|
@@ -5238,6 +6001,15 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
5238
6001
|
__decorate([
|
|
5239
6002
|
Property(false)
|
|
5240
6003
|
], QueryBuilder.prototype, "readonly", void 0);
|
|
6004
|
+
__decorate([
|
|
6005
|
+
Property(true)
|
|
6006
|
+
], QueryBuilder.prototype, "addRuleToNewGroups", void 0);
|
|
6007
|
+
__decorate([
|
|
6008
|
+
Property(false)
|
|
6009
|
+
], QueryBuilder.prototype, "autoSelectField", void 0);
|
|
6010
|
+
__decorate([
|
|
6011
|
+
Property(true)
|
|
6012
|
+
], QueryBuilder.prototype, "autoSelectOperator", void 0);
|
|
5241
6013
|
__decorate([
|
|
5242
6014
|
Property('')
|
|
5243
6015
|
], QueryBuilder.prototype, "separator", void 0);
|
|
@@ -5250,6 +6022,694 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
5250
6022
|
return QueryBuilder;
|
|
5251
6023
|
}(Component));
|
|
5252
6024
|
|
|
6025
|
+
var QueryLibrary = /** @__PURE__ @class */ (function () {
|
|
6026
|
+
function QueryLibrary(parent) {
|
|
6027
|
+
this.parent = parent;
|
|
6028
|
+
this.addEventListener();
|
|
6029
|
+
}
|
|
6030
|
+
QueryLibrary.prototype.destroy = function () {
|
|
6031
|
+
if (this.parent.isDestroyed) {
|
|
6032
|
+
return;
|
|
6033
|
+
}
|
|
6034
|
+
this.removeEventListener();
|
|
6035
|
+
};
|
|
6036
|
+
QueryLibrary.prototype.addEventListener = function () {
|
|
6037
|
+
if (this.parent.isDestroyed) {
|
|
6038
|
+
return;
|
|
6039
|
+
}
|
|
6040
|
+
this.parent.on('query-library', this.queryLibrary, this);
|
|
6041
|
+
this.parent.on('destroyed', this.destroy, this);
|
|
6042
|
+
};
|
|
6043
|
+
QueryLibrary.prototype.removeEventListener = function () {
|
|
6044
|
+
this.parent.off('query-library', this.queryLibrary);
|
|
6045
|
+
this.parent.off('destroyed', this.destroy);
|
|
6046
|
+
};
|
|
6047
|
+
QueryLibrary.prototype.queryLibrary = function (args) {
|
|
6048
|
+
switch (args.prop) {
|
|
6049
|
+
case 'getMongoFromRules':
|
|
6050
|
+
args.value['obj']['mongoQuery'] = this.getMongoFromRules(args.value['rule'], args.value['mongoQuery']);
|
|
6051
|
+
break;
|
|
6052
|
+
case 'mongoParser':
|
|
6053
|
+
this.mongoParser(args.value['mongoQuery'], args.value['rule'], args.value['mongoLocale']);
|
|
6054
|
+
break;
|
|
6055
|
+
case 'getParameterSql':
|
|
6056
|
+
args.value['obj']['sql'] = this.getParameterSql(args.value['rule']);
|
|
6057
|
+
break;
|
|
6058
|
+
case 'getNamedParameterSql':
|
|
6059
|
+
args.value['obj']['sql'] = this.getNamedParameterSql(args.value['rule']);
|
|
6060
|
+
break;
|
|
6061
|
+
case 'convertParamSqlToSql':
|
|
6062
|
+
args.value['obj']['sql'] = this.convertParamSqlToSql(args.value['sql']);
|
|
6063
|
+
break;
|
|
6064
|
+
case 'convertNamedParamSqlToSql':
|
|
6065
|
+
args.value['obj']['sql'] = this.convertNamedParamSqlToSql(args.value['sql']);
|
|
6066
|
+
break;
|
|
6067
|
+
}
|
|
6068
|
+
};
|
|
6069
|
+
QueryLibrary.prototype.getMongoFromRules = function (rule, mongoQuery) {
|
|
6070
|
+
mongoQuery = '{';
|
|
6071
|
+
if (rule.condition === 'or') {
|
|
6072
|
+
mongoQuery += '"$or":[';
|
|
6073
|
+
mongoQuery = this.convertMongoQuery(rule.rules, mongoQuery) + ']';
|
|
6074
|
+
}
|
|
6075
|
+
else {
|
|
6076
|
+
mongoQuery += '"$and":[';
|
|
6077
|
+
mongoQuery = this.convertMongoQuery(rule.rules, mongoQuery) + ']';
|
|
6078
|
+
}
|
|
6079
|
+
mongoQuery += '}';
|
|
6080
|
+
return mongoQuery;
|
|
6081
|
+
};
|
|
6082
|
+
QueryLibrary.prototype.getOperatorFromMongoOperator = function (operator) {
|
|
6083
|
+
var operatorValue;
|
|
6084
|
+
switch (operator) {
|
|
6085
|
+
case '$ne':
|
|
6086
|
+
operatorValue = 'notequal';
|
|
6087
|
+
break;
|
|
6088
|
+
case '$gt':
|
|
6089
|
+
operatorValue = 'greaterthan';
|
|
6090
|
+
break;
|
|
6091
|
+
case '$gte':
|
|
6092
|
+
operatorValue = 'greaterthanorequal';
|
|
6093
|
+
break;
|
|
6094
|
+
case '$lt':
|
|
6095
|
+
operatorValue = 'lessthan';
|
|
6096
|
+
break;
|
|
6097
|
+
case '$lte':
|
|
6098
|
+
operatorValue = 'lessthanorequal';
|
|
6099
|
+
break;
|
|
6100
|
+
case '$nin':
|
|
6101
|
+
operatorValue = 'notin';
|
|
6102
|
+
break;
|
|
6103
|
+
}
|
|
6104
|
+
return operatorValue;
|
|
6105
|
+
};
|
|
6106
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6107
|
+
QueryLibrary.prototype.convertMongoQuery = function (rules, mongoQuery) {
|
|
6108
|
+
var _this = this;
|
|
6109
|
+
var i = 0;
|
|
6110
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6111
|
+
rules.forEach(function (item) {
|
|
6112
|
+
i++;
|
|
6113
|
+
mongoQuery += '{';
|
|
6114
|
+
if (item.rules !== undefined) {
|
|
6115
|
+
if (item.condition === 'or') {
|
|
6116
|
+
mongoQuery += ' "$or":[';
|
|
6117
|
+
mongoQuery = _this.convertMongoQuery(item.rules, mongoQuery) + ']';
|
|
6118
|
+
}
|
|
6119
|
+
else {
|
|
6120
|
+
mongoQuery += ' "$and":[';
|
|
6121
|
+
mongoQuery = _this.convertMongoQuery(item.rules, mongoQuery) + ']';
|
|
6122
|
+
}
|
|
6123
|
+
}
|
|
6124
|
+
var itVal = item.type === 'string' && item.operator !== 'in' && item.operator !== 'notin' && item.value && item.value.trim() !== '' ? item.value.replace(/'/g, '\\') : '';
|
|
6125
|
+
if (item.type === 'string' && (item.operator === 'in' || item.operator === 'notin') && item.value && item.value.length === 1) {
|
|
6126
|
+
itVal = item.value[0].replace(/'/g, '\\');
|
|
6127
|
+
}
|
|
6128
|
+
var field = item.field ? item.field.substring(0) : '';
|
|
6129
|
+
switch (item.operator) {
|
|
6130
|
+
case 'contains':
|
|
6131
|
+
mongoQuery += '"' + field + '":{"$regex":"' + itVal + '"}';
|
|
6132
|
+
break;
|
|
6133
|
+
case 'notcontains':
|
|
6134
|
+
mongoQuery += '"' + field + '":{"$not":{"$regex":"' + item.value + '"}}';
|
|
6135
|
+
break;
|
|
6136
|
+
case 'startswith':
|
|
6137
|
+
mongoQuery += '"' + field + '":{"$regex":"^' + itVal + '"}';
|
|
6138
|
+
break;
|
|
6139
|
+
case 'notstartswith':
|
|
6140
|
+
mongoQuery += '"' + field + '":{"$not":{"$regex":"^' + item.value + '"}}';
|
|
6141
|
+
break;
|
|
6142
|
+
case 'endswith':
|
|
6143
|
+
mongoQuery += '"' + field + '":{"$regex":"' + itVal + '$"}';
|
|
6144
|
+
break;
|
|
6145
|
+
case 'notendswith':
|
|
6146
|
+
mongoQuery += '"' + field + '":{"$not":{"$regex":"' + item.value + '$"}}';
|
|
6147
|
+
break;
|
|
6148
|
+
case 'isnull':
|
|
6149
|
+
mongoQuery += '"' + field + '": null';
|
|
6150
|
+
break;
|
|
6151
|
+
case 'isnotnull':
|
|
6152
|
+
mongoQuery += '"' + field + '":{"$ne": null}';
|
|
6153
|
+
break;
|
|
6154
|
+
case 'isempty':
|
|
6155
|
+
mongoQuery += '"' + field + '": ""';
|
|
6156
|
+
break;
|
|
6157
|
+
case 'isnotempty':
|
|
6158
|
+
mongoQuery += '"' + field + '":{"$ne": ""}';
|
|
6159
|
+
break;
|
|
6160
|
+
case 'equal':
|
|
6161
|
+
if (item.type === 'string') {
|
|
6162
|
+
mongoQuery += '"' + field + '":"' + itVal + '"';
|
|
6163
|
+
}
|
|
6164
|
+
else if (item.type === 'date') {
|
|
6165
|
+
mongoQuery += '"' + field + '":"' + item.value + '"';
|
|
6166
|
+
}
|
|
6167
|
+
else if (item.type === 'boolean') {
|
|
6168
|
+
mongoQuery += '"' + field + '":' + item.value + '';
|
|
6169
|
+
}
|
|
6170
|
+
else {
|
|
6171
|
+
mongoQuery += '"' + field + '":' + item.value + '';
|
|
6172
|
+
}
|
|
6173
|
+
break;
|
|
6174
|
+
case 'notequal':
|
|
6175
|
+
if (item.type === 'string') {
|
|
6176
|
+
mongoQuery += '"' + field + '":{"$ne":"' + itVal + '"}';
|
|
6177
|
+
}
|
|
6178
|
+
else if (item.type === 'date') {
|
|
6179
|
+
mongoQuery += '"' + field + '":{"$ne":"' + item.value + '"}';
|
|
6180
|
+
}
|
|
6181
|
+
else {
|
|
6182
|
+
mongoQuery += '"' + field + '":{"$ne":' + item.value + '}';
|
|
6183
|
+
}
|
|
6184
|
+
break;
|
|
6185
|
+
case 'in':
|
|
6186
|
+
if (item.type === 'string') {
|
|
6187
|
+
if (item.value.length > 1) {
|
|
6188
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6189
|
+
var s = item.value.map(function (x, j) { return (j < item.value.length ? "\"" + x + "\"" : ''); }).toString();
|
|
6190
|
+
s = s.endsWith(',') ? s.substring(0, s.length - 1) : s;
|
|
6191
|
+
mongoQuery += '"' + field + '": { "$in": [' + s + ']}';
|
|
6192
|
+
}
|
|
6193
|
+
else {
|
|
6194
|
+
mongoQuery += '"' + field + '": { "$in": ["' + itVal + '"]}';
|
|
6195
|
+
}
|
|
6196
|
+
}
|
|
6197
|
+
else if (item.type === 'number') {
|
|
6198
|
+
if (item.value.length > 1) {
|
|
6199
|
+
mongoQuery += '"' + field + '": { "$in": [' + item.value.toString() + ']}';
|
|
6200
|
+
}
|
|
6201
|
+
else {
|
|
6202
|
+
mongoQuery += '"' + field + '": { "$in": [' + item.value + ']}';
|
|
6203
|
+
}
|
|
6204
|
+
}
|
|
6205
|
+
break;
|
|
6206
|
+
case 'notin':
|
|
6207
|
+
if (item.type === 'string') {
|
|
6208
|
+
if (item.value.length > 1) {
|
|
6209
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6210
|
+
var s = item.value.map(function (x, j) { return (j < item.value.length ? "\"" + x + "\"" : ''); }).toString();
|
|
6211
|
+
s = s.endsWith(',') ? s.substring(0, s.length - 1) : s;
|
|
6212
|
+
mongoQuery += '"' + field + '": { "$nin": [' + s + ']}';
|
|
6213
|
+
}
|
|
6214
|
+
else {
|
|
6215
|
+
mongoQuery += '"' + field + '": { "$nin": ["' + itVal + '"]}';
|
|
6216
|
+
}
|
|
6217
|
+
}
|
|
6218
|
+
else if (item.type === 'number') {
|
|
6219
|
+
if (item.value.length > 1) {
|
|
6220
|
+
mongoQuery += '"' + field + '": { "$nin": [' + item.value.toString() + ']}';
|
|
6221
|
+
}
|
|
6222
|
+
else {
|
|
6223
|
+
mongoQuery += '"' + field + '": { "$nin": [' + item.value + ']}';
|
|
6224
|
+
}
|
|
6225
|
+
}
|
|
6226
|
+
break;
|
|
6227
|
+
case 'greaterthan':
|
|
6228
|
+
if (item.type === 'number') {
|
|
6229
|
+
mongoQuery += '"' + field + '": { "$gt": ' + item.value + '}';
|
|
6230
|
+
}
|
|
6231
|
+
else {
|
|
6232
|
+
mongoQuery += '"' + field + '": { "$gt": "' + item.value + '"}';
|
|
6233
|
+
}
|
|
6234
|
+
break;
|
|
6235
|
+
case 'greaterthanorequal':
|
|
6236
|
+
if (item.type === 'number') {
|
|
6237
|
+
mongoQuery += '"' + field + '": { "$gte": ' + item.value + '}';
|
|
6238
|
+
}
|
|
6239
|
+
else {
|
|
6240
|
+
mongoQuery += '"' + field + '": { "$gte": "' + item.value + '"}';
|
|
6241
|
+
}
|
|
6242
|
+
break;
|
|
6243
|
+
case 'between':
|
|
6244
|
+
if (item.type === 'number') {
|
|
6245
|
+
mongoQuery += '"' + field + '": {"$gte":' + item.value[0] + ', "$lte":' + item.value[1] + '}';
|
|
6246
|
+
}
|
|
6247
|
+
else {
|
|
6248
|
+
mongoQuery += '"' + field + '": {"$gte": "' + item.value[0] + '", "$lte": "' + item.value[1] + '"}';
|
|
6249
|
+
}
|
|
6250
|
+
break;
|
|
6251
|
+
case 'notbetween':
|
|
6252
|
+
if (item.type === 'number') {
|
|
6253
|
+
mongoQuery += '"$or":[{"' + field + '": {"$lt":' + item.value[0] + '}}, {"' + field + '": {"$gt":' + item.value[1] + '}}]';
|
|
6254
|
+
}
|
|
6255
|
+
else {
|
|
6256
|
+
mongoQuery += '"$or":[{"' + field + '": {"$lt": "' + item.value[0] + '"}}, {"' + field + '": {"$gt": "' + item.value[1] + '"}}]';
|
|
6257
|
+
}
|
|
6258
|
+
break;
|
|
6259
|
+
case 'lessthan':
|
|
6260
|
+
if (item.type === 'number') {
|
|
6261
|
+
mongoQuery += '"' + field + '": { "$lt": ' + item.value + '}';
|
|
6262
|
+
}
|
|
6263
|
+
else {
|
|
6264
|
+
mongoQuery += '"' + field + '": { "$lt": "' + item.value + '"}';
|
|
6265
|
+
}
|
|
6266
|
+
break;
|
|
6267
|
+
case 'lessthanorequal':
|
|
6268
|
+
if (item.type === 'number') {
|
|
6269
|
+
mongoQuery += '"' + field + '": { "$lte": ' + item.value + '}';
|
|
6270
|
+
}
|
|
6271
|
+
else {
|
|
6272
|
+
mongoQuery += '"' + field + '": { "$lte": "' + item.value + '"}';
|
|
6273
|
+
}
|
|
6274
|
+
break;
|
|
6275
|
+
}
|
|
6276
|
+
mongoQuery += '}';
|
|
6277
|
+
if (rules.length !== i) {
|
|
6278
|
+
mongoQuery += ',';
|
|
6279
|
+
}
|
|
6280
|
+
});
|
|
6281
|
+
return mongoQuery;
|
|
6282
|
+
};
|
|
6283
|
+
QueryLibrary.prototype.mongoParser = function (mongoQuery, rule, mongoLocale) {
|
|
6284
|
+
var mongoList;
|
|
6285
|
+
if (Object.keys(mongoQuery).indexOf('$and') > -1) {
|
|
6286
|
+
mongoList = mongoQuery['$and'];
|
|
6287
|
+
rule.condition = 'and';
|
|
6288
|
+
}
|
|
6289
|
+
else if (Object.keys(mongoQuery).indexOf('$or') > -1) {
|
|
6290
|
+
mongoList = mongoQuery['$or'];
|
|
6291
|
+
rule.condition = 'or';
|
|
6292
|
+
}
|
|
6293
|
+
rule.rules = [];
|
|
6294
|
+
this.mongoRecursion(mongoList, rule.rules, mongoLocale);
|
|
6295
|
+
};
|
|
6296
|
+
QueryLibrary.prototype.mongoRecursion = function (mongoList, rules, mongoLocale) {
|
|
6297
|
+
var operatorValue;
|
|
6298
|
+
var type;
|
|
6299
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6300
|
+
var stringValue;
|
|
6301
|
+
var key;
|
|
6302
|
+
var betweenValue;
|
|
6303
|
+
var condition;
|
|
6304
|
+
var value;
|
|
6305
|
+
var subRules;
|
|
6306
|
+
var rule;
|
|
6307
|
+
var keyObj;
|
|
6308
|
+
var ruleValue;
|
|
6309
|
+
for (var i = 0, len = mongoList.length; i < len; i++) {
|
|
6310
|
+
var betweenOperatorArray = [];
|
|
6311
|
+
var inOperatorArray = [];
|
|
6312
|
+
condition = Object.keys(mongoList[i])[0];
|
|
6313
|
+
value = mongoList[i][condition];
|
|
6314
|
+
if (condition === '$and') {
|
|
6315
|
+
if (this.parent.enableNotCondition) {
|
|
6316
|
+
subRules = { condition: condition.replace('$', ''), rules: [], not: false };
|
|
6317
|
+
}
|
|
6318
|
+
else {
|
|
6319
|
+
subRules = { condition: condition.replace('$', ''), rules: [] };
|
|
6320
|
+
}
|
|
6321
|
+
rules.push(subRules);
|
|
6322
|
+
this.mongoRecursion(mongoList[i][condition], rules[rules.length - 1].rules, mongoLocale);
|
|
6323
|
+
}
|
|
6324
|
+
else if (condition === '$or') {
|
|
6325
|
+
var notBetween = void 0;
|
|
6326
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len
|
|
6327
|
+
var innerObject = [];
|
|
6328
|
+
var keys = [];
|
|
6329
|
+
var firstKey = [];
|
|
6330
|
+
var secondKey = [];
|
|
6331
|
+
var innerKeys = [];
|
|
6332
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len
|
|
6333
|
+
var firstValue = [];
|
|
6334
|
+
var secondValue = [];
|
|
6335
|
+
var innerFirstValue = [];
|
|
6336
|
+
var innerSecondValue = [];
|
|
6337
|
+
if (Array.isArray(value) && value.length === 2) {
|
|
6338
|
+
keys = Object.keys(value);
|
|
6339
|
+
innerFirstValue = value[keys[0]];
|
|
6340
|
+
innerSecondValue = value[keys[1]];
|
|
6341
|
+
if (typeof innerFirstValue === 'object') {
|
|
6342
|
+
innerObject = Object.keys(innerFirstValue)[0];
|
|
6343
|
+
innerKeys = Object.keys(innerFirstValue[Object.keys(innerFirstValue)[0]]);
|
|
6344
|
+
firstKey = innerKeys[0];
|
|
6345
|
+
secondKey = Object.keys(innerSecondValue[Object.keys(innerSecondValue)[0]])[0];
|
|
6346
|
+
if (firstKey === '$lt' && secondKey === '$gt') {
|
|
6347
|
+
operatorValue = 'notbetween';
|
|
6348
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
6349
|
+
firstValue = innerFirstValue[innerObject][firstKey];
|
|
6350
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
6351
|
+
secondValue = innerSecondValue[innerObject][secondKey];
|
|
6352
|
+
type = typeof firstValue === 'number' ? 'number' : 'date';
|
|
6353
|
+
ruleValue = [firstValue, secondValue];
|
|
6354
|
+
rule = { field: innerObject, label: innerObject, value: ruleValue, operator: operatorValue, type: type };
|
|
6355
|
+
rules.push(rule);
|
|
6356
|
+
notBetween = true;
|
|
6357
|
+
}
|
|
6358
|
+
}
|
|
6359
|
+
}
|
|
6360
|
+
if (!notBetween) {
|
|
6361
|
+
if (this.parent.enableNotCondition) {
|
|
6362
|
+
subRules = { condition: condition.replace('$', ''), rules: [], not: false };
|
|
6363
|
+
}
|
|
6364
|
+
else {
|
|
6365
|
+
subRules = { condition: condition.replace('$', ''), rules: [] };
|
|
6366
|
+
}
|
|
6367
|
+
rules.push(subRules);
|
|
6368
|
+
this.mongoRecursion(mongoList[i][condition], rules[rules.length - 1].rules, mongoLocale);
|
|
6369
|
+
}
|
|
6370
|
+
}
|
|
6371
|
+
else {
|
|
6372
|
+
value = mongoList[i][condition];
|
|
6373
|
+
if (value === null) { // isnull operator
|
|
6374
|
+
operatorValue = 'isnull';
|
|
6375
|
+
}
|
|
6376
|
+
if (typeof value === 'boolean') { // boolean type values
|
|
6377
|
+
operatorValue = 'equal';
|
|
6378
|
+
type = 'boolean';
|
|
6379
|
+
ruleValue = value;
|
|
6380
|
+
}
|
|
6381
|
+
if (typeof (value) === 'number') {
|
|
6382
|
+
ruleValue = value;
|
|
6383
|
+
type = 'number';
|
|
6384
|
+
operatorValue = 'equal';
|
|
6385
|
+
}
|
|
6386
|
+
else if (typeof (value) === 'object' && value !== null) {
|
|
6387
|
+
keyObj = Object.keys(value);
|
|
6388
|
+
for (var i_1 = 0; i_1 < keyObj.length; i_1++) {
|
|
6389
|
+
key = keyObj[i_1];
|
|
6390
|
+
stringValue = (value)[keyObj[i_1]];
|
|
6391
|
+
if (key === '$ne' && isNullOrUndefined(stringValue)) { // not null operator
|
|
6392
|
+
operatorValue = 'isnotnull';
|
|
6393
|
+
ruleValue = null;
|
|
6394
|
+
}
|
|
6395
|
+
if (key === '$ne' && typeof stringValue === 'boolean') { // not equal operator for boolean
|
|
6396
|
+
operatorValue = 'notequal';
|
|
6397
|
+
ruleValue = stringValue;
|
|
6398
|
+
type = 'boolean';
|
|
6399
|
+
}
|
|
6400
|
+
if (keyObj.length >= 2 && keyObj[i_1]) {
|
|
6401
|
+
if (typeof (stringValue) == 'object') { // between and notbetween operators
|
|
6402
|
+
operatorValue = 'notbetween';
|
|
6403
|
+
condition = Object.keys(stringValue)[0];
|
|
6404
|
+
betweenValue = [Object.keys(stringValue[condition])[0]];
|
|
6405
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6406
|
+
betweenOperatorArray.push(stringValue[condition][betweenValue]);
|
|
6407
|
+
type = 'number';
|
|
6408
|
+
}
|
|
6409
|
+
else {
|
|
6410
|
+
operatorValue = 'between';
|
|
6411
|
+
betweenOperatorArray.push(stringValue);
|
|
6412
|
+
}
|
|
6413
|
+
if (typeof (stringValue) === 'number') {
|
|
6414
|
+
type = 'number';
|
|
6415
|
+
}
|
|
6416
|
+
}
|
|
6417
|
+
else if (typeof (stringValue) === 'object' && stringValue !== null) { // "in" and "notin" operator
|
|
6418
|
+
if (key === '$not' && Object.keys(stringValue)[0] === '$regex') {
|
|
6419
|
+
if (stringValue['$regex'].indexOf('^') > -1) {
|
|
6420
|
+
operatorValue = 'notstartswith';
|
|
6421
|
+
ruleValue = stringValue['$regex'].replace('^', '');
|
|
6422
|
+
}
|
|
6423
|
+
else if (stringValue['$regex'].indexOf('$') > -1) {
|
|
6424
|
+
operatorValue = 'notendswith';
|
|
6425
|
+
ruleValue = stringValue['$regex'].replace('$', '');
|
|
6426
|
+
}
|
|
6427
|
+
else {
|
|
6428
|
+
operatorValue = 'notcontains';
|
|
6429
|
+
ruleValue = stringValue['$regex'];
|
|
6430
|
+
}
|
|
6431
|
+
}
|
|
6432
|
+
else {
|
|
6433
|
+
operatorValue = key === '$in' ? 'in' : 'notin';
|
|
6434
|
+
inOperatorArray = stringValue;
|
|
6435
|
+
type = typeof (stringValue[0]) === 'number' ? 'number' : 'string';
|
|
6436
|
+
}
|
|
6437
|
+
}
|
|
6438
|
+
else if (typeof (stringValue) === 'number') { // number type values
|
|
6439
|
+
operatorValue = this.getOperatorFromMongoOperator(key);
|
|
6440
|
+
type = 'number';
|
|
6441
|
+
ruleValue = stringValue;
|
|
6442
|
+
}
|
|
6443
|
+
if (typeof (stringValue) === 'string') { // string type values
|
|
6444
|
+
if (key === '$regex') {
|
|
6445
|
+
operatorValue = 'contains';
|
|
6446
|
+
ruleValue = stringValue;
|
|
6447
|
+
type = 'string';
|
|
6448
|
+
}
|
|
6449
|
+
if (key === '$ne') { // not equal
|
|
6450
|
+
if (stringValue !== null && stringValue.length > 0 && isNaN(Date.parse(stringValue))) {
|
|
6451
|
+
operatorValue = 'notequal';
|
|
6452
|
+
ruleValue = stringValue;
|
|
6453
|
+
}
|
|
6454
|
+
else if (isNullOrUndefined(stringValue)) { // is not null operator
|
|
6455
|
+
operatorValue = 'isnotnull';
|
|
6456
|
+
ruleValue = stringValue;
|
|
6457
|
+
}
|
|
6458
|
+
else if (stringValue === '') { // is not empty operator
|
|
6459
|
+
operatorValue = 'isnotempty';
|
|
6460
|
+
ruleValue = stringValue;
|
|
6461
|
+
}
|
|
6462
|
+
type = 'string';
|
|
6463
|
+
}
|
|
6464
|
+
if (stringValue.indexOf('^') > -1) {
|
|
6465
|
+
operatorValue = 'startswith';
|
|
6466
|
+
ruleValue = stringValue.replace('^', '');
|
|
6467
|
+
type = 'string';
|
|
6468
|
+
}
|
|
6469
|
+
if (stringValue.indexOf('$') > -1 && key !== '$not') {
|
|
6470
|
+
operatorValue = 'endswith';
|
|
6471
|
+
ruleValue = stringValue.replace('$', '');
|
|
6472
|
+
type = 'string';
|
|
6473
|
+
}
|
|
6474
|
+
if (!isNaN(Date.parse(stringValue))) { // Date type operators
|
|
6475
|
+
operatorValue = operatorValue || this.getOperatorFromMongoOperator(key);
|
|
6476
|
+
type = 'date';
|
|
6477
|
+
ruleValue = stringValue;
|
|
6478
|
+
}
|
|
6479
|
+
}
|
|
6480
|
+
}
|
|
6481
|
+
}
|
|
6482
|
+
else if (value && typeof (value) === 'string' && !isNaN(Date.parse(value))) {
|
|
6483
|
+
operatorValue = 'equal';
|
|
6484
|
+
ruleValue = value;
|
|
6485
|
+
type = 'date';
|
|
6486
|
+
}
|
|
6487
|
+
else if (typeof (value) === 'string' && value !== '' && value !== 'true' && value !== 'false') {
|
|
6488
|
+
operatorValue = 'equal';
|
|
6489
|
+
ruleValue = value;
|
|
6490
|
+
type = 'string';
|
|
6491
|
+
}
|
|
6492
|
+
else if (typeof (value) === 'string' && value === '') {
|
|
6493
|
+
operatorValue = 'isempty';
|
|
6494
|
+
ruleValue = value;
|
|
6495
|
+
type = 'string';
|
|
6496
|
+
}
|
|
6497
|
+
if (betweenOperatorArray && betweenOperatorArray.length > 1) { // between opertor value
|
|
6498
|
+
rule = { field: condition, label: condition, value: betweenOperatorArray, operator: operatorValue, type: type };
|
|
6499
|
+
}
|
|
6500
|
+
else if (inOperatorArray && inOperatorArray.length > 1) { // in operator value
|
|
6501
|
+
rule = { field: condition, label: condition, value: inOperatorArray, operator: operatorValue, type: type };
|
|
6502
|
+
}
|
|
6503
|
+
else {
|
|
6504
|
+
rule = { field: condition, label: condition, value: ruleValue, operator: operatorValue, type: type };
|
|
6505
|
+
}
|
|
6506
|
+
rules.push(rule);
|
|
6507
|
+
operatorValue = '';
|
|
6508
|
+
}
|
|
6509
|
+
}
|
|
6510
|
+
};
|
|
6511
|
+
QueryLibrary.prototype.convertParamSqlToSql = function (sql) {
|
|
6512
|
+
var paramSql = sql.sql;
|
|
6513
|
+
var paramValues = sql.params;
|
|
6514
|
+
var parts = paramSql.split('?');
|
|
6515
|
+
var normalSql = parts[0];
|
|
6516
|
+
for (var i = 0; i < paramValues.length; i++) {
|
|
6517
|
+
normalSql += (typeof (paramValues[i]) === 'string' ? "'" + paramValues[i] + "'" + parts[i + 1] : paramValues[i] + parts[i + 1]);
|
|
6518
|
+
}
|
|
6519
|
+
if (normalSql.length >= 2 && normalSql[0] === '(' && normalSql[normalSql.length - 1] === ')') {
|
|
6520
|
+
normalSql = normalSql.slice(1, -1);
|
|
6521
|
+
}
|
|
6522
|
+
normalSql = normalSql.replace(/!= ''(?! =)/g, 'IS NOT EMPTY').replace(/= ''/g, 'IS EMPTY');
|
|
6523
|
+
return normalSql;
|
|
6524
|
+
};
|
|
6525
|
+
QueryLibrary.prototype.convertNamedParamSqlToSql = function (sql) {
|
|
6526
|
+
var namedParamSql = sql.sql;
|
|
6527
|
+
var params = sql.params;
|
|
6528
|
+
var normalSql = namedParamSql;
|
|
6529
|
+
Object.keys(params).forEach(function (paramName) {
|
|
6530
|
+
var paramValue = params[paramName];
|
|
6531
|
+
paramName = ':' + paramName;
|
|
6532
|
+
normalSql = normalSql.replace(paramName, typeof (paramValue) === 'string' ? "'" + paramValue + "'" : String(paramValue));
|
|
6533
|
+
});
|
|
6534
|
+
if (normalSql.length >= 2 && normalSql[0] === '(' && normalSql[normalSql.length - 1] === ')') {
|
|
6535
|
+
normalSql = normalSql.slice(1, -1);
|
|
6536
|
+
}
|
|
6537
|
+
normalSql = normalSql.replace(/!= ''(?! =)/g, 'IS NOT EMPTY').replace(/= ''/g, 'IS EMPTY');
|
|
6538
|
+
return normalSql;
|
|
6539
|
+
};
|
|
6540
|
+
QueryLibrary.prototype.getParameterSql = function (qbrule) {
|
|
6541
|
+
var qbRule = extend({}, qbrule, null, true);
|
|
6542
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6543
|
+
var value = this.updateRuleValue(qbRule, false);
|
|
6544
|
+
return this.getParameterSQLVal(this.parent.getSqlFromRules(qbRule), value['ruleVal']);
|
|
6545
|
+
};
|
|
6546
|
+
QueryLibrary.prototype.getNamedParameterSql = function (qbrule) {
|
|
6547
|
+
var qbRule = extend({}, qbrule, null, true);
|
|
6548
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6549
|
+
var value = this.updateRuleValue(qbRule, true);
|
|
6550
|
+
return this.getNamedParameterSQLVal(this.parent.getSqlFromRules(qbRule), value['namedRuleVal']);
|
|
6551
|
+
};
|
|
6552
|
+
QueryLibrary.prototype.getParameterSQLVal = function (content, ruleValue) {
|
|
6553
|
+
var replacedString = content.replace(/[%']/g, '');
|
|
6554
|
+
return { sql: '(' + replacedString + ')', params: ruleValue };
|
|
6555
|
+
};
|
|
6556
|
+
QueryLibrary.prototype.getNamedParameterSQLVal = function (content, ruleValue) {
|
|
6557
|
+
var replacedString = content.replace(/[%']/g, '');
|
|
6558
|
+
return { sql: '(' + replacedString + ')', params: ruleValue };
|
|
6559
|
+
};
|
|
6560
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6561
|
+
QueryLibrary.prototype.updateRuleValue = function (rule, isNamedParameter) {
|
|
6562
|
+
var ruleVal = [];
|
|
6563
|
+
var namedRuleVal = {};
|
|
6564
|
+
var namedParameters = [];
|
|
6565
|
+
return this.updateValue(rule.rules, isNamedParameter, ruleVal, namedRuleVal, namedParameters);
|
|
6566
|
+
};
|
|
6567
|
+
QueryLibrary.prototype.updateValue = function (rules, isNamedParameter, ruleVal,
|
|
6568
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6569
|
+
namedRuleVal, namedParameters) {
|
|
6570
|
+
if (isNullOrUndefined(rules)) {
|
|
6571
|
+
return { ruleVal: ruleVal, namedRuleVal: namedRuleVal };
|
|
6572
|
+
}
|
|
6573
|
+
for (var i = 0; i < rules.length; i++) {
|
|
6574
|
+
if (rules[i].rules) {
|
|
6575
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6576
|
+
var value = this.updateValue(rules[i].rules, isNamedParameter, ruleVal, namedRuleVal, namedParameters);
|
|
6577
|
+
ruleVal = value['ruleVal'];
|
|
6578
|
+
namedRuleVal = value['namedRuleVal'];
|
|
6579
|
+
}
|
|
6580
|
+
else {
|
|
6581
|
+
var namedField = void 0;
|
|
6582
|
+
if (rules[i].value instanceof Array) {
|
|
6583
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6584
|
+
for (var j = 0; j < (rules[i].value).length; j++) {
|
|
6585
|
+
if (isNamedParameter) {
|
|
6586
|
+
namedField = this.getNamedParameter(rules[i].field, namedParameters);
|
|
6587
|
+
}
|
|
6588
|
+
if (!isNullOrUndefined(rules[i].value[j])) {
|
|
6589
|
+
if (rules[i].type === 'string' || rules[i].type === 'date') {
|
|
6590
|
+
if (isNamedParameter) {
|
|
6591
|
+
namedRuleVal[namedField] = rules[i].value[j];
|
|
6592
|
+
}
|
|
6593
|
+
else {
|
|
6594
|
+
ruleVal.push(rules[i].value[j]);
|
|
6595
|
+
}
|
|
6596
|
+
}
|
|
6597
|
+
else {
|
|
6598
|
+
if (isNamedParameter) {
|
|
6599
|
+
namedRuleVal[namedField] = rules[i].value[j];
|
|
6600
|
+
}
|
|
6601
|
+
else {
|
|
6602
|
+
ruleVal.push(rules[i].value[j]);
|
|
6603
|
+
}
|
|
6604
|
+
}
|
|
6605
|
+
}
|
|
6606
|
+
if (isNamedParameter) {
|
|
6607
|
+
rules[i].value[j] = ':' + namedField;
|
|
6608
|
+
}
|
|
6609
|
+
else {
|
|
6610
|
+
rules[i].value[j] = '?';
|
|
6611
|
+
}
|
|
6612
|
+
}
|
|
6613
|
+
}
|
|
6614
|
+
else {
|
|
6615
|
+
if (isNamedParameter) {
|
|
6616
|
+
namedField = this.getNamedParameter(rules[i].field, namedParameters);
|
|
6617
|
+
}
|
|
6618
|
+
if (rules[i].operator.indexOf('null') < 1) {
|
|
6619
|
+
if (rules[i].type !== 'string' || (rules[i].type === 'string' && (rules[i].value !== '' || rules[i].value === 0))) {
|
|
6620
|
+
if (rules[i].type === 'string' || rules[i].type === 'date') {
|
|
6621
|
+
if (rules[i].operator.indexOf('empty') < 1) {
|
|
6622
|
+
var value = rules[i].value.toString();
|
|
6623
|
+
switch (rules[i].operator) {
|
|
6624
|
+
case 'startswith':
|
|
6625
|
+
case 'notstartswith':
|
|
6626
|
+
value = value + '%';
|
|
6627
|
+
break;
|
|
6628
|
+
case 'endswith':
|
|
6629
|
+
case 'notendswith':
|
|
6630
|
+
value = '%' + value;
|
|
6631
|
+
break;
|
|
6632
|
+
case 'contains':
|
|
6633
|
+
case 'notcontains':
|
|
6634
|
+
value = '%' + value + '%';
|
|
6635
|
+
break;
|
|
6636
|
+
}
|
|
6637
|
+
if (isNamedParameter) {
|
|
6638
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6639
|
+
namedRuleVal[namedField] = value;
|
|
6640
|
+
}
|
|
6641
|
+
else {
|
|
6642
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6643
|
+
ruleVal.push(value);
|
|
6644
|
+
}
|
|
6645
|
+
}
|
|
6646
|
+
else {
|
|
6647
|
+
if (isNamedParameter) {
|
|
6648
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6649
|
+
namedRuleVal[namedField] = '';
|
|
6650
|
+
}
|
|
6651
|
+
else {
|
|
6652
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6653
|
+
ruleVal.push('');
|
|
6654
|
+
}
|
|
6655
|
+
if (rules[i].operator === 'isempty') {
|
|
6656
|
+
rules[i].operator = 'equal';
|
|
6657
|
+
}
|
|
6658
|
+
else {
|
|
6659
|
+
rules[i].operator = 'notequal';
|
|
6660
|
+
}
|
|
6661
|
+
}
|
|
6662
|
+
}
|
|
6663
|
+
else {
|
|
6664
|
+
if (!isNullOrUndefined(rules[i].value)) {
|
|
6665
|
+
if (isNamedParameter) {
|
|
6666
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6667
|
+
namedRuleVal[namedField] = rules[i].value;
|
|
6668
|
+
}
|
|
6669
|
+
else {
|
|
6670
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6671
|
+
ruleVal.push(rules[i].value);
|
|
6672
|
+
}
|
|
6673
|
+
}
|
|
6674
|
+
}
|
|
6675
|
+
if (isNamedParameter) {
|
|
6676
|
+
rules[i].value = ':' + namedField;
|
|
6677
|
+
}
|
|
6678
|
+
else {
|
|
6679
|
+
rules[i].value = '?';
|
|
6680
|
+
}
|
|
6681
|
+
}
|
|
6682
|
+
}
|
|
6683
|
+
}
|
|
6684
|
+
}
|
|
6685
|
+
}
|
|
6686
|
+
return { ruleVal: ruleVal, namedRuleVal: namedRuleVal };
|
|
6687
|
+
};
|
|
6688
|
+
QueryLibrary.prototype.getNamedParameter = function (field, namedParameters) {
|
|
6689
|
+
var newField = null;
|
|
6690
|
+
if (namedParameters.length > 0) {
|
|
6691
|
+
for (var i = namedParameters.length - 1; i >= 0; i--) {
|
|
6692
|
+
var currField = namedParameters[i];
|
|
6693
|
+
if (currField.indexOf(field) > -1) {
|
|
6694
|
+
var idx = parseInt(currField.split('_')[1], 10) + 1;
|
|
6695
|
+
newField = field + '_' + idx;
|
|
6696
|
+
namedParameters.push(newField);
|
|
6697
|
+
break;
|
|
6698
|
+
}
|
|
6699
|
+
}
|
|
6700
|
+
}
|
|
6701
|
+
if (!newField) {
|
|
6702
|
+
newField = field + '_1';
|
|
6703
|
+
namedParameters.push(newField);
|
|
6704
|
+
}
|
|
6705
|
+
return newField;
|
|
6706
|
+
};
|
|
6707
|
+
QueryLibrary.prototype.getModuleName = function () {
|
|
6708
|
+
return 'query-library';
|
|
6709
|
+
};
|
|
6710
|
+
return QueryLibrary;
|
|
6711
|
+
}());
|
|
6712
|
+
|
|
5253
6713
|
/**
|
|
5254
6714
|
* QueryBuilder modules
|
|
5255
6715
|
*/
|
|
@@ -5258,5 +6718,5 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
5258
6718
|
* QueryBuilder all modules
|
|
5259
6719
|
*/
|
|
5260
6720
|
|
|
5261
|
-
export { Columns, Rule, Value, ShowButtons, QueryBuilder };
|
|
6721
|
+
export { Columns, Rule, Value, ShowButtons, QueryBuilder, QueryLibrary };
|
|
5262
6722
|
//# sourceMappingURL=ej2-querybuilder.es5.js.map
|