@syncfusion/ej2-querybuilder 24.2.8 → 25.1.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/dist/ej2-querybuilder.min.js +2 -2
- package/dist/ej2-querybuilder.umd.min.js +2 -2
- package/dist/ej2-querybuilder.umd.min.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es2015.js +1615 -157
- package/dist/es6/ej2-querybuilder.es2015.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es5.js +1617 -157
- package/dist/es6/ej2-querybuilder.es5.js.map +1 -1
- package/dist/global/ej2-querybuilder.min.js +2 -2
- package/dist/global/ej2-querybuilder.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +12 -12
- package/src/global.js +2 -0
- package/src/query-builder/index.d.ts +1 -0
- package/src/query-builder/index.js +1 -0
- package/src/query-builder/query-builder-model.d.ts +69 -1
- package/src/query-builder/query-builder.d.ts +189 -4
- package/src/query-builder/query-builder.js +903 -130
- package/src/query-builder/query-library.d.ts +24 -0
- package/src/query-builder/query-library.js +689 -0
- package/styles/bootstrap-dark.css +29 -12
- package/styles/bootstrap.css +29 -12
- package/styles/bootstrap4.css +25 -12
- package/styles/bootstrap5-dark.css +35 -11
- package/styles/bootstrap5.css +35 -11
- package/styles/fabric-dark.css +25 -12
- package/styles/fabric.css +25 -12
- package/styles/fluent-dark.css +39 -11
- package/styles/fluent.css +39 -11
- package/styles/highcontrast-light.css +25 -12
- package/styles/highcontrast.css +25 -12
- package/styles/material-dark.css +25 -12
- package/styles/material.css +25 -12
- package/styles/material3-dark.css +25 -12
- package/styles/material3.css +25 -12
- package/styles/query-builder/_bds-definition.scss +107 -0
- package/styles/query-builder/_layout.scss +37 -7
- package/styles/query-builder/_theme.scss +16 -1
- package/styles/query-builder/bootstrap-dark.css +29 -12
- package/styles/query-builder/bootstrap.css +29 -12
- package/styles/query-builder/bootstrap4.css +25 -12
- package/styles/query-builder/bootstrap5-dark.css +35 -11
- package/styles/query-builder/bootstrap5.css +35 -11
- package/styles/query-builder/fabric-dark.css +25 -12
- package/styles/query-builder/fabric.css +25 -12
- package/styles/query-builder/fluent-dark.css +39 -11
- package/styles/query-builder/fluent.css +39 -11
- package/styles/query-builder/highcontrast-light.css +25 -12
- package/styles/query-builder/highcontrast.css +25 -12
- package/styles/query-builder/icons/_bds.scss +7 -0
- package/styles/query-builder/material-dark.css +25 -12
- package/styles/query-builder/material.css +25 -12
- package/styles/query-builder/material3-dark.css +25 -12
- package/styles/query-builder/material3.css +25 -12
- package/styles/query-builder/tailwind-dark.css +30 -11
- package/styles/query-builder/tailwind.css +30 -11
- package/styles/tailwind-dark.css +30 -11
- package/styles/tailwind.css +30 -11
|
@@ -127,6 +127,9 @@ var Rule = /** @class */ (function (_super) {
|
|
|
127
127
|
__decorate([
|
|
128
128
|
Property(false)
|
|
129
129
|
], Rule.prototype, "not", void 0);
|
|
130
|
+
__decorate([
|
|
131
|
+
Property(false)
|
|
132
|
+
], Rule.prototype, "isLocked", void 0);
|
|
130
133
|
return Rule;
|
|
131
134
|
}(ChildProperty));
|
|
132
135
|
export { Rule };
|
|
@@ -164,6 +167,18 @@ var ShowButtons = /** @class */ (function (_super) {
|
|
|
164
167
|
function ShowButtons() {
|
|
165
168
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
166
169
|
}
|
|
170
|
+
__decorate([
|
|
171
|
+
Property(false)
|
|
172
|
+
], ShowButtons.prototype, "cloneRule", void 0);
|
|
173
|
+
__decorate([
|
|
174
|
+
Property(false)
|
|
175
|
+
], ShowButtons.prototype, "cloneGroup", void 0);
|
|
176
|
+
__decorate([
|
|
177
|
+
Property(false)
|
|
178
|
+
], ShowButtons.prototype, "lockRule", void 0);
|
|
179
|
+
__decorate([
|
|
180
|
+
Property(false)
|
|
181
|
+
], ShowButtons.prototype, "lockGroup", void 0);
|
|
167
182
|
__decorate([
|
|
168
183
|
Property(true)
|
|
169
184
|
], ShowButtons.prototype, "ruleDelete", void 0);
|
|
@@ -182,7 +197,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
182
197
|
var _this = _super.call(this, options, element) || this;
|
|
183
198
|
_this.isReadonly = true;
|
|
184
199
|
_this.fields = { text: 'label', value: 'field' };
|
|
185
|
-
_this.updatedRule = { not: false, condition: 'and' };
|
|
200
|
+
_this.updatedRule = { not: false, condition: 'and', isLocked: false };
|
|
186
201
|
_this.isLocale = false;
|
|
187
202
|
_this.isRefreshed = false;
|
|
188
203
|
_this.isNotified = false;
|
|
@@ -193,6 +208,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
193
208
|
_this.isDestroy = false;
|
|
194
209
|
_this.isGetNestedData = false;
|
|
195
210
|
_this.isCustomOprCols = [];
|
|
211
|
+
_this.groupCounter = 0;
|
|
212
|
+
_this.lockItems = [];
|
|
213
|
+
_this.groupIndex = -1;
|
|
214
|
+
_this.ruleIndex = -1;
|
|
215
|
+
_this.isLastGroup = false;
|
|
216
|
+
_this.cloneGrpBtnClick = false;
|
|
217
|
+
_this.isMiddleGroup = false;
|
|
218
|
+
_this.cloneRuleBtnClick = false;
|
|
196
219
|
MultiSelect.Inject(CheckBoxSelection);
|
|
197
220
|
return _this;
|
|
198
221
|
}
|
|
@@ -245,6 +268,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
245
268
|
QueryBuilder.prototype.getModuleName = function () {
|
|
246
269
|
return 'query-builder';
|
|
247
270
|
};
|
|
271
|
+
QueryBuilder.prototype.requiredModules = function () {
|
|
272
|
+
var modules = [];
|
|
273
|
+
modules.push({
|
|
274
|
+
member: 'query-library',
|
|
275
|
+
args: [this]
|
|
276
|
+
});
|
|
277
|
+
return modules;
|
|
278
|
+
};
|
|
248
279
|
QueryBuilder.prototype.GetRootColumnName = function (field) {
|
|
249
280
|
return this.separator ? field.split(this.separator)[0] : field;
|
|
250
281
|
};
|
|
@@ -438,31 +469,51 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
438
469
|
txtareaElem.style.height = txtareaElem.scrollHeight + 'px';
|
|
439
470
|
}
|
|
440
471
|
if (target.tagName === 'BUTTON' && target.className.indexOf('e-qb-toggle') < 0) {
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
this.
|
|
457
|
-
this.
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
472
|
+
switch (true) {
|
|
473
|
+
case target.className.indexOf('e-removerule') > -1:
|
|
474
|
+
this.actionButton = target;
|
|
475
|
+
this.deleteRule(target);
|
|
476
|
+
break;
|
|
477
|
+
case target.className.indexOf('e-clone-rule-btn') > -1:
|
|
478
|
+
this.actionButton = target;
|
|
479
|
+
this.cloneRuleBtnClick = true;
|
|
480
|
+
this.ruleClone(target);
|
|
481
|
+
break;
|
|
482
|
+
case target.className.indexOf('e-lock-rule-btn') > -1:
|
|
483
|
+
this.actionButton = target;
|
|
484
|
+
this.ruleLock(target);
|
|
485
|
+
break;
|
|
486
|
+
case target.className.indexOf('e-lock-grp-btn') > -1:
|
|
487
|
+
this.actionButton = target;
|
|
488
|
+
this.groupLock(target);
|
|
489
|
+
break;
|
|
490
|
+
case target.className.indexOf('e-clone-grp-btn') > -1:
|
|
491
|
+
this.actionButton = target;
|
|
492
|
+
this.cloneGrpBtnClick = true;
|
|
493
|
+
this.groupClone(closest(target, '.e-group-container'));
|
|
494
|
+
break;
|
|
495
|
+
case target.className.indexOf('e-deletegroup') > -1:
|
|
496
|
+
this.actionButton = target;
|
|
497
|
+
this.deleteGroup(closest(target, '.e-group-container'));
|
|
498
|
+
break;
|
|
499
|
+
case target.className.indexOf('e-edit-rule') > -1:
|
|
500
|
+
var animation = new Animation({ duration: 1000, delay: 0 });
|
|
501
|
+
animation.animate('.e-query-builder', { name: 'SlideLeftIn' });
|
|
502
|
+
document.getElementById(this.element.id + '_summary_content').style.display = 'none';
|
|
503
|
+
if (this.element.querySelectorAll('.e-group-container').length < 1) {
|
|
504
|
+
this.addGroupElement(false, this.element, this.rule.condition, false, this.rule.not);
|
|
505
|
+
var mRules = extend({}, this.rule, {}, true);
|
|
506
|
+
this.setGroupRules(mRules);
|
|
462
507
|
this.renderSummaryCollapse();
|
|
463
508
|
}
|
|
464
|
-
|
|
465
|
-
|
|
509
|
+
else {
|
|
510
|
+
var groupElem = this.element.querySelector('.e-group-container');
|
|
511
|
+
if (groupElem.querySelectorAll('.e-collapse-rule').length < 1) {
|
|
512
|
+
this.renderSummaryCollapse();
|
|
513
|
+
}
|
|
514
|
+
groupElem.style.display = 'block';
|
|
515
|
+
}
|
|
516
|
+
break;
|
|
466
517
|
}
|
|
467
518
|
}
|
|
468
519
|
else if ((target.tagName === 'LABEL' && target.parentElement.className.indexOf('e-btn-group') > -1) ||
|
|
@@ -562,7 +613,18 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
562
613
|
else {
|
|
563
614
|
ruleElem = this.createElement('div', { attrs: { class: 'e-rule-container' } });
|
|
564
615
|
ruleElem.setAttribute('id', target.id + '_rule' + this.ruleIdCounter);
|
|
565
|
-
|
|
616
|
+
if (this.showButtons.cloneRule && this.cloneRuleBtnClick) {
|
|
617
|
+
if (this.ruleIndex < 0) {
|
|
618
|
+
ruleListElem.appendChild(ruleElem);
|
|
619
|
+
}
|
|
620
|
+
else {
|
|
621
|
+
ruleListElem.insertBefore(ruleElem, ruleListElem.children[this.ruleIndex + 1]); // added clone rule to next position
|
|
622
|
+
}
|
|
623
|
+
this.cloneRuleBtnClick = false;
|
|
624
|
+
}
|
|
625
|
+
else {
|
|
626
|
+
ruleListElem.appendChild(ruleElem);
|
|
627
|
+
}
|
|
566
628
|
this.ruleIdCounter++;
|
|
567
629
|
}
|
|
568
630
|
if (column && column.ruleTemplate && rule) {
|
|
@@ -612,6 +674,21 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
612
674
|
elem = this.ruleElem.querySelector('.e-rule-field').cloneNode(true);
|
|
613
675
|
ruleElem.appendChild(elem);
|
|
614
676
|
}
|
|
677
|
+
if (this.showButtons.lockGroup) {
|
|
678
|
+
removeClass(ruleElem.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');
|
|
679
|
+
}
|
|
680
|
+
if (this.showButtons.lockRule) {
|
|
681
|
+
removeClass(ruleElem.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');
|
|
682
|
+
}
|
|
683
|
+
if (this.showButtons.cloneGroup) {
|
|
684
|
+
removeClass(ruleElem.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');
|
|
685
|
+
}
|
|
686
|
+
if (this.showButtons.cloneRule) {
|
|
687
|
+
removeClass(ruleElem.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');
|
|
688
|
+
}
|
|
689
|
+
if (this.showButtons.ruleDelete) {
|
|
690
|
+
removeClass(ruleElem.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');
|
|
691
|
+
}
|
|
615
692
|
if (column && column.ruleTemplate && rule) {
|
|
616
693
|
this.renderReactTemplates();
|
|
617
694
|
}
|
|
@@ -655,7 +732,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
655
732
|
else {
|
|
656
733
|
ruleElem = this.appendRuleElem(trgt, column, act, pId, 'field');
|
|
657
734
|
ruleElem.querySelector('.e-filter-input').setAttribute('id', ruleElem.id + '_filterkey');
|
|
658
|
-
var element = ruleElem.querySelector('
|
|
735
|
+
var element = ruleElem.querySelector('.e-rule-delete');
|
|
659
736
|
if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {
|
|
660
737
|
element.textContent = this.l10n.getConstant('Remove');
|
|
661
738
|
addClass([element], 'e-flat');
|
|
@@ -665,8 +742,11 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
665
742
|
addClass([element], 'e-round');
|
|
666
743
|
addClass([element], 'e-icon-btn');
|
|
667
744
|
element.setAttribute('title', this.l10n.getConstant('DeleteRule'));
|
|
668
|
-
|
|
669
|
-
ruleElem.querySelector('
|
|
745
|
+
var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-delete-icon' } });
|
|
746
|
+
ruleElem.querySelector('.e-rule-delete').appendChild(spanElement);
|
|
747
|
+
}
|
|
748
|
+
if (!this.showButtons.ruleDelete) {
|
|
749
|
+
element.classList.add('e-button-hide');
|
|
670
750
|
}
|
|
671
751
|
}
|
|
672
752
|
if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {
|
|
@@ -697,6 +777,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
697
777
|
if (this.separator && rule.field) {
|
|
698
778
|
ddlValue = this.GetRootColumnName(rule.field);
|
|
699
779
|
}
|
|
780
|
+
else if (this.autoSelectField) {
|
|
781
|
+
ddlValue = this.GetRootColumnName(rule.field);
|
|
782
|
+
}
|
|
700
783
|
else {
|
|
701
784
|
ddlValue = this.isImportRules ? this.GetRootColumnName(rule.field) : rule.field;
|
|
702
785
|
}
|
|
@@ -704,8 +787,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
704
787
|
dataSource: this.columns,
|
|
705
788
|
fields: this.fields, placeholder: this.l10n.getConstant('SelectField'),
|
|
706
789
|
popupHeight: ((this.columns.length > 5) ? height : 'auto'), close: this.fieldClose.bind(this, ruleElem.id + '_filterkey'),
|
|
707
|
-
change: this.changeField.bind(this), value: rule ? ddlValue : null, open: this.popupOpen.bind(this, true),
|
|
708
|
-
cssClass: 'qb-dropdownlist'
|
|
790
|
+
change: this.changeField.bind(this), value: rule ? ddlValue : null, open: this.popupOpen.bind(this, true), cssClass: 'qb-dropdownlist'
|
|
709
791
|
};
|
|
710
792
|
if (this.fieldModel) {
|
|
711
793
|
ddlField = __assign({}, ddlField, this.fieldModel);
|
|
@@ -795,12 +877,23 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
795
877
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
796
878
|
var custom = rule.custom;
|
|
797
879
|
if (Object.keys(rule).length) {
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
880
|
+
if (this.ruleIndex < 0) {
|
|
881
|
+
rules.rules.push({
|
|
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[rules.rules.length - 1].custom = custom;
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
else {
|
|
890
|
+
rules.rules.splice(this.ruleIndex + 1, 0, {
|
|
891
|
+
'field': rule.field, 'type': rule.type, 'label': rule.label, 'operator': rule.operator, value: rule.value
|
|
892
|
+
});
|
|
893
|
+
if (custom) {
|
|
894
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
895
|
+
rules.rules[this.ruleIndex + 1].custom = custom;
|
|
896
|
+
}
|
|
804
897
|
}
|
|
805
898
|
}
|
|
806
899
|
else {
|
|
@@ -808,6 +901,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
808
901
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
809
902
|
newRule.custom = custom;
|
|
810
903
|
}
|
|
904
|
+
if (this.autoSelectField) {
|
|
905
|
+
rule.field = newRule.field = this.rule.rules[0].field;
|
|
906
|
+
}
|
|
811
907
|
rules.rules.push(newRule);
|
|
812
908
|
}
|
|
813
909
|
}
|
|
@@ -1007,6 +1103,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1007
1103
|
QueryBuilder.prototype.ruleTemplate = function () {
|
|
1008
1104
|
var tempElem;
|
|
1009
1105
|
var clsName;
|
|
1106
|
+
var cloneClsName;
|
|
1107
|
+
var lockClsName;
|
|
1010
1108
|
var ruleElem = this.createElement('div');
|
|
1011
1109
|
var fieldElem = this.createElement('div', { attrs: { class: 'e-rule-field' } });
|
|
1012
1110
|
tempElem = this.createElement('div', { attrs: { class: 'e-rule-filter' } });
|
|
@@ -1018,6 +1116,24 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1018
1116
|
tempElem = this.createElement('div', { attrs: { class: 'e-rule-value' } });
|
|
1019
1117
|
fieldElem.appendChild(tempElem);
|
|
1020
1118
|
tempElem = this.createElement('div', { attrs: { class: 'e-rule-value-delete' } });
|
|
1119
|
+
if (this.showButtons.cloneRule) {
|
|
1120
|
+
cloneClsName = 'e-clone-rule-btn e-clone-rule e-css e-btn e-small e-round e-icon-btn';
|
|
1121
|
+
}
|
|
1122
|
+
else {
|
|
1123
|
+
cloneClsName = 'e-clone-rule-btn e-clone-rule e-css e-btn e-small e-round e-icon-btn e-button-hide';
|
|
1124
|
+
}
|
|
1125
|
+
if (this.showButtons.lockRule) {
|
|
1126
|
+
lockClsName = 'e-lock-rule-btn e-lock-rule e-css e-btn e-small e-round e-icons e-icon-btn';
|
|
1127
|
+
}
|
|
1128
|
+
else {
|
|
1129
|
+
lockClsName = 'e-lock-rule-btn e-lock-rule e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';
|
|
1130
|
+
}
|
|
1131
|
+
var cloneRuleBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('CloneRule'), type: 'button', class: cloneClsName } });
|
|
1132
|
+
var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-copy' } });
|
|
1133
|
+
cloneRuleBtnElem.appendChild(spanElement);
|
|
1134
|
+
var cloneLockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockRule'), type: 'button', class: lockClsName } });
|
|
1135
|
+
spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });
|
|
1136
|
+
cloneLockBtnElem.appendChild(spanElement);
|
|
1021
1137
|
if (this.showButtons.ruleDelete || isNullOrUndefined(this.showButtons.ruleDelete)) {
|
|
1022
1138
|
clsName = 'e-removerule e-rule-delete e-css e-btn e-small';
|
|
1023
1139
|
}
|
|
@@ -1025,6 +1141,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1025
1141
|
clsName = 'e-removerule e-rule-delete e-css e-btn e-small e-button-hide';
|
|
1026
1142
|
}
|
|
1027
1143
|
var delBtnElem = this.createElement('button', { attrs: { type: 'button', class: clsName } });
|
|
1144
|
+
tempElem.appendChild(cloneRuleBtnElem);
|
|
1145
|
+
tempElem.appendChild(cloneLockBtnElem);
|
|
1028
1146
|
tempElem.appendChild(delBtnElem);
|
|
1029
1147
|
fieldElem.appendChild(tempElem);
|
|
1030
1148
|
ruleElem.appendChild(fieldElem);
|
|
@@ -1094,9 +1212,6 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1094
1212
|
button.appendTo(dltGroupBtn);
|
|
1095
1213
|
dltGroupBtn.setAttribute('title', this.l10n.getConstant('DeleteGroup'));
|
|
1096
1214
|
rippleEffect(dltGroupBtn, { selector: '.deletegroup' });
|
|
1097
|
-
if (!this.headerTemplate) {
|
|
1098
|
-
groupElem.querySelector('.e-group-action').appendChild(dltGroupBtn);
|
|
1099
|
-
}
|
|
1100
1215
|
var ruleList = target.querySelector('.e-rule-list');
|
|
1101
1216
|
var childElems = ruleList.children;
|
|
1102
1217
|
var grpLen = 0;
|
|
@@ -1105,20 +1220,72 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1105
1220
|
grpLen += 1;
|
|
1106
1221
|
}
|
|
1107
1222
|
}
|
|
1108
|
-
|
|
1223
|
+
if (this.showButtons.cloneGroup && this.cloneGrpBtnClick) {
|
|
1224
|
+
if (this.groupIndex === (childElems.length - 1)) {
|
|
1225
|
+
ruleList.appendChild(groupElem);
|
|
1226
|
+
this.isLastGroup = true;
|
|
1227
|
+
}
|
|
1228
|
+
else {
|
|
1229
|
+
childElems[this.groupIndex + 1].parentNode.insertBefore(groupElem, childElems[this.groupIndex + 1]); // clone the element to nxt element
|
|
1230
|
+
this.isMiddleGroup = true;
|
|
1231
|
+
}
|
|
1232
|
+
}
|
|
1233
|
+
else {
|
|
1234
|
+
ruleList.appendChild(groupElem);
|
|
1235
|
+
}
|
|
1109
1236
|
var level = this.levelColl[target.id].slice(0);
|
|
1110
1237
|
level.push(grpLen);
|
|
1111
1238
|
this.levelColl[groupElem.id] = level;
|
|
1239
|
+
if (this.groupIndex > -1) {
|
|
1240
|
+
this.refreshLevelColl();
|
|
1241
|
+
}
|
|
1112
1242
|
if (!this.isImportRules) {
|
|
1113
1243
|
this.isAddSuccess = true;
|
|
1114
1244
|
this.addGroups([], target.id.replace(this.element.id + '_', ''));
|
|
1115
1245
|
this.isAddSuccess = false;
|
|
1116
|
-
if (isBtnClick) {
|
|
1246
|
+
if (isBtnClick && this.addRuleToNewGroups) {
|
|
1117
1247
|
this.addRuleElement(groupElem, {});
|
|
1118
1248
|
}
|
|
1119
1249
|
}
|
|
1250
|
+
if (!this.headerTemplate) {
|
|
1251
|
+
var lockClsName = '';
|
|
1252
|
+
if (this.showButtons.cloneGroup) {
|
|
1253
|
+
lockClsName = 'e-clone-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';
|
|
1254
|
+
}
|
|
1255
|
+
else {
|
|
1256
|
+
lockClsName = 'e-clone-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';
|
|
1257
|
+
}
|
|
1258
|
+
var cloneBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('CloneGroup'), type: 'button', class: lockClsName } });
|
|
1259
|
+
var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-copy' } });
|
|
1260
|
+
cloneBtnElem.appendChild(spanElement);
|
|
1261
|
+
groupElem.querySelector('.e-group-action').appendChild(cloneBtnElem);
|
|
1262
|
+
if (this.showButtons.lockGroup) {
|
|
1263
|
+
lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';
|
|
1264
|
+
}
|
|
1265
|
+
else {
|
|
1266
|
+
lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';
|
|
1267
|
+
}
|
|
1268
|
+
var lockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockGroup'), type: 'button', class: lockClsName } });
|
|
1269
|
+
var lockSpanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });
|
|
1270
|
+
lockBtnElem.appendChild(lockSpanElement);
|
|
1271
|
+
groupElem.querySelector('.e-group-action').appendChild(lockBtnElem);
|
|
1272
|
+
groupElem.querySelector('.e-group-action').appendChild(dltGroupBtn);
|
|
1273
|
+
}
|
|
1120
1274
|
}
|
|
1121
1275
|
else {
|
|
1276
|
+
if (!this.headerTemplate) {
|
|
1277
|
+
var lockClsName = '';
|
|
1278
|
+
if (this.showButtons.lockGroup) {
|
|
1279
|
+
lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';
|
|
1280
|
+
}
|
|
1281
|
+
else {
|
|
1282
|
+
lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';
|
|
1283
|
+
}
|
|
1284
|
+
var lockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockGroup'), type: 'button', class: lockClsName } });
|
|
1285
|
+
var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });
|
|
1286
|
+
lockBtnElem.appendChild(spanElement);
|
|
1287
|
+
groupElem.querySelector('.e-group-action').appendChild(lockBtnElem);
|
|
1288
|
+
}
|
|
1122
1289
|
target.appendChild(groupElem);
|
|
1123
1290
|
this.levelColl[groupElem.id] = [0];
|
|
1124
1291
|
}
|
|
@@ -1376,6 +1543,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1376
1543
|
if (this.fieldMode === 'Default') {
|
|
1377
1544
|
dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdownlist');
|
|
1378
1545
|
this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);
|
|
1546
|
+
if (this.selectedColumn.columns) {
|
|
1547
|
+
dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-rule-sub-filter .e-dropdownlist'), 'dropdownlist');
|
|
1548
|
+
this.selectedColumn = this.getColumn(dropDownObj.value);
|
|
1549
|
+
}
|
|
1379
1550
|
}
|
|
1380
1551
|
else {
|
|
1381
1552
|
dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdowntree');
|
|
@@ -1450,7 +1621,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1450
1621
|
this.prevItemData = args.itemData;
|
|
1451
1622
|
var fieldElem = closest(args.element, '.e-rule-filter') || closest(args.element, '.e-rule-sub-filter');
|
|
1452
1623
|
var column = this.fieldMode === 'DropdownTree' ? this.getColumn(args.value[0]) : this.getColumn(args.value);
|
|
1453
|
-
if (this.fieldMode === 'DropdownTree' && fieldElem
|
|
1624
|
+
if (this.fieldMode === 'DropdownTree' && fieldElem !== null) {
|
|
1454
1625
|
var ddtElem = fieldElem.querySelector('.e-dropdowntree.e-control');
|
|
1455
1626
|
var ddt = getComponent(ddtElem, 'dropdowntree');
|
|
1456
1627
|
if (column) {
|
|
@@ -1522,7 +1693,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1522
1693
|
var filterElem = closest(ddlArgs.element, '.e-rule-filter');
|
|
1523
1694
|
filterElem = filterElem ? filterElem : closest(ddlArgs.element, '.e-rule-sub-filter');
|
|
1524
1695
|
var ddlObj = getComponent(ddlArgs.element, 'dropdownlist');
|
|
1525
|
-
if (this.fieldMode === 'DropdownTree' && filterElem
|
|
1696
|
+
if (this.fieldMode === 'DropdownTree' && filterElem !== null) {
|
|
1526
1697
|
ddlObj = getComponent(ddlArgs.element, 'dropdowntree');
|
|
1527
1698
|
}
|
|
1528
1699
|
var element = closest(ddlArgs.element, '.e-group-container');
|
|
@@ -1651,7 +1822,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1651
1822
|
this.GetRootColumnName(rule.field) === this.GetRootColumnName(this.previousColumn.field))) {
|
|
1652
1823
|
var subField = this.selectedColumn.columns;
|
|
1653
1824
|
for (var i = 0; i < subField.length; i++) {
|
|
1654
|
-
if (rule.field === subField[i].field
|
|
1825
|
+
if (rule.field === subField[i].field) {
|
|
1655
1826
|
dropDownList.value = subField[i].field;
|
|
1656
1827
|
this.selectedColumn = subField[i];
|
|
1657
1828
|
subFieldValue = true;
|
|
@@ -1690,7 +1861,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1690
1861
|
rule.value = [];
|
|
1691
1862
|
}
|
|
1692
1863
|
}
|
|
1693
|
-
else if (typeof rule.value === 'object' && rule.value
|
|
1864
|
+
else if (typeof rule.value === 'object' && rule.value !== null) {
|
|
1694
1865
|
rule.value = rule.value.length > 0 ? rule.value[0] : rule.type === 'number' ? 0 : '';
|
|
1695
1866
|
}
|
|
1696
1867
|
if (ddlArgs.previousItemData) {
|
|
@@ -1717,6 +1888,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1717
1888
|
if (valElem && this.getColumn(rule.field).template) {
|
|
1718
1889
|
filterElem = operatorElem.previousElementSibling;
|
|
1719
1890
|
}
|
|
1891
|
+
if (valElem.children.length == 0) {
|
|
1892
|
+
filterElem = operatorElem.previousElementSibling;
|
|
1893
|
+
}
|
|
1720
1894
|
this.changeRuleValues(filterElem, rule, tempRule, ddlArgs);
|
|
1721
1895
|
}
|
|
1722
1896
|
};
|
|
@@ -1747,7 +1921,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1747
1921
|
tempRule.type = this.fieldMode === 'DropdownTree' ? this.getColumn(fieldObj.value[0]).type :
|
|
1748
1922
|
this.getColumn(fieldObj.value).type;
|
|
1749
1923
|
var itemData = ddlArgs.itemData;
|
|
1750
|
-
|
|
1924
|
+
if (ddlObj.value !== '') {
|
|
1925
|
+
this.renderValues(operatorElem, itemData, ddlArgs.previousItemData, true, rule, tempRule, ddlArgs.element);
|
|
1926
|
+
}
|
|
1751
1927
|
}
|
|
1752
1928
|
else {
|
|
1753
1929
|
var ruleId = closest(operatorElem, '.e-rule-container').id;
|
|
@@ -1761,7 +1937,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1761
1937
|
}
|
|
1762
1938
|
var height = (this.element.className.indexOf('e-device') > -1) ? '250px' : '200px';
|
|
1763
1939
|
var value = operatorList[0].value;
|
|
1764
|
-
|
|
1940
|
+
var ddlIdx = 0;
|
|
1941
|
+
if (!this.autoSelectOperator) {
|
|
1942
|
+
value = '';
|
|
1943
|
+
ddlIdx = -1;
|
|
1944
|
+
}
|
|
1945
|
+
if (this.isImportRules || (this.ruleIndex > -1 || this.groupIndex > -1)) {
|
|
1946
|
+
value = rule ? (rule.operator ? rule.operator : value) : value;
|
|
1947
|
+
}
|
|
1765
1948
|
var ddlOperator = void 0;
|
|
1766
1949
|
ddlOperator = {
|
|
1767
1950
|
dataSource: operatorList,
|
|
@@ -1769,7 +1952,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1769
1952
|
placeholder: this.l10n.getConstant('SelectOperator'),
|
|
1770
1953
|
popupHeight: ((operatorList.length > 5) ? height : 'auto'),
|
|
1771
1954
|
change: this.changeField.bind(this),
|
|
1772
|
-
index:
|
|
1955
|
+
index: ddlIdx,
|
|
1773
1956
|
value: value,
|
|
1774
1957
|
open: this.popupOpen.bind(this, false)
|
|
1775
1958
|
};
|
|
@@ -1783,7 +1966,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1783
1966
|
tempRule.type = this.selectedColumn.type;
|
|
1784
1967
|
tempRule.operator = rule.operator;
|
|
1785
1968
|
}
|
|
1786
|
-
|
|
1969
|
+
if (!isNullOrUndefined(value) && value !== '') {
|
|
1970
|
+
this.renderValues(operatorElem, this.selectedColumn, ddlArgs.previousItemData, false, rule, tempRule, ddlArgs.element);
|
|
1971
|
+
}
|
|
1972
|
+
else if (this.autoSelectField && this.autoSelectOperator) {
|
|
1973
|
+
this.renderValues(operatorElem, this.selectedColumn, ddlArgs.previousItemData, false, rule, tempRule, ddlArgs.element);
|
|
1974
|
+
}
|
|
1787
1975
|
}
|
|
1788
1976
|
}
|
|
1789
1977
|
if (!this.isImportRules) {
|
|
@@ -2145,14 +2333,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2145
2333
|
var columnData = this.getItemData(parentId);
|
|
2146
2334
|
var selectedValue;
|
|
2147
2335
|
var isTemplate = (typeof columnData.template === 'string');
|
|
2148
|
-
if (this.isImportRules || this.isPublic || isTemplate) {
|
|
2336
|
+
if (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate) {
|
|
2149
2337
|
selectedValue = rule.value;
|
|
2150
2338
|
}
|
|
2151
2339
|
else {
|
|
2152
2340
|
selectedValue = this.setDefaultValue(parentId, false, false);
|
|
2153
2341
|
}
|
|
2154
2342
|
if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {
|
|
2155
|
-
selectedVal = this.isImportRules ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2343
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2156
2344
|
this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
|
|
2157
2345
|
if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {
|
|
2158
2346
|
ruleValElem.style.width = '100%';
|
|
@@ -2164,7 +2352,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2164
2352
|
}
|
|
2165
2353
|
else {
|
|
2166
2354
|
if (operator === 'in' || operator === 'notin') {
|
|
2167
|
-
selectedVal = this.isImportRules ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2355
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2168
2356
|
selectedValue = selectedVal.join(',');
|
|
2169
2357
|
}
|
|
2170
2358
|
var txtBox = void 0;
|
|
@@ -2184,9 +2372,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2184
2372
|
QueryBuilder.prototype.renderNumberValue = function (parentId, rule, operator, idx, ruleValElem, itemData, length) {
|
|
2185
2373
|
var columnData = this.getItemData(parentId);
|
|
2186
2374
|
var isTemplate = (typeof columnData.template === 'string');
|
|
2187
|
-
var selectedVal = (this.isImportRules || this.isPublic || isTemplate) ? rule.value : this.setDefaultValue(parentId, false, true);
|
|
2375
|
+
var selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate) ? rule.value : this.setDefaultValue(parentId, false, true);
|
|
2188
2376
|
if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {
|
|
2189
|
-
selectedVal = this.isImportRules ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2377
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2190
2378
|
this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
|
|
2191
2379
|
if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {
|
|
2192
2380
|
ruleValElem.style.width = '100%';
|
|
@@ -2197,7 +2385,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2197
2385
|
}
|
|
2198
2386
|
}
|
|
2199
2387
|
else if (operator === 'in' || operator === 'notin') {
|
|
2200
|
-
selectedVal = this.isImportRules ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2388
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2201
2389
|
var selVal = selectedVal.join(',');
|
|
2202
2390
|
var txtInp = void 0;
|
|
2203
2391
|
txtInp = {
|
|
@@ -2470,8 +2658,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2470
2658
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2471
2659
|
: this.getColumn(filtObj.value);
|
|
2472
2660
|
this.selectedRule = column;
|
|
2661
|
+
var ddlObj = getComponent(target.querySelector('input'), 'dropdownlist');
|
|
2473
2662
|
if (isRender) {
|
|
2474
|
-
var ddlObj = getComponent(target.querySelector('input'), 'dropdownlist');
|
|
2475
2663
|
itemData = element.id.indexOf('operator') > -1 ? itemData : this.selectedRule;
|
|
2476
2664
|
if (itemData.operators) {
|
|
2477
2665
|
ddlObj.value = null;
|
|
@@ -2479,7 +2667,13 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2479
2667
|
ddlObj.dataSource = itemData.operators;
|
|
2480
2668
|
ddlObj.index = this.getOperatorIndex(ddlObj, rule);
|
|
2481
2669
|
ddlObj.value = tempRule.operator = ddlObj.dataSource[ddlObj.index].value;
|
|
2482
|
-
|
|
2670
|
+
if (!this.autoSelectOperator) {
|
|
2671
|
+
ddlObj.index = -1;
|
|
2672
|
+
tempRule.operator = ddlObj.value = '';
|
|
2673
|
+
}
|
|
2674
|
+
else {
|
|
2675
|
+
ddlObj.dataBind();
|
|
2676
|
+
}
|
|
2483
2677
|
}
|
|
2484
2678
|
}
|
|
2485
2679
|
var operator = tempRule.operator.toString();
|
|
@@ -2512,39 +2706,41 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2512
2706
|
this.validateValue(rule, closest(target, '.e-rule-container'));
|
|
2513
2707
|
this.destroyControls(target);
|
|
2514
2708
|
}
|
|
2515
|
-
if (
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
else {
|
|
2534
|
-
removeClass([target.nextElementSibling], 'e-template-value');
|
|
2535
|
-
var inputLen = 1;
|
|
2536
|
-
if (tempRule.type === 'boolean') {
|
|
2537
|
-
inputLen = this.selectedColumn.values ? this.selectedColumn.values.length : 2;
|
|
2709
|
+
if (this.isImportRules || (ddlObj && ddlObj.value !== '')) {
|
|
2710
|
+
if (column) {
|
|
2711
|
+
itemData.template = column.template;
|
|
2712
|
+
}
|
|
2713
|
+
if (itemData.template) {
|
|
2714
|
+
addClass([target.nextElementSibling], 'e-template-value');
|
|
2715
|
+
itemData.template = column.template;
|
|
2716
|
+
isTempRendered = this.setColumnTemplate(itemData, parentId, column.field, itemData.value ||
|
|
2717
|
+
operator, target, rule);
|
|
2718
|
+
}
|
|
2719
|
+
if (isTempRendered) {
|
|
2720
|
+
var parentElem = target.parentElement.querySelector('.e-rule-value');
|
|
2721
|
+
if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {
|
|
2722
|
+
parentElem.style.width = '100%';
|
|
2723
|
+
}
|
|
2724
|
+
else {
|
|
2725
|
+
parentElem.style.width = '200px';
|
|
2726
|
+
}
|
|
2538
2727
|
}
|
|
2539
2728
|
else {
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2729
|
+
removeClass([target.nextElementSibling], 'e-template-value');
|
|
2730
|
+
var inputLen = 1;
|
|
2731
|
+
if (tempRule.type === 'boolean') {
|
|
2732
|
+
inputLen = this.selectedColumn.values ? this.selectedColumn.values.length : 2;
|
|
2733
|
+
}
|
|
2734
|
+
else {
|
|
2735
|
+
inputLen = (operator && operator.toLowerCase().indexOf('between') > -1) ? 2 : 1;
|
|
2736
|
+
}
|
|
2737
|
+
for (var i = 0; i < inputLen; i++) {
|
|
2738
|
+
var valElem = this.createElement('input', { attrs: { type: 'text', id: parentId + '_valuekey' + i } });
|
|
2739
|
+
target.nextElementSibling.appendChild(valElem);
|
|
2740
|
+
}
|
|
2545
2741
|
}
|
|
2742
|
+
this.renderControls(target, itemData, rule, tempRule, isTempRendered);
|
|
2546
2743
|
}
|
|
2547
|
-
this.renderControls(target, itemData, rule, tempRule, isTempRendered);
|
|
2548
2744
|
}
|
|
2549
2745
|
else {
|
|
2550
2746
|
var parentElem = target.parentElement.querySelector('.e-rule-value');
|
|
@@ -2978,8 +3174,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2978
3174
|
var i;
|
|
2979
3175
|
var len;
|
|
2980
3176
|
var tooltip;
|
|
2981
|
-
var popupElement;
|
|
2982
3177
|
_super.prototype.destroy.call(this);
|
|
3178
|
+
var popupElement;
|
|
2983
3179
|
element = this.element.querySelectorAll('.e-addrulegroup');
|
|
2984
3180
|
len = element.length;
|
|
2985
3181
|
for (i = 0; i < len; i++) {
|
|
@@ -3065,7 +3261,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3065
3261
|
if (grouplen) {
|
|
3066
3262
|
this.isPublic = true;
|
|
3067
3263
|
for (var i = 0, len = groups.length; i < len; i++) {
|
|
3068
|
-
this.updatedRule = {
|
|
3264
|
+
this.updatedRule = { isLocked: groups[i].isLocked, condition: groups[i].condition,
|
|
3265
|
+
not: groups[i].not };
|
|
3069
3266
|
this.importRules(groups[i], groupElem, false, groups[i].not);
|
|
3070
3267
|
}
|
|
3071
3268
|
this.isPublic = false;
|
|
@@ -3073,15 +3270,27 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3073
3270
|
else {
|
|
3074
3271
|
var condition = 'and';
|
|
3075
3272
|
var not = false;
|
|
3273
|
+
var isLocked = false;
|
|
3076
3274
|
if (this.updatedRule) {
|
|
3077
3275
|
condition = this.updatedRule.condition;
|
|
3078
3276
|
not = this.updatedRule.not;
|
|
3277
|
+
isLocked = this.updatedRule.isLocked;
|
|
3079
3278
|
}
|
|
3080
|
-
if (this.
|
|
3081
|
-
|
|
3279
|
+
if (this.groupIndex < 0) {
|
|
3280
|
+
if (this.enableNotCondition) {
|
|
3281
|
+
rule.rules.push({ 'condition': condition, 'not': not, rules: [] });
|
|
3282
|
+
}
|
|
3283
|
+
else {
|
|
3284
|
+
rule.rules.push({ 'condition': condition, rules: [] });
|
|
3285
|
+
}
|
|
3082
3286
|
}
|
|
3083
3287
|
else {
|
|
3084
|
-
|
|
3288
|
+
if (this.enableNotCondition) {
|
|
3289
|
+
rule.rules.splice(this.groupIndex + 1, 0, { condition: condition, not: not, rules: [], isLocked: isLocked });
|
|
3290
|
+
}
|
|
3291
|
+
else {
|
|
3292
|
+
rule.rules.splice(this.groupIndex + 1, 0, { condition: condition, rules: [], isLocked: isLocked });
|
|
3293
|
+
}
|
|
3085
3294
|
}
|
|
3086
3295
|
}
|
|
3087
3296
|
if (!this.headerTemplate) {
|
|
@@ -3264,17 +3473,53 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3264
3473
|
this.refresh();
|
|
3265
3474
|
break;
|
|
3266
3475
|
case 'showButtons':
|
|
3267
|
-
if (newProp.showButtons.
|
|
3268
|
-
|
|
3476
|
+
if (!isNullOrUndefined(newProp.showButtons.lockGroup)) {
|
|
3477
|
+
if (newProp.showButtons.lockGroup) {
|
|
3478
|
+
removeClass(this.element.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');
|
|
3479
|
+
}
|
|
3480
|
+
else {
|
|
3481
|
+
addClass(this.element.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');
|
|
3482
|
+
}
|
|
3269
3483
|
}
|
|
3270
|
-
|
|
3271
|
-
|
|
3484
|
+
if (!isNullOrUndefined(newProp.showButtons.lockRule)) {
|
|
3485
|
+
if (newProp.showButtons.lockRule) {
|
|
3486
|
+
removeClass(this.element.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');
|
|
3487
|
+
}
|
|
3488
|
+
else {
|
|
3489
|
+
addClass(this.element.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');
|
|
3490
|
+
}
|
|
3491
|
+
}
|
|
3492
|
+
if (!isNullOrUndefined(newProp.showButtons.cloneGroup)) {
|
|
3493
|
+
if (newProp.showButtons.cloneGroup) {
|
|
3494
|
+
removeClass(this.element.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');
|
|
3495
|
+
}
|
|
3496
|
+
else {
|
|
3497
|
+
addClass(this.element.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');
|
|
3498
|
+
}
|
|
3272
3499
|
}
|
|
3273
|
-
if (newProp.showButtons.
|
|
3274
|
-
|
|
3500
|
+
if (!isNullOrUndefined(newProp.showButtons.cloneRule)) {
|
|
3501
|
+
if (newProp.showButtons.cloneRule) {
|
|
3502
|
+
removeClass(this.element.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');
|
|
3503
|
+
}
|
|
3504
|
+
else {
|
|
3505
|
+
addClass(this.element.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');
|
|
3506
|
+
}
|
|
3275
3507
|
}
|
|
3276
|
-
|
|
3277
|
-
|
|
3508
|
+
if (!isNullOrUndefined(newProp.showButtons.ruleDelete)) {
|
|
3509
|
+
if (newProp.showButtons.ruleDelete) {
|
|
3510
|
+
removeClass(this.element.querySelectorAll('.e-rule-delete'), 'e-button-hide');
|
|
3511
|
+
}
|
|
3512
|
+
else {
|
|
3513
|
+
addClass(this.element.querySelectorAll('.e-rule-delete'), 'e-button-hide');
|
|
3514
|
+
}
|
|
3515
|
+
}
|
|
3516
|
+
if (!isNullOrUndefined(newProp.showButtons.groupDelete)) {
|
|
3517
|
+
if (newProp.showButtons.groupDelete) {
|
|
3518
|
+
removeClass(this.element.querySelectorAll('.e-deletegroup'), 'e-button-hide');
|
|
3519
|
+
}
|
|
3520
|
+
else {
|
|
3521
|
+
addClass(this.element.querySelectorAll('.e-deletegroup'), 'e-button-hide');
|
|
3522
|
+
}
|
|
3278
3523
|
}
|
|
3279
3524
|
break;
|
|
3280
3525
|
case 'cssClass':
|
|
@@ -3351,8 +3596,11 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3351
3596
|
this.element.id = this.element.id || getUniqueID('ej2-querybuilder');
|
|
3352
3597
|
this.defaultLocale = {
|
|
3353
3598
|
StartsWith: 'Starts With',
|
|
3599
|
+
DoesNotStartWith: 'Does Not Start With',
|
|
3354
3600
|
EndsWith: 'Ends With',
|
|
3601
|
+
DoesNotEndWith: 'Does Not End With',
|
|
3355
3602
|
Contains: 'Contains',
|
|
3603
|
+
DoesNotContain: 'Does Not Contain',
|
|
3356
3604
|
NotLike: 'Not Like',
|
|
3357
3605
|
Like: 'Like',
|
|
3358
3606
|
Equal: 'Equal',
|
|
@@ -3386,7 +3634,13 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3386
3634
|
IsNotNull: 'Is Not Null',
|
|
3387
3635
|
True: 'true',
|
|
3388
3636
|
False: 'false',
|
|
3389
|
-
AddButton: 'Add Group/Condition'
|
|
3637
|
+
AddButton: 'Add Group/Condition',
|
|
3638
|
+
CloneGroup: 'Clone Group',
|
|
3639
|
+
LockGroup: 'Lock Group',
|
|
3640
|
+
CloneRule: 'Clone Rule',
|
|
3641
|
+
LockRule: 'Lock Rule',
|
|
3642
|
+
UnlockRule: 'Unlock Rule',
|
|
3643
|
+
UnlockGroup: 'Unlock Group'
|
|
3390
3644
|
};
|
|
3391
3645
|
this.l10n = new L10n('querybuilder', this.defaultLocale, this.locale);
|
|
3392
3646
|
this.intl = new Internationalization(this.locale);
|
|
@@ -3399,8 +3653,11 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3399
3653
|
this.customOperators = {
|
|
3400
3654
|
stringOperator: [
|
|
3401
3655
|
{ value: 'startswith', key: this.l10n.getConstant('StartsWith') },
|
|
3656
|
+
{ value: 'notstartswith', key: this.l10n.getConstant('DoesNotStartWith') },
|
|
3402
3657
|
{ value: 'endswith', key: this.l10n.getConstant('EndsWith') },
|
|
3658
|
+
{ value: 'notendswith', key: this.l10n.getConstant('DoesNotEndWith') },
|
|
3403
3659
|
{ value: 'contains', key: this.l10n.getConstant('Contains') },
|
|
3660
|
+
{ value: 'notcontains', key: this.l10n.getConstant('DoesNotContain') },
|
|
3404
3661
|
{ value: 'equal', key: this.l10n.getConstant('Equal') },
|
|
3405
3662
|
{ value: 'notequal', key: this.l10n.getConstant('NotEqual') },
|
|
3406
3663
|
{ value: 'in', key: this.l10n.getConstant('In') },
|
|
@@ -3414,7 +3671,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3414
3671
|
{ value: 'greaterthanorequal', key: this.l10n.getConstant('GreaterThanOrEqual') },
|
|
3415
3672
|
{ value: 'lessthan', key: this.l10n.getConstant('LessThan') },
|
|
3416
3673
|
{ value: 'lessthanorequal', key: this.l10n.getConstant('LessThanOrEqual') },
|
|
3417
|
-
{ value: 'notequal', key: this.l10n.getConstant('NotEqual') }
|
|
3674
|
+
{ value: 'notequal', key: this.l10n.getConstant('NotEqual') },
|
|
3675
|
+
{ value: 'between', key: this.l10n.getConstant('Between') },
|
|
3676
|
+
{ value: 'notbetween', key: this.l10n.getConstant('NotBetween') }
|
|
3418
3677
|
],
|
|
3419
3678
|
booleanOperator: [
|
|
3420
3679
|
{ value: 'equal', key: this.l10n.getConstant('Equal') },
|
|
@@ -3718,6 +3977,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3718
3977
|
if (!(rule.rules[0] && rule.rules[0].rules)) {
|
|
3719
3978
|
this.disableRuleCondition(groupElem, rule);
|
|
3720
3979
|
}
|
|
3980
|
+
var tooltipElem = this.element.querySelectorAll('.e-tooltip');
|
|
3981
|
+
for (var i_3 = 0; i_3 < tooltipElem.length; i_3++) {
|
|
3982
|
+
getComponent(tooltipElem[i_3], 'tooltip').refresh(tooltipElem[i_3]);
|
|
3983
|
+
}
|
|
3721
3984
|
if (!this.isImportRules) {
|
|
3722
3985
|
this.trigger('change', args);
|
|
3723
3986
|
}
|
|
@@ -3735,6 +3998,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3735
3998
|
this.setProperties({ rule: rule }, true);
|
|
3736
3999
|
rule = this.getRuleCollection(this.rule, false);
|
|
3737
4000
|
this.importRules(this.rule, this.element.querySelector('.e-group-container'), true, this.rule.not, isRoot);
|
|
4001
|
+
if (rule.isLocked) {
|
|
4002
|
+
var lockGrpTarget = this.element.querySelector('.e-group-container').querySelector('.e-lock-grp-btn');
|
|
4003
|
+
this.groupLock(lockGrpTarget);
|
|
4004
|
+
}
|
|
3738
4005
|
this.isImportRules = false;
|
|
3739
4006
|
};
|
|
3740
4007
|
QueryBuilder.prototype.keyBoardHandler = function (e) {
|
|
@@ -3830,7 +4097,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3830
4097
|
rule.value !== undefined)) || (customObj && customObj.isQuestion)) {
|
|
3831
4098
|
var condition = rule.condition;
|
|
3832
4099
|
rule = {
|
|
3833
|
-
'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value
|
|
4100
|
+
'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value,
|
|
4101
|
+
'isLocked': rule.isLocked
|
|
3834
4102
|
};
|
|
3835
4103
|
if (condition) {
|
|
3836
4104
|
rule.condition = condition;
|
|
@@ -3839,6 +4107,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3839
4107
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3840
4108
|
rule.custom = customObj;
|
|
3841
4109
|
}
|
|
4110
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3842
4111
|
if ((rule.operator === 'in' || rule.operator === 'notin') && rule.value && rule.value.length === 0) {
|
|
3843
4112
|
rule = {};
|
|
3844
4113
|
}
|
|
@@ -3864,10 +4133,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3864
4133
|
}
|
|
3865
4134
|
else {
|
|
3866
4135
|
if (this.enableNotCondition) {
|
|
3867
|
-
rule = { 'condition': rule.condition, 'rules': rule.rules, 'not': rule.not };
|
|
4136
|
+
rule = { 'condition': rule.condition, 'rules': rule.rules, 'not': rule.not, 'isLocked': rule.isLocked };
|
|
3868
4137
|
}
|
|
3869
4138
|
else {
|
|
3870
|
-
rule = { 'condition': rule.condition, 'rules': rule.rules };
|
|
4139
|
+
rule = { 'condition': rule.condition, 'rules': rule.rules, 'isLocked': rule.isLocked };
|
|
3871
4140
|
}
|
|
3872
4141
|
if (customObj) {
|
|
3873
4142
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -4032,11 +4301,20 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4032
4301
|
var ruleValue;
|
|
4033
4302
|
var ignoreCase = false;
|
|
4034
4303
|
var column;
|
|
4035
|
-
var ignoreOper = ['notcontains', 'notstartswith', 'notendswith'];
|
|
4036
4304
|
if (!ruleColl) {
|
|
4037
4305
|
return pred;
|
|
4038
4306
|
}
|
|
4039
4307
|
for (var i = 0, len = ruleColl.length; i < len; i++) {
|
|
4308
|
+
var operator = ruleColl[i].operator;
|
|
4309
|
+
if (operator === 'notstartswith') {
|
|
4310
|
+
operator = 'doesnotstartwith';
|
|
4311
|
+
}
|
|
4312
|
+
else if (operator === 'notendswith') {
|
|
4313
|
+
operator = 'doesnotendwith';
|
|
4314
|
+
}
|
|
4315
|
+
else if (operator === 'notcontains') {
|
|
4316
|
+
operator = 'doesnotcontain';
|
|
4317
|
+
}
|
|
4040
4318
|
var keys = Object.keys(ruleColl[i]);
|
|
4041
4319
|
ignoreCase = false;
|
|
4042
4320
|
if (keys.indexOf('rules') > -1 && ruleColl[i].rules) {
|
|
@@ -4055,7 +4333,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4055
4333
|
}
|
|
4056
4334
|
}
|
|
4057
4335
|
}
|
|
4058
|
-
else if (!isNullOrUndefined(
|
|
4336
|
+
else if (!isNullOrUndefined(operator) && !isNullOrUndefined(operator.length)) {
|
|
4059
4337
|
var oper = ruleColl[i].operator.toLowerCase();
|
|
4060
4338
|
var isDateFilter = false;
|
|
4061
4339
|
var dateOperColl = ['equal', 'notequal', 'greaterthan', 'greaterthanorequal', 'lessthan', 'lessthanorequal'];
|
|
@@ -4086,23 +4364,20 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4086
4364
|
}
|
|
4087
4365
|
if (i === 0) {
|
|
4088
4366
|
if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 || oper.indexOf('null') > -1 ||
|
|
4089
|
-
oper.indexOf('empty') > -1) && oper.indexOf('
|
|
4367
|
+
oper.indexOf('empty') > -1) && (oper.indexOf('contain') < 0)) {
|
|
4090
4368
|
pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue) :
|
|
4091
4369
|
this.arrayPredicate(ruleColl[i]);
|
|
4092
4370
|
}
|
|
4093
4371
|
else {
|
|
4094
4372
|
var value = ruleValue;
|
|
4095
|
-
if (value !== ''
|
|
4096
|
-
pred = new Predicate(ruleColl[i].field,
|
|
4373
|
+
if (value !== '') {
|
|
4374
|
+
pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4097
4375
|
}
|
|
4098
4376
|
}
|
|
4099
4377
|
}
|
|
4100
4378
|
else {
|
|
4101
|
-
if (ignoreOper.indexOf(oper) > -1) {
|
|
4102
|
-
continue;
|
|
4103
|
-
}
|
|
4104
4379
|
if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 ||
|
|
4105
|
-
oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) && oper.indexOf('
|
|
4380
|
+
oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) && oper.indexOf('contain') < 0) {
|
|
4106
4381
|
pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue, pred, rule.condition) :
|
|
4107
4382
|
this.arrayPredicate(ruleColl[i], pred, rule.condition);
|
|
4108
4383
|
}
|
|
@@ -4111,19 +4386,19 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4111
4386
|
var value = ruleValue;
|
|
4112
4387
|
if (pred && value !== '') {
|
|
4113
4388
|
pred
|
|
4114
|
-
= pred.and(ruleColl[i].field,
|
|
4389
|
+
= pred.and(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4115
4390
|
}
|
|
4116
4391
|
else if (value !== '') {
|
|
4117
|
-
pred = new Predicate(ruleColl[i].field,
|
|
4392
|
+
pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4118
4393
|
}
|
|
4119
4394
|
}
|
|
4120
4395
|
else {
|
|
4121
4396
|
var value = ruleValue;
|
|
4122
4397
|
if (pred && value !== '') {
|
|
4123
|
-
pred = pred.or(ruleColl[i].field,
|
|
4398
|
+
pred = pred.or(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4124
4399
|
}
|
|
4125
4400
|
else if (value !== '') {
|
|
4126
|
-
pred = new Predicate(ruleColl[i].field,
|
|
4401
|
+
pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4127
4402
|
}
|
|
4128
4403
|
}
|
|
4129
4404
|
}
|
|
@@ -4403,15 +4678,28 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4403
4678
|
for (var i = 0, len = ruleColl.length; i < len; i++) {
|
|
4404
4679
|
var keys = Object.keys(ruleColl[i]);
|
|
4405
4680
|
if (!isNullOrUndefined(ruleColl[i].rules) && keys.indexOf('rules') > -1 && (ruleColl[i].rules.length !== 0)) {
|
|
4681
|
+
if (this.element.querySelectorAll('.e-group-container').length > this.maxGroupCount) {
|
|
4682
|
+
return null;
|
|
4683
|
+
}
|
|
4406
4684
|
parentElem = this.renderGroup(ruleColl[i], ruleColl[i].condition, parentElem, ruleColl[i].not);
|
|
4407
4685
|
parentElem = this.importRules(ruleColl[i], parentElem, true);
|
|
4408
4686
|
}
|
|
4409
4687
|
else {
|
|
4410
4688
|
this.renderRule(ruleColl[i], parentElem);
|
|
4411
4689
|
}
|
|
4690
|
+
if (!isNullOrUndefined(ruleColl[i].rules) && ruleColl[i].isLocked) {
|
|
4691
|
+
var lockGrpTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-grp-btn');
|
|
4692
|
+
this.groupLock(lockGrpTarget);
|
|
4693
|
+
}
|
|
4694
|
+
if (isNullOrUndefined(ruleColl[i].rules) && ruleColl[i].isLocked) {
|
|
4695
|
+
var lockRuleTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-rule-btn');
|
|
4696
|
+
this.ruleLock(lockRuleTarget);
|
|
4697
|
+
}
|
|
4412
4698
|
}
|
|
4413
4699
|
}
|
|
4414
|
-
|
|
4700
|
+
if (parentElem) {
|
|
4701
|
+
parentElem = closest(parentElem, '.e-rule-list');
|
|
4702
|
+
}
|
|
4415
4703
|
if (parentElem) {
|
|
4416
4704
|
parentElem = closest(parentElem, '.e-group-container');
|
|
4417
4705
|
}
|
|
@@ -4420,7 +4708,20 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4420
4708
|
QueryBuilder.prototype.renderGroup = function (rule, condition, parentElem, not, isRoot) {
|
|
4421
4709
|
this.addGroupElement(true, parentElem, condition, false, not, isRoot, rule); //Child group
|
|
4422
4710
|
var element = parentElem.querySelectorAll('.e-group-container');
|
|
4423
|
-
|
|
4711
|
+
var cloneElem = parentElem.querySelector('.e-rule-list').children;
|
|
4712
|
+
if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isMiddleGroup) {
|
|
4713
|
+
this.isMiddleGroup = false;
|
|
4714
|
+
this.cloneGrpBtnClick = false;
|
|
4715
|
+
return cloneElem[this.groupIndex + 1]; // group added in the middle
|
|
4716
|
+
}
|
|
4717
|
+
else if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isLastGroup) {
|
|
4718
|
+
this.isLastGroup = false;
|
|
4719
|
+
this.cloneGrpBtnClick = false;
|
|
4720
|
+
return cloneElem[cloneElem.length - 1]; // group added in the end
|
|
4721
|
+
}
|
|
4722
|
+
else {
|
|
4723
|
+
return element[element.length - 1];
|
|
4724
|
+
}
|
|
4424
4725
|
};
|
|
4425
4726
|
QueryBuilder.prototype.renderRule = function (rule, parentElem) {
|
|
4426
4727
|
if (parentElem.className.indexOf('e-group-container') > -1) {
|
|
@@ -4619,15 +4920,19 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4619
4920
|
valueStr += rule.value ? '("%' + rule.value + '%")' : '(' + rule.value + ')';
|
|
4620
4921
|
}
|
|
4621
4922
|
else {
|
|
4622
|
-
if (rule.type === 'number' || typeof rule.value === 'boolean' ||
|
|
4923
|
+
if (rule.type === 'number' || typeof rule.value === 'boolean' ||
|
|
4924
|
+
(rule.value === null && (rule.operator.toString().indexOf('empty') < -1))) {
|
|
4623
4925
|
valueStr += rule.value;
|
|
4624
4926
|
}
|
|
4927
|
+
else if (rule.operator.toString().indexOf('empty') > -1) {
|
|
4928
|
+
valueStr += '""';
|
|
4929
|
+
}
|
|
4625
4930
|
else {
|
|
4626
4931
|
valueStr += '"' + rule.value + '"';
|
|
4627
4932
|
}
|
|
4628
4933
|
}
|
|
4629
4934
|
}
|
|
4630
|
-
if (rule.operator.toString().indexOf('null') > -1
|
|
4935
|
+
if (rule.operator.toString().indexOf('null') > -1) {
|
|
4631
4936
|
if (enableEscape) {
|
|
4632
4937
|
rule.field = '`' + rule.field + '`';
|
|
4633
4938
|
}
|
|
@@ -4639,6 +4944,13 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4639
4944
|
queryStr += rule.field + ' ' + ruleOpertor;
|
|
4640
4945
|
}
|
|
4641
4946
|
else {
|
|
4947
|
+
var custOper = ruleOpertor;
|
|
4948
|
+
if (rule.operator === 'isempty') {
|
|
4949
|
+
custOper = '=';
|
|
4950
|
+
}
|
|
4951
|
+
else if (rule.operator === 'isnotempty') {
|
|
4952
|
+
custOper = '!=';
|
|
4953
|
+
}
|
|
4642
4954
|
if (enableEscape) {
|
|
4643
4955
|
rule.field = '`' + rule.field + '`';
|
|
4644
4956
|
}
|
|
@@ -4647,7 +4959,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4647
4959
|
rule.field = '"' + rule.field + '"';
|
|
4648
4960
|
}
|
|
4649
4961
|
}
|
|
4650
|
-
queryStr += rule.field + ' ' +
|
|
4962
|
+
queryStr += rule.field + ' ' + custOper + ' ' + valueStr;
|
|
4651
4963
|
}
|
|
4652
4964
|
if (rule.condition && rule.condition !== '') {
|
|
4653
4965
|
condition = rule.condition;
|
|
@@ -4677,7 +4989,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4677
4989
|
* Sets the rules from the sql query.
|
|
4678
4990
|
*
|
|
4679
4991
|
* @param {string} sqlString - 'sql String' to be passed to set the rule.
|
|
4680
|
-
* @param {boolean} sqlLocale -
|
|
4992
|
+
* @param {boolean} sqlLocale - Optional. Set `true` if Localization for Sql query.
|
|
4681
4993
|
* @returns {void}
|
|
4682
4994
|
*/
|
|
4683
4995
|
QueryBuilder.prototype.setRulesFromSql = function (sqlString, sqlLocale) {
|
|
@@ -4709,15 +5021,163 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4709
5021
|
*
|
|
4710
5022
|
* @param {RuleModel} rule - 'rule' to be passed to get the sql.
|
|
4711
5023
|
* @param {boolean} allowEscape - Set `true` if it exclude the escape character.
|
|
4712
|
-
*
|
|
4713
|
-
* @returns {
|
|
5024
|
+
* @param {boolean} sqlLocale - Set `true` if Localization for Sql query.
|
|
5025
|
+
* @returns {string} - Sql query from rules.
|
|
4714
5026
|
*/
|
|
4715
5027
|
QueryBuilder.prototype.getSqlFromRules = function (rule, allowEscape, sqlLocale) {
|
|
4716
5028
|
if (!rule) {
|
|
4717
5029
|
rule = this.getValidRules();
|
|
4718
5030
|
}
|
|
4719
5031
|
rule = this.getRuleCollection(rule, false);
|
|
4720
|
-
|
|
5032
|
+
var sqlString = this.getSqlString(this.getValidRules(rule), allowEscape, null, sqlLocale).replace(/"/g, '\'');
|
|
5033
|
+
return sqlString;
|
|
5034
|
+
};
|
|
5035
|
+
/**
|
|
5036
|
+
* Gets the parameter SQL query from rules.
|
|
5037
|
+
*
|
|
5038
|
+
* @param {RuleModel} rule – Specify the rule to be passed to get the parameter sql string.
|
|
5039
|
+
* @returns {ParameterizedSql} – Parameterized SQL query from rules.
|
|
5040
|
+
*/
|
|
5041
|
+
QueryBuilder.prototype.getParameterizedSql = function (rule) {
|
|
5042
|
+
if (!rule) {
|
|
5043
|
+
rule = this.getValidRules();
|
|
5044
|
+
}
|
|
5045
|
+
var obj = { sql: null };
|
|
5046
|
+
this.notify('query-library', { prop: 'getParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
|
|
5047
|
+
return obj['sql'];
|
|
5048
|
+
};
|
|
5049
|
+
/**
|
|
5050
|
+
* Sets the rules from the parameter sql query.
|
|
5051
|
+
*
|
|
5052
|
+
* @param { ParameterizedSql} sqlQuery – Specifies the parameter SQL to be passed to set the rule and load it to the query builder.
|
|
5053
|
+
* @returns {void}
|
|
5054
|
+
*/
|
|
5055
|
+
QueryBuilder.prototype.setParameterizedSql = function (sqlQuery) {
|
|
5056
|
+
var obj = { sql: null };
|
|
5057
|
+
this.notify('query-library', { prop: 'convertParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
|
|
5058
|
+
var sql = obj['sql'];
|
|
5059
|
+
if (sql) {
|
|
5060
|
+
sql = sql.replace(/`/g, '');
|
|
5061
|
+
var ruleModel = this.getRulesFromSql(sql);
|
|
5062
|
+
this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
|
|
5063
|
+
}
|
|
5064
|
+
};
|
|
5065
|
+
/**
|
|
5066
|
+
* Gets the named parameter SQL query from rules.
|
|
5067
|
+
*
|
|
5068
|
+
* @param {RuleModel} rule – Specify the rule to be passed to get the named parameter SQL string.
|
|
5069
|
+
* @returns {ParameterizedNamedSql} – Parameterized Named SQL query from rules.
|
|
5070
|
+
*/
|
|
5071
|
+
QueryBuilder.prototype.getParameterizedNamedSql = function (rule) {
|
|
5072
|
+
if (!rule) {
|
|
5073
|
+
rule = this.getValidRules();
|
|
5074
|
+
}
|
|
5075
|
+
var obj = { sql: null };
|
|
5076
|
+
this.notify('query-library', { prop: 'getNamedParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
|
|
5077
|
+
return obj['sql'];
|
|
5078
|
+
};
|
|
5079
|
+
/**
|
|
5080
|
+
* Sets the rules from the named parameter SQL query.
|
|
5081
|
+
*
|
|
5082
|
+
* @param { ParameterizedNamedSql } sqlQuery – Specifies the named parameter SQL to be passed to set the rule and load it to the query builder.
|
|
5083
|
+
* @returns {void}
|
|
5084
|
+
*/
|
|
5085
|
+
QueryBuilder.prototype.setParameterizedNamedSql = function (sqlQuery) {
|
|
5086
|
+
var obj = { sql: null };
|
|
5087
|
+
this.notify('query-library', { prop: 'convertNamedParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
|
|
5088
|
+
var sql = obj['sql'];
|
|
5089
|
+
if (sql) {
|
|
5090
|
+
sql = sql.replace(/`/g, '');
|
|
5091
|
+
var ruleModel = this.getRulesFromSql(sql);
|
|
5092
|
+
this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
|
|
5093
|
+
}
|
|
5094
|
+
};
|
|
5095
|
+
/**
|
|
5096
|
+
* Set the rules from Mongo query.
|
|
5097
|
+
*
|
|
5098
|
+
* @param {string} mongoQuery - 'sql String' to be passed to get the rule.
|
|
5099
|
+
* @param {boolean} mongoLocale - Set `true` if Localization for Mongo query.
|
|
5100
|
+
* @returns {void}
|
|
5101
|
+
*/
|
|
5102
|
+
QueryBuilder.prototype.setMongoQuery = function (mongoQuery, mongoLocale) {
|
|
5103
|
+
this.rule = { condition: 'and', not: false, rules: [] };
|
|
5104
|
+
this.notify('query-library', { prop: 'mongoParser', onPropertyChange: false, value: { mongoQuery: JSON.parse(mongoQuery), rule: this.rule, mongoLocale: mongoLocale } });
|
|
5105
|
+
};
|
|
5106
|
+
/**
|
|
5107
|
+
* Gets the Mongo query from rules.
|
|
5108
|
+
*
|
|
5109
|
+
* @param {RuleModel} rule - 'rule' to be passed to get the sql.
|
|
5110
|
+
* @returns {object} - Sql query from rules.
|
|
5111
|
+
*/
|
|
5112
|
+
QueryBuilder.prototype.getMongoQuery = function (rule) {
|
|
5113
|
+
if (!rule) {
|
|
5114
|
+
rule = this.getValidRules();
|
|
5115
|
+
}
|
|
5116
|
+
var obj = { mongoQuery: null };
|
|
5117
|
+
this.notify('query-library', { prop: 'getMongoFromRules', onPropertyChange: false, value: { rule: rule, mongoQuery: '', obj: obj } });
|
|
5118
|
+
return obj['mongoQuery'];
|
|
5119
|
+
};
|
|
5120
|
+
/**
|
|
5121
|
+
* Clones the rule based on the rule ID to the specific group.
|
|
5122
|
+
*
|
|
5123
|
+
* @param {string} ruleID - Specifies the ruleID that needs to be cloned.
|
|
5124
|
+
* @param {string} groupID - Specifies the groupID in which the rule to be cloned.
|
|
5125
|
+
* @param {number} index - Specifies the index to insert the cloned rule inside the group.
|
|
5126
|
+
* @returns {void}
|
|
5127
|
+
*/
|
|
5128
|
+
QueryBuilder.prototype.cloneRule = function (ruleID, groupID, index) {
|
|
5129
|
+
var getRule = this.getRule(ruleID.replace(this.element.id + '_', ''));
|
|
5130
|
+
groupID = groupID.replace(this.element.id + '_', '');
|
|
5131
|
+
this.ruleIndex = index;
|
|
5132
|
+
this.cloneRuleBtnClick = true;
|
|
5133
|
+
this.showButtons.cloneRule = true;
|
|
5134
|
+
this.addRules([{
|
|
5135
|
+
'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
|
|
5136
|
+
'value': getRule.value
|
|
5137
|
+
}], groupID);
|
|
5138
|
+
this.ruleIndex = -1;
|
|
5139
|
+
this.cloneRuleBtnClick = false;
|
|
5140
|
+
this.showButtons.cloneRule = false;
|
|
5141
|
+
};
|
|
5142
|
+
/**
|
|
5143
|
+
* Clones the group based on the group ID to the specific group.
|
|
5144
|
+
*
|
|
5145
|
+
* @param {string} groupID - Specifies the groupID that needs to be cloned.
|
|
5146
|
+
* @param {string} parentGroupID - Specifies the parentGroupID in which the group to be cloned.
|
|
5147
|
+
* @param {number} index - Specifies the index to insert the cloned group inside the parent group.
|
|
5148
|
+
* @returns {void}
|
|
5149
|
+
*/
|
|
5150
|
+
QueryBuilder.prototype.cloneGroup = function (groupID, parentGroupID, index) {
|
|
5151
|
+
parentGroupID = parentGroupID.replace(this.element.id + '_', '');
|
|
5152
|
+
var group = this.getGroup(parentGroupID);
|
|
5153
|
+
groupID = groupID.replace(this.element.id + '_', '');
|
|
5154
|
+
this.groupIndex = index;
|
|
5155
|
+
this.cloneGrpBtnClick = true;
|
|
5156
|
+
this.showButtons.cloneGroup = true;
|
|
5157
|
+
this.addGroups([{ 'condition': group.condition, 'not': group.not, 'rules': group.rules }], groupID);
|
|
5158
|
+
this.groupIndex = -1;
|
|
5159
|
+
this.cloneGrpBtnClick = false;
|
|
5160
|
+
this.showButtons.cloneGroup = false;
|
|
5161
|
+
};
|
|
5162
|
+
/**
|
|
5163
|
+
* Locks the rule based on the rule ID.
|
|
5164
|
+
*
|
|
5165
|
+
* @param {string} ruleID - Specifies the ruleID that needs to be locked.
|
|
5166
|
+
* @returns {void}
|
|
5167
|
+
*/
|
|
5168
|
+
QueryBuilder.prototype.lockRule = function (ruleID) {
|
|
5169
|
+
var target = document.getElementById(ruleID).querySelectorAll('.e-lock-rule-btn')[0];
|
|
5170
|
+
this.ruleLock(target);
|
|
5171
|
+
};
|
|
5172
|
+
/**
|
|
5173
|
+
* Locks the group based on the group ID
|
|
5174
|
+
*
|
|
5175
|
+
* @param {string} groupID - Specifies the groupID that needs to be locked.
|
|
5176
|
+
* @returns {void}
|
|
5177
|
+
*/
|
|
5178
|
+
QueryBuilder.prototype.lockGroup = function (groupID) {
|
|
5179
|
+
var target = document.getElementById(groupID).querySelectorAll('.e-lock-grp-btn')[0];
|
|
5180
|
+
this.groupLock(target);
|
|
4721
5181
|
};
|
|
4722
5182
|
QueryBuilder.prototype.sqlParser = function (sqlString, sqlLocale) {
|
|
4723
5183
|
var st = 0;
|
|
@@ -4919,13 +5379,13 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4919
5379
|
for (var i = 0; i < localeOperator.length; i++) {
|
|
4920
5380
|
if (this.sqlOperators[localeOperator[i]] === operator.toUpperCase()) {
|
|
4921
5381
|
if (value && value.indexOf('%') === 0 && value[value.length - 1] === '%') {
|
|
4922
|
-
return (
|
|
5382
|
+
return (operator.toUpperCase() === 'NOT LIKE') ? 'notcontains' : 'contains';
|
|
4923
5383
|
}
|
|
4924
5384
|
else if (value && value.indexOf('%') !== 0 && value.indexOf('%') === value.length - 1) {
|
|
4925
|
-
return (
|
|
5385
|
+
return (operator.toUpperCase() === 'NOT LIKE') ? 'notstartswith' : 'startswith';
|
|
4926
5386
|
}
|
|
4927
5387
|
else if (value && value.indexOf('%') === 0 && value.indexOf('%') !== value.length - 1) {
|
|
4928
|
-
return (
|
|
5388
|
+
return (operator.toUpperCase() === 'NOT LIKE') ? 'notendswith' : 'endswith';
|
|
4929
5389
|
}
|
|
4930
5390
|
return localeOperator[i];
|
|
4931
5391
|
}
|
|
@@ -5110,6 +5570,15 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5110
5570
|
}
|
|
5111
5571
|
else if (parser[i + 1][0] === 'Operators') {
|
|
5112
5572
|
rule.operator = this.getOperator(parser[i + 2][1], parser[i + 1][1], sqlLocale);
|
|
5573
|
+
var isEmptyOper = false;
|
|
5574
|
+
if (rule.operator == "equal" && parser[i + 2][0] === "String" && parser[i + 2][1] === "''") {
|
|
5575
|
+
rule.operator = "isempty";
|
|
5576
|
+
isEmptyOper = true;
|
|
5577
|
+
}
|
|
5578
|
+
else if (rule.operator == "notequal" && parser[i + 2][0] === "String" && parser[i + 2][1] === "''") {
|
|
5579
|
+
rule.operator = "isnotempty";
|
|
5580
|
+
isEmptyOper = true;
|
|
5581
|
+
}
|
|
5113
5582
|
if (parser[i + 2][0] === 'Number') {
|
|
5114
5583
|
rule.type = 'number';
|
|
5115
5584
|
rule.value = Number(parser[i + 2][1]);
|
|
@@ -5166,6 +5635,301 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5166
5635
|
}
|
|
5167
5636
|
return rules;
|
|
5168
5637
|
};
|
|
5638
|
+
/**
|
|
5639
|
+
* Clone the Group
|
|
5640
|
+
*
|
|
5641
|
+
* @param {Element | string} target - 'target' to be passed to clone the group.
|
|
5642
|
+
* @returns {void}
|
|
5643
|
+
*/
|
|
5644
|
+
QueryBuilder.prototype.groupClone = function (target) {
|
|
5645
|
+
var groupElem = target.closest('.e-rule-list').closest('.e-group-container');
|
|
5646
|
+
var targetGrpId;
|
|
5647
|
+
var groupId;
|
|
5648
|
+
if (typeof target === 'string') {
|
|
5649
|
+
groupId = this.element.id + '_' + target;
|
|
5650
|
+
target = document.getElementById(groupId);
|
|
5651
|
+
}
|
|
5652
|
+
else {
|
|
5653
|
+
targetGrpId = target.id.replace(this.element.id + '_', '');
|
|
5654
|
+
groupId = groupElem.id.replace(this.element.id + '_', '');
|
|
5655
|
+
}
|
|
5656
|
+
var group = this.getGroup(targetGrpId);
|
|
5657
|
+
this.groupIndex = Array.prototype.indexOf.call(target.closest('.e-rule-list').children, target.closest('.e-group-container'));
|
|
5658
|
+
this.addGroups([{ 'condition': group.condition, 'not': group.not, 'rules': group.rules }], groupId);
|
|
5659
|
+
this.groupIndex = -1;
|
|
5660
|
+
};
|
|
5661
|
+
QueryBuilder.prototype.ruleClone = function (target) {
|
|
5662
|
+
var ruleElem = closest(target, '.e-rule-container');
|
|
5663
|
+
var groupElem = target.closest('.e-rule-list').closest('.e-group-container');
|
|
5664
|
+
var getRule = this.getRule(target);
|
|
5665
|
+
var groupId = groupElem.id.replace(this.element.id + '_', '');
|
|
5666
|
+
var ruleElemColl = groupElem.querySelectorAll('.e-rule-container');
|
|
5667
|
+
for (var i = 0, iLen = ruleElemColl.length; i < iLen; i++) {
|
|
5668
|
+
if (ruleElem.id === ruleElemColl[i].id) {
|
|
5669
|
+
this.ruleIndex = i;
|
|
5670
|
+
}
|
|
5671
|
+
}
|
|
5672
|
+
this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
|
|
5673
|
+
'value': getRule.value }], groupId);
|
|
5674
|
+
this.ruleIndex = -1;
|
|
5675
|
+
};
|
|
5676
|
+
QueryBuilder.prototype.ruleLock = function (target) {
|
|
5677
|
+
var ruleElem = closest(target, '.e-rule-container');
|
|
5678
|
+
var rule = this.getRule(ruleElem.id.replace(this.element.id + '_', ''));
|
|
5679
|
+
if (ruleElem.classList.contains('e-disable')) {
|
|
5680
|
+
rule.isLocked = false;
|
|
5681
|
+
this.lockItems = this.lockItems.filter(function (lockItem) { return lockItem !== ruleElem.id; });
|
|
5682
|
+
ruleElem.classList.remove('e-disable');
|
|
5683
|
+
this.disableRuleControls(target, ruleElem, false);
|
|
5684
|
+
target.children[0].classList.add('e-unlock');
|
|
5685
|
+
target.children[0].classList.remove('e-lock');
|
|
5686
|
+
target.setAttribute('title', this.l10n.getConstant('LockRule'));
|
|
5687
|
+
}
|
|
5688
|
+
else {
|
|
5689
|
+
rule.isLocked = true;
|
|
5690
|
+
if (this.lockItems.indexOf(ruleElem.id) < 0) {
|
|
5691
|
+
this.lockItems.splice(this.lockItems.length - 1, 0, ruleElem.id);
|
|
5692
|
+
}
|
|
5693
|
+
ruleElem.classList.add('e-disable');
|
|
5694
|
+
this.disableRuleControls(target, ruleElem, true);
|
|
5695
|
+
target.children[0].classList.add('e-lock');
|
|
5696
|
+
target.children[0].classList.remove('e-unlock');
|
|
5697
|
+
target.setAttribute('title', this.l10n.getConstant('UnlockRule'));
|
|
5698
|
+
}
|
|
5699
|
+
};
|
|
5700
|
+
QueryBuilder.prototype.groupLock = function (target) {
|
|
5701
|
+
var groupElem = closest(target, '.e-group-container');
|
|
5702
|
+
var group = this.getGroup(groupElem.id.replace(this.element.id + '_', ''));
|
|
5703
|
+
var isRoot = groupElem.id.indexOf('group0') > -1;
|
|
5704
|
+
if (groupElem.classList.contains('e-disable')) {
|
|
5705
|
+
if (isRoot) {
|
|
5706
|
+
var newGroup = {};
|
|
5707
|
+
newGroup.condition = group.condition;
|
|
5708
|
+
newGroup.not = group.not;
|
|
5709
|
+
newGroup.isLocked = false;
|
|
5710
|
+
this.setProperties({ rule: newGroup }, true);
|
|
5711
|
+
}
|
|
5712
|
+
else {
|
|
5713
|
+
group.isLocked = false;
|
|
5714
|
+
}
|
|
5715
|
+
this.lockItems = this.lockItems.filter(function (lockItem) { return lockItem !== groupElem.id; });
|
|
5716
|
+
groupElem.classList.remove('e-disable');
|
|
5717
|
+
this.disableHeaderControls(target, groupElem, false);
|
|
5718
|
+
target.children[0].classList.add('e-unlock');
|
|
5719
|
+
target.children[0].classList.remove('e-lock');
|
|
5720
|
+
target.setAttribute('title', this.l10n.getConstant('LockGroup'));
|
|
5721
|
+
this.updateLockItems();
|
|
5722
|
+
}
|
|
5723
|
+
else {
|
|
5724
|
+
if (isRoot) {
|
|
5725
|
+
var newGroup = {};
|
|
5726
|
+
newGroup.condition = group.condition;
|
|
5727
|
+
newGroup.not = group.not;
|
|
5728
|
+
newGroup.isLocked = true;
|
|
5729
|
+
this.setProperties({ rule: newGroup }, true);
|
|
5730
|
+
}
|
|
5731
|
+
else {
|
|
5732
|
+
group.isLocked = true;
|
|
5733
|
+
}
|
|
5734
|
+
if (this.lockItems.indexOf(groupElem.id) < 0) {
|
|
5735
|
+
this.lockItems.splice(this.lockItems.length - 1, 0, groupElem.id);
|
|
5736
|
+
}
|
|
5737
|
+
groupElem.classList.add('e-disable');
|
|
5738
|
+
this.disableHeaderControls(target, groupElem, true);
|
|
5739
|
+
target.children[0].classList.add('e-lock');
|
|
5740
|
+
target.children[0].classList.remove('e-unlock');
|
|
5741
|
+
target.setAttribute('title', this.l10n.getConstant('UnlockGroup'));
|
|
5742
|
+
}
|
|
5743
|
+
};
|
|
5744
|
+
QueryBuilder.prototype.updateLockItems = function () {
|
|
5745
|
+
for (var i = 0; i < this.lockItems.length; i++) {
|
|
5746
|
+
var idColl = this.lockItems[i].split('_');
|
|
5747
|
+
if (idColl.length > 2) {
|
|
5748
|
+
var ruleElem = this.element.querySelector('#' + this.lockItems[i]);
|
|
5749
|
+
var target = ruleElem.querySelector('.e-lock-rule-btn');
|
|
5750
|
+
ruleElem = closest(target, '.e-rule-container');
|
|
5751
|
+
if (!ruleElem.classList.contains('e-disable')) {
|
|
5752
|
+
this.ruleLock(target);
|
|
5753
|
+
}
|
|
5754
|
+
}
|
|
5755
|
+
else {
|
|
5756
|
+
var groupElem = this.element.querySelector('#' + this.lockItems[i]);
|
|
5757
|
+
var target = groupElem.querySelector('.e-lock-grp-btn');
|
|
5758
|
+
groupElem = closest(target, '.e-group-container');
|
|
5759
|
+
if (!groupElem.classList.contains('e-disable')) {
|
|
5760
|
+
this.groupLock(target);
|
|
5761
|
+
}
|
|
5762
|
+
}
|
|
5763
|
+
}
|
|
5764
|
+
};
|
|
5765
|
+
QueryBuilder.prototype.disableHeaderControls = function (target, groupElem, isDisabled) {
|
|
5766
|
+
var andElem = groupElem.querySelectorAll('.e-btngroup-and');
|
|
5767
|
+
var orElem = groupElem.querySelectorAll('.e-btngroup-or');
|
|
5768
|
+
var notElem = groupElem.querySelectorAll('.e-qb-toggle');
|
|
5769
|
+
var addElem = groupElem.querySelectorAll('.e-add-btn');
|
|
5770
|
+
var deleteGrpElem = groupElem.querySelectorAll('.e-deletegroup');
|
|
5771
|
+
var lockElem = groupElem.querySelectorAll('.e-lock-grp-btn');
|
|
5772
|
+
var cloneElem = groupElem.querySelectorAll('.e-clone-grp-btn');
|
|
5773
|
+
var groupContElem = groupElem.querySelectorAll('.e-group-container');
|
|
5774
|
+
for (var i = 0; i < andElem.length; i++) {
|
|
5775
|
+
if (isDisabled) {
|
|
5776
|
+
if (groupContElem[i] && groupContElem[i].classList.contains('e-disable')) {
|
|
5777
|
+
groupContElem[i].classList.add('e-disable');
|
|
5778
|
+
}
|
|
5779
|
+
andElem[i].disabled = true;
|
|
5780
|
+
orElem[i].disabled = true;
|
|
5781
|
+
addElem[i].disabled = true;
|
|
5782
|
+
if (notElem[i]) {
|
|
5783
|
+
notElem[i].disabled = true;
|
|
5784
|
+
}
|
|
5785
|
+
if (deleteGrpElem[i]) {
|
|
5786
|
+
deleteGrpElem[i].disabled = true;
|
|
5787
|
+
}
|
|
5788
|
+
if (cloneElem[i]) {
|
|
5789
|
+
cloneElem[i].disabled = true;
|
|
5790
|
+
}
|
|
5791
|
+
andElem[i].parentElement.classList.add('e-disabled');
|
|
5792
|
+
if (lockElem[i] !== target) {
|
|
5793
|
+
lockElem[i].disabled = true;
|
|
5794
|
+
lockElem[i].children[0].classList.remove('e-unlock');
|
|
5795
|
+
lockElem[i].children[0].classList.add('e-lock');
|
|
5796
|
+
}
|
|
5797
|
+
}
|
|
5798
|
+
else {
|
|
5799
|
+
if (groupContElem[i]) {
|
|
5800
|
+
groupContElem[i].classList.remove('e-disable');
|
|
5801
|
+
}
|
|
5802
|
+
andElem[i].disabled = false;
|
|
5803
|
+
orElem[i].disabled = false;
|
|
5804
|
+
addElem[i].disabled = false;
|
|
5805
|
+
lockElem[i].disabled = false;
|
|
5806
|
+
if (notElem[i]) {
|
|
5807
|
+
notElem[i].disabled = false;
|
|
5808
|
+
}
|
|
5809
|
+
if (deleteGrpElem[i]) {
|
|
5810
|
+
deleteGrpElem[i].disabled = false;
|
|
5811
|
+
}
|
|
5812
|
+
if (cloneElem[i]) {
|
|
5813
|
+
cloneElem[i].disabled = false;
|
|
5814
|
+
}
|
|
5815
|
+
andElem[i].parentElement.classList.remove('e-disabled');
|
|
5816
|
+
lockElem[i].children[0].classList.remove('e-lock');
|
|
5817
|
+
lockElem[i].children[0].classList.add('e-unlock');
|
|
5818
|
+
}
|
|
5819
|
+
}
|
|
5820
|
+
this.disableRuleControls(target, groupElem, isDisabled);
|
|
5821
|
+
};
|
|
5822
|
+
QueryBuilder.prototype.disableRuleControls = function (target, groupElem, isDisabled) {
|
|
5823
|
+
var ddlElement = groupElem.querySelectorAll('.e-control.e-dropdownlist');
|
|
5824
|
+
var numericElement = groupElem.querySelectorAll('.e-control.e-numerictextbox');
|
|
5825
|
+
var textElement = groupElem.querySelectorAll('.e-control.e-textbox');
|
|
5826
|
+
var dateElement = groupElem.querySelectorAll('.e-control.e-datepicker');
|
|
5827
|
+
var checkboxElement = groupElem.querySelectorAll('.e-control.e-checkbox');
|
|
5828
|
+
var radioBtnElement = groupElem.querySelectorAll('.e-control.e-radio');
|
|
5829
|
+
var multiSelectElement = groupElem.querySelectorAll('.e-control.e-multiselect');
|
|
5830
|
+
var deleteElem = groupElem.querySelectorAll('.e-rule-delete');
|
|
5831
|
+
var lockElem = groupElem.querySelectorAll('.e-lock-rule');
|
|
5832
|
+
var cloneElem = groupElem.querySelectorAll('.e-clone-rule');
|
|
5833
|
+
var ruleElem = groupElem.querySelectorAll('.e-rule-container');
|
|
5834
|
+
for (var i = 0; i < deleteElem.length; i++) {
|
|
5835
|
+
if (isDisabled) {
|
|
5836
|
+
if (ruleElem[i] && ruleElem[i].classList.contains('e-disable')) {
|
|
5837
|
+
ruleElem[i].classList.add('e-disable');
|
|
5838
|
+
}
|
|
5839
|
+
deleteElem[i].disabled = true;
|
|
5840
|
+
if (cloneElem[i]) {
|
|
5841
|
+
cloneElem[i].disabled = true;
|
|
5842
|
+
}
|
|
5843
|
+
if (lockElem[i] !== target) {
|
|
5844
|
+
lockElem[i].disabled = true;
|
|
5845
|
+
lockElem[i].children[0].classList.remove('e-unlock');
|
|
5846
|
+
lockElem[i].children[0].classList.add('e-lock');
|
|
5847
|
+
}
|
|
5848
|
+
}
|
|
5849
|
+
else {
|
|
5850
|
+
if (ruleElem[i]) {
|
|
5851
|
+
ruleElem[i].classList.remove('e-disable');
|
|
5852
|
+
}
|
|
5853
|
+
if (cloneElem[i]) {
|
|
5854
|
+
cloneElem[i].disabled = false;
|
|
5855
|
+
}
|
|
5856
|
+
deleteElem[i].disabled = false;
|
|
5857
|
+
lockElem[i].disabled = false;
|
|
5858
|
+
lockElem[i].children[0].classList.remove('e-lock');
|
|
5859
|
+
lockElem[i].children[0].classList.add('e-unlock');
|
|
5860
|
+
}
|
|
5861
|
+
}
|
|
5862
|
+
var dropDownObj;
|
|
5863
|
+
var numericObj;
|
|
5864
|
+
var textObj;
|
|
5865
|
+
var dateObj;
|
|
5866
|
+
var checkBoxObj;
|
|
5867
|
+
var radioBtnObj;
|
|
5868
|
+
var multiSelectObj;
|
|
5869
|
+
for (var i = 0; i < ddlElement.length; i++) {
|
|
5870
|
+
dropDownObj = getComponent(ddlElement[i], 'dropdownlist');
|
|
5871
|
+
if (isDisabled) {
|
|
5872
|
+
dropDownObj.enabled = false;
|
|
5873
|
+
}
|
|
5874
|
+
else {
|
|
5875
|
+
dropDownObj.enabled = true;
|
|
5876
|
+
}
|
|
5877
|
+
}
|
|
5878
|
+
for (var i = 0; i < numericElement.length; i++) {
|
|
5879
|
+
numericObj = getComponent(numericElement[i], 'numerictextbox');
|
|
5880
|
+
if (isDisabled) {
|
|
5881
|
+
numericObj.enabled = false;
|
|
5882
|
+
}
|
|
5883
|
+
else {
|
|
5884
|
+
numericObj.enabled = true;
|
|
5885
|
+
}
|
|
5886
|
+
}
|
|
5887
|
+
for (var i = 0; i < textElement.length; i++) {
|
|
5888
|
+
textObj = getComponent(textElement[i], 'textbox');
|
|
5889
|
+
if (isDisabled) {
|
|
5890
|
+
textObj.enabled = false;
|
|
5891
|
+
}
|
|
5892
|
+
else {
|
|
5893
|
+
textObj.enabled = true;
|
|
5894
|
+
}
|
|
5895
|
+
}
|
|
5896
|
+
for (var i = 0; i < dateElement.length; i++) {
|
|
5897
|
+
dateObj = getComponent(dateElement[i], 'datepicker');
|
|
5898
|
+
if (isDisabled) {
|
|
5899
|
+
dateObj.enabled = false;
|
|
5900
|
+
}
|
|
5901
|
+
else {
|
|
5902
|
+
dateObj.enabled = true;
|
|
5903
|
+
}
|
|
5904
|
+
}
|
|
5905
|
+
for (var i = 0; i < checkboxElement.length; i++) {
|
|
5906
|
+
checkBoxObj = getComponent(checkboxElement[i], 'checkbox');
|
|
5907
|
+
if (isDisabled) {
|
|
5908
|
+
checkBoxObj.disabled = true;
|
|
5909
|
+
}
|
|
5910
|
+
else {
|
|
5911
|
+
checkBoxObj.disabled = false;
|
|
5912
|
+
}
|
|
5913
|
+
}
|
|
5914
|
+
for (var i = 0; i < radioBtnElement.length; i++) {
|
|
5915
|
+
radioBtnObj = getComponent(radioBtnElement[i], 'radio');
|
|
5916
|
+
if (isDisabled) {
|
|
5917
|
+
radioBtnObj.disabled = true;
|
|
5918
|
+
}
|
|
5919
|
+
else {
|
|
5920
|
+
radioBtnObj.disabled = false;
|
|
5921
|
+
}
|
|
5922
|
+
}
|
|
5923
|
+
for (var i = 0; i < multiSelectElement.length; i++) {
|
|
5924
|
+
multiSelectObj = getComponent(multiSelectElement[i], 'multiselect');
|
|
5925
|
+
if (isDisabled) {
|
|
5926
|
+
multiSelectObj.enabled = false;
|
|
5927
|
+
}
|
|
5928
|
+
else {
|
|
5929
|
+
multiSelectObj.enabled = true;
|
|
5930
|
+
}
|
|
5931
|
+
}
|
|
5932
|
+
};
|
|
5169
5933
|
__decorate([
|
|
5170
5934
|
Event()
|
|
5171
5935
|
], QueryBuilder.prototype, "created", void 0);
|
|
@@ -5185,7 +5949,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5185
5949
|
Event()
|
|
5186
5950
|
], QueryBuilder.prototype, "ruleChange", void 0);
|
|
5187
5951
|
__decorate([
|
|
5188
|
-
|
|
5952
|
+
Complex({}, ShowButtons)
|
|
5189
5953
|
], QueryBuilder.prototype, "showButtons", void 0);
|
|
5190
5954
|
__decorate([
|
|
5191
5955
|
Property(false)
|
|
@@ -5247,6 +6011,15 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5247
6011
|
__decorate([
|
|
5248
6012
|
Property(false)
|
|
5249
6013
|
], QueryBuilder.prototype, "readonly", void 0);
|
|
6014
|
+
__decorate([
|
|
6015
|
+
Property(true)
|
|
6016
|
+
], QueryBuilder.prototype, "addRuleToNewGroups", void 0);
|
|
6017
|
+
__decorate([
|
|
6018
|
+
Property(false)
|
|
6019
|
+
], QueryBuilder.prototype, "autoSelectField", void 0);
|
|
6020
|
+
__decorate([
|
|
6021
|
+
Property(true)
|
|
6022
|
+
], QueryBuilder.prototype, "autoSelectOperator", void 0);
|
|
5250
6023
|
__decorate([
|
|
5251
6024
|
Property('')
|
|
5252
6025
|
], QueryBuilder.prototype, "separator", void 0);
|