dtable-utils 5.0.5-beta.4 → 5.0.6-alpha1

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.
@@ -1,9 +1,8 @@
1
- import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
1
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
3
2
  import dayjs from 'dayjs';
4
3
  import utc from 'dayjs/plugin/utc';
5
4
  import { ValidateFilter } from '../../validate/filter.js';
6
- import { otherDate, checkIsFilterGroup } from '../../filter/core.js';
5
+ import { otherDate } from '../../filter/core.js';
7
6
  import { getTableColumnByKey } from '../../table/column.js';
8
7
  import { FILTER_ERR_MSG } from '../../constants/filter/index.js';
9
8
  import { CellType } from '../../constants/cell-type.js';
@@ -13,8 +12,6 @@ import PatchUtils from '../../helper/patch-utils.js';
13
12
  import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js';
14
13
  import { FILTER_TERM_MODIFIER_TYPE } from '../../constants/filter/filter-modifier.js';
15
14
 
16
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18
15
  dayjs.extend(utc);
19
16
 
20
17
  // TEXT | GEOLOCATION | EMAIL | AUTO_NUMBER
@@ -117,7 +114,7 @@ var dateSqlCondition = function dateSqlCondition(column, filterItem) {
117
114
  filter_term = filterItem.filter_term,
118
115
  filter_term_modifier = filterItem.filter_term_modifier;
119
116
  var filterLabel = [FILTER_PREDICATE_TYPE.EMPTY, FILTER_PREDICATE_TYPE.NOT_EMPTY];
120
- if ((!filter_term || filter_term.length === 0) && filterLabel.indexOf(filter_predicate) < 0 && filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE) {
117
+ if (filter_term.length === 0 && filterLabel.indexOf(filter_predicate) < 0 && filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE) {
121
118
  return '';
122
119
  }
123
120
  if (filter_predicate === FILTER_PREDICATE_TYPE.IS) {
@@ -176,7 +173,7 @@ var ctimeSqlCondition = function ctimeSqlCondition(column, filterItem) {
176
173
  filter_term = filterItem.filter_term,
177
174
  filter_term_modifier = filterItem.filter_term_modifier;
178
175
  var filterLabel = [FILTER_PREDICATE_TYPE.EMPTY, FILTER_PREDICATE_TYPE.NOT_EMPTY];
179
- if ((!filter_term || filter_term.length === 0) && filterLabel.indexOf(filter_predicate) < 0 && filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE) {
176
+ if (filter_term.length === 0 && filterLabel.indexOf(filter_predicate) < 0 && filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE) {
180
177
  return '';
181
178
  }
182
179
 
@@ -695,103 +692,32 @@ var getSqlConditionByFilter = function getSqlConditionByFilter(column, filterIte
695
692
  }
696
693
  return '';
697
694
  };
698
-
699
- /**
700
- * FilterGroup: {"filter_conjunction": "And", filters: [Filter, ...]}
701
- * Filter: {"column_key": "xxx", filter_predicate: "xxx", ...}
702
- * @param {array} filters
703
- * @param {object} table
704
- * @param {string} username
705
- * @param {string} userId
706
- * @param {object} userDepartmentIdsMap
707
- * @returns string
708
- */
709
- var getSqlConditionsByFilters = function getSqlConditionsByFilters(filters, table, username, userId, userDepartmentIdsMap) {
710
- var columns = table.columns;
695
+ var filter2SqlCondition = function filter2SqlCondition(table, view, username, userId, userDepartmentIdsMap) {
711
696
  var patchedUsername = PatchUtils.getUsername(username);
712
697
  var patchedUserId = PatchUtils.getUserId(userId);
713
698
  var patchedUserDepartmentIdsMap = PatchUtils.getUserDepartmentIdsMap(userDepartmentIdsMap);
714
- var sqlConditions = [];
715
- filters.forEach(function (filter) {
716
- if (checkIsFilterGroup(filter)) {
717
- var subFilters = filter.filters,
718
- sub_filter_conjunction = filter.filter_conjunction;
719
- var subSqlConditions = subFilters.map(function (subFilter) {
720
- var filterColumn = getTableColumnByKey(table, subFilter.column_key);
721
- return getSqlConditionByFilter(filterColumn, subFilter, patchedUsername, patchedUserId, patchedUserDepartmentIdsMap);
722
- });
723
- var subSqlConditionsLength = subSqlConditions.length;
724
- if (subSqlConditionsLength > 0) {
725
- var subSqlConditionsString = subSqlConditions.length === 1 ? subSqlConditions + '' : "(".concat(subSqlConditions.join(' ' + sub_filter_conjunction + ' '), ")");
726
- sqlConditions.push(subSqlConditionsString);
727
- }
728
- } else {
729
- var column_key = filter.column_key;
730
- var filterColumn = columns.find(function (column) {
731
- return column.key === column_key;
732
- });
733
- sqlConditions.push(getSqlConditionByFilter(filterColumn, filter, patchedUsername, patchedUserId, patchedUserDepartmentIdsMap));
734
- }
735
- });
736
- return sqlConditions;
737
- };
738
- var checkFilter = function checkFilter(filter, columns) {
739
- var _ValidateFilter$valid = ValidateFilter.validate(filter, columns),
740
- error_message = _ValidateFilter$valid.error_message;
741
- if (error_message) {
742
- if (error_message === FILTER_ERR_MSG.INCOMPLETE_FILTER) {
743
- return false;
744
- }
745
- throw new Error(error_message);
746
- }
747
- return true;
748
- };
749
- var validateFilters = function validateFilters(filters, columns) {
750
- var validFilters = [];
751
- filters.forEach(function (filter) {
752
- if (checkIsFilterGroup(filter)) {
753
- var subFilters = filter.filters;
754
- if (!Array.isArray(subFilters) || subFilters.length === 0) {
755
- return;
756
- }
757
- var validSubFilters = subFilters.filter(function (subFilter) {
758
- return checkFilter(subFilter, columns);
759
- });
760
- if (validSubFilters.length === 0) {
761
- return;
762
- }
763
- validFilters.push(_objectSpread(_objectSpread({}, filter), {}, {
764
- filters: validSubFilters
765
- }));
766
- } else {
767
- if (!checkFilter(filter, columns)) {
768
- return;
769
- }
770
- validFilters.push(filter);
771
- }
772
- });
773
- return validFilters;
774
- };
775
- var filter2SqlCondition = function filter2SqlCondition(table, view, username, userId, userDepartmentIdsMap) {
776
699
  var columns = table.columns;
777
700
  var filter_conjunction = view.filter_conjunction,
778
701
  filters = view.filters;
779
702
  if (typeof filter_conjunction !== 'string' || !Array.isArray(filters) || filters.length === 0) {
780
703
  return '';
781
704
  }
782
- var validFilters = [];
783
- try {
784
- validFilters = validateFilters(filters, columns);
785
- } catch (err) {
786
- throw new Error(err.message);
787
- }
788
- if (validFilters.length === 0) {
789
- return '';
790
- }
791
705
 
792
706
  // 1. add WHERE condition
793
707
  var filterHeader = 'WHERE ';
794
- var stringList = getSqlConditionsByFilters(validFilters, table, username, userId, userDepartmentIdsMap);
708
+ var stringList = filters.map(function (filterItem) {
709
+ var _ValidateFilter$valid = ValidateFilter.validate(filterItem, columns),
710
+ error_message = _ValidateFilter$valid.error_message;
711
+ if (error_message) {
712
+ if (error_message === FILTER_ERR_MSG.INCOMPLETE_FILTER) {
713
+ return '';
714
+ }
715
+ throw new Error(error_message);
716
+ }
717
+ var column_key = filterItem.column_key;
718
+ var column = getTableColumnByKey(table, column_key);
719
+ return getSqlConditionByFilter(column, filterItem, patchedUsername, patchedUserId, patchedUserDepartmentIdsMap);
720
+ });
795
721
 
796
722
  // 2. filtered '' sql clause
797
723
  stringList = stringList.filter(function (item) {
@@ -803,14 +729,9 @@ var filter2SqlCondition = function filter2SqlCondition(table, view, username, us
803
729
  // const filterContent = stringList.join(' ' + filter_conjunction + ' ');
804
730
  var filterContent = stringList[0];
805
731
  for (var i = 1; i < stringList.length; i++) {
806
- var currStr = stringList[i];
807
- if (currStr.startsWith('(') && currStr.endsWith(')')) {
808
- filterContent += " ".concat(filter_conjunction, " ").concat(stringList[i]);
809
- } else {
810
- filterContent += " ".concat(filter_conjunction, " (").concat(stringList[i], ")");
811
- }
732
+ filterContent += " ".concat(filter_conjunction, " (").concat(stringList[i], ")");
812
733
  }
813
734
  return filterHeader + filterContent;
814
735
  };
815
736
 
816
- export { arrayColumnCondition, checkboxSqlCondition, collaboratorSqlCondition, creatorSqlCondition, ctimeSqlCondition, dateSqlCondition, departmentMultipleSelectSqlCondition, departmentSingleSelectSqlCondition, fileSqlCondition, filter2SqlCondition, formulaSqlCondition, getSqlConditionByFilter, getSqlConditionsByFilters, linkSqlCondition, longtextSqlCondition, multipleSelectSqlCondition, numberSqlCondition, singleSelectSqlCondition, textSqlCondition };
737
+ export { checkboxSqlCondition, collaboratorSqlCondition, creatorSqlCondition, ctimeSqlCondition, dateSqlCondition, departmentSingleSelectSqlCondition, fileSqlCondition, filter2SqlCondition, formulaSqlCondition, getSqlConditionByFilter, linkSqlCondition, longtextSqlCondition, multipleSelectSqlCondition, numberSqlCondition, singleSelectSqlCondition, textSqlCondition };
@@ -1,7 +1,7 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import deepCopy from 'deep-copy';
3
3
  import { deleteInvalidFilter, getFormattedFilters } from '../filter/core.js';
4
- import { filterRows, filterRow as _filterRow } from '../filter/filter-row.js';
4
+ import { filterRows, filterRow } from '../filter/filter-row.js';
5
5
  import { ValidateFilter } from '../validate/filter.js';
6
6
  import { isNumberColumn } from '../column/number.js';
7
7
  import { getRowsByIds } from '../table/row.js';
@@ -327,7 +327,7 @@ var getColumnColors = function getColumnColors(rows, view, table, value) {
327
327
  var filter_conjunction = colorRule.filter_conjunction,
328
328
  filters = colorRule.filters,
329
329
  color = colorRule.color;
330
- if (_filterRow(row, filter_conjunction, filters, {
330
+ if (filterRow(row, filter_conjunction, filters, {
331
331
  formulaRow: formulaRow,
332
332
  username: username,
333
333
  userId: userId,
@@ -6,7 +6,7 @@ import { getColumnOptions } from '../column/option.js';
6
6
  import { getGeolocationDisplayString } from '../cell-value-get/geolocation.js';
7
7
  import { ValidateFilter } from '../validate/filter.js';
8
8
  import { deleteInvalidFilter, getFormattedFilters } from '../filter/core.js';
9
- import { filterRow as _filterRow } from '../filter/filter-row.js';
9
+ import { filterRow } from '../filter/filter-row.js';
10
10
  import { ROW_COLOR_TYPE, ROW_COLOR_FOR_DUPLICATE_VALUES, SUPPORT_CHECKING_DUPLICATE_COLUMNS_TYPES } from '../constants/row-color.js';
11
11
  import { CellType } from '../constants/cell-type.js';
12
12
 
@@ -177,7 +177,7 @@ var getRowsColorByRules = function getRowsColorByRules(rows, view, table) {
177
177
  var color = colorRule.color,
178
178
  filter_conjunction = colorRule.filter_conjunction,
179
179
  filters = colorRule.filters;
180
- if (_filterRow(row, filter_conjunction, filters, {
180
+ if (filterRow(row, filter_conjunction, filters, {
181
181
  formulaRow: formulaRow,
182
182
  username: username,
183
183
  userId: userId,
package/es/common.js CHANGED
@@ -42,8 +42,5 @@ var isEmptyObject = function isEmptyObject(obj) {
42
42
  }
43
43
  return true;
44
44
  };
45
- var hasOwnProperty = function hasOwnProperty(obj, key) {
46
- return Object.prototype.hasOwnProperty.call(obj, key);
47
- };
48
45
 
49
- export { generatorBase64Code, hasOwnProperty, isEmpty, isEmptyObject };
46
+ export { generatorBase64Code, isEmpty, isEmptyObject };
@@ -2,7 +2,7 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import { CellType } from './cell-type.js';
3
3
 
4
4
  var _COLUMNS_ICON_CONFIG, _SINGLE_CELL_VALUE_CO;
5
- var COLUMNS_ICON_CONFIG = (_COLUMNS_ICON_CONFIG = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_COLUMNS_ICON_CONFIG, CellType.DEFAULT, 'dtable-font dtable-icon-single-line-text'), CellType.TEXT, 'dtable-font dtable-icon-single-line-text'), CellType.NUMBER, 'dtable-font dtable-icon-number'), CellType.CHECKBOX, 'dtable-font dtable-icon-check-square-solid'), CellType.DATE, 'dtable-font dtable-icon-calendar-alt-solid'), CellType.SINGLE_SELECT, 'dtable-font dtable-icon-single-election'), CellType.LONG_TEXT, 'dtable-font dtable-icon-long-text'), CellType.IMAGE, 'dtable-font dtable-icon-picture'), CellType.FILE, 'dtable-font dtable-icon-file-alt-solid'), CellType.MULTIPLE_SELECT, 'dtable-font dtable-icon-multiple-selection'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_COLUMNS_ICON_CONFIG, CellType.COLLABORATOR, 'dtable-font dtable-icon-collaborator'), CellType.LINK, 'dtable-font dtable-icon-link-other-record'), CellType.FORMULA, 'dtable-font dtable-icon-formula'), CellType.LINK_FORMULA, 'dtable-font dtable-icon-link-formulas'), CellType.CREATOR, 'dtable-font dtable-icon-creator'), CellType.CTIME, 'dtable-font dtable-icon-creation-time'), CellType.LAST_MODIFIER, 'dtable-font dtable-icon-creator'), CellType.MTIME, 'dtable-font dtable-icon-creation-time'), CellType.GEOLOCATION, 'dtable-font dtable-icon-location'), CellType.AUTO_NUMBER, 'dtable-font dtable-icon-autonumber'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_COLUMNS_ICON_CONFIG, CellType.URL, 'dtable-font dtable-icon-url'), CellType.EMAIL, 'dtable-font dtable-icon-email'), CellType.DURATION, 'dtable-font dtable-icon-duration'), CellType.BUTTON, 'dtable-font dtable-icon-button'), CellType.RATE, 'dtable-font dtable-icon-rate'), CellType.DIGITAL_SIGN, 'dtable-font dtable-icon-handwritten-signature'), CellType.DEPARTMENT_SINGLE_SELECT, 'dtable-font dtable-icon-department-single-selection'));
5
+ var COLUMNS_ICON_CONFIG = (_COLUMNS_ICON_CONFIG = {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_COLUMNS_ICON_CONFIG, CellType.DEFAULT, 'dtable-font dtable-icon-single-line-text'), CellType.TEXT, 'dtable-font dtable-icon-single-line-text'), CellType.STRING, 'dtable-font dtable-icon-single-line-text'), CellType.NUMBER, 'dtable-font dtable-icon-number'), CellType.CHECKBOX, 'dtable-font dtable-icon-check-square-solid'), CellType.DATE, 'dtable-font dtable-icon-calendar-alt-solid'), CellType.SINGLE_SELECT, 'dtable-font dtable-icon-single-election'), CellType.LONG_TEXT, 'dtable-font dtable-icon-long-text'), CellType.IMAGE, 'dtable-font dtable-icon-picture'), CellType.FILE, 'dtable-font dtable-icon-file-alt-solid'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_COLUMNS_ICON_CONFIG, CellType.MULTIPLE_SELECT, 'dtable-font dtable-icon-multiple-selection'), CellType.COLLABORATOR, 'dtable-font dtable-icon-collaborator'), CellType.LINK, 'dtable-font dtable-icon-link-other-record'), CellType.FORMULA, 'dtable-font dtable-icon-formula'), CellType.LINK_FORMULA, 'dtable-font dtable-icon-link-formulas'), CellType.CREATOR, 'dtable-font dtable-icon-creator'), CellType.CTIME, 'dtable-font dtable-icon-creation-time'), CellType.LAST_MODIFIER, 'dtable-font dtable-icon-creator'), CellType.MTIME, 'dtable-font dtable-icon-creation-time'), CellType.GEOLOCATION, 'dtable-font dtable-icon-location'), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_COLUMNS_ICON_CONFIG, CellType.AUTO_NUMBER, 'dtable-font dtable-icon-autonumber'), CellType.URL, 'dtable-font dtable-icon-url'), CellType.EMAIL, 'dtable-font dtable-icon-email'), CellType.DURATION, 'dtable-font dtable-icon-duration'), CellType.BUTTON, 'dtable-font dtable-icon-button'), CellType.RATE, 'dtable-font dtable-icon-rate'), CellType.DIGITAL_SIGN, 'dtable-font dtable-icon-handwritten-signature'), CellType.DEPARTMENT_SINGLE_SELECT, 'dtable-font dtable-icon-department-single-selection'));
6
6
  var COLUMN_OPTIONS = [{
7
7
  iconName: 'Basic',
8
8
  iconClass: '',
package/es/filter/core.js CHANGED
@@ -3,52 +3,12 @@ import { ValidateFilter } from '../validate/filter.js';
3
3
  import { DateUtils } from '../date.js';
4
4
  import { FILTER_ERR_MSG } from '../constants/filter/index.js';
5
5
  import { CellType } from '../constants/cell-type.js';
6
- import { FORMULA_RESULT_TYPE, FORMULA_COLUMN_TYPES_MAP } from '../constants/formula.js';
7
- import { hasOwnProperty } from '../common.js';
6
+ import { FORMULA_RESULT_TYPE } from '../constants/formula.js';
8
7
  import { FILTER_TERM_MODIFIER_TYPE } from '../constants/filter/filter-modifier.js';
9
8
 
10
9
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
10
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12
11
  var EXACT_DATE_TERM_MODIFIER_TYPES = [FILTER_TERM_MODIFIER_TYPE.TODAY, FILTER_TERM_MODIFIER_TYPE.TOMORROW, FILTER_TERM_MODIFIER_TYPE.YESTERDAY, FILTER_TERM_MODIFIER_TYPE.ONE_WEEK_AGO, FILTER_TERM_MODIFIER_TYPE.ONE_WEEK_FROM_NOW, FILTER_TERM_MODIFIER_TYPE.ONE_MONTH_AGO, FILTER_TERM_MODIFIER_TYPE.ONE_MONTH_FROM_NOW, FILTER_TERM_MODIFIER_TYPE.NUMBER_OF_DAYS_AGO, FILTER_TERM_MODIFIER_TYPE.NUMBER_OF_DAYS_FROM_NOW, FILTER_TERM_MODIFIER_TYPE.EXACT_DATE];
13
-
14
- /**
15
- * Check if is filter group
16
- * @param {object} filter
17
- * @returns bool
18
- */
19
- var checkIsFilterGroup = function checkIsFilterGroup(filter) {
20
- return hasOwnProperty(filter, 'filters');
21
- };
22
-
23
- /**
24
- * Check if is formula/link filter
25
- * @param {object} filter
26
- * @returns bool
27
- */
28
- var checkIsFormulaFilter = function checkIsFormulaFilter(filter) {
29
- var column = filter.column;
30
- return FORMULA_COLUMN_TYPES_MAP[column.type] || column.type === CellType.LINK;
31
- };
32
-
33
- /**
34
- * Check has contains formula filter
35
- * @param {array} filters e.g. [{ column_key, column, ...}]
36
- * @returns bool
37
- */
38
- var checkHasFormulaFilter = function checkHasFormulaFilter(filters) {
39
- return filters.some(function (filter) {
40
- if (checkIsFilterGroup(filter)) {
41
- var subFilters = filter.filters;
42
- if (!Array.isArray(subFilters) || subFilters.length === 0) {
43
- return false;
44
- }
45
- return subFilters.some(function (subFilter) {
46
- return checkIsFormulaFilter(subFilter);
47
- });
48
- }
49
- return checkIsFormulaFilter(filter);
50
- });
51
- };
52
12
  var isCurrentUserDepartment = function isCurrentUserDepartment(departmentId, userDepartmentIdsMap) {
53
13
  var _ref = userDepartmentIdsMap || {},
54
14
  current_user_department_ids = _ref.current_user_department_ids;
@@ -64,24 +24,9 @@ var isSpecificDepartment = function isSpecificDepartment(departmentId, filterTer
64
24
  return filterTerm.includes(departmentId);
65
25
  };
66
26
 
67
- /**
68
- * Check if the filter is available to display
69
- * @param {object} filter
70
- * @param {array} columns
71
- * @returns bool
72
- */
73
- var checkIsAvailableFilter = function checkIsAvailableFilter(filter, columns) {
74
- var _ValidateFilter$valid = ValidateFilter.validate(filter, columns),
75
- error_message = _ValidateFilter$valid.error_message;
76
- if (error_message && error_message === FILTER_ERR_MSG.INCOMPLETE_FILTER) {
77
- return false;
78
- }
79
- return true;
80
- };
81
-
82
27
  /**
83
28
  * Get filters which excludes incomplete
84
- * @param {array} filters e.g. [{ column_key, filter_predicate, ... }, { filters: [...]}]
29
+ * @param {array} filters e.g. [{ column_key, filter_predicate, ... }]
85
30
  * @param {array} columns
86
31
  * @returns valid filters, array
87
32
  */
@@ -89,24 +34,11 @@ var getValidFilters = function getValidFilters(filters, columns) {
89
34
  if (!Array.isArray(filters) || !Array.isArray(columns)) {
90
35
  return [];
91
36
  }
92
- var availableFilters = [];
93
- filters.forEach(function (filter) {
94
- if (checkIsFilterGroup(filter)) {
95
- var subFilters = filter.filters;
96
- var availableSubFilters = [];
97
- if (Array.isArray(subFilters) && subFilters.length > 0) {
98
- availableSubFilters = subFilters.filter(function (subFilter) {
99
- return checkIsAvailableFilter(subFilter, columns);
100
- });
101
- }
102
- availableFilters.push(_objectSpread(_objectSpread({}, filter), {}, {
103
- filters: availableSubFilters
104
- }));
105
- } else if (checkIsAvailableFilter(filter, columns)) {
106
- availableFilters.push(filter);
107
- }
37
+ return filters.filter(function (filter) {
38
+ var _ValidateFilter$valid = ValidateFilter.validate(filter, columns),
39
+ error_message = _ValidateFilter$valid.error_message;
40
+ return !error_message || error_message !== FILTER_ERR_MSG.INCOMPLETE_FILTER;
108
41
  });
109
- return availableFilters;
110
42
  };
111
43
 
112
44
  /**
@@ -368,37 +300,9 @@ var _getFormattedFilter = function getFormattedFilter(filter, column) {
368
300
  */
369
301
  var getFormattedFilters = function getFormattedFilters(filters) {
370
302
  return filters.map(function (filter) {
371
- if (checkIsFilterGroup(filter)) {
372
- var subFilters = filter.filters;
373
- var formattedSubFilters = [];
374
- if (Array.isArray(subFilters) && subFilters.length > 0) {
375
- formattedSubFilters = subFilters.map(function (subFilter) {
376
- return _getFormattedFilter(subFilter, subFilter.column);
377
- });
378
- }
379
- return _objectSpread(_objectSpread({}, filter), {}, {
380
- filters: formattedSubFilters
381
- });
382
- }
383
303
  return _getFormattedFilter(filter, filter.column);
384
304
  });
385
305
  };
386
- var checkFilter = function checkFilter(filter, columns) {
387
- var _ValidateFilter$valid2 = ValidateFilter.validate(filter, columns),
388
- error_message = _ValidateFilter$valid2.error_message;
389
- if (error_message) {
390
- if (error_message === FILTER_ERR_MSG.INCOMPLETE_FILTER) {
391
- return null;
392
- }
393
- throw new Error(error_message);
394
- }
395
- var newFilter = _objectSpread({}, filter);
396
- var column_key = filter.column_key;
397
- newFilter.column = columns.find(function (column) {
398
- return column.key === column_key;
399
- });
400
- return newFilter;
401
- };
402
306
 
403
307
  /**
404
308
  * Get filters without error messages and formatted with filter column
@@ -412,99 +316,24 @@ var deleteInvalidFilter = function deleteInvalidFilter(filters, columns) {
412
316
  }
413
317
  var cleanFilters = [];
414
318
  filters.forEach(function (filter) {
415
- if (checkIsFilterGroup(filter)) {
416
- var subFilters = filter.filters;
417
- if (Array.isArray(subFilters) && subFilters.length > 0) {
418
- var cleanSubFilters = [];
419
- subFilters.forEach(function (subFilter) {
420
- var newSubFilter = checkFilter(subFilter, columns);
421
- if (newSubFilter) {
422
- cleanSubFilters.push(newSubFilter);
423
- }
424
- });
425
-
426
- // just keep the filter group which has valid sub-filters
427
- if (cleanSubFilters.length > 0) {
428
- cleanFilters.push(_objectSpread(_objectSpread({}, filter), {}, {
429
- filters: cleanSubFilters
430
- }));
431
- }
319
+ var column_key = filter.column_key;
320
+ var _ValidateFilter$valid2 = ValidateFilter.validate(filter, columns),
321
+ error_message = _ValidateFilter$valid2.error_message;
322
+ if (error_message) {
323
+ if (error_message !== FILTER_ERR_MSG.INCOMPLETE_FILTER) {
324
+ throw new Error(error_message);
432
325
  }
433
326
  } else {
434
- var newFilter = checkFilter(filter, columns);
435
- if (newFilter) {
436
- cleanFilters.push(newFilter);
437
- }
327
+ var filterColumn = columns.find(function (column) {
328
+ return column.key === column_key;
329
+ });
330
+ var newFilter = _objectSpread(_objectSpread({}, filter), {}, {
331
+ column: filterColumn
332
+ });
333
+ cleanFilters.push(newFilter);
438
334
  }
439
335
  });
440
336
  return cleanFilters;
441
337
  };
442
338
 
443
- /**
444
- * Categorize filters
445
- * @param {array} filters
446
- * @returns {object} { generalFilters, formulaFilters, filterGroups }
447
- */
448
- var getClassifiedFilters = function getClassifiedFilters(filters) {
449
- var generalFilters = [];
450
- var formulaFilters = [];
451
- var filterGroups = [];
452
- filters.forEach(function (filter) {
453
- if (checkIsFilterGroup(filter)) {
454
- filterGroups.push(filter);
455
- } else if (checkIsFormulaFilter(filter)) {
456
- formulaFilters.push(filter);
457
- } else {
458
- generalFilters.push(filter);
459
- }
460
- });
461
- return {
462
- generalFilters: generalFilters,
463
- formulaFilters: formulaFilters,
464
- filterGroups: filterGroups
465
- };
466
- };
467
-
468
- /**
469
- * Check if is related filter of given columns
470
- * @param {object} filter
471
- * @param {object} updatedColumnKeyMap e.g. { [column.key]: true }
472
- * @returns bool
473
- */
474
- var checkIsRelatedFilter = function checkIsRelatedFilter(filter, columnKeyMap) {
475
- var column_key = filter.column_key;
476
- if (!column_key) {
477
- return false;
478
- }
479
- return !!columnKeyMap[column_key];
480
- };
481
-
482
- /**
483
- * Check if is related filter group of given columns
484
- * @param {object} filterGroup
485
- * @param {object} columnKeyMap
486
- * @returns bool
487
- */
488
- var checkIsRelatedFilterGroup = function checkIsRelatedFilterGroup(filterGroup, columnKeyMap) {
489
- var filters = filterGroup.filters;
490
- if (!Array.isArray(filters) || filters.length === 0) {
491
- return false;
492
- }
493
- return filters.some(function (filter) {
494
- return checkIsRelatedFilter(filter, columnKeyMap);
495
- });
496
- };
497
-
498
- /**
499
- * Check if has related filters of given columns
500
- * @param {array} filters
501
- * @param {object} updatedColumnKeyMap e.g. { [column.key]: true }
502
- * @returns bool
503
- */
504
- var hasRelatedFilters = function hasRelatedFilters(filters, columnKeyMap) {
505
- return filters.some(function (filter) {
506
- return checkIsFilterGroup(filter) ? checkIsRelatedFilterGroup(filter, columnKeyMap) : checkIsRelatedFilter(filter, columnKeyMap);
507
- });
508
- };
509
-
510
- export { checkHasFormulaFilter, checkIsAvailableFilter, checkIsFilterGroup, checkIsFormulaFilter, checkIsRelatedFilter, checkIsRelatedFilterGroup, deleteInvalidFilter, getClassifiedFilters, _getFormattedFilter as getFormattedFilter, getFormattedFilterOtherDate, getFormattedFilters, getValidFilters, getValidFiltersWithoutError, hasRelatedFilters, isCurrentUserDepartment, isCurrentUserDepartmentAndSub, isSpecificDepartment, otherDate };
339
+ export { deleteInvalidFilter, _getFormattedFilter as getFormattedFilter, getFormattedFilterOtherDate, getFormattedFilters, getValidFilters, getValidFiltersWithoutError, isCurrentUserDepartment, isCurrentUserDepartmentAndSub, isSpecificDepartment, otherDate };
@@ -1,4 +1,4 @@
1
- import { checkIsFilterGroup, getFormattedFilters, deleteInvalidFilter } from './core.js';
1
+ import { getFormattedFilters, deleteInvalidFilter } from './core.js';
2
2
  import { checkboxFilter } from './filter-column/checkbox.js';
3
3
  import { collaboratorFilter } from './filter-column/collaborator.js';
4
4
  import { creatorFilter } from './filter-column/creator.js';
@@ -137,7 +137,7 @@ var getFilterResult = function getFilterResult(row, filter, _ref) {
137
137
  * @param {object} userDepartmentIdsMap e.g. { current_user_department_ids: [8, 10], current_user_department_and_sub_ids: [8, 10, 12, 34] }
138
138
  * @returns filter result, bool
139
139
  */
140
- var _filterRow = function filterRow(row, filterConjunction, filters) {
140
+ var filterRow = function filterRow(row, filterConjunction, filters) {
141
141
  var _ref2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
142
142
  formulaRow = _ref2.formulaRow,
143
143
  _ref2$username = _ref2.username,
@@ -147,14 +147,6 @@ var _filterRow = function filterRow(row, filterConjunction, filters) {
147
147
  userDepartmentIdsMap = _ref2$userDepartmentI === void 0 ? {} : _ref2$userDepartmentI;
148
148
  if (filterConjunction === FILTER_CONJUNCTION_TYPE.AND) {
149
149
  return filters.every(function (filter) {
150
- if (checkIsFilterGroup(filter)) {
151
- return _filterRow(row, filter.filter_conjunction, filter.filters, {
152
- formulaRow: formulaRow,
153
- username: username,
154
- userId: userId,
155
- userDepartmentIdsMap: userDepartmentIdsMap
156
- });
157
- }
158
150
  return getFilterResult(row, filter, {
159
151
  formulaRow: formulaRow,
160
152
  username: username,
@@ -165,14 +157,6 @@ var _filterRow = function filterRow(row, filterConjunction, filters) {
165
157
  }
166
158
  if (filterConjunction === FILTER_CONJUNCTION_TYPE.OR) {
167
159
  return filters.some(function (filter) {
168
- if (checkIsFilterGroup(filter)) {
169
- return _filterRow(row, filter.filter_conjunction, filter.filters, {
170
- formulaRow: formulaRow,
171
- username: username,
172
- userId: userId,
173
- userDepartmentIdsMap: userDepartmentIdsMap
174
- });
175
- }
176
160
  return getFilterResult(row, filter, {
177
161
  formulaRow: formulaRow,
178
162
  username: username,
@@ -205,7 +189,7 @@ var filterRows = function filterRows(filterConjunction, filters, rows, _ref3) {
205
189
  rows.forEach(function (row) {
206
190
  var rowId = row._id;
207
191
  var formulaRow = formulaRows ? formulaRows[rowId] : null;
208
- if (_filterRow(row, filterConjunction, formattedFilters, {
192
+ if (filterRow(row, filterConjunction, formattedFilters, {
209
193
  formulaRow: formulaRow,
210
194
  username: username,
211
195
  userId: userId,
@@ -269,4 +253,4 @@ var getFilteredRowsWithoutFormulaCalculation = function getFilteredRowsWithoutFo
269
253
  };
270
254
  };
271
255
 
272
- export { _filterRow as filterRow, filterRows, getFilteredRowsWithoutFormulaCalculation };
256
+ export { filterRow, filterRows, getFilteredRowsWithoutFormulaCalculation };
package/es/index.js CHANGED
@@ -57,7 +57,7 @@ export { searchCollaborators } from './search.js';
57
57
  export { ValidateFilter } from './validate/filter.js';
58
58
  export { isValidEmail } from './validate/email.js';
59
59
  export { isValidPosition } from './validate/geolocation.js';
60
- export { checkHasFormulaFilter, checkIsFilterGroup, checkIsRelatedFilter, deleteInvalidFilter, getClassifiedFilters, getFormattedFilter, getFormattedFilterOtherDate, getFormattedFilters, getValidFilters, getValidFiltersWithoutError, hasRelatedFilters, otherDate } from './filter/core.js';
60
+ export { deleteInvalidFilter, getFormattedFilter, getFormattedFilterOtherDate, getFormattedFilters, getValidFilters, getValidFiltersWithoutError, otherDate } from './filter/core.js';
61
61
  export { checkboxFilter } from './filter/filter-column/checkbox.js';
62
62
  export { collaboratorFilter } from './filter/filter-column/collaborator.js';
63
63
  export { creatorFilter } from './filter/filter-column/creator.js';
package/es/row/convert.js CHANGED
@@ -106,7 +106,7 @@ var convertRow = function convertRow(row, value, table, view, formulaResults, co
106
106
  }
107
107
  case CellType.DATE:
108
108
  {
109
- var timeTextWithoutTimezone = cellValue.replace(/([+-]\d{2}:?\d{2})|Z$/g, '');
109
+ var timeTextWithoutTimezone = cellValue ? cellValue.replace(/([+-]\d{2}:?\d{2})|Z$/g, '') : '';
110
110
  var format = column.data && column.data.format;
111
111
  result[columnName] = formatTextToDate(timeTextWithoutTimezone, format);
112
112
  break;