@syncfusion/ej2-querybuilder 30.1.42 → 30.2.4
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/aceconfig.js +17 -0
- package/dist/ej2-querybuilder.min.js +2 -2
- package/dist/ej2-querybuilder.umd.min.js +2 -2
- package/dist/ej2-querybuilder.umd.min.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es2015.js +575 -431
- package/dist/es6/ej2-querybuilder.es2015.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es5.js +619 -470
- 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 +7 -7
- package/src/query-builder/query-builder-model.d.ts +4 -4
- package/src/query-builder/query-builder.d.ts +9 -0
- package/src/query-builder/query-builder.js +618 -468
|
@@ -233,37 +233,71 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
233
233
|
QueryBuilder.prototype.reset = function () {
|
|
234
234
|
this.isImportRules = false;
|
|
235
235
|
var bodyElem = this.element.querySelector('.e-group-body');
|
|
236
|
-
var
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
236
|
+
var inputElements = this.element.querySelectorAll('input.e-control');
|
|
237
|
+
var batchSize = 20;
|
|
238
|
+
var currentIndex = 0;
|
|
239
|
+
var processBatch = function () {
|
|
240
|
+
var endIndex = Math.min(currentIndex + batchSize, inputElements.length);
|
|
241
|
+
for (var i = currentIndex; i < endIndex; i++) {
|
|
242
|
+
var element = inputElements[i];
|
|
243
|
+
try {
|
|
244
|
+
if (element.className.indexOf('e-tooltip') > -1) {
|
|
245
|
+
var tooltip = getComponent(element, 'tooltip');
|
|
246
|
+
if (tooltip) {
|
|
247
|
+
tooltip.destroy();
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
else if (element.parentElement && element.parentElement.className.indexOf('e-tooltip') > -1) {
|
|
251
|
+
var tooltip = getComponent(element.parentElement, 'tooltip');
|
|
252
|
+
if (tooltip) {
|
|
253
|
+
tooltip.destroy();
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
catch (e) {
|
|
258
|
+
console.warn('Error destroying tooltip:', e);
|
|
259
|
+
}
|
|
240
260
|
}
|
|
241
|
-
|
|
242
|
-
|
|
261
|
+
currentIndex = endIndex;
|
|
262
|
+
if (currentIndex < inputElements.length) {
|
|
263
|
+
requestAnimationFrame(processBatch);
|
|
243
264
|
}
|
|
265
|
+
};
|
|
266
|
+
if (inputElements.length > 0) {
|
|
267
|
+
processBatch();
|
|
244
268
|
}
|
|
245
269
|
if (bodyElem) {
|
|
246
|
-
bodyElem.
|
|
270
|
+
bodyElem.textContent = '';
|
|
247
271
|
}
|
|
248
272
|
else {
|
|
273
|
+
var fragment = document.createDocumentFragment();
|
|
249
274
|
var grpContainer = this.createElement('div', { attrs: { class: 'e-group-container' } });
|
|
250
275
|
var grpHeader = this.createElement('div', { attrs: { class: 'e-group-header' } });
|
|
251
276
|
var grpBody = this.createElement('div', { attrs: { class: 'e-group-body' } });
|
|
252
|
-
grpContainer.appendChild(grpHeader)
|
|
253
|
-
|
|
277
|
+
grpContainer.appendChild(grpHeader);
|
|
278
|
+
grpContainer.appendChild(grpBody);
|
|
279
|
+
fragment.appendChild(grpContainer);
|
|
280
|
+
this.element.appendChild(fragment);
|
|
254
281
|
bodyElem = this.element.querySelector('.e-group-body');
|
|
255
282
|
}
|
|
256
283
|
if (this.headerTemplate && this.isRoot) {
|
|
257
|
-
this.element.
|
|
284
|
+
this.element.textContent = '';
|
|
258
285
|
this.isRoot = false;
|
|
259
286
|
}
|
|
260
287
|
if (this.enableNotCondition) {
|
|
261
|
-
|
|
288
|
+
var toggleElements = this.element.querySelectorAll('.e-qb-toggle');
|
|
289
|
+
for (var i = 0; i < toggleElements.length; i++) {
|
|
290
|
+
removeClass([toggleElements[i]], 'e-active-toggle');
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
if (bodyElem) {
|
|
294
|
+
bodyElem.appendChild(this.createElement('div', { attrs: { class: 'e-rule-list' } }));
|
|
262
295
|
}
|
|
263
|
-
bodyElem.appendChild(this.createElement('div', { attrs: { class: 'e-rule-list' } }));
|
|
264
296
|
this.levelColl[this.element.id + '_group0'] = [0];
|
|
265
297
|
this.setProperties({ rule: { condition: 'and', not: false, rules: [] } }, true);
|
|
266
|
-
|
|
298
|
+
if (bodyElem && bodyElem.parentElement) {
|
|
299
|
+
this.disableRuleCondition(bodyElem.parentElement);
|
|
300
|
+
}
|
|
267
301
|
};
|
|
268
302
|
QueryBuilder.prototype.getWrapper = function () {
|
|
269
303
|
return this.element;
|
|
@@ -286,100 +320,131 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
286
320
|
return '';
|
|
287
321
|
};
|
|
288
322
|
QueryBuilder.prototype.initialize = function () {
|
|
323
|
+
var _this = this;
|
|
289
324
|
if (this.dataColl.length) {
|
|
290
|
-
var
|
|
325
|
+
var columnKeys_1 = Object.keys(this.dataColl[0]);
|
|
291
326
|
var cols = [];
|
|
292
|
-
var
|
|
293
|
-
var
|
|
294
|
-
var
|
|
295
|
-
var
|
|
296
|
-
var
|
|
297
|
-
var
|
|
327
|
+
var categories_1 = [];
|
|
328
|
+
var type_1;
|
|
329
|
+
var groupBy_1 = false;
|
|
330
|
+
var isDate_1 = false;
|
|
331
|
+
var value_1;
|
|
332
|
+
var validateObj_1 = { isRequired: true, min: 0, max: Number.MAX_VALUE };
|
|
298
333
|
if (this.columns.length) {
|
|
299
334
|
this.columnSort();
|
|
300
335
|
var columns = this.columns;
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
if (!
|
|
304
|
-
if (
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
if (
|
|
308
|
-
|
|
336
|
+
columns.forEach(function (column) {
|
|
337
|
+
_this.updateCustomOperator(column, 'initial');
|
|
338
|
+
if (!column.type) {
|
|
339
|
+
if (columnKeys_1.indexOf(column.field) > -1) {
|
|
340
|
+
value_1 = _this.dataColl[0][column.field];
|
|
341
|
+
type_1 = typeof value_1;
|
|
342
|
+
if (type_1 === 'string') {
|
|
343
|
+
isDate_1 = !isNaN(Date.parse(value_1));
|
|
309
344
|
}
|
|
310
|
-
else if (
|
|
311
|
-
|
|
312
|
-
|
|
345
|
+
else if (type_1 === 'object') {
|
|
346
|
+
isDate_1 = value_1 instanceof Date && !isNaN(value_1.getTime());
|
|
347
|
+
type_1 = 'string';
|
|
313
348
|
}
|
|
314
|
-
|
|
315
|
-
|
|
349
|
+
column.type = type_1;
|
|
350
|
+
isDate_1 = false;
|
|
316
351
|
}
|
|
317
|
-
|
|
352
|
+
type_1 = 'string';
|
|
318
353
|
}
|
|
319
|
-
if (!
|
|
320
|
-
|
|
354
|
+
if (!column.validation) {
|
|
355
|
+
column.validation = validateObj_1;
|
|
321
356
|
}
|
|
322
|
-
if (
|
|
323
|
-
|
|
357
|
+
if (column.category) {
|
|
358
|
+
groupBy_1 = true;
|
|
324
359
|
}
|
|
325
360
|
else {
|
|
326
|
-
|
|
361
|
+
column.category = _this.l10n.getConstant('OtherFields');
|
|
327
362
|
}
|
|
328
|
-
if (
|
|
329
|
-
|
|
363
|
+
if (categories_1.indexOf(column.category) < 0) {
|
|
364
|
+
categories_1.push(column.category);
|
|
330
365
|
}
|
|
331
|
-
if (!
|
|
332
|
-
(
|
|
333
|
-
|
|
366
|
+
if (!column.operators ||
|
|
367
|
+
(_this.isLocale && _this.isCustomOprCols.indexOf(column.field) === -1)) {
|
|
368
|
+
column.operators = _this.customOperators[column.type + 'Operator'];
|
|
334
369
|
}
|
|
335
|
-
}
|
|
336
|
-
if (
|
|
370
|
+
});
|
|
371
|
+
if (groupBy_1 && (categories_1.length > 1 || categories_1[0] !== this.l10n.getConstant('OtherFields'))) {
|
|
337
372
|
this.fields = { text: 'label', value: 'field', groupBy: 'category' };
|
|
338
373
|
}
|
|
339
374
|
this.updateSubFieldsFromColumns(this.columns);
|
|
340
375
|
}
|
|
341
376
|
else {
|
|
342
|
-
for (var i = 0, len =
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
if (
|
|
346
|
-
|
|
347
|
-
}
|
|
348
|
-
else if (
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
}
|
|
352
|
-
cols[i] = {
|
|
353
|
-
'
|
|
354
|
-
|
|
377
|
+
for (var i = 0, len = columnKeys_1.length; i < len; i++) {
|
|
378
|
+
value_1 = this.dataColl[0][columnKeys_1[i]];
|
|
379
|
+
type_1 = typeof value_1;
|
|
380
|
+
if (type_1 === 'string') {
|
|
381
|
+
isDate_1 = !isNaN(Date.parse(value_1));
|
|
382
|
+
}
|
|
383
|
+
else if (type_1 === 'object' && !Object.keys(value_1).length) {
|
|
384
|
+
isDate_1 = value_1 instanceof Date && !isNaN(value_1.getTime());
|
|
385
|
+
type_1 = 'string';
|
|
386
|
+
}
|
|
387
|
+
cols[i] = {
|
|
388
|
+
'field': columnKeys_1[i], 'label': columnKeys_1[i], 'type': isDate_1 ? 'date' : type_1,
|
|
389
|
+
'validation': validateObj_1
|
|
390
|
+
};
|
|
391
|
+
isDate_1 = false;
|
|
355
392
|
cols[i].operators = this.customOperators[cols[i].type + 'Operator'];
|
|
356
|
-
if (
|
|
357
|
-
this.updateSubFields(
|
|
393
|
+
if (type_1 === 'object') {
|
|
394
|
+
this.updateSubFields(value_1, cols[i]);
|
|
358
395
|
}
|
|
359
396
|
}
|
|
360
397
|
this.columns = cols;
|
|
361
398
|
}
|
|
362
399
|
}
|
|
363
400
|
else if (this.columns && this.columns.length) {
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
401
|
+
if (this.sortDirection !== 'Default') {
|
|
402
|
+
this.columnSort();
|
|
403
|
+
}
|
|
404
|
+
this.processColumnsInBatches();
|
|
405
|
+
if (this.columns.length > 50) {
|
|
406
|
+
setTimeout(function () {
|
|
407
|
+
_this.updateSubFieldsFromColumns(_this.columns);
|
|
408
|
+
}, 0);
|
|
409
|
+
}
|
|
410
|
+
else {
|
|
411
|
+
this.updateSubFieldsFromColumns(this.columns);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
this.trigger('dataBound', { type: 'dataBound' });
|
|
415
|
+
};
|
|
416
|
+
QueryBuilder.prototype.processColumnsInBatches = function () {
|
|
417
|
+
var _this = this;
|
|
418
|
+
var columns = this.columns;
|
|
419
|
+
var batchSize = 10;
|
|
420
|
+
var processedCount = 0;
|
|
421
|
+
var processBatch = function () {
|
|
422
|
+
var endIdx = Math.min(processedCount + batchSize, columns.length);
|
|
423
|
+
for (var i = processedCount; i < endIdx; i++) {
|
|
424
|
+
if (columns[i].category && columns[i].category !== _this.l10n.getConstant('OtherFields')) {
|
|
425
|
+
_this.fields = { text: 'label', value: 'field', groupBy: 'category' };
|
|
368
426
|
}
|
|
369
427
|
else {
|
|
370
|
-
columns[i].category =
|
|
428
|
+
columns[i].category = _this.l10n.getConstant('OtherFields');
|
|
371
429
|
}
|
|
372
|
-
|
|
430
|
+
_this.updateCustomOperator(columns[i], 'initial');
|
|
373
431
|
if (!columns[i].operators ||
|
|
374
|
-
(
|
|
375
|
-
columns[i].operators =
|
|
432
|
+
(_this.isLocale && _this.isCustomOprCols.indexOf(columns[i].field) === -1)) {
|
|
433
|
+
columns[i].operators = _this.customOperators[columns[i].type + 'Operator'];
|
|
376
434
|
}
|
|
377
435
|
}
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
436
|
+
processedCount = endIdx;
|
|
437
|
+
if (processedCount < columns.length) {
|
|
438
|
+
requestAnimationFrame(processBatch);
|
|
439
|
+
}
|
|
440
|
+
};
|
|
441
|
+
processBatch();
|
|
381
442
|
};
|
|
382
443
|
QueryBuilder.prototype.updateSubFieldsFromColumns = function (col, field) {
|
|
444
|
+
if (col.length > 50) {
|
|
445
|
+
this.updateSubFieldsLarge(col, field);
|
|
446
|
+
return;
|
|
447
|
+
}
|
|
383
448
|
for (var i = 0; i < col.length; i++) {
|
|
384
449
|
if (this.separator !== '' && col[i].field.indexOf(this.separator) < 0) {
|
|
385
450
|
col[i].field = field ? field + this.separator + col[i].field : col[i].field;
|
|
@@ -396,6 +461,39 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
396
461
|
}
|
|
397
462
|
}
|
|
398
463
|
};
|
|
464
|
+
QueryBuilder.prototype.updateSubFieldsLarge = function (col, field) {
|
|
465
|
+
var _this = this;
|
|
466
|
+
var i = 0;
|
|
467
|
+
var colLength = col.length;
|
|
468
|
+
var processNextBatch = function () {
|
|
469
|
+
var endIdx = Math.min(i + 10, colLength);
|
|
470
|
+
for (; i < endIdx; i++) {
|
|
471
|
+
if (_this.separator !== '' && col[i].field.indexOf(_this.separator) < 0) {
|
|
472
|
+
col[i].field = field ? field + _this.separator + col[i].field : col[i].field;
|
|
473
|
+
}
|
|
474
|
+
if (col[i].operators) {
|
|
475
|
+
_this.updateCustomOperator(col[i]);
|
|
476
|
+
}
|
|
477
|
+
else if (col[i].type && col[i].type !== 'object') {
|
|
478
|
+
col[i].operators = _this.customOperators[col[i].type + 'Operator'];
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
if (i < colLength) {
|
|
482
|
+
requestAnimationFrame(processNextBatch);
|
|
483
|
+
}
|
|
484
|
+
else {
|
|
485
|
+
setTimeout(function () {
|
|
486
|
+
for (var j = 0; j < colLength; j++) {
|
|
487
|
+
if (col[j].columns) {
|
|
488
|
+
col[j].type = 'object';
|
|
489
|
+
_this.updateSubFieldsFromColumns(col[j].columns, col[j].field);
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
}, 0);
|
|
493
|
+
}
|
|
494
|
+
};
|
|
495
|
+
processNextBatch();
|
|
496
|
+
};
|
|
399
497
|
QueryBuilder.prototype.updateSubFields = function (value, col, data) {
|
|
400
498
|
var sampCol;
|
|
401
499
|
col.columns = [];
|
|
@@ -565,8 +663,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
565
663
|
}
|
|
566
664
|
args = { groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase() };
|
|
567
665
|
if (this.enableNotCondition) {
|
|
568
|
-
args = {
|
|
569
|
-
'
|
|
666
|
+
args = {
|
|
667
|
+
groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase(),
|
|
668
|
+
'not': ariaChecked
|
|
669
|
+
};
|
|
570
670
|
}
|
|
571
671
|
}
|
|
572
672
|
if (!this.isImportRules) {
|
|
@@ -664,7 +764,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
664
764
|
QueryBuilder.prototype.appendRuleElem = function (target, column, type, parentId, action, rule) {
|
|
665
765
|
var ruleElem;
|
|
666
766
|
var elem;
|
|
667
|
-
var ruleListElem = target.querySelector('.e-rule-list');
|
|
767
|
+
var ruleListElem = target && target.querySelector('.e-rule-list');
|
|
668
768
|
var args;
|
|
669
769
|
if (type === 'change') {
|
|
670
770
|
ruleElem = select('#' + parentId, target);
|
|
@@ -791,7 +891,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
791
891
|
}
|
|
792
892
|
};
|
|
793
893
|
QueryBuilder.prototype.addRuleSuccessCallBack = function (args, trgt, rule, col, act, pId, isRlTmp) {
|
|
794
|
-
var
|
|
894
|
+
var _this = this;
|
|
895
|
+
var isVertical = this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical';
|
|
896
|
+
var height = isVertical ? '250px' : '200px';
|
|
795
897
|
var ruleID;
|
|
796
898
|
var column = (rule && rule.field) ? this.getColumn(rule.field) : col ? col : this.columns[0];
|
|
797
899
|
var operators;
|
|
@@ -799,15 +901,26 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
799
901
|
var ruleElem;
|
|
800
902
|
var newRule = { 'label': '', 'field': '', 'type': '', 'operator': '' };
|
|
801
903
|
if (!args.cancel) {
|
|
904
|
+
var fragment = document.createDocumentFragment();
|
|
802
905
|
if (column && column.ruleTemplate && rule.field) {
|
|
803
906
|
this.selectedColumn = column;
|
|
804
907
|
operators = this.selectedColumn.operators;
|
|
805
|
-
newRule = {
|
|
908
|
+
newRule = {
|
|
909
|
+
'label': column.label,
|
|
910
|
+
'field': column.field,
|
|
911
|
+
'type': column.type,
|
|
912
|
+
'operator': operators[0].value
|
|
913
|
+
};
|
|
806
914
|
var passedRule = Object.keys(rule).length ? rule : newRule;
|
|
807
915
|
ruleElem = this.appendRuleElem(trgt, column, act, pId, 'field', passedRule);
|
|
808
|
-
var
|
|
809
|
-
|
|
810
|
-
|
|
916
|
+
var actionArgs = {
|
|
917
|
+
requestType: 'template-initialize',
|
|
918
|
+
ruleID: ruleElem.id,
|
|
919
|
+
action: 'insert-rule',
|
|
920
|
+
fields: this.fields,
|
|
921
|
+
rule: passedRule
|
|
922
|
+
};
|
|
923
|
+
this.trigger('actionBegin', actionArgs);
|
|
811
924
|
}
|
|
812
925
|
else {
|
|
813
926
|
ruleElem = this.appendRuleElem(trgt, column, act, pId, 'field');
|
|
@@ -822,139 +935,30 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
822
935
|
addClass([element], 'e-round');
|
|
823
936
|
addClass([element], 'e-icon-btn');
|
|
824
937
|
element.setAttribute('title', this.l10n.getConstant('DeleteRule'));
|
|
825
|
-
var spanElement = this.createElement('span', {
|
|
826
|
-
|
|
938
|
+
var spanElement = this.createElement('span', {
|
|
939
|
+
attrs: { class: 'e-btn-icon e-icons e-delete-icon' }
|
|
940
|
+
});
|
|
941
|
+
element.appendChild(spanElement);
|
|
827
942
|
}
|
|
828
943
|
if (!this.showButtons.ruleDelete) {
|
|
829
944
|
element.classList.add('e-button-hide');
|
|
830
945
|
}
|
|
831
946
|
}
|
|
832
|
-
|
|
833
|
-
ruleElem.className = 'e-rule-container e-vertical-mode';
|
|
834
|
-
}
|
|
835
|
-
else {
|
|
836
|
-
ruleElem.className = 'e-rule-container e-horizontal-mode';
|
|
837
|
-
}
|
|
947
|
+
ruleElem.className = 'e-rule-container ' + (isVertical ? 'e-vertical-mode' : 'e-horizontal-mode');
|
|
838
948
|
var previousRuleElem = ruleElem.previousElementSibling;
|
|
839
|
-
|
|
840
|
-
var prevRule = void 0;
|
|
841
|
-
var ruleContainer = void 0;
|
|
842
|
-
if (previousRuleElem && previousRuleElem.classList.contains('e-group-container')) {
|
|
843
|
-
ruleContainer = previousRuleElem.querySelectorAll('.e-rule-container');
|
|
844
|
-
previousRuleElem = ruleContainer[ruleContainer.length - 1];
|
|
845
|
-
}
|
|
846
|
-
if (previousRuleElem && previousRuleElem.classList.contains('e-rule-container')) {
|
|
847
|
-
prevRule = this.getRule(previousRuleElem);
|
|
848
|
-
}
|
|
849
|
-
if (this.headerTemplate && previousRuleElem && prevRule) {
|
|
850
|
-
this.headerTemplateFn(previousRuleElem, false, prevRule.condition, prevRule, previousRuleElem.id);
|
|
851
|
-
}
|
|
852
|
-
else if (isNullOrUndefined(previousRuleElem) && ruleElem.id !== this.element.id + '_group0_rule0') {
|
|
853
|
-
var group = ruleElem.closest('.e-group-container');
|
|
854
|
-
if (group && group.previousElementSibling) {
|
|
855
|
-
var prevElem = group.previousElementSibling;
|
|
856
|
-
var prevRuleContainer = prevElem.querySelectorAll('.e-rule-container');
|
|
857
|
-
if (prevElem.classList.contains('e-group-container')) {
|
|
858
|
-
prevElem = prevRuleContainer[prevRuleContainer.length - 1];
|
|
859
|
-
}
|
|
860
|
-
if (prevElem.classList.contains('e-rule-container')) {
|
|
861
|
-
var prevRule_1 = this.getRule(prevElem);
|
|
862
|
-
this.headerTemplateFn(prevElem, false, prevRule_1.condition, prevRule_1, prevElem.id, true);
|
|
863
|
-
}
|
|
864
|
-
}
|
|
865
|
-
else {
|
|
866
|
-
this.headerTemplateFn(ruleElem, false, rule.condition, rule, ruleElem.id, true);
|
|
867
|
-
}
|
|
868
|
-
}
|
|
869
|
-
}
|
|
870
|
-
else {
|
|
871
|
-
if (previousRuleElem && previousRuleElem.className.indexOf('e-rule-container') > -1) {
|
|
872
|
-
if (ruleElem.className.indexOf('e-joined-rule') < 0) {
|
|
873
|
-
ruleElem.className += ' e-joined-rule';
|
|
874
|
-
}
|
|
875
|
-
if (previousRuleElem.className.indexOf('e-prev-joined-rule') < 0) {
|
|
876
|
-
previousRuleElem.className += ' e-prev-joined-rule';
|
|
877
|
-
}
|
|
878
|
-
}
|
|
879
|
-
}
|
|
880
|
-
if (previousRuleElem && previousRuleElem.className.indexOf('e-group-container') > -1 &&
|
|
881
|
-
ruleElem.className.indexOf('e-separate-rule') < 0) {
|
|
882
|
-
ruleElem.className += ' e-separate-rule';
|
|
883
|
-
}
|
|
949
|
+
this.processAdjacentElements(ruleElem, previousRuleElem, rule);
|
|
884
950
|
if (!this.isImportRules) {
|
|
885
951
|
this.updateAddedRule(trgt, rule, newRule, isRlTmp, pId, this.enableSeparateConnector ? true : null);
|
|
886
952
|
}
|
|
953
|
+
var ruleCount = this.rule.rules.length;
|
|
887
954
|
if (!column || (column && !column.ruleTemplate) || !rule.field) {
|
|
888
|
-
if (
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
ddlValue = this.GetRootColumnName(rule.field);
|
|
893
|
-
}
|
|
894
|
-
else if (this.autoSelectField) {
|
|
895
|
-
ddlValue = this.GetRootColumnName(rule.field);
|
|
896
|
-
}
|
|
897
|
-
else {
|
|
898
|
-
ddlValue = this.isImportRules ? this.GetRootColumnName(rule.field) : rule.field;
|
|
899
|
-
}
|
|
900
|
-
ddlField = {
|
|
901
|
-
dataSource: this.columns,
|
|
902
|
-
fields: this.fields, placeholder: this.l10n.getConstant('SelectField'),
|
|
903
|
-
popupHeight: ((this.columns.length > 5) ? height : 'auto'), close: this.fieldClose.bind(this, ruleElem.id + '_filterkey'),
|
|
904
|
-
change: this.changeField.bind(this), value: rule ? ddlValue : null, open: this.popupOpen.bind(this, true), cssClass: 'qb-dropdownlist'
|
|
905
|
-
};
|
|
906
|
-
if (this.fieldModel) {
|
|
907
|
-
ddlField = __assign({}, ddlField, this.fieldModel);
|
|
908
|
-
}
|
|
909
|
-
dropDownList = new DropDownList(ddlField);
|
|
910
|
-
dropDownList.appendTo('#' + ruleElem.id + '_filterkey');
|
|
911
|
-
var ddlVal = void 0;
|
|
912
|
-
if (this.separator && rule.field) {
|
|
913
|
-
ddlVal = this.GetRootColumnName(rule.field);
|
|
914
|
-
}
|
|
915
|
-
else {
|
|
916
|
-
ddlVal = this.isImportRules ? this.GetRootColumnName(rule.field) :
|
|
917
|
-
dropDownList.value;
|
|
918
|
-
}
|
|
919
|
-
this.selectedColumn = dropDownList.getDataByValue(ddlVal);
|
|
920
|
-
if (Object.keys(rule).length) {
|
|
921
|
-
this.changeRule(rule, {
|
|
922
|
-
element: dropDownList.element, itemData: this.selectedColumn
|
|
923
|
-
});
|
|
924
|
-
}
|
|
955
|
+
if (ruleCount > 20) {
|
|
956
|
+
setTimeout(function () {
|
|
957
|
+
_this.applyFieldComponent(ruleElem, rule, height);
|
|
958
|
+
}, 0);
|
|
925
959
|
}
|
|
926
960
|
else {
|
|
927
|
-
|
|
928
|
-
var ddlValue = this.isImportRules ? rule.field : rule.field;
|
|
929
|
-
this.dummyDropdownTreeDs = extend([], this.columns, [], true);
|
|
930
|
-
this.updateDropdowntreeDS(this.dummyDropdownTreeDs);
|
|
931
|
-
ddlField = {
|
|
932
|
-
fields: { dataSource: this.dummyDropdownTreeDs,
|
|
933
|
-
value: 'field', text: 'label', child: 'columns', expanded: 'expanded', selectable: 'selectable' },
|
|
934
|
-
placeholder: this.l10n.getConstant('SelectField'), showClearButton: false,
|
|
935
|
-
popupHeight: ((this.columns.length > 5) ? height : 'auto'), changeOnBlur: false,
|
|
936
|
-
change: this.changeField.bind(this), value: !isNullOrUndefined(ddlValue) ? [ddlValue] : null,
|
|
937
|
-
open: this.popupOpen.bind(this, false), treeSettings: { expandOn: 'Click' },
|
|
938
|
-
cssClass: 'e-qb-ddt', filtering: this.dropdownTreeFiltering.bind(this), close: this.dropdownTreeClose.bind(this)
|
|
939
|
-
};
|
|
940
|
-
if (this.fieldModel) {
|
|
941
|
-
ddlField = __assign({}, ddlField, this.fieldModel);
|
|
942
|
-
}
|
|
943
|
-
var dropdowntree = new DropDownTree(ddlField);
|
|
944
|
-
dropdowntree.appendTo('#' + ruleElem.id + '_filterkey');
|
|
945
|
-
if (!isNullOrUndefined(dropdowntree.value)) {
|
|
946
|
-
var value = this.getLabelFromColumn(dropdowntree.value[0]);
|
|
947
|
-
dropdowntree.element.value = value;
|
|
948
|
-
}
|
|
949
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
950
|
-
var ddlVal = !isNullOrUndefined(rule.field) ?
|
|
951
|
-
this.GetRootColumnName(rule.field) : dropdowntree.value;
|
|
952
|
-
this.selectedColumn = this.getColumn(ddlVal);
|
|
953
|
-
if (Object.keys(rule).length) {
|
|
954
|
-
this.changeRule(rule, {
|
|
955
|
-
element: dropdowntree.element, itemData: this.selectedColumn
|
|
956
|
-
});
|
|
957
|
-
}
|
|
961
|
+
this.applyFieldComponent(ruleElem, rule, height);
|
|
958
962
|
}
|
|
959
963
|
}
|
|
960
964
|
ruleID = ruleElem.id.replace(this.element.id + '_', '');
|
|
@@ -963,46 +967,204 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
963
967
|
this.ruleLock(lockRuleTarget);
|
|
964
968
|
}
|
|
965
969
|
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
966
|
-
this.trigger('change', {
|
|
970
|
+
this.trigger('change', {
|
|
971
|
+
groupID: trgt.id.replace(this.element.id + '_', ''),
|
|
972
|
+
ruleID: ruleID,
|
|
973
|
+
type: 'insertRule'
|
|
974
|
+
});
|
|
967
975
|
}
|
|
968
976
|
}
|
|
969
977
|
if (this.enableSeparateConnector && isNullOrUndefined(rule.condition) && ruleID) {
|
|
970
978
|
rule = this.getRule(ruleID);
|
|
971
979
|
}
|
|
972
980
|
if (this.enableSeparateConnector) {
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
981
|
+
this.processConnectorElements(ruleElem);
|
|
982
|
+
}
|
|
983
|
+
};
|
|
984
|
+
QueryBuilder.prototype.processAdjacentElements = function (ruleElem, previousRuleElem, rule) {
|
|
985
|
+
if (this.enableSeparateConnector) {
|
|
986
|
+
if (previousRuleElem && previousRuleElem.classList.contains('e-group-container')) {
|
|
987
|
+
var ruleContainer = previousRuleElem.querySelectorAll('.e-rule-container');
|
|
988
|
+
previousRuleElem = ruleContainer[ruleContainer.length - 1];
|
|
989
|
+
}
|
|
990
|
+
if (previousRuleElem && previousRuleElem.classList.contains('e-rule-container')) {
|
|
991
|
+
var prevRule = this.getRule(previousRuleElem);
|
|
992
|
+
if (this.headerTemplate) {
|
|
993
|
+
this.headerTemplateFn(previousRuleElem, false, prevRule.condition, prevRule, previousRuleElem.id);
|
|
980
994
|
}
|
|
981
|
-
prevElem = prevElem.previousElementSibling;
|
|
982
995
|
}
|
|
983
|
-
if (this.
|
|
996
|
+
else if (isNullOrUndefined(previousRuleElem) && ruleElem.id !== this.element.id + '_group0_rule0') {
|
|
997
|
+
this.handleOrphanedRuleElement(ruleElem, rule);
|
|
998
|
+
}
|
|
999
|
+
}
|
|
1000
|
+
else {
|
|
1001
|
+
if (previousRuleElem && previousRuleElem.className.indexOf('e-rule-container') > -1) {
|
|
1002
|
+
ruleElem.classList.add('e-joined-rule');
|
|
1003
|
+
previousRuleElem.classList.add('e-prev-joined-rule');
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
if (previousRuleElem && previousRuleElem.className.indexOf('e-group-container') > -1 &&
|
|
1007
|
+
ruleElem.className.indexOf('e-separate-rule') < 0) {
|
|
1008
|
+
ruleElem.className += ' e-separate-rule';
|
|
1009
|
+
}
|
|
1010
|
+
};
|
|
1011
|
+
QueryBuilder.prototype.handleOrphanedRuleElement = function (ruleElem, rule) {
|
|
1012
|
+
var group = ruleElem.closest('.e-group-container');
|
|
1013
|
+
if (group && group.previousElementSibling) {
|
|
1014
|
+
var prevElem = group.previousElementSibling;
|
|
1015
|
+
var prevRuleContainer = prevElem.querySelectorAll('.e-rule-container');
|
|
1016
|
+
if (prevElem.classList.contains('e-group-container')) {
|
|
1017
|
+
prevElem = prevRuleContainer[prevRuleContainer.length - 1];
|
|
1018
|
+
}
|
|
1019
|
+
if (prevElem.classList.contains('e-rule-container')) {
|
|
984
1020
|
var prevRule = this.getRule(prevElem);
|
|
985
|
-
|
|
986
|
-
notCondition: this.enableNotCondition ? true : undefined };
|
|
987
|
-
this.trigger('actionBegin', args_2);
|
|
1021
|
+
this.headerTemplateFn(prevElem, false, prevRule.condition, prevRule, prevElem.id, true);
|
|
988
1022
|
}
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
}
|
|
1003
|
-
}
|
|
1023
|
+
}
|
|
1024
|
+
else {
|
|
1025
|
+
this.headerTemplateFn(ruleElem, false, rule.condition, rule, ruleElem.id, true);
|
|
1026
|
+
}
|
|
1027
|
+
};
|
|
1028
|
+
QueryBuilder.prototype.processConnectorElements = function (ruleElem) {
|
|
1029
|
+
var prevElem = ruleElem.previousElementSibling;
|
|
1030
|
+
var ruleContainer;
|
|
1031
|
+
while (prevElem && !prevElem.classList.contains('e-rule-container')) {
|
|
1032
|
+
if (prevElem.classList.contains('e-group-container')) {
|
|
1033
|
+
ruleContainer = prevElem.querySelectorAll('.e-rule-container');
|
|
1034
|
+
prevElem = ruleContainer[ruleContainer.length - 1];
|
|
1035
|
+
break;
|
|
1004
1036
|
}
|
|
1005
|
-
|
|
1037
|
+
prevElem = prevElem.previousElementSibling;
|
|
1038
|
+
}
|
|
1039
|
+
if (this.headerTemplate && prevElem) {
|
|
1040
|
+
var prevRule = this.getRule(prevElem);
|
|
1041
|
+
var args = {
|
|
1042
|
+
requestType: 'rule-template-create',
|
|
1043
|
+
ruleID: prevElem.id,
|
|
1044
|
+
condition: prevRule.condition,
|
|
1045
|
+
notCondition: this.enableNotCondition ? true : undefined
|
|
1046
|
+
};
|
|
1047
|
+
this.trigger('actionBegin', args);
|
|
1048
|
+
}
|
|
1049
|
+
else if (isNullOrUndefined(prevElem) && ruleElem.id !== this.element.id + '_group0_rule0') {
|
|
1050
|
+
this.handleOrphanedConnectorElement(ruleElem);
|
|
1051
|
+
}
|
|
1052
|
+
this.setMultiConnector(ruleElem);
|
|
1053
|
+
};
|
|
1054
|
+
QueryBuilder.prototype.handleOrphanedConnectorElement = function (ruleElem) {
|
|
1055
|
+
var group = ruleElem.closest('.e-group-container');
|
|
1056
|
+
if (group && group.previousElementSibling && group.previousElementSibling.previousElementSibling) {
|
|
1057
|
+
var prevElem = group.previousElementSibling.previousElementSibling;
|
|
1058
|
+
if (prevElem.classList.contains('e-group-container')) {
|
|
1059
|
+
var ruleContainer = prevElem.querySelectorAll('.e-rule-container');
|
|
1060
|
+
prevElem = ruleContainer[ruleContainer.length - 1];
|
|
1061
|
+
}
|
|
1062
|
+
if (prevElem.classList.contains('e-rule-container')) {
|
|
1063
|
+
var prevRule = this.getRule(prevElem);
|
|
1064
|
+
var args = {
|
|
1065
|
+
requestType: 'rule-template-create',
|
|
1066
|
+
ruleID: prevElem.id,
|
|
1067
|
+
condition: prevRule.condition,
|
|
1068
|
+
notCondition: this.enableNotCondition ? true : undefined
|
|
1069
|
+
};
|
|
1070
|
+
this.trigger('actionBegin', args);
|
|
1071
|
+
}
|
|
1072
|
+
}
|
|
1073
|
+
};
|
|
1074
|
+
QueryBuilder.prototype.applyFieldComponent = function (ruleElem, rule, height) {
|
|
1075
|
+
if (this.fieldMode === 'Default') {
|
|
1076
|
+
this.applyDropdownListComponent(ruleElem, rule, height);
|
|
1077
|
+
}
|
|
1078
|
+
else {
|
|
1079
|
+
this.applyDropdownTreeComponent(ruleElem, rule, height);
|
|
1080
|
+
}
|
|
1081
|
+
};
|
|
1082
|
+
QueryBuilder.prototype.applyDropdownListComponent = function (ruleElem, rule, height) {
|
|
1083
|
+
var ddlField;
|
|
1084
|
+
var ddlValue;
|
|
1085
|
+
if (this.separator && rule.field) {
|
|
1086
|
+
ddlValue = this.GetRootColumnName(rule.field);
|
|
1087
|
+
}
|
|
1088
|
+
else if (this.autoSelectField) {
|
|
1089
|
+
ddlValue = this.GetRootColumnName(rule.field);
|
|
1090
|
+
}
|
|
1091
|
+
else {
|
|
1092
|
+
ddlValue = this.isImportRules ? this.GetRootColumnName(rule.field) : rule.field;
|
|
1093
|
+
}
|
|
1094
|
+
ddlField = {
|
|
1095
|
+
dataSource: this.columns,
|
|
1096
|
+
fields: this.fields,
|
|
1097
|
+
placeholder: this.l10n.getConstant('SelectField'),
|
|
1098
|
+
popupHeight: ((this.columns.length > 5) ? height : 'auto'),
|
|
1099
|
+
close: this.fieldClose.bind(this, ruleElem.id + '_filterkey'),
|
|
1100
|
+
change: this.changeField.bind(this),
|
|
1101
|
+
value: rule ? ddlValue : null,
|
|
1102
|
+
open: this.popupOpen.bind(this, true),
|
|
1103
|
+
cssClass: 'qb-dropdownlist'
|
|
1104
|
+
};
|
|
1105
|
+
if (this.fieldModel) {
|
|
1106
|
+
ddlField = __assign({}, ddlField, this.fieldModel);
|
|
1107
|
+
}
|
|
1108
|
+
var dropDownList = new DropDownList(ddlField);
|
|
1109
|
+
dropDownList.appendTo('#' + ruleElem.id + '_filterkey');
|
|
1110
|
+
var ddlVal;
|
|
1111
|
+
if (this.separator && rule.field) {
|
|
1112
|
+
ddlVal = this.GetRootColumnName(rule.field);
|
|
1113
|
+
}
|
|
1114
|
+
else {
|
|
1115
|
+
ddlVal = this.isImportRules ? this.GetRootColumnName(rule.field) : dropDownList.value;
|
|
1116
|
+
}
|
|
1117
|
+
this.selectedColumn = dropDownList.getDataByValue(ddlVal);
|
|
1118
|
+
if (Object.keys(rule).length) {
|
|
1119
|
+
this.changeRule(rule, {
|
|
1120
|
+
element: dropDownList.element,
|
|
1121
|
+
itemData: this.selectedColumn
|
|
1122
|
+
});
|
|
1123
|
+
}
|
|
1124
|
+
};
|
|
1125
|
+
QueryBuilder.prototype.applyDropdownTreeComponent = function (ruleElem, rule, height) {
|
|
1126
|
+
var ddlField;
|
|
1127
|
+
var ddlValue = this.isImportRules ? rule.field : rule.field;
|
|
1128
|
+
this.dummyDropdownTreeDs = extend([], this.columns, [], true);
|
|
1129
|
+
this.updateDropdowntreeDS(this.dummyDropdownTreeDs);
|
|
1130
|
+
ddlField = {
|
|
1131
|
+
fields: {
|
|
1132
|
+
dataSource: this.dummyDropdownTreeDs,
|
|
1133
|
+
value: 'field',
|
|
1134
|
+
text: 'label',
|
|
1135
|
+
child: 'columns',
|
|
1136
|
+
expanded: 'expanded',
|
|
1137
|
+
selectable: 'selectable'
|
|
1138
|
+
},
|
|
1139
|
+
placeholder: this.l10n.getConstant('SelectField'),
|
|
1140
|
+
showClearButton: false,
|
|
1141
|
+
popupHeight: ((this.columns.length > 5) ? height : 'auto'),
|
|
1142
|
+
changeOnBlur: false,
|
|
1143
|
+
change: this.changeField.bind(this),
|
|
1144
|
+
value: !isNullOrUndefined(ddlValue) ? [ddlValue] : null,
|
|
1145
|
+
open: this.popupOpen.bind(this, false),
|
|
1146
|
+
treeSettings: { expandOn: 'Click' },
|
|
1147
|
+
cssClass: 'e-qb-ddt',
|
|
1148
|
+
filtering: this.dropdownTreeFiltering.bind(this),
|
|
1149
|
+
close: this.dropdownTreeClose.bind(this)
|
|
1150
|
+
};
|
|
1151
|
+
if (this.fieldModel) {
|
|
1152
|
+
ddlField = __assign({}, ddlField, this.fieldModel);
|
|
1153
|
+
}
|
|
1154
|
+
var dropdowntree = new DropDownTree(ddlField);
|
|
1155
|
+
dropdowntree.appendTo('#' + ruleElem.id + '_filterkey');
|
|
1156
|
+
if (!isNullOrUndefined(dropdowntree.value)) {
|
|
1157
|
+
var value = this.getLabelFromColumn(dropdowntree.value[0]);
|
|
1158
|
+
dropdowntree.element.value = value;
|
|
1159
|
+
}
|
|
1160
|
+
var ddlVal = !isNullOrUndefined(rule.field) ?
|
|
1161
|
+
this.GetRootColumnName(rule.field) : dropdowntree.value;
|
|
1162
|
+
this.selectedColumn = this.getColumn(ddlVal);
|
|
1163
|
+
if (Object.keys(rule).length) {
|
|
1164
|
+
this.changeRule(rule, {
|
|
1165
|
+
element: dropdowntree.element,
|
|
1166
|
+
itemData: this.selectedColumn
|
|
1167
|
+
});
|
|
1006
1168
|
}
|
|
1007
1169
|
};
|
|
1008
1170
|
QueryBuilder.prototype.dropdownTreeFiltering = function (args) {
|
|
@@ -1017,7 +1179,6 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1017
1179
|
var ruleElem = document.getElementById(ruleElemID);
|
|
1018
1180
|
this.ddTree = getComponent(ruleElem.querySelector('input.e-dropdowntree'), 'dropdowntree');
|
|
1019
1181
|
var hierarchicalData = extend([], this.columns, [], true);
|
|
1020
|
-
// Cancel the default filtering.
|
|
1021
1182
|
args.cancel = true;
|
|
1022
1183
|
if (args.text === '') {
|
|
1023
1184
|
this.changeDataSource(hierarchicalData);
|
|
@@ -1177,7 +1338,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1177
1338
|
}
|
|
1178
1339
|
};
|
|
1179
1340
|
QueryBuilder.prototype.renderToolTip = function (element) {
|
|
1180
|
-
var tooltip = new Tooltip({
|
|
1341
|
+
var tooltip = new Tooltip({
|
|
1342
|
+
content: this.l10n.getConstant('ValidationMessage'), isSticky: true,
|
|
1181
1343
|
position: 'BottomCenter', cssClass: 'e-querybuilder-error', afterClose: function () {
|
|
1182
1344
|
tooltip.destroy();
|
|
1183
1345
|
}, beforeOpen: function (args) {
|
|
@@ -1185,7 +1347,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1185
1347
|
if (tooltipCloseElement) {
|
|
1186
1348
|
tooltipCloseElement.style.display = 'none';
|
|
1187
1349
|
}
|
|
1188
|
-
}
|
|
1350
|
+
}
|
|
1351
|
+
});
|
|
1189
1352
|
tooltip.appendTo(element);
|
|
1190
1353
|
tooltip.open(element);
|
|
1191
1354
|
};
|
|
@@ -1343,7 +1506,6 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1343
1506
|
groupElem.appendChild(groupHdrElem);
|
|
1344
1507
|
grpBodyElem.appendChild(rulesElem);
|
|
1345
1508
|
groupElem.appendChild(grpBodyElem);
|
|
1346
|
-
// create button group in OR and AND process
|
|
1347
1509
|
if (!this.headerTemplate) {
|
|
1348
1510
|
if (this.allowDragAndDrop) {
|
|
1349
1511
|
dragClsName = 'e-icons e-drag-qb-rule';
|
|
@@ -1351,8 +1513,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1351
1513
|
else {
|
|
1352
1514
|
dragClsName = 'e-icons e-drag-qb-rule e-hidden';
|
|
1353
1515
|
}
|
|
1354
|
-
var spanDragElement = this.createElement('span', {
|
|
1355
|
-
|
|
1516
|
+
var spanDragElement = this.createElement('span', {
|
|
1517
|
+
attrs: {
|
|
1518
|
+
class: dragClsName, 'aria-label': 'drag handle',
|
|
1519
|
+
title: 'drag handle'
|
|
1520
|
+
}
|
|
1521
|
+
});
|
|
1356
1522
|
groupHdrElem.appendChild(spanDragElement);
|
|
1357
1523
|
var className = this.enableSeparateConnector && !isConnector ? 'e-lib e-btn-group e-qb-toggle-btn' : 'e-lib e-btn-group';
|
|
1358
1524
|
glueElem = this.createElement('div', { attrs: { class: className, role: 'group' } });
|
|
@@ -1370,13 +1536,17 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1370
1536
|
}
|
|
1371
1537
|
inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-and', value: 'AND' } });
|
|
1372
1538
|
glueElem.appendChild(inputElem);
|
|
1373
|
-
labelElem = this.createElement('label', {
|
|
1374
|
-
|
|
1539
|
+
labelElem = this.createElement('label', {
|
|
1540
|
+
attrs: { class: 'e-lib e-btn e-btngroup-and-lbl e-small' },
|
|
1541
|
+
innerHTML: this.l10n.getConstant('AND')
|
|
1542
|
+
});
|
|
1375
1543
|
glueElem.appendChild(labelElem);
|
|
1376
1544
|
inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-or', value: 'OR' } });
|
|
1377
1545
|
glueElem.appendChild(inputElem);
|
|
1378
|
-
labelElem = this.createElement('label', {
|
|
1379
|
-
|
|
1546
|
+
labelElem = this.createElement('label', {
|
|
1547
|
+
attrs: { class: 'e-lib e-btn e-btngroup-or-lbl e-small' },
|
|
1548
|
+
innerHTML: this.l10n.getConstant('OR')
|
|
1549
|
+
});
|
|
1380
1550
|
glueElem.appendChild(labelElem);
|
|
1381
1551
|
groupHdrElem.appendChild(glueElem);
|
|
1382
1552
|
grpActElem = this.createElement('div', { attrs: { class: 'e-group-action' } });
|
|
@@ -1409,8 +1579,12 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1409
1579
|
else {
|
|
1410
1580
|
dragClsName = 'e-icons e-drag-qb-rule e-hidden';
|
|
1411
1581
|
}
|
|
1412
|
-
var spanDragElement = this.createElement('span', {
|
|
1413
|
-
|
|
1582
|
+
var spanDragElement = this.createElement('span', {
|
|
1583
|
+
attrs: {
|
|
1584
|
+
class: dragClsName, 'aria-label': 'drag handle',
|
|
1585
|
+
title: 'drag handle'
|
|
1586
|
+
}
|
|
1587
|
+
});
|
|
1414
1588
|
fieldElem.appendChild(spanDragElement);
|
|
1415
1589
|
var filterElem = this.createElement('input', { attrs: { type: 'text', class: 'e-filter-input' } });
|
|
1416
1590
|
tempElem.appendChild(filterElem);
|
|
@@ -1691,9 +1865,11 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1691
1865
|
}
|
|
1692
1866
|
this.updatedRule = null;
|
|
1693
1867
|
if (this.headerTemplate) {
|
|
1694
|
-
var
|
|
1695
|
-
|
|
1696
|
-
|
|
1868
|
+
var args_1 = {
|
|
1869
|
+
requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,
|
|
1870
|
+
notCondition: this.enableNotCondition ? not : undefined
|
|
1871
|
+
};
|
|
1872
|
+
this.trigger('actionBegin', args_1);
|
|
1697
1873
|
}
|
|
1698
1874
|
else {
|
|
1699
1875
|
if (this.enableSeparateConnector) {
|
|
@@ -1731,9 +1907,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1731
1907
|
}
|
|
1732
1908
|
};
|
|
1733
1909
|
QueryBuilder.prototype.setMultiConnector = function (trgt) {
|
|
1734
|
-
if (this.enableSeparateConnector && !this.headerTemplate) {
|
|
1735
|
-
|
|
1736
|
-
|
|
1910
|
+
if (this.enableSeparateConnector && !this.headerTemplate && trgt.previousElementSibling) {
|
|
1911
|
+
var btnGroupElem = this.groupTemplate(true).querySelector('.e-btn-group');
|
|
1912
|
+
if (btnGroupElem) {
|
|
1913
|
+
trgt.parentElement.insertBefore(btnGroupElem, trgt);
|
|
1737
1914
|
var notElem = trgt.previousElementSibling.childNodes[0];
|
|
1738
1915
|
if (notElem.classList.contains('e-qb-toggle')) {
|
|
1739
1916
|
notElem.style.display = 'none';
|
|
@@ -1776,9 +1953,11 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1776
1953
|
groupHdr = groupElem;
|
|
1777
1954
|
}
|
|
1778
1955
|
if (this.headerTemplate) {
|
|
1779
|
-
args = {
|
|
1956
|
+
args = {
|
|
1957
|
+
requestType: 'header-template-initialize', ruleID: groupElem.id,
|
|
1780
1958
|
notCondition: this.enableNotCondition ? not : undefined,
|
|
1781
|
-
condition: condition, rule: this.getRuleCollection(rule, false), groupID: groupID
|
|
1959
|
+
condition: condition, rule: this.getRuleCollection(rule, false), groupID: groupID
|
|
1960
|
+
};
|
|
1782
1961
|
this.trigger('actionBegin', args);
|
|
1783
1962
|
if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
|
|
1784
1963
|
args.requestType = 'rule-template-create';
|
|
@@ -1931,7 +2110,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1931
2110
|
QueryBuilder.prototype.templateChange = function (element, value, type) {
|
|
1932
2111
|
var grpElem = closest(element, '.e-group-container');
|
|
1933
2112
|
var eventsArgs;
|
|
1934
|
-
var rules = this.getParentGroup(grpElem);
|
|
2113
|
+
var rules = grpElem && this.getParentGroup(grpElem);
|
|
1935
2114
|
var ruleElem = closest(element, '.e-rule-container');
|
|
1936
2115
|
var index = 0;
|
|
1937
2116
|
if (this.allowValidation) {
|
|
@@ -1946,7 +2125,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1946
2125
|
index++;
|
|
1947
2126
|
}
|
|
1948
2127
|
}
|
|
1949
|
-
var rule = rules.rules[index];
|
|
2128
|
+
var rule = rules && rules.rules[index];
|
|
1950
2129
|
if (type === 'field') {
|
|
1951
2130
|
this.selectedColumn = this.getColumn(value);
|
|
1952
2131
|
}
|
|
@@ -1954,7 +2133,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1954
2133
|
this.selectedColumn = this.getColumn(rule.field);
|
|
1955
2134
|
}
|
|
1956
2135
|
var operVal;
|
|
1957
|
-
this.previousColumn = this.getColumn(rule.field);
|
|
2136
|
+
this.previousColumn = rule && this.getColumn(rule.field);
|
|
1958
2137
|
var beforeRules = this.getValidRules(this.rule);
|
|
1959
2138
|
if (this.selectedColumn) {
|
|
1960
2139
|
if (this.selectedColumn.operators) {
|
|
@@ -1969,11 +2148,16 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
1969
2148
|
switch (type) {
|
|
1970
2149
|
case 'field':
|
|
1971
2150
|
if (isNullOrUndefined(value)) {
|
|
1972
|
-
rule
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
2151
|
+
if (!isNullOrUndefined(rule)) {
|
|
2152
|
+
rule.field = '';
|
|
2153
|
+
rule.label = '';
|
|
2154
|
+
rule.type = '';
|
|
2155
|
+
rule.value = '';
|
|
2156
|
+
rule.operator = '';
|
|
2157
|
+
}
|
|
2158
|
+
else {
|
|
2159
|
+
return;
|
|
2160
|
+
}
|
|
1977
2161
|
}
|
|
1978
2162
|
else {
|
|
1979
2163
|
rule.field = value;
|
|
@@ -2024,10 +2208,14 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2024
2208
|
ruleElement.className.indexOf('e-separate-rule') < 0) {
|
|
2025
2209
|
ruleElement.className += ' e-separate-rule';
|
|
2026
2210
|
}
|
|
2027
|
-
var args = {
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2211
|
+
var args = {
|
|
2212
|
+
requestType: 'template-create', action: type, ruleID: grpEle.id,
|
|
2213
|
+
fields: this.fields, rule: rule
|
|
2214
|
+
};
|
|
2215
|
+
eventsArgs = {
|
|
2216
|
+
groupID: grpElem.id.replace(this.element.id + '_', ''), ruleID: grpEle.id.replace(this.element.id + '_', ''),
|
|
2217
|
+
value: rule.field, type: 'field'
|
|
2218
|
+
};
|
|
2031
2219
|
this.trigger('actionBegin', args);
|
|
2032
2220
|
this.trigger('change', eventsArgs);
|
|
2033
2221
|
}
|
|
@@ -2168,8 +2356,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2168
2356
|
var item = ddl.popupObj && ddl.popupObj.element.querySelector('.e-active');
|
|
2169
2357
|
var itemData = ddl.getItemData();
|
|
2170
2358
|
ddl.value = itemData.value;
|
|
2171
|
-
var customArgs = {
|
|
2172
|
-
|
|
2359
|
+
var customArgs = {
|
|
2360
|
+
element: ddl.element, value: itemData.value, isInteracted: true,
|
|
2361
|
+
previousItemData: this.prevItemData, previousItem: null, item: item, itemData: itemData, event: null, e: null
|
|
2362
|
+
};
|
|
2173
2363
|
if (ddl.previousValue !== ddl.value) {
|
|
2174
2364
|
this.changeField(customArgs);
|
|
2175
2365
|
}
|
|
@@ -2282,8 +2472,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2282
2472
|
this.selectedColumn = this.getColumn(ddlValue);
|
|
2283
2473
|
var ruleElem = closest(flt, '.e-rule-container');
|
|
2284
2474
|
var ruleID = ruleElem.id.replace(this.element.id + '_', '');
|
|
2285
|
-
var eventsArgs = {
|
|
2286
|
-
|
|
2475
|
+
var eventsArgs = {
|
|
2476
|
+
groupID: grID, ruleID: ruleID, selectedField: this.fieldMode === 'DropdownTree' ?
|
|
2477
|
+
dl.value[0] : dl.value, cancel: false, type: 'field'
|
|
2478
|
+
};
|
|
2287
2479
|
if (!this.isImportRules && !this.prvtEvtTgrDaD) {
|
|
2288
2480
|
this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {
|
|
2289
2481
|
_this.fieldChangeSuccess(observedChangeArgs, tmpRl, flt, rl, dArg);
|
|
@@ -2872,19 +3064,25 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
2872
3064
|
: getComponent(container.querySelector('.e-rule-filter .e-filter-input'), 'dropdownlist');
|
|
2873
3065
|
var column = this.fieldMode === 'DropdownTree' ? this.getColumn(ddlObj.value[0]) : this.getColumn(ddlObj.value);
|
|
2874
3066
|
if (typeof itemData.template === 'string' || itemData.template.write === undefined) {
|
|
2875
|
-
var args = {
|
|
2876
|
-
|
|
3067
|
+
var args = {
|
|
3068
|
+
rule: rule, ruleID: container.id, operator: tempRule.operator, field: column.field,
|
|
3069
|
+
requestType: 'value-template-create'
|
|
3070
|
+
};
|
|
2877
3071
|
this.trigger('actionBegin', args);
|
|
2878
3072
|
}
|
|
2879
3073
|
else {
|
|
2880
3074
|
var template = itemData.template;
|
|
2881
3075
|
if (typeof template.write === 'string') {
|
|
2882
|
-
getValue(template.write, window)({
|
|
2883
|
-
|
|
3076
|
+
getValue(template.write, window)({
|
|
3077
|
+
elements: tempElements.length > 1 ? tempElements : tempElements[0], values: rule.value,
|
|
3078
|
+
operator: tempRule.operator, field: column.field, dataSource: column.values
|
|
3079
|
+
});
|
|
2884
3080
|
}
|
|
2885
3081
|
else if (typeof itemData.template !== 'function') {
|
|
2886
|
-
itemData.template.write({
|
|
2887
|
-
|
|
3082
|
+
itemData.template.write({
|
|
3083
|
+
elements: tempElements.length > 1 ? tempElements : tempElements[0],
|
|
3084
|
+
values: rule.value, operator: tempRule.operator, field: column.field, dataSource: column.values
|
|
3085
|
+
});
|
|
2888
3086
|
}
|
|
2889
3087
|
}
|
|
2890
3088
|
};
|
|
@@ -3382,8 +3580,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3382
3580
|
}
|
|
3383
3581
|
else {
|
|
3384
3582
|
if (typeof itemData.template === 'string' || itemData.template.create === undefined) {
|
|
3385
|
-
args = {
|
|
3386
|
-
|
|
3583
|
+
args = {
|
|
3584
|
+
requestType: 'value-template-initialize', ruleID: ruleID, field: field, operator: operator, rule: rule,
|
|
3585
|
+
renderTemplate: true
|
|
3586
|
+
};
|
|
3387
3587
|
this.trigger('actionBegin', args, function (observedActionArgs) {
|
|
3388
3588
|
isRendered = _this.actionBeginSuccessCallBack(observedActionArgs, itemData, ruleID, field, target);
|
|
3389
3589
|
});
|
|
@@ -3591,7 +3791,6 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3591
3791
|
element = element ? element : ruleElement.nextElementSibling.nextElementSibling.querySelector('input.e-control');
|
|
3592
3792
|
operator = getComponent(element, 'dropdownlist').value.toString();
|
|
3593
3793
|
rule.rules[index].operator = operator;
|
|
3594
|
-
// Value Fields
|
|
3595
3794
|
var valueContainer = ruleElement.nextElementSibling.nextElementSibling;
|
|
3596
3795
|
var elementCln = valueContainer.querySelectorAll('input.e-control');
|
|
3597
3796
|
if (elementCln.length < 1) {
|
|
@@ -3753,6 +3952,9 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3753
3952
|
}
|
|
3754
3953
|
};
|
|
3755
3954
|
QueryBuilder.prototype.validateValue = function (rule, ruleElem, index) {
|
|
3955
|
+
if (isNullOrUndefined(rule) && isNullOrUndefined(ruleElem)) {
|
|
3956
|
+
return;
|
|
3957
|
+
}
|
|
3756
3958
|
if (!isNullOrUndefined(index)) {
|
|
3757
3959
|
rule = rule.rules[index];
|
|
3758
3960
|
}
|
|
@@ -3914,8 +4116,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
3914
4116
|
if (grouplen) {
|
|
3915
4117
|
this.isPublic = true;
|
|
3916
4118
|
for (var i = 0, len = groups.length; i < len; i++) {
|
|
3917
|
-
this.updatedRule = {
|
|
3918
|
-
|
|
4119
|
+
this.updatedRule = {
|
|
4120
|
+
isLocked: groups[i].isLocked, condition: groups[i].condition,
|
|
4121
|
+
not: groups[i].not
|
|
4122
|
+
};
|
|
3919
4123
|
this.importRules(groups[i], groupElem, false, groups[i].not);
|
|
3920
4124
|
}
|
|
3921
4125
|
this.isPublic = false;
|
|
@@ -4044,10 +4248,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4044
4248
|
this.element.querySelector('.e-group-header').appendChild(collapseElem);
|
|
4045
4249
|
};
|
|
4046
4250
|
QueryBuilder.prototype.columnSort = function () {
|
|
4047
|
-
if (this.sortDirection.toLowerCase() === 'descending') {
|
|
4251
|
+
if (this.sortDirection && this.sortDirection.toLowerCase() === 'descending') {
|
|
4048
4252
|
this.columns = new DataManager(this.columns).executeLocal(new Query().sortByDesc('field'));
|
|
4049
4253
|
}
|
|
4050
|
-
else if (this.sortDirection.toLowerCase() === 'ascending') {
|
|
4254
|
+
else if (this.sortDirection && this.sortDirection.toLowerCase() === 'ascending') {
|
|
4051
4255
|
this.columns = new DataManager(this.columns).executeLocal(new Query().sortBy('field'));
|
|
4052
4256
|
}
|
|
4053
4257
|
};
|
|
@@ -4534,8 +4738,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4534
4738
|
}
|
|
4535
4739
|
}
|
|
4536
4740
|
}
|
|
4537
|
-
var dragEventArgs = {
|
|
4538
|
-
|
|
4741
|
+
var dragEventArgs = {
|
|
4742
|
+
dragRuleID: targetElem !== null ? targetElem.id : grpElem !== null ? grpElem.id : null,
|
|
4743
|
+
dragGroupID: grpElem !== null ? grpElem.id : null, cancel: false
|
|
4744
|
+
};
|
|
4539
4745
|
this.trigger('drag', dragEventArgs);
|
|
4540
4746
|
this.isDragEventPrevent = dragEventArgs.cancel;
|
|
4541
4747
|
};
|
|
@@ -4556,8 +4762,10 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
4556
4762
|
var prevRule;
|
|
4557
4763
|
if (!isPreventelem) {
|
|
4558
4764
|
var targetGrp = closest(e.target, '.e-group-container');
|
|
4559
|
-
var dropEventArgs = {
|
|
4560
|
-
|
|
4765
|
+
var dropEventArgs = {
|
|
4766
|
+
cancel: false, dropRuleID: targetGroup !== null ? targetGroup.id
|
|
4767
|
+
: targetGrp !== null ? targetGrp.id : null, dropGroupID: targetGrp !== null ? targetGrp.id : null
|
|
4768
|
+
};
|
|
4561
4769
|
this.trigger('drop', dropEventArgs);
|
|
4562
4770
|
if (dropEventArgs.cancel) {
|
|
4563
4771
|
isPreventelem = true;
|
|
@@ -5326,7 +5534,8 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5326
5534
|
else {
|
|
5327
5535
|
if (customObj && (customObj.type === 'question' || customObj.type === 'answer')) {
|
|
5328
5536
|
var notValue = rule.not;
|
|
5329
|
-
rule = {
|
|
5537
|
+
rule = {
|
|
5538
|
+
'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value,
|
|
5330
5539
|
'condition': rule.condition, 'rules': rule.rules
|
|
5331
5540
|
};
|
|
5332
5541
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -5648,21 +5857,40 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
5648
5857
|
var columns = this.columns;
|
|
5649
5858
|
var column;
|
|
5650
5859
|
columns = col ? col : columns;
|
|
5651
|
-
|
|
5860
|
+
var fieldParts = this.separator !== '' ? (field ? field.split(this.separator) : []) : [field];
|
|
5861
|
+
var rootField = fieldParts && fieldParts.length > 0 ? fieldParts[0] : null;
|
|
5862
|
+
for (var i = 0; i < columns.length; i++) {
|
|
5652
5863
|
if (columns[i].field === field) {
|
|
5653
5864
|
column = columns[i];
|
|
5654
5865
|
break;
|
|
5655
5866
|
}
|
|
5656
|
-
|
|
5657
|
-
|
|
5658
|
-
|
|
5867
|
+
}
|
|
5868
|
+
if (!column && this.separator !== '') {
|
|
5869
|
+
for (var i = 0; i < columns.length; i++) {
|
|
5870
|
+
if (columns[i].field === rootField) {
|
|
5871
|
+
if (columns[i].columns) {
|
|
5872
|
+
var subField = field.substring(rootField.length + this.separator.length);
|
|
5873
|
+
if (subField) {
|
|
5874
|
+
column = this.getColumn(subField, columns[i].columns);
|
|
5875
|
+
}
|
|
5876
|
+
else {
|
|
5877
|
+
column = columns[i];
|
|
5878
|
+
}
|
|
5879
|
+
}
|
|
5880
|
+
else {
|
|
5881
|
+
column = columns[i];
|
|
5882
|
+
}
|
|
5659
5883
|
break;
|
|
5660
5884
|
}
|
|
5661
5885
|
}
|
|
5662
|
-
|
|
5663
|
-
|
|
5664
|
-
|
|
5665
|
-
|
|
5886
|
+
}
|
|
5887
|
+
if (!column) {
|
|
5888
|
+
for (var i = 0; i < columns.length; i++) {
|
|
5889
|
+
if (columns[i].columns) {
|
|
5890
|
+
column = this.getColumn(field, columns[i].columns);
|
|
5891
|
+
if (column) {
|
|
5892
|
+
break;
|
|
5893
|
+
}
|
|
5666
5894
|
}
|
|
5667
5895
|
}
|
|
5668
5896
|
}
|
|
@@ -6118,6 +6346,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
6118
6346
|
return false;
|
|
6119
6347
|
};
|
|
6120
6348
|
QueryBuilder.prototype.getSqlString = function (rules, enableEscape, queryStr, sqlLocale) {
|
|
6349
|
+
var _this = this;
|
|
6121
6350
|
var isRoot = false;
|
|
6122
6351
|
if (!queryStr && queryStr !== '') {
|
|
6123
6352
|
queryStr = '';
|
|
@@ -6126,86 +6355,74 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
6126
6355
|
else {
|
|
6127
6356
|
queryStr += '(';
|
|
6128
6357
|
}
|
|
6129
|
-
var condition = rules.condition;
|
|
6130
6358
|
if (rules.not) {
|
|
6131
|
-
var
|
|
6132
|
-
|
|
6133
|
-
rulesNotCondition = sqlLocale ? this.l10n.getConstant('NOT').toUpperCase() + ' (' : 'NOT (';
|
|
6134
|
-
queryStr += rulesNotCondition;
|
|
6135
|
-
}
|
|
6136
|
-
else {
|
|
6137
|
-
rulesNotCondition = sqlLocale ? ' ' + this.l10n.getConstant('NOT').toUpperCase() + ' (' : ' NOT (';
|
|
6138
|
-
queryStr += rulesNotCondition;
|
|
6139
|
-
}
|
|
6359
|
+
var notPrefix = sqlLocale ? this.l10n.getConstant('NOT').toUpperCase() + ' ' : 'NOT ';
|
|
6360
|
+
queryStr += isRoot ? notPrefix + '(' : ' ' + notPrefix + '(';
|
|
6140
6361
|
}
|
|
6141
|
-
if (rules.rules) {
|
|
6142
|
-
|
|
6143
|
-
|
|
6144
|
-
|
|
6145
|
-
|
|
6146
|
-
|
|
6362
|
+
if (rules.rules && rules.rules.length) {
|
|
6363
|
+
queryStr += rules.rules.reduce(function (result, rule, j) {
|
|
6364
|
+
var ruleStr = '';
|
|
6365
|
+
if (rule.rules) {
|
|
6366
|
+
ruleStr = _this.getSqlString(rule, enableEscape, '', sqlLocale);
|
|
6367
|
+
if (_this.enableSeparateConnector) {
|
|
6368
|
+
rules.condition = rule.condition;
|
|
6147
6369
|
}
|
|
6148
6370
|
}
|
|
6149
6371
|
else {
|
|
6150
|
-
var
|
|
6372
|
+
var ruleOpertor = sqlLocale ? _this.sqlOperators[rule.operator] : _this.operators[rule.operator];
|
|
6151
6373
|
var valueStr = '';
|
|
6152
|
-
var ruleOpertor = sqlLocale ? this.sqlOperators[rule.operator] : this.operators[rule.operator];
|
|
6153
6374
|
if (rule.value instanceof Array) {
|
|
6154
6375
|
if (rule.operator.toString().indexOf('between') > -1) {
|
|
6155
|
-
var ruleCondition = sqlLocale ? ' ' +
|
|
6156
|
-
if (rule.type === 'date' && !
|
|
6157
|
-
valueStr
|
|
6376
|
+
var ruleCondition = sqlLocale ? ' ' + _this.l10n.getConstant('AND').toUpperCase() + ' ' : ' AND ';
|
|
6377
|
+
if (rule.type === 'date' && !_this.isDateFunction(rule.value[0])) {
|
|
6378
|
+
valueStr = "\"" + rule.value[0] + "\"" + ruleCondition + "\"" + rule.value[1] + "\"";
|
|
6158
6379
|
}
|
|
6159
6380
|
else {
|
|
6160
|
-
valueStr
|
|
6381
|
+
valueStr = "" + rule.value[0] + ruleCondition + rule.value[1];
|
|
6161
6382
|
}
|
|
6162
6383
|
}
|
|
6163
6384
|
else {
|
|
6164
6385
|
if (typeof rule.value[0] === 'string' && rule.value !== null) {
|
|
6165
|
-
|
|
6166
|
-
|
|
6167
|
-
valueStr += ',"' + rule.value[k] + '"';
|
|
6168
|
-
}
|
|
6169
|
-
valueStr += ')';
|
|
6386
|
+
var valueArray = rule.value;
|
|
6387
|
+
valueStr = '("' + valueArray.join('","') + '")';
|
|
6170
6388
|
}
|
|
6171
6389
|
else {
|
|
6172
|
-
valueStr
|
|
6390
|
+
valueStr = "(" + rule.value + ")";
|
|
6173
6391
|
}
|
|
6174
6392
|
}
|
|
6175
6393
|
}
|
|
6176
6394
|
else {
|
|
6177
6395
|
if (rule.operator.toString().indexOf('startswith') > -1) {
|
|
6178
|
-
valueStr
|
|
6396
|
+
valueStr = rule.value ? "(\"" + rule.value + "%\")" : "(" + rule.value + ")";
|
|
6179
6397
|
}
|
|
6180
6398
|
else if (rule.operator.toString().indexOf('endswith') > -1) {
|
|
6181
|
-
valueStr
|
|
6399
|
+
valueStr = rule.value ? "(\"%" + rule.value + "\")" : "(" + rule.value + ")";
|
|
6182
6400
|
}
|
|
6183
6401
|
else if (rule.operator.toString().indexOf('contains') > -1) {
|
|
6184
|
-
valueStr
|
|
6402
|
+
valueStr = rule.value ? "(\"%" + rule.value + "%\")" : "(" + rule.value + ")";
|
|
6185
6403
|
}
|
|
6186
6404
|
else {
|
|
6187
6405
|
if (rule.type === 'number' || typeof rule.value === 'boolean' ||
|
|
6188
6406
|
(rule.value === null && (rule.operator.toString().indexOf('empty') < -1))) {
|
|
6189
|
-
valueStr
|
|
6407
|
+
valueStr = "" + rule.value;
|
|
6190
6408
|
}
|
|
6191
6409
|
else if (rule.operator.toString().indexOf('empty') > -1) {
|
|
6192
|
-
valueStr
|
|
6410
|
+
valueStr = '""';
|
|
6193
6411
|
}
|
|
6194
6412
|
else {
|
|
6195
|
-
valueStr
|
|
6413
|
+
valueStr = "\"" + rule.value + "\"";
|
|
6196
6414
|
}
|
|
6197
6415
|
}
|
|
6198
6416
|
}
|
|
6417
|
+
var fieldName = rule.field;
|
|
6418
|
+
if (enableEscape) {
|
|
6419
|
+
fieldName = '`' + fieldName + '`';
|
|
6420
|
+
}
|
|
6421
|
+
else if (fieldName.indexOf(' ') > -1) {
|
|
6422
|
+
fieldName = '"' + fieldName + '"';
|
|
6423
|
+
}
|
|
6199
6424
|
if (rule.operator.toString().indexOf('null') > -1) {
|
|
6200
|
-
|
|
6201
|
-
rule.field = '`' + rule.field + '`';
|
|
6202
|
-
}
|
|
6203
|
-
else {
|
|
6204
|
-
if (rule.field.indexOf(' ') > -1) {
|
|
6205
|
-
rule.field = '"' + rule.field + '"';
|
|
6206
|
-
}
|
|
6207
|
-
}
|
|
6208
|
-
queryStr += rule.field + ' ' + ruleOpertor;
|
|
6425
|
+
ruleStr = fieldName + ' ' + ruleOpertor;
|
|
6209
6426
|
}
|
|
6210
6427
|
else {
|
|
6211
6428
|
var custOper = ruleOpertor;
|
|
@@ -6215,33 +6432,21 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
6215
6432
|
else if (rule.operator === 'isnotempty') {
|
|
6216
6433
|
custOper = '!=';
|
|
6217
6434
|
}
|
|
6218
|
-
|
|
6219
|
-
rule.field = '`' + rule.field + '`';
|
|
6220
|
-
}
|
|
6221
|
-
else {
|
|
6222
|
-
if (rule.field.indexOf(' ') > -1) {
|
|
6223
|
-
rule.field = '"' + rule.field + '"';
|
|
6224
|
-
}
|
|
6225
|
-
}
|
|
6226
|
-
queryStr += rule.field + ' ' + custOper + ' ' + valueStr;
|
|
6227
|
-
}
|
|
6228
|
-
if (rule.condition && rule.condition !== '') {
|
|
6229
|
-
condition = rule.condition;
|
|
6435
|
+
ruleStr = fieldName + ' ' + custOper + ' ' + valueStr;
|
|
6230
6436
|
}
|
|
6231
6437
|
}
|
|
6232
|
-
if (j !==
|
|
6233
|
-
|
|
6234
|
-
var rule = rules.rules[j];
|
|
6235
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
6438
|
+
if (j !== rules.rules.length - 1) {
|
|
6439
|
+
var condition = rules.condition;
|
|
6236
6440
|
if (condition === '' || (rule && rule.condition !== '' && rule.custom && rule.custom.isCustom)) {
|
|
6237
6441
|
condition = rule.condition;
|
|
6238
6442
|
}
|
|
6239
6443
|
if (condition) {
|
|
6240
|
-
condition = sqlLocale ?
|
|
6241
|
-
|
|
6444
|
+
condition = sqlLocale ? _this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();
|
|
6445
|
+
ruleStr += ' ' + condition + ' ';
|
|
6242
6446
|
}
|
|
6243
6447
|
}
|
|
6244
|
-
|
|
6448
|
+
return result + ruleStr;
|
|
6449
|
+
}, '');
|
|
6245
6450
|
}
|
|
6246
6451
|
if (!isRoot) {
|
|
6247
6452
|
queryStr += ')';
|
|
@@ -6559,23 +6764,19 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
6559
6764
|
return subOp[i].length;
|
|
6560
6765
|
}
|
|
6561
6766
|
}
|
|
6562
|
-
//Left Parenthesis
|
|
6563
6767
|
if (/^\(/.exec(sqlString)) {
|
|
6564
6768
|
this.parser.push(['Left', '(']);
|
|
6565
6769
|
return 1;
|
|
6566
6770
|
}
|
|
6567
|
-
//Right Parenthesis
|
|
6568
6771
|
if (/^\)/.exec(sqlString)) {
|
|
6569
6772
|
this.parser.push(['Right', ')']);
|
|
6570
6773
|
return 1;
|
|
6571
6774
|
}
|
|
6572
|
-
//Boolean
|
|
6573
6775
|
if (/^(true|false)/.exec(sqlString)) {
|
|
6574
6776
|
matchValue = /^(true|false)/.exec(sqlString)[0];
|
|
6575
6777
|
this.parser.push(['String', matchValue]);
|
|
6576
6778
|
return matchValue.length;
|
|
6577
6779
|
}
|
|
6578
|
-
//Null
|
|
6579
6780
|
if (/^null/.exec(sqlString)) {
|
|
6580
6781
|
matchValue = /^null/.exec(sqlString)[0];
|
|
6581
6782
|
this.parser.push(['String', null]);
|
|
@@ -6600,7 +6801,6 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
6600
6801
|
return matchValue.length;
|
|
6601
6802
|
}
|
|
6602
6803
|
}
|
|
6603
|
-
//String
|
|
6604
6804
|
var singleString = this.getSingleQuoteString(sqlString);
|
|
6605
6805
|
if (singleString !== '') {
|
|
6606
6806
|
matchValue = singleString;
|
|
@@ -6620,24 +6820,20 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
6620
6820
|
!this.checkCondition(sqlString, matchValue)) {
|
|
6621
6821
|
matchValue = this.combineSingleQuoteString(sqlString, matchValue);
|
|
6622
6822
|
}
|
|
6623
|
-
// end
|
|
6624
6823
|
this.parser.push(['String', matchValue]);
|
|
6625
6824
|
return matchValue.length;
|
|
6626
6825
|
}
|
|
6627
|
-
// Double String
|
|
6628
6826
|
var doubleString = this.getDoubleQuoteString(sqlString);
|
|
6629
6827
|
if (doubleString !== '') {
|
|
6630
6828
|
matchValue = doubleString;
|
|
6631
6829
|
this.parser.push(['DoubleString', matchValue]);
|
|
6632
6830
|
return matchValue.length;
|
|
6633
6831
|
}
|
|
6634
|
-
//Number
|
|
6635
6832
|
if (/^\d*\.?\d+/.exec(sqlString)) {
|
|
6636
6833
|
matchValue = /^\d*\.?\d+/.exec(sqlString)[0];
|
|
6637
6834
|
this.parser.push(['Number', matchValue]);
|
|
6638
6835
|
return matchValue.length;
|
|
6639
6836
|
}
|
|
6640
|
-
//Negative Number
|
|
6641
6837
|
if (/^-?\d*\.?\d+/.exec(sqlString)) {
|
|
6642
6838
|
matchValue = /^-?\d*\.?\d+/.exec(sqlString)[0];
|
|
6643
6839
|
this.parser.push(['Number', matchValue]);
|
|
@@ -6805,7 +7001,7 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
6805
7001
|
fieldName += this.separator;
|
|
6806
7002
|
}
|
|
6807
7003
|
}
|
|
6808
|
-
return this.getColumn(fieldName).label;
|
|
7004
|
+
return this.getColumn(fieldName) ? this.getColumn(fieldName).label : '';
|
|
6809
7005
|
};
|
|
6810
7006
|
QueryBuilder.prototype.processParser = function (parser, rules, levelColl, sqlLocale) {
|
|
6811
7007
|
var j;
|
|
@@ -7037,12 +7233,16 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
7037
7233
|
}
|
|
7038
7234
|
}
|
|
7039
7235
|
if (this.enableSeparateConnector) {
|
|
7040
|
-
this.addRules([{
|
|
7041
|
-
'
|
|
7236
|
+
this.addRules([{
|
|
7237
|
+
'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
|
|
7238
|
+
'value': getRule.value, 'condition': getRule.condition
|
|
7239
|
+
}], groupId);
|
|
7042
7240
|
}
|
|
7043
7241
|
else {
|
|
7044
|
-
this.addRules([{
|
|
7045
|
-
'
|
|
7242
|
+
this.addRules([{
|
|
7243
|
+
'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
|
|
7244
|
+
'value': getRule.value
|
|
7245
|
+
}], groupId);
|
|
7046
7246
|
}
|
|
7047
7247
|
this.ruleIndex = -1;
|
|
7048
7248
|
};
|
|
@@ -7217,115 +7417,65 @@ var QueryBuilder = /** @class */ (function (_super) {
|
|
|
7217
7417
|
this.disableRuleControls(target, groupElem, isDisabled);
|
|
7218
7418
|
};
|
|
7219
7419
|
QueryBuilder.prototype.disableRuleControls = function (target, groupElem, isDisabled) {
|
|
7220
|
-
var
|
|
7221
|
-
|
|
7222
|
-
|
|
7223
|
-
|
|
7224
|
-
|
|
7225
|
-
|
|
7226
|
-
|
|
7227
|
-
|
|
7228
|
-
|
|
7229
|
-
|
|
7230
|
-
|
|
7231
|
-
|
|
7420
|
+
var disableComponents = function (elements, componentGetter, isDisabled) {
|
|
7421
|
+
elements.forEach(function (element) {
|
|
7422
|
+
var component = componentGetter(element);
|
|
7423
|
+
if ('enabled' in component) {
|
|
7424
|
+
component.enabled = !isDisabled;
|
|
7425
|
+
}
|
|
7426
|
+
else if ('disabled' in component) {
|
|
7427
|
+
component.disabled = isDisabled;
|
|
7428
|
+
}
|
|
7429
|
+
});
|
|
7430
|
+
};
|
|
7431
|
+
var elements = {
|
|
7432
|
+
ddl: groupElem.querySelectorAll('.e-control.e-dropdownlist'),
|
|
7433
|
+
numeric: groupElem.querySelectorAll('.e-control.e-numerictextbox'),
|
|
7434
|
+
text: groupElem.querySelectorAll('.e-control.e-textbox'),
|
|
7435
|
+
date: groupElem.querySelectorAll('.e-control.e-datepicker'),
|
|
7436
|
+
checkbox: groupElem.querySelectorAll('.e-control.e-checkbox'),
|
|
7437
|
+
radio: groupElem.querySelectorAll('.e-control.e-radio'),
|
|
7438
|
+
multiSelect: groupElem.querySelectorAll('.e-control.e-multiselect'),
|
|
7439
|
+
deleteElem: groupElem.querySelectorAll('.e-rule-delete'),
|
|
7440
|
+
lockElem: groupElem.querySelectorAll('.e-lock-rule'),
|
|
7441
|
+
cloneElem: groupElem.querySelectorAll('.e-clone-rule'),
|
|
7442
|
+
ruleElem: groupElem.querySelectorAll('.e-rule-container')
|
|
7443
|
+
};
|
|
7444
|
+
elements.deleteElem.forEach(function (elem, i) {
|
|
7232
7445
|
if (isDisabled) {
|
|
7233
|
-
if (ruleElem[i] && ruleElem[i].classList.contains('e-disable')) {
|
|
7234
|
-
ruleElem[i].classList.add('e-disable');
|
|
7446
|
+
if (elements.ruleElem[i] && elements.ruleElem[i].classList.contains('e-disable')) {
|
|
7447
|
+
elements.ruleElem[i].classList.add('e-disable');
|
|
7235
7448
|
}
|
|
7236
|
-
deleteElem[i].disabled = true;
|
|
7237
|
-
if (cloneElem[i]) {
|
|
7238
|
-
cloneElem[i].disabled = true;
|
|
7449
|
+
elements.deleteElem[i].disabled = true;
|
|
7450
|
+
if (elements.cloneElem[i]) {
|
|
7451
|
+
elements.cloneElem[i].disabled = true;
|
|
7239
7452
|
}
|
|
7240
|
-
if (lockElem[i] !== target) {
|
|
7241
|
-
lockElem[i].disabled = true;
|
|
7242
|
-
lockElem[i].children[0].classList.remove('e-unlock');
|
|
7243
|
-
lockElem[i].children[0].classList.add('e-lock');
|
|
7453
|
+
if (elements.lockElem[i] !== target) {
|
|
7454
|
+
elements.lockElem[i].disabled = true;
|
|
7455
|
+
elements.lockElem[i].children[0].classList.remove('e-unlock');
|
|
7456
|
+
elements.lockElem[i].children[0].classList.add('e-lock');
|
|
7244
7457
|
}
|
|
7245
7458
|
}
|
|
7246
7459
|
else {
|
|
7247
|
-
if (ruleElem[i]) {
|
|
7248
|
-
ruleElem[i].classList.remove('e-disable');
|
|
7460
|
+
if (elements.ruleElem[i]) {
|
|
7461
|
+
elements.ruleElem[i].classList.remove('e-disable');
|
|
7249
7462
|
}
|
|
7250
|
-
if (cloneElem[i]) {
|
|
7251
|
-
cloneElem[i].disabled = false;
|
|
7463
|
+
if (elements.cloneElem[i]) {
|
|
7464
|
+
elements.cloneElem[i].disabled = false;
|
|
7252
7465
|
}
|
|
7253
|
-
deleteElem[i].disabled = false;
|
|
7254
|
-
lockElem[i].disabled = false;
|
|
7255
|
-
lockElem[i].children[0].classList.remove('e-lock');
|
|
7256
|
-
lockElem[i].children[0].classList.add('e-unlock');
|
|
7257
|
-
}
|
|
7258
|
-
}
|
|
7259
|
-
var dropDownObj;
|
|
7260
|
-
var numericObj;
|
|
7261
|
-
var textObj;
|
|
7262
|
-
var dateObj;
|
|
7263
|
-
var checkBoxObj;
|
|
7264
|
-
var radioBtnObj;
|
|
7265
|
-
var multiSelectObj;
|
|
7266
|
-
for (var i = 0; i < ddlElement.length; i++) {
|
|
7267
|
-
dropDownObj = getComponent(ddlElement[i], 'dropdownlist');
|
|
7268
|
-
if (isDisabled) {
|
|
7269
|
-
dropDownObj.enabled = false;
|
|
7270
|
-
}
|
|
7271
|
-
else {
|
|
7272
|
-
dropDownObj.enabled = true;
|
|
7273
|
-
}
|
|
7274
|
-
}
|
|
7275
|
-
for (var i = 0; i < numericElement.length; i++) {
|
|
7276
|
-
numericObj = getComponent(numericElement[i], 'numerictextbox');
|
|
7277
|
-
if (isDisabled) {
|
|
7278
|
-
numericObj.enabled = false;
|
|
7279
|
-
}
|
|
7280
|
-
else {
|
|
7281
|
-
numericObj.enabled = true;
|
|
7282
|
-
}
|
|
7283
|
-
}
|
|
7284
|
-
for (var i = 0; i < textElement.length; i++) {
|
|
7285
|
-
textObj = getComponent(textElement[i], 'textbox');
|
|
7286
|
-
if (isDisabled) {
|
|
7287
|
-
textObj.enabled = false;
|
|
7288
|
-
}
|
|
7289
|
-
else {
|
|
7290
|
-
textObj.enabled = true;
|
|
7291
|
-
}
|
|
7292
|
-
}
|
|
7293
|
-
for (var i = 0; i < dateElement.length; i++) {
|
|
7294
|
-
dateObj = getComponent(dateElement[i], 'datepicker');
|
|
7295
|
-
if (isDisabled) {
|
|
7296
|
-
dateObj.enabled = false;
|
|
7297
|
-
}
|
|
7298
|
-
else {
|
|
7299
|
-
dateObj.enabled = true;
|
|
7466
|
+
elements.deleteElem[i].disabled = false;
|
|
7467
|
+
elements.lockElem[i].disabled = false;
|
|
7468
|
+
elements.lockElem[i].children[0].classList.remove('e-lock');
|
|
7469
|
+
elements.lockElem[i].children[0].classList.add('e-unlock');
|
|
7300
7470
|
}
|
|
7301
|
-
}
|
|
7302
|
-
|
|
7303
|
-
|
|
7304
|
-
|
|
7305
|
-
|
|
7306
|
-
|
|
7307
|
-
|
|
7308
|
-
|
|
7309
|
-
}
|
|
7310
|
-
}
|
|
7311
|
-
for (var i = 0; i < radioBtnElement.length; i++) {
|
|
7312
|
-
radioBtnObj = getComponent(radioBtnElement[i], 'radio');
|
|
7313
|
-
if (isDisabled) {
|
|
7314
|
-
radioBtnObj.disabled = true;
|
|
7315
|
-
}
|
|
7316
|
-
else {
|
|
7317
|
-
radioBtnObj.disabled = false;
|
|
7318
|
-
}
|
|
7319
|
-
}
|
|
7320
|
-
for (var i = 0; i < multiSelectElement.length; i++) {
|
|
7321
|
-
multiSelectObj = getComponent(multiSelectElement[i], 'multiselect');
|
|
7322
|
-
if (isDisabled) {
|
|
7323
|
-
multiSelectObj.enabled = false;
|
|
7324
|
-
}
|
|
7325
|
-
else {
|
|
7326
|
-
multiSelectObj.enabled = true;
|
|
7327
|
-
}
|
|
7328
|
-
}
|
|
7471
|
+
});
|
|
7472
|
+
disableComponents(elements.ddl, function (elem) { return getComponent(elem, 'dropdownlist'); }, isDisabled);
|
|
7473
|
+
disableComponents(elements.numeric, function (elem) { return getComponent(elem, 'numerictextbox'); }, isDisabled);
|
|
7474
|
+
disableComponents(elements.text, function (elem) { return getComponent(elem, 'textbox'); }, isDisabled);
|
|
7475
|
+
disableComponents(elements.date, function (elem) { return getComponent(elem, 'datepicker'); }, isDisabled);
|
|
7476
|
+
disableComponents(elements.checkbox, function (elem) { return getComponent(elem, 'checkbox'); }, isDisabled);
|
|
7477
|
+
disableComponents(elements.radio, function (elem) { return getComponent(elem, 'radio'); }, isDisabled);
|
|
7478
|
+
disableComponents(elements.multiSelect, function (elem) { return getComponent(elem, 'multiselect'); }, isDisabled);
|
|
7329
7479
|
};
|
|
7330
7480
|
__decorate([
|
|
7331
7481
|
Event()
|