@syncfusion/ej2-querybuilder 25.2.4 → 26.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/.eslintrc.json +3 -2
- 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 +1327 -291
- package/dist/es6/ej2-querybuilder.es2015.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es5.js +1320 -283
- 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/query-builder/query-builder-model.d.ts +45 -6
- package/src/query-builder/query-builder.d.ts +102 -5
- package/src/query-builder/query-builder.js +1312 -263
- package/src/query-builder/query-library.js +2 -2
- package/styles/bootstrap-dark.css +194 -21
- package/styles/bootstrap-dark.scss +15 -1
- package/styles/bootstrap.css +194 -21
- package/styles/bootstrap.scss +15 -1
- package/styles/bootstrap4.css +198 -22
- package/styles/bootstrap4.scss +15 -1
- package/styles/bootstrap5-dark.css +198 -30
- package/styles/bootstrap5-dark.scss +15 -1
- package/styles/bootstrap5.css +198 -30
- package/styles/bootstrap5.scss +15 -1
- package/styles/fabric-dark.css +192 -20
- package/styles/fabric-dark.scss +15 -1
- package/styles/fabric.css +192 -20
- package/styles/fabric.scss +15 -1
- package/styles/fluent-dark.css +196 -28
- package/styles/fluent-dark.scss +15 -1
- package/styles/fluent.css +196 -28
- package/styles/fluent.scss +15 -1
- package/styles/fluent2.css +2052 -0
- package/styles/fluent2.scss +15 -0
- package/styles/highcontrast-light.css +195 -20
- package/styles/highcontrast-light.scss +15 -1
- package/styles/highcontrast.css +195 -20
- package/styles/highcontrast.scss +15 -1
- package/styles/material-dark.css +205 -24
- package/styles/material-dark.scss +15 -1
- package/styles/material.css +207 -24
- package/styles/material.scss +15 -1
- package/styles/material3-dark.css +211 -26
- package/styles/material3-dark.scss +15 -1
- package/styles/material3.css +211 -26
- package/styles/material3.scss +15 -1
- package/styles/query-builder/_bds-definition.scss +7 -1
- package/styles/query-builder/_bootstrap-dark-definition.scss +7 -0
- package/styles/query-builder/_bootstrap-definition.scss +7 -0
- package/styles/query-builder/_bootstrap4-definition.scss +7 -0
- package/styles/query-builder/_bootstrap5-definition.scss +7 -1
- package/styles/query-builder/_bootstrap5.3-definition.scss +114 -0
- package/styles/query-builder/_fabric-dark-definition.scss +7 -0
- package/styles/query-builder/_fabric-definition.scss +7 -0
- package/styles/query-builder/_fluent-definition.scss +7 -1
- package/styles/query-builder/_fluent2-definition.scss +114 -0
- package/styles/query-builder/_fusionnew-definition.scss +7 -1
- package/styles/query-builder/_highcontrast-definition.scss +7 -0
- package/styles/query-builder/_highcontrast-light-definition.scss +7 -0
- package/styles/query-builder/_layout.scss +275 -12
- package/styles/query-builder/_material-dark-definition.scss +7 -0
- package/styles/query-builder/_material-definition.scss +7 -0
- package/styles/query-builder/_material3-definition.scss +7 -1
- package/styles/query-builder/_tailwind-definition.scss +7 -1
- package/styles/query-builder/_theme.scss +34 -22
- package/styles/query-builder/bootstrap-dark.css +194 -21
- package/styles/query-builder/bootstrap.css +194 -21
- package/styles/query-builder/bootstrap4.css +198 -22
- package/styles/query-builder/bootstrap5-dark.css +198 -30
- package/styles/query-builder/bootstrap5.css +198 -30
- package/styles/query-builder/fabric-dark.css +192 -20
- package/styles/query-builder/fabric.css +192 -20
- package/styles/query-builder/fluent-dark.css +196 -28
- package/styles/query-builder/fluent.css +196 -28
- package/styles/query-builder/fluent2.css +2052 -0
- package/styles/query-builder/fluent2.scss +15 -0
- package/styles/query-builder/highcontrast-light.css +195 -20
- package/styles/query-builder/highcontrast.css +195 -20
- package/styles/query-builder/icons/_bds.scss +4 -0
- package/styles/query-builder/icons/_bootstrap-dark.scss +4 -0
- package/styles/query-builder/icons/_bootstrap.scss +4 -0
- package/styles/query-builder/icons/_bootstrap4.scss +4 -0
- package/styles/query-builder/icons/_bootstrap5.3.scss +11 -0
- package/styles/query-builder/icons/_bootstrap5.scss +4 -0
- package/styles/query-builder/icons/_fabric-dark.scss +4 -0
- package/styles/query-builder/icons/_fabric.scss +4 -0
- package/styles/query-builder/icons/_fluent.scss +4 -0
- package/styles/query-builder/icons/_fluent2.scss +11 -0
- package/styles/query-builder/icons/_fusionnew.scss +4 -0
- package/styles/query-builder/icons/_highcontrast-light.scss +4 -0
- package/styles/query-builder/icons/_highcontrast.scss +4 -0
- package/styles/query-builder/icons/_material-dark.scss +4 -0
- package/styles/query-builder/icons/_material.scss +4 -0
- package/styles/query-builder/icons/_material3.scss +4 -0
- package/styles/query-builder/icons/_tailwind-dark.scss +4 -0
- package/styles/query-builder/icons/_tailwind.scss +4 -0
- package/styles/query-builder/material-dark.css +205 -24
- package/styles/query-builder/material.css +207 -24
- package/styles/query-builder/material3-dark.css +211 -26
- package/styles/query-builder/material3.css +211 -26
- package/styles/query-builder/tailwind-dark.css +205 -24
- package/styles/query-builder/tailwind.css +205 -24
- package/styles/tailwind-dark.css +205 -24
- package/styles/tailwind-dark.scss +15 -1
- package/styles/tailwind.css +205 -24
- package/styles/tailwind.scss +15 -1
- package/CHANGELOG.md +0 -820
|
@@ -31,11 +31,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
31
31
|
/**
|
|
32
32
|
* Query Builder Source
|
|
33
33
|
*/
|
|
34
|
-
import { Component, NotifyPropertyChanges, getComponent, Browser, compile, append } from '@syncfusion/ej2-base';
|
|
34
|
+
import { Component, NotifyPropertyChanges, getComponent, Browser, compile, append, Draggable, remove } from '@syncfusion/ej2-base';
|
|
35
35
|
import { Property, ChildProperty, Complex, L10n, closest, extend, isNullOrUndefined, Collection, cldrData } from '@syncfusion/ej2-base';
|
|
36
36
|
import { getInstance, addClass, removeClass, rippleEffect, detach, classList } from '@syncfusion/ej2-base';
|
|
37
37
|
import { Internationalization, getUniqueID, select } from '@syncfusion/ej2-base';
|
|
38
|
-
import { Button, RadioButton } from '@syncfusion/ej2-buttons';
|
|
38
|
+
import { Button, CheckBox, RadioButton } from '@syncfusion/ej2-buttons';
|
|
39
39
|
import { DropDownList, CheckBoxSelection, DropDownTree } from '@syncfusion/ej2-dropdowns';
|
|
40
40
|
import { MultiSelect } from '@syncfusion/ej2-dropdowns';
|
|
41
41
|
import { Event, EventHandler, getValue, Animation } from '@syncfusion/ej2-base';
|
|
@@ -216,6 +216,233 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
216
216
|
_this.cloneGrpBtnClick = false;
|
|
217
217
|
_this.isMiddleGroup = false;
|
|
218
218
|
_this.cloneRuleBtnClick = false;
|
|
219
|
+
_this.dragStopHandler = function (e) {
|
|
220
|
+
if (_this.isDragEventPrevent) {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
var targetGroup = closest(e.target, '.e-rule-container');
|
|
224
|
+
if (isNullOrUndefined(targetGroup) && e.target.parentElement &&
|
|
225
|
+
e.target.parentElement.classList.contains('e-btn-group') && _this.enableSeparateConnector) {
|
|
226
|
+
targetGroup = closest(e.target.parentElement.previousElementSibling, '.e-rule-container');
|
|
227
|
+
}
|
|
228
|
+
var isPreventelem = closest(e.helper, '.e-notallowedcur');
|
|
229
|
+
var prevRule;
|
|
230
|
+
if (!isPreventelem) {
|
|
231
|
+
var targetGrp = closest(e.target, '.e-group-container');
|
|
232
|
+
var dropEventArgs = { cancel: false, dropRuleID: targetGroup !== null ? targetGroup.id
|
|
233
|
+
: targetGrp !== null ? targetGrp.id : null, dropGroupID: targetGrp !== null ? targetGrp.id : null };
|
|
234
|
+
_this.trigger('drop', dropEventArgs);
|
|
235
|
+
if (dropEventArgs.cancel) {
|
|
236
|
+
isPreventelem = true;
|
|
237
|
+
}
|
|
238
|
+
prevRule = _this.getValidRules();
|
|
239
|
+
}
|
|
240
|
+
_this.prvtEvtTgrDaD = true;
|
|
241
|
+
var tgrt = _this.enableSeparateConnector && e.target.parentElement &&
|
|
242
|
+
e.target.parentElement.classList.contains('e-btn-group') ? e.target.parentElement.previousElementSibling : e.target;
|
|
243
|
+
if (targetGroup && !isPreventelem) {
|
|
244
|
+
var groupId_1 = targetGroup.id.split(_this.element.id + '_')[1].split('_')[0];
|
|
245
|
+
if (_this.draggable.currentStateTarget.parentElement.classList.contains('e-rule-field') ||
|
|
246
|
+
_this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {
|
|
247
|
+
var rule = void 0;
|
|
248
|
+
if (_this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {
|
|
249
|
+
rule = _this.getGroup(_this.draggedRule);
|
|
250
|
+
_this.deleteGroup(closest(_this.draggedRule, '.e-group-container'));
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
rule = _this.getRule(_this.draggedRule);
|
|
254
|
+
_this.deleteRule(_this.draggedRule);
|
|
255
|
+
}
|
|
256
|
+
var groupRule = extend([], _this.getGroup(targetGroup), [], true);
|
|
257
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
258
|
+
if (groupRule.properties) {
|
|
259
|
+
groupRule = groupRule.properties;
|
|
260
|
+
}
|
|
261
|
+
var groupElem = closest(targetGroup, '.e-group-container');
|
|
262
|
+
var nestGrpElem = groupElem.querySelectorAll('.e-group-container');
|
|
263
|
+
nestGrpElem.forEach(function (ele) {
|
|
264
|
+
if (_this.element.querySelector('#' + ele.id)) {
|
|
265
|
+
_this.deleteGroup(ele);
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
var ruleElems = groupElem.querySelectorAll('.e-rule-container');
|
|
269
|
+
var ruleIds = [];
|
|
270
|
+
var dropInd = void 0;
|
|
271
|
+
for (var i = 0; i < ruleElems.length; i++) {
|
|
272
|
+
if (ruleElems[i].classList.contains('e-drag-rule-top-line') ||
|
|
273
|
+
ruleElems[i].classList.contains('e-drag-rule-bottom-line')) {
|
|
274
|
+
dropInd = i;
|
|
275
|
+
}
|
|
276
|
+
ruleIds.push(ruleElems[i].id.split(_this.element.id + '_')[1]);
|
|
277
|
+
}
|
|
278
|
+
_this.deleteRules(ruleIds);
|
|
279
|
+
if (targetGroup.classList.contains('e-drag-rule-top-line')) {
|
|
280
|
+
groupRule.rules.splice(dropInd, 0, rule);
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
groupRule.rules.splice(dropInd + 1, 0, rule);
|
|
284
|
+
}
|
|
285
|
+
groupRule.rules.forEach(function (rule) {
|
|
286
|
+
if (_this.enableSeparateConnector) {
|
|
287
|
+
if (!rule.rules) {
|
|
288
|
+
_this.addRules([rule], groupId_1);
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
_this.addGroups([rule], groupId_1);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
if (rule.condition) {
|
|
296
|
+
_this.addGroups([rule], groupId_1);
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
_this.addRules([rule], groupId_1);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
else if (tgrt.classList.contains('e-rule-list') && tgrt.children.length === 0 && !isPreventelem) {
|
|
306
|
+
var groupElem = closest(tgrt, '.e-group-container');
|
|
307
|
+
var groupId = groupElem.id.split(_this.element.id + '_')[1].split('_')[0];
|
|
308
|
+
var rule = void 0;
|
|
309
|
+
if (_this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {
|
|
310
|
+
rule = _this.getGroup(_this.draggedRule);
|
|
311
|
+
_this.deleteGroup(closest(_this.draggedRule, '.e-group-container'));
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
rule = _this.getRule(_this.draggedRule);
|
|
315
|
+
_this.deleteRule(_this.draggedRule);
|
|
316
|
+
}
|
|
317
|
+
if (_this.enableSeparateConnector) {
|
|
318
|
+
if (!rule.rules) {
|
|
319
|
+
_this.addRules([rule], groupId);
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
_this.addGroups([rule], groupId);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
if (rule.condition) {
|
|
327
|
+
_this.addGroups([rule], groupId);
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
_this.addRules([rule], groupId);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
else if (tgrt.classList.contains('e-rule-list') && tgrt.children[0].classList.contains('e-group-container') && !isPreventelem) {
|
|
335
|
+
var groupElem = closest(tgrt, '.e-group-container');
|
|
336
|
+
var groupId_2 = groupElem.id.split(_this.element.id + '_')[1].split('_')[0];
|
|
337
|
+
var rule = void 0;
|
|
338
|
+
if (_this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {
|
|
339
|
+
rule = _this.getGroup(_this.draggedRule);
|
|
340
|
+
_this.deleteGroup(closest(_this.draggedRule, '.e-group-container'));
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
rule = _this.getRule(_this.draggedRule);
|
|
344
|
+
_this.deleteRule(_this.draggedRule);
|
|
345
|
+
}
|
|
346
|
+
var groupRule = extend([], _this.getGroup(tgrt), [], true);
|
|
347
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
348
|
+
if (groupRule.properties) {
|
|
349
|
+
groupRule = groupRule.properties;
|
|
350
|
+
}
|
|
351
|
+
var groupElems = tgrt.querySelectorAll('.e-group-container');
|
|
352
|
+
groupElems.forEach(function (ele) {
|
|
353
|
+
if (_this.element.querySelector('#' + ele.id)) {
|
|
354
|
+
_this.deleteGroup(ele);
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
var ruleElems = groupElem.querySelectorAll('.e-rule-container');
|
|
358
|
+
ruleElems.forEach(function (ele) {
|
|
359
|
+
if (_this.element.querySelector('#' + ele.id)) {
|
|
360
|
+
_this.deleteRule(ele);
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
if (_this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {
|
|
364
|
+
_this.addGroups([rule], groupId_2);
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
_this.addRules([rule], groupId_2);
|
|
368
|
+
}
|
|
369
|
+
groupRule.rules.forEach(function (rule) {
|
|
370
|
+
if (_this.enableSeparateConnector) {
|
|
371
|
+
if (!rule.rules) {
|
|
372
|
+
_this.addRules([rule], groupId_2);
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
_this.addGroups([rule], groupId_2);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
if (rule.condition) {
|
|
380
|
+
_this.addGroups([rule], groupId_2);
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
_this.addRules([rule], groupId_2);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
else if ((closest(e.target, '.e-group-container') || e.target.classList.contains('e-group-container')) && !isPreventelem) {
|
|
389
|
+
var rule = void 0;
|
|
390
|
+
targetGroup = closest(e.target, '.e-group-container');
|
|
391
|
+
if (!targetGroup && e.target.classList.contains('e-group-container')) {
|
|
392
|
+
targetGroup = e.target;
|
|
393
|
+
}
|
|
394
|
+
var groupId = targetGroup.id.split(_this.element.id + '_')[1].split('_')[0];
|
|
395
|
+
if (groupId === 'group0') {
|
|
396
|
+
if (_this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {
|
|
397
|
+
rule = _this.getGroup(_this.draggedRule);
|
|
398
|
+
_this.deleteGroup(closest(_this.draggedRule, '.e-group-container'));
|
|
399
|
+
}
|
|
400
|
+
else {
|
|
401
|
+
rule = _this.getRule(_this.draggedRule);
|
|
402
|
+
_this.deleteRule(_this.draggedRule);
|
|
403
|
+
}
|
|
404
|
+
if (_this.enableSeparateConnector) {
|
|
405
|
+
if (!rule.rules) {
|
|
406
|
+
_this.addRules([rule], groupId);
|
|
407
|
+
}
|
|
408
|
+
else {
|
|
409
|
+
_this.addGroups([rule], groupId);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
else {
|
|
413
|
+
if (rule.condition) {
|
|
414
|
+
_this.addGroups([rule], groupId);
|
|
415
|
+
}
|
|
416
|
+
else {
|
|
417
|
+
_this.addRules([rule], groupId);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
if (!isPreventelem) {
|
|
423
|
+
_this.trigger('ruleChange', { previousRule: prevRule, rule: _this.getValidRules(), type: 'drag-and-drop' });
|
|
424
|
+
}
|
|
425
|
+
_this.prvtEvtTgrDaD = false;
|
|
426
|
+
document.body.classList.remove('e-prevent-select');
|
|
427
|
+
var borderLineElem = _this.element.querySelectorAll('.e-drag-rule-bottom-line');
|
|
428
|
+
borderLineElem.forEach(function (ele) {
|
|
429
|
+
ele.classList.remove('e-drag-rule-bottom-line');
|
|
430
|
+
});
|
|
431
|
+
borderLineElem = _this.element.querySelectorAll('.e-drag-rule-top-line');
|
|
432
|
+
borderLineElem.forEach(function (ele) {
|
|
433
|
+
ele.classList.remove('e-drag-rule-top-line');
|
|
434
|
+
});
|
|
435
|
+
borderLineElem = _this.element.querySelectorAll('.e-qb-dragging-rule');
|
|
436
|
+
borderLineElem.forEach(function (ele) {
|
|
437
|
+
ele.classList.remove('e-qb-dragging-rule');
|
|
438
|
+
});
|
|
439
|
+
if (e.helper.classList.contains('e-cloneproperties') && document.querySelector('.' + e.helper.classList[0])) {
|
|
440
|
+
remove(e.helper);
|
|
441
|
+
}
|
|
442
|
+
if (_this.enableSeparateConnector) {
|
|
443
|
+
_this.refresh();
|
|
444
|
+
}
|
|
445
|
+
};
|
|
219
446
|
MultiSelect.Inject(CheckBoxSelection);
|
|
220
447
|
return _this;
|
|
221
448
|
}
|
|
@@ -354,7 +581,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
354
581
|
this.columns = cols;
|
|
355
582
|
}
|
|
356
583
|
}
|
|
357
|
-
else if (this.columns.length) {
|
|
584
|
+
else if (this.columns && this.columns.length) {
|
|
358
585
|
var columns = this.columns;
|
|
359
586
|
for (var i = 0, len = columns.length; i < len; i++) {
|
|
360
587
|
if (columns[i].category) {
|
|
@@ -469,6 +696,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
469
696
|
txtareaElem.style.height = txtareaElem.scrollHeight + 'px';
|
|
470
697
|
}
|
|
471
698
|
if (target.tagName === 'BUTTON' && target.className.indexOf('e-qb-toggle') < 0) {
|
|
699
|
+
var animation = new Animation({ duration: 1000, delay: 0 });
|
|
472
700
|
switch (true) {
|
|
473
701
|
case target.className.indexOf('e-removerule') > -1:
|
|
474
702
|
this.actionButton = target;
|
|
@@ -497,7 +725,6 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
497
725
|
this.deleteGroup(closest(target, '.e-group-container'));
|
|
498
726
|
break;
|
|
499
727
|
case target.className.indexOf('e-edit-rule') > -1:
|
|
500
|
-
var animation = new Animation({ duration: 1000, delay: 0 });
|
|
501
728
|
animation.animate('.e-query-builder', { name: 'SlideLeftIn' });
|
|
502
729
|
document.getElementById(this.element.id + '_summary_content').style.display = 'none';
|
|
503
730
|
if (this.element.querySelectorAll('.e-group-container').length < 1) {
|
|
@@ -525,6 +752,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
525
752
|
if (forIdValue) {
|
|
526
753
|
targetValue = document.getElementById(forIdValue).getAttribute('value');
|
|
527
754
|
}
|
|
755
|
+
else if (this.enableSeparateConnector) {
|
|
756
|
+
targetValue = target.textContent;
|
|
757
|
+
}
|
|
528
758
|
groupID = element.id.replace(this.element.id + '_', '');
|
|
529
759
|
var group = this.getGroup(groupID);
|
|
530
760
|
var ariaChecked = void 0;
|
|
@@ -563,19 +793,60 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
563
793
|
}
|
|
564
794
|
};
|
|
565
795
|
QueryBuilder.prototype.beforeSuccessCallBack = function (args, target) {
|
|
566
|
-
if (!args.cancel) {
|
|
796
|
+
if (args && !args.cancel) {
|
|
567
797
|
var element = closest(target, '.e-group-container');
|
|
568
798
|
var groupID = element.id.replace(this.element.id + '_', '');
|
|
569
799
|
var beforeRules = this.getValidRules(this.rule);
|
|
570
800
|
var rule = this.getParentGroup(element);
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
801
|
+
if (this.enableSeparateConnector) {
|
|
802
|
+
if (isNullOrUndefined(closest(target, '.e-rule-container')) &&
|
|
803
|
+
element.classList.contains('e-group-container')) {
|
|
804
|
+
element = target.parentElement.previousElementSibling !== null ?
|
|
805
|
+
target.parentElement.previousElementSibling : element;
|
|
806
|
+
}
|
|
807
|
+
else {
|
|
808
|
+
element = closest(target, '.e-rule-container');
|
|
809
|
+
}
|
|
810
|
+
var id = element.id.replace(this.element.id + '_', '');
|
|
811
|
+
if (element.classList.contains('e-rule-container')) {
|
|
812
|
+
rule = this.getRule(element);
|
|
813
|
+
rule.condition = args.value;
|
|
814
|
+
}
|
|
815
|
+
else if (element.classList.contains('e-group-container')) {
|
|
816
|
+
rule = this.getGroup(element);
|
|
817
|
+
rule.condition = args.value;
|
|
818
|
+
}
|
|
819
|
+
if (this.enableNotCondition) {
|
|
820
|
+
rule.not = args.not;
|
|
821
|
+
}
|
|
822
|
+
if (!this.isImportRules) {
|
|
823
|
+
this.trigger('change', { groupID: groupID, ruleID: id, type: 'condition', value: rule.condition });
|
|
824
|
+
}
|
|
574
825
|
}
|
|
575
|
-
|
|
576
|
-
|
|
826
|
+
else {
|
|
827
|
+
rule.condition = args.value;
|
|
828
|
+
if (this.enableNotCondition) {
|
|
829
|
+
rule.not = args.not;
|
|
830
|
+
}
|
|
831
|
+
if (!this.isImportRules) {
|
|
832
|
+
this.trigger('change', { groupID: groupID, type: 'condition', value: rule.condition });
|
|
833
|
+
}
|
|
577
834
|
}
|
|
578
835
|
this.filterRules(beforeRules, this.getValidRules(this.rule), 'condition');
|
|
836
|
+
if (this.enableSeparateConnector) {
|
|
837
|
+
var andElem = target.parentElement.querySelector('.e-btngroup-and');
|
|
838
|
+
var orElem = target.parentElement.querySelector('.e-btngroup-or');
|
|
839
|
+
if (andElem && orElem) {
|
|
840
|
+
if (args.value === 'and') {
|
|
841
|
+
andElem.checked = true;
|
|
842
|
+
orElem.checked = false;
|
|
843
|
+
}
|
|
844
|
+
else if (args.value === 'or') {
|
|
845
|
+
orElem.checked = true;
|
|
846
|
+
andElem.checked = false;
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
}
|
|
579
850
|
}
|
|
580
851
|
};
|
|
581
852
|
QueryBuilder.prototype.selectBtn = function (target, event) {
|
|
@@ -618,7 +889,23 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
618
889
|
ruleListElem.appendChild(ruleElem);
|
|
619
890
|
}
|
|
620
891
|
else {
|
|
621
|
-
|
|
892
|
+
if (this.enableSeparateConnector) {
|
|
893
|
+
var index = -1;
|
|
894
|
+
var tempRuleIndex = this.ruleIndex + 1;
|
|
895
|
+
for (var i = 0; i < tempRuleIndex; i++) {
|
|
896
|
+
if (i === ruleListElem.children.length) {
|
|
897
|
+
break;
|
|
898
|
+
}
|
|
899
|
+
if (ruleListElem.children[i].classList.contains('e-rule-container')) {
|
|
900
|
+
tempRuleIndex++;
|
|
901
|
+
index++;
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
ruleListElem.insertBefore(ruleElem, ruleListElem.children[this.ruleIndex + index + 1]); // added clone rule to next position
|
|
905
|
+
}
|
|
906
|
+
else {
|
|
907
|
+
ruleListElem.insertBefore(ruleElem, ruleListElem.children[this.ruleIndex + 1]); // added clone rule to next position
|
|
908
|
+
}
|
|
622
909
|
}
|
|
623
910
|
this.cloneRuleBtnClick = false;
|
|
624
911
|
}
|
|
@@ -689,6 +976,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
689
976
|
if (this.showButtons.ruleDelete) {
|
|
690
977
|
removeClass(ruleElem.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');
|
|
691
978
|
}
|
|
979
|
+
if (this.allowDragAndDrop) {
|
|
980
|
+
removeClass(ruleElem.querySelectorAll('.e-drag-qb-rule'), 'e-hidden');
|
|
981
|
+
}
|
|
692
982
|
if (column && column.ruleTemplate && rule) {
|
|
693
983
|
this.renderReactTemplates();
|
|
694
984
|
}
|
|
@@ -700,7 +990,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
700
990
|
return;
|
|
701
991
|
}
|
|
702
992
|
var args = { groupID: target.id.replace(this.element.id + '_', ''), cancel: false, type: 'insertRule' };
|
|
703
|
-
if (!this.isImportRules && !this.isInitialLoad) {
|
|
993
|
+
if (!this.isImportRules && !this.isInitialLoad && !this.prvtEvtTgrDaD) {
|
|
704
994
|
this.trigger('beforeChange', args, function (observedChangeArgs) {
|
|
705
995
|
_this.addRuleSuccessCallBack(observedChangeArgs, target, rule, column, action, parentId, isRuleTemplate);
|
|
706
996
|
});
|
|
@@ -755,20 +1045,54 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
755
1045
|
else {
|
|
756
1046
|
ruleElem.className = 'e-rule-container e-horizontal-mode';
|
|
757
1047
|
}
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
1048
|
+
var previousRuleElem = ruleElem.previousElementSibling;
|
|
1049
|
+
if (this.enableSeparateConnector) {
|
|
1050
|
+
var prevRule = void 0;
|
|
1051
|
+
var ruleContainer = void 0;
|
|
1052
|
+
if (previousRuleElem && previousRuleElem.classList.contains('e-group-container')) {
|
|
1053
|
+
ruleContainer = previousRuleElem.querySelectorAll('.e-rule-container');
|
|
1054
|
+
previousRuleElem = ruleContainer[ruleContainer.length - 1];
|
|
1055
|
+
}
|
|
1056
|
+
if (previousRuleElem && previousRuleElem.classList.contains('e-rule-container')) {
|
|
1057
|
+
prevRule = this.getRule(previousRuleElem);
|
|
1058
|
+
}
|
|
1059
|
+
if (this.headerTemplate && previousRuleElem && prevRule) {
|
|
1060
|
+
this.headerTemplateFn(previousRuleElem, false, prevRule.condition, prevRule, previousRuleElem.id);
|
|
1061
|
+
}
|
|
1062
|
+
else if (isNullOrUndefined(previousRuleElem) && ruleElem.id !== this.element.id + '_group0_rule0') {
|
|
1063
|
+
var group = ruleElem.closest('.e-group-container');
|
|
1064
|
+
if (group && group.previousElementSibling) {
|
|
1065
|
+
var prevElem = group.previousElementSibling;
|
|
1066
|
+
var prevRuleContainer = prevElem.querySelectorAll('.e-rule-container');
|
|
1067
|
+
if (prevElem.classList.contains('e-group-container')) {
|
|
1068
|
+
prevElem = prevRuleContainer[prevRuleContainer.length - 1];
|
|
1069
|
+
}
|
|
1070
|
+
if (prevElem.classList.contains('e-rule-container')) {
|
|
1071
|
+
var prevRule_1 = this.getRule(prevElem);
|
|
1072
|
+
this.headerTemplateFn(prevElem, false, prevRule_1.condition, prevRule_1, prevElem.id, true);
|
|
1073
|
+
}
|
|
1074
|
+
}
|
|
1075
|
+
else {
|
|
1076
|
+
this.headerTemplateFn(ruleElem, false, rule.condition, rule, ruleElem.id, true);
|
|
1077
|
+
}
|
|
761
1078
|
}
|
|
762
|
-
|
|
763
|
-
|
|
1079
|
+
}
|
|
1080
|
+
else {
|
|
1081
|
+
if (previousRuleElem && previousRuleElem.className.indexOf('e-rule-container') > -1) {
|
|
1082
|
+
if (ruleElem.className.indexOf('e-joined-rule') < 0) {
|
|
1083
|
+
ruleElem.className += ' e-joined-rule';
|
|
1084
|
+
}
|
|
1085
|
+
if (previousRuleElem.className.indexOf('e-prev-joined-rule') < 0) {
|
|
1086
|
+
previousRuleElem.className += ' e-prev-joined-rule';
|
|
1087
|
+
}
|
|
764
1088
|
}
|
|
765
1089
|
}
|
|
766
|
-
if (
|
|
1090
|
+
if (previousRuleElem && previousRuleElem.className.indexOf('e-group-container') > -1 &&
|
|
767
1091
|
ruleElem.className.indexOf('e-separate-rule') < 0) {
|
|
768
1092
|
ruleElem.className += ' e-separate-rule';
|
|
769
1093
|
}
|
|
770
1094
|
if (!this.isImportRules) {
|
|
771
|
-
this.updateAddedRule(trgt, rule, newRule, isRlTmp, pId);
|
|
1095
|
+
this.updateAddedRule(trgt, rule, newRule, isRlTmp, pId, this.enableSeparateConnector ? true : null);
|
|
772
1096
|
}
|
|
773
1097
|
if (!column || (column && !column.ruleTemplate) || !rule.field) {
|
|
774
1098
|
if (this.fieldMode === 'Default') {
|
|
@@ -799,7 +1123,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
799
1123
|
ddlVal = this.GetRootColumnName(rule.field);
|
|
800
1124
|
}
|
|
801
1125
|
else {
|
|
802
|
-
ddlVal = this.isImportRules ? this.GetRootColumnName(rule.field) :
|
|
1126
|
+
ddlVal = this.isImportRules ? this.GetRootColumnName(rule.field) :
|
|
1127
|
+
dropDownList.value;
|
|
803
1128
|
}
|
|
804
1129
|
this.selectedColumn = dropDownList.getDataByValue(ddlVal);
|
|
805
1130
|
if (Object.keys(rule).length) {
|
|
@@ -843,10 +1168,52 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
843
1168
|
}
|
|
844
1169
|
}
|
|
845
1170
|
ruleID = ruleElem.id.replace(this.element.id + '_', '');
|
|
846
|
-
if (
|
|
1171
|
+
if (rule && rule.isLocked) {
|
|
1172
|
+
var lockRuleTarget = ruleElem.querySelector('.e-lock-rule-btn');
|
|
1173
|
+
this.ruleLock(lockRuleTarget);
|
|
1174
|
+
}
|
|
1175
|
+
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
847
1176
|
this.trigger('change', { groupID: trgt.id.replace(this.element.id + '_', ''), ruleID: ruleID, type: 'insertRule' });
|
|
848
1177
|
}
|
|
849
1178
|
}
|
|
1179
|
+
if (this.enableSeparateConnector && isNullOrUndefined(rule.condition) && ruleID) {
|
|
1180
|
+
rule = this.getRule(ruleID);
|
|
1181
|
+
}
|
|
1182
|
+
if (this.enableSeparateConnector) {
|
|
1183
|
+
var prevElem = ruleElem.previousElementSibling;
|
|
1184
|
+
var ruleContainer = void 0;
|
|
1185
|
+
while (prevElem && !prevElem.classList.contains('e-rule-container')) {
|
|
1186
|
+
if (prevElem.classList.contains('e-group-container')) {
|
|
1187
|
+
ruleContainer = prevElem.querySelectorAll('.e-rule-container');
|
|
1188
|
+
prevElem = ruleContainer[ruleContainer.length - 1];
|
|
1189
|
+
break;
|
|
1190
|
+
}
|
|
1191
|
+
prevElem = prevElem.previousElementSibling;
|
|
1192
|
+
}
|
|
1193
|
+
if (this.headerTemplate && prevElem) {
|
|
1194
|
+
var prevRule = this.getRule(prevElem);
|
|
1195
|
+
var args_2 = { requestType: 'rule-template-create', ruleID: prevElem.id, condition: prevRule.condition,
|
|
1196
|
+
notCondition: this.enableNotCondition ? true : undefined };
|
|
1197
|
+
this.trigger('actionBegin', args_2);
|
|
1198
|
+
}
|
|
1199
|
+
else if (isNullOrUndefined(prevElem) && ruleElem.id !== this.element.id + '_group0_rule0') {
|
|
1200
|
+
var group = ruleElem.closest('.e-group-container');
|
|
1201
|
+
if (group && group.previousElementSibling && group.previousElementSibling.previousElementSibling) {
|
|
1202
|
+
var prevElem_1 = group.previousElementSibling.previousElementSibling;
|
|
1203
|
+
if (prevElem_1.classList.contains('e-group-container')) {
|
|
1204
|
+
var ruleContainer_1 = prevElem_1.querySelectorAll('.e-rule-container');
|
|
1205
|
+
prevElem_1 = ruleContainer_1[ruleContainer_1.length - 1];
|
|
1206
|
+
}
|
|
1207
|
+
if (prevElem_1.classList.contains('e-rule-container')) {
|
|
1208
|
+
var prevRule = this.getRule(prevElem_1);
|
|
1209
|
+
var args_3 = { requestType: 'rule-template-create', ruleID: prevElem_1.id,
|
|
1210
|
+
condition: prevRule.condition, notCondition: this.enableNotCondition ? true : undefined };
|
|
1211
|
+
this.trigger('actionBegin', args_3);
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1215
|
+
this.setMultiConnector(ruleElem);
|
|
1216
|
+
}
|
|
850
1217
|
};
|
|
851
1218
|
QueryBuilder.prototype.updateDropdowntreeDS = function (columns) {
|
|
852
1219
|
for (var i = 0; i < columns.length; i++) {
|
|
@@ -856,7 +1223,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
856
1223
|
}
|
|
857
1224
|
}
|
|
858
1225
|
};
|
|
859
|
-
QueryBuilder.prototype.updateAddedRule = function (target, rule, newRule, isRuleTemplate, pId) {
|
|
1226
|
+
QueryBuilder.prototype.updateAddedRule = function (target, rule, newRule, isRuleTemplate, pId, isNewRuleAdded) {
|
|
860
1227
|
var ruleElem;
|
|
861
1228
|
var index = 0;
|
|
862
1229
|
var groupElem;
|
|
@@ -867,7 +1234,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
867
1234
|
rules = this.getParentGroup(groupElem);
|
|
868
1235
|
while (ruleElem && ruleElem.previousElementSibling !== null) {
|
|
869
1236
|
ruleElem = ruleElem.previousElementSibling;
|
|
870
|
-
|
|
1237
|
+
var enableSeparateCondition = this.enableSeparateConnector && ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
|
|
1238
|
+
(this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
|
|
1239
|
+
ruleElem.classList.contains('e-group-container'))));
|
|
1240
|
+
if (!this.enableSeparateConnector || enableSeparateCondition) {
|
|
1241
|
+
index++;
|
|
1242
|
+
}
|
|
871
1243
|
}
|
|
872
1244
|
rules.rules[index] = rule;
|
|
873
1245
|
}
|
|
@@ -885,6 +1257,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
885
1257
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
886
1258
|
rules.rules[rules.rules.length - 1].custom = custom;
|
|
887
1259
|
}
|
|
1260
|
+
if (this.enableSeparateConnector) {
|
|
1261
|
+
rules.rules[rules.rules.length - 1].condition = rule.condition ? rule.condition : newRule.condition;
|
|
1262
|
+
}
|
|
888
1263
|
}
|
|
889
1264
|
else {
|
|
890
1265
|
rules.rules.splice(this.ruleIndex + 1, 0, {
|
|
@@ -894,6 +1269,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
894
1269
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
895
1270
|
rules.rules[this.ruleIndex + 1].custom = custom;
|
|
896
1271
|
}
|
|
1272
|
+
if (this.enableSeparateConnector) {
|
|
1273
|
+
rules.rules[this.ruleIndex + 1].condition = rule.condition ? rule.condition : newRule.condition;
|
|
1274
|
+
}
|
|
897
1275
|
}
|
|
898
1276
|
}
|
|
899
1277
|
else {
|
|
@@ -907,7 +1285,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
907
1285
|
rules.rules.push(newRule);
|
|
908
1286
|
}
|
|
909
1287
|
}
|
|
910
|
-
this.disableRuleCondition(target, rules);
|
|
1288
|
+
this.disableRuleCondition(target, rules, isNewRuleAdded);
|
|
911
1289
|
};
|
|
912
1290
|
QueryBuilder.prototype.changeRuleTemplate = function (column, element) {
|
|
913
1291
|
var operVal = this.selectedColumn.operators;
|
|
@@ -985,7 +1363,11 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
985
1363
|
if (validateRule && validateRule.isRequired) {
|
|
986
1364
|
while (indexElem && indexElem.previousElementSibling !== null) {
|
|
987
1365
|
indexElem = indexElem.previousElementSibling;
|
|
988
|
-
|
|
1366
|
+
var separateCondition = this.enableSeparateConnector && ((!this.headerTemplate && !indexElem.classList.contains('e-btn-group')) ||
|
|
1367
|
+
(this.headerTemplate && (indexElem.classList.contains('e-rule-container') || indexElem.classList.contains('e-group-container'))));
|
|
1368
|
+
if (!this.enableSeparateConnector || separateCondition) {
|
|
1369
|
+
index++;
|
|
1370
|
+
}
|
|
989
1371
|
}
|
|
990
1372
|
fieldElem = tempElem.querySelector('.e-rule-operator .e-control');
|
|
991
1373
|
if (!rule.rules[index].operator) {
|
|
@@ -1062,9 +1444,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1062
1444
|
obj.level = this.levelColl[obj.groupElement.id].slice();
|
|
1063
1445
|
return obj;
|
|
1064
1446
|
};
|
|
1065
|
-
QueryBuilder.prototype.groupTemplate = function () {
|
|
1447
|
+
QueryBuilder.prototype.groupTemplate = function (isConnector) {
|
|
1066
1448
|
var glueElem;
|
|
1067
1449
|
var inputElem;
|
|
1450
|
+
var dragClsName;
|
|
1068
1451
|
var labelElem;
|
|
1069
1452
|
var grpActElem;
|
|
1070
1453
|
var groupBtn;
|
|
@@ -1077,9 +1460,27 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1077
1460
|
groupElem.appendChild(grpBodyElem);
|
|
1078
1461
|
// create button group in OR and AND process
|
|
1079
1462
|
if (!this.headerTemplate) {
|
|
1080
|
-
|
|
1463
|
+
if (this.allowDragAndDrop) {
|
|
1464
|
+
dragClsName = 'e-icons e-drag-qb-rule';
|
|
1465
|
+
}
|
|
1466
|
+
else {
|
|
1467
|
+
dragClsName = 'e-icons e-drag-qb-rule e-hidden';
|
|
1468
|
+
}
|
|
1469
|
+
var spanDragElement = this.createElement('span', { attrs: { class: dragClsName, 'aria-lable': 'drag handle',
|
|
1470
|
+
title: 'drag handle' } });
|
|
1471
|
+
groupHdrElem.appendChild(spanDragElement);
|
|
1472
|
+
var className = this.enableSeparateConnector && !isConnector ? 'e-lib e-btn-group e-qb-toggle-btn' : 'e-lib e-btn-group';
|
|
1473
|
+
glueElem = this.createElement('div', { attrs: { class: className, role: 'group' } });
|
|
1474
|
+
if (this.enableSeparateConnector) {
|
|
1475
|
+
glueElem.classList.add('e-multi-connector');
|
|
1476
|
+
}
|
|
1081
1477
|
if (this.enableNotCondition) {
|
|
1082
|
-
|
|
1478
|
+
if (this.enableSeparateConnector) {
|
|
1479
|
+
inputElem = this.createElement('input', { attrs: { type: 'checkbox', class: 'e-qb-toggle' } });
|
|
1480
|
+
}
|
|
1481
|
+
else {
|
|
1482
|
+
inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });
|
|
1483
|
+
}
|
|
1083
1484
|
glueElem.appendChild(inputElem);
|
|
1084
1485
|
}
|
|
1085
1486
|
inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-and', value: 'AND' } });
|
|
@@ -1094,8 +1495,16 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1094
1495
|
glueElem.appendChild(labelElem);
|
|
1095
1496
|
groupHdrElem.appendChild(glueElem);
|
|
1096
1497
|
grpActElem = this.createElement('div', { attrs: { class: 'e-group-action' } });
|
|
1097
|
-
|
|
1098
|
-
|
|
1498
|
+
if (this.enableSeparateConnector) {
|
|
1499
|
+
groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-condition-btn' } });
|
|
1500
|
+
grpActElem.appendChild(groupBtn);
|
|
1501
|
+
groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-group-btn' } });
|
|
1502
|
+
grpActElem.appendChild(groupBtn);
|
|
1503
|
+
}
|
|
1504
|
+
else {
|
|
1505
|
+
groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-btn' } });
|
|
1506
|
+
grpActElem.appendChild(groupBtn);
|
|
1507
|
+
}
|
|
1099
1508
|
groupHdrElem.appendChild(grpActElem);
|
|
1100
1509
|
}
|
|
1101
1510
|
return groupElem;
|
|
@@ -1105,9 +1514,19 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1105
1514
|
var clsName;
|
|
1106
1515
|
var cloneClsName;
|
|
1107
1516
|
var lockClsName;
|
|
1517
|
+
var dragClsName;
|
|
1108
1518
|
var ruleElem = this.createElement('div');
|
|
1109
1519
|
var fieldElem = this.createElement('div', { attrs: { class: 'e-rule-field' } });
|
|
1110
1520
|
tempElem = this.createElement('div', { attrs: { class: 'e-rule-filter' } });
|
|
1521
|
+
if (this.allowDragAndDrop) {
|
|
1522
|
+
dragClsName = 'e-icons e-drag-qb-rule';
|
|
1523
|
+
}
|
|
1524
|
+
else {
|
|
1525
|
+
dragClsName = 'e-icons e-drag-qb-rule e-hidden';
|
|
1526
|
+
}
|
|
1527
|
+
var spanDragElement = this.createElement('span', { attrs: { class: dragClsName, 'aria-lable': 'drag handle',
|
|
1528
|
+
title: 'drag handle' } });
|
|
1529
|
+
fieldElem.appendChild(spanDragElement);
|
|
1111
1530
|
var filterElem = this.createElement('input', { attrs: { type: 'text', class: 'e-filter-input' } });
|
|
1112
1531
|
tempElem.appendChild(filterElem);
|
|
1113
1532
|
fieldElem.appendChild(tempElem);
|
|
@@ -1151,7 +1570,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1151
1570
|
QueryBuilder.prototype.addGroupElement = function (isGroup, target, condition, isBtnClick, not, isRoot, rule) {
|
|
1152
1571
|
var _this = this;
|
|
1153
1572
|
var args = { groupID: target.id.replace(this.element.id + '_', ''), cancel: false, type: 'insertGroup' };
|
|
1154
|
-
if (!this.isImportRules && !this.isInitialLoad) {
|
|
1573
|
+
if (!this.isImportRules && !this.isInitialLoad && !this.prvtEvtTgrDaD) {
|
|
1155
1574
|
this.trigger('beforeChange', args, function (observedChangeArgs) {
|
|
1156
1575
|
_this.addGroupSuccess(observedChangeArgs, isGroup, target, condition, isBtnClick, not, isRoot, rule);
|
|
1157
1576
|
});
|
|
@@ -1162,6 +1581,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1162
1581
|
}
|
|
1163
1582
|
};
|
|
1164
1583
|
QueryBuilder.prototype.addGroupSuccess = function (args, isGroup, eventTarget, condition, isBtnClick, not, isRoot, rule) {
|
|
1584
|
+
var _this = this;
|
|
1165
1585
|
if (!args.cancel && (this.element.querySelectorAll('.e-group-container').length <= this.maxGroupCount)) {
|
|
1166
1586
|
var target = eventTarget;
|
|
1167
1587
|
var dltGroupBtn = void 0;
|
|
@@ -1172,8 +1592,17 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1172
1592
|
else {
|
|
1173
1593
|
groupID = target.id;
|
|
1174
1594
|
}
|
|
1595
|
+
if (this.enableSeparateConnector) {
|
|
1596
|
+
this.groupElem = this.groupTemplate();
|
|
1597
|
+
}
|
|
1175
1598
|
var groupElem = this.groupElem.cloneNode(true);
|
|
1176
1599
|
groupElem.setAttribute('id', this.element.id + '_group' + this.groupIdCounter);
|
|
1600
|
+
if (this.groupIdCounter === 0 && this.allowDragAndDrop && groupElem.querySelector('.e-drag-qb-rule')) {
|
|
1601
|
+
if (groupElem && groupElem.children[0]) {
|
|
1602
|
+
groupElem.children[0].classList.add('e-parent-header');
|
|
1603
|
+
}
|
|
1604
|
+
addClass([groupElem.querySelector('.e-drag-qb-rule')], 'e-hidden');
|
|
1605
|
+
}
|
|
1177
1606
|
if (this.headerTemplate) {
|
|
1178
1607
|
if (isRoot) {
|
|
1179
1608
|
isGroup = false;
|
|
@@ -1226,7 +1655,25 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1226
1655
|
this.isLastGroup = true;
|
|
1227
1656
|
}
|
|
1228
1657
|
else {
|
|
1229
|
-
|
|
1658
|
+
if (this.enableSeparateConnector) {
|
|
1659
|
+
var index = 0;
|
|
1660
|
+
var tempGroupIndex = this.groupIndex + 1;
|
|
1661
|
+
for (var i = 0; i < tempGroupIndex; i++) {
|
|
1662
|
+
if (childElems[i].classList.contains('e-rule-container')) {
|
|
1663
|
+
tempGroupIndex++;
|
|
1664
|
+
index++;
|
|
1665
|
+
}
|
|
1666
|
+
}
|
|
1667
|
+
if (index > 0) {
|
|
1668
|
+
index--;
|
|
1669
|
+
}
|
|
1670
|
+
var idx = this.groupIndex + index + 1;
|
|
1671
|
+
childElems[idx].parentNode.insertBefore(groupElem, childElems[idx]);
|
|
1672
|
+
}
|
|
1673
|
+
else {
|
|
1674
|
+
var idx = this.groupIndex + 1;
|
|
1675
|
+
childElems[idx].parentNode.insertBefore(groupElem, childElems[idx]);
|
|
1676
|
+
}
|
|
1230
1677
|
this.isMiddleGroup = true;
|
|
1231
1678
|
}
|
|
1232
1679
|
}
|
|
@@ -1292,7 +1739,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1292
1739
|
if (this.enableNotCondition) {
|
|
1293
1740
|
if (!this.headerTemplate) {
|
|
1294
1741
|
var notElem = groupElem.querySelector('.e-qb-toggle');
|
|
1295
|
-
|
|
1742
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1743
|
+
var tglBtn = void 0;
|
|
1744
|
+
if (this.enableSeparateConnector) {
|
|
1745
|
+
tglBtn = new CheckBox({ label: this.l10n.getConstant('NOT'), cssClass: 'e-qb-toggle' });
|
|
1746
|
+
}
|
|
1747
|
+
else {
|
|
1748
|
+
tglBtn = new Button({ content: this.l10n.getConstant('NOT'), cssClass: 'e-btn e-small' });
|
|
1749
|
+
}
|
|
1296
1750
|
tglBtn.appendTo(notElem);
|
|
1297
1751
|
groupElem.querySelector('.e-btngroup-and-lbl').classList.add('e-not');
|
|
1298
1752
|
if (this.updatedRule && this.updatedRule.not) {
|
|
@@ -1300,67 +1754,218 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1300
1754
|
}
|
|
1301
1755
|
}
|
|
1302
1756
|
}
|
|
1757
|
+
if (this.enableSeparateConnector && !this.headerTemplate) {
|
|
1758
|
+
var andElem = groupElem.querySelector('.e-btngroup-and');
|
|
1759
|
+
var orElem = groupElem.querySelector('.e-btngroup-or');
|
|
1760
|
+
var btnGroup = groupElem.querySelector('.e-btn-group');
|
|
1761
|
+
for (var i = 0; i < btnGroup.childNodes.length; i++) {
|
|
1762
|
+
if (groupElem.querySelector('.e-btn-group').childNodes[i].textContent.toLowerCase() === 'not') {
|
|
1763
|
+
if (!this.enableNotCondition) {
|
|
1764
|
+
btnGroup.childNodes[i].style.display = 'none';
|
|
1765
|
+
}
|
|
1766
|
+
else {
|
|
1767
|
+
btnGroup.childNodes[i].classList.add('e-multiconnector');
|
|
1768
|
+
}
|
|
1769
|
+
}
|
|
1770
|
+
else {
|
|
1771
|
+
btnGroup.childNodes[i].style.display = 'none';
|
|
1772
|
+
}
|
|
1773
|
+
}
|
|
1774
|
+
var prevSibling = groupElem.previousElementSibling;
|
|
1775
|
+
if (prevSibling) {
|
|
1776
|
+
if (isNullOrUndefined(this.headerTemplate)) {
|
|
1777
|
+
groupElem.parentElement.insertBefore(this.groupTemplate(true).querySelector('.e-btn-group'), groupElem);
|
|
1778
|
+
var notElem = groupElem.previousElementSibling.childNodes[0];
|
|
1779
|
+
if (notElem.classList.contains('e-qb-toggle')) {
|
|
1780
|
+
notElem.style.display = 'none';
|
|
1781
|
+
}
|
|
1782
|
+
}
|
|
1783
|
+
if (!this.isImportRules) {
|
|
1784
|
+
var groupElement = groupElem.previousElementSibling;
|
|
1785
|
+
var newAndElem = groupElement.querySelector('.e-btngroup-and');
|
|
1786
|
+
var newOrElem = groupElement.querySelector('.e-btngroup-or');
|
|
1787
|
+
if (!andElem.checked && !orElem.checked) {
|
|
1788
|
+
var nextSibling = groupElem.nextElementSibling;
|
|
1789
|
+
if (nextSibling && nextSibling.classList.contains('e-btn-group')) {
|
|
1790
|
+
andElem = nextSibling.querySelector('.e-btngroup-and');
|
|
1791
|
+
orElem = nextSibling.querySelector('.e-btngroup-or');
|
|
1792
|
+
newAndElem.checked = andElem.checked;
|
|
1793
|
+
newOrElem.checked = orElem.checked;
|
|
1794
|
+
}
|
|
1795
|
+
}
|
|
1796
|
+
else if (this.enableSeparateConnector) {
|
|
1797
|
+
if (andElem.checked) {
|
|
1798
|
+
newAndElem.checked = true;
|
|
1799
|
+
}
|
|
1800
|
+
if (orElem.checked) {
|
|
1801
|
+
newOrElem.checked = true;
|
|
1802
|
+
}
|
|
1803
|
+
}
|
|
1804
|
+
}
|
|
1805
|
+
}
|
|
1806
|
+
}
|
|
1303
1807
|
this.updatedRule = null;
|
|
1304
1808
|
if (this.headerTemplate) {
|
|
1305
|
-
var
|
|
1809
|
+
var args_4 = { requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,
|
|
1306
1810
|
notCondition: this.enableNotCondition ? not : undefined };
|
|
1307
|
-
this.trigger('actionBegin',
|
|
1811
|
+
this.trigger('actionBegin', args_4);
|
|
1308
1812
|
}
|
|
1309
1813
|
else {
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1814
|
+
if (this.enableSeparateConnector) {
|
|
1815
|
+
var conditionBtn_1 = groupElem.querySelector('.e-add-condition-btn');
|
|
1816
|
+
var btnObj = new Button({ cssClass: this.element.id + '_addConditionbtn', content: this.l10n.getConstant('AddCondition') });
|
|
1817
|
+
btnObj.appendTo(conditionBtn_1);
|
|
1818
|
+
btnObj.element.onclick = function () {
|
|
1819
|
+
_this.addRuleElement(closest(conditionBtn_1, '.e-group-container'), {});
|
|
1820
|
+
};
|
|
1821
|
+
var groupBtn_1 = groupElem.querySelector('.e-add-group-btn');
|
|
1822
|
+
btnObj = new Button({ cssClass: this.element.id + '_addGroupbtn', content: this.l10n.getConstant('AddGroup') });
|
|
1823
|
+
btnObj.appendTo(groupBtn_1);
|
|
1824
|
+
btnObj.element.onclick = function () {
|
|
1825
|
+
_this.addGroupElement(true, closest(groupBtn_1, '.e-group-container'), '', true);
|
|
1826
|
+
};
|
|
1827
|
+
}
|
|
1828
|
+
else {
|
|
1829
|
+
var groupBtn = groupElem.querySelector('.e-add-btn');
|
|
1830
|
+
var btnObj = new DropDownButton({
|
|
1831
|
+
items: this.items,
|
|
1832
|
+
cssClass: 'e-round e-small e-caret-hide e-addrulegroup',
|
|
1833
|
+
iconCss: 'e-icons e-add-icon',
|
|
1834
|
+
beforeOpen: this.selectBtn.bind(this, groupBtn),
|
|
1835
|
+
select: this.selectBtn.bind(this, groupBtn)
|
|
1836
|
+
});
|
|
1837
|
+
btnObj.appendTo(groupBtn);
|
|
1838
|
+
groupBtn.setAttribute('title', this.l10n.getConstant('AddButton'));
|
|
1839
|
+
}
|
|
1320
1840
|
}
|
|
1321
|
-
if (!this.isImportRules) {
|
|
1841
|
+
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
1322
1842
|
var grpId = target.id.replace(this.element.id + '_', '');
|
|
1323
1843
|
var chgrpId = groupElem.id.replace(this.element.id + '_', '');
|
|
1324
1844
|
this.trigger('change', { groupID: grpId, type: 'insertGroup', childGroupID: chgrpId });
|
|
1325
1845
|
}
|
|
1326
1846
|
}
|
|
1327
1847
|
};
|
|
1328
|
-
QueryBuilder.prototype.
|
|
1848
|
+
QueryBuilder.prototype.setMultiConnector = function (trgt) {
|
|
1849
|
+
if (this.enableSeparateConnector && !this.headerTemplate) {
|
|
1850
|
+
if (trgt.previousElementSibling && this.groupElem.querySelector('.e-btn-group')) {
|
|
1851
|
+
trgt.parentElement.insertBefore(this.groupTemplate(true).querySelector('.e-btn-group'), trgt);
|
|
1852
|
+
var notElem = trgt.previousElementSibling.childNodes[0];
|
|
1853
|
+
if (notElem.classList.contains('e-qb-toggle')) {
|
|
1854
|
+
notElem.style.display = 'none';
|
|
1855
|
+
}
|
|
1856
|
+
this.addHeaderDiv(trgt);
|
|
1857
|
+
}
|
|
1858
|
+
}
|
|
1859
|
+
};
|
|
1860
|
+
QueryBuilder.prototype.addHeaderDiv = function (elem) {
|
|
1861
|
+
var prevRule;
|
|
1862
|
+
var prevElem = elem.previousElementSibling.previousElementSibling;
|
|
1863
|
+
if (prevElem) {
|
|
1864
|
+
if (prevElem.id.indexOf('rule') > -1) {
|
|
1865
|
+
prevRule = this.getRule(prevElem);
|
|
1866
|
+
}
|
|
1867
|
+
else {
|
|
1868
|
+
prevRule = this.getGroup(prevElem);
|
|
1869
|
+
}
|
|
1870
|
+
if (isNullOrUndefined(prevRule.condition)) {
|
|
1871
|
+
prevRule.condition = 'and';
|
|
1872
|
+
}
|
|
1873
|
+
var orElem = elem.previousElementSibling.querySelector('.e-btngroup-or');
|
|
1874
|
+
var andElem = elem.previousElementSibling.querySelector('.e-btngroup-and');
|
|
1875
|
+
orElem.disabled = false;
|
|
1876
|
+
andElem.disabled = false;
|
|
1877
|
+
if (prevRule.condition === 'or') {
|
|
1878
|
+
orElem.checked = true;
|
|
1879
|
+
}
|
|
1880
|
+
else {
|
|
1881
|
+
andElem.checked = true;
|
|
1882
|
+
}
|
|
1883
|
+
}
|
|
1884
|
+
};
|
|
1885
|
+
QueryBuilder.prototype.headerTemplateFn = function (groupElem, not, condition, rule, groupID, isInitialRule) {
|
|
1329
1886
|
var template;
|
|
1330
1887
|
var templateID = this.element.id + '_header';
|
|
1331
1888
|
var args;
|
|
1332
1889
|
var groupHdr = groupElem.querySelector('.e-group-header');
|
|
1890
|
+
if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
|
|
1891
|
+
groupHdr = groupElem;
|
|
1892
|
+
}
|
|
1333
1893
|
if (this.headerTemplate) {
|
|
1334
1894
|
args = { requestType: 'header-template-initialize', ruleID: groupElem.id,
|
|
1335
1895
|
notCondition: this.enableNotCondition ? not : undefined,
|
|
1336
1896
|
condition: condition, rule: this.getRuleCollection(rule, true), groupID: groupID };
|
|
1337
1897
|
this.trigger('actionBegin', args);
|
|
1898
|
+
if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
|
|
1899
|
+
args.requestType = 'rule-template-create';
|
|
1900
|
+
}
|
|
1338
1901
|
this.headerFn = this.templateParser(this.headerTemplate);
|
|
1339
1902
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1340
1903
|
if (this.isReact) {
|
|
1341
1904
|
template = this.headerFn(args, this, groupElem.id, templateID)[0];
|
|
1342
|
-
|
|
1905
|
+
if (this.enableSeparateConnector && isInitialRule) {
|
|
1906
|
+
this.enableSeparateConnectorInitialRule(groupElem, template);
|
|
1907
|
+
}
|
|
1908
|
+
else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
|
|
1909
|
+
groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);
|
|
1910
|
+
}
|
|
1911
|
+
else {
|
|
1912
|
+
groupHdr.appendChild(template);
|
|
1913
|
+
}
|
|
1343
1914
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1344
1915
|
}
|
|
1345
1916
|
else if (this.isAngular) {
|
|
1346
1917
|
var templateColl = this.headerFn(args, this, groupElem.id, templateID);
|
|
1347
1918
|
template = (templateColl[0].nodeType === 3) ? templateColl[1] : templateColl[0];
|
|
1348
|
-
|
|
1919
|
+
if (this.enableSeparateConnector && isInitialRule) {
|
|
1920
|
+
this.enableSeparateConnectorInitialRule(groupElem, template);
|
|
1921
|
+
}
|
|
1922
|
+
else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
|
|
1923
|
+
groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);
|
|
1924
|
+
}
|
|
1925
|
+
else {
|
|
1926
|
+
groupHdr.appendChild(template);
|
|
1927
|
+
}
|
|
1349
1928
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1350
1929
|
}
|
|
1351
1930
|
else if (this.isVue3) {
|
|
1352
1931
|
template = this.headerFn(args, this, groupElem.id, templateID);
|
|
1353
|
-
|
|
1354
|
-
|
|
1932
|
+
if (this.enableSeparateConnector && isInitialRule) {
|
|
1933
|
+
this.enableSeparateConnectorInitialRule(groupElem, template);
|
|
1934
|
+
}
|
|
1935
|
+
else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
|
|
1936
|
+
groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);
|
|
1937
|
+
}
|
|
1938
|
+
else {
|
|
1939
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1940
|
+
append(template, groupHdr);
|
|
1941
|
+
}
|
|
1355
1942
|
}
|
|
1356
1943
|
else {
|
|
1357
1944
|
template = this.headerFn(args, this, 'Template', templateID)[0];
|
|
1358
|
-
|
|
1945
|
+
if (this.enableSeparateConnector && isInitialRule) {
|
|
1946
|
+
this.enableSeparateConnectorInitialRule(groupElem, template);
|
|
1947
|
+
}
|
|
1948
|
+
else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
|
|
1949
|
+
groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);
|
|
1950
|
+
}
|
|
1951
|
+
else {
|
|
1952
|
+
groupHdr.appendChild(template);
|
|
1953
|
+
}
|
|
1359
1954
|
}
|
|
1360
1955
|
this.renderReactTemplates();
|
|
1361
1956
|
}
|
|
1362
1957
|
return groupElem;
|
|
1363
1958
|
};
|
|
1959
|
+
QueryBuilder.prototype.enableSeparateConnectorInitialRule = function (groupElem, template) {
|
|
1960
|
+
var elem = groupElem.nextElementSibling ? groupElem.nextElementSibling : groupElem;
|
|
1961
|
+
var group = elem.closest('.e-group-container');
|
|
1962
|
+
if (!groupElem.nextElementSibling && group) {
|
|
1963
|
+
group = group.nextElementSibling ? group.nextElementSibling : group;
|
|
1964
|
+
}
|
|
1965
|
+
if (group) {
|
|
1966
|
+
group.parentElement.insertBefore(template, group);
|
|
1967
|
+
}
|
|
1968
|
+
};
|
|
1364
1969
|
/**
|
|
1365
1970
|
* Notify the changes to component.
|
|
1366
1971
|
*
|
|
@@ -1379,12 +1984,29 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1379
1984
|
return;
|
|
1380
1985
|
}
|
|
1381
1986
|
if (type === 'condition') {
|
|
1382
|
-
|
|
1987
|
+
if (this.enableSeparateConnector) {
|
|
1988
|
+
ruleElement = element.parentElement.previousElementSibling;
|
|
1989
|
+
if (ruleElement && ruleElement.classList.contains('e-group-container')) {
|
|
1990
|
+
ruleElement = ruleElement.querySelectorAll('.e-rule-container')[ruleElement.querySelectorAll('.e-rule-container').length - 1];
|
|
1991
|
+
}
|
|
1992
|
+
if (ruleElement && ruleElement.classList.contains('e-rule-container')) {
|
|
1993
|
+
rules = this.getRule(ruleElement);
|
|
1994
|
+
}
|
|
1995
|
+
rules.condition = value;
|
|
1996
|
+
}
|
|
1997
|
+
else {
|
|
1998
|
+
rules.condition = value;
|
|
1999
|
+
}
|
|
1383
2000
|
return;
|
|
1384
2001
|
}
|
|
1385
2002
|
while (ruleElement && ruleElement.previousElementSibling !== null) {
|
|
1386
2003
|
ruleElement = ruleElement.previousElementSibling;
|
|
1387
|
-
|
|
2004
|
+
if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
|
|
2005
|
+
((!this.headerTemplate && !ruleElement.classList.contains('e-btn-group')) ||
|
|
2006
|
+
this.headerTemplate && (ruleElement.classList.contains('e-rule-container') ||
|
|
2007
|
+
ruleElement.classList.contains('e-group-container'))))) {
|
|
2008
|
+
index++;
|
|
2009
|
+
}
|
|
1388
2010
|
}
|
|
1389
2011
|
var rule = rules.rules[index];
|
|
1390
2012
|
var column = this.getColumn(rule.field);
|
|
@@ -1421,7 +2043,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1421
2043
|
}
|
|
1422
2044
|
while (ruleElem && ruleElem.previousElementSibling !== null) {
|
|
1423
2045
|
ruleElem = ruleElem.previousElementSibling;
|
|
1424
|
-
|
|
2046
|
+
if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
|
|
2047
|
+
((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
|
|
2048
|
+
this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
|
|
2049
|
+
ruleElem.classList.contains('e-group-container'))))) {
|
|
2050
|
+
index++;
|
|
2051
|
+
}
|
|
1425
2052
|
}
|
|
1426
2053
|
var rule = rules.rules[index];
|
|
1427
2054
|
if (type === 'field') {
|
|
@@ -1478,12 +2105,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1478
2105
|
else {
|
|
1479
2106
|
ruleElement.className = 'e-rule-container e-horizontal-mode';
|
|
1480
2107
|
}
|
|
1481
|
-
if (
|
|
1482
|
-
if (ruleElement.className.indexOf('e-
|
|
1483
|
-
ruleElement.className
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
ruleElement.previousElementSibling.className
|
|
2108
|
+
if (!this.enableSeparateConnector) {
|
|
2109
|
+
if (ruleElement.previousElementSibling && ruleElement.previousElementSibling.className.indexOf('e-rule-container') > -1) {
|
|
2110
|
+
if (ruleElement.className.indexOf('e-joined-rule') < 0) {
|
|
2111
|
+
ruleElement.className += ' e-joined-rule';
|
|
2112
|
+
}
|
|
2113
|
+
if (ruleElement.previousElementSibling.className.indexOf('e-prev-joined-rule') < 0) {
|
|
2114
|
+
ruleElement.previousElementSibling.className += ' e-prev-joined-rule';
|
|
2115
|
+
}
|
|
1487
2116
|
}
|
|
1488
2117
|
}
|
|
1489
2118
|
if (ruleElement.previousElementSibling && ruleElement.previousElementSibling.className.indexOf('e-group-container') > -1 &&
|
|
@@ -1548,8 +2177,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1548
2177
|
var value;
|
|
1549
2178
|
var rbValue;
|
|
1550
2179
|
if (element.className.indexOf('e-radio') > -1) {
|
|
1551
|
-
|
|
1552
|
-
rbValue = parseInt(element.id.split('valuekey')[1], 0);
|
|
2180
|
+
rbValue = parseInt(element.id.split('valuekey')[1], 10);
|
|
1553
2181
|
if (this.fieldMode === 'Default') {
|
|
1554
2182
|
dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdownlist');
|
|
1555
2183
|
this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);
|
|
@@ -1579,7 +2207,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1579
2207
|
if (args.type === 'input' && args.currentTarget) {
|
|
1580
2208
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1581
2209
|
value = Number(args.currentTarget.value);
|
|
1582
|
-
|
|
2210
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2211
|
+
var elem = args.currentTarget;
|
|
2212
|
+
var numericTextBoxObj = getInstance(elem, NumericTextBox);
|
|
1583
2213
|
numericTextBoxObj.value = value;
|
|
1584
2214
|
this.isNumInput = true;
|
|
1585
2215
|
}
|
|
@@ -1688,7 +2318,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1688
2318
|
var index = 0;
|
|
1689
2319
|
while (ruleElem && ruleElem.previousElementSibling !== null) {
|
|
1690
2320
|
ruleElem = ruleElem.previousElementSibling;
|
|
1691
|
-
|
|
2321
|
+
if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
|
|
2322
|
+
((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
|
|
2323
|
+
this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
|
|
2324
|
+
ruleElem.classList.contains('e-group-container'))))) {
|
|
2325
|
+
index++;
|
|
2326
|
+
}
|
|
1692
2327
|
}
|
|
1693
2328
|
rules.rules[index].value = '';
|
|
1694
2329
|
this.changeRule(rules.rules[index], args);
|
|
@@ -1734,7 +2369,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1734
2369
|
var ruleID = ruleElem.id.replace(this.element.id + '_', '');
|
|
1735
2370
|
var eventsArgs = { groupID: grID, ruleID: ruleID, selectedField: this.fieldMode === 'DropdownTree' ?
|
|
1736
2371
|
dl.value[0] : dl.value, cancel: false, type: 'field' };
|
|
1737
|
-
if (!this.isImportRules) {
|
|
2372
|
+
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
1738
2373
|
this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {
|
|
1739
2374
|
_this.fieldChangeSuccess(observedChangeArgs, tmpRl, flt, rl, dArg);
|
|
1740
2375
|
});
|
|
@@ -1905,7 +2540,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1905
2540
|
if (valElem && this.getColumn(rule.field).template) {
|
|
1906
2541
|
filterElem = operatorElem.previousElementSibling;
|
|
1907
2542
|
}
|
|
1908
|
-
if (valElem.children.length
|
|
2543
|
+
if (valElem.children.length === 0) {
|
|
1909
2544
|
filterElem = operatorElem.previousElementSibling;
|
|
1910
2545
|
}
|
|
1911
2546
|
this.changeRuleValues(filterElem, rule, tempRule, ddlArgs);
|
|
@@ -1959,7 +2594,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1959
2594
|
value = '';
|
|
1960
2595
|
ddlIdx = -1;
|
|
1961
2596
|
}
|
|
1962
|
-
if (this.isImportRules || (this.ruleIndex > -1 || this.groupIndex > -1)) {
|
|
2597
|
+
if (this.isImportRules || (this.ruleIndex > -1 || this.groupIndex > -1 || this.prvtEvtTgrDaD)) {
|
|
1963
2598
|
value = rule ? (rule.operator ? rule.operator : value) : value;
|
|
1964
2599
|
}
|
|
1965
2600
|
var ddlOperator = void 0;
|
|
@@ -2344,14 +2979,15 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2344
2979
|
var columnData = this.getItemData(parentId);
|
|
2345
2980
|
var selectedValue;
|
|
2346
2981
|
var isTemplate = (typeof columnData.template === 'string');
|
|
2347
|
-
if (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate || rule.value
|
|
2982
|
+
if (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate || rule.value !== '') {
|
|
2348
2983
|
selectedValue = rule.value;
|
|
2349
2984
|
}
|
|
2350
2985
|
else {
|
|
2351
2986
|
selectedValue = this.setDefaultValue(parentId, false, false);
|
|
2352
2987
|
}
|
|
2353
2988
|
if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {
|
|
2354
|
-
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :
|
|
2989
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic) ? rule.value :
|
|
2990
|
+
this.setDefaultValue(parentId, true, false);
|
|
2355
2991
|
this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
|
|
2356
2992
|
if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {
|
|
2357
2993
|
ruleValElem.style.width = '100%';
|
|
@@ -2363,7 +2999,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2363
2999
|
}
|
|
2364
3000
|
else {
|
|
2365
3001
|
if (operator === 'in' || operator === 'notin') {
|
|
2366
|
-
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :
|
|
3002
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :
|
|
3003
|
+
this.setDefaultValue(parentId, true, false);
|
|
2367
3004
|
selectedValue = selectedVal.join(',');
|
|
2368
3005
|
}
|
|
2369
3006
|
var txtBox = void 0;
|
|
@@ -2383,9 +3020,11 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2383
3020
|
QueryBuilder.prototype.renderNumberValue = function (parentId, rule, operator, idx, ruleValElem, itemData, length) {
|
|
2384
3021
|
var columnData = this.getItemData(parentId);
|
|
2385
3022
|
var isTemplate = (typeof columnData.template === 'string');
|
|
2386
|
-
var selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate ||
|
|
3023
|
+
var selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate ||
|
|
3024
|
+
typeof rule.value === 'number') ? rule.value : this.setDefaultValue(parentId, false, true);
|
|
2387
3025
|
if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {
|
|
2388
|
-
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :
|
|
3026
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic) ? rule.value :
|
|
3027
|
+
this.setDefaultValue(parentId, true, false);
|
|
2389
3028
|
this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
|
|
2390
3029
|
if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {
|
|
2391
3030
|
ruleValElem.style.width = '100%';
|
|
@@ -2396,7 +3035,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2396
3035
|
}
|
|
2397
3036
|
}
|
|
2398
3037
|
else if (operator === 'in' || operator === 'notin') {
|
|
2399
|
-
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :
|
|
3038
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :
|
|
3039
|
+
this.setDefaultValue(parentId, true, false);
|
|
2400
3040
|
var selVal = selectedVal.join(',');
|
|
2401
3041
|
var txtInp = void 0;
|
|
2402
3042
|
txtInp = {
|
|
@@ -2858,10 +3498,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2858
3498
|
}
|
|
2859
3499
|
var controlName = element.className.split(' e-')[idx];
|
|
2860
3500
|
var i = parseInt(element.id.slice(-1), 2);
|
|
3501
|
+
var column;
|
|
3502
|
+
var format;
|
|
3503
|
+
var selectedDate;
|
|
3504
|
+
var value;
|
|
3505
|
+
var radioBtnObj;
|
|
2861
3506
|
switch (controlName) {
|
|
2862
3507
|
case 'checkbox':
|
|
2863
|
-
|
|
2864
|
-
var value = getComponent(element, controlName).value;
|
|
3508
|
+
value = getComponent(element, controlName).value;
|
|
2865
3509
|
rule.value = (value !== '') ? value : undefined;
|
|
2866
3510
|
break;
|
|
2867
3511
|
case 'textbox':
|
|
@@ -2871,8 +3515,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2871
3515
|
rule.value = getComponent(element, controlName).value;
|
|
2872
3516
|
break;
|
|
2873
3517
|
case 'radio':
|
|
2874
|
-
|
|
2875
|
-
var radioBtnObj = getComponent(element, controlName);
|
|
3518
|
+
radioBtnObj = getComponent(element, controlName);
|
|
2876
3519
|
if (radioBtnObj.checked) {
|
|
2877
3520
|
if (typeof rule.value === 'boolean') {
|
|
2878
3521
|
rule.value = radioBtnObj.value === 'true';
|
|
@@ -2900,12 +3543,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2900
3543
|
}
|
|
2901
3544
|
break;
|
|
2902
3545
|
case 'datepicker':
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
var format = this.getFormat(column.format);
|
|
2907
|
-
// eslint-disable-next-line
|
|
2908
|
-
var selectedDate = getComponent(element, controlName).value;
|
|
3546
|
+
column = this.getColumn(rule.field);
|
|
3547
|
+
format = this.getFormat(column.format);
|
|
3548
|
+
selectedDate = getComponent(element, controlName).value;
|
|
2909
3549
|
if (rule.operator.indexOf('between') > -1) {
|
|
2910
3550
|
if (typeof rule.value === 'string') {
|
|
2911
3551
|
rule.value = [];
|
|
@@ -2938,7 +3578,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2938
3578
|
var beforeRules = this.getValidRules(this.rule);
|
|
2939
3579
|
while (ruleElem && ruleElem.previousElementSibling !== null) {
|
|
2940
3580
|
ruleElem = ruleElem.previousElementSibling;
|
|
2941
|
-
|
|
3581
|
+
if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
|
|
3582
|
+
((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
|
|
3583
|
+
this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
|
|
3584
|
+
ruleElem.classList.contains('e-group-container'))))) {
|
|
3585
|
+
index++;
|
|
3586
|
+
}
|
|
2942
3587
|
}
|
|
2943
3588
|
var operator = rule.rules[index].operator ? rule.rules[index].operator.toString() : '';
|
|
2944
3589
|
ruleElem = closest(target, '.e-rule-container');
|
|
@@ -2987,7 +3632,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2987
3632
|
}
|
|
2988
3633
|
this.updateValues(elementCln[i_1], rule.rules[index]);
|
|
2989
3634
|
}
|
|
2990
|
-
if (!this.isImportRules) {
|
|
3635
|
+
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
2991
3636
|
this.trigger('change', eventsArgs);
|
|
2992
3637
|
}
|
|
2993
3638
|
if (this.allowValidation && rule.rules[index].field && target.parentElement.className.indexOf('e-tooltip') > -1) {
|
|
@@ -3032,7 +3677,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3032
3677
|
var beforeRuleStr = JSON.stringify({ condition: beforeRule.condition, not: beforeRule.not, rule: beforeRule.rules });
|
|
3033
3678
|
var afetrRuleStr = JSON.stringify({ condition: afterRule.condition, not: afterRule.not, rule: afterRule.rules });
|
|
3034
3679
|
if (beforeRuleStr !== afetrRuleStr) {
|
|
3035
|
-
if (!this.isImportRules) {
|
|
3680
|
+
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
3036
3681
|
this.trigger('ruleChange', { previousRule: beforeRule, rule: afterRule, type: type });
|
|
3037
3682
|
}
|
|
3038
3683
|
}
|
|
@@ -3199,7 +3844,6 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3199
3844
|
var len;
|
|
3200
3845
|
var tooltip;
|
|
3201
3846
|
_super.prototype.destroy.call(this);
|
|
3202
|
-
var popupElement;
|
|
3203
3847
|
element = this.element.querySelectorAll('.e-addrulegroup');
|
|
3204
3848
|
len = element.length;
|
|
3205
3849
|
for (i = 0; i < len; i++) {
|
|
@@ -3245,7 +3889,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3245
3889
|
if (this.portals && this.portals.length) {
|
|
3246
3890
|
this.clearQBTemplate();
|
|
3247
3891
|
}
|
|
3248
|
-
popupElement = document.querySelectorAll('.qb-dropdownlist.e-popup');
|
|
3892
|
+
var popupElement = document.querySelectorAll('.qb-dropdownlist.e-popup');
|
|
3249
3893
|
if (popupElement) {
|
|
3250
3894
|
for (i = 0; i < popupElement.length; i++) {
|
|
3251
3895
|
popupElement[i].remove();
|
|
@@ -3318,7 +3962,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3318
3962
|
}
|
|
3319
3963
|
}
|
|
3320
3964
|
if (!this.headerTemplate) {
|
|
3321
|
-
this.disableRuleCondition(groupElem, rule);
|
|
3965
|
+
this.disableRuleCondition(groupElem, rule, null, this.enableSeparateConnector ? true : null);
|
|
3322
3966
|
}
|
|
3323
3967
|
}
|
|
3324
3968
|
};
|
|
@@ -3327,6 +3971,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3327
3971
|
if (this.cssClass) {
|
|
3328
3972
|
addClass([this.element], this.cssClass.replace(/\s+/g, ' ').trim().split(' '));
|
|
3329
3973
|
}
|
|
3974
|
+
if (this.enableSeparateConnector) {
|
|
3975
|
+
addClass([this.element], 'e-multi-connector');
|
|
3976
|
+
}
|
|
3330
3977
|
if (this.enableRtl) {
|
|
3331
3978
|
addClass([this.element], 'e-rtl');
|
|
3332
3979
|
}
|
|
@@ -3363,14 +4010,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3363
4010
|
}
|
|
3364
4011
|
}
|
|
3365
4012
|
else {
|
|
3366
|
-
if (this.columns.length && this.isImportRules) {
|
|
4013
|
+
if (this.columns && this.columns.length && this.isImportRules) {
|
|
3367
4014
|
this.addGroupElement(false, this.element, this.rule.condition, false, this.rule.not, false, this.rule);
|
|
3368
4015
|
var mRules = extend({}, this.rule, {}, true);
|
|
3369
4016
|
this.isRefreshed = true;
|
|
3370
4017
|
this.setGroupRules(mRules);
|
|
3371
4018
|
this.isRefreshed = false;
|
|
3372
4019
|
}
|
|
3373
|
-
else if (this.columns.length) {
|
|
4020
|
+
else if (this.columns && this.columns.length) {
|
|
3374
4021
|
this.addRuleElement(this.element.querySelector('.e-group-container'), {});
|
|
3375
4022
|
}
|
|
3376
4023
|
this.notGroupRtl();
|
|
@@ -3424,8 +4071,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3424
4071
|
this.groupIdCounter = 0;
|
|
3425
4072
|
if (!this.headerTemplate) {
|
|
3426
4073
|
if (this.enableNotCondition) {
|
|
3427
|
-
|
|
3428
|
-
|
|
4074
|
+
var inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });
|
|
4075
|
+
if (this.groupElem.querySelector('.e-btn-group')) {
|
|
3429
4076
|
this.groupElem.querySelector('.e-btn-group').insertBefore(inputElem, this.groupElem.querySelector('.e-btngroup-and'));
|
|
3430
4077
|
}
|
|
3431
4078
|
}
|
|
@@ -3466,14 +4113,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3466
4113
|
};
|
|
3467
4114
|
QueryBuilder.prototype.onPropertyChanged = function (newProp, oldProp) {
|
|
3468
4115
|
var properties = Object.keys(newProp);
|
|
4116
|
+
var groupElem = this.element.querySelector('.e-group-container');
|
|
4117
|
+
var summaryElem = this.element.querySelector('.e-summary-content');
|
|
3469
4118
|
for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {
|
|
3470
4119
|
var prop = properties_1[_i];
|
|
3471
4120
|
switch (prop) {
|
|
3472
4121
|
case 'summaryView':
|
|
3473
|
-
// eslint-disable-next-line
|
|
3474
|
-
var groupElem = this.element.querySelector('.e-group-container');
|
|
3475
|
-
// eslint-disable-next-line
|
|
3476
|
-
var summaryElem = this.element.querySelector('.e-summary-content');
|
|
3477
4122
|
if (newProp.summaryView) {
|
|
3478
4123
|
groupElem.style.display = 'none';
|
|
3479
4124
|
if (this.element.querySelectorAll('.e-summary-content').length < 1) {
|
|
@@ -3613,6 +4258,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3613
4258
|
this.isReadonly = newProp.readonly;
|
|
3614
4259
|
this.enableReadonly();
|
|
3615
4260
|
break;
|
|
4261
|
+
case 'allowDragAndDrop':
|
|
4262
|
+
this.allowDragAndDrop = newProp.allowDragAndDrop;
|
|
4263
|
+
this.refresh();
|
|
4264
|
+
break;
|
|
4265
|
+
case 'enableSeparateConnector':
|
|
4266
|
+
this.enableSeparateConnector = newProp.enableSeparateConnector;
|
|
4267
|
+
this.refresh();
|
|
4268
|
+
break;
|
|
3616
4269
|
}
|
|
3617
4270
|
}
|
|
3618
4271
|
};
|
|
@@ -3770,6 +4423,134 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3770
4423
|
this.initControl();
|
|
3771
4424
|
}
|
|
3772
4425
|
this.renderComplete();
|
|
4426
|
+
if (this.allowDragAndDrop) {
|
|
4427
|
+
this.initializeDrag();
|
|
4428
|
+
}
|
|
4429
|
+
};
|
|
4430
|
+
QueryBuilder.prototype.initializeDrag = function () {
|
|
4431
|
+
this.draggable = new Draggable(this.element, {
|
|
4432
|
+
dragTarget: '.e-drag-qb-rule',
|
|
4433
|
+
distance: 5,
|
|
4434
|
+
helper: this.helper.bind(this),
|
|
4435
|
+
dragStart: this.dragStartHandler.bind(this),
|
|
4436
|
+
drag: this.dragHandler.bind(this),
|
|
4437
|
+
dragStop: this.dragStopHandler.bind(this),
|
|
4438
|
+
isReplaceDragEle: true,
|
|
4439
|
+
isPreventSelect: false,
|
|
4440
|
+
abort: '.e-parent-header',
|
|
4441
|
+
isDragScroll: true
|
|
4442
|
+
});
|
|
4443
|
+
};
|
|
4444
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4445
|
+
QueryBuilder.prototype.helper = function (e) {
|
|
4446
|
+
var target = this.draggable.currentStateTarget;
|
|
4447
|
+
if (!target.classList.contains('e-drag-qb-rule') || (target.classList.contains('e-drag-qb-rule') && closest(target, '.e-disable'))) {
|
|
4448
|
+
return false;
|
|
4449
|
+
}
|
|
4450
|
+
var visualElement = this.createElement('div', {
|
|
4451
|
+
className: 'e-cloneproperties e-draganddrop e-dragclone',
|
|
4452
|
+
styles: 'height:"auto", z-index:2, width:' + this.element.offsetWidth
|
|
4453
|
+
});
|
|
4454
|
+
var cloneElement;
|
|
4455
|
+
if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {
|
|
4456
|
+
cloneElement = closest(target, '.e-group-container').cloneNode(true);
|
|
4457
|
+
closest(target, '.e-group-container').classList.add('e-qb-dragging-rule');
|
|
4458
|
+
}
|
|
4459
|
+
else {
|
|
4460
|
+
visualElement.classList.add('e-group-body');
|
|
4461
|
+
cloneElement = this.createElement('div', { className: 'e-rule-container' });
|
|
4462
|
+
var ruleElement = closest(target, '.e-rule-field').cloneNode(true);
|
|
4463
|
+
cloneElement.appendChild(ruleElement);
|
|
4464
|
+
closest(target, '.e-rule-field').classList.add('e-qb-dragging-rule');
|
|
4465
|
+
}
|
|
4466
|
+
visualElement.appendChild(cloneElement);
|
|
4467
|
+
var childElements = visualElement.querySelectorAll('*');
|
|
4468
|
+
childElements.forEach(function (child) {
|
|
4469
|
+
child.removeAttribute('id');
|
|
4470
|
+
});
|
|
4471
|
+
this.element.appendChild(visualElement);
|
|
4472
|
+
return visualElement;
|
|
4473
|
+
};
|
|
4474
|
+
QueryBuilder.prototype.dragStartHandler = function (e) {
|
|
4475
|
+
this.draggedRule = e.target;
|
|
4476
|
+
this.isDragEventPrevent = false;
|
|
4477
|
+
document.body.classList.add('e-prevent-select');
|
|
4478
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
4479
|
+
this.dragElement = e.dragElement;
|
|
4480
|
+
var rule = closest(e.target, '.e-rule-container');
|
|
4481
|
+
var group = closest(e.target, '.e-group-container');
|
|
4482
|
+
var dragEventArgs = { dragRuleID: rule !== null ? rule.id : group.id, dragGroupID: group.id, cancel: false };
|
|
4483
|
+
this.trigger('dragStart', dragEventArgs);
|
|
4484
|
+
this.isDragEventPrevent = dragEventArgs.cancel;
|
|
4485
|
+
};
|
|
4486
|
+
QueryBuilder.prototype.dragHandler = function (e) {
|
|
4487
|
+
if (this.isDragEventPrevent) {
|
|
4488
|
+
return;
|
|
4489
|
+
}
|
|
4490
|
+
var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');
|
|
4491
|
+
borderLineElem.forEach(function (ele) {
|
|
4492
|
+
ele.classList.remove('e-drag-rule-bottom-line');
|
|
4493
|
+
});
|
|
4494
|
+
borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');
|
|
4495
|
+
borderLineElem.forEach(function (ele) {
|
|
4496
|
+
ele.classList.remove('e-drag-rule-top-line');
|
|
4497
|
+
});
|
|
4498
|
+
if (isNullOrUndefined(e.target)) {
|
|
4499
|
+
return;
|
|
4500
|
+
}
|
|
4501
|
+
if (e.target.nodeName === 'HTML' || closest(e.target, '.e-qb-dragging-rule') || closest(e.target, '.e-group-header') ||
|
|
4502
|
+
!closest(e.target, '#' + this.element.id) || closest(e.target, '.e-disable') || (e.target.parentElement && e.target.parentElement.classList.contains('e-btn-group') && this.enableSeparateConnector)) {
|
|
4503
|
+
this.dragElement.classList.add('e-notallowedcur');
|
|
4504
|
+
return;
|
|
4505
|
+
}
|
|
4506
|
+
else {
|
|
4507
|
+
this.dragElement.classList.remove('e-notallowedcur');
|
|
4508
|
+
}
|
|
4509
|
+
var targetElem = closest(e.target, '.e-rule-container');
|
|
4510
|
+
var grpElem = closest(e.target, '.e-group-container');
|
|
4511
|
+
if (targetElem) {
|
|
4512
|
+
var rect = targetElem.getBoundingClientRect();
|
|
4513
|
+
var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;
|
|
4514
|
+
var distanceToTop = mouseY - rect.top;
|
|
4515
|
+
var distanceToBottom = rect.bottom - mouseY;
|
|
4516
|
+
var threshold = 20; // Adjust as needed
|
|
4517
|
+
if (distanceToTop < threshold) {
|
|
4518
|
+
targetElem.classList.add('e-drag-rule-top-line');
|
|
4519
|
+
}
|
|
4520
|
+
else if (distanceToBottom < threshold) {
|
|
4521
|
+
targetElem.classList.add('e-drag-rule-bottom-line');
|
|
4522
|
+
}
|
|
4523
|
+
}
|
|
4524
|
+
else if (e.target.classList.contains('e-rule-list') && e.target.children.length === 0) {
|
|
4525
|
+
e.target.classList.add('e-drag-rule-bottom-line');
|
|
4526
|
+
}
|
|
4527
|
+
else if (e.target.classList.contains('e-rule-list') && e.target.children[0].classList.contains('e-group-container')) {
|
|
4528
|
+
var rect = e.target.children[0].getBoundingClientRect();
|
|
4529
|
+
var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;
|
|
4530
|
+
var distanceToTop = mouseY - rect.top;
|
|
4531
|
+
var threshold = 20; // Adjust as needed
|
|
4532
|
+
if (distanceToTop < threshold) {
|
|
4533
|
+
e.target.classList.add('e-drag-rule-top-line');
|
|
4534
|
+
}
|
|
4535
|
+
}
|
|
4536
|
+
else if (closest(e.target, '.e-group-container') || e.target.classList.contains('e-group-container')) {
|
|
4537
|
+
if (!grpElem) {
|
|
4538
|
+
grpElem = e.target;
|
|
4539
|
+
}
|
|
4540
|
+
if (grpElem.id.indexOf('group0') > -1) {
|
|
4541
|
+
var rect = e.target.getBoundingClientRect();
|
|
4542
|
+
var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;
|
|
4543
|
+
var distanceToBottom = rect.bottom - mouseY;
|
|
4544
|
+
var threshold = 20; // Adjust as needed
|
|
4545
|
+
if (distanceToBottom < threshold) {
|
|
4546
|
+
e.target.classList.add('e-drag-rule-bottom-line');
|
|
4547
|
+
}
|
|
4548
|
+
}
|
|
4549
|
+
}
|
|
4550
|
+
var dragEventArgs = { dragRuleID: targetElem !== null ? targetElem.id : grpElem !== null ? grpElem.id : null,
|
|
4551
|
+
dragGroupID: grpElem !== null ? grpElem.id : null, cancel: false };
|
|
4552
|
+
this.trigger('drag', dragEventArgs);
|
|
4553
|
+
this.isDragEventPrevent = dragEventArgs.cancel;
|
|
3773
4554
|
};
|
|
3774
4555
|
QueryBuilder.prototype.templateParser = function (template) {
|
|
3775
4556
|
if (template) {
|
|
@@ -3814,6 +4595,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3814
4595
|
EventHandler.add(wrapper, 'focusout', this.focusEventHandler, this);
|
|
3815
4596
|
EventHandler.add(wrapper, 'focusin', this.focusEventHandler, this);
|
|
3816
4597
|
EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);
|
|
4598
|
+
EventHandler.add(document, 'keydown', this.keyBoardHandler, this);
|
|
3817
4599
|
};
|
|
3818
4600
|
QueryBuilder.prototype.unWireEvents = function () {
|
|
3819
4601
|
var wrapper = this.getWrapper();
|
|
@@ -3821,6 +4603,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3821
4603
|
EventHandler.remove(wrapper, 'focusout', this.focusEventHandler);
|
|
3822
4604
|
EventHandler.remove(wrapper, 'focusin', this.focusEventHandler);
|
|
3823
4605
|
EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);
|
|
4606
|
+
EventHandler.remove(document, 'keydown', this.keyBoardHandler);
|
|
3824
4607
|
};
|
|
3825
4608
|
QueryBuilder.prototype.getParentGroup = function (target, isParent) {
|
|
3826
4609
|
var groupLevel = (target instanceof Element) ? this.levelColl[target.id] : this.levelColl["" + target];
|
|
@@ -3849,7 +4632,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3849
4632
|
groupId = groupElem.id.replace(this.element.id + '_', '');
|
|
3850
4633
|
}
|
|
3851
4634
|
var args = { groupID: groupId, cancel: false, type: 'deleteGroup' };
|
|
3852
|
-
if (!this.isImportRules) {
|
|
4635
|
+
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
3853
4636
|
this.trigger('beforeChange', args, function (observedChangeArgs) {
|
|
3854
4637
|
_this.deleteGroupSuccessCallBack(observedChangeArgs, target);
|
|
3855
4638
|
});
|
|
@@ -3879,13 +4662,20 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3879
4662
|
}
|
|
3880
4663
|
while (groupElem.previousElementSibling !== null) {
|
|
3881
4664
|
groupElem = groupElem.previousElementSibling;
|
|
3882
|
-
|
|
4665
|
+
if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
|
|
4666
|
+
((!this.headerTemplate && !groupElem.classList.contains('e-btn-group')) ||
|
|
4667
|
+
this.headerTemplate && (groupElem.classList.contains('e-rule-container') ||
|
|
4668
|
+
groupElem.classList.contains('e-group-container'))))) {
|
|
4669
|
+
index++;
|
|
4670
|
+
}
|
|
3883
4671
|
}
|
|
3884
|
-
if (
|
|
3885
|
-
|
|
3886
|
-
|
|
3887
|
-
|
|
3888
|
-
|
|
4672
|
+
if (!this.enableSeparateConnector) {
|
|
4673
|
+
if (nextElem && nextElem.className.indexOf('e-separate-rule') > -1) {
|
|
4674
|
+
removeClass([nextElem], 'e-separate-rule');
|
|
4675
|
+
addClass([nextElem], 'e-joined-rule');
|
|
4676
|
+
if (prevElem && prevElem.className.indexOf('e-rule-container') > -1) {
|
|
4677
|
+
addClass([prevElem], 'e-prev-joined-rule');
|
|
4678
|
+
}
|
|
3889
4679
|
}
|
|
3890
4680
|
}
|
|
3891
4681
|
var elem = groupElem.parentElement.parentElement.parentElement;
|
|
@@ -3917,7 +4707,11 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3917
4707
|
delete this.levelColl[args.groupID];
|
|
3918
4708
|
this.refreshLevelColl();
|
|
3919
4709
|
this.disableRuleCondition(elem, rule);
|
|
3920
|
-
if (!this.
|
|
4710
|
+
if (this.enableSeparateConnector && prevElem && ((!this.headerTemplate && prevElem.classList.contains('e-btn-group')) ||
|
|
4711
|
+
(this.headerTemplate && prevElem.classList.contains('e-custom-group-btn')))) {
|
|
4712
|
+
detach(prevElem);
|
|
4713
|
+
}
|
|
4714
|
+
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
3921
4715
|
this.trigger('change', args);
|
|
3922
4716
|
}
|
|
3923
4717
|
this.filterRules(beforeRules, this.getValidRules(this.rule), 'deleteGroup');
|
|
@@ -3934,7 +4728,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3934
4728
|
var groupID = groupElem.id.replace(this.element.id + '_', '');
|
|
3935
4729
|
var ruleID = closest(target, '.e-rule-container').id.replace(this.element.id + '_', '');
|
|
3936
4730
|
var args = { groupID: groupID, ruleID: ruleID, cancel: false, type: 'deleteRule' };
|
|
3937
|
-
if (!this.isImportRules) {
|
|
4731
|
+
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
3938
4732
|
this.trigger('beforeChange', args, function (observedChangeArgs) {
|
|
3939
4733
|
_this.deleteRuleSuccessCallBack(observedChangeArgs, target);
|
|
3940
4734
|
});
|
|
@@ -3949,10 +4743,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3949
4743
|
var rule = this.getParentGroup(groupElem);
|
|
3950
4744
|
var ruleElem = closest(target, '.e-rule-container');
|
|
3951
4745
|
var beforeRules = this.getValidRules(this.rule);
|
|
3952
|
-
var clnruleElem = ruleElem;
|
|
3953
|
-
var nextElem = ruleElem.nextElementSibling;
|
|
3954
4746
|
var prevElem = ruleElem.previousElementSibling;
|
|
3955
4747
|
var index = 0;
|
|
4748
|
+
var clnruleElem = ruleElem;
|
|
4749
|
+
var nextElem = ruleElem.nextElementSibling;
|
|
3956
4750
|
var valElem = ruleElem.querySelectorAll('.e-tooltip');
|
|
3957
4751
|
var i = void 0;
|
|
3958
4752
|
var len = valElem.length;
|
|
@@ -3961,7 +4755,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3961
4755
|
}
|
|
3962
4756
|
while (ruleElem.previousElementSibling !== null) {
|
|
3963
4757
|
ruleElem = ruleElem.previousElementSibling;
|
|
3964
|
-
|
|
4758
|
+
if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
|
|
4759
|
+
((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
|
|
4760
|
+
this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
|
|
4761
|
+
ruleElem.classList.contains('e-group-container'))))) {
|
|
4762
|
+
index++;
|
|
4763
|
+
}
|
|
3965
4764
|
}
|
|
3966
4765
|
var column = this.getColumn(rule.rules[index].field);
|
|
3967
4766
|
if (column && column.template && clnruleElem.querySelector('.e-template')) {
|
|
@@ -3980,17 +4779,27 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3980
4779
|
var isTemplateRendered = clnruleElem.querySelector('.e-template-value');
|
|
3981
4780
|
// eslint-disable
|
|
3982
4781
|
try {
|
|
4782
|
+
if (this.enableSeparateConnector && (clnruleElem.previousElementSibling || clnruleElem.nextElementSibling)) {
|
|
4783
|
+
var previousElem = clnruleElem.previousElementSibling;
|
|
4784
|
+
var nextElem_1 = clnruleElem.nextElementSibling;
|
|
4785
|
+
if (isNullOrUndefined(nextElem_1) && ((!this.headerTemplate && previousElem.classList.contains('e-btn-group'))
|
|
4786
|
+
|| (this.headerTemplate && previousElem.classList.contains('e-custom-group-btn')))) {
|
|
4787
|
+
if (previousElem && previousElem.previousElementSibling && previousElem.previousElementSibling.classList.contains('e-rule-container')) {
|
|
4788
|
+
var rule_1 = this.getRule(previousElem.previousElementSibling);
|
|
4789
|
+
rule_1.condition = null;
|
|
4790
|
+
}
|
|
4791
|
+
detach(previousElem);
|
|
4792
|
+
}
|
|
4793
|
+
else if ((!this.headerTemplate && nextElem_1.classList.contains('e-btn-group'))
|
|
4794
|
+
|| (this.headerTemplate && nextElem_1.classList.contains('e-custom-group-btn'))) {
|
|
4795
|
+
detach(nextElem_1);
|
|
4796
|
+
}
|
|
4797
|
+
}
|
|
3983
4798
|
detach(clnruleElem);
|
|
3984
4799
|
}
|
|
3985
4800
|
catch (err) {
|
|
3986
|
-
|
|
3987
|
-
err = [];
|
|
3988
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
3989
|
-
var error = 'error';
|
|
3990
|
-
// eslint-disable-next-line
|
|
3991
|
-
err[error] = error;
|
|
4801
|
+
return;
|
|
3992
4802
|
}
|
|
3993
|
-
// eslint-enable
|
|
3994
4803
|
if (column && column.ruleTemplate) {
|
|
3995
4804
|
this.clearQBTemplate([clnruleElem.id]);
|
|
3996
4805
|
}
|
|
@@ -3999,13 +4808,13 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3999
4808
|
}
|
|
4000
4809
|
rule.rules.splice(index, 1);
|
|
4001
4810
|
if (!(rule.rules[0] && rule.rules[0].rules)) {
|
|
4002
|
-
this.disableRuleCondition(groupElem, rule);
|
|
4811
|
+
this.disableRuleCondition(groupElem, rule, this.enableSeparateConnector ? true : false);
|
|
4003
4812
|
}
|
|
4004
4813
|
var tooltipElem = this.element.querySelectorAll('.e-tooltip');
|
|
4005
4814
|
for (var i_3 = 0; i_3 < tooltipElem.length; i_3++) {
|
|
4006
4815
|
getComponent(tooltipElem[i_3], 'tooltip').refresh(tooltipElem[i_3]);
|
|
4007
4816
|
}
|
|
4008
|
-
if (!this.isImportRules) {
|
|
4817
|
+
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
4009
4818
|
this.trigger('change', args);
|
|
4010
4819
|
}
|
|
4011
4820
|
this.filterRules(beforeRules, this.getValidRules(this.rule), 'deleteRule');
|
|
@@ -4029,9 +4838,32 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4029
4838
|
this.isImportRules = false;
|
|
4030
4839
|
};
|
|
4031
4840
|
QueryBuilder.prototype.keyBoardHandler = function (e) {
|
|
4032
|
-
if (this.readonly && (e.keyCode === 38 || e.keyCode === 40 || e.keyCode === 13)) {
|
|
4841
|
+
if (e.currentTarget === this.element && this.readonly && (e.keyCode === 38 || e.keyCode === 40 || e.keyCode === 13)) {
|
|
4033
4842
|
e.preventDefault();
|
|
4034
4843
|
}
|
|
4844
|
+
else if (e.code === 'Escape' && this.allowDragAndDrop) {
|
|
4845
|
+
this.isDragEventPrevent = true;
|
|
4846
|
+
document.body.classList.remove('e-prevent-select');
|
|
4847
|
+
var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');
|
|
4848
|
+
borderLineElem.forEach(function (ele) {
|
|
4849
|
+
ele.classList.remove('e-drag-rule-bottom-line');
|
|
4850
|
+
});
|
|
4851
|
+
borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');
|
|
4852
|
+
borderLineElem.forEach(function (ele) {
|
|
4853
|
+
ele.classList.remove('e-drag-rule-top-line');
|
|
4854
|
+
});
|
|
4855
|
+
borderLineElem = this.element.querySelectorAll('.e-qb-dragging-rule');
|
|
4856
|
+
borderLineElem.forEach(function (ele) {
|
|
4857
|
+
ele.classList.remove('e-qb-dragging-rule');
|
|
4858
|
+
});
|
|
4859
|
+
var dragElemnet = this.element.querySelector('.e-cloneproperties');
|
|
4860
|
+
if (dragElemnet) {
|
|
4861
|
+
remove(dragElemnet);
|
|
4862
|
+
}
|
|
4863
|
+
if (this.enableSeparateConnector) {
|
|
4864
|
+
this.refresh();
|
|
4865
|
+
}
|
|
4866
|
+
}
|
|
4035
4867
|
};
|
|
4036
4868
|
QueryBuilder.prototype.clearQBTemplate = function (ruleElemColl) {
|
|
4037
4869
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -4039,7 +4871,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4039
4871
|
this.clearTemplate(ruleElemColl);
|
|
4040
4872
|
}
|
|
4041
4873
|
};
|
|
4042
|
-
QueryBuilder.prototype.disableRuleCondition = function (groupElem, rules) {
|
|
4874
|
+
QueryBuilder.prototype.disableRuleCondition = function (groupElem, rules, isNewRuleAdded, isNewGroup) {
|
|
4043
4875
|
if (!this.headerTemplate) {
|
|
4044
4876
|
if (this.readonly) {
|
|
4045
4877
|
return;
|
|
@@ -4055,21 +4887,124 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4055
4887
|
orElem.nextElementSibling.classList.remove('e-btn-disable');
|
|
4056
4888
|
andElem.nextElementSibling.classList.remove('e-btn-disable');
|
|
4057
4889
|
}
|
|
4058
|
-
if (
|
|
4059
|
-
|
|
4890
|
+
if (this.enableSeparateConnector && !isNewRuleAdded) {
|
|
4891
|
+
var index = 0;
|
|
4892
|
+
var element = void 0;
|
|
4893
|
+
// eslint-disable-next-line no-constant-condition
|
|
4894
|
+
while (true) {
|
|
4895
|
+
var andGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-and');
|
|
4896
|
+
var orGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-or');
|
|
4897
|
+
andElem = andGroup[andGroup.length - (1 + index)];
|
|
4898
|
+
orElem = orGroup[orGroup.length - (1 + index)];
|
|
4899
|
+
element = andGroup[andGroup.length - (1 + index)];
|
|
4900
|
+
if (element && element.parentElement && element.parentElement.style.display === 'none') {
|
|
4901
|
+
index++;
|
|
4902
|
+
}
|
|
4903
|
+
else {
|
|
4904
|
+
break;
|
|
4905
|
+
}
|
|
4906
|
+
}
|
|
4907
|
+
var elem = groupElem.previousElementSibling;
|
|
4908
|
+
while (elem && !elem.classList.contains('e-rule-container')) {
|
|
4909
|
+
if (elem.classList.contains('e-group-container')) {
|
|
4910
|
+
elem = elem.querySelectorAll('.e-rule-container')[elem.querySelectorAll('.e-rule-container').length - 1];
|
|
4911
|
+
break;
|
|
4912
|
+
}
|
|
4913
|
+
elem = elem.previousElementSibling;
|
|
4914
|
+
}
|
|
4915
|
+
if (isNewGroup && groupElem.classList.contains('e-group-container')) {
|
|
4916
|
+
elem = groupElem;
|
|
4917
|
+
var prevRule = this.getGroup(elem);
|
|
4918
|
+
if (prevRule.condition === 'or') {
|
|
4919
|
+
orElem.checked = true;
|
|
4920
|
+
}
|
|
4921
|
+
else {
|
|
4922
|
+
andElem.checked = true;
|
|
4923
|
+
}
|
|
4924
|
+
}
|
|
4925
|
+
else if (elem && elem.classList.contains('e-rule-container')) {
|
|
4926
|
+
var ruleID = elem.id.replace(this.element.id + '_', '');
|
|
4927
|
+
var prevRule = this.getRule(ruleID);
|
|
4928
|
+
if (prevRule.condition === 'or') {
|
|
4929
|
+
orElem.checked = true;
|
|
4930
|
+
}
|
|
4931
|
+
else {
|
|
4932
|
+
andElem.checked = true;
|
|
4933
|
+
}
|
|
4934
|
+
}
|
|
4060
4935
|
}
|
|
4061
|
-
else {
|
|
4062
|
-
|
|
4936
|
+
else if (!isNewRuleAdded) {
|
|
4937
|
+
if (rules && rules.condition === 'or') {
|
|
4938
|
+
orElem.checked = true;
|
|
4939
|
+
}
|
|
4940
|
+
else {
|
|
4941
|
+
andElem.checked = true;
|
|
4942
|
+
}
|
|
4063
4943
|
}
|
|
4064
4944
|
}
|
|
4065
4945
|
else {
|
|
4066
|
-
|
|
4067
|
-
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
|
|
4072
|
-
|
|
4946
|
+
if (this.enableSeparateConnector && !isNewRuleAdded) {
|
|
4947
|
+
var index = 0;
|
|
4948
|
+
var element = void 0;
|
|
4949
|
+
// eslint-disable-next-line no-constant-condition
|
|
4950
|
+
while (true) {
|
|
4951
|
+
var andGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-and');
|
|
4952
|
+
var orGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-or');
|
|
4953
|
+
andElem = andGroup[andGroup.length - (1 + index)];
|
|
4954
|
+
orElem = orGroup[orGroup.length - (1 + index)];
|
|
4955
|
+
element = andGroup[andGroup.length - (1 + index)];
|
|
4956
|
+
if (element && element.parentElement && element.parentElement.style.display === 'none') {
|
|
4957
|
+
index++;
|
|
4958
|
+
}
|
|
4959
|
+
else {
|
|
4960
|
+
break;
|
|
4961
|
+
}
|
|
4962
|
+
}
|
|
4963
|
+
var elem = void 0;
|
|
4964
|
+
var tempElem = groupElem.previousElementSibling;
|
|
4965
|
+
while (tempElem) {
|
|
4966
|
+
if (tempElem.classList.contains('e-group-container')) {
|
|
4967
|
+
tempElem = tempElem.querySelectorAll('.e-rule-container')[tempElem.querySelectorAll('.e-rule-container').length - 1];
|
|
4968
|
+
}
|
|
4969
|
+
if (tempElem.classList.contains('e-rule-container')) {
|
|
4970
|
+
elem = tempElem;
|
|
4971
|
+
break;
|
|
4972
|
+
}
|
|
4973
|
+
tempElem = tempElem.previousElementSibling;
|
|
4974
|
+
}
|
|
4975
|
+
if (isNullOrUndefined(elem) && groupElem.querySelectorAll('.e-rule-container')[groupElem.querySelectorAll('.e-rule-container').length - 1]) {
|
|
4976
|
+
elem = groupElem.querySelectorAll('.e-rule-container')[groupElem.querySelectorAll('.e-rule-container').length - 1];
|
|
4977
|
+
}
|
|
4978
|
+
if (isNewGroup && groupElem.classList.contains('e-group-container')) {
|
|
4979
|
+
elem = groupElem;
|
|
4980
|
+
var prevRule = this.getGroup(elem);
|
|
4981
|
+
if (prevRule.condition === 'or') {
|
|
4982
|
+
orElem.checked = true;
|
|
4983
|
+
}
|
|
4984
|
+
else {
|
|
4985
|
+
andElem.checked = true;
|
|
4986
|
+
}
|
|
4987
|
+
}
|
|
4988
|
+
else if (elem) {
|
|
4989
|
+
var ruleID = elem.id.replace(this.element.id + '_', '');
|
|
4990
|
+
var prevRule = this.getRule(ruleID);
|
|
4991
|
+
if (prevRule.condition === 'or' && orElem) {
|
|
4992
|
+
orElem.checked = true;
|
|
4993
|
+
}
|
|
4994
|
+
else if (andElem) {
|
|
4995
|
+
andElem.checked = true;
|
|
4996
|
+
}
|
|
4997
|
+
}
|
|
4998
|
+
}
|
|
4999
|
+
else if (!isNewRuleAdded) {
|
|
5000
|
+
andElem.checked = false;
|
|
5001
|
+
andElem.disabled = true;
|
|
5002
|
+
orElem.checked = false;
|
|
5003
|
+
orElem.disabled = true;
|
|
5004
|
+
if (rules) {
|
|
5005
|
+
orElem.nextElementSibling.classList.add('e-btn-disable');
|
|
5006
|
+
andElem.nextElementSibling.classList.add('e-btn-disable');
|
|
5007
|
+
}
|
|
4073
5008
|
}
|
|
4074
5009
|
}
|
|
4075
5010
|
}
|
|
@@ -4173,7 +5108,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4173
5108
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
4174
5109
|
rule.custom = customObj;
|
|
4175
5110
|
}
|
|
4176
|
-
if (rule.rules.length === 0) {
|
|
5111
|
+
if (rule.rules && rule.rules.length === 0) {
|
|
4177
5112
|
rule = {};
|
|
4178
5113
|
}
|
|
4179
5114
|
}
|
|
@@ -4242,7 +5177,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4242
5177
|
var rule = this.getParentGroup(groupElem);
|
|
4243
5178
|
while (ruleElem.previousElementSibling !== null) {
|
|
4244
5179
|
ruleElem = ruleElem.previousElementSibling;
|
|
4245
|
-
|
|
5180
|
+
if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
|
|
5181
|
+
((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
|
|
5182
|
+
this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
|
|
5183
|
+
ruleElem.classList.contains('e-group-container'))))) {
|
|
5184
|
+
index++;
|
|
5185
|
+
}
|
|
4246
5186
|
}
|
|
4247
5187
|
return rule.rules[index];
|
|
4248
5188
|
};
|
|
@@ -4652,13 +5592,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4652
5592
|
if (value.indexOf(':') > -1 && (value.indexOf('/') < 0 && value.indexOf(',') < 0
|
|
4653
5593
|
&& value.indexOf('-') < 0)) {
|
|
4654
5594
|
currDate = new Date();
|
|
4655
|
-
|
|
4656
|
-
currDate.
|
|
4657
|
-
// eslint-disable-next-line
|
|
4658
|
-
currDate.setMinutes(parseInt(value.split(':')[1]));
|
|
5595
|
+
currDate.setHours(parseInt(value.split(':')[0], 10));
|
|
5596
|
+
currDate.setMinutes(parseInt(value.split(':')[1], 10));
|
|
4659
5597
|
if (value.split(':')[2]) {
|
|
4660
|
-
|
|
4661
|
-
currDate.setSeconds(parseInt(value.split(':')[2]));
|
|
5598
|
+
currDate.setSeconds(parseInt(value.split(':')[2], 10));
|
|
4662
5599
|
}
|
|
4663
5600
|
}
|
|
4664
5601
|
return currDate;
|
|
@@ -4674,17 +5611,43 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4674
5611
|
parentElem = this.renderGroup(rule, rule.condition, parentElem, not);
|
|
4675
5612
|
}
|
|
4676
5613
|
else {
|
|
4677
|
-
if (rule.rules.length > 1 && !this.headerTemplate) {
|
|
5614
|
+
if (rule.rules && rule.rules.length > 1 && !this.headerTemplate) {
|
|
4678
5615
|
// enable/disable conditions when rule group is added
|
|
4679
5616
|
var orElem = parentElem.querySelector('.e-btngroup-or');
|
|
4680
5617
|
var andElem = parentElem.querySelector('.e-btngroup-and');
|
|
5618
|
+
if (this.enableSeparateConnector && parentElem.previousElementSibling) {
|
|
5619
|
+
orElem = parentElem.previousElementSibling.querySelector('.e-btngroup-or');
|
|
5620
|
+
andElem = parentElem.previousElementSibling.querySelector('.e-btngroup-and');
|
|
5621
|
+
}
|
|
4681
5622
|
orElem.disabled = false;
|
|
4682
5623
|
andElem.disabled = false;
|
|
4683
|
-
if (
|
|
4684
|
-
|
|
5624
|
+
if (this.enableSeparateConnector) {
|
|
5625
|
+
var elem = parentElem.previousElementSibling;
|
|
5626
|
+
while (elem && !elem.classList.contains('e-rule-container')) {
|
|
5627
|
+
if (elem.classList.contains('e-group-container')) {
|
|
5628
|
+
elem = elem.querySelectorAll('.e-rule-container')[elem.querySelectorAll('.e-rule-container').length - 1];
|
|
5629
|
+
break;
|
|
5630
|
+
}
|
|
5631
|
+
elem = elem.previousElementSibling;
|
|
5632
|
+
}
|
|
5633
|
+
if (elem && elem.classList.contains('e-rule-container')) {
|
|
5634
|
+
var ruleID = elem.id.replace(this.element.id + '_', '');
|
|
5635
|
+
var prevRule = this.getRule(ruleID);
|
|
5636
|
+
if (prevRule.condition === 'or') {
|
|
5637
|
+
orElem.checked = true;
|
|
5638
|
+
}
|
|
5639
|
+
else {
|
|
5640
|
+
andElem.checked = true;
|
|
5641
|
+
}
|
|
5642
|
+
}
|
|
4685
5643
|
}
|
|
4686
5644
|
else {
|
|
4687
|
-
|
|
5645
|
+
if (rule.condition === 'or') {
|
|
5646
|
+
orElem.checked = true;
|
|
5647
|
+
}
|
|
5648
|
+
else {
|
|
5649
|
+
andElem.checked = true;
|
|
5650
|
+
}
|
|
4688
5651
|
}
|
|
4689
5652
|
}
|
|
4690
5653
|
else {
|
|
@@ -4704,7 +5667,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4704
5667
|
}
|
|
4705
5668
|
}
|
|
4706
5669
|
}
|
|
4707
|
-
if (rule.rules.length === 0 && this.headerTemplate) {
|
|
5670
|
+
if (rule.rules && rule.rules.length === 0 && this.headerTemplate) {
|
|
4708
5671
|
rule.rules[0] = { 'label': '', 'field': '', 'operator': '', 'type': '', 'value': '' };
|
|
4709
5672
|
}
|
|
4710
5673
|
var ruleColl = rule.rules;
|
|
@@ -4725,10 +5688,6 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4725
5688
|
var lockGrpTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-grp-btn');
|
|
4726
5689
|
this.groupLock(lockGrpTarget);
|
|
4727
5690
|
}
|
|
4728
|
-
if (isNullOrUndefined(ruleColl[i].rules) && ruleColl[i].isLocked) {
|
|
4729
|
-
var lockRuleTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-rule-btn');
|
|
4730
|
-
this.ruleLock(lockRuleTarget);
|
|
4731
|
-
}
|
|
4732
5691
|
}
|
|
4733
5692
|
}
|
|
4734
5693
|
if (parentElem) {
|
|
@@ -4746,7 +5705,17 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4746
5705
|
if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isMiddleGroup) {
|
|
4747
5706
|
this.isMiddleGroup = false;
|
|
4748
5707
|
this.cloneGrpBtnClick = false;
|
|
4749
|
-
|
|
5708
|
+
var index = 0;
|
|
5709
|
+
var tempGroupIndex = this.groupIndex + 1;
|
|
5710
|
+
if (this.enableSeparateConnector) {
|
|
5711
|
+
for (var i = 0; i < tempGroupIndex; i++) {
|
|
5712
|
+
if (cloneElem[i].classList.contains('e-rule-container')) {
|
|
5713
|
+
tempGroupIndex++;
|
|
5714
|
+
index++;
|
|
5715
|
+
}
|
|
5716
|
+
}
|
|
5717
|
+
}
|
|
5718
|
+
return cloneElem[this.groupIndex + index + 1]; // group added in the middle
|
|
4750
5719
|
}
|
|
4751
5720
|
else if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isLastGroup) {
|
|
4752
5721
|
this.isLastGroup = false;
|
|
@@ -4915,6 +5884,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4915
5884
|
for (var j = 0, jLen = rules.rules.length; j < jLen; j++) {
|
|
4916
5885
|
if (rules.rules[j].rules) {
|
|
4917
5886
|
queryStr = this.getSqlString(rules.rules[j], enableEscape, queryStr, sqlLocale);
|
|
5887
|
+
condition = rules.rules[j].condition;
|
|
4918
5888
|
}
|
|
4919
5889
|
else {
|
|
4920
5890
|
var rule = rules.rules[j];
|
|
@@ -5006,8 +5976,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5006
5976
|
if (condition === '' || (rule && rule.condition !== '' && rule.custom && rule.custom.isCustom)) {
|
|
5007
5977
|
condition = rule.condition;
|
|
5008
5978
|
}
|
|
5009
|
-
|
|
5010
|
-
|
|
5979
|
+
if (condition) {
|
|
5980
|
+
condition = sqlLocale ? this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();
|
|
5981
|
+
queryStr += ' ' + condition + ' ';
|
|
5982
|
+
}
|
|
5011
5983
|
}
|
|
5012
5984
|
}
|
|
5013
5985
|
}
|
|
@@ -5073,12 +6045,19 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5073
6045
|
* @returns {ParameterizedSql} – Parameterized SQL query from rules.
|
|
5074
6046
|
*/
|
|
5075
6047
|
QueryBuilder.prototype.getParameterizedSql = function (rule) {
|
|
5076
|
-
|
|
5077
|
-
|
|
6048
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6049
|
+
if (this.moduleLoader.loadedModules.length) {
|
|
6050
|
+
if (!rule) {
|
|
6051
|
+
rule = this.getValidRules();
|
|
6052
|
+
}
|
|
6053
|
+
var obj = { sql: null };
|
|
6054
|
+
this.notify('query-library', { prop: 'getParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
|
|
6055
|
+
return obj['sql'];
|
|
5078
6056
|
}
|
|
5079
|
-
|
|
5080
|
-
|
|
5081
|
-
|
|
6057
|
+
else {
|
|
6058
|
+
console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
|
|
6059
|
+
}
|
|
6060
|
+
return null;
|
|
5082
6061
|
};
|
|
5083
6062
|
/**
|
|
5084
6063
|
* Sets the rules from the parameter sql query.
|
|
@@ -5087,13 +6066,19 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5087
6066
|
* @returns {void}
|
|
5088
6067
|
*/
|
|
5089
6068
|
QueryBuilder.prototype.setParameterizedSql = function (sqlQuery) {
|
|
5090
|
-
|
|
5091
|
-
this.
|
|
5092
|
-
|
|
5093
|
-
|
|
5094
|
-
sql = sql
|
|
5095
|
-
|
|
5096
|
-
|
|
6069
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6070
|
+
if (this.moduleLoader.loadedModules.length) {
|
|
6071
|
+
var obj = { sql: null };
|
|
6072
|
+
this.notify('query-library', { prop: 'convertParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
|
|
6073
|
+
var sql = obj['sql'];
|
|
6074
|
+
if (sql) {
|
|
6075
|
+
sql = sql.replace(/`/g, '');
|
|
6076
|
+
var ruleModel = this.getRulesFromSql(sql);
|
|
6077
|
+
this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
|
|
6078
|
+
}
|
|
6079
|
+
}
|
|
6080
|
+
else {
|
|
6081
|
+
console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
|
|
5097
6082
|
}
|
|
5098
6083
|
};
|
|
5099
6084
|
/**
|
|
@@ -5103,12 +6088,19 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5103
6088
|
* @returns {ParameterizedNamedSql} – Parameterized Named SQL query from rules.
|
|
5104
6089
|
*/
|
|
5105
6090
|
QueryBuilder.prototype.getParameterizedNamedSql = function (rule) {
|
|
5106
|
-
|
|
5107
|
-
|
|
6091
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6092
|
+
if (this.moduleLoader.loadedModules.length) {
|
|
6093
|
+
if (!rule) {
|
|
6094
|
+
rule = this.getValidRules();
|
|
6095
|
+
}
|
|
6096
|
+
var obj = { sql: null };
|
|
6097
|
+
this.notify('query-library', { prop: 'getNamedParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
|
|
6098
|
+
return obj['sql'];
|
|
5108
6099
|
}
|
|
5109
|
-
|
|
5110
|
-
|
|
5111
|
-
|
|
6100
|
+
else {
|
|
6101
|
+
console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
|
|
6102
|
+
}
|
|
6103
|
+
return null;
|
|
5112
6104
|
};
|
|
5113
6105
|
/**
|
|
5114
6106
|
* Sets the rules from the named parameter SQL query.
|
|
@@ -5117,13 +6109,19 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5117
6109
|
* @returns {void}
|
|
5118
6110
|
*/
|
|
5119
6111
|
QueryBuilder.prototype.setParameterizedNamedSql = function (sqlQuery) {
|
|
5120
|
-
|
|
5121
|
-
this.
|
|
5122
|
-
|
|
5123
|
-
|
|
5124
|
-
sql = sql
|
|
5125
|
-
|
|
5126
|
-
|
|
6112
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6113
|
+
if (this.moduleLoader.loadedModules.length) {
|
|
6114
|
+
var obj = { sql: null };
|
|
6115
|
+
this.notify('query-library', { prop: 'convertNamedParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
|
|
6116
|
+
var sql = obj['sql'];
|
|
6117
|
+
if (sql) {
|
|
6118
|
+
sql = sql.replace(/`/g, '');
|
|
6119
|
+
var ruleModel = this.getRulesFromSql(sql);
|
|
6120
|
+
this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
|
|
6121
|
+
}
|
|
6122
|
+
}
|
|
6123
|
+
else {
|
|
6124
|
+
console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
|
|
5127
6125
|
}
|
|
5128
6126
|
};
|
|
5129
6127
|
/**
|
|
@@ -5134,8 +6132,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5134
6132
|
* @returns {void}
|
|
5135
6133
|
*/
|
|
5136
6134
|
QueryBuilder.prototype.setMongoQuery = function (mongoQuery, mongoLocale) {
|
|
5137
|
-
|
|
5138
|
-
this.
|
|
6135
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6136
|
+
if (this.moduleLoader.loadedModules.length) {
|
|
6137
|
+
this.rule = { condition: 'and', not: false, rules: [] };
|
|
6138
|
+
this.notify('query-library', { prop: 'mongoParser', onPropertyChange: false, value: { mongoQuery: JSON.parse(mongoQuery), rule: this.rule, mongoLocale: mongoLocale } });
|
|
6139
|
+
}
|
|
6140
|
+
else {
|
|
6141
|
+
console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
|
|
6142
|
+
}
|
|
5139
6143
|
};
|
|
5140
6144
|
/**
|
|
5141
6145
|
* Gets the Mongo query from rules.
|
|
@@ -5144,12 +6148,19 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5144
6148
|
* @returns {object} - Sql query from rules.
|
|
5145
6149
|
*/
|
|
5146
6150
|
QueryBuilder.prototype.getMongoQuery = function (rule) {
|
|
5147
|
-
|
|
5148
|
-
|
|
6151
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6152
|
+
if (this.moduleLoader.loadedModules.length) {
|
|
6153
|
+
if (!rule) {
|
|
6154
|
+
rule = this.getValidRules();
|
|
6155
|
+
}
|
|
6156
|
+
var obj = { mongoQuery: null };
|
|
6157
|
+
this.notify('query-library', { prop: 'getMongoFromRules', onPropertyChange: false, value: { rule: rule, mongoQuery: '', obj: obj } });
|
|
6158
|
+
return obj['mongoQuery'];
|
|
6159
|
+
}
|
|
6160
|
+
else {
|
|
6161
|
+
console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
|
|
5149
6162
|
}
|
|
5150
|
-
|
|
5151
|
-
this.notify('query-library', { prop: 'getMongoFromRules', onPropertyChange: false, value: { rule: rule, mongoQuery: '', obj: obj } });
|
|
5152
|
-
return obj['mongoQuery'];
|
|
6163
|
+
return '';
|
|
5153
6164
|
};
|
|
5154
6165
|
/**
|
|
5155
6166
|
* Clones the rule based on the rule ID to the specific group.
|
|
@@ -5168,7 +6179,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5168
6179
|
this.showButtons.cloneRule = true;
|
|
5169
6180
|
this.addRules([{
|
|
5170
6181
|
'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
|
|
5171
|
-
'value': getRule.value
|
|
6182
|
+
'value': getRule.value, 'condition': getRule.condition
|
|
5172
6183
|
}], groupID);
|
|
5173
6184
|
this.ruleIndex = -1;
|
|
5174
6185
|
this.cloneRuleBtnClick = false;
|
|
@@ -5257,8 +6268,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5257
6268
|
var matchValue;
|
|
5258
6269
|
for (var i = 0, iLen = operators.length; i < iLen; i++) {
|
|
5259
6270
|
regexStr = /^\w+$/.test(operators[i]) ? '\\b' : '';
|
|
5260
|
-
// eslint-disable-next-line
|
|
5261
|
-
|
|
6271
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6272
|
+
var regExp = RegExp;
|
|
6273
|
+
regex = new regExp('^(' + operators[i] + ')' + regexStr, 'ig');
|
|
5262
6274
|
if (regex.exec(sqlString)) {
|
|
5263
6275
|
this.parser.push(['Operators', operators[i].toLowerCase()]);
|
|
5264
6276
|
return operators[i].length;
|
|
@@ -5268,8 +6280,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5268
6280
|
if (!lastPasrser || (lastPasrser && lastPasrser[0] !== 'Literal')) {
|
|
5269
6281
|
for (var i = 0, iLen = conditions.length; i < iLen; i++) {
|
|
5270
6282
|
regexStr = /^\w+$/.test(conditions[i]) ? '\\b' : '';
|
|
5271
|
-
// eslint-disable-next-line
|
|
5272
|
-
|
|
6283
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6284
|
+
var regExp = RegExp;
|
|
6285
|
+
regex = new regExp('^(' + conditions[i] + ')' + regexStr, 'ig');
|
|
5273
6286
|
if (regex.exec(sqlString)) {
|
|
5274
6287
|
this.parser.push(['Conditions', conditions[i].toLowerCase()]);
|
|
5275
6288
|
return conditions[i].length;
|
|
@@ -5278,8 +6291,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5278
6291
|
}
|
|
5279
6292
|
for (var i = 0, iLen = subOp.length; i < iLen; i++) {
|
|
5280
6293
|
regexStr = /^\w+$/.test(subOp[i]) ? '\\b' : '';
|
|
5281
|
-
// eslint-disable-next-line
|
|
5282
|
-
|
|
6294
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6295
|
+
var regExp = RegExp;
|
|
6296
|
+
regex = new regExp('^(' + subOp[i] + ')' + regexStr, 'ig');
|
|
5283
6297
|
if (regex.exec(sqlString)) {
|
|
5284
6298
|
this.parser.push(['SubOperators', subOp[i].toLowerCase()]);
|
|
5285
6299
|
return subOp[i].length;
|
|
@@ -5307,31 +6321,25 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5307
6321
|
this.parser.push(['String', null]);
|
|
5308
6322
|
return matchValue.length;
|
|
5309
6323
|
}
|
|
5310
|
-
|
|
5311
|
-
|
|
5312
|
-
// eslint-disable-next-line
|
|
5313
|
-
matchValue = /^`?([a-zåäö_][a-z0-9åäö_.\[\]\(\)]{0,}(\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)[1];
|
|
6324
|
+
if (/^`?([a-z_][a-z0-9_.\\[\]\\(\\)]{0,}(\\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)) {
|
|
6325
|
+
matchValue = /^`?([a-z_][a-z0-9_.\\[\]\\(\\)]{0,}(\\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)[1];
|
|
5314
6326
|
this.parser.push(['Literal', matchValue]);
|
|
5315
6327
|
return matchValue.length;
|
|
5316
6328
|
}
|
|
5317
|
-
|
|
5318
|
-
|
|
5319
|
-
// eslint-disable-next-line
|
|
5320
|
-
matchValue = /^'?([a-z_][a-z0-9 _.\[\]\(\)-]{0,}(\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)[1];
|
|
6329
|
+
if (this.checkLiteral() && /^'?([a-z_][a-z0-9 _.\\[\]\\(\\)-]{0,}(\\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)) {
|
|
6330
|
+
matchValue = /^'?([a-z_][a-z0-9 _.\\[\]\\(\\)-]{0,}(\\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)[1];
|
|
5321
6331
|
this.parser.push(['Literal', matchValue]);
|
|
5322
6332
|
return matchValue.length + 2;
|
|
5323
6333
|
}
|
|
5324
6334
|
if (this.checkNumberLiteral(sqlString, sqlLocale)) {
|
|
5325
|
-
|
|
5326
|
-
matchValue = /^[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
|
|
6335
|
+
matchValue = /^[0-9]+(\.[0-9]+)$/.exec(sqlString)[0];
|
|
5327
6336
|
this.parser.push(['Literal', matchValue]);
|
|
5328
6337
|
return matchValue.length;
|
|
5329
6338
|
}
|
|
5330
6339
|
//String
|
|
5331
|
-
|
|
5332
|
-
if (
|
|
5333
|
-
|
|
5334
|
-
matchValue = /^'((?:[^\\']+?|\\.|'')*)'(?!')/.exec(sqlString)[0];
|
|
6340
|
+
var singleString = this.getSingleQuoteString(sqlString);
|
|
6341
|
+
if (singleString !== '') {
|
|
6342
|
+
matchValue = singleString;
|
|
5335
6343
|
if (matchValue[matchValue.length - 2] === '(') {
|
|
5336
6344
|
var isClosed = false;
|
|
5337
6345
|
for (var j = matchValue.length; j < sqlString.length; j++) {
|
|
@@ -5346,38 +6354,43 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5346
6354
|
}
|
|
5347
6355
|
else if (sqlString[matchValue.length] && (sqlString[matchValue.length] !== ')') &&
|
|
5348
6356
|
!this.checkCondition(sqlString, matchValue)) {
|
|
5349
|
-
matchValue = this.
|
|
6357
|
+
matchValue = this.combineSingleQuoteString(sqlString, matchValue);
|
|
5350
6358
|
}
|
|
5351
6359
|
// end
|
|
5352
6360
|
this.parser.push(['String', matchValue]);
|
|
5353
6361
|
return matchValue.length;
|
|
5354
6362
|
}
|
|
5355
6363
|
// Double String
|
|
5356
|
-
|
|
5357
|
-
if (
|
|
5358
|
-
|
|
5359
|
-
matchValue = /^"([^\\"]*(?:\\.[^\\"]*)*)"/.exec(sqlString)[0];
|
|
6364
|
+
var doubleString = this.getDoubleQuoteString(sqlString);
|
|
6365
|
+
if (doubleString !== '') {
|
|
6366
|
+
matchValue = doubleString;
|
|
5360
6367
|
this.parser.push(['DoubleString', matchValue]);
|
|
5361
6368
|
return matchValue.length;
|
|
5362
6369
|
}
|
|
5363
6370
|
//Number
|
|
5364
|
-
|
|
5365
|
-
|
|
5366
|
-
// eslint-disable-next-line
|
|
5367
|
-
matchValue = /^[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
|
|
6371
|
+
if (/^\d*\.?\d+/.exec(sqlString)) {
|
|
6372
|
+
matchValue = /^\d*\.?\d+/.exec(sqlString)[0];
|
|
5368
6373
|
this.parser.push(['Number', matchValue]);
|
|
5369
6374
|
return matchValue.length;
|
|
5370
6375
|
}
|
|
5371
6376
|
//Negative Number
|
|
5372
|
-
|
|
5373
|
-
|
|
5374
|
-
// eslint-disable-next-line
|
|
5375
|
-
matchValue = /^-?[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
|
|
6377
|
+
if (/^-?\d*\.?\d+/.exec(sqlString)) {
|
|
6378
|
+
matchValue = /^-?\d*\.?\d+/.exec(sqlString)[0];
|
|
5376
6379
|
this.parser.push(['Number', matchValue]);
|
|
5377
6380
|
return matchValue.length;
|
|
5378
6381
|
}
|
|
5379
6382
|
return 1;
|
|
5380
6383
|
};
|
|
6384
|
+
QueryBuilder.prototype.getDoubleQuoteString = function (sqlString) {
|
|
6385
|
+
var start = sqlString.indexOf('"');
|
|
6386
|
+
if (start === 0) {
|
|
6387
|
+
var end = sqlString.indexOf('"', start + 1);
|
|
6388
|
+
if (end !== -1) {
|
|
6389
|
+
return sqlString.substring(start, end + 1);
|
|
6390
|
+
}
|
|
6391
|
+
}
|
|
6392
|
+
return '';
|
|
6393
|
+
};
|
|
5381
6394
|
QueryBuilder.prototype.checkCondition = function (sqlString, matchValue) {
|
|
5382
6395
|
if (sqlString.slice(matchValue.length + 1, matchValue.length + 4) === 'AND' ||
|
|
5383
6396
|
sqlString.slice(matchValue.length + 1, matchValue.length + 3) === 'OR') {
|
|
@@ -5385,16 +6398,26 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5385
6398
|
}
|
|
5386
6399
|
return false;
|
|
5387
6400
|
};
|
|
5388
|
-
QueryBuilder.prototype.getSingleQuoteString = function (sqlString,
|
|
6401
|
+
QueryBuilder.prototype.getSingleQuoteString = function (sqlString, isBetween) {
|
|
6402
|
+
var start = sqlString.indexOf('\'');
|
|
6403
|
+
if ((start !== -1 && isBetween) || (start === 0 && !isBetween)) {
|
|
6404
|
+
var end = sqlString.indexOf('\'', start + 1);
|
|
6405
|
+
if (end !== -1) {
|
|
6406
|
+
return sqlString.substring(start, end + 1);
|
|
6407
|
+
}
|
|
6408
|
+
}
|
|
6409
|
+
return '';
|
|
6410
|
+
};
|
|
6411
|
+
QueryBuilder.prototype.combineSingleQuoteString = function (sqlString, matchValue) {
|
|
5389
6412
|
if (sqlString[matchValue.length] && (sqlString[matchValue.length] !== ')') &&
|
|
5390
6413
|
!this.checkCondition(sqlString, matchValue) && sqlString[matchValue.length] !== ',') {
|
|
5391
|
-
var
|
|
5392
|
-
|
|
5393
|
-
|
|
5394
|
-
|
|
5395
|
-
var parsedValue =
|
|
6414
|
+
var tempMatchValue = matchValue.substring(0, matchValue.length - 1);
|
|
6415
|
+
var tempStr = sqlString.replace(tempMatchValue, '');
|
|
6416
|
+
var singleString = this.getSingleQuoteString(tempStr, true);
|
|
6417
|
+
if (singleString !== '') {
|
|
6418
|
+
var parsedValue = singleString.substring(1, singleString.length);
|
|
5396
6419
|
matchValue += parsedValue;
|
|
5397
|
-
matchValue = this.
|
|
6420
|
+
matchValue = this.combineSingleQuoteString(sqlString, matchValue);
|
|
5398
6421
|
}
|
|
5399
6422
|
}
|
|
5400
6423
|
return matchValue;
|
|
@@ -5423,8 +6446,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5423
6446
|
return true;
|
|
5424
6447
|
}
|
|
5425
6448
|
else {
|
|
5426
|
-
|
|
5427
|
-
if (/^[0-9]+(\.[0-9]+)?/.exec(sqlString)) {
|
|
6449
|
+
if (/^[0-9]+(?:\.[0-9]+)$/.exec(sqlString)) {
|
|
5428
6450
|
var secParser = this.parser[this.parser.length - 2];
|
|
5429
6451
|
var betweenParser = this.parser[this.parser.length - 3];
|
|
5430
6452
|
if (lastParser[0] === 'Left' && (secParser && secParser[0] === 'Conditions')) {
|
|
@@ -5637,17 +6659,17 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5637
6659
|
strVal = [];
|
|
5638
6660
|
rule.type = this.getTypeFromColumn(rule);
|
|
5639
6661
|
}
|
|
6662
|
+
if (this.enableSeparateConnector && parser[i + 1][0] === 'Conditions') {
|
|
6663
|
+
rule.condition = parser[i + 1][1];
|
|
6664
|
+
}
|
|
5640
6665
|
}
|
|
5641
6666
|
else if (parser[i + 1][0] === 'Operators') {
|
|
5642
6667
|
rule.operator = this.getOperator(parser[i + 2][1], parser[i + 1][1], sqlLocale);
|
|
5643
|
-
|
|
5644
|
-
|
|
5645
|
-
rule.operator = "isempty";
|
|
5646
|
-
isEmptyOper = true;
|
|
6668
|
+
if (rule.operator === 'equal' && parser[i + 2][0] === 'String' && parser[i + 2][1] === '\'\'') {
|
|
6669
|
+
rule.operator = 'isempty';
|
|
5647
6670
|
}
|
|
5648
|
-
else if (rule.operator
|
|
5649
|
-
rule.operator =
|
|
5650
|
-
isEmptyOper = true;
|
|
6671
|
+
else if (rule.operator === 'notequal' && parser[i + 2][0] === 'String' && parser[i + 2][1] === '\'\'') {
|
|
6672
|
+
rule.operator = 'isnotempty';
|
|
5651
6673
|
}
|
|
5652
6674
|
if (parser[i + 2][0] === 'Number') {
|
|
5653
6675
|
rule.type = 'number';
|
|
@@ -5661,6 +6683,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5661
6683
|
}
|
|
5662
6684
|
rule.value = val;
|
|
5663
6685
|
}
|
|
6686
|
+
if (this.enableSeparateConnector && parser[i + 3][0] === 'Conditions') {
|
|
6687
|
+
rule.condition = parser[i + 3][1];
|
|
6688
|
+
}
|
|
5664
6689
|
rule.type = this.getTypeFromColumn(rule);
|
|
5665
6690
|
}
|
|
5666
6691
|
rules.rules.push(rule);
|
|
@@ -5688,7 +6713,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5688
6713
|
subRules = this.processParser(this.parser, subRules, levelColl, sqlLocale);
|
|
5689
6714
|
return rules;
|
|
5690
6715
|
}
|
|
5691
|
-
else if (parser[i][0] === 'Conditions') {
|
|
6716
|
+
else if (parser[i][0] === 'Conditions' && !this.enableSeparateConnector) {
|
|
5692
6717
|
if (parser[i][1] === 'not' || (sqlLocale && this.l10n.getConstant('NOT').toLowerCase() === parser[i][1])) {
|
|
5693
6718
|
rules.not = true;
|
|
5694
6719
|
}
|
|
@@ -5709,27 +6734,6 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5709
6734
|
}
|
|
5710
6735
|
return rules;
|
|
5711
6736
|
};
|
|
5712
|
-
QueryBuilder.prototype.getValueFromParser = function (parser, idx) {
|
|
5713
|
-
var value = '';
|
|
5714
|
-
var k;
|
|
5715
|
-
for (k = idx; k < parser.length; k++) {
|
|
5716
|
-
if (parser[k][0] !== 'String' || parser[k][1] === ',' || parser[k][1] === ', ') {
|
|
5717
|
-
break;
|
|
5718
|
-
}
|
|
5719
|
-
else {
|
|
5720
|
-
if (value !== '') {
|
|
5721
|
-
idx += 1;
|
|
5722
|
-
}
|
|
5723
|
-
if (parser[k][1] !== null) {
|
|
5724
|
-
value += parser[k][1];
|
|
5725
|
-
}
|
|
5726
|
-
else {
|
|
5727
|
-
value = null;
|
|
5728
|
-
}
|
|
5729
|
-
}
|
|
5730
|
-
}
|
|
5731
|
-
return { value: value, idx: idx };
|
|
5732
|
-
};
|
|
5733
6737
|
/**
|
|
5734
6738
|
* Clone the Group
|
|
5735
6739
|
*
|
|
@@ -5764,8 +6768,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5764
6768
|
this.ruleIndex = i;
|
|
5765
6769
|
}
|
|
5766
6770
|
}
|
|
5767
|
-
this.
|
|
5768
|
-
|
|
6771
|
+
if (this.enableSeparateConnector) {
|
|
6772
|
+
this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
|
|
6773
|
+
'value': getRule.value, 'condition': getRule.condition }], groupId);
|
|
6774
|
+
}
|
|
6775
|
+
else {
|
|
6776
|
+
this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
|
|
6777
|
+
'value': getRule.value }], groupId);
|
|
6778
|
+
}
|
|
5769
6779
|
this.ruleIndex = -1;
|
|
5770
6780
|
};
|
|
5771
6781
|
QueryBuilder.prototype.ruleLock = function (target) {
|
|
@@ -5866,6 +6876,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5866
6876
|
var lockElem = groupElem.querySelectorAll('.e-lock-grp-btn');
|
|
5867
6877
|
var cloneElem = groupElem.querySelectorAll('.e-clone-grp-btn');
|
|
5868
6878
|
var groupContElem = groupElem.querySelectorAll('.e-group-container');
|
|
6879
|
+
var addCondition = groupElem.querySelectorAll('.e-add-condition-btn');
|
|
6880
|
+
var addGroup = groupElem.querySelectorAll('.e-add-group-btn');
|
|
5869
6881
|
for (var i = 0; i < andElem.length; i++) {
|
|
5870
6882
|
if (isDisabled) {
|
|
5871
6883
|
if (groupContElem[i] && groupContElem[i].classList.contains('e-disable')) {
|
|
@@ -5873,7 +6885,15 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5873
6885
|
}
|
|
5874
6886
|
andElem[i].disabled = true;
|
|
5875
6887
|
orElem[i].disabled = true;
|
|
5876
|
-
addElem[i]
|
|
6888
|
+
if (addElem[i]) {
|
|
6889
|
+
addElem[i].disabled = true;
|
|
6890
|
+
}
|
|
6891
|
+
if (addCondition[i]) {
|
|
6892
|
+
addCondition[i].disabled = true;
|
|
6893
|
+
}
|
|
6894
|
+
if (addGroup[i]) {
|
|
6895
|
+
addGroup[i].disabled = true;
|
|
6896
|
+
}
|
|
5877
6897
|
if (notElem[i]) {
|
|
5878
6898
|
notElem[i].disabled = true;
|
|
5879
6899
|
}
|
|
@@ -5884,7 +6904,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5884
6904
|
cloneElem[i].disabled = true;
|
|
5885
6905
|
}
|
|
5886
6906
|
andElem[i].parentElement.classList.add('e-disabled');
|
|
5887
|
-
if (lockElem[i] !== target) {
|
|
6907
|
+
if (lockElem[i] && lockElem[i] !== target) {
|
|
5888
6908
|
lockElem[i].disabled = true;
|
|
5889
6909
|
lockElem[i].children[0].classList.remove('e-unlock');
|
|
5890
6910
|
lockElem[i].children[0].classList.add('e-lock');
|
|
@@ -5896,8 +6916,18 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5896
6916
|
}
|
|
5897
6917
|
andElem[i].disabled = false;
|
|
5898
6918
|
orElem[i].disabled = false;
|
|
5899
|
-
addElem[i]
|
|
5900
|
-
|
|
6919
|
+
if (addElem[i]) {
|
|
6920
|
+
addElem[i].disabled = false;
|
|
6921
|
+
}
|
|
6922
|
+
if (addCondition[i]) {
|
|
6923
|
+
addCondition[i].disabled = false;
|
|
6924
|
+
}
|
|
6925
|
+
if (addGroup[i]) {
|
|
6926
|
+
addGroup[i].disabled = false;
|
|
6927
|
+
}
|
|
6928
|
+
if (lockElem[i]) {
|
|
6929
|
+
lockElem[i].disabled = false;
|
|
6930
|
+
}
|
|
5901
6931
|
if (notElem[i]) {
|
|
5902
6932
|
notElem[i].disabled = false;
|
|
5903
6933
|
}
|
|
@@ -5908,8 +6938,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5908
6938
|
cloneElem[i].disabled = false;
|
|
5909
6939
|
}
|
|
5910
6940
|
andElem[i].parentElement.classList.remove('e-disabled');
|
|
5911
|
-
lockElem[i]
|
|
5912
|
-
|
|
6941
|
+
if (lockElem[i]) {
|
|
6942
|
+
lockElem[i].children[0].classList.remove('e-lock');
|
|
6943
|
+
}
|
|
6944
|
+
if (lockElem[i]) {
|
|
6945
|
+
lockElem[i].children[0].classList.add('e-unlock');
|
|
6946
|
+
}
|
|
5913
6947
|
}
|
|
5914
6948
|
}
|
|
5915
6949
|
this.disableRuleControls(target, groupElem, isDisabled);
|
|
@@ -6043,6 +7077,15 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
6043
7077
|
__decorate([
|
|
6044
7078
|
Event()
|
|
6045
7079
|
], QueryBuilder.prototype, "ruleChange", void 0);
|
|
7080
|
+
__decorate([
|
|
7081
|
+
Event()
|
|
7082
|
+
], QueryBuilder.prototype, "dragStart", void 0);
|
|
7083
|
+
__decorate([
|
|
7084
|
+
Event()
|
|
7085
|
+
], QueryBuilder.prototype, "drag", void 0);
|
|
7086
|
+
__decorate([
|
|
7087
|
+
Event()
|
|
7088
|
+
], QueryBuilder.prototype, "drop", void 0);
|
|
6046
7089
|
__decorate([
|
|
6047
7090
|
Complex({}, ShowButtons)
|
|
6048
7091
|
], QueryBuilder.prototype, "showButtons", void 0);
|
|
@@ -6118,9 +7161,15 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
6118
7161
|
__decorate([
|
|
6119
7162
|
Property('')
|
|
6120
7163
|
], QueryBuilder.prototype, "separator", void 0);
|
|
7164
|
+
__decorate([
|
|
7165
|
+
Property(false)
|
|
7166
|
+
], QueryBuilder.prototype, "enableSeparateConnector", void 0);
|
|
6121
7167
|
__decorate([
|
|
6122
7168
|
Complex({ condition: 'and', rules: [] }, Rule)
|
|
6123
7169
|
], QueryBuilder.prototype, "rule", void 0);
|
|
7170
|
+
__decorate([
|
|
7171
|
+
Property(false)
|
|
7172
|
+
], QueryBuilder.prototype, "allowDragAndDrop", void 0);
|
|
6124
7173
|
QueryBuilder = __decorate([
|
|
6125
7174
|
NotifyPropertyChanges
|
|
6126
7175
|
], QueryBuilder);
|