@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
|
@@ -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
|
}
|
|
@@ -1454,7 +1621,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1454
1621
|
this.prevItemData = args.itemData;
|
|
1455
1622
|
var fieldElem = closest(args.element, '.e-rule-filter') || closest(args.element, '.e-rule-sub-filter');
|
|
1456
1623
|
var column = this.fieldMode === 'DropdownTree' ? this.getColumn(args.value[0]) : this.getColumn(args.value);
|
|
1457
|
-
if (this.fieldMode === 'DropdownTree' && fieldElem
|
|
1624
|
+
if (this.fieldMode === 'DropdownTree' && fieldElem !== null) {
|
|
1458
1625
|
var ddtElem = fieldElem.querySelector('.e-dropdowntree.e-control');
|
|
1459
1626
|
var ddt = getComponent(ddtElem, 'dropdowntree');
|
|
1460
1627
|
if (column) {
|
|
@@ -1526,7 +1693,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1526
1693
|
var filterElem = closest(ddlArgs.element, '.e-rule-filter');
|
|
1527
1694
|
filterElem = filterElem ? filterElem : closest(ddlArgs.element, '.e-rule-sub-filter');
|
|
1528
1695
|
var ddlObj = getComponent(ddlArgs.element, 'dropdownlist');
|
|
1529
|
-
if (this.fieldMode === 'DropdownTree' && filterElem
|
|
1696
|
+
if (this.fieldMode === 'DropdownTree' && filterElem !== null) {
|
|
1530
1697
|
ddlObj = getComponent(ddlArgs.element, 'dropdowntree');
|
|
1531
1698
|
}
|
|
1532
1699
|
var element = closest(ddlArgs.element, '.e-group-container');
|
|
@@ -1655,7 +1822,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1655
1822
|
this.GetRootColumnName(rule.field) === this.GetRootColumnName(this.previousColumn.field))) {
|
|
1656
1823
|
var subField = this.selectedColumn.columns;
|
|
1657
1824
|
for (var i = 0; i < subField.length; i++) {
|
|
1658
|
-
if (rule.field === subField[i].field
|
|
1825
|
+
if (rule.field === subField[i].field) {
|
|
1659
1826
|
dropDownList.value = subField[i].field;
|
|
1660
1827
|
this.selectedColumn = subField[i];
|
|
1661
1828
|
subFieldValue = true;
|
|
@@ -1694,7 +1861,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1694
1861
|
rule.value = [];
|
|
1695
1862
|
}
|
|
1696
1863
|
}
|
|
1697
|
-
else if (typeof rule.value === 'object' && rule.value
|
|
1864
|
+
else if (typeof rule.value === 'object' && rule.value !== null) {
|
|
1698
1865
|
rule.value = rule.value.length > 0 ? rule.value[0] : rule.type === 'number' ? 0 : '';
|
|
1699
1866
|
}
|
|
1700
1867
|
if (ddlArgs.previousItemData) {
|
|
@@ -1721,6 +1888,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1721
1888
|
if (valElem && this.getColumn(rule.field).template) {
|
|
1722
1889
|
filterElem = operatorElem.previousElementSibling;
|
|
1723
1890
|
}
|
|
1891
|
+
if (valElem.children.length == 0) {
|
|
1892
|
+
filterElem = operatorElem.previousElementSibling;
|
|
1893
|
+
}
|
|
1724
1894
|
this.changeRuleValues(filterElem, rule, tempRule, ddlArgs);
|
|
1725
1895
|
}
|
|
1726
1896
|
};
|
|
@@ -1751,7 +1921,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1751
1921
|
tempRule.type = this.fieldMode === 'DropdownTree' ? this.getColumn(fieldObj.value[0]).type :
|
|
1752
1922
|
this.getColumn(fieldObj.value).type;
|
|
1753
1923
|
var itemData = ddlArgs.itemData;
|
|
1754
|
-
|
|
1924
|
+
if (ddlObj.value !== '') {
|
|
1925
|
+
this.renderValues(operatorElem, itemData, ddlArgs.previousItemData, true, rule, tempRule, ddlArgs.element);
|
|
1926
|
+
}
|
|
1755
1927
|
}
|
|
1756
1928
|
else {
|
|
1757
1929
|
var ruleId = closest(operatorElem, '.e-rule-container').id;
|
|
@@ -1765,7 +1937,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1765
1937
|
}
|
|
1766
1938
|
var height = (this.element.className.indexOf('e-device') > -1) ? '250px' : '200px';
|
|
1767
1939
|
var value = operatorList[0].value;
|
|
1768
|
-
|
|
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
|
+
}
|
|
1769
1948
|
var ddlOperator = void 0;
|
|
1770
1949
|
ddlOperator = {
|
|
1771
1950
|
dataSource: operatorList,
|
|
@@ -1773,7 +1952,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1773
1952
|
placeholder: this.l10n.getConstant('SelectOperator'),
|
|
1774
1953
|
popupHeight: ((operatorList.length > 5) ? height : 'auto'),
|
|
1775
1954
|
change: this.changeField.bind(this),
|
|
1776
|
-
index:
|
|
1955
|
+
index: ddlIdx,
|
|
1777
1956
|
value: value,
|
|
1778
1957
|
open: this.popupOpen.bind(this, false)
|
|
1779
1958
|
};
|
|
@@ -1787,7 +1966,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1787
1966
|
tempRule.type = this.selectedColumn.type;
|
|
1788
1967
|
tempRule.operator = rule.operator;
|
|
1789
1968
|
}
|
|
1790
|
-
|
|
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
|
+
}
|
|
1791
1975
|
}
|
|
1792
1976
|
}
|
|
1793
1977
|
if (!this.isImportRules) {
|
|
@@ -2008,17 +2192,11 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2008
2192
|
if (!this.dataColl.length && values.length) {
|
|
2009
2193
|
isValues = true;
|
|
2010
2194
|
}
|
|
2011
|
-
var fieldValue = this.selectedRule.field;
|
|
2012
|
-
var isNested = this.selectedRule.field.indexOf(this.separator);
|
|
2013
|
-
if (isNested !== 0 && this.fieldMode !== 'DropdownTree') {
|
|
2014
|
-
var nest = this.selectedRule.field.split(this.separator);
|
|
2015
|
-
fieldValue = nest[nest.length - 1];
|
|
2016
|
-
}
|
|
2017
2195
|
var multiSelectValue;
|
|
2018
2196
|
multiSelectValue = {
|
|
2019
2197
|
dataSource: isValues ? values : (isFetched ? ds : this.dataManager),
|
|
2020
2198
|
query: new Query([rule.field]),
|
|
2021
|
-
fields: { text:
|
|
2199
|
+
fields: { text: this.selectedRule.field, value: this.selectedRule.field },
|
|
2022
2200
|
placeholder: this.l10n.getConstant('SelectValue'),
|
|
2023
2201
|
value: selectedValue,
|
|
2024
2202
|
mode: 'CheckBox',
|
|
@@ -2149,14 +2327,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2149
2327
|
var columnData = this.getItemData(parentId);
|
|
2150
2328
|
var selectedValue;
|
|
2151
2329
|
var isTemplate = (typeof columnData.template === 'string');
|
|
2152
|
-
if (this.isImportRules || this.isPublic || isTemplate) {
|
|
2330
|
+
if (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate) {
|
|
2153
2331
|
selectedValue = rule.value;
|
|
2154
2332
|
}
|
|
2155
2333
|
else {
|
|
2156
2334
|
selectedValue = this.setDefaultValue(parentId, false, false);
|
|
2157
2335
|
}
|
|
2158
2336
|
if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {
|
|
2159
|
-
selectedVal = this.isImportRules ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2337
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2160
2338
|
this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
|
|
2161
2339
|
if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {
|
|
2162
2340
|
ruleValElem.style.width = '100%';
|
|
@@ -2168,7 +2346,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2168
2346
|
}
|
|
2169
2347
|
else {
|
|
2170
2348
|
if (operator === 'in' || operator === 'notin') {
|
|
2171
|
-
selectedVal = this.isImportRules ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2349
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2172
2350
|
selectedValue = selectedVal.join(',');
|
|
2173
2351
|
}
|
|
2174
2352
|
var txtBox = void 0;
|
|
@@ -2188,9 +2366,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2188
2366
|
QueryBuilder.prototype.renderNumberValue = function (parentId, rule, operator, idx, ruleValElem, itemData, length) {
|
|
2189
2367
|
var columnData = this.getItemData(parentId);
|
|
2190
2368
|
var isTemplate = (typeof columnData.template === 'string');
|
|
2191
|
-
var selectedVal = (this.isImportRules || this.isPublic || isTemplate) ? rule.value : this.setDefaultValue(parentId, false, true);
|
|
2369
|
+
var selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate) ? rule.value : this.setDefaultValue(parentId, false, true);
|
|
2192
2370
|
if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {
|
|
2193
|
-
selectedVal = this.isImportRules ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2371
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2194
2372
|
this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
|
|
2195
2373
|
if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {
|
|
2196
2374
|
ruleValElem.style.width = '100%';
|
|
@@ -2201,7 +2379,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2201
2379
|
}
|
|
2202
2380
|
}
|
|
2203
2381
|
else if (operator === 'in' || operator === 'notin') {
|
|
2204
|
-
selectedVal = this.isImportRules ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2382
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
|
|
2205
2383
|
var selVal = selectedVal.join(',');
|
|
2206
2384
|
var txtInp = void 0;
|
|
2207
2385
|
txtInp = {
|
|
@@ -2474,8 +2652,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2474
2652
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2475
2653
|
: this.getColumn(filtObj.value);
|
|
2476
2654
|
this.selectedRule = column;
|
|
2655
|
+
var ddlObj = getComponent(target.querySelector('input'), 'dropdownlist');
|
|
2477
2656
|
if (isRender) {
|
|
2478
|
-
var ddlObj = getComponent(target.querySelector('input'), 'dropdownlist');
|
|
2479
2657
|
itemData = element.id.indexOf('operator') > -1 ? itemData : this.selectedRule;
|
|
2480
2658
|
if (itemData.operators) {
|
|
2481
2659
|
ddlObj.value = null;
|
|
@@ -2483,7 +2661,13 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2483
2661
|
ddlObj.dataSource = itemData.operators;
|
|
2484
2662
|
ddlObj.index = this.getOperatorIndex(ddlObj, rule);
|
|
2485
2663
|
ddlObj.value = tempRule.operator = ddlObj.dataSource[ddlObj.index].value;
|
|
2486
|
-
|
|
2664
|
+
if (!this.autoSelectOperator) {
|
|
2665
|
+
ddlObj.index = -1;
|
|
2666
|
+
tempRule.operator = ddlObj.value = '';
|
|
2667
|
+
}
|
|
2668
|
+
else {
|
|
2669
|
+
ddlObj.dataBind();
|
|
2670
|
+
}
|
|
2487
2671
|
}
|
|
2488
2672
|
}
|
|
2489
2673
|
var operator = tempRule.operator.toString();
|
|
@@ -2516,39 +2700,41 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2516
2700
|
this.validateValue(rule, closest(target, '.e-rule-container'));
|
|
2517
2701
|
this.destroyControls(target);
|
|
2518
2702
|
}
|
|
2519
|
-
if (
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
else {
|
|
2538
|
-
removeClass([target.nextElementSibling], 'e-template-value');
|
|
2539
|
-
var inputLen = 1;
|
|
2540
|
-
if (tempRule.type === 'boolean') {
|
|
2541
|
-
inputLen = this.selectedColumn.values ? this.selectedColumn.values.length : 2;
|
|
2703
|
+
if (this.isImportRules || (ddlObj && ddlObj.value !== '')) {
|
|
2704
|
+
if (column) {
|
|
2705
|
+
itemData.template = column.template;
|
|
2706
|
+
}
|
|
2707
|
+
if (itemData.template) {
|
|
2708
|
+
addClass([target.nextElementSibling], 'e-template-value');
|
|
2709
|
+
itemData.template = column.template;
|
|
2710
|
+
isTempRendered = this.setColumnTemplate(itemData, parentId, column.field, itemData.value ||
|
|
2711
|
+
operator, target, rule);
|
|
2712
|
+
}
|
|
2713
|
+
if (isTempRendered) {
|
|
2714
|
+
var parentElem = target.parentElement.querySelector('.e-rule-value');
|
|
2715
|
+
if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {
|
|
2716
|
+
parentElem.style.width = '100%';
|
|
2717
|
+
}
|
|
2718
|
+
else {
|
|
2719
|
+
parentElem.style.width = '200px';
|
|
2720
|
+
}
|
|
2542
2721
|
}
|
|
2543
2722
|
else {
|
|
2544
|
-
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2548
|
-
|
|
2723
|
+
removeClass([target.nextElementSibling], 'e-template-value');
|
|
2724
|
+
var inputLen = 1;
|
|
2725
|
+
if (tempRule.type === 'boolean') {
|
|
2726
|
+
inputLen = this.selectedColumn.values ? this.selectedColumn.values.length : 2;
|
|
2727
|
+
}
|
|
2728
|
+
else {
|
|
2729
|
+
inputLen = (operator && operator.toLowerCase().indexOf('between') > -1) ? 2 : 1;
|
|
2730
|
+
}
|
|
2731
|
+
for (var i = 0; i < inputLen; i++) {
|
|
2732
|
+
var valElem = this.createElement('input', { attrs: { type: 'text', id: parentId + '_valuekey' + i } });
|
|
2733
|
+
target.nextElementSibling.appendChild(valElem);
|
|
2734
|
+
}
|
|
2549
2735
|
}
|
|
2736
|
+
this.renderControls(target, itemData, rule, tempRule, isTempRendered);
|
|
2550
2737
|
}
|
|
2551
|
-
this.renderControls(target, itemData, rule, tempRule, isTempRendered);
|
|
2552
2738
|
}
|
|
2553
2739
|
else {
|
|
2554
2740
|
var parentElem = target.parentElement.querySelector('.e-rule-value');
|
|
@@ -2982,8 +3168,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2982
3168
|
var i;
|
|
2983
3169
|
var len;
|
|
2984
3170
|
var tooltip;
|
|
2985
|
-
var popupElement;
|
|
2986
3171
|
_super.prototype.destroy.call(this);
|
|
3172
|
+
var popupElement;
|
|
2987
3173
|
element = this.element.querySelectorAll('.e-addrulegroup');
|
|
2988
3174
|
len = element.length;
|
|
2989
3175
|
for (i = 0; i < len; i++) {
|
|
@@ -3069,7 +3255,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3069
3255
|
if (grouplen) {
|
|
3070
3256
|
this.isPublic = true;
|
|
3071
3257
|
for (var i = 0, len = groups.length; i < len; i++) {
|
|
3072
|
-
this.updatedRule = {
|
|
3258
|
+
this.updatedRule = { isLocked: groups[i].isLocked, condition: groups[i].condition,
|
|
3259
|
+
not: groups[i].not };
|
|
3073
3260
|
this.importRules(groups[i], groupElem, false, groups[i].not);
|
|
3074
3261
|
}
|
|
3075
3262
|
this.isPublic = false;
|
|
@@ -3077,15 +3264,27 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3077
3264
|
else {
|
|
3078
3265
|
var condition = 'and';
|
|
3079
3266
|
var not = false;
|
|
3267
|
+
var isLocked = false;
|
|
3080
3268
|
if (this.updatedRule) {
|
|
3081
3269
|
condition = this.updatedRule.condition;
|
|
3082
3270
|
not = this.updatedRule.not;
|
|
3271
|
+
isLocked = this.updatedRule.isLocked;
|
|
3083
3272
|
}
|
|
3084
|
-
if (this.
|
|
3085
|
-
|
|
3273
|
+
if (this.groupIndex < 0) {
|
|
3274
|
+
if (this.enableNotCondition) {
|
|
3275
|
+
rule.rules.push({ 'condition': condition, 'not': not, rules: [] });
|
|
3276
|
+
}
|
|
3277
|
+
else {
|
|
3278
|
+
rule.rules.push({ 'condition': condition, rules: [] });
|
|
3279
|
+
}
|
|
3086
3280
|
}
|
|
3087
3281
|
else {
|
|
3088
|
-
|
|
3282
|
+
if (this.enableNotCondition) {
|
|
3283
|
+
rule.rules.splice(this.groupIndex + 1, 0, { condition: condition, not: not, rules: [], isLocked: isLocked });
|
|
3284
|
+
}
|
|
3285
|
+
else {
|
|
3286
|
+
rule.rules.splice(this.groupIndex + 1, 0, { condition: condition, rules: [], isLocked: isLocked });
|
|
3287
|
+
}
|
|
3089
3288
|
}
|
|
3090
3289
|
}
|
|
3091
3290
|
if (!this.headerTemplate) {
|
|
@@ -3268,17 +3467,53 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3268
3467
|
this.refresh();
|
|
3269
3468
|
break;
|
|
3270
3469
|
case 'showButtons':
|
|
3271
|
-
if (newProp.showButtons.
|
|
3272
|
-
|
|
3470
|
+
if (!isNullOrUndefined(newProp.showButtons.lockGroup)) {
|
|
3471
|
+
if (newProp.showButtons.lockGroup) {
|
|
3472
|
+
removeClass(this.element.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');
|
|
3473
|
+
}
|
|
3474
|
+
else {
|
|
3475
|
+
addClass(this.element.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');
|
|
3476
|
+
}
|
|
3273
3477
|
}
|
|
3274
|
-
|
|
3275
|
-
|
|
3478
|
+
if (!isNullOrUndefined(newProp.showButtons.lockRule)) {
|
|
3479
|
+
if (newProp.showButtons.lockRule) {
|
|
3480
|
+
removeClass(this.element.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');
|
|
3481
|
+
}
|
|
3482
|
+
else {
|
|
3483
|
+
addClass(this.element.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');
|
|
3484
|
+
}
|
|
3276
3485
|
}
|
|
3277
|
-
if (newProp.showButtons.
|
|
3278
|
-
|
|
3486
|
+
if (!isNullOrUndefined(newProp.showButtons.cloneGroup)) {
|
|
3487
|
+
if (newProp.showButtons.cloneGroup) {
|
|
3488
|
+
removeClass(this.element.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');
|
|
3489
|
+
}
|
|
3490
|
+
else {
|
|
3491
|
+
addClass(this.element.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');
|
|
3492
|
+
}
|
|
3279
3493
|
}
|
|
3280
|
-
|
|
3281
|
-
|
|
3494
|
+
if (!isNullOrUndefined(newProp.showButtons.cloneRule)) {
|
|
3495
|
+
if (newProp.showButtons.cloneRule) {
|
|
3496
|
+
removeClass(this.element.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');
|
|
3497
|
+
}
|
|
3498
|
+
else {
|
|
3499
|
+
addClass(this.element.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');
|
|
3500
|
+
}
|
|
3501
|
+
}
|
|
3502
|
+
if (!isNullOrUndefined(newProp.showButtons.ruleDelete)) {
|
|
3503
|
+
if (newProp.showButtons.ruleDelete) {
|
|
3504
|
+
removeClass(this.element.querySelectorAll('.e-rule-delete'), 'e-button-hide');
|
|
3505
|
+
}
|
|
3506
|
+
else {
|
|
3507
|
+
addClass(this.element.querySelectorAll('.e-rule-delete'), 'e-button-hide');
|
|
3508
|
+
}
|
|
3509
|
+
}
|
|
3510
|
+
if (!isNullOrUndefined(newProp.showButtons.groupDelete)) {
|
|
3511
|
+
if (newProp.showButtons.groupDelete) {
|
|
3512
|
+
removeClass(this.element.querySelectorAll('.e-deletegroup'), 'e-button-hide');
|
|
3513
|
+
}
|
|
3514
|
+
else {
|
|
3515
|
+
addClass(this.element.querySelectorAll('.e-deletegroup'), 'e-button-hide');
|
|
3516
|
+
}
|
|
3282
3517
|
}
|
|
3283
3518
|
break;
|
|
3284
3519
|
case 'cssClass':
|
|
@@ -3355,8 +3590,11 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3355
3590
|
this.element.id = this.element.id || getUniqueID('ej2-querybuilder');
|
|
3356
3591
|
this.defaultLocale = {
|
|
3357
3592
|
StartsWith: 'Starts With',
|
|
3593
|
+
DoesNotStartWith: 'Does Not Start With',
|
|
3358
3594
|
EndsWith: 'Ends With',
|
|
3595
|
+
DoesNotEndWith: 'Does Not End With',
|
|
3359
3596
|
Contains: 'Contains',
|
|
3597
|
+
DoesNotContain: 'Does Not Contain',
|
|
3360
3598
|
NotLike: 'Not Like',
|
|
3361
3599
|
Like: 'Like',
|
|
3362
3600
|
Equal: 'Equal',
|
|
@@ -3390,7 +3628,13 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3390
3628
|
IsNotNull: 'Is Not Null',
|
|
3391
3629
|
True: 'true',
|
|
3392
3630
|
False: 'false',
|
|
3393
|
-
AddButton: 'Add Group/Condition'
|
|
3631
|
+
AddButton: 'Add Group/Condition',
|
|
3632
|
+
CloneGroup: 'Clone Group',
|
|
3633
|
+
LockGroup: 'Lock Group',
|
|
3634
|
+
CloneRule: 'Clone Rule',
|
|
3635
|
+
LockRule: 'Lock Rule',
|
|
3636
|
+
UnlockRule: 'Unlock Rule',
|
|
3637
|
+
UnlockGroup: 'Unlock Group'
|
|
3394
3638
|
};
|
|
3395
3639
|
this.l10n = new L10n('querybuilder', this.defaultLocale, this.locale);
|
|
3396
3640
|
this.intl = new Internationalization(this.locale);
|
|
@@ -3403,8 +3647,11 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3403
3647
|
this.customOperators = {
|
|
3404
3648
|
stringOperator: [
|
|
3405
3649
|
{ value: 'startswith', key: this.l10n.getConstant('StartsWith') },
|
|
3650
|
+
{ value: 'notstartswith', key: this.l10n.getConstant('DoesNotStartWith') },
|
|
3406
3651
|
{ value: 'endswith', key: this.l10n.getConstant('EndsWith') },
|
|
3652
|
+
{ value: 'notendswith', key: this.l10n.getConstant('DoesNotEndWith') },
|
|
3407
3653
|
{ value: 'contains', key: this.l10n.getConstant('Contains') },
|
|
3654
|
+
{ value: 'notcontains', key: this.l10n.getConstant('DoesNotContain') },
|
|
3408
3655
|
{ value: 'equal', key: this.l10n.getConstant('Equal') },
|
|
3409
3656
|
{ value: 'notequal', key: this.l10n.getConstant('NotEqual') },
|
|
3410
3657
|
{ value: 'in', key: this.l10n.getConstant('In') },
|
|
@@ -3418,7 +3665,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3418
3665
|
{ value: 'greaterthanorequal', key: this.l10n.getConstant('GreaterThanOrEqual') },
|
|
3419
3666
|
{ value: 'lessthan', key: this.l10n.getConstant('LessThan') },
|
|
3420
3667
|
{ value: 'lessthanorequal', key: this.l10n.getConstant('LessThanOrEqual') },
|
|
3421
|
-
{ value: 'notequal', key: this.l10n.getConstant('NotEqual') }
|
|
3668
|
+
{ value: 'notequal', key: this.l10n.getConstant('NotEqual') },
|
|
3669
|
+
{ value: 'between', key: this.l10n.getConstant('Between') },
|
|
3670
|
+
{ value: 'notbetween', key: this.l10n.getConstant('NotBetween') }
|
|
3422
3671
|
],
|
|
3423
3672
|
booleanOperator: [
|
|
3424
3673
|
{ value: 'equal', key: this.l10n.getConstant('Equal') },
|
|
@@ -3743,6 +3992,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3743
3992
|
this.setProperties({ rule: rule }, true);
|
|
3744
3993
|
rule = this.getRuleCollection(this.rule, false);
|
|
3745
3994
|
this.importRules(this.rule, this.element.querySelector('.e-group-container'), true, this.rule.not, isRoot);
|
|
3995
|
+
if (rule.isLocked) {
|
|
3996
|
+
var lockGrpTarget = this.element.querySelector('.e-group-container').querySelector('.e-lock-grp-btn');
|
|
3997
|
+
this.groupLock(lockGrpTarget);
|
|
3998
|
+
}
|
|
3746
3999
|
this.isImportRules = false;
|
|
3747
4000
|
};
|
|
3748
4001
|
QueryBuilder.prototype.keyBoardHandler = function (e) {
|
|
@@ -3838,7 +4091,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3838
4091
|
rule.value !== undefined)) || (customObj && customObj.isQuestion)) {
|
|
3839
4092
|
var condition = rule.condition;
|
|
3840
4093
|
rule = {
|
|
3841
|
-
'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value
|
|
4094
|
+
'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value,
|
|
4095
|
+
'isLocked': rule.isLocked
|
|
3842
4096
|
};
|
|
3843
4097
|
if (condition) {
|
|
3844
4098
|
rule.condition = condition;
|
|
@@ -3847,6 +4101,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3847
4101
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3848
4102
|
rule.custom = customObj;
|
|
3849
4103
|
}
|
|
4104
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3850
4105
|
if ((rule.operator === 'in' || rule.operator === 'notin') && rule.value && rule.value.length === 0) {
|
|
3851
4106
|
rule = {};
|
|
3852
4107
|
}
|
|
@@ -3872,10 +4127,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3872
4127
|
}
|
|
3873
4128
|
else {
|
|
3874
4129
|
if (this.enableNotCondition) {
|
|
3875
|
-
rule = { 'condition': rule.condition, 'rules': rule.rules, 'not': rule.not };
|
|
4130
|
+
rule = { 'condition': rule.condition, 'rules': rule.rules, 'not': rule.not, 'isLocked': rule.isLocked };
|
|
3876
4131
|
}
|
|
3877
4132
|
else {
|
|
3878
|
-
rule = { 'condition': rule.condition, 'rules': rule.rules };
|
|
4133
|
+
rule = { 'condition': rule.condition, 'rules': rule.rules, 'isLocked': rule.isLocked };
|
|
3879
4134
|
}
|
|
3880
4135
|
if (customObj) {
|
|
3881
4136
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -4040,11 +4295,20 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4040
4295
|
var ruleValue;
|
|
4041
4296
|
var ignoreCase = false;
|
|
4042
4297
|
var column;
|
|
4043
|
-
var ignoreOper = ['notcontains', 'notstartswith', 'notendswith'];
|
|
4044
4298
|
if (!ruleColl) {
|
|
4045
4299
|
return pred;
|
|
4046
4300
|
}
|
|
4047
4301
|
for (var i = 0, len = ruleColl.length; i < len; i++) {
|
|
4302
|
+
var operator = ruleColl[i].operator;
|
|
4303
|
+
if (operator === 'notstartswith') {
|
|
4304
|
+
operator = 'doesnotstartwith';
|
|
4305
|
+
}
|
|
4306
|
+
else if (operator === 'notendswith') {
|
|
4307
|
+
operator = 'doesnotendwith';
|
|
4308
|
+
}
|
|
4309
|
+
else if (operator === 'notcontains') {
|
|
4310
|
+
operator = 'doesnotcontain';
|
|
4311
|
+
}
|
|
4048
4312
|
var keys = Object.keys(ruleColl[i]);
|
|
4049
4313
|
ignoreCase = false;
|
|
4050
4314
|
if (keys.indexOf('rules') > -1 && ruleColl[i].rules) {
|
|
@@ -4063,7 +4327,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4063
4327
|
}
|
|
4064
4328
|
}
|
|
4065
4329
|
}
|
|
4066
|
-
else if (!isNullOrUndefined(
|
|
4330
|
+
else if (!isNullOrUndefined(operator) && !isNullOrUndefined(operator.length)) {
|
|
4067
4331
|
var oper = ruleColl[i].operator.toLowerCase();
|
|
4068
4332
|
var isDateFilter = false;
|
|
4069
4333
|
var dateOperColl = ['equal', 'notequal', 'greaterthan', 'greaterthanorequal', 'lessthan', 'lessthanorequal'];
|
|
@@ -4094,23 +4358,20 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4094
4358
|
}
|
|
4095
4359
|
if (i === 0) {
|
|
4096
4360
|
if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 || oper.indexOf('null') > -1 ||
|
|
4097
|
-
oper.indexOf('empty') > -1) && oper.indexOf('
|
|
4361
|
+
oper.indexOf('empty') > -1) && (oper.indexOf('contain') < 0)) {
|
|
4098
4362
|
pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue) :
|
|
4099
4363
|
this.arrayPredicate(ruleColl[i]);
|
|
4100
4364
|
}
|
|
4101
4365
|
else {
|
|
4102
4366
|
var value = ruleValue;
|
|
4103
|
-
if (value !== ''
|
|
4104
|
-
pred = new Predicate(ruleColl[i].field,
|
|
4367
|
+
if (value !== '') {
|
|
4368
|
+
pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4105
4369
|
}
|
|
4106
4370
|
}
|
|
4107
4371
|
}
|
|
4108
4372
|
else {
|
|
4109
|
-
if (ignoreOper.indexOf(oper) > -1) {
|
|
4110
|
-
continue;
|
|
4111
|
-
}
|
|
4112
4373
|
if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 ||
|
|
4113
|
-
oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) && oper.indexOf('
|
|
4374
|
+
oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) && oper.indexOf('contain') < 0) {
|
|
4114
4375
|
pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue, pred, rule.condition) :
|
|
4115
4376
|
this.arrayPredicate(ruleColl[i], pred, rule.condition);
|
|
4116
4377
|
}
|
|
@@ -4119,19 +4380,19 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4119
4380
|
var value = ruleValue;
|
|
4120
4381
|
if (pred && value !== '') {
|
|
4121
4382
|
pred
|
|
4122
|
-
= pred.and(ruleColl[i].field,
|
|
4383
|
+
= pred.and(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
|
else {
|
|
4129
4390
|
var value = ruleValue;
|
|
4130
4391
|
if (pred && value !== '') {
|
|
4131
|
-
pred = pred.or(ruleColl[i].field,
|
|
4392
|
+
pred = pred.or(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4132
4393
|
}
|
|
4133
4394
|
else if (value !== '') {
|
|
4134
|
-
pred = new Predicate(ruleColl[i].field,
|
|
4395
|
+
pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);
|
|
4135
4396
|
}
|
|
4136
4397
|
}
|
|
4137
4398
|
}
|
|
@@ -4411,15 +4672,28 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4411
4672
|
for (var i = 0, len = ruleColl.length; i < len; i++) {
|
|
4412
4673
|
var keys = Object.keys(ruleColl[i]);
|
|
4413
4674
|
if (!isNullOrUndefined(ruleColl[i].rules) && keys.indexOf('rules') > -1 && (ruleColl[i].rules.length !== 0)) {
|
|
4675
|
+
if (this.element.querySelectorAll('.e-group-container').length > this.maxGroupCount) {
|
|
4676
|
+
return null;
|
|
4677
|
+
}
|
|
4414
4678
|
parentElem = this.renderGroup(ruleColl[i], ruleColl[i].condition, parentElem, ruleColl[i].not);
|
|
4415
4679
|
parentElem = this.importRules(ruleColl[i], parentElem, true);
|
|
4416
4680
|
}
|
|
4417
4681
|
else {
|
|
4418
4682
|
this.renderRule(ruleColl[i], parentElem);
|
|
4419
4683
|
}
|
|
4684
|
+
if (!isNullOrUndefined(ruleColl[i].rules) && ruleColl[i].isLocked) {
|
|
4685
|
+
var lockGrpTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-grp-btn');
|
|
4686
|
+
this.groupLock(lockGrpTarget);
|
|
4687
|
+
}
|
|
4688
|
+
if (isNullOrUndefined(ruleColl[i].rules) && ruleColl[i].isLocked) {
|
|
4689
|
+
var lockRuleTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-rule-btn');
|
|
4690
|
+
this.ruleLock(lockRuleTarget);
|
|
4691
|
+
}
|
|
4420
4692
|
}
|
|
4421
4693
|
}
|
|
4422
|
-
|
|
4694
|
+
if (parentElem) {
|
|
4695
|
+
parentElem = closest(parentElem, '.e-rule-list');
|
|
4696
|
+
}
|
|
4423
4697
|
if (parentElem) {
|
|
4424
4698
|
parentElem = closest(parentElem, '.e-group-container');
|
|
4425
4699
|
}
|
|
@@ -4428,7 +4702,20 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4428
4702
|
QueryBuilder.prototype.renderGroup = function (rule, condition, parentElem, not, isRoot) {
|
|
4429
4703
|
this.addGroupElement(true, parentElem, condition, false, not, isRoot, rule); //Child group
|
|
4430
4704
|
var element = parentElem.querySelectorAll('.e-group-container');
|
|
4431
|
-
|
|
4705
|
+
var cloneElem = parentElem.querySelector('.e-rule-list').children;
|
|
4706
|
+
if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isMiddleGroup) {
|
|
4707
|
+
this.isMiddleGroup = false;
|
|
4708
|
+
this.cloneGrpBtnClick = false;
|
|
4709
|
+
return cloneElem[this.groupIndex + 1]; // group added in the middle
|
|
4710
|
+
}
|
|
4711
|
+
else if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isLastGroup) {
|
|
4712
|
+
this.isLastGroup = false;
|
|
4713
|
+
this.cloneGrpBtnClick = false;
|
|
4714
|
+
return cloneElem[cloneElem.length - 1]; // group added in the end
|
|
4715
|
+
}
|
|
4716
|
+
else {
|
|
4717
|
+
return element[element.length - 1];
|
|
4718
|
+
}
|
|
4432
4719
|
};
|
|
4433
4720
|
QueryBuilder.prototype.renderRule = function (rule, parentElem) {
|
|
4434
4721
|
if (parentElem.className.indexOf('e-group-container') > -1) {
|
|
@@ -4627,15 +4914,19 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4627
4914
|
valueStr += rule.value ? '("%' + rule.value + '%")' : '(' + rule.value + ')';
|
|
4628
4915
|
}
|
|
4629
4916
|
else {
|
|
4630
|
-
if (rule.type === 'number' || typeof rule.value === 'boolean' ||
|
|
4917
|
+
if (rule.type === 'number' || typeof rule.value === 'boolean' ||
|
|
4918
|
+
(rule.value === null && (rule.operator.toString().indexOf('empty') < -1))) {
|
|
4631
4919
|
valueStr += rule.value;
|
|
4632
4920
|
}
|
|
4921
|
+
else if (rule.operator.toString().indexOf('empty') > -1) {
|
|
4922
|
+
valueStr += '""';
|
|
4923
|
+
}
|
|
4633
4924
|
else {
|
|
4634
4925
|
valueStr += '"' + rule.value + '"';
|
|
4635
4926
|
}
|
|
4636
4927
|
}
|
|
4637
4928
|
}
|
|
4638
|
-
if (rule.operator.toString().indexOf('null') > -1
|
|
4929
|
+
if (rule.operator.toString().indexOf('null') > -1) {
|
|
4639
4930
|
if (enableEscape) {
|
|
4640
4931
|
rule.field = '`' + rule.field + '`';
|
|
4641
4932
|
}
|
|
@@ -4647,6 +4938,13 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4647
4938
|
queryStr += rule.field + ' ' + ruleOpertor;
|
|
4648
4939
|
}
|
|
4649
4940
|
else {
|
|
4941
|
+
var custOper = ruleOpertor;
|
|
4942
|
+
if (rule.operator === 'isempty') {
|
|
4943
|
+
custOper = '=';
|
|
4944
|
+
}
|
|
4945
|
+
else if (rule.operator === 'isnotempty') {
|
|
4946
|
+
custOper = '!=';
|
|
4947
|
+
}
|
|
4650
4948
|
if (enableEscape) {
|
|
4651
4949
|
rule.field = '`' + rule.field + '`';
|
|
4652
4950
|
}
|
|
@@ -4655,7 +4953,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4655
4953
|
rule.field = '"' + rule.field + '"';
|
|
4656
4954
|
}
|
|
4657
4955
|
}
|
|
4658
|
-
queryStr += rule.field + ' ' +
|
|
4956
|
+
queryStr += rule.field + ' ' + custOper + ' ' + valueStr;
|
|
4659
4957
|
}
|
|
4660
4958
|
if (rule.condition && rule.condition !== '') {
|
|
4661
4959
|
condition = rule.condition;
|
|
@@ -4685,7 +4983,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4685
4983
|
* Sets the rules from the sql query.
|
|
4686
4984
|
*
|
|
4687
4985
|
* @param {string} sqlString - 'sql String' to be passed to set the rule.
|
|
4688
|
-
* @param {boolean} sqlLocale -
|
|
4986
|
+
* @param {boolean} sqlLocale - Optional. Set `true` if Localization for Sql query.
|
|
4689
4987
|
* @returns {void}
|
|
4690
4988
|
*/
|
|
4691
4989
|
QueryBuilder.prototype.setRulesFromSql = function (sqlString, sqlLocale) {
|
|
@@ -4717,15 +5015,173 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4717
5015
|
*
|
|
4718
5016
|
* @param {RuleModel} rule - 'rule' to be passed to get the sql.
|
|
4719
5017
|
* @param {boolean} allowEscape - Set `true` if it exclude the escape character.
|
|
4720
|
-
*
|
|
4721
|
-
* @returns {
|
|
5018
|
+
* @param {boolean} sqlLocale - Set `true` if Localization for Sql query.
|
|
5019
|
+
* @returns {string} - Sql query from rules.
|
|
4722
5020
|
*/
|
|
4723
5021
|
QueryBuilder.prototype.getSqlFromRules = function (rule, allowEscape, sqlLocale) {
|
|
4724
5022
|
if (!rule) {
|
|
4725
5023
|
rule = this.getValidRules();
|
|
4726
5024
|
}
|
|
4727
5025
|
rule = this.getRuleCollection(rule, false);
|
|
4728
|
-
|
|
5026
|
+
var sqlString = this.getSqlString(this.getValidRules(rule), allowEscape, null, sqlLocale).replace(/"/g, '\'');
|
|
5027
|
+
return sqlString;
|
|
5028
|
+
};
|
|
5029
|
+
/**
|
|
5030
|
+
* Gets the parameter SQL query from rules.
|
|
5031
|
+
*
|
|
5032
|
+
* @param {RuleModel} rule – Specify the rule to be passed to get the parameter sql string.
|
|
5033
|
+
* @returns {ParameterizedSql} – Parameterized SQL query from rules.
|
|
5034
|
+
*/
|
|
5035
|
+
QueryBuilder.prototype.getParameterizedSql = function (rule) {
|
|
5036
|
+
if (!rule) {
|
|
5037
|
+
rule = this.getValidRules();
|
|
5038
|
+
}
|
|
5039
|
+
var obj = { sql: null };
|
|
5040
|
+
this.notify('query-library', { prop: 'getParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
|
|
5041
|
+
return obj['sql'];
|
|
5042
|
+
};
|
|
5043
|
+
/**
|
|
5044
|
+
* Sets the rules from the parameter sql query.
|
|
5045
|
+
*
|
|
5046
|
+
* @param { ParameterizedSql} sqlQuery – Specifies the parameter SQL to be passed to set the rule and load it to the query builder.
|
|
5047
|
+
* @returns {void}
|
|
5048
|
+
*/
|
|
5049
|
+
QueryBuilder.prototype.setParameterizedSql = function (sqlQuery) {
|
|
5050
|
+
var obj = { sql: null };
|
|
5051
|
+
this.notify('query-library', { prop: 'convertParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
|
|
5052
|
+
var sql = obj['sql'];
|
|
5053
|
+
if (sql) {
|
|
5054
|
+
sql = sql.replace(/`/g, '');
|
|
5055
|
+
var ruleModel = this.getRulesFromSql(sql);
|
|
5056
|
+
this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
|
|
5057
|
+
}
|
|
5058
|
+
};
|
|
5059
|
+
/**
|
|
5060
|
+
* Gets the named parameter SQL query from rules.
|
|
5061
|
+
*
|
|
5062
|
+
* @param {RuleModel} rule – Specify the rule to be passed to get the named parameter SQL string.
|
|
5063
|
+
* @returns {ParameterizedNamedSql} – Parameterized Named SQL query from rules.
|
|
5064
|
+
*/
|
|
5065
|
+
QueryBuilder.prototype.getParameterizedNamedSql = function (rule) {
|
|
5066
|
+
if (!rule) {
|
|
5067
|
+
rule = this.getValidRules();
|
|
5068
|
+
}
|
|
5069
|
+
var obj = { sql: null };
|
|
5070
|
+
this.notify('query-library', { prop: 'getNamedParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
|
|
5071
|
+
return obj['sql'];
|
|
5072
|
+
};
|
|
5073
|
+
/**
|
|
5074
|
+
* Sets the rules from the named parameter SQL query.
|
|
5075
|
+
*
|
|
5076
|
+
* @param { ParameterizedNamedSql } sqlQuery – Specifies the named parameter SQL to be passed to set the rule and load it to the query builder.
|
|
5077
|
+
* @returns {void}
|
|
5078
|
+
*/
|
|
5079
|
+
QueryBuilder.prototype.setParameterizedNamedSql = function (sqlQuery) {
|
|
5080
|
+
var obj = { sql: null };
|
|
5081
|
+
this.notify('query-library', { prop: 'convertNamedParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
|
|
5082
|
+
var sql = obj['sql'];
|
|
5083
|
+
if (sql) {
|
|
5084
|
+
sql = sql.replace(/`/g, '');
|
|
5085
|
+
var ruleModel = this.getRulesFromSql(sql);
|
|
5086
|
+
this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
|
|
5087
|
+
}
|
|
5088
|
+
};
|
|
5089
|
+
/**
|
|
5090
|
+
* Set the rules from Mongo query.
|
|
5091
|
+
*
|
|
5092
|
+
* @param {string} mongoQuery - 'sql String' to be passed to get the rule.
|
|
5093
|
+
* @param {boolean} mongoLocale - Set `true` if Localization for Mongo query.
|
|
5094
|
+
* @returns {void}
|
|
5095
|
+
*/
|
|
5096
|
+
QueryBuilder.prototype.setMongoQuery = function (mongoQuery, mongoLocale) {
|
|
5097
|
+
this.rule = { condition: 'and', not: false, rules: [] };
|
|
5098
|
+
this.notify('query-library', { prop: 'mongoParser', onPropertyChange: false, value: { mongoQuery: JSON.parse(mongoQuery), rule: this.rule, mongoLocale: mongoLocale } });
|
|
5099
|
+
};
|
|
5100
|
+
/**
|
|
5101
|
+
* Gets the Mongo query from rules.
|
|
5102
|
+
*
|
|
5103
|
+
* @param {RuleModel} rule - 'rule' to be passed to get the sql.
|
|
5104
|
+
* @returns {object} - Sql query from rules.
|
|
5105
|
+
*/
|
|
5106
|
+
QueryBuilder.prototype.getMongoQuery = function (rule) {
|
|
5107
|
+
if (!rule) {
|
|
5108
|
+
rule = this.getValidRules();
|
|
5109
|
+
}
|
|
5110
|
+
var obj = { mongoQuery: null };
|
|
5111
|
+
this.notify('query-library', { prop: 'getMongoFromRules', onPropertyChange: false, value: { rule: rule, mongoQuery: '', obj: obj } });
|
|
5112
|
+
return obj['mongoQuery'];
|
|
5113
|
+
};
|
|
5114
|
+
/**
|
|
5115
|
+
* Clones the rule based on the rule ID to the specific group.
|
|
5116
|
+
*
|
|
5117
|
+
* @param {string} ruleID - Specifies the ruleID that needs to be cloned.
|
|
5118
|
+
* @param {string} groupID - Specifies the groupID in which the rule to be cloned.
|
|
5119
|
+
* @param {number} index - Specifies the index to insert the cloned rule inside the group.
|
|
5120
|
+
* @returns {void}
|
|
5121
|
+
*/
|
|
5122
|
+
QueryBuilder.prototype.cloneRule = function (ruleID, groupID, index) {
|
|
5123
|
+
var getRule = this.getRule(ruleID.replace(this.element.id + '_', ''));
|
|
5124
|
+
var isCloneRule = this.showButtons.cloneRule;
|
|
5125
|
+
groupID = groupID.replace(this.element.id + '_', '');
|
|
5126
|
+
this.ruleIndex = index;
|
|
5127
|
+
this.cloneRuleBtnClick = true;
|
|
5128
|
+
this.showButtons.cloneRule = true;
|
|
5129
|
+
this.addRules([{
|
|
5130
|
+
'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
|
|
5131
|
+
'value': getRule.value
|
|
5132
|
+
}], groupID);
|
|
5133
|
+
this.ruleIndex = -1;
|
|
5134
|
+
this.cloneRuleBtnClick = false;
|
|
5135
|
+
this.showButtons.cloneRule = isCloneRule;
|
|
5136
|
+
isCloneRule = false;
|
|
5137
|
+
};
|
|
5138
|
+
/**
|
|
5139
|
+
* Clones the group based on the group ID to the specific group.
|
|
5140
|
+
*
|
|
5141
|
+
* @param {string} groupID - Specifies the groupID that needs to be cloned.
|
|
5142
|
+
* @param {string} parentGroupID - Specifies the parentGroupID in which the group to be cloned.
|
|
5143
|
+
* @param {number} index - Specifies the index to insert the cloned group inside the parent group.
|
|
5144
|
+
* @returns {void}
|
|
5145
|
+
*/
|
|
5146
|
+
QueryBuilder.prototype.cloneGroup = function (groupID, parentGroupID, index) {
|
|
5147
|
+
parentGroupID = parentGroupID.replace(this.element.id + '_', '');
|
|
5148
|
+
var group = this.getGroup(parentGroupID);
|
|
5149
|
+
var isCloneGroup = this.showButtons.cloneGroup;
|
|
5150
|
+
groupID = groupID.replace(this.element.id + '_', '');
|
|
5151
|
+
this.groupIndex = index;
|
|
5152
|
+
this.cloneGrpBtnClick = true;
|
|
5153
|
+
this.showButtons.cloneGroup = true;
|
|
5154
|
+
this.addGroups([{ 'condition': group.condition, 'not': group.not, 'rules': group.rules }], groupID);
|
|
5155
|
+
this.groupIndex = -1;
|
|
5156
|
+
this.cloneGrpBtnClick = false;
|
|
5157
|
+
this.showButtons.cloneGroup = isCloneGroup;
|
|
5158
|
+
isCloneGroup = false;
|
|
5159
|
+
};
|
|
5160
|
+
/**
|
|
5161
|
+
* Locks the rule based on the rule ID.
|
|
5162
|
+
*
|
|
5163
|
+
* @param {string} ruleID - Specifies the ruleID that needs to be locked.
|
|
5164
|
+
* @returns {void}
|
|
5165
|
+
*/
|
|
5166
|
+
QueryBuilder.prototype.lockRule = function (ruleID) {
|
|
5167
|
+
if (ruleID.indexOf(this.element.id) < 0) {
|
|
5168
|
+
ruleID = this.element.id + '_' + ruleID;
|
|
5169
|
+
}
|
|
5170
|
+
var target = document.getElementById(ruleID).querySelectorAll('.e-lock-rule-btn')[0];
|
|
5171
|
+
this.ruleLock(target);
|
|
5172
|
+
};
|
|
5173
|
+
/**
|
|
5174
|
+
* Locks the group based on the group ID
|
|
5175
|
+
*
|
|
5176
|
+
* @param {string} groupID - Specifies the groupID that needs to be locked.
|
|
5177
|
+
* @returns {void}
|
|
5178
|
+
*/
|
|
5179
|
+
QueryBuilder.prototype.lockGroup = function (groupID) {
|
|
5180
|
+
if (groupID.indexOf(this.element.id) < 0) {
|
|
5181
|
+
groupID = this.element.id + '_' + groupID;
|
|
5182
|
+
}
|
|
5183
|
+
var target = document.getElementById(groupID).querySelectorAll('.e-lock-grp-btn')[0];
|
|
5184
|
+
this.groupLock(target);
|
|
4729
5185
|
};
|
|
4730
5186
|
QueryBuilder.prototype.sqlParser = function (sqlString, sqlLocale) {
|
|
4731
5187
|
var st = 0;
|
|
@@ -4927,13 +5383,13 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4927
5383
|
for (var i = 0; i < localeOperator.length; i++) {
|
|
4928
5384
|
if (this.sqlOperators[localeOperator[i]] === operator.toUpperCase()) {
|
|
4929
5385
|
if (value && value.indexOf('%') === 0 && value[value.length - 1] === '%') {
|
|
4930
|
-
return (
|
|
5386
|
+
return (operator.toUpperCase() === 'NOT LIKE') ? 'notcontains' : 'contains';
|
|
4931
5387
|
}
|
|
4932
5388
|
else if (value && value.indexOf('%') !== 0 && value.indexOf('%') === value.length - 1) {
|
|
4933
|
-
return (
|
|
5389
|
+
return (operator.toUpperCase() === 'NOT LIKE') ? 'notstartswith' : 'startswith';
|
|
4934
5390
|
}
|
|
4935
5391
|
else if (value && value.indexOf('%') === 0 && value.indexOf('%') !== value.length - 1) {
|
|
4936
|
-
return (
|
|
5392
|
+
return (operator.toUpperCase() === 'NOT LIKE') ? 'notendswith' : 'endswith';
|
|
4937
5393
|
}
|
|
4938
5394
|
return localeOperator[i];
|
|
4939
5395
|
}
|
|
@@ -5118,6 +5574,15 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5118
5574
|
}
|
|
5119
5575
|
else if (parser[i + 1][0] === 'Operators') {
|
|
5120
5576
|
rule.operator = this.getOperator(parser[i + 2][1], parser[i + 1][1], sqlLocale);
|
|
5577
|
+
var isEmptyOper = false;
|
|
5578
|
+
if (rule.operator == "equal" && parser[i + 2][0] === "String" && parser[i + 2][1] === "''") {
|
|
5579
|
+
rule.operator = "isempty";
|
|
5580
|
+
isEmptyOper = true;
|
|
5581
|
+
}
|
|
5582
|
+
else if (rule.operator == "notequal" && parser[i + 2][0] === "String" && parser[i + 2][1] === "''") {
|
|
5583
|
+
rule.operator = "isnotempty";
|
|
5584
|
+
isEmptyOper = true;
|
|
5585
|
+
}
|
|
5121
5586
|
if (parser[i + 2][0] === 'Number') {
|
|
5122
5587
|
rule.type = 'number';
|
|
5123
5588
|
rule.value = Number(parser[i + 2][1]);
|
|
@@ -5174,6 +5639,301 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5174
5639
|
}
|
|
5175
5640
|
return rules;
|
|
5176
5641
|
};
|
|
5642
|
+
/**
|
|
5643
|
+
* Clone the Group
|
|
5644
|
+
*
|
|
5645
|
+
* @param {Element | string} target - 'target' to be passed to clone the group.
|
|
5646
|
+
* @returns {void}
|
|
5647
|
+
*/
|
|
5648
|
+
QueryBuilder.prototype.groupClone = function (target) {
|
|
5649
|
+
var groupElem = target.closest('.e-rule-list').closest('.e-group-container');
|
|
5650
|
+
var targetGrpId;
|
|
5651
|
+
var groupId;
|
|
5652
|
+
if (typeof target === 'string') {
|
|
5653
|
+
groupId = this.element.id + '_' + target;
|
|
5654
|
+
target = document.getElementById(groupId);
|
|
5655
|
+
}
|
|
5656
|
+
else {
|
|
5657
|
+
targetGrpId = target.id.replace(this.element.id + '_', '');
|
|
5658
|
+
groupId = groupElem.id.replace(this.element.id + '_', '');
|
|
5659
|
+
}
|
|
5660
|
+
var group = this.getGroup(targetGrpId);
|
|
5661
|
+
this.groupIndex = Array.prototype.indexOf.call(target.closest('.e-rule-list').children, target.closest('.e-group-container'));
|
|
5662
|
+
this.addGroups([{ 'condition': group.condition, 'not': group.not, 'rules': group.rules }], groupId);
|
|
5663
|
+
this.groupIndex = -1;
|
|
5664
|
+
};
|
|
5665
|
+
QueryBuilder.prototype.ruleClone = function (target) {
|
|
5666
|
+
var ruleElem = closest(target, '.e-rule-container');
|
|
5667
|
+
var groupElem = target.closest('.e-rule-list').closest('.e-group-container');
|
|
5668
|
+
var getRule = this.getRule(target);
|
|
5669
|
+
var groupId = groupElem.id.replace(this.element.id + '_', '');
|
|
5670
|
+
var ruleElemColl = groupElem.querySelectorAll('.e-rule-container');
|
|
5671
|
+
for (var i = 0, iLen = ruleElemColl.length; i < iLen; i++) {
|
|
5672
|
+
if (ruleElem.id === ruleElemColl[i].id) {
|
|
5673
|
+
this.ruleIndex = i;
|
|
5674
|
+
}
|
|
5675
|
+
}
|
|
5676
|
+
this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
|
|
5677
|
+
'value': getRule.value }], groupId);
|
|
5678
|
+
this.ruleIndex = -1;
|
|
5679
|
+
};
|
|
5680
|
+
QueryBuilder.prototype.ruleLock = function (target) {
|
|
5681
|
+
var ruleElem = closest(target, '.e-rule-container');
|
|
5682
|
+
var rule = this.getRule(ruleElem.id.replace(this.element.id + '_', ''));
|
|
5683
|
+
if (ruleElem.classList.contains('e-disable')) {
|
|
5684
|
+
rule.isLocked = false;
|
|
5685
|
+
this.lockItems = this.lockItems.filter(function (lockItem) { return lockItem !== ruleElem.id; });
|
|
5686
|
+
ruleElem.classList.remove('e-disable');
|
|
5687
|
+
this.disableRuleControls(target, ruleElem, false);
|
|
5688
|
+
target.children[0].classList.add('e-unlock');
|
|
5689
|
+
target.children[0].classList.remove('e-lock');
|
|
5690
|
+
target.setAttribute('title', this.l10n.getConstant('LockRule'));
|
|
5691
|
+
}
|
|
5692
|
+
else {
|
|
5693
|
+
rule.isLocked = true;
|
|
5694
|
+
if (this.lockItems.indexOf(ruleElem.id) < 0) {
|
|
5695
|
+
this.lockItems.splice(this.lockItems.length - 1, 0, ruleElem.id);
|
|
5696
|
+
}
|
|
5697
|
+
ruleElem.classList.add('e-disable');
|
|
5698
|
+
this.disableRuleControls(target, ruleElem, true);
|
|
5699
|
+
target.children[0].classList.add('e-lock');
|
|
5700
|
+
target.children[0].classList.remove('e-unlock');
|
|
5701
|
+
target.setAttribute('title', this.l10n.getConstant('UnlockRule'));
|
|
5702
|
+
}
|
|
5703
|
+
};
|
|
5704
|
+
QueryBuilder.prototype.groupLock = function (target) {
|
|
5705
|
+
var groupElem = closest(target, '.e-group-container');
|
|
5706
|
+
var group = this.getGroup(groupElem.id.replace(this.element.id + '_', ''));
|
|
5707
|
+
var isRoot = groupElem.id.indexOf('group0') > -1;
|
|
5708
|
+
if (groupElem.classList.contains('e-disable')) {
|
|
5709
|
+
if (isRoot) {
|
|
5710
|
+
var newGroup = {};
|
|
5711
|
+
newGroup.condition = group.condition;
|
|
5712
|
+
newGroup.not = group.not;
|
|
5713
|
+
newGroup.isLocked = false;
|
|
5714
|
+
this.setProperties({ rule: newGroup }, true);
|
|
5715
|
+
}
|
|
5716
|
+
else {
|
|
5717
|
+
group.isLocked = false;
|
|
5718
|
+
}
|
|
5719
|
+
this.lockItems = this.lockItems.filter(function (lockItem) { return lockItem !== groupElem.id; });
|
|
5720
|
+
groupElem.classList.remove('e-disable');
|
|
5721
|
+
this.disableHeaderControls(target, groupElem, false);
|
|
5722
|
+
target.children[0].classList.add('e-unlock');
|
|
5723
|
+
target.children[0].classList.remove('e-lock');
|
|
5724
|
+
target.setAttribute('title', this.l10n.getConstant('LockGroup'));
|
|
5725
|
+
this.updateLockItems();
|
|
5726
|
+
}
|
|
5727
|
+
else {
|
|
5728
|
+
if (isRoot) {
|
|
5729
|
+
var newGroup = {};
|
|
5730
|
+
newGroup.condition = group.condition;
|
|
5731
|
+
newGroup.not = group.not;
|
|
5732
|
+
newGroup.isLocked = true;
|
|
5733
|
+
this.setProperties({ rule: newGroup }, true);
|
|
5734
|
+
}
|
|
5735
|
+
else {
|
|
5736
|
+
group.isLocked = true;
|
|
5737
|
+
}
|
|
5738
|
+
if (this.lockItems.indexOf(groupElem.id) < 0) {
|
|
5739
|
+
this.lockItems.splice(this.lockItems.length - 1, 0, groupElem.id);
|
|
5740
|
+
}
|
|
5741
|
+
groupElem.classList.add('e-disable');
|
|
5742
|
+
this.disableHeaderControls(target, groupElem, true);
|
|
5743
|
+
target.children[0].classList.add('e-lock');
|
|
5744
|
+
target.children[0].classList.remove('e-unlock');
|
|
5745
|
+
target.setAttribute('title', this.l10n.getConstant('UnlockGroup'));
|
|
5746
|
+
}
|
|
5747
|
+
};
|
|
5748
|
+
QueryBuilder.prototype.updateLockItems = function () {
|
|
5749
|
+
for (var i = 0; i < this.lockItems.length; i++) {
|
|
5750
|
+
var idColl = this.lockItems[i].split('_');
|
|
5751
|
+
if (idColl.length > 2) {
|
|
5752
|
+
var ruleElem = this.element.querySelector('#' + this.lockItems[i]);
|
|
5753
|
+
var target = ruleElem.querySelector('.e-lock-rule-btn');
|
|
5754
|
+
ruleElem = closest(target, '.e-rule-container');
|
|
5755
|
+
if (!ruleElem.classList.contains('e-disable')) {
|
|
5756
|
+
this.ruleLock(target);
|
|
5757
|
+
}
|
|
5758
|
+
}
|
|
5759
|
+
else {
|
|
5760
|
+
var groupElem = this.element.querySelector('#' + this.lockItems[i]);
|
|
5761
|
+
var target = groupElem.querySelector('.e-lock-grp-btn');
|
|
5762
|
+
groupElem = closest(target, '.e-group-container');
|
|
5763
|
+
if (!groupElem.classList.contains('e-disable')) {
|
|
5764
|
+
this.groupLock(target);
|
|
5765
|
+
}
|
|
5766
|
+
}
|
|
5767
|
+
}
|
|
5768
|
+
};
|
|
5769
|
+
QueryBuilder.prototype.disableHeaderControls = function (target, groupElem, isDisabled) {
|
|
5770
|
+
var andElem = groupElem.querySelectorAll('.e-btngroup-and');
|
|
5771
|
+
var orElem = groupElem.querySelectorAll('.e-btngroup-or');
|
|
5772
|
+
var notElem = groupElem.querySelectorAll('.e-qb-toggle');
|
|
5773
|
+
var addElem = groupElem.querySelectorAll('.e-add-btn');
|
|
5774
|
+
var deleteGrpElem = groupElem.querySelectorAll('.e-deletegroup');
|
|
5775
|
+
var lockElem = groupElem.querySelectorAll('.e-lock-grp-btn');
|
|
5776
|
+
var cloneElem = groupElem.querySelectorAll('.e-clone-grp-btn');
|
|
5777
|
+
var groupContElem = groupElem.querySelectorAll('.e-group-container');
|
|
5778
|
+
for (var i = 0; i < andElem.length; i++) {
|
|
5779
|
+
if (isDisabled) {
|
|
5780
|
+
if (groupContElem[i] && groupContElem[i].classList.contains('e-disable')) {
|
|
5781
|
+
groupContElem[i].classList.add('e-disable');
|
|
5782
|
+
}
|
|
5783
|
+
andElem[i].disabled = true;
|
|
5784
|
+
orElem[i].disabled = true;
|
|
5785
|
+
addElem[i].disabled = true;
|
|
5786
|
+
if (notElem[i]) {
|
|
5787
|
+
notElem[i].disabled = true;
|
|
5788
|
+
}
|
|
5789
|
+
if (deleteGrpElem[i]) {
|
|
5790
|
+
deleteGrpElem[i].disabled = true;
|
|
5791
|
+
}
|
|
5792
|
+
if (cloneElem[i]) {
|
|
5793
|
+
cloneElem[i].disabled = true;
|
|
5794
|
+
}
|
|
5795
|
+
andElem[i].parentElement.classList.add('e-disabled');
|
|
5796
|
+
if (lockElem[i] !== target) {
|
|
5797
|
+
lockElem[i].disabled = true;
|
|
5798
|
+
lockElem[i].children[0].classList.remove('e-unlock');
|
|
5799
|
+
lockElem[i].children[0].classList.add('e-lock');
|
|
5800
|
+
}
|
|
5801
|
+
}
|
|
5802
|
+
else {
|
|
5803
|
+
if (groupContElem[i]) {
|
|
5804
|
+
groupContElem[i].classList.remove('e-disable');
|
|
5805
|
+
}
|
|
5806
|
+
andElem[i].disabled = false;
|
|
5807
|
+
orElem[i].disabled = false;
|
|
5808
|
+
addElem[i].disabled = false;
|
|
5809
|
+
lockElem[i].disabled = false;
|
|
5810
|
+
if (notElem[i]) {
|
|
5811
|
+
notElem[i].disabled = false;
|
|
5812
|
+
}
|
|
5813
|
+
if (deleteGrpElem[i]) {
|
|
5814
|
+
deleteGrpElem[i].disabled = false;
|
|
5815
|
+
}
|
|
5816
|
+
if (cloneElem[i]) {
|
|
5817
|
+
cloneElem[i].disabled = false;
|
|
5818
|
+
}
|
|
5819
|
+
andElem[i].parentElement.classList.remove('e-disabled');
|
|
5820
|
+
lockElem[i].children[0].classList.remove('e-lock');
|
|
5821
|
+
lockElem[i].children[0].classList.add('e-unlock');
|
|
5822
|
+
}
|
|
5823
|
+
}
|
|
5824
|
+
this.disableRuleControls(target, groupElem, isDisabled);
|
|
5825
|
+
};
|
|
5826
|
+
QueryBuilder.prototype.disableRuleControls = function (target, groupElem, isDisabled) {
|
|
5827
|
+
var ddlElement = groupElem.querySelectorAll('.e-control.e-dropdownlist');
|
|
5828
|
+
var numericElement = groupElem.querySelectorAll('.e-control.e-numerictextbox');
|
|
5829
|
+
var textElement = groupElem.querySelectorAll('.e-control.e-textbox');
|
|
5830
|
+
var dateElement = groupElem.querySelectorAll('.e-control.e-datepicker');
|
|
5831
|
+
var checkboxElement = groupElem.querySelectorAll('.e-control.e-checkbox');
|
|
5832
|
+
var radioBtnElement = groupElem.querySelectorAll('.e-control.e-radio');
|
|
5833
|
+
var multiSelectElement = groupElem.querySelectorAll('.e-control.e-multiselect');
|
|
5834
|
+
var deleteElem = groupElem.querySelectorAll('.e-rule-delete');
|
|
5835
|
+
var lockElem = groupElem.querySelectorAll('.e-lock-rule');
|
|
5836
|
+
var cloneElem = groupElem.querySelectorAll('.e-clone-rule');
|
|
5837
|
+
var ruleElem = groupElem.querySelectorAll('.e-rule-container');
|
|
5838
|
+
for (var i = 0; i < deleteElem.length; i++) {
|
|
5839
|
+
if (isDisabled) {
|
|
5840
|
+
if (ruleElem[i] && ruleElem[i].classList.contains('e-disable')) {
|
|
5841
|
+
ruleElem[i].classList.add('e-disable');
|
|
5842
|
+
}
|
|
5843
|
+
deleteElem[i].disabled = true;
|
|
5844
|
+
if (cloneElem[i]) {
|
|
5845
|
+
cloneElem[i].disabled = true;
|
|
5846
|
+
}
|
|
5847
|
+
if (lockElem[i] !== target) {
|
|
5848
|
+
lockElem[i].disabled = true;
|
|
5849
|
+
lockElem[i].children[0].classList.remove('e-unlock');
|
|
5850
|
+
lockElem[i].children[0].classList.add('e-lock');
|
|
5851
|
+
}
|
|
5852
|
+
}
|
|
5853
|
+
else {
|
|
5854
|
+
if (ruleElem[i]) {
|
|
5855
|
+
ruleElem[i].classList.remove('e-disable');
|
|
5856
|
+
}
|
|
5857
|
+
if (cloneElem[i]) {
|
|
5858
|
+
cloneElem[i].disabled = false;
|
|
5859
|
+
}
|
|
5860
|
+
deleteElem[i].disabled = false;
|
|
5861
|
+
lockElem[i].disabled = false;
|
|
5862
|
+
lockElem[i].children[0].classList.remove('e-lock');
|
|
5863
|
+
lockElem[i].children[0].classList.add('e-unlock');
|
|
5864
|
+
}
|
|
5865
|
+
}
|
|
5866
|
+
var dropDownObj;
|
|
5867
|
+
var numericObj;
|
|
5868
|
+
var textObj;
|
|
5869
|
+
var dateObj;
|
|
5870
|
+
var checkBoxObj;
|
|
5871
|
+
var radioBtnObj;
|
|
5872
|
+
var multiSelectObj;
|
|
5873
|
+
for (var i = 0; i < ddlElement.length; i++) {
|
|
5874
|
+
dropDownObj = getComponent(ddlElement[i], 'dropdownlist');
|
|
5875
|
+
if (isDisabled) {
|
|
5876
|
+
dropDownObj.enabled = false;
|
|
5877
|
+
}
|
|
5878
|
+
else {
|
|
5879
|
+
dropDownObj.enabled = true;
|
|
5880
|
+
}
|
|
5881
|
+
}
|
|
5882
|
+
for (var i = 0; i < numericElement.length; i++) {
|
|
5883
|
+
numericObj = getComponent(numericElement[i], 'numerictextbox');
|
|
5884
|
+
if (isDisabled) {
|
|
5885
|
+
numericObj.enabled = false;
|
|
5886
|
+
}
|
|
5887
|
+
else {
|
|
5888
|
+
numericObj.enabled = true;
|
|
5889
|
+
}
|
|
5890
|
+
}
|
|
5891
|
+
for (var i = 0; i < textElement.length; i++) {
|
|
5892
|
+
textObj = getComponent(textElement[i], 'textbox');
|
|
5893
|
+
if (isDisabled) {
|
|
5894
|
+
textObj.enabled = false;
|
|
5895
|
+
}
|
|
5896
|
+
else {
|
|
5897
|
+
textObj.enabled = true;
|
|
5898
|
+
}
|
|
5899
|
+
}
|
|
5900
|
+
for (var i = 0; i < dateElement.length; i++) {
|
|
5901
|
+
dateObj = getComponent(dateElement[i], 'datepicker');
|
|
5902
|
+
if (isDisabled) {
|
|
5903
|
+
dateObj.enabled = false;
|
|
5904
|
+
}
|
|
5905
|
+
else {
|
|
5906
|
+
dateObj.enabled = true;
|
|
5907
|
+
}
|
|
5908
|
+
}
|
|
5909
|
+
for (var i = 0; i < checkboxElement.length; i++) {
|
|
5910
|
+
checkBoxObj = getComponent(checkboxElement[i], 'checkbox');
|
|
5911
|
+
if (isDisabled) {
|
|
5912
|
+
checkBoxObj.disabled = true;
|
|
5913
|
+
}
|
|
5914
|
+
else {
|
|
5915
|
+
checkBoxObj.disabled = false;
|
|
5916
|
+
}
|
|
5917
|
+
}
|
|
5918
|
+
for (var i = 0; i < radioBtnElement.length; i++) {
|
|
5919
|
+
radioBtnObj = getComponent(radioBtnElement[i], 'radio');
|
|
5920
|
+
if (isDisabled) {
|
|
5921
|
+
radioBtnObj.disabled = true;
|
|
5922
|
+
}
|
|
5923
|
+
else {
|
|
5924
|
+
radioBtnObj.disabled = false;
|
|
5925
|
+
}
|
|
5926
|
+
}
|
|
5927
|
+
for (var i = 0; i < multiSelectElement.length; i++) {
|
|
5928
|
+
multiSelectObj = getComponent(multiSelectElement[i], 'multiselect');
|
|
5929
|
+
if (isDisabled) {
|
|
5930
|
+
multiSelectObj.enabled = false;
|
|
5931
|
+
}
|
|
5932
|
+
else {
|
|
5933
|
+
multiSelectObj.enabled = true;
|
|
5934
|
+
}
|
|
5935
|
+
}
|
|
5936
|
+
};
|
|
5177
5937
|
__decorate([
|
|
5178
5938
|
Event()
|
|
5179
5939
|
], QueryBuilder.prototype, "created", void 0);
|
|
@@ -5193,7 +5953,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5193
5953
|
Event()
|
|
5194
5954
|
], QueryBuilder.prototype, "ruleChange", void 0);
|
|
5195
5955
|
__decorate([
|
|
5196
|
-
|
|
5956
|
+
Complex({}, ShowButtons)
|
|
5197
5957
|
], QueryBuilder.prototype, "showButtons", void 0);
|
|
5198
5958
|
__decorate([
|
|
5199
5959
|
Property(false)
|
|
@@ -5255,6 +6015,15 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5255
6015
|
__decorate([
|
|
5256
6016
|
Property(false)
|
|
5257
6017
|
], QueryBuilder.prototype, "readonly", void 0);
|
|
6018
|
+
__decorate([
|
|
6019
|
+
Property(true)
|
|
6020
|
+
], QueryBuilder.prototype, "addRuleToNewGroups", void 0);
|
|
6021
|
+
__decorate([
|
|
6022
|
+
Property(false)
|
|
6023
|
+
], QueryBuilder.prototype, "autoSelectField", void 0);
|
|
6024
|
+
__decorate([
|
|
6025
|
+
Property(true)
|
|
6026
|
+
], QueryBuilder.prototype, "autoSelectOperator", void 0);
|
|
5258
6027
|
__decorate([
|
|
5259
6028
|
Property('')
|
|
5260
6029
|
], QueryBuilder.prototype, "separator", void 0);
|