@syncfusion/ej2-querybuilder 25.2.7 → 26.1.38
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 +1334 -290
- package/dist/es6/ej2-querybuilder.es2015.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es5.js +1327 -282
- 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 +1319 -262
- package/src/query-builder/query-library.js +2 -2
- package/styles/bootstrap-dark.css +195 -21
- package/styles/bootstrap-dark.scss +15 -1
- package/styles/bootstrap.css +195 -21
- package/styles/bootstrap.scss +15 -1
- package/styles/bootstrap4.css +199 -22
- package/styles/bootstrap4.scss +15 -1
- package/styles/bootstrap5-dark.css +199 -30
- package/styles/bootstrap5-dark.scss +15 -1
- package/styles/bootstrap5.css +199 -30
- package/styles/bootstrap5.scss +15 -1
- package/styles/fabric-dark.css +193 -20
- package/styles/fabric-dark.scss +15 -1
- package/styles/fabric.css +193 -20
- package/styles/fabric.scss +15 -1
- package/styles/fluent-dark.css +197 -28
- package/styles/fluent-dark.scss +15 -1
- package/styles/fluent.css +197 -28
- package/styles/fluent.scss +15 -1
- package/styles/fluent2.css +2052 -0
- package/styles/fluent2.scss +15 -0
- package/styles/highcontrast-light.css +196 -20
- package/styles/highcontrast-light.scss +15 -1
- package/styles/highcontrast.css +196 -20
- package/styles/highcontrast.scss +15 -1
- package/styles/material-dark.css +206 -24
- package/styles/material-dark.scss +15 -1
- package/styles/material.css +208 -24
- package/styles/material.scss +15 -1
- package/styles/material3-dark.css +213 -26
- package/styles/material3-dark.scss +15 -1
- package/styles/material3.css +213 -26
- package/styles/material3.scss +15 -1
- package/styles/query-builder/_bds-definition.scss +8 -1
- package/styles/query-builder/_bootstrap-dark-definition.scss +8 -0
- package/styles/query-builder/_bootstrap-definition.scss +8 -0
- package/styles/query-builder/_bootstrap4-definition.scss +8 -0
- package/styles/query-builder/_bootstrap5-definition.scss +8 -1
- package/styles/query-builder/_bootstrap5.3-definition.scss +115 -0
- package/styles/query-builder/_fabric-dark-definition.scss +8 -0
- package/styles/query-builder/_fabric-definition.scss +8 -0
- package/styles/query-builder/_fluent-definition.scss +8 -1
- package/styles/query-builder/_fluent2-definition.scss +114 -0
- package/styles/query-builder/_fusionnew-definition.scss +8 -1
- package/styles/query-builder/_highcontrast-definition.scss +8 -0
- package/styles/query-builder/_highcontrast-light-definition.scss +8 -0
- package/styles/query-builder/_layout.scss +273 -12
- package/styles/query-builder/_material-dark-definition.scss +8 -0
- package/styles/query-builder/_material-definition.scss +8 -0
- package/styles/query-builder/_material3-definition.scss +8 -1
- package/styles/query-builder/_tailwind-definition.scss +8 -1
- package/styles/query-builder/_theme.scss +34 -22
- package/styles/query-builder/bootstrap-dark.css +195 -21
- package/styles/query-builder/bootstrap.css +195 -21
- package/styles/query-builder/bootstrap4.css +199 -22
- package/styles/query-builder/bootstrap5-dark.css +199 -30
- package/styles/query-builder/bootstrap5.css +199 -30
- package/styles/query-builder/fabric-dark.css +193 -20
- package/styles/query-builder/fabric.css +193 -20
- package/styles/query-builder/fluent-dark.css +197 -28
- package/styles/query-builder/fluent.css +197 -28
- package/styles/query-builder/fluent2.css +2052 -0
- package/styles/query-builder/fluent2.scss +15 -0
- package/styles/query-builder/highcontrast-light.css +196 -20
- package/styles/query-builder/highcontrast.css +196 -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 +206 -24
- package/styles/query-builder/material.css +208 -24
- package/styles/query-builder/material3-dark.css +213 -26
- package/styles/query-builder/material3.css +213 -26
- package/styles/query-builder/tailwind-dark.css +206 -24
- package/styles/query-builder/tailwind.css +206 -24
- package/styles/tailwind-dark.css +206 -24
- package/styles/tailwind-dark.scss +15 -1
- package/styles/tailwind.css +206 -24
- package/styles/tailwind.scss +15 -1
- package/CHANGELOG.md +0 -828
|
@@ -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;
|
|
@@ -568,14 +798,55 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
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,20 +1168,68 @@ 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++) {
|
|
853
1220
|
if (columns[parseInt(i.toString(), 10)].type === 'object') {
|
|
1221
|
+
if (this.isAngular && columns[parseInt(i.toString(), 10)].template) {
|
|
1222
|
+
delete columns[parseInt(i.toString(), 10)].template;
|
|
1223
|
+
}
|
|
854
1224
|
columns[parseInt(i.toString(), 10)].selectable = false;
|
|
855
1225
|
this.updateDropdowntreeDS(columns[parseInt(i.toString(), 10)].columns);
|
|
856
1226
|
}
|
|
1227
|
+
else if (this.isAngular && columns[parseInt(i.toString(), 10)].template) {
|
|
1228
|
+
delete columns[parseInt(i.toString(), 10)].template;
|
|
1229
|
+
}
|
|
857
1230
|
}
|
|
858
1231
|
};
|
|
859
|
-
QueryBuilder.prototype.updateAddedRule = function (target, rule, newRule, isRuleTemplate, pId) {
|
|
1232
|
+
QueryBuilder.prototype.updateAddedRule = function (target, rule, newRule, isRuleTemplate, pId, isNewRuleAdded) {
|
|
860
1233
|
var ruleElem;
|
|
861
1234
|
var index = 0;
|
|
862
1235
|
var groupElem;
|
|
@@ -867,7 +1240,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
867
1240
|
rules = this.getParentGroup(groupElem);
|
|
868
1241
|
while (ruleElem && ruleElem.previousElementSibling !== null) {
|
|
869
1242
|
ruleElem = ruleElem.previousElementSibling;
|
|
870
|
-
|
|
1243
|
+
var enableSeparateCondition = this.enableSeparateConnector && ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
|
|
1244
|
+
(this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
|
|
1245
|
+
ruleElem.classList.contains('e-group-container'))));
|
|
1246
|
+
if (!this.enableSeparateConnector || enableSeparateCondition) {
|
|
1247
|
+
index++;
|
|
1248
|
+
}
|
|
871
1249
|
}
|
|
872
1250
|
rules.rules[index] = rule;
|
|
873
1251
|
}
|
|
@@ -885,6 +1263,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
885
1263
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
886
1264
|
rules.rules[rules.rules.length - 1].custom = custom;
|
|
887
1265
|
}
|
|
1266
|
+
if (this.enableSeparateConnector) {
|
|
1267
|
+
rules.rules[rules.rules.length - 1].condition = rule.condition ? rule.condition : newRule.condition;
|
|
1268
|
+
}
|
|
888
1269
|
}
|
|
889
1270
|
else {
|
|
890
1271
|
rules.rules.splice(this.ruleIndex + 1, 0, {
|
|
@@ -894,6 +1275,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
894
1275
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
895
1276
|
rules.rules[this.ruleIndex + 1].custom = custom;
|
|
896
1277
|
}
|
|
1278
|
+
if (this.enableSeparateConnector) {
|
|
1279
|
+
rules.rules[this.ruleIndex + 1].condition = rule.condition ? rule.condition : newRule.condition;
|
|
1280
|
+
}
|
|
897
1281
|
}
|
|
898
1282
|
}
|
|
899
1283
|
else {
|
|
@@ -907,7 +1291,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
907
1291
|
rules.rules.push(newRule);
|
|
908
1292
|
}
|
|
909
1293
|
}
|
|
910
|
-
this.disableRuleCondition(target, rules);
|
|
1294
|
+
this.disableRuleCondition(target, rules, isNewRuleAdded);
|
|
911
1295
|
};
|
|
912
1296
|
QueryBuilder.prototype.changeRuleTemplate = function (column, element) {
|
|
913
1297
|
var operVal = this.selectedColumn.operators;
|
|
@@ -985,7 +1369,11 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
985
1369
|
if (validateRule && validateRule.isRequired) {
|
|
986
1370
|
while (indexElem && indexElem.previousElementSibling !== null) {
|
|
987
1371
|
indexElem = indexElem.previousElementSibling;
|
|
988
|
-
|
|
1372
|
+
var separateCondition = this.enableSeparateConnector && ((!this.headerTemplate && !indexElem.classList.contains('e-btn-group')) ||
|
|
1373
|
+
(this.headerTemplate && (indexElem.classList.contains('e-rule-container') || indexElem.classList.contains('e-group-container'))));
|
|
1374
|
+
if (!this.enableSeparateConnector || separateCondition) {
|
|
1375
|
+
index++;
|
|
1376
|
+
}
|
|
989
1377
|
}
|
|
990
1378
|
fieldElem = tempElem.querySelector('.e-rule-operator .e-control');
|
|
991
1379
|
if (!rule.rules[index].operator) {
|
|
@@ -1062,9 +1450,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1062
1450
|
obj.level = this.levelColl[obj.groupElement.id].slice();
|
|
1063
1451
|
return obj;
|
|
1064
1452
|
};
|
|
1065
|
-
QueryBuilder.prototype.groupTemplate = function () {
|
|
1453
|
+
QueryBuilder.prototype.groupTemplate = function (isConnector) {
|
|
1066
1454
|
var glueElem;
|
|
1067
1455
|
var inputElem;
|
|
1456
|
+
var dragClsName;
|
|
1068
1457
|
var labelElem;
|
|
1069
1458
|
var grpActElem;
|
|
1070
1459
|
var groupBtn;
|
|
@@ -1077,9 +1466,27 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1077
1466
|
groupElem.appendChild(grpBodyElem);
|
|
1078
1467
|
// create button group in OR and AND process
|
|
1079
1468
|
if (!this.headerTemplate) {
|
|
1080
|
-
|
|
1469
|
+
if (this.allowDragAndDrop) {
|
|
1470
|
+
dragClsName = 'e-icons e-drag-qb-rule';
|
|
1471
|
+
}
|
|
1472
|
+
else {
|
|
1473
|
+
dragClsName = 'e-icons e-drag-qb-rule e-hidden';
|
|
1474
|
+
}
|
|
1475
|
+
var spanDragElement = this.createElement('span', { attrs: { class: dragClsName, 'aria-lable': 'drag handle',
|
|
1476
|
+
title: 'drag handle' } });
|
|
1477
|
+
groupHdrElem.appendChild(spanDragElement);
|
|
1478
|
+
var className = this.enableSeparateConnector && !isConnector ? 'e-lib e-btn-group e-qb-toggle-btn' : 'e-lib e-btn-group';
|
|
1479
|
+
glueElem = this.createElement('div', { attrs: { class: className, role: 'group' } });
|
|
1480
|
+
if (this.enableSeparateConnector) {
|
|
1481
|
+
glueElem.classList.add('e-multi-connector');
|
|
1482
|
+
}
|
|
1081
1483
|
if (this.enableNotCondition) {
|
|
1082
|
-
|
|
1484
|
+
if (this.enableSeparateConnector) {
|
|
1485
|
+
inputElem = this.createElement('input', { attrs: { type: 'checkbox', class: 'e-qb-toggle' } });
|
|
1486
|
+
}
|
|
1487
|
+
else {
|
|
1488
|
+
inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });
|
|
1489
|
+
}
|
|
1083
1490
|
glueElem.appendChild(inputElem);
|
|
1084
1491
|
}
|
|
1085
1492
|
inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-and', value: 'AND' } });
|
|
@@ -1094,8 +1501,16 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1094
1501
|
glueElem.appendChild(labelElem);
|
|
1095
1502
|
groupHdrElem.appendChild(glueElem);
|
|
1096
1503
|
grpActElem = this.createElement('div', { attrs: { class: 'e-group-action' } });
|
|
1097
|
-
|
|
1098
|
-
|
|
1504
|
+
if (this.enableSeparateConnector) {
|
|
1505
|
+
groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-condition-btn' } });
|
|
1506
|
+
grpActElem.appendChild(groupBtn);
|
|
1507
|
+
groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-group-btn' } });
|
|
1508
|
+
grpActElem.appendChild(groupBtn);
|
|
1509
|
+
}
|
|
1510
|
+
else {
|
|
1511
|
+
groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-btn' } });
|
|
1512
|
+
grpActElem.appendChild(groupBtn);
|
|
1513
|
+
}
|
|
1099
1514
|
groupHdrElem.appendChild(grpActElem);
|
|
1100
1515
|
}
|
|
1101
1516
|
return groupElem;
|
|
@@ -1105,9 +1520,19 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1105
1520
|
var clsName;
|
|
1106
1521
|
var cloneClsName;
|
|
1107
1522
|
var lockClsName;
|
|
1523
|
+
var dragClsName;
|
|
1108
1524
|
var ruleElem = this.createElement('div');
|
|
1109
1525
|
var fieldElem = this.createElement('div', { attrs: { class: 'e-rule-field' } });
|
|
1110
1526
|
tempElem = this.createElement('div', { attrs: { class: 'e-rule-filter' } });
|
|
1527
|
+
if (this.allowDragAndDrop) {
|
|
1528
|
+
dragClsName = 'e-icons e-drag-qb-rule';
|
|
1529
|
+
}
|
|
1530
|
+
else {
|
|
1531
|
+
dragClsName = 'e-icons e-drag-qb-rule e-hidden';
|
|
1532
|
+
}
|
|
1533
|
+
var spanDragElement = this.createElement('span', { attrs: { class: dragClsName, 'aria-lable': 'drag handle',
|
|
1534
|
+
title: 'drag handle' } });
|
|
1535
|
+
fieldElem.appendChild(spanDragElement);
|
|
1111
1536
|
var filterElem = this.createElement('input', { attrs: { type: 'text', class: 'e-filter-input' } });
|
|
1112
1537
|
tempElem.appendChild(filterElem);
|
|
1113
1538
|
fieldElem.appendChild(tempElem);
|
|
@@ -1151,7 +1576,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1151
1576
|
QueryBuilder.prototype.addGroupElement = function (isGroup, target, condition, isBtnClick, not, isRoot, rule) {
|
|
1152
1577
|
var _this = this;
|
|
1153
1578
|
var args = { groupID: target.id.replace(this.element.id + '_', ''), cancel: false, type: 'insertGroup' };
|
|
1154
|
-
if (!this.isImportRules && !this.isInitialLoad) {
|
|
1579
|
+
if (!this.isImportRules && !this.isInitialLoad && !this.prvtEvtTgrDaD) {
|
|
1155
1580
|
this.trigger('beforeChange', args, function (observedChangeArgs) {
|
|
1156
1581
|
_this.addGroupSuccess(observedChangeArgs, isGroup, target, condition, isBtnClick, not, isRoot, rule);
|
|
1157
1582
|
});
|
|
@@ -1162,6 +1587,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1162
1587
|
}
|
|
1163
1588
|
};
|
|
1164
1589
|
QueryBuilder.prototype.addGroupSuccess = function (args, isGroup, eventTarget, condition, isBtnClick, not, isRoot, rule) {
|
|
1590
|
+
var _this = this;
|
|
1165
1591
|
if (!args.cancel && (this.element.querySelectorAll('.e-group-container').length <= this.maxGroupCount)) {
|
|
1166
1592
|
var target = eventTarget;
|
|
1167
1593
|
var dltGroupBtn = void 0;
|
|
@@ -1172,8 +1598,17 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1172
1598
|
else {
|
|
1173
1599
|
groupID = target.id;
|
|
1174
1600
|
}
|
|
1601
|
+
if (this.enableSeparateConnector) {
|
|
1602
|
+
this.groupElem = this.groupTemplate();
|
|
1603
|
+
}
|
|
1175
1604
|
var groupElem = this.groupElem.cloneNode(true);
|
|
1176
1605
|
groupElem.setAttribute('id', this.element.id + '_group' + this.groupIdCounter);
|
|
1606
|
+
if (this.groupIdCounter === 0 && this.allowDragAndDrop && groupElem.querySelector('.e-drag-qb-rule')) {
|
|
1607
|
+
if (groupElem && groupElem.children[0]) {
|
|
1608
|
+
groupElem.children[0].classList.add('e-parent-header');
|
|
1609
|
+
}
|
|
1610
|
+
addClass([groupElem.querySelector('.e-drag-qb-rule')], 'e-hidden');
|
|
1611
|
+
}
|
|
1177
1612
|
if (this.headerTemplate) {
|
|
1178
1613
|
if (isRoot) {
|
|
1179
1614
|
isGroup = false;
|
|
@@ -1226,7 +1661,25 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1226
1661
|
this.isLastGroup = true;
|
|
1227
1662
|
}
|
|
1228
1663
|
else {
|
|
1229
|
-
|
|
1664
|
+
if (this.enableSeparateConnector) {
|
|
1665
|
+
var index = 0;
|
|
1666
|
+
var tempGroupIndex = this.groupIndex + 1;
|
|
1667
|
+
for (var i = 0; i < tempGroupIndex; i++) {
|
|
1668
|
+
if (childElems[i].classList.contains('e-rule-container')) {
|
|
1669
|
+
tempGroupIndex++;
|
|
1670
|
+
index++;
|
|
1671
|
+
}
|
|
1672
|
+
}
|
|
1673
|
+
if (index > 0) {
|
|
1674
|
+
index--;
|
|
1675
|
+
}
|
|
1676
|
+
var idx = this.groupIndex + index + 1;
|
|
1677
|
+
childElems[idx].parentNode.insertBefore(groupElem, childElems[idx]);
|
|
1678
|
+
}
|
|
1679
|
+
else {
|
|
1680
|
+
var idx = this.groupIndex + 1;
|
|
1681
|
+
childElems[idx].parentNode.insertBefore(groupElem, childElems[idx]);
|
|
1682
|
+
}
|
|
1230
1683
|
this.isMiddleGroup = true;
|
|
1231
1684
|
}
|
|
1232
1685
|
}
|
|
@@ -1292,7 +1745,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1292
1745
|
if (this.enableNotCondition) {
|
|
1293
1746
|
if (!this.headerTemplate) {
|
|
1294
1747
|
var notElem = groupElem.querySelector('.e-qb-toggle');
|
|
1295
|
-
|
|
1748
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1749
|
+
var tglBtn = void 0;
|
|
1750
|
+
if (this.enableSeparateConnector) {
|
|
1751
|
+
tglBtn = new CheckBox({ label: this.l10n.getConstant('NOT'), cssClass: 'e-qb-toggle' });
|
|
1752
|
+
}
|
|
1753
|
+
else {
|
|
1754
|
+
tglBtn = new Button({ content: this.l10n.getConstant('NOT'), cssClass: 'e-btn e-small' });
|
|
1755
|
+
}
|
|
1296
1756
|
tglBtn.appendTo(notElem);
|
|
1297
1757
|
groupElem.querySelector('.e-btngroup-and-lbl').classList.add('e-not');
|
|
1298
1758
|
if (this.updatedRule && this.updatedRule.not) {
|
|
@@ -1300,67 +1760,218 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1300
1760
|
}
|
|
1301
1761
|
}
|
|
1302
1762
|
}
|
|
1763
|
+
if (this.enableSeparateConnector && !this.headerTemplate) {
|
|
1764
|
+
var andElem = groupElem.querySelector('.e-btngroup-and');
|
|
1765
|
+
var orElem = groupElem.querySelector('.e-btngroup-or');
|
|
1766
|
+
var btnGroup = groupElem.querySelector('.e-btn-group');
|
|
1767
|
+
for (var i = 0; i < btnGroup.childNodes.length; i++) {
|
|
1768
|
+
if (groupElem.querySelector('.e-btn-group').childNodes[i].textContent.toLowerCase() === 'not') {
|
|
1769
|
+
if (!this.enableNotCondition) {
|
|
1770
|
+
btnGroup.childNodes[i].style.display = 'none';
|
|
1771
|
+
}
|
|
1772
|
+
else {
|
|
1773
|
+
btnGroup.childNodes[i].classList.add('e-multiconnector');
|
|
1774
|
+
}
|
|
1775
|
+
}
|
|
1776
|
+
else {
|
|
1777
|
+
btnGroup.childNodes[i].style.display = 'none';
|
|
1778
|
+
}
|
|
1779
|
+
}
|
|
1780
|
+
var prevSibling = groupElem.previousElementSibling;
|
|
1781
|
+
if (prevSibling) {
|
|
1782
|
+
if (isNullOrUndefined(this.headerTemplate)) {
|
|
1783
|
+
groupElem.parentElement.insertBefore(this.groupTemplate(true).querySelector('.e-btn-group'), groupElem);
|
|
1784
|
+
var notElem = groupElem.previousElementSibling.childNodes[0];
|
|
1785
|
+
if (notElem.classList.contains('e-qb-toggle')) {
|
|
1786
|
+
notElem.style.display = 'none';
|
|
1787
|
+
}
|
|
1788
|
+
}
|
|
1789
|
+
if (!this.isImportRules) {
|
|
1790
|
+
var groupElement = groupElem.previousElementSibling;
|
|
1791
|
+
var newAndElem = groupElement.querySelector('.e-btngroup-and');
|
|
1792
|
+
var newOrElem = groupElement.querySelector('.e-btngroup-or');
|
|
1793
|
+
if (!andElem.checked && !orElem.checked) {
|
|
1794
|
+
var nextSibling = groupElem.nextElementSibling;
|
|
1795
|
+
if (nextSibling && nextSibling.classList.contains('e-btn-group')) {
|
|
1796
|
+
andElem = nextSibling.querySelector('.e-btngroup-and');
|
|
1797
|
+
orElem = nextSibling.querySelector('.e-btngroup-or');
|
|
1798
|
+
newAndElem.checked = andElem.checked;
|
|
1799
|
+
newOrElem.checked = orElem.checked;
|
|
1800
|
+
}
|
|
1801
|
+
}
|
|
1802
|
+
else if (this.enableSeparateConnector) {
|
|
1803
|
+
if (andElem.checked) {
|
|
1804
|
+
newAndElem.checked = true;
|
|
1805
|
+
}
|
|
1806
|
+
if (orElem.checked) {
|
|
1807
|
+
newOrElem.checked = true;
|
|
1808
|
+
}
|
|
1809
|
+
}
|
|
1810
|
+
}
|
|
1811
|
+
}
|
|
1812
|
+
}
|
|
1303
1813
|
this.updatedRule = null;
|
|
1304
1814
|
if (this.headerTemplate) {
|
|
1305
|
-
var
|
|
1815
|
+
var args_4 = { requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,
|
|
1306
1816
|
notCondition: this.enableNotCondition ? not : undefined };
|
|
1307
|
-
this.trigger('actionBegin',
|
|
1817
|
+
this.trigger('actionBegin', args_4);
|
|
1308
1818
|
}
|
|
1309
1819
|
else {
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1820
|
+
if (this.enableSeparateConnector) {
|
|
1821
|
+
var conditionBtn_1 = groupElem.querySelector('.e-add-condition-btn');
|
|
1822
|
+
var btnObj = new Button({ cssClass: this.element.id + '_addConditionbtn', content: this.l10n.getConstant('AddCondition') });
|
|
1823
|
+
btnObj.appendTo(conditionBtn_1);
|
|
1824
|
+
btnObj.element.onclick = function () {
|
|
1825
|
+
_this.addRuleElement(closest(conditionBtn_1, '.e-group-container'), {});
|
|
1826
|
+
};
|
|
1827
|
+
var groupBtn_1 = groupElem.querySelector('.e-add-group-btn');
|
|
1828
|
+
btnObj = new Button({ cssClass: this.element.id + '_addGroupbtn', content: this.l10n.getConstant('AddGroup') });
|
|
1829
|
+
btnObj.appendTo(groupBtn_1);
|
|
1830
|
+
btnObj.element.onclick = function () {
|
|
1831
|
+
_this.addGroupElement(true, closest(groupBtn_1, '.e-group-container'), '', true);
|
|
1832
|
+
};
|
|
1833
|
+
}
|
|
1834
|
+
else {
|
|
1835
|
+
var groupBtn = groupElem.querySelector('.e-add-btn');
|
|
1836
|
+
var btnObj = new DropDownButton({
|
|
1837
|
+
items: this.items,
|
|
1838
|
+
cssClass: 'e-round e-small e-caret-hide e-addrulegroup',
|
|
1839
|
+
iconCss: 'e-icons e-add-icon',
|
|
1840
|
+
beforeOpen: this.selectBtn.bind(this, groupBtn),
|
|
1841
|
+
select: this.selectBtn.bind(this, groupBtn)
|
|
1842
|
+
});
|
|
1843
|
+
btnObj.appendTo(groupBtn);
|
|
1844
|
+
groupBtn.setAttribute('title', this.l10n.getConstant('AddButton'));
|
|
1845
|
+
}
|
|
1320
1846
|
}
|
|
1321
|
-
if (!this.isImportRules) {
|
|
1847
|
+
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
1322
1848
|
var grpId = target.id.replace(this.element.id + '_', '');
|
|
1323
1849
|
var chgrpId = groupElem.id.replace(this.element.id + '_', '');
|
|
1324
1850
|
this.trigger('change', { groupID: grpId, type: 'insertGroup', childGroupID: chgrpId });
|
|
1325
1851
|
}
|
|
1326
1852
|
}
|
|
1327
1853
|
};
|
|
1328
|
-
QueryBuilder.prototype.
|
|
1854
|
+
QueryBuilder.prototype.setMultiConnector = function (trgt) {
|
|
1855
|
+
if (this.enableSeparateConnector && !this.headerTemplate) {
|
|
1856
|
+
if (trgt.previousElementSibling && this.groupElem.querySelector('.e-btn-group')) {
|
|
1857
|
+
trgt.parentElement.insertBefore(this.groupTemplate(true).querySelector('.e-btn-group'), trgt);
|
|
1858
|
+
var notElem = trgt.previousElementSibling.childNodes[0];
|
|
1859
|
+
if (notElem.classList.contains('e-qb-toggle')) {
|
|
1860
|
+
notElem.style.display = 'none';
|
|
1861
|
+
}
|
|
1862
|
+
this.addHeaderDiv(trgt);
|
|
1863
|
+
}
|
|
1864
|
+
}
|
|
1865
|
+
};
|
|
1866
|
+
QueryBuilder.prototype.addHeaderDiv = function (elem) {
|
|
1867
|
+
var prevRule;
|
|
1868
|
+
var prevElem = elem.previousElementSibling.previousElementSibling;
|
|
1869
|
+
if (prevElem) {
|
|
1870
|
+
if (prevElem.id.indexOf('rule') > -1) {
|
|
1871
|
+
prevRule = this.getRule(prevElem);
|
|
1872
|
+
}
|
|
1873
|
+
else {
|
|
1874
|
+
prevRule = this.getGroup(prevElem);
|
|
1875
|
+
}
|
|
1876
|
+
if (isNullOrUndefined(prevRule.condition)) {
|
|
1877
|
+
prevRule.condition = 'and';
|
|
1878
|
+
}
|
|
1879
|
+
var orElem = elem.previousElementSibling.querySelector('.e-btngroup-or');
|
|
1880
|
+
var andElem = elem.previousElementSibling.querySelector('.e-btngroup-and');
|
|
1881
|
+
orElem.disabled = false;
|
|
1882
|
+
andElem.disabled = false;
|
|
1883
|
+
if (prevRule.condition === 'or') {
|
|
1884
|
+
orElem.checked = true;
|
|
1885
|
+
}
|
|
1886
|
+
else {
|
|
1887
|
+
andElem.checked = true;
|
|
1888
|
+
}
|
|
1889
|
+
}
|
|
1890
|
+
};
|
|
1891
|
+
QueryBuilder.prototype.headerTemplateFn = function (groupElem, not, condition, rule, groupID, isInitialRule) {
|
|
1329
1892
|
var template;
|
|
1330
1893
|
var templateID = this.element.id + '_header';
|
|
1331
1894
|
var args;
|
|
1332
1895
|
var groupHdr = groupElem.querySelector('.e-group-header');
|
|
1896
|
+
if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
|
|
1897
|
+
groupHdr = groupElem;
|
|
1898
|
+
}
|
|
1333
1899
|
if (this.headerTemplate) {
|
|
1334
1900
|
args = { requestType: 'header-template-initialize', ruleID: groupElem.id,
|
|
1335
1901
|
notCondition: this.enableNotCondition ? not : undefined,
|
|
1336
1902
|
condition: condition, rule: this.getRuleCollection(rule, true), groupID: groupID };
|
|
1337
1903
|
this.trigger('actionBegin', args);
|
|
1904
|
+
if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
|
|
1905
|
+
args.requestType = 'rule-template-create';
|
|
1906
|
+
}
|
|
1338
1907
|
this.headerFn = this.templateParser(this.headerTemplate);
|
|
1339
1908
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1340
1909
|
if (this.isReact) {
|
|
1341
1910
|
template = this.headerFn(args, this, groupElem.id, templateID)[0];
|
|
1342
|
-
|
|
1911
|
+
if (this.enableSeparateConnector && isInitialRule) {
|
|
1912
|
+
this.enableSeparateConnectorInitialRule(groupElem, template);
|
|
1913
|
+
}
|
|
1914
|
+
else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
|
|
1915
|
+
groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);
|
|
1916
|
+
}
|
|
1917
|
+
else {
|
|
1918
|
+
groupHdr.appendChild(template);
|
|
1919
|
+
}
|
|
1343
1920
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1344
1921
|
}
|
|
1345
1922
|
else if (this.isAngular) {
|
|
1346
1923
|
var templateColl = this.headerFn(args, this, groupElem.id, templateID);
|
|
1347
1924
|
template = (templateColl[0].nodeType === 3) ? templateColl[1] : templateColl[0];
|
|
1348
|
-
|
|
1925
|
+
if (this.enableSeparateConnector && isInitialRule) {
|
|
1926
|
+
this.enableSeparateConnectorInitialRule(groupElem, template);
|
|
1927
|
+
}
|
|
1928
|
+
else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
|
|
1929
|
+
groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);
|
|
1930
|
+
}
|
|
1931
|
+
else {
|
|
1932
|
+
groupHdr.appendChild(template);
|
|
1933
|
+
}
|
|
1349
1934
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1350
1935
|
}
|
|
1351
1936
|
else if (this.isVue3) {
|
|
1352
1937
|
template = this.headerFn(args, this, groupElem.id, templateID);
|
|
1353
|
-
|
|
1354
|
-
|
|
1938
|
+
if (this.enableSeparateConnector && isInitialRule) {
|
|
1939
|
+
this.enableSeparateConnectorInitialRule(groupElem, template);
|
|
1940
|
+
}
|
|
1941
|
+
else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
|
|
1942
|
+
groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);
|
|
1943
|
+
}
|
|
1944
|
+
else {
|
|
1945
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1946
|
+
append(template, groupHdr);
|
|
1947
|
+
}
|
|
1355
1948
|
}
|
|
1356
1949
|
else {
|
|
1357
1950
|
template = this.headerFn(args, this, 'Template', templateID)[0];
|
|
1358
|
-
|
|
1951
|
+
if (this.enableSeparateConnector && isInitialRule) {
|
|
1952
|
+
this.enableSeparateConnectorInitialRule(groupElem, template);
|
|
1953
|
+
}
|
|
1954
|
+
else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
|
|
1955
|
+
groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);
|
|
1956
|
+
}
|
|
1957
|
+
else {
|
|
1958
|
+
groupHdr.appendChild(template);
|
|
1959
|
+
}
|
|
1359
1960
|
}
|
|
1360
1961
|
this.renderReactTemplates();
|
|
1361
1962
|
}
|
|
1362
1963
|
return groupElem;
|
|
1363
1964
|
};
|
|
1965
|
+
QueryBuilder.prototype.enableSeparateConnectorInitialRule = function (groupElem, template) {
|
|
1966
|
+
var elem = groupElem.nextElementSibling ? groupElem.nextElementSibling : groupElem;
|
|
1967
|
+
var group = elem.closest('.e-group-container');
|
|
1968
|
+
if (!groupElem.nextElementSibling && group) {
|
|
1969
|
+
group = group.nextElementSibling ? group.nextElementSibling : group;
|
|
1970
|
+
}
|
|
1971
|
+
if (group) {
|
|
1972
|
+
group.parentElement.insertBefore(template, group);
|
|
1973
|
+
}
|
|
1974
|
+
};
|
|
1364
1975
|
/**
|
|
1365
1976
|
* Notify the changes to component.
|
|
1366
1977
|
*
|
|
@@ -1379,12 +1990,29 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1379
1990
|
return;
|
|
1380
1991
|
}
|
|
1381
1992
|
if (type === 'condition') {
|
|
1382
|
-
|
|
1993
|
+
if (this.enableSeparateConnector) {
|
|
1994
|
+
ruleElement = element.parentElement.previousElementSibling;
|
|
1995
|
+
if (ruleElement && ruleElement.classList.contains('e-group-container')) {
|
|
1996
|
+
ruleElement = ruleElement.querySelectorAll('.e-rule-container')[ruleElement.querySelectorAll('.e-rule-container').length - 1];
|
|
1997
|
+
}
|
|
1998
|
+
if (ruleElement && ruleElement.classList.contains('e-rule-container')) {
|
|
1999
|
+
rules = this.getRule(ruleElement);
|
|
2000
|
+
}
|
|
2001
|
+
rules.condition = value;
|
|
2002
|
+
}
|
|
2003
|
+
else {
|
|
2004
|
+
rules.condition = value;
|
|
2005
|
+
}
|
|
1383
2006
|
return;
|
|
1384
2007
|
}
|
|
1385
2008
|
while (ruleElement && ruleElement.previousElementSibling !== null) {
|
|
1386
2009
|
ruleElement = ruleElement.previousElementSibling;
|
|
1387
|
-
|
|
2010
|
+
if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
|
|
2011
|
+
((!this.headerTemplate && !ruleElement.classList.contains('e-btn-group')) ||
|
|
2012
|
+
this.headerTemplate && (ruleElement.classList.contains('e-rule-container') ||
|
|
2013
|
+
ruleElement.classList.contains('e-group-container'))))) {
|
|
2014
|
+
index++;
|
|
2015
|
+
}
|
|
1388
2016
|
}
|
|
1389
2017
|
var rule = rules.rules[index];
|
|
1390
2018
|
var column = this.getColumn(rule.field);
|
|
@@ -1421,7 +2049,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1421
2049
|
}
|
|
1422
2050
|
while (ruleElem && ruleElem.previousElementSibling !== null) {
|
|
1423
2051
|
ruleElem = ruleElem.previousElementSibling;
|
|
1424
|
-
|
|
2052
|
+
if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
|
|
2053
|
+
((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
|
|
2054
|
+
this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
|
|
2055
|
+
ruleElem.classList.contains('e-group-container'))))) {
|
|
2056
|
+
index++;
|
|
2057
|
+
}
|
|
1425
2058
|
}
|
|
1426
2059
|
var rule = rules.rules[index];
|
|
1427
2060
|
if (type === 'field') {
|
|
@@ -1478,12 +2111,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1478
2111
|
else {
|
|
1479
2112
|
ruleElement.className = 'e-rule-container e-horizontal-mode';
|
|
1480
2113
|
}
|
|
1481
|
-
if (
|
|
1482
|
-
if (ruleElement.className.indexOf('e-
|
|
1483
|
-
ruleElement.className
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
ruleElement.previousElementSibling.className
|
|
2114
|
+
if (!this.enableSeparateConnector) {
|
|
2115
|
+
if (ruleElement.previousElementSibling && ruleElement.previousElementSibling.className.indexOf('e-rule-container') > -1) {
|
|
2116
|
+
if (ruleElement.className.indexOf('e-joined-rule') < 0) {
|
|
2117
|
+
ruleElement.className += ' e-joined-rule';
|
|
2118
|
+
}
|
|
2119
|
+
if (ruleElement.previousElementSibling.className.indexOf('e-prev-joined-rule') < 0) {
|
|
2120
|
+
ruleElement.previousElementSibling.className += ' e-prev-joined-rule';
|
|
2121
|
+
}
|
|
1487
2122
|
}
|
|
1488
2123
|
}
|
|
1489
2124
|
if (ruleElement.previousElementSibling && ruleElement.previousElementSibling.className.indexOf('e-group-container') > -1 &&
|
|
@@ -1548,8 +2183,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1548
2183
|
var value;
|
|
1549
2184
|
var rbValue;
|
|
1550
2185
|
if (element.className.indexOf('e-radio') > -1) {
|
|
1551
|
-
|
|
1552
|
-
rbValue = parseInt(element.id.split('valuekey')[1], 0);
|
|
2186
|
+
rbValue = parseInt(element.id.split('valuekey')[1], 10);
|
|
1553
2187
|
if (this.fieldMode === 'Default') {
|
|
1554
2188
|
dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdownlist');
|
|
1555
2189
|
this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);
|
|
@@ -1579,7 +2213,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1579
2213
|
if (args.type === 'input' && args.currentTarget) {
|
|
1580
2214
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1581
2215
|
value = Number(args.currentTarget.value);
|
|
1582
|
-
|
|
2216
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2217
|
+
var elem = args.currentTarget;
|
|
2218
|
+
var numericTextBoxObj = getInstance(elem, NumericTextBox);
|
|
1583
2219
|
numericTextBoxObj.value = value;
|
|
1584
2220
|
this.isNumInput = true;
|
|
1585
2221
|
}
|
|
@@ -1688,7 +2324,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1688
2324
|
var index = 0;
|
|
1689
2325
|
while (ruleElem && ruleElem.previousElementSibling !== null) {
|
|
1690
2326
|
ruleElem = ruleElem.previousElementSibling;
|
|
1691
|
-
|
|
2327
|
+
if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
|
|
2328
|
+
((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
|
|
2329
|
+
this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
|
|
2330
|
+
ruleElem.classList.contains('e-group-container'))))) {
|
|
2331
|
+
index++;
|
|
2332
|
+
}
|
|
1692
2333
|
}
|
|
1693
2334
|
rules.rules[index].value = '';
|
|
1694
2335
|
this.changeRule(rules.rules[index], args);
|
|
@@ -1734,7 +2375,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1734
2375
|
var ruleID = ruleElem.id.replace(this.element.id + '_', '');
|
|
1735
2376
|
var eventsArgs = { groupID: grID, ruleID: ruleID, selectedField: this.fieldMode === 'DropdownTree' ?
|
|
1736
2377
|
dl.value[0] : dl.value, cancel: false, type: 'field' };
|
|
1737
|
-
if (!this.isImportRules) {
|
|
2378
|
+
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
1738
2379
|
this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {
|
|
1739
2380
|
_this.fieldChangeSuccess(observedChangeArgs, tmpRl, flt, rl, dArg);
|
|
1740
2381
|
});
|
|
@@ -1905,7 +2546,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1905
2546
|
if (valElem && this.getColumn(rule.field).template) {
|
|
1906
2547
|
filterElem = operatorElem.previousElementSibling;
|
|
1907
2548
|
}
|
|
1908
|
-
if (valElem.children.length
|
|
2549
|
+
if (valElem.children.length === 0) {
|
|
1909
2550
|
filterElem = operatorElem.previousElementSibling;
|
|
1910
2551
|
}
|
|
1911
2552
|
this.changeRuleValues(filterElem, rule, tempRule, ddlArgs);
|
|
@@ -1959,7 +2600,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1959
2600
|
value = '';
|
|
1960
2601
|
ddlIdx = -1;
|
|
1961
2602
|
}
|
|
1962
|
-
if (this.isImportRules || (this.ruleIndex > -1 || this.groupIndex > -1)) {
|
|
2603
|
+
if (this.isImportRules || (this.ruleIndex > -1 || this.groupIndex > -1 || this.prvtEvtTgrDaD)) {
|
|
1963
2604
|
value = rule ? (rule.operator ? rule.operator : value) : value;
|
|
1964
2605
|
}
|
|
1965
2606
|
var ddlOperator = void 0;
|
|
@@ -2344,14 +2985,15 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2344
2985
|
var columnData = this.getItemData(parentId);
|
|
2345
2986
|
var selectedValue;
|
|
2346
2987
|
var isTemplate = (typeof columnData.template === 'string');
|
|
2347
|
-
if (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate || rule.value
|
|
2988
|
+
if (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate || rule.value !== '') {
|
|
2348
2989
|
selectedValue = rule.value;
|
|
2349
2990
|
}
|
|
2350
2991
|
else {
|
|
2351
2992
|
selectedValue = this.setDefaultValue(parentId, false, false);
|
|
2352
2993
|
}
|
|
2353
2994
|
if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {
|
|
2354
|
-
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :
|
|
2995
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic) ? rule.value :
|
|
2996
|
+
this.setDefaultValue(parentId, true, false);
|
|
2355
2997
|
this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
|
|
2356
2998
|
if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {
|
|
2357
2999
|
ruleValElem.style.width = '100%';
|
|
@@ -2363,7 +3005,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2363
3005
|
}
|
|
2364
3006
|
else {
|
|
2365
3007
|
if (operator === 'in' || operator === 'notin') {
|
|
2366
|
-
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :
|
|
3008
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :
|
|
3009
|
+
this.setDefaultValue(parentId, true, false);
|
|
2367
3010
|
selectedValue = selectedVal.join(',');
|
|
2368
3011
|
}
|
|
2369
3012
|
var txtBox = void 0;
|
|
@@ -2383,9 +3026,11 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2383
3026
|
QueryBuilder.prototype.renderNumberValue = function (parentId, rule, operator, idx, ruleValElem, itemData, length) {
|
|
2384
3027
|
var columnData = this.getItemData(parentId);
|
|
2385
3028
|
var isTemplate = (typeof columnData.template === 'string');
|
|
2386
|
-
var selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate ||
|
|
3029
|
+
var selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate ||
|
|
3030
|
+
typeof rule.value === 'number') ? rule.value : this.setDefaultValue(parentId, false, true);
|
|
2387
3031
|
if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {
|
|
2388
|
-
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :
|
|
3032
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic) ? rule.value :
|
|
3033
|
+
this.setDefaultValue(parentId, true, false);
|
|
2389
3034
|
this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
|
|
2390
3035
|
if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {
|
|
2391
3036
|
ruleValElem.style.width = '100%';
|
|
@@ -2396,7 +3041,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2396
3041
|
}
|
|
2397
3042
|
}
|
|
2398
3043
|
else if (operator === 'in' || operator === 'notin') {
|
|
2399
|
-
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :
|
|
3044
|
+
selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :
|
|
3045
|
+
this.setDefaultValue(parentId, true, false);
|
|
2400
3046
|
var selVal = selectedVal.join(',');
|
|
2401
3047
|
var txtInp = void 0;
|
|
2402
3048
|
txtInp = {
|
|
@@ -2858,10 +3504,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2858
3504
|
}
|
|
2859
3505
|
var controlName = element.className.split(' e-')[idx];
|
|
2860
3506
|
var i = parseInt(element.id.slice(-1), 2);
|
|
3507
|
+
var column;
|
|
3508
|
+
var format;
|
|
3509
|
+
var selectedDate;
|
|
3510
|
+
var value;
|
|
3511
|
+
var radioBtnObj;
|
|
2861
3512
|
switch (controlName) {
|
|
2862
3513
|
case 'checkbox':
|
|
2863
|
-
|
|
2864
|
-
var value = getComponent(element, controlName).value;
|
|
3514
|
+
value = getComponent(element, controlName).value;
|
|
2865
3515
|
rule.value = (value !== '') ? value : undefined;
|
|
2866
3516
|
break;
|
|
2867
3517
|
case 'textbox':
|
|
@@ -2871,8 +3521,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2871
3521
|
rule.value = getComponent(element, controlName).value;
|
|
2872
3522
|
break;
|
|
2873
3523
|
case 'radio':
|
|
2874
|
-
|
|
2875
|
-
var radioBtnObj = getComponent(element, controlName);
|
|
3524
|
+
radioBtnObj = getComponent(element, controlName);
|
|
2876
3525
|
if (radioBtnObj.checked) {
|
|
2877
3526
|
if (typeof rule.value === 'boolean') {
|
|
2878
3527
|
rule.value = radioBtnObj.value === 'true';
|
|
@@ -2900,12 +3549,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2900
3549
|
}
|
|
2901
3550
|
break;
|
|
2902
3551
|
case 'datepicker':
|
|
2903
|
-
|
|
2904
|
-
|
|
2905
|
-
|
|
2906
|
-
var format = this.getFormat(column.format);
|
|
2907
|
-
// eslint-disable-next-line
|
|
2908
|
-
var selectedDate = getComponent(element, controlName).value;
|
|
3552
|
+
column = this.getColumn(rule.field);
|
|
3553
|
+
format = this.getFormat(column.format);
|
|
3554
|
+
selectedDate = getComponent(element, controlName).value;
|
|
2909
3555
|
if (rule.operator.indexOf('between') > -1) {
|
|
2910
3556
|
if (typeof rule.value === 'string') {
|
|
2911
3557
|
rule.value = [];
|
|
@@ -2938,7 +3584,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2938
3584
|
var beforeRules = this.getValidRules(this.rule);
|
|
2939
3585
|
while (ruleElem && ruleElem.previousElementSibling !== null) {
|
|
2940
3586
|
ruleElem = ruleElem.previousElementSibling;
|
|
2941
|
-
|
|
3587
|
+
if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
|
|
3588
|
+
((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
|
|
3589
|
+
this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
|
|
3590
|
+
ruleElem.classList.contains('e-group-container'))))) {
|
|
3591
|
+
index++;
|
|
3592
|
+
}
|
|
2942
3593
|
}
|
|
2943
3594
|
var operator = rule.rules[index].operator ? rule.rules[index].operator.toString() : '';
|
|
2944
3595
|
ruleElem = closest(target, '.e-rule-container');
|
|
@@ -2987,7 +3638,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2987
3638
|
}
|
|
2988
3639
|
this.updateValues(elementCln[i_1], rule.rules[index]);
|
|
2989
3640
|
}
|
|
2990
|
-
if (!this.isImportRules) {
|
|
3641
|
+
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
2991
3642
|
this.trigger('change', eventsArgs);
|
|
2992
3643
|
}
|
|
2993
3644
|
if (this.allowValidation && rule.rules[index].field && target.parentElement.className.indexOf('e-tooltip') > -1) {
|
|
@@ -3032,7 +3683,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3032
3683
|
var beforeRuleStr = JSON.stringify({ condition: beforeRule.condition, not: beforeRule.not, rule: beforeRule.rules });
|
|
3033
3684
|
var afetrRuleStr = JSON.stringify({ condition: afterRule.condition, not: afterRule.not, rule: afterRule.rules });
|
|
3034
3685
|
if (beforeRuleStr !== afetrRuleStr) {
|
|
3035
|
-
if (!this.isImportRules) {
|
|
3686
|
+
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
3036
3687
|
this.trigger('ruleChange', { previousRule: beforeRule, rule: afterRule, type: type });
|
|
3037
3688
|
}
|
|
3038
3689
|
}
|
|
@@ -3199,7 +3850,6 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3199
3850
|
var len;
|
|
3200
3851
|
var tooltip;
|
|
3201
3852
|
_super.prototype.destroy.call(this);
|
|
3202
|
-
var popupElement;
|
|
3203
3853
|
element = this.element.querySelectorAll('.e-addrulegroup');
|
|
3204
3854
|
len = element.length;
|
|
3205
3855
|
for (i = 0; i < len; i++) {
|
|
@@ -3245,7 +3895,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3245
3895
|
if (this.portals && this.portals.length) {
|
|
3246
3896
|
this.clearQBTemplate();
|
|
3247
3897
|
}
|
|
3248
|
-
popupElement = document.querySelectorAll('.qb-dropdownlist.e-popup');
|
|
3898
|
+
var popupElement = document.querySelectorAll('.qb-dropdownlist.e-popup');
|
|
3249
3899
|
if (popupElement) {
|
|
3250
3900
|
for (i = 0; i < popupElement.length; i++) {
|
|
3251
3901
|
popupElement[i].remove();
|
|
@@ -3318,7 +3968,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3318
3968
|
}
|
|
3319
3969
|
}
|
|
3320
3970
|
if (!this.headerTemplate) {
|
|
3321
|
-
this.disableRuleCondition(groupElem, rule);
|
|
3971
|
+
this.disableRuleCondition(groupElem, rule, null, this.enableSeparateConnector ? true : null);
|
|
3322
3972
|
}
|
|
3323
3973
|
}
|
|
3324
3974
|
};
|
|
@@ -3327,6 +3977,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3327
3977
|
if (this.cssClass) {
|
|
3328
3978
|
addClass([this.element], this.cssClass.replace(/\s+/g, ' ').trim().split(' '));
|
|
3329
3979
|
}
|
|
3980
|
+
if (this.enableSeparateConnector) {
|
|
3981
|
+
addClass([this.element], 'e-multi-connector');
|
|
3982
|
+
}
|
|
3330
3983
|
if (this.enableRtl) {
|
|
3331
3984
|
addClass([this.element], 'e-rtl');
|
|
3332
3985
|
}
|
|
@@ -3363,14 +4016,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3363
4016
|
}
|
|
3364
4017
|
}
|
|
3365
4018
|
else {
|
|
3366
|
-
if (this.columns.length && this.isImportRules) {
|
|
4019
|
+
if (this.columns && this.columns.length && this.isImportRules) {
|
|
3367
4020
|
this.addGroupElement(false, this.element, this.rule.condition, false, this.rule.not, false, this.rule);
|
|
3368
4021
|
var mRules = extend({}, this.rule, {}, true);
|
|
3369
4022
|
this.isRefreshed = true;
|
|
3370
4023
|
this.setGroupRules(mRules);
|
|
3371
4024
|
this.isRefreshed = false;
|
|
3372
4025
|
}
|
|
3373
|
-
else if (this.columns.length) {
|
|
4026
|
+
else if (this.columns && this.columns.length) {
|
|
3374
4027
|
this.addRuleElement(this.element.querySelector('.e-group-container'), {});
|
|
3375
4028
|
}
|
|
3376
4029
|
this.notGroupRtl();
|
|
@@ -3424,8 +4077,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3424
4077
|
this.groupIdCounter = 0;
|
|
3425
4078
|
if (!this.headerTemplate) {
|
|
3426
4079
|
if (this.enableNotCondition) {
|
|
3427
|
-
|
|
3428
|
-
|
|
4080
|
+
var inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });
|
|
4081
|
+
if (this.groupElem.querySelector('.e-btn-group')) {
|
|
3429
4082
|
this.groupElem.querySelector('.e-btn-group').insertBefore(inputElem, this.groupElem.querySelector('.e-btngroup-and'));
|
|
3430
4083
|
}
|
|
3431
4084
|
}
|
|
@@ -3466,14 +4119,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3466
4119
|
};
|
|
3467
4120
|
QueryBuilder.prototype.onPropertyChanged = function (newProp, oldProp) {
|
|
3468
4121
|
var properties = Object.keys(newProp);
|
|
4122
|
+
var groupElem = this.element.querySelector('.e-group-container');
|
|
4123
|
+
var summaryElem = this.element.querySelector('.e-summary-content');
|
|
3469
4124
|
for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {
|
|
3470
4125
|
var prop = properties_1[_i];
|
|
3471
4126
|
switch (prop) {
|
|
3472
4127
|
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
4128
|
if (newProp.summaryView) {
|
|
3478
4129
|
groupElem.style.display = 'none';
|
|
3479
4130
|
if (this.element.querySelectorAll('.e-summary-content').length < 1) {
|
|
@@ -3613,6 +4264,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3613
4264
|
this.isReadonly = newProp.readonly;
|
|
3614
4265
|
this.enableReadonly();
|
|
3615
4266
|
break;
|
|
4267
|
+
case 'allowDragAndDrop':
|
|
4268
|
+
this.allowDragAndDrop = newProp.allowDragAndDrop;
|
|
4269
|
+
this.refresh();
|
|
4270
|
+
break;
|
|
4271
|
+
case 'enableSeparateConnector':
|
|
4272
|
+
this.enableSeparateConnector = newProp.enableSeparateConnector;
|
|
4273
|
+
this.refresh();
|
|
4274
|
+
break;
|
|
3616
4275
|
}
|
|
3617
4276
|
}
|
|
3618
4277
|
};
|
|
@@ -3770,6 +4429,134 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3770
4429
|
this.initControl();
|
|
3771
4430
|
}
|
|
3772
4431
|
this.renderComplete();
|
|
4432
|
+
if (this.allowDragAndDrop) {
|
|
4433
|
+
this.initializeDrag();
|
|
4434
|
+
}
|
|
4435
|
+
};
|
|
4436
|
+
QueryBuilder.prototype.initializeDrag = function () {
|
|
4437
|
+
this.draggable = new Draggable(this.element, {
|
|
4438
|
+
dragTarget: '.e-drag-qb-rule',
|
|
4439
|
+
distance: 5,
|
|
4440
|
+
helper: this.helper.bind(this),
|
|
4441
|
+
dragStart: this.dragStartHandler.bind(this),
|
|
4442
|
+
drag: this.dragHandler.bind(this),
|
|
4443
|
+
dragStop: this.dragStopHandler.bind(this),
|
|
4444
|
+
isReplaceDragEle: true,
|
|
4445
|
+
isPreventSelect: false,
|
|
4446
|
+
abort: '.e-parent-header',
|
|
4447
|
+
isDragScroll: true
|
|
4448
|
+
});
|
|
4449
|
+
};
|
|
4450
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4451
|
+
QueryBuilder.prototype.helper = function (e) {
|
|
4452
|
+
var target = this.draggable.currentStateTarget;
|
|
4453
|
+
if (!target.classList.contains('e-drag-qb-rule') || (target.classList.contains('e-drag-qb-rule') && closest(target, '.e-disable'))) {
|
|
4454
|
+
return false;
|
|
4455
|
+
}
|
|
4456
|
+
var visualElement = this.createElement('div', {
|
|
4457
|
+
className: 'e-cloneproperties e-draganddrop e-dragclone',
|
|
4458
|
+
styles: 'height:"auto", z-index:2, width:' + this.element.offsetWidth
|
|
4459
|
+
});
|
|
4460
|
+
var cloneElement;
|
|
4461
|
+
if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {
|
|
4462
|
+
cloneElement = closest(target, '.e-group-container').cloneNode(true);
|
|
4463
|
+
closest(target, '.e-group-container').classList.add('e-qb-dragging-rule');
|
|
4464
|
+
}
|
|
4465
|
+
else {
|
|
4466
|
+
visualElement.classList.add('e-group-body');
|
|
4467
|
+
cloneElement = this.createElement('div', { className: 'e-rule-container' });
|
|
4468
|
+
var ruleElement = closest(target, '.e-rule-field').cloneNode(true);
|
|
4469
|
+
cloneElement.appendChild(ruleElement);
|
|
4470
|
+
closest(target, '.e-rule-field').classList.add('e-qb-dragging-rule');
|
|
4471
|
+
}
|
|
4472
|
+
visualElement.appendChild(cloneElement);
|
|
4473
|
+
var childElements = visualElement.querySelectorAll('*');
|
|
4474
|
+
childElements.forEach(function (child) {
|
|
4475
|
+
child.removeAttribute('id');
|
|
4476
|
+
});
|
|
4477
|
+
this.element.appendChild(visualElement);
|
|
4478
|
+
return visualElement;
|
|
4479
|
+
};
|
|
4480
|
+
QueryBuilder.prototype.dragStartHandler = function (e) {
|
|
4481
|
+
this.draggedRule = e.target;
|
|
4482
|
+
this.isDragEventPrevent = false;
|
|
4483
|
+
document.body.classList.add('e-prevent-select');
|
|
4484
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
4485
|
+
this.dragElement = e.dragElement;
|
|
4486
|
+
var rule = closest(e.target, '.e-rule-container');
|
|
4487
|
+
var group = closest(e.target, '.e-group-container');
|
|
4488
|
+
var dragEventArgs = { dragRuleID: rule !== null ? rule.id : group.id, dragGroupID: group.id, cancel: false };
|
|
4489
|
+
this.trigger('dragStart', dragEventArgs);
|
|
4490
|
+
this.isDragEventPrevent = dragEventArgs.cancel;
|
|
4491
|
+
};
|
|
4492
|
+
QueryBuilder.prototype.dragHandler = function (e) {
|
|
4493
|
+
if (this.isDragEventPrevent) {
|
|
4494
|
+
return;
|
|
4495
|
+
}
|
|
4496
|
+
var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');
|
|
4497
|
+
borderLineElem.forEach(function (ele) {
|
|
4498
|
+
ele.classList.remove('e-drag-rule-bottom-line');
|
|
4499
|
+
});
|
|
4500
|
+
borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');
|
|
4501
|
+
borderLineElem.forEach(function (ele) {
|
|
4502
|
+
ele.classList.remove('e-drag-rule-top-line');
|
|
4503
|
+
});
|
|
4504
|
+
if (isNullOrUndefined(e.target)) {
|
|
4505
|
+
return;
|
|
4506
|
+
}
|
|
4507
|
+
if (e.target.nodeName === 'HTML' || closest(e.target, '.e-qb-dragging-rule') || closest(e.target, '.e-group-header') ||
|
|
4508
|
+
!closest(e.target, '#' + this.element.id) || closest(e.target, '.e-disable') || (e.target.parentElement && e.target.parentElement.classList.contains('e-btn-group') && this.enableSeparateConnector)) {
|
|
4509
|
+
this.dragElement.classList.add('e-notallowedcur');
|
|
4510
|
+
return;
|
|
4511
|
+
}
|
|
4512
|
+
else {
|
|
4513
|
+
this.dragElement.classList.remove('e-notallowedcur');
|
|
4514
|
+
}
|
|
4515
|
+
var targetElem = closest(e.target, '.e-rule-container');
|
|
4516
|
+
var grpElem = closest(e.target, '.e-group-container');
|
|
4517
|
+
if (targetElem) {
|
|
4518
|
+
var rect = targetElem.getBoundingClientRect();
|
|
4519
|
+
var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;
|
|
4520
|
+
var distanceToTop = mouseY - rect.top;
|
|
4521
|
+
var distanceToBottom = rect.bottom - mouseY;
|
|
4522
|
+
var threshold = 20; // Adjust as needed
|
|
4523
|
+
if (distanceToTop < threshold) {
|
|
4524
|
+
targetElem.classList.add('e-drag-rule-top-line');
|
|
4525
|
+
}
|
|
4526
|
+
else if (distanceToBottom < threshold) {
|
|
4527
|
+
targetElem.classList.add('e-drag-rule-bottom-line');
|
|
4528
|
+
}
|
|
4529
|
+
}
|
|
4530
|
+
else if (e.target.classList.contains('e-rule-list') && e.target.children.length === 0) {
|
|
4531
|
+
e.target.classList.add('e-drag-rule-bottom-line');
|
|
4532
|
+
}
|
|
4533
|
+
else if (e.target.classList.contains('e-rule-list') && e.target.children[0].classList.contains('e-group-container')) {
|
|
4534
|
+
var rect = e.target.children[0].getBoundingClientRect();
|
|
4535
|
+
var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;
|
|
4536
|
+
var distanceToTop = mouseY - rect.top;
|
|
4537
|
+
var threshold = 20; // Adjust as needed
|
|
4538
|
+
if (distanceToTop < threshold) {
|
|
4539
|
+
e.target.classList.add('e-drag-rule-top-line');
|
|
4540
|
+
}
|
|
4541
|
+
}
|
|
4542
|
+
else if (closest(e.target, '.e-group-container') || e.target.classList.contains('e-group-container')) {
|
|
4543
|
+
if (!grpElem) {
|
|
4544
|
+
grpElem = e.target;
|
|
4545
|
+
}
|
|
4546
|
+
if (grpElem.id.indexOf('group0') > -1) {
|
|
4547
|
+
var rect = e.target.getBoundingClientRect();
|
|
4548
|
+
var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;
|
|
4549
|
+
var distanceToBottom = rect.bottom - mouseY;
|
|
4550
|
+
var threshold = 20; // Adjust as needed
|
|
4551
|
+
if (distanceToBottom < threshold) {
|
|
4552
|
+
e.target.classList.add('e-drag-rule-bottom-line');
|
|
4553
|
+
}
|
|
4554
|
+
}
|
|
4555
|
+
}
|
|
4556
|
+
var dragEventArgs = { dragRuleID: targetElem !== null ? targetElem.id : grpElem !== null ? grpElem.id : null,
|
|
4557
|
+
dragGroupID: grpElem !== null ? grpElem.id : null, cancel: false };
|
|
4558
|
+
this.trigger('drag', dragEventArgs);
|
|
4559
|
+
this.isDragEventPrevent = dragEventArgs.cancel;
|
|
3773
4560
|
};
|
|
3774
4561
|
QueryBuilder.prototype.templateParser = function (template) {
|
|
3775
4562
|
if (template) {
|
|
@@ -3814,6 +4601,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3814
4601
|
EventHandler.add(wrapper, 'focusout', this.focusEventHandler, this);
|
|
3815
4602
|
EventHandler.add(wrapper, 'focusin', this.focusEventHandler, this);
|
|
3816
4603
|
EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);
|
|
4604
|
+
EventHandler.add(document, 'keydown', this.keyBoardHandler, this);
|
|
3817
4605
|
};
|
|
3818
4606
|
QueryBuilder.prototype.unWireEvents = function () {
|
|
3819
4607
|
var wrapper = this.getWrapper();
|
|
@@ -3821,6 +4609,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3821
4609
|
EventHandler.remove(wrapper, 'focusout', this.focusEventHandler);
|
|
3822
4610
|
EventHandler.remove(wrapper, 'focusin', this.focusEventHandler);
|
|
3823
4611
|
EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);
|
|
4612
|
+
EventHandler.remove(document, 'keydown', this.keyBoardHandler);
|
|
3824
4613
|
};
|
|
3825
4614
|
QueryBuilder.prototype.getParentGroup = function (target, isParent) {
|
|
3826
4615
|
var groupLevel = (target instanceof Element) ? this.levelColl[target.id] : this.levelColl["" + target];
|
|
@@ -3849,7 +4638,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3849
4638
|
groupId = groupElem.id.replace(this.element.id + '_', '');
|
|
3850
4639
|
}
|
|
3851
4640
|
var args = { groupID: groupId, cancel: false, type: 'deleteGroup' };
|
|
3852
|
-
if (!this.isImportRules) {
|
|
4641
|
+
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
3853
4642
|
this.trigger('beforeChange', args, function (observedChangeArgs) {
|
|
3854
4643
|
_this.deleteGroupSuccessCallBack(observedChangeArgs, target);
|
|
3855
4644
|
});
|
|
@@ -3879,13 +4668,20 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3879
4668
|
}
|
|
3880
4669
|
while (groupElem.previousElementSibling !== null) {
|
|
3881
4670
|
groupElem = groupElem.previousElementSibling;
|
|
3882
|
-
|
|
4671
|
+
if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
|
|
4672
|
+
((!this.headerTemplate && !groupElem.classList.contains('e-btn-group')) ||
|
|
4673
|
+
this.headerTemplate && (groupElem.classList.contains('e-rule-container') ||
|
|
4674
|
+
groupElem.classList.contains('e-group-container'))))) {
|
|
4675
|
+
index++;
|
|
4676
|
+
}
|
|
3883
4677
|
}
|
|
3884
|
-
if (
|
|
3885
|
-
|
|
3886
|
-
|
|
3887
|
-
|
|
3888
|
-
|
|
4678
|
+
if (!this.enableSeparateConnector) {
|
|
4679
|
+
if (nextElem && nextElem.className.indexOf('e-separate-rule') > -1) {
|
|
4680
|
+
removeClass([nextElem], 'e-separate-rule');
|
|
4681
|
+
addClass([nextElem], 'e-joined-rule');
|
|
4682
|
+
if (prevElem && prevElem.className.indexOf('e-rule-container') > -1) {
|
|
4683
|
+
addClass([prevElem], 'e-prev-joined-rule');
|
|
4684
|
+
}
|
|
3889
4685
|
}
|
|
3890
4686
|
}
|
|
3891
4687
|
var elem = groupElem.parentElement.parentElement.parentElement;
|
|
@@ -3917,7 +4713,11 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3917
4713
|
delete this.levelColl[args.groupID];
|
|
3918
4714
|
this.refreshLevelColl();
|
|
3919
4715
|
this.disableRuleCondition(elem, rule);
|
|
3920
|
-
if (!this.
|
|
4716
|
+
if (this.enableSeparateConnector && prevElem && ((!this.headerTemplate && prevElem.classList.contains('e-btn-group')) ||
|
|
4717
|
+
(this.headerTemplate && prevElem.classList.contains('e-custom-group-btn')))) {
|
|
4718
|
+
detach(prevElem);
|
|
4719
|
+
}
|
|
4720
|
+
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
3921
4721
|
this.trigger('change', args);
|
|
3922
4722
|
}
|
|
3923
4723
|
this.filterRules(beforeRules, this.getValidRules(this.rule), 'deleteGroup');
|
|
@@ -3934,7 +4734,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3934
4734
|
var groupID = groupElem.id.replace(this.element.id + '_', '');
|
|
3935
4735
|
var ruleID = closest(target, '.e-rule-container').id.replace(this.element.id + '_', '');
|
|
3936
4736
|
var args = { groupID: groupID, ruleID: ruleID, cancel: false, type: 'deleteRule' };
|
|
3937
|
-
if (!this.isImportRules) {
|
|
4737
|
+
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
3938
4738
|
this.trigger('beforeChange', args, function (observedChangeArgs) {
|
|
3939
4739
|
_this.deleteRuleSuccessCallBack(observedChangeArgs, target);
|
|
3940
4740
|
});
|
|
@@ -3949,10 +4749,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3949
4749
|
var rule = this.getParentGroup(groupElem);
|
|
3950
4750
|
var ruleElem = closest(target, '.e-rule-container');
|
|
3951
4751
|
var beforeRules = this.getValidRules(this.rule);
|
|
3952
|
-
var clnruleElem = ruleElem;
|
|
3953
|
-
var nextElem = ruleElem.nextElementSibling;
|
|
3954
4752
|
var prevElem = ruleElem.previousElementSibling;
|
|
3955
4753
|
var index = 0;
|
|
4754
|
+
var clnruleElem = ruleElem;
|
|
4755
|
+
var nextElem = ruleElem.nextElementSibling;
|
|
3956
4756
|
var valElem = ruleElem.querySelectorAll('.e-tooltip');
|
|
3957
4757
|
var i = void 0;
|
|
3958
4758
|
var len = valElem.length;
|
|
@@ -3961,7 +4761,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3961
4761
|
}
|
|
3962
4762
|
while (ruleElem.previousElementSibling !== null) {
|
|
3963
4763
|
ruleElem = ruleElem.previousElementSibling;
|
|
3964
|
-
|
|
4764
|
+
if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
|
|
4765
|
+
((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
|
|
4766
|
+
this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
|
|
4767
|
+
ruleElem.classList.contains('e-group-container'))))) {
|
|
4768
|
+
index++;
|
|
4769
|
+
}
|
|
3965
4770
|
}
|
|
3966
4771
|
var column = this.getColumn(rule.rules[index].field);
|
|
3967
4772
|
if (column && column.template && clnruleElem.querySelector('.e-template')) {
|
|
@@ -3980,17 +4785,27 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3980
4785
|
var isTemplateRendered = clnruleElem.querySelector('.e-template-value');
|
|
3981
4786
|
// eslint-disable
|
|
3982
4787
|
try {
|
|
4788
|
+
if (this.enableSeparateConnector && (clnruleElem.previousElementSibling || clnruleElem.nextElementSibling)) {
|
|
4789
|
+
var previousElem = clnruleElem.previousElementSibling;
|
|
4790
|
+
var nextElem_1 = clnruleElem.nextElementSibling;
|
|
4791
|
+
if (isNullOrUndefined(nextElem_1) && ((!this.headerTemplate && previousElem.classList.contains('e-btn-group'))
|
|
4792
|
+
|| (this.headerTemplate && previousElem.classList.contains('e-custom-group-btn')))) {
|
|
4793
|
+
if (previousElem && previousElem.previousElementSibling && previousElem.previousElementSibling.classList.contains('e-rule-container')) {
|
|
4794
|
+
var rule_1 = this.getRule(previousElem.previousElementSibling);
|
|
4795
|
+
rule_1.condition = null;
|
|
4796
|
+
}
|
|
4797
|
+
detach(previousElem);
|
|
4798
|
+
}
|
|
4799
|
+
else if ((!this.headerTemplate && nextElem_1.classList.contains('e-btn-group'))
|
|
4800
|
+
|| (this.headerTemplate && nextElem_1.classList.contains('e-custom-group-btn'))) {
|
|
4801
|
+
detach(nextElem_1);
|
|
4802
|
+
}
|
|
4803
|
+
}
|
|
3983
4804
|
detach(clnruleElem);
|
|
3984
4805
|
}
|
|
3985
4806
|
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;
|
|
4807
|
+
return;
|
|
3992
4808
|
}
|
|
3993
|
-
// eslint-enable
|
|
3994
4809
|
if (column && column.ruleTemplate) {
|
|
3995
4810
|
this.clearQBTemplate([clnruleElem.id]);
|
|
3996
4811
|
}
|
|
@@ -3999,13 +4814,13 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3999
4814
|
}
|
|
4000
4815
|
rule.rules.splice(index, 1);
|
|
4001
4816
|
if (!(rule.rules[0] && rule.rules[0].rules)) {
|
|
4002
|
-
this.disableRuleCondition(groupElem, rule);
|
|
4817
|
+
this.disableRuleCondition(groupElem, rule, this.enableSeparateConnector ? true : false);
|
|
4003
4818
|
}
|
|
4004
4819
|
var tooltipElem = this.element.querySelectorAll('.e-tooltip');
|
|
4005
4820
|
for (var i_3 = 0; i_3 < tooltipElem.length; i_3++) {
|
|
4006
4821
|
getComponent(tooltipElem[i_3], 'tooltip').refresh(tooltipElem[i_3]);
|
|
4007
4822
|
}
|
|
4008
|
-
if (!this.isImportRules) {
|
|
4823
|
+
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
4009
4824
|
this.trigger('change', args);
|
|
4010
4825
|
}
|
|
4011
4826
|
this.filterRules(beforeRules, this.getValidRules(this.rule), 'deleteRule');
|
|
@@ -4029,9 +4844,32 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4029
4844
|
this.isImportRules = false;
|
|
4030
4845
|
};
|
|
4031
4846
|
QueryBuilder.prototype.keyBoardHandler = function (e) {
|
|
4032
|
-
if (this.readonly && (e.keyCode === 38 || e.keyCode === 40 || e.keyCode === 13)) {
|
|
4847
|
+
if (e.currentTarget === this.element && this.readonly && (e.keyCode === 38 || e.keyCode === 40 || e.keyCode === 13)) {
|
|
4033
4848
|
e.preventDefault();
|
|
4034
4849
|
}
|
|
4850
|
+
else if (e.code === 'Escape' && this.allowDragAndDrop) {
|
|
4851
|
+
this.isDragEventPrevent = true;
|
|
4852
|
+
document.body.classList.remove('e-prevent-select');
|
|
4853
|
+
var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');
|
|
4854
|
+
borderLineElem.forEach(function (ele) {
|
|
4855
|
+
ele.classList.remove('e-drag-rule-bottom-line');
|
|
4856
|
+
});
|
|
4857
|
+
borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');
|
|
4858
|
+
borderLineElem.forEach(function (ele) {
|
|
4859
|
+
ele.classList.remove('e-drag-rule-top-line');
|
|
4860
|
+
});
|
|
4861
|
+
borderLineElem = this.element.querySelectorAll('.e-qb-dragging-rule');
|
|
4862
|
+
borderLineElem.forEach(function (ele) {
|
|
4863
|
+
ele.classList.remove('e-qb-dragging-rule');
|
|
4864
|
+
});
|
|
4865
|
+
var dragElemnet = this.element.querySelector('.e-cloneproperties');
|
|
4866
|
+
if (dragElemnet) {
|
|
4867
|
+
remove(dragElemnet);
|
|
4868
|
+
}
|
|
4869
|
+
if (this.enableSeparateConnector) {
|
|
4870
|
+
this.refresh();
|
|
4871
|
+
}
|
|
4872
|
+
}
|
|
4035
4873
|
};
|
|
4036
4874
|
QueryBuilder.prototype.clearQBTemplate = function (ruleElemColl) {
|
|
4037
4875
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -4039,7 +4877,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4039
4877
|
this.clearTemplate(ruleElemColl);
|
|
4040
4878
|
}
|
|
4041
4879
|
};
|
|
4042
|
-
QueryBuilder.prototype.disableRuleCondition = function (groupElem, rules) {
|
|
4880
|
+
QueryBuilder.prototype.disableRuleCondition = function (groupElem, rules, isNewRuleAdded, isNewGroup) {
|
|
4043
4881
|
if (!this.headerTemplate) {
|
|
4044
4882
|
if (this.readonly) {
|
|
4045
4883
|
return;
|
|
@@ -4055,21 +4893,124 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4055
4893
|
orElem.nextElementSibling.classList.remove('e-btn-disable');
|
|
4056
4894
|
andElem.nextElementSibling.classList.remove('e-btn-disable');
|
|
4057
4895
|
}
|
|
4058
|
-
if (
|
|
4059
|
-
|
|
4896
|
+
if (this.enableSeparateConnector && !isNewRuleAdded) {
|
|
4897
|
+
var index = 0;
|
|
4898
|
+
var element = void 0;
|
|
4899
|
+
// eslint-disable-next-line no-constant-condition
|
|
4900
|
+
while (true) {
|
|
4901
|
+
var andGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-and');
|
|
4902
|
+
var orGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-or');
|
|
4903
|
+
andElem = andGroup[andGroup.length - (1 + index)];
|
|
4904
|
+
orElem = orGroup[orGroup.length - (1 + index)];
|
|
4905
|
+
element = andGroup[andGroup.length - (1 + index)];
|
|
4906
|
+
if (element && element.parentElement && element.parentElement.style.display === 'none') {
|
|
4907
|
+
index++;
|
|
4908
|
+
}
|
|
4909
|
+
else {
|
|
4910
|
+
break;
|
|
4911
|
+
}
|
|
4912
|
+
}
|
|
4913
|
+
var elem = groupElem.previousElementSibling;
|
|
4914
|
+
while (elem && !elem.classList.contains('e-rule-container')) {
|
|
4915
|
+
if (elem.classList.contains('e-group-container')) {
|
|
4916
|
+
elem = elem.querySelectorAll('.e-rule-container')[elem.querySelectorAll('.e-rule-container').length - 1];
|
|
4917
|
+
break;
|
|
4918
|
+
}
|
|
4919
|
+
elem = elem.previousElementSibling;
|
|
4920
|
+
}
|
|
4921
|
+
if (isNewGroup && groupElem.classList.contains('e-group-container')) {
|
|
4922
|
+
elem = groupElem;
|
|
4923
|
+
var prevRule = this.getGroup(elem);
|
|
4924
|
+
if (prevRule.condition === 'or') {
|
|
4925
|
+
orElem.checked = true;
|
|
4926
|
+
}
|
|
4927
|
+
else {
|
|
4928
|
+
andElem.checked = true;
|
|
4929
|
+
}
|
|
4930
|
+
}
|
|
4931
|
+
else if (elem && elem.classList.contains('e-rule-container')) {
|
|
4932
|
+
var ruleID = elem.id.replace(this.element.id + '_', '');
|
|
4933
|
+
var prevRule = this.getRule(ruleID);
|
|
4934
|
+
if (prevRule.condition === 'or') {
|
|
4935
|
+
orElem.checked = true;
|
|
4936
|
+
}
|
|
4937
|
+
else {
|
|
4938
|
+
andElem.checked = true;
|
|
4939
|
+
}
|
|
4940
|
+
}
|
|
4060
4941
|
}
|
|
4061
|
-
else {
|
|
4062
|
-
|
|
4942
|
+
else if (!isNewRuleAdded) {
|
|
4943
|
+
if (rules && rules.condition === 'or') {
|
|
4944
|
+
orElem.checked = true;
|
|
4945
|
+
}
|
|
4946
|
+
else {
|
|
4947
|
+
andElem.checked = true;
|
|
4948
|
+
}
|
|
4063
4949
|
}
|
|
4064
4950
|
}
|
|
4065
4951
|
else {
|
|
4066
|
-
|
|
4067
|
-
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
|
|
4072
|
-
|
|
4952
|
+
if (this.enableSeparateConnector && !isNewRuleAdded) {
|
|
4953
|
+
var index = 0;
|
|
4954
|
+
var element = void 0;
|
|
4955
|
+
// eslint-disable-next-line no-constant-condition
|
|
4956
|
+
while (true) {
|
|
4957
|
+
var andGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-and');
|
|
4958
|
+
var orGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-or');
|
|
4959
|
+
andElem = andGroup[andGroup.length - (1 + index)];
|
|
4960
|
+
orElem = orGroup[orGroup.length - (1 + index)];
|
|
4961
|
+
element = andGroup[andGroup.length - (1 + index)];
|
|
4962
|
+
if (element && element.parentElement && element.parentElement.style.display === 'none') {
|
|
4963
|
+
index++;
|
|
4964
|
+
}
|
|
4965
|
+
else {
|
|
4966
|
+
break;
|
|
4967
|
+
}
|
|
4968
|
+
}
|
|
4969
|
+
var elem = void 0;
|
|
4970
|
+
var tempElem = groupElem.previousElementSibling;
|
|
4971
|
+
while (tempElem) {
|
|
4972
|
+
if (tempElem.classList.contains('e-group-container')) {
|
|
4973
|
+
tempElem = tempElem.querySelectorAll('.e-rule-container')[tempElem.querySelectorAll('.e-rule-container').length - 1];
|
|
4974
|
+
}
|
|
4975
|
+
if (tempElem.classList.contains('e-rule-container')) {
|
|
4976
|
+
elem = tempElem;
|
|
4977
|
+
break;
|
|
4978
|
+
}
|
|
4979
|
+
tempElem = tempElem.previousElementSibling;
|
|
4980
|
+
}
|
|
4981
|
+
if (isNullOrUndefined(elem) && groupElem.querySelectorAll('.e-rule-container')[groupElem.querySelectorAll('.e-rule-container').length - 1]) {
|
|
4982
|
+
elem = groupElem.querySelectorAll('.e-rule-container')[groupElem.querySelectorAll('.e-rule-container').length - 1];
|
|
4983
|
+
}
|
|
4984
|
+
if (isNewGroup && groupElem.classList.contains('e-group-container')) {
|
|
4985
|
+
elem = groupElem;
|
|
4986
|
+
var prevRule = this.getGroup(elem);
|
|
4987
|
+
if (prevRule.condition === 'or') {
|
|
4988
|
+
orElem.checked = true;
|
|
4989
|
+
}
|
|
4990
|
+
else {
|
|
4991
|
+
andElem.checked = true;
|
|
4992
|
+
}
|
|
4993
|
+
}
|
|
4994
|
+
else if (elem) {
|
|
4995
|
+
var ruleID = elem.id.replace(this.element.id + '_', '');
|
|
4996
|
+
var prevRule = this.getRule(ruleID);
|
|
4997
|
+
if (prevRule.condition === 'or' && orElem) {
|
|
4998
|
+
orElem.checked = true;
|
|
4999
|
+
}
|
|
5000
|
+
else if (andElem) {
|
|
5001
|
+
andElem.checked = true;
|
|
5002
|
+
}
|
|
5003
|
+
}
|
|
5004
|
+
}
|
|
5005
|
+
else if (!isNewRuleAdded) {
|
|
5006
|
+
andElem.checked = false;
|
|
5007
|
+
andElem.disabled = true;
|
|
5008
|
+
orElem.checked = false;
|
|
5009
|
+
orElem.disabled = true;
|
|
5010
|
+
if (rules) {
|
|
5011
|
+
orElem.nextElementSibling.classList.add('e-btn-disable');
|
|
5012
|
+
andElem.nextElementSibling.classList.add('e-btn-disable');
|
|
5013
|
+
}
|
|
4073
5014
|
}
|
|
4074
5015
|
}
|
|
4075
5016
|
}
|
|
@@ -4173,7 +5114,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4173
5114
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
4174
5115
|
rule.custom = customObj;
|
|
4175
5116
|
}
|
|
4176
|
-
if (rule.rules.length === 0) {
|
|
5117
|
+
if (rule.rules && rule.rules.length === 0) {
|
|
4177
5118
|
rule = {};
|
|
4178
5119
|
}
|
|
4179
5120
|
}
|
|
@@ -4242,7 +5183,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4242
5183
|
var rule = this.getParentGroup(groupElem);
|
|
4243
5184
|
while (ruleElem.previousElementSibling !== null) {
|
|
4244
5185
|
ruleElem = ruleElem.previousElementSibling;
|
|
4245
|
-
|
|
5186
|
+
if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
|
|
5187
|
+
((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
|
|
5188
|
+
this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
|
|
5189
|
+
ruleElem.classList.contains('e-group-container'))))) {
|
|
5190
|
+
index++;
|
|
5191
|
+
}
|
|
4246
5192
|
}
|
|
4247
5193
|
return rule.rules[index];
|
|
4248
5194
|
};
|
|
@@ -4652,13 +5598,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4652
5598
|
if (value.indexOf(':') > -1 && (value.indexOf('/') < 0 && value.indexOf(',') < 0
|
|
4653
5599
|
&& value.indexOf('-') < 0)) {
|
|
4654
5600
|
currDate = new Date();
|
|
4655
|
-
|
|
4656
|
-
currDate.
|
|
4657
|
-
// eslint-disable-next-line
|
|
4658
|
-
currDate.setMinutes(parseInt(value.split(':')[1]));
|
|
5601
|
+
currDate.setHours(parseInt(value.split(':')[0], 10));
|
|
5602
|
+
currDate.setMinutes(parseInt(value.split(':')[1], 10));
|
|
4659
5603
|
if (value.split(':')[2]) {
|
|
4660
|
-
|
|
4661
|
-
currDate.setSeconds(parseInt(value.split(':')[2]));
|
|
5604
|
+
currDate.setSeconds(parseInt(value.split(':')[2], 10));
|
|
4662
5605
|
}
|
|
4663
5606
|
}
|
|
4664
5607
|
return currDate;
|
|
@@ -4674,17 +5617,43 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4674
5617
|
parentElem = this.renderGroup(rule, rule.condition, parentElem, not);
|
|
4675
5618
|
}
|
|
4676
5619
|
else {
|
|
4677
|
-
if (rule.rules.length > 1 && !this.headerTemplate) {
|
|
5620
|
+
if (rule.rules && rule.rules.length > 1 && !this.headerTemplate) {
|
|
4678
5621
|
// enable/disable conditions when rule group is added
|
|
4679
5622
|
var orElem = parentElem.querySelector('.e-btngroup-or');
|
|
4680
5623
|
var andElem = parentElem.querySelector('.e-btngroup-and');
|
|
5624
|
+
if (this.enableSeparateConnector && parentElem.previousElementSibling) {
|
|
5625
|
+
orElem = parentElem.previousElementSibling.querySelector('.e-btngroup-or');
|
|
5626
|
+
andElem = parentElem.previousElementSibling.querySelector('.e-btngroup-and');
|
|
5627
|
+
}
|
|
4681
5628
|
orElem.disabled = false;
|
|
4682
5629
|
andElem.disabled = false;
|
|
4683
|
-
if (
|
|
4684
|
-
|
|
5630
|
+
if (this.enableSeparateConnector) {
|
|
5631
|
+
var elem = parentElem.previousElementSibling;
|
|
5632
|
+
while (elem && !elem.classList.contains('e-rule-container')) {
|
|
5633
|
+
if (elem.classList.contains('e-group-container')) {
|
|
5634
|
+
elem = elem.querySelectorAll('.e-rule-container')[elem.querySelectorAll('.e-rule-container').length - 1];
|
|
5635
|
+
break;
|
|
5636
|
+
}
|
|
5637
|
+
elem = elem.previousElementSibling;
|
|
5638
|
+
}
|
|
5639
|
+
if (elem && elem.classList.contains('e-rule-container')) {
|
|
5640
|
+
var ruleID = elem.id.replace(this.element.id + '_', '');
|
|
5641
|
+
var prevRule = this.getRule(ruleID);
|
|
5642
|
+
if (prevRule.condition === 'or') {
|
|
5643
|
+
orElem.checked = true;
|
|
5644
|
+
}
|
|
5645
|
+
else {
|
|
5646
|
+
andElem.checked = true;
|
|
5647
|
+
}
|
|
5648
|
+
}
|
|
4685
5649
|
}
|
|
4686
5650
|
else {
|
|
4687
|
-
|
|
5651
|
+
if (rule.condition === 'or') {
|
|
5652
|
+
orElem.checked = true;
|
|
5653
|
+
}
|
|
5654
|
+
else {
|
|
5655
|
+
andElem.checked = true;
|
|
5656
|
+
}
|
|
4688
5657
|
}
|
|
4689
5658
|
}
|
|
4690
5659
|
else {
|
|
@@ -4704,7 +5673,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4704
5673
|
}
|
|
4705
5674
|
}
|
|
4706
5675
|
}
|
|
4707
|
-
if (rule.rules.length === 0 && this.headerTemplate) {
|
|
5676
|
+
if (rule.rules && rule.rules.length === 0 && this.headerTemplate) {
|
|
4708
5677
|
rule.rules[0] = { 'label': '', 'field': '', 'operator': '', 'type': '', 'value': '' };
|
|
4709
5678
|
}
|
|
4710
5679
|
var ruleColl = rule.rules;
|
|
@@ -4725,10 +5694,6 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4725
5694
|
var lockGrpTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-grp-btn');
|
|
4726
5695
|
this.groupLock(lockGrpTarget);
|
|
4727
5696
|
}
|
|
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
5697
|
}
|
|
4733
5698
|
}
|
|
4734
5699
|
if (parentElem) {
|
|
@@ -4746,7 +5711,17 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4746
5711
|
if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isMiddleGroup) {
|
|
4747
5712
|
this.isMiddleGroup = false;
|
|
4748
5713
|
this.cloneGrpBtnClick = false;
|
|
4749
|
-
|
|
5714
|
+
var index = 0;
|
|
5715
|
+
var tempGroupIndex = this.groupIndex + 1;
|
|
5716
|
+
if (this.enableSeparateConnector) {
|
|
5717
|
+
for (var i = 0; i < tempGroupIndex; i++) {
|
|
5718
|
+
if (cloneElem[i].classList.contains('e-rule-container')) {
|
|
5719
|
+
tempGroupIndex++;
|
|
5720
|
+
index++;
|
|
5721
|
+
}
|
|
5722
|
+
}
|
|
5723
|
+
}
|
|
5724
|
+
return cloneElem[this.groupIndex + index + 1]; // group added in the middle
|
|
4750
5725
|
}
|
|
4751
5726
|
else if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isLastGroup) {
|
|
4752
5727
|
this.isLastGroup = false;
|
|
@@ -4915,6 +5890,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4915
5890
|
for (var j = 0, jLen = rules.rules.length; j < jLen; j++) {
|
|
4916
5891
|
if (rules.rules[j].rules) {
|
|
4917
5892
|
queryStr = this.getSqlString(rules.rules[j], enableEscape, queryStr, sqlLocale);
|
|
5893
|
+
if (this.enableSeparateConnector) {
|
|
5894
|
+
condition = rules.rules[j].condition;
|
|
5895
|
+
}
|
|
4918
5896
|
}
|
|
4919
5897
|
else {
|
|
4920
5898
|
var rule = rules.rules[j];
|
|
@@ -5006,8 +5984,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5006
5984
|
if (condition === '' || (rule && rule.condition !== '' && rule.custom && rule.custom.isCustom)) {
|
|
5007
5985
|
condition = rule.condition;
|
|
5008
5986
|
}
|
|
5009
|
-
|
|
5010
|
-
|
|
5987
|
+
if (condition) {
|
|
5988
|
+
condition = sqlLocale ? this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();
|
|
5989
|
+
queryStr += ' ' + condition + ' ';
|
|
5990
|
+
}
|
|
5011
5991
|
}
|
|
5012
5992
|
}
|
|
5013
5993
|
}
|
|
@@ -5073,12 +6053,19 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5073
6053
|
* @returns {ParameterizedSql} – Parameterized SQL query from rules.
|
|
5074
6054
|
*/
|
|
5075
6055
|
QueryBuilder.prototype.getParameterizedSql = function (rule) {
|
|
5076
|
-
|
|
5077
|
-
|
|
6056
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6057
|
+
if (this.moduleLoader.loadedModules.length) {
|
|
6058
|
+
if (!rule) {
|
|
6059
|
+
rule = this.getValidRules();
|
|
6060
|
+
}
|
|
6061
|
+
var obj = { sql: null };
|
|
6062
|
+
this.notify('query-library', { prop: 'getParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
|
|
6063
|
+
return obj['sql'];
|
|
5078
6064
|
}
|
|
5079
|
-
|
|
5080
|
-
|
|
5081
|
-
|
|
6065
|
+
else {
|
|
6066
|
+
console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
|
|
6067
|
+
}
|
|
6068
|
+
return null;
|
|
5082
6069
|
};
|
|
5083
6070
|
/**
|
|
5084
6071
|
* Sets the rules from the parameter sql query.
|
|
@@ -5087,13 +6074,19 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5087
6074
|
* @returns {void}
|
|
5088
6075
|
*/
|
|
5089
6076
|
QueryBuilder.prototype.setParameterizedSql = function (sqlQuery) {
|
|
5090
|
-
|
|
5091
|
-
this.
|
|
5092
|
-
|
|
5093
|
-
|
|
5094
|
-
sql = sql
|
|
5095
|
-
|
|
5096
|
-
|
|
6077
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6078
|
+
if (this.moduleLoader.loadedModules.length) {
|
|
6079
|
+
var obj = { sql: null };
|
|
6080
|
+
this.notify('query-library', { prop: 'convertParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
|
|
6081
|
+
var sql = obj['sql'];
|
|
6082
|
+
if (sql) {
|
|
6083
|
+
sql = sql.replace(/`/g, '');
|
|
6084
|
+
var ruleModel = this.getRulesFromSql(sql);
|
|
6085
|
+
this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
|
|
6086
|
+
}
|
|
6087
|
+
}
|
|
6088
|
+
else {
|
|
6089
|
+
console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
|
|
5097
6090
|
}
|
|
5098
6091
|
};
|
|
5099
6092
|
/**
|
|
@@ -5103,12 +6096,19 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5103
6096
|
* @returns {ParameterizedNamedSql} – Parameterized Named SQL query from rules.
|
|
5104
6097
|
*/
|
|
5105
6098
|
QueryBuilder.prototype.getParameterizedNamedSql = function (rule) {
|
|
5106
|
-
|
|
5107
|
-
|
|
6099
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6100
|
+
if (this.moduleLoader.loadedModules.length) {
|
|
6101
|
+
if (!rule) {
|
|
6102
|
+
rule = this.getValidRules();
|
|
6103
|
+
}
|
|
6104
|
+
var obj = { sql: null };
|
|
6105
|
+
this.notify('query-library', { prop: 'getNamedParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
|
|
6106
|
+
return obj['sql'];
|
|
5108
6107
|
}
|
|
5109
|
-
|
|
5110
|
-
|
|
5111
|
-
|
|
6108
|
+
else {
|
|
6109
|
+
console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
|
|
6110
|
+
}
|
|
6111
|
+
return null;
|
|
5112
6112
|
};
|
|
5113
6113
|
/**
|
|
5114
6114
|
* Sets the rules from the named parameter SQL query.
|
|
@@ -5117,13 +6117,19 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5117
6117
|
* @returns {void}
|
|
5118
6118
|
*/
|
|
5119
6119
|
QueryBuilder.prototype.setParameterizedNamedSql = function (sqlQuery) {
|
|
5120
|
-
|
|
5121
|
-
this.
|
|
5122
|
-
|
|
5123
|
-
|
|
5124
|
-
sql = sql
|
|
5125
|
-
|
|
5126
|
-
|
|
6120
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6121
|
+
if (this.moduleLoader.loadedModules.length) {
|
|
6122
|
+
var obj = { sql: null };
|
|
6123
|
+
this.notify('query-library', { prop: 'convertNamedParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
|
|
6124
|
+
var sql = obj['sql'];
|
|
6125
|
+
if (sql) {
|
|
6126
|
+
sql = sql.replace(/`/g, '');
|
|
6127
|
+
var ruleModel = this.getRulesFromSql(sql);
|
|
6128
|
+
this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
|
|
6129
|
+
}
|
|
6130
|
+
}
|
|
6131
|
+
else {
|
|
6132
|
+
console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
|
|
5127
6133
|
}
|
|
5128
6134
|
};
|
|
5129
6135
|
/**
|
|
@@ -5134,8 +6140,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5134
6140
|
* @returns {void}
|
|
5135
6141
|
*/
|
|
5136
6142
|
QueryBuilder.prototype.setMongoQuery = function (mongoQuery, mongoLocale) {
|
|
5137
|
-
|
|
5138
|
-
this.
|
|
6143
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6144
|
+
if (this.moduleLoader.loadedModules.length) {
|
|
6145
|
+
this.rule = { condition: 'and', not: false, rules: [] };
|
|
6146
|
+
this.notify('query-library', { prop: 'mongoParser', onPropertyChange: false, value: { mongoQuery: JSON.parse(mongoQuery), rule: this.rule, mongoLocale: mongoLocale } });
|
|
6147
|
+
}
|
|
6148
|
+
else {
|
|
6149
|
+
console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
|
|
6150
|
+
}
|
|
5139
6151
|
};
|
|
5140
6152
|
/**
|
|
5141
6153
|
* Gets the Mongo query from rules.
|
|
@@ -5144,12 +6156,19 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5144
6156
|
* @returns {object} - Sql query from rules.
|
|
5145
6157
|
*/
|
|
5146
6158
|
QueryBuilder.prototype.getMongoQuery = function (rule) {
|
|
5147
|
-
|
|
5148
|
-
|
|
6159
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6160
|
+
if (this.moduleLoader.loadedModules.length) {
|
|
6161
|
+
if (!rule) {
|
|
6162
|
+
rule = this.getValidRules();
|
|
6163
|
+
}
|
|
6164
|
+
var obj = { mongoQuery: null };
|
|
6165
|
+
this.notify('query-library', { prop: 'getMongoFromRules', onPropertyChange: false, value: { rule: rule, mongoQuery: '', obj: obj } });
|
|
6166
|
+
return obj['mongoQuery'];
|
|
6167
|
+
}
|
|
6168
|
+
else {
|
|
6169
|
+
console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
|
|
5149
6170
|
}
|
|
5150
|
-
|
|
5151
|
-
this.notify('query-library', { prop: 'getMongoFromRules', onPropertyChange: false, value: { rule: rule, mongoQuery: '', obj: obj } });
|
|
5152
|
-
return obj['mongoQuery'];
|
|
6171
|
+
return '';
|
|
5153
6172
|
};
|
|
5154
6173
|
/**
|
|
5155
6174
|
* Clones the rule based on the rule ID to the specific group.
|
|
@@ -5168,7 +6187,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5168
6187
|
this.showButtons.cloneRule = true;
|
|
5169
6188
|
this.addRules([{
|
|
5170
6189
|
'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
|
|
5171
|
-
'value': getRule.value
|
|
6190
|
+
'value': getRule.value, 'condition': getRule.condition
|
|
5172
6191
|
}], groupID);
|
|
5173
6192
|
this.ruleIndex = -1;
|
|
5174
6193
|
this.cloneRuleBtnClick = false;
|
|
@@ -5257,8 +6276,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5257
6276
|
var matchValue;
|
|
5258
6277
|
for (var i = 0, iLen = operators.length; i < iLen; i++) {
|
|
5259
6278
|
regexStr = /^\w+$/.test(operators[i]) ? '\\b' : '';
|
|
5260
|
-
// eslint-disable-next-line
|
|
5261
|
-
|
|
6279
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6280
|
+
var regExp = RegExp;
|
|
6281
|
+
regex = new regExp('^(' + operators[i] + ')' + regexStr, 'ig');
|
|
5262
6282
|
if (regex.exec(sqlString)) {
|
|
5263
6283
|
this.parser.push(['Operators', operators[i].toLowerCase()]);
|
|
5264
6284
|
return operators[i].length;
|
|
@@ -5268,8 +6288,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5268
6288
|
if (!lastPasrser || (lastPasrser && lastPasrser[0] !== 'Literal')) {
|
|
5269
6289
|
for (var i = 0, iLen = conditions.length; i < iLen; i++) {
|
|
5270
6290
|
regexStr = /^\w+$/.test(conditions[i]) ? '\\b' : '';
|
|
5271
|
-
// eslint-disable-next-line
|
|
5272
|
-
|
|
6291
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6292
|
+
var regExp = RegExp;
|
|
6293
|
+
regex = new regExp('^(' + conditions[i] + ')' + regexStr, 'ig');
|
|
5273
6294
|
if (regex.exec(sqlString)) {
|
|
5274
6295
|
this.parser.push(['Conditions', conditions[i].toLowerCase()]);
|
|
5275
6296
|
return conditions[i].length;
|
|
@@ -5278,8 +6299,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5278
6299
|
}
|
|
5279
6300
|
for (var i = 0, iLen = subOp.length; i < iLen; i++) {
|
|
5280
6301
|
regexStr = /^\w+$/.test(subOp[i]) ? '\\b' : '';
|
|
5281
|
-
// eslint-disable-next-line
|
|
5282
|
-
|
|
6302
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6303
|
+
var regExp = RegExp;
|
|
6304
|
+
regex = new regExp('^(' + subOp[i] + ')' + regexStr, 'ig');
|
|
5283
6305
|
if (regex.exec(sqlString)) {
|
|
5284
6306
|
this.parser.push(['SubOperators', subOp[i].toLowerCase()]);
|
|
5285
6307
|
return subOp[i].length;
|
|
@@ -5307,31 +6329,25 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5307
6329
|
this.parser.push(['String', null]);
|
|
5308
6330
|
return matchValue.length;
|
|
5309
6331
|
}
|
|
5310
|
-
|
|
5311
|
-
|
|
5312
|
-
// eslint-disable-next-line
|
|
5313
|
-
matchValue = /^`?([a-zåäö_][a-z0-9åäö_.\[\]\(\)]{0,}(\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)[1];
|
|
6332
|
+
if (/^`?([a-z_][a-z0-9_.\\[\]\\(\\)]{0,}(\\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)) {
|
|
6333
|
+
matchValue = /^`?([a-z_][a-z0-9_.\\[\]\\(\\)]{0,}(\\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)[1];
|
|
5314
6334
|
this.parser.push(['Literal', matchValue]);
|
|
5315
6335
|
return matchValue.length;
|
|
5316
6336
|
}
|
|
5317
|
-
|
|
5318
|
-
|
|
5319
|
-
// eslint-disable-next-line
|
|
5320
|
-
matchValue = /^'?([a-z_][a-z0-9 _.\[\]\(\)-]{0,}(\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)[1];
|
|
6337
|
+
if (this.checkLiteral() && /^'?([a-z_][a-z0-9 _.\\[\]\\(\\)-]{0,}(\\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)) {
|
|
6338
|
+
matchValue = /^'?([a-z_][a-z0-9 _.\\[\]\\(\\)-]{0,}(\\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)[1];
|
|
5321
6339
|
this.parser.push(['Literal', matchValue]);
|
|
5322
6340
|
return matchValue.length + 2;
|
|
5323
6341
|
}
|
|
5324
6342
|
if (this.checkNumberLiteral(sqlString, sqlLocale)) {
|
|
5325
|
-
|
|
5326
|
-
matchValue = /^[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
|
|
6343
|
+
matchValue = /^[0-9]+(\.[0-9]+)$/.exec(sqlString)[0];
|
|
5327
6344
|
this.parser.push(['Literal', matchValue]);
|
|
5328
6345
|
return matchValue.length;
|
|
5329
6346
|
}
|
|
5330
6347
|
//String
|
|
5331
|
-
|
|
5332
|
-
if (
|
|
5333
|
-
|
|
5334
|
-
matchValue = /^'((?:[^\\']+?|\\.|'')*)'(?!')/.exec(sqlString)[0];
|
|
6348
|
+
var singleString = this.getSingleQuoteString(sqlString);
|
|
6349
|
+
if (singleString !== '') {
|
|
6350
|
+
matchValue = singleString;
|
|
5335
6351
|
if (matchValue[matchValue.length - 2] === '(') {
|
|
5336
6352
|
var isClosed = false;
|
|
5337
6353
|
for (var j = matchValue.length; j < sqlString.length; j++) {
|
|
@@ -5346,38 +6362,43 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5346
6362
|
}
|
|
5347
6363
|
else if (sqlString[matchValue.length] && (sqlString[matchValue.length] !== ')') &&
|
|
5348
6364
|
!this.checkCondition(sqlString, matchValue)) {
|
|
5349
|
-
matchValue = this.
|
|
6365
|
+
matchValue = this.combineSingleQuoteString(sqlString, matchValue);
|
|
5350
6366
|
}
|
|
5351
6367
|
// end
|
|
5352
6368
|
this.parser.push(['String', matchValue]);
|
|
5353
6369
|
return matchValue.length;
|
|
5354
6370
|
}
|
|
5355
6371
|
// Double String
|
|
5356
|
-
|
|
5357
|
-
if (
|
|
5358
|
-
|
|
5359
|
-
matchValue = /^"([^\\"]*(?:\\.[^\\"]*)*)"/.exec(sqlString)[0];
|
|
6372
|
+
var doubleString = this.getDoubleQuoteString(sqlString);
|
|
6373
|
+
if (doubleString !== '') {
|
|
6374
|
+
matchValue = doubleString;
|
|
5360
6375
|
this.parser.push(['DoubleString', matchValue]);
|
|
5361
6376
|
return matchValue.length;
|
|
5362
6377
|
}
|
|
5363
6378
|
//Number
|
|
5364
|
-
|
|
5365
|
-
|
|
5366
|
-
// eslint-disable-next-line
|
|
5367
|
-
matchValue = /^[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
|
|
6379
|
+
if (/^\d*\.?\d+/.exec(sqlString)) {
|
|
6380
|
+
matchValue = /^\d*\.?\d+/.exec(sqlString)[0];
|
|
5368
6381
|
this.parser.push(['Number', matchValue]);
|
|
5369
6382
|
return matchValue.length;
|
|
5370
6383
|
}
|
|
5371
6384
|
//Negative Number
|
|
5372
|
-
|
|
5373
|
-
|
|
5374
|
-
// eslint-disable-next-line
|
|
5375
|
-
matchValue = /^-?[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
|
|
6385
|
+
if (/^-?\d*\.?\d+/.exec(sqlString)) {
|
|
6386
|
+
matchValue = /^-?\d*\.?\d+/.exec(sqlString)[0];
|
|
5376
6387
|
this.parser.push(['Number', matchValue]);
|
|
5377
6388
|
return matchValue.length;
|
|
5378
6389
|
}
|
|
5379
6390
|
return 1;
|
|
5380
6391
|
};
|
|
6392
|
+
QueryBuilder.prototype.getDoubleQuoteString = function (sqlString) {
|
|
6393
|
+
var start = sqlString.indexOf('"');
|
|
6394
|
+
if (start === 0) {
|
|
6395
|
+
var end = sqlString.indexOf('"', start + 1);
|
|
6396
|
+
if (end !== -1) {
|
|
6397
|
+
return sqlString.substring(start, end + 1);
|
|
6398
|
+
}
|
|
6399
|
+
}
|
|
6400
|
+
return '';
|
|
6401
|
+
};
|
|
5381
6402
|
QueryBuilder.prototype.checkCondition = function (sqlString, matchValue) {
|
|
5382
6403
|
if (sqlString.slice(matchValue.length + 1, matchValue.length + 4) === 'AND' ||
|
|
5383
6404
|
sqlString.slice(matchValue.length + 1, matchValue.length + 3) === 'OR') {
|
|
@@ -5385,16 +6406,26 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5385
6406
|
}
|
|
5386
6407
|
return false;
|
|
5387
6408
|
};
|
|
5388
|
-
QueryBuilder.prototype.getSingleQuoteString = function (sqlString,
|
|
6409
|
+
QueryBuilder.prototype.getSingleQuoteString = function (sqlString, isBetween) {
|
|
6410
|
+
var start = sqlString.indexOf('\'');
|
|
6411
|
+
if ((start !== -1 && isBetween) || (start === 0 && !isBetween)) {
|
|
6412
|
+
var end = sqlString.indexOf('\'', start + 1);
|
|
6413
|
+
if (end !== -1) {
|
|
6414
|
+
return sqlString.substring(start, end + 1);
|
|
6415
|
+
}
|
|
6416
|
+
}
|
|
6417
|
+
return '';
|
|
6418
|
+
};
|
|
6419
|
+
QueryBuilder.prototype.combineSingleQuoteString = function (sqlString, matchValue) {
|
|
5389
6420
|
if (sqlString[matchValue.length] && (sqlString[matchValue.length] !== ')') &&
|
|
5390
6421
|
!this.checkCondition(sqlString, matchValue) && sqlString[matchValue.length] !== ',') {
|
|
5391
|
-
var
|
|
5392
|
-
|
|
5393
|
-
|
|
5394
|
-
|
|
5395
|
-
var parsedValue =
|
|
6422
|
+
var tempMatchValue = matchValue.substring(0, matchValue.length - 1);
|
|
6423
|
+
var tempStr = sqlString.replace(tempMatchValue, '');
|
|
6424
|
+
var singleString = this.getSingleQuoteString(tempStr, true);
|
|
6425
|
+
if (singleString !== '') {
|
|
6426
|
+
var parsedValue = singleString.substring(1, singleString.length);
|
|
5396
6427
|
matchValue += parsedValue;
|
|
5397
|
-
matchValue = this.
|
|
6428
|
+
matchValue = this.combineSingleQuoteString(sqlString, matchValue);
|
|
5398
6429
|
}
|
|
5399
6430
|
}
|
|
5400
6431
|
return matchValue;
|
|
@@ -5423,8 +6454,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5423
6454
|
return true;
|
|
5424
6455
|
}
|
|
5425
6456
|
else {
|
|
5426
|
-
|
|
5427
|
-
if (/^[0-9]+(\.[0-9]+)?/.exec(sqlString)) {
|
|
6457
|
+
if (/^[0-9]+(?:\.[0-9]+)$/.exec(sqlString)) {
|
|
5428
6458
|
var secParser = this.parser[this.parser.length - 2];
|
|
5429
6459
|
var betweenParser = this.parser[this.parser.length - 3];
|
|
5430
6460
|
if (lastParser[0] === 'Left' && (secParser && secParser[0] === 'Conditions')) {
|
|
@@ -5637,17 +6667,17 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5637
6667
|
strVal = [];
|
|
5638
6668
|
rule.type = this.getTypeFromColumn(rule);
|
|
5639
6669
|
}
|
|
6670
|
+
if (this.enableSeparateConnector && parser[i + 1][0] === 'Conditions') {
|
|
6671
|
+
rule.condition = parser[i + 1][1];
|
|
6672
|
+
}
|
|
5640
6673
|
}
|
|
5641
6674
|
else if (parser[i + 1][0] === 'Operators') {
|
|
5642
6675
|
rule.operator = this.getOperator(parser[i + 2][1], parser[i + 1][1], sqlLocale);
|
|
5643
|
-
|
|
5644
|
-
|
|
5645
|
-
rule.operator = "isempty";
|
|
5646
|
-
isEmptyOper = true;
|
|
6676
|
+
if (rule.operator === 'equal' && parser[i + 2][0] === 'String' && parser[i + 2][1] === '\'\'') {
|
|
6677
|
+
rule.operator = 'isempty';
|
|
5647
6678
|
}
|
|
5648
|
-
else if (rule.operator
|
|
5649
|
-
rule.operator =
|
|
5650
|
-
isEmptyOper = true;
|
|
6679
|
+
else if (rule.operator === 'notequal' && parser[i + 2][0] === 'String' && parser[i + 2][1] === '\'\'') {
|
|
6680
|
+
rule.operator = 'isnotempty';
|
|
5651
6681
|
}
|
|
5652
6682
|
if (parser[i + 2][0] === 'Number') {
|
|
5653
6683
|
rule.type = 'number';
|
|
@@ -5661,6 +6691,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5661
6691
|
}
|
|
5662
6692
|
rule.value = val;
|
|
5663
6693
|
}
|
|
6694
|
+
if (this.enableSeparateConnector && parser[i + 3][0] === 'Conditions') {
|
|
6695
|
+
rule.condition = parser[i + 3][1];
|
|
6696
|
+
}
|
|
5664
6697
|
rule.type = this.getTypeFromColumn(rule);
|
|
5665
6698
|
}
|
|
5666
6699
|
rules.rules.push(rule);
|
|
@@ -5688,7 +6721,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5688
6721
|
subRules = this.processParser(this.parser, subRules, levelColl, sqlLocale);
|
|
5689
6722
|
return rules;
|
|
5690
6723
|
}
|
|
5691
|
-
else if (parser[i][0] === 'Conditions') {
|
|
6724
|
+
else if (parser[i][0] === 'Conditions' && !this.enableSeparateConnector) {
|
|
5692
6725
|
if (parser[i][1] === 'not' || (sqlLocale && this.l10n.getConstant('NOT').toLowerCase() === parser[i][1])) {
|
|
5693
6726
|
rules.not = true;
|
|
5694
6727
|
}
|
|
@@ -5709,27 +6742,6 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5709
6742
|
}
|
|
5710
6743
|
return rules;
|
|
5711
6744
|
};
|
|
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
6745
|
/**
|
|
5734
6746
|
* Clone the Group
|
|
5735
6747
|
*
|
|
@@ -5764,8 +6776,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5764
6776
|
this.ruleIndex = i;
|
|
5765
6777
|
}
|
|
5766
6778
|
}
|
|
5767
|
-
this.
|
|
5768
|
-
|
|
6779
|
+
if (this.enableSeparateConnector) {
|
|
6780
|
+
this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
|
|
6781
|
+
'value': getRule.value, 'condition': getRule.condition }], groupId);
|
|
6782
|
+
}
|
|
6783
|
+
else {
|
|
6784
|
+
this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
|
|
6785
|
+
'value': getRule.value }], groupId);
|
|
6786
|
+
}
|
|
5769
6787
|
this.ruleIndex = -1;
|
|
5770
6788
|
};
|
|
5771
6789
|
QueryBuilder.prototype.ruleLock = function (target) {
|
|
@@ -5866,6 +6884,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5866
6884
|
var lockElem = groupElem.querySelectorAll('.e-lock-grp-btn');
|
|
5867
6885
|
var cloneElem = groupElem.querySelectorAll('.e-clone-grp-btn');
|
|
5868
6886
|
var groupContElem = groupElem.querySelectorAll('.e-group-container');
|
|
6887
|
+
var addCondition = groupElem.querySelectorAll('.e-add-condition-btn');
|
|
6888
|
+
var addGroup = groupElem.querySelectorAll('.e-add-group-btn');
|
|
5869
6889
|
for (var i = 0; i < andElem.length; i++) {
|
|
5870
6890
|
if (isDisabled) {
|
|
5871
6891
|
if (groupContElem[i] && groupContElem[i].classList.contains('e-disable')) {
|
|
@@ -5873,7 +6893,15 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5873
6893
|
}
|
|
5874
6894
|
andElem[i].disabled = true;
|
|
5875
6895
|
orElem[i].disabled = true;
|
|
5876
|
-
addElem[i]
|
|
6896
|
+
if (addElem[i]) {
|
|
6897
|
+
addElem[i].disabled = true;
|
|
6898
|
+
}
|
|
6899
|
+
if (addCondition[i]) {
|
|
6900
|
+
addCondition[i].disabled = true;
|
|
6901
|
+
}
|
|
6902
|
+
if (addGroup[i]) {
|
|
6903
|
+
addGroup[i].disabled = true;
|
|
6904
|
+
}
|
|
5877
6905
|
if (notElem[i]) {
|
|
5878
6906
|
notElem[i].disabled = true;
|
|
5879
6907
|
}
|
|
@@ -5884,7 +6912,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5884
6912
|
cloneElem[i].disabled = true;
|
|
5885
6913
|
}
|
|
5886
6914
|
andElem[i].parentElement.classList.add('e-disabled');
|
|
5887
|
-
if (lockElem[i] !== target) {
|
|
6915
|
+
if (lockElem[i] && lockElem[i] !== target) {
|
|
5888
6916
|
lockElem[i].disabled = true;
|
|
5889
6917
|
lockElem[i].children[0].classList.remove('e-unlock');
|
|
5890
6918
|
lockElem[i].children[0].classList.add('e-lock');
|
|
@@ -5896,8 +6924,18 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5896
6924
|
}
|
|
5897
6925
|
andElem[i].disabled = false;
|
|
5898
6926
|
orElem[i].disabled = false;
|
|
5899
|
-
addElem[i]
|
|
5900
|
-
|
|
6927
|
+
if (addElem[i]) {
|
|
6928
|
+
addElem[i].disabled = false;
|
|
6929
|
+
}
|
|
6930
|
+
if (addCondition[i]) {
|
|
6931
|
+
addCondition[i].disabled = false;
|
|
6932
|
+
}
|
|
6933
|
+
if (addGroup[i]) {
|
|
6934
|
+
addGroup[i].disabled = false;
|
|
6935
|
+
}
|
|
6936
|
+
if (lockElem[i]) {
|
|
6937
|
+
lockElem[i].disabled = false;
|
|
6938
|
+
}
|
|
5901
6939
|
if (notElem[i]) {
|
|
5902
6940
|
notElem[i].disabled = false;
|
|
5903
6941
|
}
|
|
@@ -5908,8 +6946,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5908
6946
|
cloneElem[i].disabled = false;
|
|
5909
6947
|
}
|
|
5910
6948
|
andElem[i].parentElement.classList.remove('e-disabled');
|
|
5911
|
-
lockElem[i]
|
|
5912
|
-
|
|
6949
|
+
if (lockElem[i]) {
|
|
6950
|
+
lockElem[i].children[0].classList.remove('e-lock');
|
|
6951
|
+
}
|
|
6952
|
+
if (lockElem[i]) {
|
|
6953
|
+
lockElem[i].children[0].classList.add('e-unlock');
|
|
6954
|
+
}
|
|
5913
6955
|
}
|
|
5914
6956
|
}
|
|
5915
6957
|
this.disableRuleControls(target, groupElem, isDisabled);
|
|
@@ -6043,6 +7085,15 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
6043
7085
|
__decorate([
|
|
6044
7086
|
Event()
|
|
6045
7087
|
], QueryBuilder.prototype, "ruleChange", void 0);
|
|
7088
|
+
__decorate([
|
|
7089
|
+
Event()
|
|
7090
|
+
], QueryBuilder.prototype, "dragStart", void 0);
|
|
7091
|
+
__decorate([
|
|
7092
|
+
Event()
|
|
7093
|
+
], QueryBuilder.prototype, "drag", void 0);
|
|
7094
|
+
__decorate([
|
|
7095
|
+
Event()
|
|
7096
|
+
], QueryBuilder.prototype, "drop", void 0);
|
|
6046
7097
|
__decorate([
|
|
6047
7098
|
Complex({}, ShowButtons)
|
|
6048
7099
|
], QueryBuilder.prototype, "showButtons", void 0);
|
|
@@ -6118,9 +7169,15 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
6118
7169
|
__decorate([
|
|
6119
7170
|
Property('')
|
|
6120
7171
|
], QueryBuilder.prototype, "separator", void 0);
|
|
7172
|
+
__decorate([
|
|
7173
|
+
Property(false)
|
|
7174
|
+
], QueryBuilder.prototype, "enableSeparateConnector", void 0);
|
|
6121
7175
|
__decorate([
|
|
6122
7176
|
Complex({ condition: 'and', rules: [] }, Rule)
|
|
6123
7177
|
], QueryBuilder.prototype, "rule", void 0);
|
|
7178
|
+
__decorate([
|
|
7179
|
+
Property(false)
|
|
7180
|
+
], QueryBuilder.prototype, "allowDragAndDrop", void 0);
|
|
6124
7181
|
QueryBuilder = __decorate([
|
|
6125
7182
|
NotifyPropertyChanges
|
|
6126
7183
|
], QueryBuilder);
|