@syncfusion/ej2-querybuilder 24.2.9 → 25.1.37
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 +17 -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 +1616 -162
- package/dist/es6/ej2-querybuilder.es2015.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es5.js +1618 -162
- 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 +906 -137
- 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 +38 -12
- package/styles/bootstrap5.css +38 -12
- package/styles/fabric-dark.css +25 -12
- package/styles/fabric.css +25 -12
- package/styles/fluent-dark.css +42 -12
- package/styles/fluent.css +42 -12
- package/styles/highcontrast-light.css +25 -12
- package/styles/highcontrast.css +25 -12
- package/styles/material-dark.css +34 -12
- package/styles/material.css +34 -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 +19 -2
- 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 +38 -12
- package/styles/query-builder/bootstrap5.css +38 -12
- package/styles/query-builder/fabric-dark.css +25 -12
- package/styles/query-builder/fabric.css +25 -12
- package/styles/query-builder/fluent-dark.css +42 -12
- package/styles/query-builder/fluent.css +42 -12
- 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 +34 -12
- package/styles/query-builder/material.css +34 -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) {
|
|
@@ -1999,17 +2183,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1999
2183
|
if (!this.dataColl.length && values.length) {
|
|
2000
2184
|
isValues = true;
|
|
2001
2185
|
}
|
|
2002
|
-
var fieldValue = this.selectedRule.field;
|
|
2003
|
-
var isNested = this.selectedRule.field.indexOf(this.separator);
|
|
2004
|
-
if (isNested !== 0 && this.fieldMode !== 'DropdownTree') {
|
|
2005
|
-
var nest = this.selectedRule.field.split(this.separator);
|
|
2006
|
-
fieldValue = nest[nest.length - 1];
|
|
2007
|
-
}
|
|
2008
2186
|
var multiSelectValue;
|
|
2009
2187
|
multiSelectValue = {
|
|
2010
2188
|
dataSource: isValues ? values : (isFetched ? ds : this.dataManager),
|
|
2011
2189
|
query: new Query([rule.field]),
|
|
2012
|
-
fields: { text:
|
|
2190
|
+
fields: { text: this.selectedRule.field, value: this.selectedRule.field },
|
|
2013
2191
|
placeholder: this.l10n.getConstant('SelectValue'),
|
|
2014
2192
|
value: selectedValue,
|
|
2015
2193
|
mode: 'CheckBox',
|
|
@@ -2140,14 +2318,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2140
2318
|
var columnData = this.getItemData(parentId);
|
|
2141
2319
|
var selectedValue;
|
|
2142
2320
|
var isTemplate = (typeof columnData.template === 'string');
|
|
2143
|
-
if (this.isImportRules || this.isPublic || isTemplate) {
|
|
2321
|
+
if (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate) {
|
|
2144
2322
|
selectedValue = rule.value;
|
|
2145
2323
|
}
|
|
2146
2324
|
else {
|
|
2147
2325
|
selectedValue = this.setDefaultValue(parentId, false, false);
|
|
2148
2326
|
}
|
|
2149
2327
|
if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {
|
|
2150
|
-
selectedVal = this.isImportRules ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2328
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2151
2329
|
this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
|
|
2152
2330
|
if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {
|
|
2153
2331
|
ruleValElem.style.width = '100%';
|
|
@@ -2159,7 +2337,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2159
2337
|
}
|
|
2160
2338
|
else {
|
|
2161
2339
|
if (operator === 'in' || operator === 'notin') {
|
|
2162
|
-
selectedVal = this.isImportRules ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2340
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2163
2341
|
selectedValue = selectedVal.join(',');
|
|
2164
2342
|
}
|
|
2165
2343
|
var txtBox = void 0;
|
|
@@ -2179,9 +2357,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2179
2357
|
QueryBuilder.prototype.renderNumberValue = function (parentId, rule, operator, idx, ruleValElem, itemData, length) {
|
|
2180
2358
|
var columnData = this.getItemData(parentId);
|
|
2181
2359
|
var isTemplate = (typeof columnData.template === 'string');
|
|
2182
|
-
var selectedVal = (this.isImportRules || this.isPublic || isTemplate) ? rule.value : this.setDefaultValue(parentId, false, true);
|
|
2360
|
+
var selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate) ? rule.value : this.setDefaultValue(parentId, false, true);
|
|
2183
2361
|
if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {
|
|
2184
|
-
selectedVal = this.isImportRules ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2362
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2185
2363
|
this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
|
|
2186
2364
|
if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {
|
|
2187
2365
|
ruleValElem.style.width = '100%';
|
|
@@ -2192,7 +2370,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2192
2370
|
}
|
|
2193
2371
|
}
|
|
2194
2372
|
else if (operator === 'in' || operator === 'notin') {
|
|
2195
|
-
selectedVal = this.isImportRules ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2373
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2196
2374
|
var selVal = selectedVal.join(',');
|
|
2197
2375
|
var txtInp = void 0;
|
|
2198
2376
|
txtInp = {
|
|
@@ -2465,8 +2643,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2465
2643
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2466
2644
|
: this.getColumn(filtObj.value);
|
|
2467
2645
|
this.selectedRule = column;
|
|
2646
|
+
var ddlObj = getComponent(target.querySelector('input'), 'dropdownlist');
|
|
2468
2647
|
if (isRender) {
|
|
2469
|
-
var ddlObj = getComponent(target.querySelector('input'), 'dropdownlist');
|
|
2470
2648
|
itemData = element.id.indexOf('operator') > -1 ? itemData : this.selectedRule;
|
|
2471
2649
|
if (itemData.operators) {
|
|
2472
2650
|
ddlObj.value = null;
|
|
@@ -2474,7 +2652,13 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2474
2652
|
ddlObj.dataSource = itemData.operators;
|
|
2475
2653
|
ddlObj.index = this.getOperatorIndex(ddlObj, rule);
|
|
2476
2654
|
ddlObj.value = tempRule.operator = ddlObj.dataSource[ddlObj.index].value;
|
|
2477
|
-
|
|
2655
|
+
if (!this.autoSelectOperator) {
|
|
2656
|
+
ddlObj.index = -1;
|
|
2657
|
+
tempRule.operator = ddlObj.value = '';
|
|
2658
|
+
}
|
|
2659
|
+
else {
|
|
2660
|
+
ddlObj.dataBind();
|
|
2661
|
+
}
|
|
2478
2662
|
}
|
|
2479
2663
|
}
|
|
2480
2664
|
var operator = tempRule.operator.toString();
|
|
@@ -2507,39 +2691,41 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2507
2691
|
this.validateValue(rule, closest(target, '.e-rule-container'));
|
|
2508
2692
|
this.destroyControls(target);
|
|
2509
2693
|
}
|
|
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;
|
|
2694
|
+
if (this.isImportRules || (ddlObj && ddlObj.value !== '')) {
|
|
2695
|
+
if (column) {
|
|
2696
|
+
itemData.template = column.template;
|
|
2697
|
+
}
|
|
2698
|
+
if (itemData.template) {
|
|
2699
|
+
addClass([target.nextElementSibling], 'e-template-value');
|
|
2700
|
+
itemData.template = column.template;
|
|
2701
|
+
isTempRendered = this.setColumnTemplate(itemData, parentId, column.field, itemData.value ||
|
|
2702
|
+
operator, target, rule);
|
|
2703
|
+
}
|
|
2704
|
+
if (isTempRendered) {
|
|
2705
|
+
var parentElem = target.parentElement.querySelector('.e-rule-value');
|
|
2706
|
+
if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {
|
|
2707
|
+
parentElem.style.width = '100%';
|
|
2708
|
+
}
|
|
2709
|
+
else {
|
|
2710
|
+
parentElem.style.width = '200px';
|
|
2711
|
+
}
|
|
2533
2712
|
}
|
|
2534
2713
|
else {
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
2539
|
-
|
|
2714
|
+
removeClass([target.nextElementSibling], 'e-template-value');
|
|
2715
|
+
var inputLen = 1;
|
|
2716
|
+
if (tempRule.type === 'boolean') {
|
|
2717
|
+
inputLen = this.selectedColumn.values ? this.selectedColumn.values.length : 2;
|
|
2718
|
+
}
|
|
2719
|
+
else {
|
|
2720
|
+
inputLen = (operator && operator.toLowerCase().indexOf('between') > -1) ? 2 : 1;
|
|
2721
|
+
}
|
|
2722
|
+
for (var i = 0; i < inputLen; i++) {
|
|
2723
|
+
var valElem = this.createElement('input', { attrs: { type: 'text', id: parentId + '_valuekey' + i } });
|
|
2724
|
+
target.nextElementSibling.appendChild(valElem);
|
|
2725
|
+
}
|
|
2540
2726
|
}
|
|
2727
|
+
this.renderControls(target, itemData, rule, tempRule, isTempRendered);
|
|
2541
2728
|
}
|
|
2542
|
-
this.renderControls(target, itemData, rule, tempRule, isTempRendered);
|
|
2543
2729
|
}
|
|
2544
2730
|
else {
|
|
2545
2731
|
var parentElem = target.parentElement.querySelector('.e-rule-value');
|
|
@@ -2973,8 +3159,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2973
3159
|
var i;
|
|
2974
3160
|
var len;
|
|
2975
3161
|
var tooltip;
|
|
2976
|
-
var popupElement;
|
|
2977
3162
|
_super.prototype.destroy.call(this);
|
|
3163
|
+
var popupElement;
|
|
2978
3164
|
element = this.element.querySelectorAll('.e-addrulegroup');
|
|
2979
3165
|
len = element.length;
|
|
2980
3166
|
for (i = 0; i < len; i++) {
|
|
@@ -3060,7 +3246,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3060
3246
|
if (grouplen) {
|
|
3061
3247
|
this.isPublic = true;
|
|
3062
3248
|
for (var i = 0, len = groups.length; i < len; i++) {
|
|
3063
|
-
this.updatedRule = {
|
|
3249
|
+
this.updatedRule = { isLocked: groups[i].isLocked, condition: groups[i].condition,
|
|
3250
|
+
not: groups[i].not };
|
|
3064
3251
|
this.importRules(groups[i], groupElem, false, groups[i].not);
|
|
3065
3252
|
}
|
|
3066
3253
|
this.isPublic = false;
|
|
@@ -3068,15 +3255,27 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3068
3255
|
else {
|
|
3069
3256
|
var condition = 'and';
|
|
3070
3257
|
var not = false;
|
|
3258
|
+
var isLocked = false;
|
|
3071
3259
|
if (this.updatedRule) {
|
|
3072
3260
|
condition = this.updatedRule.condition;
|
|
3073
3261
|
not = this.updatedRule.not;
|
|
3262
|
+
isLocked = this.updatedRule.isLocked;
|
|
3074
3263
|
}
|
|
3075
|
-
if (this.
|
|
3076
|
-
|
|
3264
|
+
if (this.groupIndex < 0) {
|
|
3265
|
+
if (this.enableNotCondition) {
|
|
3266
|
+
rule.rules.push({ 'condition': condition, 'not': not, rules: [] });
|
|
3267
|
+
}
|
|
3268
|
+
else {
|
|
3269
|
+
rule.rules.push({ 'condition': condition, rules: [] });
|
|
3270
|
+
}
|
|
3077
3271
|
}
|
|
3078
3272
|
else {
|
|
3079
|
-
|
|
3273
|
+
if (this.enableNotCondition) {
|
|
3274
|
+
rule.rules.splice(this.groupIndex + 1, 0, { condition: condition, not: not, rules: [], isLocked: isLocked });
|
|
3275
|
+
}
|
|
3276
|
+
else {
|
|
3277
|
+
rule.rules.splice(this.groupIndex + 1, 0, { condition: condition, rules: [], isLocked: isLocked });
|
|
3278
|
+
}
|
|
3080
3279
|
}
|
|
3081
3280
|
}
|
|
3082
3281
|
if (!this.headerTemplate) {
|
|
@@ -3259,17 +3458,53 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3259
3458
|
this.refresh();
|
|
3260
3459
|
break;
|
|
3261
3460
|
case 'showButtons':
|
|
3262
|
-
if (newProp.showButtons.
|
|
3263
|
-
|
|
3461
|
+
if (!isNullOrUndefined(newProp.showButtons.lockGroup)) {
|
|
3462
|
+
if (newProp.showButtons.lockGroup) {
|
|
3463
|
+
removeClass(this.element.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');
|
|
3464
|
+
}
|
|
3465
|
+
else {
|
|
3466
|
+
addClass(this.element.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');
|
|
3467
|
+
}
|
|
3264
3468
|
}
|
|
3265
|
-
|
|
3266
|
-
|
|
3469
|
+
if (!isNullOrUndefined(newProp.showButtons.lockRule)) {
|
|
3470
|
+
if (newProp.showButtons.lockRule) {
|
|
3471
|
+
removeClass(this.element.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');
|
|
3472
|
+
}
|
|
3473
|
+
else {
|
|
3474
|
+
addClass(this.element.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');
|
|
3475
|
+
}
|
|
3267
3476
|
}
|
|
3268
|
-
if (newProp.showButtons.
|
|
3269
|
-
|
|
3477
|
+
if (!isNullOrUndefined(newProp.showButtons.cloneGroup)) {
|
|
3478
|
+
if (newProp.showButtons.cloneGroup) {
|
|
3479
|
+
removeClass(this.element.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');
|
|
3480
|
+
}
|
|
3481
|
+
else {
|
|
3482
|
+
addClass(this.element.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');
|
|
3483
|
+
}
|
|
3270
3484
|
}
|
|
3271
|
-
|
|
3272
|
-
|
|
3485
|
+
if (!isNullOrUndefined(newProp.showButtons.cloneRule)) {
|
|
3486
|
+
if (newProp.showButtons.cloneRule) {
|
|
3487
|
+
removeClass(this.element.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');
|
|
3488
|
+
}
|
|
3489
|
+
else {
|
|
3490
|
+
addClass(this.element.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');
|
|
3491
|
+
}
|
|
3492
|
+
}
|
|
3493
|
+
if (!isNullOrUndefined(newProp.showButtons.ruleDelete)) {
|
|
3494
|
+
if (newProp.showButtons.ruleDelete) {
|
|
3495
|
+
removeClass(this.element.querySelectorAll('.e-rule-delete'), 'e-button-hide');
|
|
3496
|
+
}
|
|
3497
|
+
else {
|
|
3498
|
+
addClass(this.element.querySelectorAll('.e-rule-delete'), 'e-button-hide');
|
|
3499
|
+
}
|
|
3500
|
+
}
|
|
3501
|
+
if (!isNullOrUndefined(newProp.showButtons.groupDelete)) {
|
|
3502
|
+
if (newProp.showButtons.groupDelete) {
|
|
3503
|
+
removeClass(this.element.querySelectorAll('.e-deletegroup'), 'e-button-hide');
|
|
3504
|
+
}
|
|
3505
|
+
else {
|
|
3506
|
+
addClass(this.element.querySelectorAll('.e-deletegroup'), 'e-button-hide');
|
|
3507
|
+
}
|
|
3273
3508
|
}
|
|
3274
3509
|
break;
|
|
3275
3510
|
case 'cssClass':
|
|
@@ -3346,8 +3581,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3346
3581
|
this.element.id = this.element.id || getUniqueID('ej2-querybuilder');
|
|
3347
3582
|
this.defaultLocale = {
|
|
3348
3583
|
StartsWith: 'Starts With',
|
|
3584
|
+
DoesNotStartWith: 'Does Not Start With',
|
|
3349
3585
|
EndsWith: 'Ends With',
|
|
3586
|
+
DoesNotEndWith: 'Does Not End With',
|
|
3350
3587
|
Contains: 'Contains',
|
|
3588
|
+
DoesNotContain: 'Does Not Contain',
|
|
3351
3589
|
NotLike: 'Not Like',
|
|
3352
3590
|
Like: 'Like',
|
|
3353
3591
|
Equal: 'Equal',
|
|
@@ -3381,7 +3619,13 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3381
3619
|
IsNotNull: 'Is Not Null',
|
|
3382
3620
|
True: 'true',
|
|
3383
3621
|
False: 'false',
|
|
3384
|
-
AddButton: 'Add Group/Condition'
|
|
3622
|
+
AddButton: 'Add Group/Condition',
|
|
3623
|
+
CloneGroup: 'Clone Group',
|
|
3624
|
+
LockGroup: 'Lock Group',
|
|
3625
|
+
CloneRule: 'Clone Rule',
|
|
3626
|
+
LockRule: 'Lock Rule',
|
|
3627
|
+
UnlockRule: 'Unlock Rule',
|
|
3628
|
+
UnlockGroup: 'Unlock Group'
|
|
3385
3629
|
};
|
|
3386
3630
|
this.l10n = new L10n('querybuilder', this.defaultLocale, this.locale);
|
|
3387
3631
|
this.intl = new Internationalization(this.locale);
|
|
@@ -3394,8 +3638,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3394
3638
|
this.customOperators = {
|
|
3395
3639
|
stringOperator: [
|
|
3396
3640
|
{ value: 'startswith', key: this.l10n.getConstant('StartsWith') },
|
|
3641
|
+
{ value: 'notstartswith', key: this.l10n.getConstant('DoesNotStartWith') },
|
|
3397
3642
|
{ value: 'endswith', key: this.l10n.getConstant('EndsWith') },
|
|
3643
|
+
{ value: 'notendswith', key: this.l10n.getConstant('DoesNotEndWith') },
|
|
3398
3644
|
{ value: 'contains', key: this.l10n.getConstant('Contains') },
|
|
3645
|
+
{ value: 'notcontains', key: this.l10n.getConstant('DoesNotContain') },
|
|
3399
3646
|
{ value: 'equal', key: this.l10n.getConstant('Equal') },
|
|
3400
3647
|
{ value: 'notequal', key: this.l10n.getConstant('NotEqual') },
|
|
3401
3648
|
{ value: 'in', key: this.l10n.getConstant('In') },
|
|
@@ -3409,7 +3656,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3409
3656
|
{ value: 'greaterthanorequal', key: this.l10n.getConstant('GreaterThanOrEqual') },
|
|
3410
3657
|
{ value: 'lessthan', key: this.l10n.getConstant('LessThan') },
|
|
3411
3658
|
{ value: 'lessthanorequal', key: this.l10n.getConstant('LessThanOrEqual') },
|
|
3412
|
-
{ value: 'notequal', key: this.l10n.getConstant('NotEqual') }
|
|
3659
|
+
{ value: 'notequal', key: this.l10n.getConstant('NotEqual') },
|
|
3660
|
+
{ value: 'between', key: this.l10n.getConstant('Between') },
|
|
3661
|
+
{ value: 'notbetween', key: this.l10n.getConstant('NotBetween') }
|
|
3413
3662
|
],
|
|
3414
3663
|
booleanOperator: [
|
|
3415
3664
|
{ value: 'equal', key: this.l10n.getConstant('Equal') },
|
|
@@ -3734,6 +3983,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3734
3983
|
this.setProperties({ rule: rule }, true);
|
|
3735
3984
|
rule = this.getRuleCollection(this.rule, false);
|
|
3736
3985
|
this.importRules(this.rule, this.element.querySelector('.e-group-container'), true, this.rule.not, isRoot);
|
|
3986
|
+
if (rule.isLocked) {
|
|
3987
|
+
var lockGrpTarget = this.element.querySelector('.e-group-container').querySelector('.e-lock-grp-btn');
|
|
3988
|
+
this.groupLock(lockGrpTarget);
|
|
3989
|
+
}
|
|
3737
3990
|
this.isImportRules = false;
|
|
3738
3991
|
};
|
|
3739
3992
|
QueryBuilder.prototype.keyBoardHandler = function (e) {
|
|
@@ -3829,7 +4082,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3829
4082
|
rule.value !== undefined)) || (customObj && customObj.isQuestion)) {
|
|
3830
4083
|
var condition = rule.condition;
|
|
3831
4084
|
rule = {
|
|
3832
|
-
'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value
|
|
4085
|
+
'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value,
|
|
4086
|
+
'isLocked': rule.isLocked
|
|
3833
4087
|
};
|
|
3834
4088
|
if (condition) {
|
|
3835
4089
|
rule.condition = condition;
|
|
@@ -3838,6 +4092,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3838
4092
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3839
4093
|
rule.custom = customObj;
|
|
3840
4094
|
}
|
|
4095
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3841
4096
|
if ((rule.operator === 'in' || rule.operator === 'notin') && rule.value && rule.value.length === 0) {
|
|
3842
4097
|
rule = {};
|
|
3843
4098
|
}
|
|
@@ -3863,10 +4118,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3863
4118
|
}
|
|
3864
4119
|
else {
|
|
3865
4120
|
if (this.enableNotCondition) {
|
|
3866
|
-
rule = { 'condition': rule.condition, 'rules': rule.rules, 'not': rule.not };
|
|
4121
|
+
rule = { 'condition': rule.condition, 'rules': rule.rules, 'not': rule.not, 'isLocked': rule.isLocked };
|
|
3867
4122
|
}
|
|
3868
4123
|
else {
|
|
3869
|
-
rule = { 'condition': rule.condition, 'rules': rule.rules };
|
|
4124
|
+
rule = { 'condition': rule.condition, 'rules': rule.rules, 'isLocked': rule.isLocked };
|
|
3870
4125
|
}
|
|
3871
4126
|
if (customObj) {
|
|
3872
4127
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -4031,11 +4286,20 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4031
4286
|
var ruleValue;
|
|
4032
4287
|
var ignoreCase = false;
|
|
4033
4288
|
var column;
|
|
4034
|
-
var ignoreOper = ['notcontains', 'notstartswith', 'notendswith'];
|
|
4035
4289
|
if (!ruleColl) {
|
|
4036
4290
|
return pred;
|
|
4037
4291
|
}
|
|
4038
4292
|
for (var i = 0, len = ruleColl.length; i < len; i++) {
|
|
4293
|
+
var operator = ruleColl[i].operator;
|
|
4294
|
+
if (operator === 'notstartswith') {
|
|
4295
|
+
operator = 'doesnotstartwith';
|
|
4296
|
+
}
|
|
4297
|
+
else if (operator === 'notendswith') {
|
|
4298
|
+
operator = 'doesnotendwith';
|
|
4299
|
+
}
|
|
4300
|
+
else if (operator === 'notcontains') {
|
|
4301
|
+
operator = 'doesnotcontain';
|
|
4302
|
+
}
|
|
4039
4303
|
var keys = Object.keys(ruleColl[i]);
|
|
4040
4304
|
ignoreCase = false;
|
|
4041
4305
|
if (keys.indexOf('rules') > -1 && ruleColl[i].rules) {
|
|
@@ -4054,7 +4318,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4054
4318
|
}
|
|
4055
4319
|
}
|
|
4056
4320
|
}
|
|
4057
|
-
else if (!isNullOrUndefined(
|
|
4321
|
+
else if (!isNullOrUndefined(operator) && !isNullOrUndefined(operator.length)) {
|
|
4058
4322
|
var oper = ruleColl[i].operator.toLowerCase();
|
|
4059
4323
|
var isDateFilter = false;
|
|
4060
4324
|
var dateOperColl = ['equal', 'notequal', 'greaterthan', 'greaterthanorequal', 'lessthan', 'lessthanorequal'];
|
|
@@ -4085,23 +4349,20 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4085
4349
|
}
|
|
4086
4350
|
if (i === 0) {
|
|
4087
4351
|
if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 || oper.indexOf('null') > -1 ||
|
|
4088
|
-
oper.indexOf('empty') > -1) && oper.indexOf('
|
|
4352
|
+
oper.indexOf('empty') > -1) && (oper.indexOf('contain') < 0)) {
|
|
4089
4353
|
pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue) :
|
|
4090
4354
|
this.arrayPredicate(ruleColl[i]);
|
|
4091
4355
|
}
|
|
4092
4356
|
else {
|
|
4093
4357
|
var value = ruleValue;
|
|
4094
|
-
if (value !== ''
|
|
4095
|
-
pred = new Predicate(ruleColl[i].field,
|
|
4358
|
+
if (value !== '') {
|
|
4359
|
+
pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4096
4360
|
}
|
|
4097
4361
|
}
|
|
4098
4362
|
}
|
|
4099
4363
|
else {
|
|
4100
|
-
if (ignoreOper.indexOf(oper) > -1) {
|
|
4101
|
-
continue;
|
|
4102
|
-
}
|
|
4103
4364
|
if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 ||
|
|
4104
|
-
oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) && oper.indexOf('
|
|
4365
|
+
oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) && oper.indexOf('contain') < 0) {
|
|
4105
4366
|
pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue, pred, rule.condition) :
|
|
4106
4367
|
this.arrayPredicate(ruleColl[i], pred, rule.condition);
|
|
4107
4368
|
}
|
|
@@ -4110,19 +4371,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4110
4371
|
var value = ruleValue;
|
|
4111
4372
|
if (pred && value !== '') {
|
|
4112
4373
|
pred
|
|
4113
|
-
= pred.and(ruleColl[i].field,
|
|
4374
|
+
= pred.and(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4114
4375
|
}
|
|
4115
4376
|
else if (value !== '') {
|
|
4116
|
-
pred = new Predicate(ruleColl[i].field,
|
|
4377
|
+
pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4117
4378
|
}
|
|
4118
4379
|
}
|
|
4119
4380
|
else {
|
|
4120
4381
|
var value = ruleValue;
|
|
4121
4382
|
if (pred && value !== '') {
|
|
4122
|
-
pred = pred.or(ruleColl[i].field,
|
|
4383
|
+
pred = pred.or(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4123
4384
|
}
|
|
4124
4385
|
else if (value !== '') {
|
|
4125
|
-
pred = new Predicate(ruleColl[i].field,
|
|
4386
|
+
pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4126
4387
|
}
|
|
4127
4388
|
}
|
|
4128
4389
|
}
|
|
@@ -4402,15 +4663,28 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4402
4663
|
for (var i = 0, len = ruleColl.length; i < len; i++) {
|
|
4403
4664
|
var keys = Object.keys(ruleColl[i]);
|
|
4404
4665
|
if (!isNullOrUndefined(ruleColl[i].rules) && keys.indexOf('rules') > -1 && (ruleColl[i].rules.length !== 0)) {
|
|
4666
|
+
if (this.element.querySelectorAll('.e-group-container').length > this.maxGroupCount) {
|
|
4667
|
+
return null;
|
|
4668
|
+
}
|
|
4405
4669
|
parentElem = this.renderGroup(ruleColl[i], ruleColl[i].condition, parentElem, ruleColl[i].not);
|
|
4406
4670
|
parentElem = this.importRules(ruleColl[i], parentElem, true);
|
|
4407
4671
|
}
|
|
4408
4672
|
else {
|
|
4409
4673
|
this.renderRule(ruleColl[i], parentElem);
|
|
4410
4674
|
}
|
|
4675
|
+
if (!isNullOrUndefined(ruleColl[i].rules) && ruleColl[i].isLocked) {
|
|
4676
|
+
var lockGrpTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-grp-btn');
|
|
4677
|
+
this.groupLock(lockGrpTarget);
|
|
4678
|
+
}
|
|
4679
|
+
if (isNullOrUndefined(ruleColl[i].rules) && ruleColl[i].isLocked) {
|
|
4680
|
+
var lockRuleTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-rule-btn');
|
|
4681
|
+
this.ruleLock(lockRuleTarget);
|
|
4682
|
+
}
|
|
4411
4683
|
}
|
|
4412
4684
|
}
|
|
4413
|
-
|
|
4685
|
+
if (parentElem) {
|
|
4686
|
+
parentElem = closest(parentElem, '.e-rule-list');
|
|
4687
|
+
}
|
|
4414
4688
|
if (parentElem) {
|
|
4415
4689
|
parentElem = closest(parentElem, '.e-group-container');
|
|
4416
4690
|
}
|
|
@@ -4419,7 +4693,20 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4419
4693
|
QueryBuilder.prototype.renderGroup = function (rule, condition, parentElem, not, isRoot) {
|
|
4420
4694
|
this.addGroupElement(true, parentElem, condition, false, not, isRoot, rule); //Child group
|
|
4421
4695
|
var element = parentElem.querySelectorAll('.e-group-container');
|
|
4422
|
-
|
|
4696
|
+
var cloneElem = parentElem.querySelector('.e-rule-list').children;
|
|
4697
|
+
if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isMiddleGroup) {
|
|
4698
|
+
this.isMiddleGroup = false;
|
|
4699
|
+
this.cloneGrpBtnClick = false;
|
|
4700
|
+
return cloneElem[this.groupIndex + 1]; // group added in the middle
|
|
4701
|
+
}
|
|
4702
|
+
else if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isLastGroup) {
|
|
4703
|
+
this.isLastGroup = false;
|
|
4704
|
+
this.cloneGrpBtnClick = false;
|
|
4705
|
+
return cloneElem[cloneElem.length - 1]; // group added in the end
|
|
4706
|
+
}
|
|
4707
|
+
else {
|
|
4708
|
+
return element[element.length - 1];
|
|
4709
|
+
}
|
|
4423
4710
|
};
|
|
4424
4711
|
QueryBuilder.prototype.renderRule = function (rule, parentElem) {
|
|
4425
4712
|
if (parentElem.className.indexOf('e-group-container') > -1) {
|
|
@@ -4618,15 +4905,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4618
4905
|
valueStr += rule.value ? '("%' + rule.value + '%")' : '(' + rule.value + ')';
|
|
4619
4906
|
}
|
|
4620
4907
|
else {
|
|
4621
|
-
if (rule.type === 'number' || typeof rule.value === 'boolean' ||
|
|
4908
|
+
if (rule.type === 'number' || typeof rule.value === 'boolean' ||
|
|
4909
|
+
(rule.value === null && (rule.operator.toString().indexOf('empty') < -1))) {
|
|
4622
4910
|
valueStr += rule.value;
|
|
4623
4911
|
}
|
|
4912
|
+
else if (rule.operator.toString().indexOf('empty') > -1) {
|
|
4913
|
+
valueStr += '""';
|
|
4914
|
+
}
|
|
4624
4915
|
else {
|
|
4625
4916
|
valueStr += '"' + rule.value + '"';
|
|
4626
4917
|
}
|
|
4627
4918
|
}
|
|
4628
4919
|
}
|
|
4629
|
-
if (rule.operator.toString().indexOf('null') > -1
|
|
4920
|
+
if (rule.operator.toString().indexOf('null') > -1) {
|
|
4630
4921
|
if (enableEscape) {
|
|
4631
4922
|
rule.field = '`' + rule.field + '`';
|
|
4632
4923
|
}
|
|
@@ -4638,6 +4929,13 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4638
4929
|
queryStr += rule.field + ' ' + ruleOpertor;
|
|
4639
4930
|
}
|
|
4640
4931
|
else {
|
|
4932
|
+
var custOper = ruleOpertor;
|
|
4933
|
+
if (rule.operator === 'isempty') {
|
|
4934
|
+
custOper = '=';
|
|
4935
|
+
}
|
|
4936
|
+
else if (rule.operator === 'isnotempty') {
|
|
4937
|
+
custOper = '!=';
|
|
4938
|
+
}
|
|
4641
4939
|
if (enableEscape) {
|
|
4642
4940
|
rule.field = '`' + rule.field + '`';
|
|
4643
4941
|
}
|
|
@@ -4646,7 +4944,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4646
4944
|
rule.field = '"' + rule.field + '"';
|
|
4647
4945
|
}
|
|
4648
4946
|
}
|
|
4649
|
-
queryStr += rule.field + ' ' +
|
|
4947
|
+
queryStr += rule.field + ' ' + custOper + ' ' + valueStr;
|
|
4650
4948
|
}
|
|
4651
4949
|
if (rule.condition && rule.condition !== '') {
|
|
4652
4950
|
condition = rule.condition;
|
|
@@ -4676,7 +4974,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4676
4974
|
* Sets the rules from the sql query.
|
|
4677
4975
|
*
|
|
4678
4976
|
* @param {string} sqlString - 'sql String' to be passed to set the rule.
|
|
4679
|
-
* @param {boolean} sqlLocale -
|
|
4977
|
+
* @param {boolean} sqlLocale - Optional. Set `true` if Localization for Sql query.
|
|
4680
4978
|
* @returns {void}
|
|
4681
4979
|
*/
|
|
4682
4980
|
QueryBuilder.prototype.setRulesFromSql = function (sqlString, sqlLocale) {
|
|
@@ -4708,15 +5006,173 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4708
5006
|
*
|
|
4709
5007
|
* @param {RuleModel} rule - 'rule' to be passed to get the sql.
|
|
4710
5008
|
* @param {boolean} allowEscape - Set `true` if it exclude the escape character.
|
|
4711
|
-
*
|
|
4712
|
-
* @returns {
|
|
5009
|
+
* @param {boolean} sqlLocale - Set `true` if Localization for Sql query.
|
|
5010
|
+
* @returns {string} - Sql query from rules.
|
|
4713
5011
|
*/
|
|
4714
5012
|
QueryBuilder.prototype.getSqlFromRules = function (rule, allowEscape, sqlLocale) {
|
|
4715
5013
|
if (!rule) {
|
|
4716
5014
|
rule = this.getValidRules();
|
|
4717
5015
|
}
|
|
4718
5016
|
rule = this.getRuleCollection(rule, false);
|
|
4719
|
-
|
|
5017
|
+
var sqlString = this.getSqlString(this.getValidRules(rule), allowEscape, null, sqlLocale).replace(/"/g, '\'');
|
|
5018
|
+
return sqlString;
|
|
5019
|
+
};
|
|
5020
|
+
/**
|
|
5021
|
+
* Gets the parameter SQL query from rules.
|
|
5022
|
+
*
|
|
5023
|
+
* @param {RuleModel} rule – Specify the rule to be passed to get the parameter sql string.
|
|
5024
|
+
* @returns {ParameterizedSql} – Parameterized SQL query from rules.
|
|
5025
|
+
*/
|
|
5026
|
+
QueryBuilder.prototype.getParameterizedSql = function (rule) {
|
|
5027
|
+
if (!rule) {
|
|
5028
|
+
rule = this.getValidRules();
|
|
5029
|
+
}
|
|
5030
|
+
var obj = { sql: null };
|
|
5031
|
+
this.notify('query-library', { prop: 'getParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
|
|
5032
|
+
return obj['sql'];
|
|
5033
|
+
};
|
|
5034
|
+
/**
|
|
5035
|
+
* Sets the rules from the parameter sql query.
|
|
5036
|
+
*
|
|
5037
|
+
* @param { ParameterizedSql} sqlQuery – Specifies the parameter SQL to be passed to set the rule and load it to the query builder.
|
|
5038
|
+
* @returns {void}
|
|
5039
|
+
*/
|
|
5040
|
+
QueryBuilder.prototype.setParameterizedSql = function (sqlQuery) {
|
|
5041
|
+
var obj = { sql: null };
|
|
5042
|
+
this.notify('query-library', { prop: 'convertParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
|
|
5043
|
+
var sql = obj['sql'];
|
|
5044
|
+
if (sql) {
|
|
5045
|
+
sql = sql.replace(/`/g, '');
|
|
5046
|
+
var ruleModel = this.getRulesFromSql(sql);
|
|
5047
|
+
this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
|
|
5048
|
+
}
|
|
5049
|
+
};
|
|
5050
|
+
/**
|
|
5051
|
+
* Gets the named parameter SQL query from rules.
|
|
5052
|
+
*
|
|
5053
|
+
* @param {RuleModel} rule – Specify the rule to be passed to get the named parameter SQL string.
|
|
5054
|
+
* @returns {ParameterizedNamedSql} – Parameterized Named SQL query from rules.
|
|
5055
|
+
*/
|
|
5056
|
+
QueryBuilder.prototype.getParameterizedNamedSql = function (rule) {
|
|
5057
|
+
if (!rule) {
|
|
5058
|
+
rule = this.getValidRules();
|
|
5059
|
+
}
|
|
5060
|
+
var obj = { sql: null };
|
|
5061
|
+
this.notify('query-library', { prop: 'getNamedParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
|
|
5062
|
+
return obj['sql'];
|
|
5063
|
+
};
|
|
5064
|
+
/**
|
|
5065
|
+
* Sets the rules from the named parameter SQL query.
|
|
5066
|
+
*
|
|
5067
|
+
* @param { ParameterizedNamedSql } sqlQuery – Specifies the named parameter SQL to be passed to set the rule and load it to the query builder.
|
|
5068
|
+
* @returns {void}
|
|
5069
|
+
*/
|
|
5070
|
+
QueryBuilder.prototype.setParameterizedNamedSql = function (sqlQuery) {
|
|
5071
|
+
var obj = { sql: null };
|
|
5072
|
+
this.notify('query-library', { prop: 'convertNamedParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
|
|
5073
|
+
var sql = obj['sql'];
|
|
5074
|
+
if (sql) {
|
|
5075
|
+
sql = sql.replace(/`/g, '');
|
|
5076
|
+
var ruleModel = this.getRulesFromSql(sql);
|
|
5077
|
+
this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
|
|
5078
|
+
}
|
|
5079
|
+
};
|
|
5080
|
+
/**
|
|
5081
|
+
* Set the rules from Mongo query.
|
|
5082
|
+
*
|
|
5083
|
+
* @param {string} mongoQuery - 'sql String' to be passed to get the rule.
|
|
5084
|
+
* @param {boolean} mongoLocale - Set `true` if Localization for Mongo query.
|
|
5085
|
+
* @returns {void}
|
|
5086
|
+
*/
|
|
5087
|
+
QueryBuilder.prototype.setMongoQuery = function (mongoQuery, mongoLocale) {
|
|
5088
|
+
this.rule = { condition: 'and', not: false, rules: [] };
|
|
5089
|
+
this.notify('query-library', { prop: 'mongoParser', onPropertyChange: false, value: { mongoQuery: JSON.parse(mongoQuery), rule: this.rule, mongoLocale: mongoLocale } });
|
|
5090
|
+
};
|
|
5091
|
+
/**
|
|
5092
|
+
* Gets the Mongo query from rules.
|
|
5093
|
+
*
|
|
5094
|
+
* @param {RuleModel} rule - 'rule' to be passed to get the sql.
|
|
5095
|
+
* @returns {object} - Sql query from rules.
|
|
5096
|
+
*/
|
|
5097
|
+
QueryBuilder.prototype.getMongoQuery = function (rule) {
|
|
5098
|
+
if (!rule) {
|
|
5099
|
+
rule = this.getValidRules();
|
|
5100
|
+
}
|
|
5101
|
+
var obj = { mongoQuery: null };
|
|
5102
|
+
this.notify('query-library', { prop: 'getMongoFromRules', onPropertyChange: false, value: { rule: rule, mongoQuery: '', obj: obj } });
|
|
5103
|
+
return obj['mongoQuery'];
|
|
5104
|
+
};
|
|
5105
|
+
/**
|
|
5106
|
+
* Clones the rule based on the rule ID to the specific group.
|
|
5107
|
+
*
|
|
5108
|
+
* @param {string} ruleID - Specifies the ruleID that needs to be cloned.
|
|
5109
|
+
* @param {string} groupID - Specifies the groupID in which the rule to be cloned.
|
|
5110
|
+
* @param {number} index - Specifies the index to insert the cloned rule inside the group.
|
|
5111
|
+
* @returns {void}
|
|
5112
|
+
*/
|
|
5113
|
+
QueryBuilder.prototype.cloneRule = function (ruleID, groupID, index) {
|
|
5114
|
+
var getRule = this.getRule(ruleID.replace(this.element.id + '_', ''));
|
|
5115
|
+
var isCloneRule = this.showButtons.cloneRule;
|
|
5116
|
+
groupID = groupID.replace(this.element.id + '_', '');
|
|
5117
|
+
this.ruleIndex = index;
|
|
5118
|
+
this.cloneRuleBtnClick = true;
|
|
5119
|
+
this.showButtons.cloneRule = true;
|
|
5120
|
+
this.addRules([{
|
|
5121
|
+
'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
|
|
5122
|
+
'value': getRule.value
|
|
5123
|
+
}], groupID);
|
|
5124
|
+
this.ruleIndex = -1;
|
|
5125
|
+
this.cloneRuleBtnClick = false;
|
|
5126
|
+
this.showButtons.cloneRule = isCloneRule;
|
|
5127
|
+
isCloneRule = false;
|
|
5128
|
+
};
|
|
5129
|
+
/**
|
|
5130
|
+
* Clones the group based on the group ID to the specific group.
|
|
5131
|
+
*
|
|
5132
|
+
* @param {string} groupID - Specifies the groupID that needs to be cloned.
|
|
5133
|
+
* @param {string} parentGroupID - Specifies the parentGroupID in which the group to be cloned.
|
|
5134
|
+
* @param {number} index - Specifies the index to insert the cloned group inside the parent group.
|
|
5135
|
+
* @returns {void}
|
|
5136
|
+
*/
|
|
5137
|
+
QueryBuilder.prototype.cloneGroup = function (groupID, parentGroupID, index) {
|
|
5138
|
+
parentGroupID = parentGroupID.replace(this.element.id + '_', '');
|
|
5139
|
+
var group = this.getGroup(parentGroupID);
|
|
5140
|
+
var isCloneGroup = this.showButtons.cloneGroup;
|
|
5141
|
+
groupID = groupID.replace(this.element.id + '_', '');
|
|
5142
|
+
this.groupIndex = index;
|
|
5143
|
+
this.cloneGrpBtnClick = true;
|
|
5144
|
+
this.showButtons.cloneGroup = true;
|
|
5145
|
+
this.addGroups([{ 'condition': group.condition, 'not': group.not, 'rules': group.rules }], groupID);
|
|
5146
|
+
this.groupIndex = -1;
|
|
5147
|
+
this.cloneGrpBtnClick = false;
|
|
5148
|
+
this.showButtons.cloneGroup = isCloneGroup;
|
|
5149
|
+
isCloneGroup = false;
|
|
5150
|
+
};
|
|
5151
|
+
/**
|
|
5152
|
+
* Locks the rule based on the rule ID.
|
|
5153
|
+
*
|
|
5154
|
+
* @param {string} ruleID - Specifies the ruleID that needs to be locked.
|
|
5155
|
+
* @returns {void}
|
|
5156
|
+
*/
|
|
5157
|
+
QueryBuilder.prototype.lockRule = function (ruleID) {
|
|
5158
|
+
if (ruleID.indexOf(this.element.id) < 0) {
|
|
5159
|
+
ruleID = this.element.id + '_' + ruleID;
|
|
5160
|
+
}
|
|
5161
|
+
var target = document.getElementById(ruleID).querySelectorAll('.e-lock-rule-btn')[0];
|
|
5162
|
+
this.ruleLock(target);
|
|
5163
|
+
};
|
|
5164
|
+
/**
|
|
5165
|
+
* Locks the group based on the group ID
|
|
5166
|
+
*
|
|
5167
|
+
* @param {string} groupID - Specifies the groupID that needs to be locked.
|
|
5168
|
+
* @returns {void}
|
|
5169
|
+
*/
|
|
5170
|
+
QueryBuilder.prototype.lockGroup = function (groupID) {
|
|
5171
|
+
if (groupID.indexOf(this.element.id) < 0) {
|
|
5172
|
+
groupID = this.element.id + '_' + groupID;
|
|
5173
|
+
}
|
|
5174
|
+
var target = document.getElementById(groupID).querySelectorAll('.e-lock-grp-btn')[0];
|
|
5175
|
+
this.groupLock(target);
|
|
4720
5176
|
};
|
|
4721
5177
|
QueryBuilder.prototype.sqlParser = function (sqlString, sqlLocale) {
|
|
4722
5178
|
var st = 0;
|
|
@@ -4918,13 +5374,13 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4918
5374
|
for (var i = 0; i < localeOperator.length; i++) {
|
|
4919
5375
|
if (this.sqlOperators[localeOperator[i]] === operator.toUpperCase()) {
|
|
4920
5376
|
if (value && value.indexOf('%') === 0 && value[value.length - 1] === '%') {
|
|
4921
|
-
return (
|
|
5377
|
+
return (operator.toUpperCase() === 'NOT LIKE') ? 'notcontains' : 'contains';
|
|
4922
5378
|
}
|
|
4923
5379
|
else if (value && value.indexOf('%') !== 0 && value.indexOf('%') === value.length - 1) {
|
|
4924
|
-
return (
|
|
5380
|
+
return (operator.toUpperCase() === 'NOT LIKE') ? 'notstartswith' : 'startswith';
|
|
4925
5381
|
}
|
|
4926
5382
|
else if (value && value.indexOf('%') === 0 && value.indexOf('%') !== value.length - 1) {
|
|
4927
|
-
return (
|
|
5383
|
+
return (operator.toUpperCase() === 'NOT LIKE') ? 'notendswith' : 'endswith';
|
|
4928
5384
|
}
|
|
4929
5385
|
return localeOperator[i];
|
|
4930
5386
|
}
|
|
@@ -5109,6 +5565,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
5109
5565
|
}
|
|
5110
5566
|
else if (parser[i + 1][0] === 'Operators') {
|
|
5111
5567
|
rule.operator = this.getOperator(parser[i + 2][1], parser[i + 1][1], sqlLocale);
|
|
5568
|
+
if (rule.operator == "equal" && parser[i + 2][0] === "String" && parser[i + 2][1] === "''") {
|
|
5569
|
+
rule.operator = "isempty";
|
|
5570
|
+
|
|
5571
|
+
}
|
|
5572
|
+
else if (rule.operator == "notequal" && parser[i + 2][0] === "String" && parser[i + 2][1] === "''") {
|
|
5573
|
+
rule.operator = "isnotempty";
|
|
5574
|
+
|
|
5575
|
+
}
|
|
5112
5576
|
if (parser[i + 2][0] === 'Number') {
|
|
5113
5577
|
rule.type = 'number';
|
|
5114
5578
|
rule.value = Number(parser[i + 2][1]);
|
|
@@ -5165,31 +5629,326 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
5165
5629
|
}
|
|
5166
5630
|
return rules;
|
|
5167
5631
|
};
|
|
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
|
-
|
|
5632
|
+
/**
|
|
5633
|
+
* Clone the Group
|
|
5634
|
+
*
|
|
5635
|
+
* @param {Element | string} target - 'target' to be passed to clone the group.
|
|
5636
|
+
* @returns {void}
|
|
5637
|
+
*/
|
|
5638
|
+
QueryBuilder.prototype.groupClone = function (target) {
|
|
5639
|
+
var groupElem = target.closest('.e-rule-list').closest('.e-group-container');
|
|
5640
|
+
var targetGrpId;
|
|
5641
|
+
var groupId;
|
|
5642
|
+
if (typeof target === 'string') {
|
|
5643
|
+
groupId = this.element.id + '_' + target;
|
|
5644
|
+
target = document.getElementById(groupId);
|
|
5645
|
+
}
|
|
5646
|
+
else {
|
|
5647
|
+
targetGrpId = target.id.replace(this.element.id + '_', '');
|
|
5648
|
+
groupId = groupElem.id.replace(this.element.id + '_', '');
|
|
5649
|
+
}
|
|
5650
|
+
var group = this.getGroup(targetGrpId);
|
|
5651
|
+
this.groupIndex = Array.prototype.indexOf.call(target.closest('.e-rule-list').children, target.closest('.e-group-container'));
|
|
5652
|
+
this.addGroups([{ 'condition': group.condition, 'not': group.not, 'rules': group.rules }], groupId);
|
|
5653
|
+
this.groupIndex = -1;
|
|
5654
|
+
};
|
|
5655
|
+
QueryBuilder.prototype.ruleClone = function (target) {
|
|
5656
|
+
var ruleElem = closest(target, '.e-rule-container');
|
|
5657
|
+
var groupElem = target.closest('.e-rule-list').closest('.e-group-container');
|
|
5658
|
+
var getRule = this.getRule(target);
|
|
5659
|
+
var groupId = groupElem.id.replace(this.element.id + '_', '');
|
|
5660
|
+
var ruleElemColl = groupElem.querySelectorAll('.e-rule-container');
|
|
5661
|
+
for (var i = 0, iLen = ruleElemColl.length; i < iLen; i++) {
|
|
5662
|
+
if (ruleElem.id === ruleElemColl[i].id) {
|
|
5663
|
+
this.ruleIndex = i;
|
|
5664
|
+
}
|
|
5665
|
+
}
|
|
5666
|
+
this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
|
|
5667
|
+
'value': getRule.value }], groupId);
|
|
5668
|
+
this.ruleIndex = -1;
|
|
5669
|
+
};
|
|
5670
|
+
QueryBuilder.prototype.ruleLock = function (target) {
|
|
5671
|
+
var ruleElem = closest(target, '.e-rule-container');
|
|
5672
|
+
var rule = this.getRule(ruleElem.id.replace(this.element.id + '_', ''));
|
|
5673
|
+
if (ruleElem.classList.contains('e-disable')) {
|
|
5674
|
+
rule.isLocked = false;
|
|
5675
|
+
this.lockItems = this.lockItems.filter(function (lockItem) { return lockItem !== ruleElem.id; });
|
|
5676
|
+
ruleElem.classList.remove('e-disable');
|
|
5677
|
+
this.disableRuleControls(target, ruleElem, false);
|
|
5678
|
+
target.children[0].classList.add('e-unlock');
|
|
5679
|
+
target.children[0].classList.remove('e-lock');
|
|
5680
|
+
target.setAttribute('title', this.l10n.getConstant('LockRule'));
|
|
5681
|
+
}
|
|
5682
|
+
else {
|
|
5683
|
+
rule.isLocked = true;
|
|
5684
|
+
if (this.lockItems.indexOf(ruleElem.id) < 0) {
|
|
5685
|
+
this.lockItems.splice(this.lockItems.length - 1, 0, ruleElem.id);
|
|
5686
|
+
}
|
|
5687
|
+
ruleElem.classList.add('e-disable');
|
|
5688
|
+
this.disableRuleControls(target, ruleElem, true);
|
|
5689
|
+
target.children[0].classList.add('e-lock');
|
|
5690
|
+
target.children[0].classList.remove('e-unlock');
|
|
5691
|
+
target.setAttribute('title', this.l10n.getConstant('UnlockRule'));
|
|
5692
|
+
}
|
|
5693
|
+
};
|
|
5694
|
+
QueryBuilder.prototype.groupLock = function (target) {
|
|
5695
|
+
var groupElem = closest(target, '.e-group-container');
|
|
5696
|
+
var group = this.getGroup(groupElem.id.replace(this.element.id + '_', ''));
|
|
5697
|
+
var isRoot = groupElem.id.indexOf('group0') > -1;
|
|
5698
|
+
if (groupElem.classList.contains('e-disable')) {
|
|
5699
|
+
if (isRoot) {
|
|
5700
|
+
var newGroup = {};
|
|
5701
|
+
newGroup.condition = group.condition;
|
|
5702
|
+
newGroup.not = group.not;
|
|
5703
|
+
newGroup.isLocked = false;
|
|
5704
|
+
this.setProperties({ rule: newGroup }, true);
|
|
5705
|
+
}
|
|
5706
|
+
else {
|
|
5707
|
+
group.isLocked = false;
|
|
5708
|
+
}
|
|
5709
|
+
this.lockItems = this.lockItems.filter(function (lockItem) { return lockItem !== groupElem.id; });
|
|
5710
|
+
groupElem.classList.remove('e-disable');
|
|
5711
|
+
this.disableHeaderControls(target, groupElem, false);
|
|
5712
|
+
target.children[0].classList.add('e-unlock');
|
|
5713
|
+
target.children[0].classList.remove('e-lock');
|
|
5714
|
+
target.setAttribute('title', this.l10n.getConstant('LockGroup'));
|
|
5715
|
+
this.updateLockItems();
|
|
5716
|
+
}
|
|
5717
|
+
else {
|
|
5718
|
+
if (isRoot) {
|
|
5719
|
+
var newGroup = {};
|
|
5720
|
+
newGroup.condition = group.condition;
|
|
5721
|
+
newGroup.not = group.not;
|
|
5722
|
+
newGroup.isLocked = true;
|
|
5723
|
+
this.setProperties({ rule: newGroup }, true);
|
|
5724
|
+
}
|
|
5725
|
+
else {
|
|
5726
|
+
group.isLocked = true;
|
|
5727
|
+
}
|
|
5728
|
+
if (this.lockItems.indexOf(groupElem.id) < 0) {
|
|
5729
|
+
this.lockItems.splice(this.lockItems.length - 1, 0, groupElem.id);
|
|
5730
|
+
}
|
|
5731
|
+
groupElem.classList.add('e-disable');
|
|
5732
|
+
this.disableHeaderControls(target, groupElem, true);
|
|
5733
|
+
target.children[0].classList.add('e-lock');
|
|
5734
|
+
target.children[0].classList.remove('e-unlock');
|
|
5735
|
+
target.setAttribute('title', this.l10n.getConstant('UnlockGroup'));
|
|
5736
|
+
}
|
|
5737
|
+
};
|
|
5738
|
+
QueryBuilder.prototype.updateLockItems = function () {
|
|
5739
|
+
for (var i = 0; i < this.lockItems.length; i++) {
|
|
5740
|
+
var idColl = this.lockItems[i].split('_');
|
|
5741
|
+
if (idColl.length > 2) {
|
|
5742
|
+
var ruleElem = this.element.querySelector('#' + this.lockItems[i]);
|
|
5743
|
+
var target = ruleElem.querySelector('.e-lock-rule-btn');
|
|
5744
|
+
ruleElem = closest(target, '.e-rule-container');
|
|
5745
|
+
if (!ruleElem.classList.contains('e-disable')) {
|
|
5746
|
+
this.ruleLock(target);
|
|
5747
|
+
}
|
|
5748
|
+
}
|
|
5749
|
+
else {
|
|
5750
|
+
var groupElem = this.element.querySelector('#' + this.lockItems[i]);
|
|
5751
|
+
var target = groupElem.querySelector('.e-lock-grp-btn');
|
|
5752
|
+
groupElem = closest(target, '.e-group-container');
|
|
5753
|
+
if (!groupElem.classList.contains('e-disable')) {
|
|
5754
|
+
this.groupLock(target);
|
|
5755
|
+
}
|
|
5756
|
+
}
|
|
5757
|
+
}
|
|
5758
|
+
};
|
|
5759
|
+
QueryBuilder.prototype.disableHeaderControls = function (target, groupElem, isDisabled) {
|
|
5760
|
+
var andElem = groupElem.querySelectorAll('.e-btngroup-and');
|
|
5761
|
+
var orElem = groupElem.querySelectorAll('.e-btngroup-or');
|
|
5762
|
+
var notElem = groupElem.querySelectorAll('.e-qb-toggle');
|
|
5763
|
+
var addElem = groupElem.querySelectorAll('.e-add-btn');
|
|
5764
|
+
var deleteGrpElem = groupElem.querySelectorAll('.e-deletegroup');
|
|
5765
|
+
var lockElem = groupElem.querySelectorAll('.e-lock-grp-btn');
|
|
5766
|
+
var cloneElem = groupElem.querySelectorAll('.e-clone-grp-btn');
|
|
5767
|
+
var groupContElem = groupElem.querySelectorAll('.e-group-container');
|
|
5768
|
+
for (var i = 0; i < andElem.length; i++) {
|
|
5769
|
+
if (isDisabled) {
|
|
5770
|
+
if (groupContElem[i] && groupContElem[i].classList.contains('e-disable')) {
|
|
5771
|
+
groupContElem[i].classList.add('e-disable');
|
|
5772
|
+
}
|
|
5773
|
+
andElem[i].disabled = true;
|
|
5774
|
+
orElem[i].disabled = true;
|
|
5775
|
+
addElem[i].disabled = true;
|
|
5776
|
+
if (notElem[i]) {
|
|
5777
|
+
notElem[i].disabled = true;
|
|
5778
|
+
}
|
|
5779
|
+
if (deleteGrpElem[i]) {
|
|
5780
|
+
deleteGrpElem[i].disabled = true;
|
|
5781
|
+
}
|
|
5782
|
+
if (cloneElem[i]) {
|
|
5783
|
+
cloneElem[i].disabled = true;
|
|
5784
|
+
}
|
|
5785
|
+
andElem[i].parentElement.classList.add('e-disabled');
|
|
5786
|
+
if (lockElem[i] !== target) {
|
|
5787
|
+
lockElem[i].disabled = true;
|
|
5788
|
+
lockElem[i].children[0].classList.remove('e-unlock');
|
|
5789
|
+
lockElem[i].children[0].classList.add('e-lock');
|
|
5790
|
+
}
|
|
5791
|
+
}
|
|
5792
|
+
else {
|
|
5793
|
+
if (groupContElem[i]) {
|
|
5794
|
+
groupContElem[i].classList.remove('e-disable');
|
|
5795
|
+
}
|
|
5796
|
+
andElem[i].disabled = false;
|
|
5797
|
+
orElem[i].disabled = false;
|
|
5798
|
+
addElem[i].disabled = false;
|
|
5799
|
+
lockElem[i].disabled = false;
|
|
5800
|
+
if (notElem[i]) {
|
|
5801
|
+
notElem[i].disabled = false;
|
|
5802
|
+
}
|
|
5803
|
+
if (deleteGrpElem[i]) {
|
|
5804
|
+
deleteGrpElem[i].disabled = false;
|
|
5805
|
+
}
|
|
5806
|
+
if (cloneElem[i]) {
|
|
5807
|
+
cloneElem[i].disabled = false;
|
|
5808
|
+
}
|
|
5809
|
+
andElem[i].parentElement.classList.remove('e-disabled');
|
|
5810
|
+
lockElem[i].children[0].classList.remove('e-lock');
|
|
5811
|
+
lockElem[i].children[0].classList.add('e-unlock');
|
|
5812
|
+
}
|
|
5813
|
+
}
|
|
5814
|
+
this.disableRuleControls(target, groupElem, isDisabled);
|
|
5815
|
+
};
|
|
5816
|
+
QueryBuilder.prototype.disableRuleControls = function (target, groupElem, isDisabled) {
|
|
5817
|
+
var ddlElement = groupElem.querySelectorAll('.e-control.e-dropdownlist');
|
|
5818
|
+
var numericElement = groupElem.querySelectorAll('.e-control.e-numerictextbox');
|
|
5819
|
+
var textElement = groupElem.querySelectorAll('.e-control.e-textbox');
|
|
5820
|
+
var dateElement = groupElem.querySelectorAll('.e-control.e-datepicker');
|
|
5821
|
+
var checkboxElement = groupElem.querySelectorAll('.e-control.e-checkbox');
|
|
5822
|
+
var radioBtnElement = groupElem.querySelectorAll('.e-control.e-radio');
|
|
5823
|
+
var multiSelectElement = groupElem.querySelectorAll('.e-control.e-multiselect');
|
|
5824
|
+
var deleteElem = groupElem.querySelectorAll('.e-rule-delete');
|
|
5825
|
+
var lockElem = groupElem.querySelectorAll('.e-lock-rule');
|
|
5826
|
+
var cloneElem = groupElem.querySelectorAll('.e-clone-rule');
|
|
5827
|
+
var ruleElem = groupElem.querySelectorAll('.e-rule-container');
|
|
5828
|
+
for (var i = 0; i < deleteElem.length; i++) {
|
|
5829
|
+
if (isDisabled) {
|
|
5830
|
+
if (ruleElem[i] && ruleElem[i].classList.contains('e-disable')) {
|
|
5831
|
+
ruleElem[i].classList.add('e-disable');
|
|
5832
|
+
}
|
|
5833
|
+
deleteElem[i].disabled = true;
|
|
5834
|
+
if (cloneElem[i]) {
|
|
5835
|
+
cloneElem[i].disabled = true;
|
|
5836
|
+
}
|
|
5837
|
+
if (lockElem[i] !== target) {
|
|
5838
|
+
lockElem[i].disabled = true;
|
|
5839
|
+
lockElem[i].children[0].classList.remove('e-unlock');
|
|
5840
|
+
lockElem[i].children[0].classList.add('e-lock');
|
|
5841
|
+
}
|
|
5842
|
+
}
|
|
5843
|
+
else {
|
|
5844
|
+
if (ruleElem[i]) {
|
|
5845
|
+
ruleElem[i].classList.remove('e-disable');
|
|
5846
|
+
}
|
|
5847
|
+
if (cloneElem[i]) {
|
|
5848
|
+
cloneElem[i].disabled = false;
|
|
5849
|
+
}
|
|
5850
|
+
deleteElem[i].disabled = false;
|
|
5851
|
+
lockElem[i].disabled = false;
|
|
5852
|
+
lockElem[i].children[0].classList.remove('e-lock');
|
|
5853
|
+
lockElem[i].children[0].classList.add('e-unlock');
|
|
5854
|
+
}
|
|
5855
|
+
}
|
|
5856
|
+
var dropDownObj;
|
|
5857
|
+
var numericObj;
|
|
5858
|
+
var textObj;
|
|
5859
|
+
var dateObj;
|
|
5860
|
+
var checkBoxObj;
|
|
5861
|
+
var radioBtnObj;
|
|
5862
|
+
var multiSelectObj;
|
|
5863
|
+
for (var i = 0; i < ddlElement.length; i++) {
|
|
5864
|
+
dropDownObj = getComponent(ddlElement[i], 'dropdownlist');
|
|
5865
|
+
if (isDisabled) {
|
|
5866
|
+
dropDownObj.enabled = false;
|
|
5867
|
+
}
|
|
5868
|
+
else {
|
|
5869
|
+
dropDownObj.enabled = true;
|
|
5870
|
+
}
|
|
5871
|
+
}
|
|
5872
|
+
for (var i = 0; i < numericElement.length; i++) {
|
|
5873
|
+
numericObj = getComponent(numericElement[i], 'numerictextbox');
|
|
5874
|
+
if (isDisabled) {
|
|
5875
|
+
numericObj.enabled = false;
|
|
5876
|
+
}
|
|
5877
|
+
else {
|
|
5878
|
+
numericObj.enabled = true;
|
|
5879
|
+
}
|
|
5880
|
+
}
|
|
5881
|
+
for (var i = 0; i < textElement.length; i++) {
|
|
5882
|
+
textObj = getComponent(textElement[i], 'textbox');
|
|
5883
|
+
if (isDisabled) {
|
|
5884
|
+
textObj.enabled = false;
|
|
5885
|
+
}
|
|
5886
|
+
else {
|
|
5887
|
+
textObj.enabled = true;
|
|
5888
|
+
}
|
|
5889
|
+
}
|
|
5890
|
+
for (var i = 0; i < dateElement.length; i++) {
|
|
5891
|
+
dateObj = getComponent(dateElement[i], 'datepicker');
|
|
5892
|
+
if (isDisabled) {
|
|
5893
|
+
dateObj.enabled = false;
|
|
5894
|
+
}
|
|
5895
|
+
else {
|
|
5896
|
+
dateObj.enabled = true;
|
|
5897
|
+
}
|
|
5898
|
+
}
|
|
5899
|
+
for (var i = 0; i < checkboxElement.length; i++) {
|
|
5900
|
+
checkBoxObj = getComponent(checkboxElement[i], 'checkbox');
|
|
5901
|
+
if (isDisabled) {
|
|
5902
|
+
checkBoxObj.disabled = true;
|
|
5903
|
+
}
|
|
5904
|
+
else {
|
|
5905
|
+
checkBoxObj.disabled = false;
|
|
5906
|
+
}
|
|
5907
|
+
}
|
|
5908
|
+
for (var i = 0; i < radioBtnElement.length; i++) {
|
|
5909
|
+
radioBtnObj = getComponent(radioBtnElement[i], 'radio');
|
|
5910
|
+
if (isDisabled) {
|
|
5911
|
+
radioBtnObj.disabled = true;
|
|
5912
|
+
}
|
|
5913
|
+
else {
|
|
5914
|
+
radioBtnObj.disabled = false;
|
|
5915
|
+
}
|
|
5916
|
+
}
|
|
5917
|
+
for (var i = 0; i < multiSelectElement.length; i++) {
|
|
5918
|
+
multiSelectObj = getComponent(multiSelectElement[i], 'multiselect');
|
|
5919
|
+
if (isDisabled) {
|
|
5920
|
+
multiSelectObj.enabled = false;
|
|
5921
|
+
}
|
|
5922
|
+
else {
|
|
5923
|
+
multiSelectObj.enabled = true;
|
|
5924
|
+
}
|
|
5925
|
+
}
|
|
5926
|
+
};
|
|
5927
|
+
__decorate([
|
|
5928
|
+
Event()
|
|
5929
|
+
], QueryBuilder.prototype, "created", void 0);
|
|
5930
|
+
__decorate([
|
|
5931
|
+
Event()
|
|
5932
|
+
], QueryBuilder.prototype, "actionBegin", void 0);
|
|
5933
|
+
__decorate([
|
|
5934
|
+
Event()
|
|
5935
|
+
], QueryBuilder.prototype, "beforeChange", void 0);
|
|
5936
|
+
__decorate([
|
|
5937
|
+
Event()
|
|
5938
|
+
], QueryBuilder.prototype, "change", void 0);
|
|
5939
|
+
__decorate([
|
|
5940
|
+
Event()
|
|
5941
|
+
], QueryBuilder.prototype, "dataBound", void 0);
|
|
5942
|
+
__decorate([
|
|
5943
|
+
Event()
|
|
5944
|
+
], QueryBuilder.prototype, "ruleChange", void 0);
|
|
5945
|
+
__decorate([
|
|
5946
|
+
Complex({}, ShowButtons)
|
|
5947
|
+
], QueryBuilder.prototype, "showButtons", void 0);
|
|
5948
|
+
__decorate([
|
|
5949
|
+
Property(false)
|
|
5950
|
+
], QueryBuilder.prototype, "summaryView", void 0);
|
|
5951
|
+
__decorate([
|
|
5193
5952
|
Property(false)
|
|
5194
5953
|
], QueryBuilder.prototype, "allowValidation", void 0);
|
|
5195
5954
|
__decorate([
|
|
@@ -5246,6 +6005,15 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
5246
6005
|
__decorate([
|
|
5247
6006
|
Property(false)
|
|
5248
6007
|
], QueryBuilder.prototype, "readonly", void 0);
|
|
6008
|
+
__decorate([
|
|
6009
|
+
Property(true)
|
|
6010
|
+
], QueryBuilder.prototype, "addRuleToNewGroups", void 0);
|
|
6011
|
+
__decorate([
|
|
6012
|
+
Property(false)
|
|
6013
|
+
], QueryBuilder.prototype, "autoSelectField", void 0);
|
|
6014
|
+
__decorate([
|
|
6015
|
+
Property(true)
|
|
6016
|
+
], QueryBuilder.prototype, "autoSelectOperator", void 0);
|
|
5249
6017
|
__decorate([
|
|
5250
6018
|
Property('')
|
|
5251
6019
|
], QueryBuilder.prototype, "separator", void 0);
|
|
@@ -5258,6 +6026,694 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
5258
6026
|
return QueryBuilder;
|
|
5259
6027
|
}(Component));
|
|
5260
6028
|
|
|
6029
|
+
var QueryLibrary = /** @__PURE__ @class */ (function () {
|
|
6030
|
+
function QueryLibrary(parent) {
|
|
6031
|
+
this.parent = parent;
|
|
6032
|
+
this.addEventListener();
|
|
6033
|
+
}
|
|
6034
|
+
QueryLibrary.prototype.destroy = function () {
|
|
6035
|
+
if (this.parent.isDestroyed) {
|
|
6036
|
+
return;
|
|
6037
|
+
}
|
|
6038
|
+
this.removeEventListener();
|
|
6039
|
+
};
|
|
6040
|
+
QueryLibrary.prototype.addEventListener = function () {
|
|
6041
|
+
if (this.parent.isDestroyed) {
|
|
6042
|
+
return;
|
|
6043
|
+
}
|
|
6044
|
+
this.parent.on('query-library', this.queryLibrary, this);
|
|
6045
|
+
this.parent.on('destroyed', this.destroy, this);
|
|
6046
|
+
};
|
|
6047
|
+
QueryLibrary.prototype.removeEventListener = function () {
|
|
6048
|
+
this.parent.off('query-library', this.queryLibrary);
|
|
6049
|
+
this.parent.off('destroyed', this.destroy);
|
|
6050
|
+
};
|
|
6051
|
+
QueryLibrary.prototype.queryLibrary = function (args) {
|
|
6052
|
+
switch (args.prop) {
|
|
6053
|
+
case 'getMongoFromRules':
|
|
6054
|
+
args.value['obj']['mongoQuery'] = this.getMongoFromRules(args.value['rule'], args.value['mongoQuery']);
|
|
6055
|
+
break;
|
|
6056
|
+
case 'mongoParser':
|
|
6057
|
+
this.mongoParser(args.value['mongoQuery'], args.value['rule'], args.value['mongoLocale']);
|
|
6058
|
+
break;
|
|
6059
|
+
case 'getParameterSql':
|
|
6060
|
+
args.value['obj']['sql'] = this.getParameterSql(args.value['rule']);
|
|
6061
|
+
break;
|
|
6062
|
+
case 'getNamedParameterSql':
|
|
6063
|
+
args.value['obj']['sql'] = this.getNamedParameterSql(args.value['rule']);
|
|
6064
|
+
break;
|
|
6065
|
+
case 'convertParamSqlToSql':
|
|
6066
|
+
args.value['obj']['sql'] = this.convertParamSqlToSql(args.value['sql']);
|
|
6067
|
+
break;
|
|
6068
|
+
case 'convertNamedParamSqlToSql':
|
|
6069
|
+
args.value['obj']['sql'] = this.convertNamedParamSqlToSql(args.value['sql']);
|
|
6070
|
+
break;
|
|
6071
|
+
}
|
|
6072
|
+
};
|
|
6073
|
+
QueryLibrary.prototype.getMongoFromRules = function (rule, mongoQuery) {
|
|
6074
|
+
mongoQuery = '{';
|
|
6075
|
+
if (rule.condition === 'or') {
|
|
6076
|
+
mongoQuery += '"$or":[';
|
|
6077
|
+
mongoQuery = this.convertMongoQuery(rule.rules, mongoQuery) + ']';
|
|
6078
|
+
}
|
|
6079
|
+
else {
|
|
6080
|
+
mongoQuery += '"$and":[';
|
|
6081
|
+
mongoQuery = this.convertMongoQuery(rule.rules, mongoQuery) + ']';
|
|
6082
|
+
}
|
|
6083
|
+
mongoQuery += '}';
|
|
6084
|
+
return mongoQuery;
|
|
6085
|
+
};
|
|
6086
|
+
QueryLibrary.prototype.getOperatorFromMongoOperator = function (operator) {
|
|
6087
|
+
var operatorValue;
|
|
6088
|
+
switch (operator) {
|
|
6089
|
+
case '$ne':
|
|
6090
|
+
operatorValue = 'notequal';
|
|
6091
|
+
break;
|
|
6092
|
+
case '$gt':
|
|
6093
|
+
operatorValue = 'greaterthan';
|
|
6094
|
+
break;
|
|
6095
|
+
case '$gte':
|
|
6096
|
+
operatorValue = 'greaterthanorequal';
|
|
6097
|
+
break;
|
|
6098
|
+
case '$lt':
|
|
6099
|
+
operatorValue = 'lessthan';
|
|
6100
|
+
break;
|
|
6101
|
+
case '$lte':
|
|
6102
|
+
operatorValue = 'lessthanorequal';
|
|
6103
|
+
break;
|
|
6104
|
+
case '$nin':
|
|
6105
|
+
operatorValue = 'notin';
|
|
6106
|
+
break;
|
|
6107
|
+
}
|
|
6108
|
+
return operatorValue;
|
|
6109
|
+
};
|
|
6110
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6111
|
+
QueryLibrary.prototype.convertMongoQuery = function (rules, mongoQuery) {
|
|
6112
|
+
var _this = this;
|
|
6113
|
+
var i = 0;
|
|
6114
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6115
|
+
rules.forEach(function (item) {
|
|
6116
|
+
i++;
|
|
6117
|
+
mongoQuery += '{';
|
|
6118
|
+
if (item.rules !== undefined) {
|
|
6119
|
+
if (item.condition === 'or') {
|
|
6120
|
+
mongoQuery += ' "$or":[';
|
|
6121
|
+
mongoQuery = _this.convertMongoQuery(item.rules, mongoQuery) + ']';
|
|
6122
|
+
}
|
|
6123
|
+
else {
|
|
6124
|
+
mongoQuery += ' "$and":[';
|
|
6125
|
+
mongoQuery = _this.convertMongoQuery(item.rules, mongoQuery) + ']';
|
|
6126
|
+
}
|
|
6127
|
+
}
|
|
6128
|
+
var itVal = item.type === 'string' && item.operator !== 'in' && item.operator !== 'notin' && item.value && item.value.trim() !== '' ? item.value.replace(/'/g, '\\') : '';
|
|
6129
|
+
if (item.type === 'string' && (item.operator === 'in' || item.operator === 'notin') && item.value && item.value.length === 1) {
|
|
6130
|
+
itVal = item.value[0].replace(/'/g, '\\');
|
|
6131
|
+
}
|
|
6132
|
+
var field = item.field ? item.field.substring(0) : '';
|
|
6133
|
+
switch (item.operator) {
|
|
6134
|
+
case 'contains':
|
|
6135
|
+
mongoQuery += '"' + field + '":{"$regex":"' + itVal + '"}';
|
|
6136
|
+
break;
|
|
6137
|
+
case 'notcontains':
|
|
6138
|
+
mongoQuery += '"' + field + '":{"$not":{"$regex":"' + item.value + '"}}';
|
|
6139
|
+
break;
|
|
6140
|
+
case 'startswith':
|
|
6141
|
+
mongoQuery += '"' + field + '":{"$regex":"^' + itVal + '"}';
|
|
6142
|
+
break;
|
|
6143
|
+
case 'notstartswith':
|
|
6144
|
+
mongoQuery += '"' + field + '":{"$not":{"$regex":"^' + item.value + '"}}';
|
|
6145
|
+
break;
|
|
6146
|
+
case 'endswith':
|
|
6147
|
+
mongoQuery += '"' + field + '":{"$regex":"' + itVal + '$"}';
|
|
6148
|
+
break;
|
|
6149
|
+
case 'notendswith':
|
|
6150
|
+
mongoQuery += '"' + field + '":{"$not":{"$regex":"' + item.value + '$"}}';
|
|
6151
|
+
break;
|
|
6152
|
+
case 'isnull':
|
|
6153
|
+
mongoQuery += '"' + field + '": null';
|
|
6154
|
+
break;
|
|
6155
|
+
case 'isnotnull':
|
|
6156
|
+
mongoQuery += '"' + field + '":{"$ne": null}';
|
|
6157
|
+
break;
|
|
6158
|
+
case 'isempty':
|
|
6159
|
+
mongoQuery += '"' + field + '": ""';
|
|
6160
|
+
break;
|
|
6161
|
+
case 'isnotempty':
|
|
6162
|
+
mongoQuery += '"' + field + '":{"$ne": ""}';
|
|
6163
|
+
break;
|
|
6164
|
+
case 'equal':
|
|
6165
|
+
if (item.type === 'string') {
|
|
6166
|
+
mongoQuery += '"' + field + '":"' + itVal + '"';
|
|
6167
|
+
}
|
|
6168
|
+
else if (item.type === 'date') {
|
|
6169
|
+
mongoQuery += '"' + field + '":"' + item.value + '"';
|
|
6170
|
+
}
|
|
6171
|
+
else if (item.type === 'boolean') {
|
|
6172
|
+
mongoQuery += '"' + field + '":' + item.value + '';
|
|
6173
|
+
}
|
|
6174
|
+
else {
|
|
6175
|
+
mongoQuery += '"' + field + '":' + item.value + '';
|
|
6176
|
+
}
|
|
6177
|
+
break;
|
|
6178
|
+
case 'notequal':
|
|
6179
|
+
if (item.type === 'string') {
|
|
6180
|
+
mongoQuery += '"' + field + '":{"$ne":"' + itVal + '"}';
|
|
6181
|
+
}
|
|
6182
|
+
else if (item.type === 'date') {
|
|
6183
|
+
mongoQuery += '"' + field + '":{"$ne":"' + item.value + '"}';
|
|
6184
|
+
}
|
|
6185
|
+
else {
|
|
6186
|
+
mongoQuery += '"' + field + '":{"$ne":' + item.value + '}';
|
|
6187
|
+
}
|
|
6188
|
+
break;
|
|
6189
|
+
case 'in':
|
|
6190
|
+
if (item.type === 'string') {
|
|
6191
|
+
if (item.value.length > 1) {
|
|
6192
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6193
|
+
var s = item.value.map(function (x, j) { return (j < item.value.length ? "\"" + x + "\"" : ''); }).toString();
|
|
6194
|
+
s = s.endsWith(',') ? s.substring(0, s.length - 1) : s;
|
|
6195
|
+
mongoQuery += '"' + field + '": { "$in": [' + s + ']}';
|
|
6196
|
+
}
|
|
6197
|
+
else {
|
|
6198
|
+
mongoQuery += '"' + field + '": { "$in": ["' + itVal + '"]}';
|
|
6199
|
+
}
|
|
6200
|
+
}
|
|
6201
|
+
else if (item.type === 'number') {
|
|
6202
|
+
if (item.value.length > 1) {
|
|
6203
|
+
mongoQuery += '"' + field + '": { "$in": [' + item.value.toString() + ']}';
|
|
6204
|
+
}
|
|
6205
|
+
else {
|
|
6206
|
+
mongoQuery += '"' + field + '": { "$in": [' + item.value + ']}';
|
|
6207
|
+
}
|
|
6208
|
+
}
|
|
6209
|
+
break;
|
|
6210
|
+
case 'notin':
|
|
6211
|
+
if (item.type === 'string') {
|
|
6212
|
+
if (item.value.length > 1) {
|
|
6213
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6214
|
+
var s = item.value.map(function (x, j) { return (j < item.value.length ? "\"" + x + "\"" : ''); }).toString();
|
|
6215
|
+
s = s.endsWith(',') ? s.substring(0, s.length - 1) : s;
|
|
6216
|
+
mongoQuery += '"' + field + '": { "$nin": [' + s + ']}';
|
|
6217
|
+
}
|
|
6218
|
+
else {
|
|
6219
|
+
mongoQuery += '"' + field + '": { "$nin": ["' + itVal + '"]}';
|
|
6220
|
+
}
|
|
6221
|
+
}
|
|
6222
|
+
else if (item.type === 'number') {
|
|
6223
|
+
if (item.value.length > 1) {
|
|
6224
|
+
mongoQuery += '"' + field + '": { "$nin": [' + item.value.toString() + ']}';
|
|
6225
|
+
}
|
|
6226
|
+
else {
|
|
6227
|
+
mongoQuery += '"' + field + '": { "$nin": [' + item.value + ']}';
|
|
6228
|
+
}
|
|
6229
|
+
}
|
|
6230
|
+
break;
|
|
6231
|
+
case 'greaterthan':
|
|
6232
|
+
if (item.type === 'number') {
|
|
6233
|
+
mongoQuery += '"' + field + '": { "$gt": ' + item.value + '}';
|
|
6234
|
+
}
|
|
6235
|
+
else {
|
|
6236
|
+
mongoQuery += '"' + field + '": { "$gt": "' + item.value + '"}';
|
|
6237
|
+
}
|
|
6238
|
+
break;
|
|
6239
|
+
case 'greaterthanorequal':
|
|
6240
|
+
if (item.type === 'number') {
|
|
6241
|
+
mongoQuery += '"' + field + '": { "$gte": ' + item.value + '}';
|
|
6242
|
+
}
|
|
6243
|
+
else {
|
|
6244
|
+
mongoQuery += '"' + field + '": { "$gte": "' + item.value + '"}';
|
|
6245
|
+
}
|
|
6246
|
+
break;
|
|
6247
|
+
case 'between':
|
|
6248
|
+
if (item.type === 'number') {
|
|
6249
|
+
mongoQuery += '"' + field + '": {"$gte":' + item.value[0] + ', "$lte":' + item.value[1] + '}';
|
|
6250
|
+
}
|
|
6251
|
+
else {
|
|
6252
|
+
mongoQuery += '"' + field + '": {"$gte": "' + item.value[0] + '", "$lte": "' + item.value[1] + '"}';
|
|
6253
|
+
}
|
|
6254
|
+
break;
|
|
6255
|
+
case 'notbetween':
|
|
6256
|
+
if (item.type === 'number') {
|
|
6257
|
+
mongoQuery += '"$or":[{"' + field + '": {"$lt":' + item.value[0] + '}}, {"' + field + '": {"$gt":' + item.value[1] + '}}]';
|
|
6258
|
+
}
|
|
6259
|
+
else {
|
|
6260
|
+
mongoQuery += '"$or":[{"' + field + '": {"$lt": "' + item.value[0] + '"}}, {"' + field + '": {"$gt": "' + item.value[1] + '"}}]';
|
|
6261
|
+
}
|
|
6262
|
+
break;
|
|
6263
|
+
case 'lessthan':
|
|
6264
|
+
if (item.type === 'number') {
|
|
6265
|
+
mongoQuery += '"' + field + '": { "$lt": ' + item.value + '}';
|
|
6266
|
+
}
|
|
6267
|
+
else {
|
|
6268
|
+
mongoQuery += '"' + field + '": { "$lt": "' + item.value + '"}';
|
|
6269
|
+
}
|
|
6270
|
+
break;
|
|
6271
|
+
case 'lessthanorequal':
|
|
6272
|
+
if (item.type === 'number') {
|
|
6273
|
+
mongoQuery += '"' + field + '": { "$lte": ' + item.value + '}';
|
|
6274
|
+
}
|
|
6275
|
+
else {
|
|
6276
|
+
mongoQuery += '"' + field + '": { "$lte": "' + item.value + '"}';
|
|
6277
|
+
}
|
|
6278
|
+
break;
|
|
6279
|
+
}
|
|
6280
|
+
mongoQuery += '}';
|
|
6281
|
+
if (rules.length !== i) {
|
|
6282
|
+
mongoQuery += ',';
|
|
6283
|
+
}
|
|
6284
|
+
});
|
|
6285
|
+
return mongoQuery;
|
|
6286
|
+
};
|
|
6287
|
+
QueryLibrary.prototype.mongoParser = function (mongoQuery, rule, mongoLocale) {
|
|
6288
|
+
var mongoList;
|
|
6289
|
+
if (Object.keys(mongoQuery).indexOf('$and') > -1) {
|
|
6290
|
+
mongoList = mongoQuery['$and'];
|
|
6291
|
+
rule.condition = 'and';
|
|
6292
|
+
}
|
|
6293
|
+
else if (Object.keys(mongoQuery).indexOf('$or') > -1) {
|
|
6294
|
+
mongoList = mongoQuery['$or'];
|
|
6295
|
+
rule.condition = 'or';
|
|
6296
|
+
}
|
|
6297
|
+
rule.rules = [];
|
|
6298
|
+
this.mongoRecursion(mongoList, rule.rules, mongoLocale);
|
|
6299
|
+
};
|
|
6300
|
+
QueryLibrary.prototype.mongoRecursion = function (mongoList, rules, mongoLocale) {
|
|
6301
|
+
var operatorValue;
|
|
6302
|
+
var type;
|
|
6303
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6304
|
+
var stringValue;
|
|
6305
|
+
var key;
|
|
6306
|
+
var betweenValue;
|
|
6307
|
+
var condition;
|
|
6308
|
+
var value;
|
|
6309
|
+
var subRules;
|
|
6310
|
+
var rule;
|
|
6311
|
+
var keyObj;
|
|
6312
|
+
var ruleValue;
|
|
6313
|
+
for (var i = 0, len = mongoList.length; i < len; i++) {
|
|
6314
|
+
var betweenOperatorArray = [];
|
|
6315
|
+
var inOperatorArray = [];
|
|
6316
|
+
condition = Object.keys(mongoList[i])[0];
|
|
6317
|
+
value = mongoList[i][condition];
|
|
6318
|
+
if (condition === '$and') {
|
|
6319
|
+
if (this.parent.enableNotCondition) {
|
|
6320
|
+
subRules = { condition: condition.replace('$', ''), rules: [], not: false };
|
|
6321
|
+
}
|
|
6322
|
+
else {
|
|
6323
|
+
subRules = { condition: condition.replace('$', ''), rules: [] };
|
|
6324
|
+
}
|
|
6325
|
+
rules.push(subRules);
|
|
6326
|
+
this.mongoRecursion(mongoList[i][condition], rules[rules.length - 1].rules, mongoLocale);
|
|
6327
|
+
}
|
|
6328
|
+
else if (condition === '$or') {
|
|
6329
|
+
var notBetween = void 0;
|
|
6330
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len
|
|
6331
|
+
var innerObject = [];
|
|
6332
|
+
var keys = [];
|
|
6333
|
+
var firstKey = [];
|
|
6334
|
+
var secondKey = [];
|
|
6335
|
+
var innerKeys = [];
|
|
6336
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len
|
|
6337
|
+
var firstValue = [];
|
|
6338
|
+
var secondValue = [];
|
|
6339
|
+
var innerFirstValue = [];
|
|
6340
|
+
var innerSecondValue = [];
|
|
6341
|
+
if (Array.isArray(value) && value.length === 2) {
|
|
6342
|
+
keys = Object.keys(value);
|
|
6343
|
+
innerFirstValue = value[keys[0]];
|
|
6344
|
+
innerSecondValue = value[keys[1]];
|
|
6345
|
+
if (typeof innerFirstValue === 'object') {
|
|
6346
|
+
innerObject = Object.keys(innerFirstValue)[0];
|
|
6347
|
+
innerKeys = Object.keys(innerFirstValue[Object.keys(innerFirstValue)[0]]);
|
|
6348
|
+
firstKey = innerKeys[0];
|
|
6349
|
+
secondKey = Object.keys(innerSecondValue[Object.keys(innerSecondValue)[0]])[0];
|
|
6350
|
+
if (firstKey === '$lt' && secondKey === '$gt') {
|
|
6351
|
+
operatorValue = 'notbetween';
|
|
6352
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
6353
|
+
firstValue = innerFirstValue[innerObject][firstKey];
|
|
6354
|
+
// eslint-disable-next-line security/detect-object-injection
|
|
6355
|
+
secondValue = innerSecondValue[innerObject][secondKey];
|
|
6356
|
+
type = typeof firstValue === 'number' ? 'number' : 'date';
|
|
6357
|
+
ruleValue = [firstValue, secondValue];
|
|
6358
|
+
rule = { field: innerObject, label: innerObject, value: ruleValue, operator: operatorValue, type: type };
|
|
6359
|
+
rules.push(rule);
|
|
6360
|
+
notBetween = true;
|
|
6361
|
+
}
|
|
6362
|
+
}
|
|
6363
|
+
}
|
|
6364
|
+
if (!notBetween) {
|
|
6365
|
+
if (this.parent.enableNotCondition) {
|
|
6366
|
+
subRules = { condition: condition.replace('$', ''), rules: [], not: false };
|
|
6367
|
+
}
|
|
6368
|
+
else {
|
|
6369
|
+
subRules = { condition: condition.replace('$', ''), rules: [] };
|
|
6370
|
+
}
|
|
6371
|
+
rules.push(subRules);
|
|
6372
|
+
this.mongoRecursion(mongoList[i][condition], rules[rules.length - 1].rules, mongoLocale);
|
|
6373
|
+
}
|
|
6374
|
+
}
|
|
6375
|
+
else {
|
|
6376
|
+
value = mongoList[i][condition];
|
|
6377
|
+
if (value === null) { // isnull operator
|
|
6378
|
+
operatorValue = 'isnull';
|
|
6379
|
+
}
|
|
6380
|
+
if (typeof value === 'boolean') { // boolean type values
|
|
6381
|
+
operatorValue = 'equal';
|
|
6382
|
+
type = 'boolean';
|
|
6383
|
+
ruleValue = value;
|
|
6384
|
+
}
|
|
6385
|
+
if (typeof (value) === 'number') {
|
|
6386
|
+
ruleValue = value;
|
|
6387
|
+
type = 'number';
|
|
6388
|
+
operatorValue = 'equal';
|
|
6389
|
+
}
|
|
6390
|
+
else if (typeof (value) === 'object' && value !== null) {
|
|
6391
|
+
keyObj = Object.keys(value);
|
|
6392
|
+
for (var i_1 = 0; i_1 < keyObj.length; i_1++) {
|
|
6393
|
+
key = keyObj[i_1];
|
|
6394
|
+
stringValue = (value)[keyObj[i_1]];
|
|
6395
|
+
if (key === '$ne' && isNullOrUndefined(stringValue)) { // not null operator
|
|
6396
|
+
operatorValue = 'isnotnull';
|
|
6397
|
+
ruleValue = null;
|
|
6398
|
+
}
|
|
6399
|
+
if (key === '$ne' && typeof stringValue === 'boolean') { // not equal operator for boolean
|
|
6400
|
+
operatorValue = 'notequal';
|
|
6401
|
+
ruleValue = stringValue;
|
|
6402
|
+
type = 'boolean';
|
|
6403
|
+
}
|
|
6404
|
+
if (keyObj.length >= 2 && keyObj[i_1]) {
|
|
6405
|
+
if (typeof (stringValue) == 'object') { // between and notbetween operators
|
|
6406
|
+
operatorValue = 'notbetween';
|
|
6407
|
+
condition = Object.keys(stringValue)[0];
|
|
6408
|
+
betweenValue = [Object.keys(stringValue[condition])[0]];
|
|
6409
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6410
|
+
betweenOperatorArray.push(stringValue[condition][betweenValue]);
|
|
6411
|
+
type = 'number';
|
|
6412
|
+
}
|
|
6413
|
+
else {
|
|
6414
|
+
operatorValue = 'between';
|
|
6415
|
+
betweenOperatorArray.push(stringValue);
|
|
6416
|
+
}
|
|
6417
|
+
if (typeof (stringValue) === 'number') {
|
|
6418
|
+
type = 'number';
|
|
6419
|
+
}
|
|
6420
|
+
}
|
|
6421
|
+
else if (typeof (stringValue) === 'object' && stringValue !== null) { // "in" and "notin" operator
|
|
6422
|
+
if (key === '$not' && Object.keys(stringValue)[0] === '$regex') {
|
|
6423
|
+
if (stringValue['$regex'].indexOf('^') > -1) {
|
|
6424
|
+
operatorValue = 'notstartswith';
|
|
6425
|
+
ruleValue = stringValue['$regex'].replace('^', '');
|
|
6426
|
+
}
|
|
6427
|
+
else if (stringValue['$regex'].indexOf('$') > -1) {
|
|
6428
|
+
operatorValue = 'notendswith';
|
|
6429
|
+
ruleValue = stringValue['$regex'].replace('$', '');
|
|
6430
|
+
}
|
|
6431
|
+
else {
|
|
6432
|
+
operatorValue = 'notcontains';
|
|
6433
|
+
ruleValue = stringValue['$regex'];
|
|
6434
|
+
}
|
|
6435
|
+
}
|
|
6436
|
+
else {
|
|
6437
|
+
operatorValue = key === '$in' ? 'in' : 'notin';
|
|
6438
|
+
inOperatorArray = stringValue;
|
|
6439
|
+
type = typeof (stringValue[0]) === 'number' ? 'number' : 'string';
|
|
6440
|
+
}
|
|
6441
|
+
}
|
|
6442
|
+
else if (typeof (stringValue) === 'number') { // number type values
|
|
6443
|
+
operatorValue = this.getOperatorFromMongoOperator(key);
|
|
6444
|
+
type = 'number';
|
|
6445
|
+
ruleValue = stringValue;
|
|
6446
|
+
}
|
|
6447
|
+
if (typeof (stringValue) === 'string') { // string type values
|
|
6448
|
+
if (key === '$regex') {
|
|
6449
|
+
operatorValue = 'contains';
|
|
6450
|
+
ruleValue = stringValue;
|
|
6451
|
+
type = 'string';
|
|
6452
|
+
}
|
|
6453
|
+
if (key === '$ne') { // not equal
|
|
6454
|
+
if (stringValue !== null && stringValue.length > 0 && isNaN(Date.parse(stringValue))) {
|
|
6455
|
+
operatorValue = 'notequal';
|
|
6456
|
+
ruleValue = stringValue;
|
|
6457
|
+
}
|
|
6458
|
+
else if (isNullOrUndefined(stringValue)) { // is not null operator
|
|
6459
|
+
operatorValue = 'isnotnull';
|
|
6460
|
+
ruleValue = stringValue;
|
|
6461
|
+
}
|
|
6462
|
+
else if (stringValue === '') { // is not empty operator
|
|
6463
|
+
operatorValue = 'isnotempty';
|
|
6464
|
+
ruleValue = stringValue;
|
|
6465
|
+
}
|
|
6466
|
+
type = 'string';
|
|
6467
|
+
}
|
|
6468
|
+
if (stringValue.indexOf('^') > -1) {
|
|
6469
|
+
operatorValue = 'startswith';
|
|
6470
|
+
ruleValue = stringValue.replace('^', '');
|
|
6471
|
+
type = 'string';
|
|
6472
|
+
}
|
|
6473
|
+
if (stringValue.indexOf('$') > -1 && key !== '$not') {
|
|
6474
|
+
operatorValue = 'endswith';
|
|
6475
|
+
ruleValue = stringValue.replace('$', '');
|
|
6476
|
+
type = 'string';
|
|
6477
|
+
}
|
|
6478
|
+
if (!isNaN(Date.parse(stringValue))) { // Date type operators
|
|
6479
|
+
operatorValue = operatorValue || this.getOperatorFromMongoOperator(key);
|
|
6480
|
+
type = 'date';
|
|
6481
|
+
ruleValue = stringValue;
|
|
6482
|
+
}
|
|
6483
|
+
}
|
|
6484
|
+
}
|
|
6485
|
+
}
|
|
6486
|
+
else if (value && typeof (value) === 'string' && !isNaN(Date.parse(value))) {
|
|
6487
|
+
operatorValue = 'equal';
|
|
6488
|
+
ruleValue = value;
|
|
6489
|
+
type = 'date';
|
|
6490
|
+
}
|
|
6491
|
+
else if (typeof (value) === 'string' && value !== '' && value !== 'true' && value !== 'false') {
|
|
6492
|
+
operatorValue = 'equal';
|
|
6493
|
+
ruleValue = value;
|
|
6494
|
+
type = 'string';
|
|
6495
|
+
}
|
|
6496
|
+
else if (typeof (value) === 'string' && value === '') {
|
|
6497
|
+
operatorValue = 'isempty';
|
|
6498
|
+
ruleValue = value;
|
|
6499
|
+
type = 'string';
|
|
6500
|
+
}
|
|
6501
|
+
if (betweenOperatorArray && betweenOperatorArray.length > 1) { // between opertor value
|
|
6502
|
+
rule = { field: condition, label: condition, value: betweenOperatorArray, operator: operatorValue, type: type };
|
|
6503
|
+
}
|
|
6504
|
+
else if (inOperatorArray && inOperatorArray.length > 1) { // in operator value
|
|
6505
|
+
rule = { field: condition, label: condition, value: inOperatorArray, operator: operatorValue, type: type };
|
|
6506
|
+
}
|
|
6507
|
+
else {
|
|
6508
|
+
rule = { field: condition, label: condition, value: ruleValue, operator: operatorValue, type: type };
|
|
6509
|
+
}
|
|
6510
|
+
rules.push(rule);
|
|
6511
|
+
operatorValue = '';
|
|
6512
|
+
}
|
|
6513
|
+
}
|
|
6514
|
+
};
|
|
6515
|
+
QueryLibrary.prototype.convertParamSqlToSql = function (sql) {
|
|
6516
|
+
var paramSql = sql.sql;
|
|
6517
|
+
var paramValues = sql.params;
|
|
6518
|
+
var parts = paramSql.split('?');
|
|
6519
|
+
var normalSql = parts[0];
|
|
6520
|
+
for (var i = 0; i < paramValues.length; i++) {
|
|
6521
|
+
normalSql += (typeof (paramValues[i]) === 'string' ? "'" + paramValues[i] + "'" + parts[i + 1] : paramValues[i] + parts[i + 1]);
|
|
6522
|
+
}
|
|
6523
|
+
if (normalSql.length >= 2 && normalSql[0] === '(' && normalSql[normalSql.length - 1] === ')') {
|
|
6524
|
+
normalSql = normalSql.slice(1, -1);
|
|
6525
|
+
}
|
|
6526
|
+
normalSql = normalSql.replace(/!= ''(?! =)/g, 'IS NOT EMPTY').replace(/= ''/g, 'IS EMPTY');
|
|
6527
|
+
return normalSql;
|
|
6528
|
+
};
|
|
6529
|
+
QueryLibrary.prototype.convertNamedParamSqlToSql = function (sql) {
|
|
6530
|
+
var namedParamSql = sql.sql;
|
|
6531
|
+
var params = sql.params;
|
|
6532
|
+
var normalSql = namedParamSql;
|
|
6533
|
+
Object.keys(params).forEach(function (paramName) {
|
|
6534
|
+
var paramValue = params[paramName];
|
|
6535
|
+
paramName = ':' + paramName;
|
|
6536
|
+
normalSql = normalSql.replace(paramName, typeof (paramValue) === 'string' ? "'" + paramValue + "'" : String(paramValue));
|
|
6537
|
+
});
|
|
6538
|
+
if (normalSql.length >= 2 && normalSql[0] === '(' && normalSql[normalSql.length - 1] === ')') {
|
|
6539
|
+
normalSql = normalSql.slice(1, -1);
|
|
6540
|
+
}
|
|
6541
|
+
normalSql = normalSql.replace(/!= ''(?! =)/g, 'IS NOT EMPTY').replace(/= ''/g, 'IS EMPTY');
|
|
6542
|
+
return normalSql;
|
|
6543
|
+
};
|
|
6544
|
+
QueryLibrary.prototype.getParameterSql = function (qbrule) {
|
|
6545
|
+
var qbRule = extend({}, qbrule, null, true);
|
|
6546
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6547
|
+
var value = this.updateRuleValue(qbRule, false);
|
|
6548
|
+
return this.getParameterSQLVal(this.parent.getSqlFromRules(qbRule), value['ruleVal']);
|
|
6549
|
+
};
|
|
6550
|
+
QueryLibrary.prototype.getNamedParameterSql = function (qbrule) {
|
|
6551
|
+
var qbRule = extend({}, qbrule, null, true);
|
|
6552
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6553
|
+
var value = this.updateRuleValue(qbRule, true);
|
|
6554
|
+
return this.getNamedParameterSQLVal(this.parent.getSqlFromRules(qbRule), value['namedRuleVal']);
|
|
6555
|
+
};
|
|
6556
|
+
QueryLibrary.prototype.getParameterSQLVal = function (content, ruleValue) {
|
|
6557
|
+
var replacedString = content.replace(/[%']/g, '');
|
|
6558
|
+
return { sql: '(' + replacedString + ')', params: ruleValue };
|
|
6559
|
+
};
|
|
6560
|
+
QueryLibrary.prototype.getNamedParameterSQLVal = function (content, ruleValue) {
|
|
6561
|
+
var replacedString = content.replace(/[%']/g, '');
|
|
6562
|
+
return { sql: '(' + replacedString + ')', params: ruleValue };
|
|
6563
|
+
};
|
|
6564
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6565
|
+
QueryLibrary.prototype.updateRuleValue = function (rule, isNamedParameter) {
|
|
6566
|
+
var ruleVal = [];
|
|
6567
|
+
var namedRuleVal = {};
|
|
6568
|
+
var namedParameters = [];
|
|
6569
|
+
return this.updateValue(rule.rules, isNamedParameter, ruleVal, namedRuleVal, namedParameters);
|
|
6570
|
+
};
|
|
6571
|
+
QueryLibrary.prototype.updateValue = function (rules, isNamedParameter, ruleVal,
|
|
6572
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6573
|
+
namedRuleVal, namedParameters) {
|
|
6574
|
+
if (isNullOrUndefined(rules)) {
|
|
6575
|
+
return { ruleVal: ruleVal, namedRuleVal: namedRuleVal };
|
|
6576
|
+
}
|
|
6577
|
+
for (var i = 0; i < rules.length; i++) {
|
|
6578
|
+
if (rules[i].rules) {
|
|
6579
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6580
|
+
var value = this.updateValue(rules[i].rules, isNamedParameter, ruleVal, namedRuleVal, namedParameters);
|
|
6581
|
+
ruleVal = value['ruleVal'];
|
|
6582
|
+
namedRuleVal = value['namedRuleVal'];
|
|
6583
|
+
}
|
|
6584
|
+
else {
|
|
6585
|
+
var namedField = void 0;
|
|
6586
|
+
if (rules[i].value instanceof Array) {
|
|
6587
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6588
|
+
for (var j = 0; j < (rules[i].value).length; j++) {
|
|
6589
|
+
if (isNamedParameter) {
|
|
6590
|
+
namedField = this.getNamedParameter(rules[i].field, namedParameters);
|
|
6591
|
+
}
|
|
6592
|
+
if (!isNullOrUndefined(rules[i].value[j])) {
|
|
6593
|
+
if (rules[i].type === 'string' || rules[i].type === 'date') {
|
|
6594
|
+
if (isNamedParameter) {
|
|
6595
|
+
namedRuleVal[namedField] = rules[i].value[j];
|
|
6596
|
+
}
|
|
6597
|
+
else {
|
|
6598
|
+
ruleVal.push(rules[i].value[j]);
|
|
6599
|
+
}
|
|
6600
|
+
}
|
|
6601
|
+
else {
|
|
6602
|
+
if (isNamedParameter) {
|
|
6603
|
+
namedRuleVal[namedField] = rules[i].value[j];
|
|
6604
|
+
}
|
|
6605
|
+
else {
|
|
6606
|
+
ruleVal.push(rules[i].value[j]);
|
|
6607
|
+
}
|
|
6608
|
+
}
|
|
6609
|
+
}
|
|
6610
|
+
if (isNamedParameter) {
|
|
6611
|
+
rules[i].value[j] = ':' + namedField;
|
|
6612
|
+
}
|
|
6613
|
+
else {
|
|
6614
|
+
rules[i].value[j] = '?';
|
|
6615
|
+
}
|
|
6616
|
+
}
|
|
6617
|
+
}
|
|
6618
|
+
else {
|
|
6619
|
+
if (isNamedParameter) {
|
|
6620
|
+
namedField = this.getNamedParameter(rules[i].field, namedParameters);
|
|
6621
|
+
}
|
|
6622
|
+
if (rules[i].operator.indexOf('null') < 1) {
|
|
6623
|
+
if (rules[i].type !== 'string' || (rules[i].type === 'string' && (rules[i].value !== '' || rules[i].value === 0))) {
|
|
6624
|
+
if (rules[i].type === 'string' || rules[i].type === 'date') {
|
|
6625
|
+
if (rules[i].operator.indexOf('empty') < 1) {
|
|
6626
|
+
var value = rules[i].value.toString();
|
|
6627
|
+
switch (rules[i].operator) {
|
|
6628
|
+
case 'startswith':
|
|
6629
|
+
case 'notstartswith':
|
|
6630
|
+
value = value + '%';
|
|
6631
|
+
break;
|
|
6632
|
+
case 'endswith':
|
|
6633
|
+
case 'notendswith':
|
|
6634
|
+
value = '%' + value;
|
|
6635
|
+
break;
|
|
6636
|
+
case 'contains':
|
|
6637
|
+
case 'notcontains':
|
|
6638
|
+
value = '%' + value + '%';
|
|
6639
|
+
break;
|
|
6640
|
+
}
|
|
6641
|
+
if (isNamedParameter) {
|
|
6642
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6643
|
+
namedRuleVal[namedField] = value;
|
|
6644
|
+
}
|
|
6645
|
+
else {
|
|
6646
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6647
|
+
ruleVal.push(value);
|
|
6648
|
+
}
|
|
6649
|
+
}
|
|
6650
|
+
else {
|
|
6651
|
+
if (isNamedParameter) {
|
|
6652
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6653
|
+
namedRuleVal[namedField] = '';
|
|
6654
|
+
}
|
|
6655
|
+
else {
|
|
6656
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6657
|
+
ruleVal.push('');
|
|
6658
|
+
}
|
|
6659
|
+
if (rules[i].operator === 'isempty') {
|
|
6660
|
+
rules[i].operator = 'equal';
|
|
6661
|
+
}
|
|
6662
|
+
else {
|
|
6663
|
+
rules[i].operator = 'notequal';
|
|
6664
|
+
}
|
|
6665
|
+
}
|
|
6666
|
+
}
|
|
6667
|
+
else {
|
|
6668
|
+
if (!isNullOrUndefined(rules[i].value)) {
|
|
6669
|
+
if (isNamedParameter) {
|
|
6670
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6671
|
+
namedRuleVal[namedField] = rules[i].value;
|
|
6672
|
+
}
|
|
6673
|
+
else {
|
|
6674
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6675
|
+
ruleVal.push(rules[i].value);
|
|
6676
|
+
}
|
|
6677
|
+
}
|
|
6678
|
+
}
|
|
6679
|
+
if (isNamedParameter) {
|
|
6680
|
+
rules[i].value = ':' + namedField;
|
|
6681
|
+
}
|
|
6682
|
+
else {
|
|
6683
|
+
rules[i].value = '?';
|
|
6684
|
+
}
|
|
6685
|
+
}
|
|
6686
|
+
}
|
|
6687
|
+
}
|
|
6688
|
+
}
|
|
6689
|
+
}
|
|
6690
|
+
return { ruleVal: ruleVal, namedRuleVal: namedRuleVal };
|
|
6691
|
+
};
|
|
6692
|
+
QueryLibrary.prototype.getNamedParameter = function (field, namedParameters) {
|
|
6693
|
+
var newField = null;
|
|
6694
|
+
if (namedParameters.length > 0) {
|
|
6695
|
+
for (var i = namedParameters.length - 1; i >= 0; i--) {
|
|
6696
|
+
var currField = namedParameters[i];
|
|
6697
|
+
if (currField.indexOf(field) > -1) {
|
|
6698
|
+
var idx = parseInt(currField.split('_')[1], 10) + 1;
|
|
6699
|
+
newField = field + '_' + idx;
|
|
6700
|
+
namedParameters.push(newField);
|
|
6701
|
+
break;
|
|
6702
|
+
}
|
|
6703
|
+
}
|
|
6704
|
+
}
|
|
6705
|
+
if (!newField) {
|
|
6706
|
+
newField = field + '_1';
|
|
6707
|
+
namedParameters.push(newField);
|
|
6708
|
+
}
|
|
6709
|
+
return newField;
|
|
6710
|
+
};
|
|
6711
|
+
QueryLibrary.prototype.getModuleName = function () {
|
|
6712
|
+
return 'query-library';
|
|
6713
|
+
};
|
|
6714
|
+
return QueryLibrary;
|
|
6715
|
+
}());
|
|
6716
|
+
|
|
5261
6717
|
/**
|
|
5262
6718
|
* QueryBuilder modules
|
|
5263
6719
|
*/
|
|
@@ -5266,5 +6722,5 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
5266
6722
|
* QueryBuilder all modules
|
|
5267
6723
|
*/
|
|
5268
6724
|
|
|
5269
|
-
export { Columns, Rule, Value, ShowButtons, QueryBuilder };
|
|
6725
|
+
export { Columns, Rule, Value, ShowButtons, QueryBuilder, QueryLibrary };
|
|
5270
6726
|
//# sourceMappingURL=ej2-querybuilder.es5.js.map
|