@syncfusion/ej2-querybuilder 24.2.9 → 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 +9 -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 +1609 -159
- package/dist/es6/ej2-querybuilder.es2015.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es5.js +1611 -159
- 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 +895 -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
|
}
|
|
@@ -1445,7 +1612,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1445
1612
|
this.prevItemData = args.itemData;
|
|
1446
1613
|
var fieldElem = closest(args.element, '.e-rule-filter') || closest(args.element, '.e-rule-sub-filter');
|
|
1447
1614
|
var column = this.fieldMode === 'DropdownTree' ? this.getColumn(args.value[0]) : this.getColumn(args.value);
|
|
1448
|
-
if (this.fieldMode === 'DropdownTree' && fieldElem
|
|
1615
|
+
if (this.fieldMode === 'DropdownTree' && fieldElem !== null) {
|
|
1449
1616
|
var ddtElem = fieldElem.querySelector('.e-dropdowntree.e-control');
|
|
1450
1617
|
var ddt = getComponent(ddtElem, 'dropdowntree');
|
|
1451
1618
|
if (column) {
|
|
@@ -1517,7 +1684,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1517
1684
|
var filterElem = closest(ddlArgs.element, '.e-rule-filter');
|
|
1518
1685
|
filterElem = filterElem ? filterElem : closest(ddlArgs.element, '.e-rule-sub-filter');
|
|
1519
1686
|
var ddlObj = getComponent(ddlArgs.element, 'dropdownlist');
|
|
1520
|
-
if (this.fieldMode === 'DropdownTree' && filterElem
|
|
1687
|
+
if (this.fieldMode === 'DropdownTree' && filterElem !== null) {
|
|
1521
1688
|
ddlObj = getComponent(ddlArgs.element, 'dropdowntree');
|
|
1522
1689
|
}
|
|
1523
1690
|
var element = closest(ddlArgs.element, '.e-group-container');
|
|
@@ -1646,7 +1813,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1646
1813
|
this.GetRootColumnName(rule.field) === this.GetRootColumnName(this.previousColumn.field))) {
|
|
1647
1814
|
var subField = this.selectedColumn.columns;
|
|
1648
1815
|
for (var i = 0; i < subField.length; i++) {
|
|
1649
|
-
if (rule.field === subField[i].field
|
|
1816
|
+
if (rule.field === subField[i].field) {
|
|
1650
1817
|
dropDownList.value = subField[i].field;
|
|
1651
1818
|
this.selectedColumn = subField[i];
|
|
1652
1819
|
subFieldValue = true;
|
|
@@ -1685,7 +1852,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1685
1852
|
rule.value = [];
|
|
1686
1853
|
}
|
|
1687
1854
|
}
|
|
1688
|
-
else if (typeof rule.value === 'object' && rule.value
|
|
1855
|
+
else if (typeof rule.value === 'object' && rule.value !== null) {
|
|
1689
1856
|
rule.value = rule.value.length > 0 ? rule.value[0] : rule.type === 'number' ? 0 : '';
|
|
1690
1857
|
}
|
|
1691
1858
|
if (ddlArgs.previousItemData) {
|
|
@@ -1712,6 +1879,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1712
1879
|
if (valElem && this.getColumn(rule.field).template) {
|
|
1713
1880
|
filterElem = operatorElem.previousElementSibling;
|
|
1714
1881
|
}
|
|
1882
|
+
if (valElem.children.length == 0) {
|
|
1883
|
+
filterElem = operatorElem.previousElementSibling;
|
|
1884
|
+
}
|
|
1715
1885
|
this.changeRuleValues(filterElem, rule, tempRule, ddlArgs);
|
|
1716
1886
|
}
|
|
1717
1887
|
};
|
|
@@ -1742,7 +1912,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1742
1912
|
tempRule.type = this.fieldMode === 'DropdownTree' ? this.getColumn(fieldObj.value[0]).type :
|
|
1743
1913
|
this.getColumn(fieldObj.value).type;
|
|
1744
1914
|
var itemData = ddlArgs.itemData;
|
|
1745
|
-
|
|
1915
|
+
if (ddlObj.value !== '') {
|
|
1916
|
+
this.renderValues(operatorElem, itemData, ddlArgs.previousItemData, true, rule, tempRule, ddlArgs.element);
|
|
1917
|
+
}
|
|
1746
1918
|
}
|
|
1747
1919
|
else {
|
|
1748
1920
|
var ruleId = closest(operatorElem, '.e-rule-container').id;
|
|
@@ -1756,7 +1928,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1756
1928
|
}
|
|
1757
1929
|
var height = (this.element.className.indexOf('e-device') > -1) ? '250px' : '200px';
|
|
1758
1930
|
var value = operatorList[0].value;
|
|
1759
|
-
|
|
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
|
+
}
|
|
1760
1939
|
var ddlOperator = void 0;
|
|
1761
1940
|
ddlOperator = {
|
|
1762
1941
|
dataSource: operatorList,
|
|
@@ -1764,7 +1943,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1764
1943
|
placeholder: this.l10n.getConstant('SelectOperator'),
|
|
1765
1944
|
popupHeight: ((operatorList.length > 5) ? height : 'auto'),
|
|
1766
1945
|
change: this.changeField.bind(this),
|
|
1767
|
-
index:
|
|
1946
|
+
index: ddlIdx,
|
|
1768
1947
|
value: value,
|
|
1769
1948
|
open: this.popupOpen.bind(this, false)
|
|
1770
1949
|
};
|
|
@@ -1778,7 +1957,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1778
1957
|
tempRule.type = this.selectedColumn.type;
|
|
1779
1958
|
tempRule.operator = rule.operator;
|
|
1780
1959
|
}
|
|
1781
|
-
|
|
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
|
+
}
|
|
1782
1966
|
}
|
|
1783
1967
|
}
|
|
1784
1968
|
if (!this.isImportRules) {
|
|
@@ -2140,14 +2324,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2140
2324
|
var columnData = this.getItemData(parentId);
|
|
2141
2325
|
var selectedValue;
|
|
2142
2326
|
var isTemplate = (typeof columnData.template === 'string');
|
|
2143
|
-
if (this.isImportRules || this.isPublic || isTemplate) {
|
|
2327
|
+
if (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate) {
|
|
2144
2328
|
selectedValue = rule.value;
|
|
2145
2329
|
}
|
|
2146
2330
|
else {
|
|
2147
2331
|
selectedValue = this.setDefaultValue(parentId, false, false);
|
|
2148
2332
|
}
|
|
2149
2333
|
if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {
|
|
2150
|
-
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);
|
|
2151
2335
|
this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
|
|
2152
2336
|
if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {
|
|
2153
2337
|
ruleValElem.style.width = '100%';
|
|
@@ -2159,7 +2343,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2159
2343
|
}
|
|
2160
2344
|
else {
|
|
2161
2345
|
if (operator === 'in' || operator === 'notin') {
|
|
2162
|
-
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);
|
|
2163
2347
|
selectedValue = selectedVal.join(',');
|
|
2164
2348
|
}
|
|
2165
2349
|
var txtBox = void 0;
|
|
@@ -2179,9 +2363,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2179
2363
|
QueryBuilder.prototype.renderNumberValue = function (parentId, rule, operator, idx, ruleValElem, itemData, length) {
|
|
2180
2364
|
var columnData = this.getItemData(parentId);
|
|
2181
2365
|
var isTemplate = (typeof columnData.template === 'string');
|
|
2182
|
-
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);
|
|
2183
2367
|
if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {
|
|
2184
|
-
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);
|
|
2185
2369
|
this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
|
|
2186
2370
|
if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {
|
|
2187
2371
|
ruleValElem.style.width = '100%';
|
|
@@ -2192,7 +2376,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2192
2376
|
}
|
|
2193
2377
|
}
|
|
2194
2378
|
else if (operator === 'in' || operator === 'notin') {
|
|
2195
|
-
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);
|
|
2196
2380
|
var selVal = selectedVal.join(',');
|
|
2197
2381
|
var txtInp = void 0;
|
|
2198
2382
|
txtInp = {
|
|
@@ -2465,8 +2649,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2465
2649
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2466
2650
|
: this.getColumn(filtObj.value);
|
|
2467
2651
|
this.selectedRule = column;
|
|
2652
|
+
var ddlObj = getComponent(target.querySelector('input'), 'dropdownlist');
|
|
2468
2653
|
if (isRender) {
|
|
2469
|
-
var ddlObj = getComponent(target.querySelector('input'), 'dropdownlist');
|
|
2470
2654
|
itemData = element.id.indexOf('operator') > -1 ? itemData : this.selectedRule;
|
|
2471
2655
|
if (itemData.operators) {
|
|
2472
2656
|
ddlObj.value = null;
|
|
@@ -2474,7 +2658,13 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2474
2658
|
ddlObj.dataSource = itemData.operators;
|
|
2475
2659
|
ddlObj.index = this.getOperatorIndex(ddlObj, rule);
|
|
2476
2660
|
ddlObj.value = tempRule.operator = ddlObj.dataSource[ddlObj.index].value;
|
|
2477
|
-
|
|
2661
|
+
if (!this.autoSelectOperator) {
|
|
2662
|
+
ddlObj.index = -1;
|
|
2663
|
+
tempRule.operator = ddlObj.value = '';
|
|
2664
|
+
}
|
|
2665
|
+
else {
|
|
2666
|
+
ddlObj.dataBind();
|
|
2667
|
+
}
|
|
2478
2668
|
}
|
|
2479
2669
|
}
|
|
2480
2670
|
var operator = tempRule.operator.toString();
|
|
@@ -2507,39 +2697,41 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2507
2697
|
this.validateValue(rule, closest(target, '.e-rule-container'));
|
|
2508
2698
|
this.destroyControls(target);
|
|
2509
2699
|
}
|
|
2510
|
-
if (
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
else {
|
|
2529
|
-
removeClass([target.nextElementSibling], 'e-template-value');
|
|
2530
|
-
var inputLen = 1;
|
|
2531
|
-
if (tempRule.type === 'boolean') {
|
|
2532
|
-
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
|
+
}
|
|
2533
2718
|
}
|
|
2534
2719
|
else {
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
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
|
+
}
|
|
2540
2732
|
}
|
|
2733
|
+
this.renderControls(target, itemData, rule, tempRule, isTempRendered);
|
|
2541
2734
|
}
|
|
2542
|
-
this.renderControls(target, itemData, rule, tempRule, isTempRendered);
|
|
2543
2735
|
}
|
|
2544
2736
|
else {
|
|
2545
2737
|
var parentElem = target.parentElement.querySelector('.e-rule-value');
|
|
@@ -2973,8 +3165,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2973
3165
|
var i;
|
|
2974
3166
|
var len;
|
|
2975
3167
|
var tooltip;
|
|
2976
|
-
var popupElement;
|
|
2977
3168
|
_super.prototype.destroy.call(this);
|
|
3169
|
+
var popupElement;
|
|
2978
3170
|
element = this.element.querySelectorAll('.e-addrulegroup');
|
|
2979
3171
|
len = element.length;
|
|
2980
3172
|
for (i = 0; i < len; i++) {
|
|
@@ -3060,7 +3252,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3060
3252
|
if (grouplen) {
|
|
3061
3253
|
this.isPublic = true;
|
|
3062
3254
|
for (var i = 0, len = groups.length; i < len; i++) {
|
|
3063
|
-
this.updatedRule = {
|
|
3255
|
+
this.updatedRule = { isLocked: groups[i].isLocked, condition: groups[i].condition,
|
|
3256
|
+
not: groups[i].not };
|
|
3064
3257
|
this.importRules(groups[i], groupElem, false, groups[i].not);
|
|
3065
3258
|
}
|
|
3066
3259
|
this.isPublic = false;
|
|
@@ -3068,15 +3261,27 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3068
3261
|
else {
|
|
3069
3262
|
var condition = 'and';
|
|
3070
3263
|
var not = false;
|
|
3264
|
+
var isLocked = false;
|
|
3071
3265
|
if (this.updatedRule) {
|
|
3072
3266
|
condition = this.updatedRule.condition;
|
|
3073
3267
|
not = this.updatedRule.not;
|
|
3268
|
+
isLocked = this.updatedRule.isLocked;
|
|
3074
3269
|
}
|
|
3075
|
-
if (this.
|
|
3076
|
-
|
|
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
|
+
}
|
|
3077
3277
|
}
|
|
3078
3278
|
else {
|
|
3079
|
-
|
|
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
|
+
}
|
|
3080
3285
|
}
|
|
3081
3286
|
}
|
|
3082
3287
|
if (!this.headerTemplate) {
|
|
@@ -3259,17 +3464,53 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3259
3464
|
this.refresh();
|
|
3260
3465
|
break;
|
|
3261
3466
|
case 'showButtons':
|
|
3262
|
-
if (newProp.showButtons.
|
|
3263
|
-
|
|
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
|
+
}
|
|
3264
3474
|
}
|
|
3265
|
-
|
|
3266
|
-
|
|
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
|
+
}
|
|
3267
3482
|
}
|
|
3268
|
-
if (newProp.showButtons.
|
|
3269
|
-
|
|
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
|
+
}
|
|
3270
3490
|
}
|
|
3271
|
-
|
|
3272
|
-
|
|
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
|
+
}
|
|
3273
3514
|
}
|
|
3274
3515
|
break;
|
|
3275
3516
|
case 'cssClass':
|
|
@@ -3346,8 +3587,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3346
3587
|
this.element.id = this.element.id || getUniqueID('ej2-querybuilder');
|
|
3347
3588
|
this.defaultLocale = {
|
|
3348
3589
|
StartsWith: 'Starts With',
|
|
3590
|
+
DoesNotStartWith: 'Does Not Start With',
|
|
3349
3591
|
EndsWith: 'Ends With',
|
|
3592
|
+
DoesNotEndWith: 'Does Not End With',
|
|
3350
3593
|
Contains: 'Contains',
|
|
3594
|
+
DoesNotContain: 'Does Not Contain',
|
|
3351
3595
|
NotLike: 'Not Like',
|
|
3352
3596
|
Like: 'Like',
|
|
3353
3597
|
Equal: 'Equal',
|
|
@@ -3381,7 +3625,13 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3381
3625
|
IsNotNull: 'Is Not Null',
|
|
3382
3626
|
True: 'true',
|
|
3383
3627
|
False: 'false',
|
|
3384
|
-
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'
|
|
3385
3635
|
};
|
|
3386
3636
|
this.l10n = new L10n('querybuilder', this.defaultLocale, this.locale);
|
|
3387
3637
|
this.intl = new Internationalization(this.locale);
|
|
@@ -3394,8 +3644,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3394
3644
|
this.customOperators = {
|
|
3395
3645
|
stringOperator: [
|
|
3396
3646
|
{ value: 'startswith', key: this.l10n.getConstant('StartsWith') },
|
|
3647
|
+
{ value: 'notstartswith', key: this.l10n.getConstant('DoesNotStartWith') },
|
|
3397
3648
|
{ value: 'endswith', key: this.l10n.getConstant('EndsWith') },
|
|
3649
|
+
{ value: 'notendswith', key: this.l10n.getConstant('DoesNotEndWith') },
|
|
3398
3650
|
{ value: 'contains', key: this.l10n.getConstant('Contains') },
|
|
3651
|
+
{ value: 'notcontains', key: this.l10n.getConstant('DoesNotContain') },
|
|
3399
3652
|
{ value: 'equal', key: this.l10n.getConstant('Equal') },
|
|
3400
3653
|
{ value: 'notequal', key: this.l10n.getConstant('NotEqual') },
|
|
3401
3654
|
{ value: 'in', key: this.l10n.getConstant('In') },
|
|
@@ -3409,7 +3662,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3409
3662
|
{ value: 'greaterthanorequal', key: this.l10n.getConstant('GreaterThanOrEqual') },
|
|
3410
3663
|
{ value: 'lessthan', key: this.l10n.getConstant('LessThan') },
|
|
3411
3664
|
{ value: 'lessthanorequal', key: this.l10n.getConstant('LessThanOrEqual') },
|
|
3412
|
-
{ 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') }
|
|
3413
3668
|
],
|
|
3414
3669
|
booleanOperator: [
|
|
3415
3670
|
{ value: 'equal', key: this.l10n.getConstant('Equal') },
|
|
@@ -3734,6 +3989,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3734
3989
|
this.setProperties({ rule: rule }, true);
|
|
3735
3990
|
rule = this.getRuleCollection(this.rule, false);
|
|
3736
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
|
+
}
|
|
3737
3996
|
this.isImportRules = false;
|
|
3738
3997
|
};
|
|
3739
3998
|
QueryBuilder.prototype.keyBoardHandler = function (e) {
|
|
@@ -3829,7 +4088,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3829
4088
|
rule.value !== undefined)) || (customObj && customObj.isQuestion)) {
|
|
3830
4089
|
var condition = rule.condition;
|
|
3831
4090
|
rule = {
|
|
3832
|
-
'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
|
|
3833
4093
|
};
|
|
3834
4094
|
if (condition) {
|
|
3835
4095
|
rule.condition = condition;
|
|
@@ -3838,6 +4098,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3838
4098
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3839
4099
|
rule.custom = customObj;
|
|
3840
4100
|
}
|
|
4101
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3841
4102
|
if ((rule.operator === 'in' || rule.operator === 'notin') && rule.value && rule.value.length === 0) {
|
|
3842
4103
|
rule = {};
|
|
3843
4104
|
}
|
|
@@ -3863,10 +4124,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3863
4124
|
}
|
|
3864
4125
|
else {
|
|
3865
4126
|
if (this.enableNotCondition) {
|
|
3866
|
-
rule = { 'condition': rule.condition, 'rules': rule.rules, 'not': rule.not };
|
|
4127
|
+
rule = { 'condition': rule.condition, 'rules': rule.rules, 'not': rule.not, 'isLocked': rule.isLocked };
|
|
3867
4128
|
}
|
|
3868
4129
|
else {
|
|
3869
|
-
rule = { 'condition': rule.condition, 'rules': rule.rules };
|
|
4130
|
+
rule = { 'condition': rule.condition, 'rules': rule.rules, 'isLocked': rule.isLocked };
|
|
3870
4131
|
}
|
|
3871
4132
|
if (customObj) {
|
|
3872
4133
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -4031,11 +4292,20 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4031
4292
|
var ruleValue;
|
|
4032
4293
|
var ignoreCase = false;
|
|
4033
4294
|
var column;
|
|
4034
|
-
var ignoreOper = ['notcontains', 'notstartswith', 'notendswith'];
|
|
4035
4295
|
if (!ruleColl) {
|
|
4036
4296
|
return pred;
|
|
4037
4297
|
}
|
|
4038
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
|
+
}
|
|
4039
4309
|
var keys = Object.keys(ruleColl[i]);
|
|
4040
4310
|
ignoreCase = false;
|
|
4041
4311
|
if (keys.indexOf('rules') > -1 && ruleColl[i].rules) {
|
|
@@ -4054,7 +4324,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4054
4324
|
}
|
|
4055
4325
|
}
|
|
4056
4326
|
}
|
|
4057
|
-
else if (!isNullOrUndefined(
|
|
4327
|
+
else if (!isNullOrUndefined(operator) && !isNullOrUndefined(operator.length)) {
|
|
4058
4328
|
var oper = ruleColl[i].operator.toLowerCase();
|
|
4059
4329
|
var isDateFilter = false;
|
|
4060
4330
|
var dateOperColl = ['equal', 'notequal', 'greaterthan', 'greaterthanorequal', 'lessthan', 'lessthanorequal'];
|
|
@@ -4085,23 +4355,20 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4085
4355
|
}
|
|
4086
4356
|
if (i === 0) {
|
|
4087
4357
|
if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 || oper.indexOf('null') > -1 ||
|
|
4088
|
-
oper.indexOf('empty') > -1) && oper.indexOf('
|
|
4358
|
+
oper.indexOf('empty') > -1) && (oper.indexOf('contain') < 0)) {
|
|
4089
4359
|
pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue) :
|
|
4090
4360
|
this.arrayPredicate(ruleColl[i]);
|
|
4091
4361
|
}
|
|
4092
4362
|
else {
|
|
4093
4363
|
var value = ruleValue;
|
|
4094
|
-
if (value !== ''
|
|
4095
|
-
pred = new Predicate(ruleColl[i].field,
|
|
4364
|
+
if (value !== '') {
|
|
4365
|
+
pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4096
4366
|
}
|
|
4097
4367
|
}
|
|
4098
4368
|
}
|
|
4099
4369
|
else {
|
|
4100
|
-
if (ignoreOper.indexOf(oper) > -1) {
|
|
4101
|
-
continue;
|
|
4102
|
-
}
|
|
4103
4370
|
if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 ||
|
|
4104
|
-
oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) && oper.indexOf('
|
|
4371
|
+
oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) && oper.indexOf('contain') < 0) {
|
|
4105
4372
|
pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue, pred, rule.condition) :
|
|
4106
4373
|
this.arrayPredicate(ruleColl[i], pred, rule.condition);
|
|
4107
4374
|
}
|
|
@@ -4110,19 +4377,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4110
4377
|
var value = ruleValue;
|
|
4111
4378
|
if (pred && value !== '') {
|
|
4112
4379
|
pred
|
|
4113
|
-
= pred.and(ruleColl[i].field,
|
|
4380
|
+
= pred.and(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4114
4381
|
}
|
|
4115
4382
|
else if (value !== '') {
|
|
4116
|
-
pred = new Predicate(ruleColl[i].field,
|
|
4383
|
+
pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4117
4384
|
}
|
|
4118
4385
|
}
|
|
4119
4386
|
else {
|
|
4120
4387
|
var value = ruleValue;
|
|
4121
4388
|
if (pred && value !== '') {
|
|
4122
|
-
pred = pred.or(ruleColl[i].field,
|
|
4389
|
+
pred = pred.or(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4123
4390
|
}
|
|
4124
4391
|
else if (value !== '') {
|
|
4125
|
-
pred = new Predicate(ruleColl[i].field,
|
|
4392
|
+
pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4126
4393
|
}
|
|
4127
4394
|
}
|
|
4128
4395
|
}
|
|
@@ -4402,15 +4669,28 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4402
4669
|
for (var i = 0, len = ruleColl.length; i < len; i++) {
|
|
4403
4670
|
var keys = Object.keys(ruleColl[i]);
|
|
4404
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
|
+
}
|
|
4405
4675
|
parentElem = this.renderGroup(ruleColl[i], ruleColl[i].condition, parentElem, ruleColl[i].not);
|
|
4406
4676
|
parentElem = this.importRules(ruleColl[i], parentElem, true);
|
|
4407
4677
|
}
|
|
4408
4678
|
else {
|
|
4409
4679
|
this.renderRule(ruleColl[i], parentElem);
|
|
4410
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
|
+
}
|
|
4411
4689
|
}
|
|
4412
4690
|
}
|
|
4413
|
-
|
|
4691
|
+
if (parentElem) {
|
|
4692
|
+
parentElem = closest(parentElem, '.e-rule-list');
|
|
4693
|
+
}
|
|
4414
4694
|
if (parentElem) {
|
|
4415
4695
|
parentElem = closest(parentElem, '.e-group-container');
|
|
4416
4696
|
}
|
|
@@ -4419,7 +4699,20 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4419
4699
|
QueryBuilder.prototype.renderGroup = function (rule, condition, parentElem, not, isRoot) {
|
|
4420
4700
|
this.addGroupElement(true, parentElem, condition, false, not, isRoot, rule); //Child group
|
|
4421
4701
|
var element = parentElem.querySelectorAll('.e-group-container');
|
|
4422
|
-
|
|
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
|
+
}
|
|
4423
4716
|
};
|
|
4424
4717
|
QueryBuilder.prototype.renderRule = function (rule, parentElem) {
|
|
4425
4718
|
if (parentElem.className.indexOf('e-group-container') > -1) {
|
|
@@ -4618,15 +4911,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4618
4911
|
valueStr += rule.value ? '("%' + rule.value + '%")' : '(' + rule.value + ')';
|
|
4619
4912
|
}
|
|
4620
4913
|
else {
|
|
4621
|
-
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))) {
|
|
4622
4916
|
valueStr += rule.value;
|
|
4623
4917
|
}
|
|
4918
|
+
else if (rule.operator.toString().indexOf('empty') > -1) {
|
|
4919
|
+
valueStr += '""';
|
|
4920
|
+
}
|
|
4624
4921
|
else {
|
|
4625
4922
|
valueStr += '"' + rule.value + '"';
|
|
4626
4923
|
}
|
|
4627
4924
|
}
|
|
4628
4925
|
}
|
|
4629
|
-
if (rule.operator.toString().indexOf('null') > -1
|
|
4926
|
+
if (rule.operator.toString().indexOf('null') > -1) {
|
|
4630
4927
|
if (enableEscape) {
|
|
4631
4928
|
rule.field = '`' + rule.field + '`';
|
|
4632
4929
|
}
|
|
@@ -4638,6 +4935,13 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4638
4935
|
queryStr += rule.field + ' ' + ruleOpertor;
|
|
4639
4936
|
}
|
|
4640
4937
|
else {
|
|
4938
|
+
var custOper = ruleOpertor;
|
|
4939
|
+
if (rule.operator === 'isempty') {
|
|
4940
|
+
custOper = '=';
|
|
4941
|
+
}
|
|
4942
|
+
else if (rule.operator === 'isnotempty') {
|
|
4943
|
+
custOper = '!=';
|
|
4944
|
+
}
|
|
4641
4945
|
if (enableEscape) {
|
|
4642
4946
|
rule.field = '`' + rule.field + '`';
|
|
4643
4947
|
}
|
|
@@ -4646,7 +4950,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4646
4950
|
rule.field = '"' + rule.field + '"';
|
|
4647
4951
|
}
|
|
4648
4952
|
}
|
|
4649
|
-
queryStr += rule.field + ' ' +
|
|
4953
|
+
queryStr += rule.field + ' ' + custOper + ' ' + valueStr;
|
|
4650
4954
|
}
|
|
4651
4955
|
if (rule.condition && rule.condition !== '') {
|
|
4652
4956
|
condition = rule.condition;
|
|
@@ -4676,7 +4980,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4676
4980
|
* Sets the rules from the sql query.
|
|
4677
4981
|
*
|
|
4678
4982
|
* @param {string} sqlString - 'sql String' to be passed to set the rule.
|
|
4679
|
-
* @param {boolean} sqlLocale -
|
|
4983
|
+
* @param {boolean} sqlLocale - Optional. Set `true` if Localization for Sql query.
|
|
4680
4984
|
* @returns {void}
|
|
4681
4985
|
*/
|
|
4682
4986
|
QueryBuilder.prototype.setRulesFromSql = function (sqlString, sqlLocale) {
|
|
@@ -4708,15 +5012,163 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4708
5012
|
*
|
|
4709
5013
|
* @param {RuleModel} rule - 'rule' to be passed to get the sql.
|
|
4710
5014
|
* @param {boolean} allowEscape - Set `true` if it exclude the escape character.
|
|
4711
|
-
*
|
|
4712
|
-
* @returns {
|
|
5015
|
+
* @param {boolean} sqlLocale - Set `true` if Localization for Sql query.
|
|
5016
|
+
* @returns {string} - Sql query from rules.
|
|
4713
5017
|
*/
|
|
4714
5018
|
QueryBuilder.prototype.getSqlFromRules = function (rule, allowEscape, sqlLocale) {
|
|
4715
5019
|
if (!rule) {
|
|
4716
5020
|
rule = this.getValidRules();
|
|
4717
5021
|
}
|
|
4718
5022
|
rule = this.getRuleCollection(rule, false);
|
|
4719
|
-
|
|
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);
|
|
4720
5172
|
};
|
|
4721
5173
|
QueryBuilder.prototype.sqlParser = function (sqlString, sqlLocale) {
|
|
4722
5174
|
var st = 0;
|
|
@@ -4918,13 +5370,13 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4918
5370
|
for (var i = 0; i < localeOperator.length; i++) {
|
|
4919
5371
|
if (this.sqlOperators[localeOperator[i]] === operator.toUpperCase()) {
|
|
4920
5372
|
if (value && value.indexOf('%') === 0 && value[value.length - 1] === '%') {
|
|
4921
|
-
return (
|
|
5373
|
+
return (operator.toUpperCase() === 'NOT LIKE') ? 'notcontains' : 'contains';
|
|
4922
5374
|
}
|
|
4923
5375
|
else if (value && value.indexOf('%') !== 0 && value.indexOf('%') === value.length - 1) {
|
|
4924
|
-
return (
|
|
5376
|
+
return (operator.toUpperCase() === 'NOT LIKE') ? 'notstartswith' : 'startswith';
|
|
4925
5377
|
}
|
|
4926
5378
|
else if (value && value.indexOf('%') === 0 && value.indexOf('%') !== value.length - 1) {
|
|
4927
|
-
return (
|
|
5379
|
+
return (operator.toUpperCase() === 'NOT LIKE') ? 'notendswith' : 'endswith';
|
|
4928
5380
|
}
|
|
4929
5381
|
return localeOperator[i];
|
|
4930
5382
|
}
|
|
@@ -5109,6 +5561,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
5109
5561
|
}
|
|
5110
5562
|
else if (parser[i + 1][0] === 'Operators') {
|
|
5111
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
|
+
}
|
|
5112
5572
|
if (parser[i + 2][0] === 'Number') {
|
|
5113
5573
|
rule.type = 'number';
|
|
5114
5574
|
rule.value = Number(parser[i + 2][1]);
|
|
@@ -5165,35 +5625,330 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
5165
5625
|
}
|
|
5166
5626
|
return rules;
|
|
5167
5627
|
};
|
|
5168
|
-
|
|
5169
|
-
|
|
5170
|
-
|
|
5171
|
-
|
|
5172
|
-
|
|
5173
|
-
|
|
5174
|
-
|
|
5175
|
-
|
|
5176
|
-
|
|
5177
|
-
|
|
5178
|
-
|
|
5179
|
-
|
|
5180
|
-
|
|
5181
|
-
|
|
5182
|
-
|
|
5183
|
-
|
|
5184
|
-
|
|
5185
|
-
|
|
5186
|
-
|
|
5187
|
-
|
|
5188
|
-
|
|
5189
|
-
|
|
5190
|
-
|
|
5191
|
-
|
|
5192
|
-
|
|
5193
|
-
|
|
5194
|
-
|
|
5195
|
-
|
|
5196
|
-
|
|
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);
|
|
5950
|
+
__decorate([
|
|
5951
|
+
Property('Default')
|
|
5197
5952
|
], QueryBuilder.prototype, "fieldMode", void 0);
|
|
5198
5953
|
__decorate([
|
|
5199
5954
|
Property([])
|
|
@@ -5246,6 +6001,15 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
5246
6001
|
__decorate([
|
|
5247
6002
|
Property(false)
|
|
5248
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);
|
|
5249
6013
|
__decorate([
|
|
5250
6014
|
Property('')
|
|
5251
6015
|
], QueryBuilder.prototype, "separator", void 0);
|
|
@@ -5258,6 +6022,694 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
5258
6022
|
return QueryBuilder;
|
|
5259
6023
|
}(Component));
|
|
5260
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
|
+
|
|
5261
6713
|
/**
|
|
5262
6714
|
* QueryBuilder modules
|
|
5263
6715
|
*/
|
|
@@ -5266,5 +6718,5 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
5266
6718
|
* QueryBuilder all modules
|
|
5267
6719
|
*/
|
|
5268
6720
|
|
|
5269
|
-
export { Columns, Rule, Value, ShowButtons, QueryBuilder };
|
|
6721
|
+
export { Columns, Rule, Value, ShowButtons, QueryBuilder, QueryLibrary };
|
|
5270
6722
|
//# sourceMappingURL=ej2-querybuilder.es5.js.map
|