@syncfusion/ej2-querybuilder 19.4.53 → 19.4.55

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.
@@ -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
- dropDownObj = getComponent(ruleElemCln[i].querySelector('.e-rule-field input.e-control'), 'dropdownlist');
752
- this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);
753
- validateRule = !isNullOrUndefined(dropDownObj.index) && this.selectedColumn.validation;
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
- let value = dataSource[i][field];
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
- data[field] = value;
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: this.selectedRule.field, value: this.selectedRule.field },
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);
@@ -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;