@syncfusion/ej2-querybuilder 19.4.52 → 19.4.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- 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 +60 -11
- package/dist/es6/ej2-querybuilder.es2015.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es5.js +65 -12
- 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 +8 -8
- package/src/query-builder/query-builder.d.ts +1 -0
- package/src/query-builder/query-builder.js +65 -12
|
@@ -137,6 +137,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
137
137
|
this.isFieldChange = false;
|
|
138
138
|
this.isFieldClose = false;
|
|
139
139
|
this.isDestroy = false;
|
|
140
|
+
this.isGetNestedData = false;
|
|
140
141
|
MultiSelect.Inject(CheckBoxSelection);
|
|
141
142
|
}
|
|
142
143
|
getPersistData() {
|
|
@@ -729,6 +730,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
729
730
|
*/
|
|
730
731
|
validateFields() {
|
|
731
732
|
let isValid = true;
|
|
733
|
+
let dropDownTreeObj;
|
|
732
734
|
if (this.allowValidation) {
|
|
733
735
|
const excludeOprs = ['isnull', 'isnotnull', 'isempty', 'isnotempty'];
|
|
734
736
|
let i;
|
|
@@ -748,9 +750,18 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
748
750
|
rule = this.getParentGroup(groupElem);
|
|
749
751
|
index = 0;
|
|
750
752
|
indexElem = tempElem = ruleElemCln[i];
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
753
|
+
if (this.fieldMode === 'DropdownTree') {
|
|
754
|
+
dropDownTreeObj = getComponent(ruleElemCln[i].querySelector('.e-rule-field input.e-control'), 'dropdowntree');
|
|
755
|
+
if (dropDownTreeObj.value && dropDownTreeObj.value.length) {
|
|
756
|
+
this.selectedColumn = this.getColumn(dropDownTreeObj.value[0]);
|
|
757
|
+
validateRule = this.selectedColumn.validation;
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
else {
|
|
761
|
+
dropDownObj = getComponent(ruleElemCln[i].querySelector('.e-rule-field input.e-control'), 'dropdownlist');
|
|
762
|
+
this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);
|
|
763
|
+
validateRule = !isNullOrUndefined(dropDownObj.index) && this.selectedColumn.validation;
|
|
764
|
+
}
|
|
754
765
|
fieldElem = tempElem.querySelector('.e-rule-field input.e-control');
|
|
755
766
|
if (validateRule && validateRule.isRequired) {
|
|
756
767
|
while (indexElem && indexElem.previousElementSibling !== null) {
|
|
@@ -788,7 +799,9 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
788
799
|
}
|
|
789
800
|
}
|
|
790
801
|
}
|
|
791
|
-
else if (dropDownObj.element && isNullOrUndefined(dropDownObj.index))
|
|
802
|
+
else if ((dropDownObj && dropDownObj.element && isNullOrUndefined(dropDownObj.index)) ||
|
|
803
|
+
(dropDownTreeObj && dropDownTreeObj.element && (isNullOrUndefined(dropDownTreeObj.value) ||
|
|
804
|
+
dropDownTreeObj.value.length < 1))) {
|
|
792
805
|
if (fieldElem.parentElement.className.indexOf('e-tooltip') < 0) {
|
|
793
806
|
this.renderToolTip(fieldElem.parentElement);
|
|
794
807
|
}
|
|
@@ -1268,7 +1281,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1268
1281
|
const fieldElem = closest(args.element, '.e-rule-filter') || closest(args.element, '.e-rule-sub-filter');
|
|
1269
1282
|
const column = this.fieldMode === 'DropdownTree' ? this.getColumn(args.value[0]) : this.getColumn(args.value);
|
|
1270
1283
|
if (this.fieldMode === 'DropdownTree' && fieldElem != null) {
|
|
1271
|
-
const ddtElem = fieldElem.querySelector('.e-control');
|
|
1284
|
+
const ddtElem = fieldElem.querySelector('.e-dropdowntree.e-control');
|
|
1272
1285
|
const ddt = getComponent(ddtElem, 'dropdowntree');
|
|
1273
1286
|
if (column) {
|
|
1274
1287
|
if (column.type === 'object') {
|
|
@@ -1749,15 +1762,36 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1749
1762
|
getDistinctValues(dataSource, field) {
|
|
1750
1763
|
const original = {};
|
|
1751
1764
|
const result = [];
|
|
1765
|
+
let nest = [];
|
|
1766
|
+
let value = "";
|
|
1767
|
+
let isNested = field.indexOf(this.separator);
|
|
1752
1768
|
for (let i = 0, iLen = dataSource.length; i < iLen; i++) {
|
|
1753
|
-
|
|
1769
|
+
if (isNested === 0) {
|
|
1770
|
+
value = dataSource[i][field];
|
|
1771
|
+
}
|
|
1772
|
+
else {
|
|
1773
|
+
nest = field.split(this.separator);
|
|
1774
|
+
nest.forEach(element => {
|
|
1775
|
+
if (value) {
|
|
1776
|
+
value = value[element];
|
|
1777
|
+
}
|
|
1778
|
+
else {
|
|
1779
|
+
value = dataSource[i][element];
|
|
1780
|
+
}
|
|
1781
|
+
});
|
|
1782
|
+
}
|
|
1754
1783
|
if (Number(dataSource[i][field]) === dataSource[i][field] && dataSource[i][field] % 1 !== 0) {
|
|
1755
1784
|
value = dataSource[i][field].toString();
|
|
1756
1785
|
}
|
|
1757
1786
|
const data = {};
|
|
1758
|
-
if (!(value in original)) {
|
|
1787
|
+
if (!(value in original) && !isNullOrUndefined(value)) {
|
|
1759
1788
|
original[value] = 1;
|
|
1760
|
-
|
|
1789
|
+
if (isNested === 0) {
|
|
1790
|
+
data[field] = value;
|
|
1791
|
+
}
|
|
1792
|
+
else {
|
|
1793
|
+
data[nest[nest.length - 1]] = value;
|
|
1794
|
+
}
|
|
1761
1795
|
result.push(data);
|
|
1762
1796
|
}
|
|
1763
1797
|
}
|
|
@@ -1767,6 +1801,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1767
1801
|
let isFetched = false;
|
|
1768
1802
|
let ds;
|
|
1769
1803
|
let isValues = false;
|
|
1804
|
+
this.isGetNestedData = false;
|
|
1770
1805
|
if (this.dataColl[1]) {
|
|
1771
1806
|
if (Object.keys(this.dataColl[1]).indexOf(rule.field) > -1) {
|
|
1772
1807
|
isFetched = true;
|
|
@@ -1777,11 +1812,17 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1777
1812
|
if (!this.dataColl.length && values.length) {
|
|
1778
1813
|
isValues = true;
|
|
1779
1814
|
}
|
|
1815
|
+
let fieldValue = this.selectedRule.field;
|
|
1816
|
+
let isNested = this.selectedRule.field.indexOf(this.separator);
|
|
1817
|
+
if (isNested !== 0 && this.fieldMode !== "DropdownTree") {
|
|
1818
|
+
let nest = this.selectedRule.field.split(this.separator);
|
|
1819
|
+
fieldValue = nest[nest.length - 1];
|
|
1820
|
+
}
|
|
1780
1821
|
let multiSelectValue;
|
|
1781
1822
|
multiSelectValue = {
|
|
1782
1823
|
dataSource: isValues ? values : (isFetched ? ds : this.dataManager),
|
|
1783
1824
|
query: new Query([rule.field]),
|
|
1784
|
-
fields: { text:
|
|
1825
|
+
fields: { text: fieldValue, value: fieldValue },
|
|
1785
1826
|
placeholder: this.l10n.getConstant('SelectValue'),
|
|
1786
1827
|
value: selectedValue,
|
|
1787
1828
|
mode: 'CheckBox',
|
|
@@ -1809,6 +1850,10 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1809
1850
|
if (Object.keys(this.dataColl[1]).indexOf(value) > -1) {
|
|
1810
1851
|
isFetched = true;
|
|
1811
1852
|
}
|
|
1853
|
+
const isNest = value.indexOf(this.separator);
|
|
1854
|
+
if (isNest !== 0 && this.isGetNestedData) {
|
|
1855
|
+
isFetched = true;
|
|
1856
|
+
}
|
|
1812
1857
|
}
|
|
1813
1858
|
if (!isFetched) {
|
|
1814
1859
|
args.cancel = true;
|
|
@@ -1836,6 +1881,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
1836
1881
|
}
|
|
1837
1882
|
this.dataColl = extend(this.dataColl, dummyData, [], true);
|
|
1838
1883
|
multiselectObj.dataSource = this.getDistinctValues(this.dataColl, value);
|
|
1884
|
+
this.isGetNestedData = true;
|
|
1839
1885
|
hideSpinner(closest(element, '.e-multi-select-wrapper').parentElement);
|
|
1840
1886
|
}).catch((e) => {
|
|
1841
1887
|
deferred.reject(e);
|
|
@@ -3553,7 +3599,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
3553
3599
|
}
|
|
3554
3600
|
}
|
|
3555
3601
|
else if ((isNullOrUndefined(rule.condition)) && isNullOrUndefined(rule.rules)) {
|
|
3556
|
-
rule = {
|
|
3602
|
+
rule = {};
|
|
3557
3603
|
}
|
|
3558
3604
|
else {
|
|
3559
3605
|
if (this.enableNotCondition) {
|
|
@@ -3839,7 +3885,7 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
3839
3885
|
break;
|
|
3840
3886
|
}
|
|
3841
3887
|
}
|
|
3842
|
-
else if (field.indexOf(this.separator) > -1) {
|
|
3888
|
+
else if (field && field.indexOf(this.separator) > -1) {
|
|
3843
3889
|
if (columns[i].field === field.split(this.separator)[0]) {
|
|
3844
3890
|
column = columns[i];
|
|
3845
3891
|
break;
|
|
@@ -4072,6 +4118,9 @@ let QueryBuilder = class QueryBuilder extends Component {
|
|
|
4072
4118
|
}
|
|
4073
4119
|
}
|
|
4074
4120
|
}
|
|
4121
|
+
if (rule.rules.length === 0) {
|
|
4122
|
+
rule.rules[0] = { 'label': '', 'field': '', 'operator': '', 'type': '', 'value': '' };
|
|
4123
|
+
}
|
|
4075
4124
|
const ruleColl = rule.rules;
|
|
4076
4125
|
if (!isNullOrUndefined(ruleColl)) {
|
|
4077
4126
|
for (let i = 0, len = ruleColl.length; i < len; i++) {
|