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.
@@ -2,7 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
5
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
7
6
  var dayjs = require('dayjs');
8
7
  var utc = require('dayjs/plugin/utc');
@@ -19,13 +18,10 @@ var filterModifier = require('../../constants/filter/filter-modifier.js');
19
18
 
20
19
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
20
 
22
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
23
21
  var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
24
22
  var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
25
23
  var utc__default = /*#__PURE__*/_interopDefaultLegacy(utc);
26
24
 
27
- 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; }
28
- 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__default["default"](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; }
29
25
  dayjs__default["default"].extend(utc__default["default"]);
30
26
 
31
27
  // TEXT | GEOLOCATION | EMAIL | AUTO_NUMBER
@@ -128,7 +124,7 @@ var dateSqlCondition = function dateSqlCondition(column, filterItem) {
128
124
  filter_term = filterItem.filter_term,
129
125
  filter_term_modifier = filterItem.filter_term_modifier;
130
126
  var filterLabel = [filterPredicate.FILTER_PREDICATE_TYPE.EMPTY, filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY];
131
- if ((!filter_term || filter_term.length === 0) && filterLabel.indexOf(filter_predicate) < 0 && filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE) {
127
+ if (filter_term.length === 0 && filterLabel.indexOf(filter_predicate) < 0 && filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE) {
132
128
  return '';
133
129
  }
134
130
  if (filter_predicate === filterPredicate.FILTER_PREDICATE_TYPE.IS) {
@@ -187,7 +183,7 @@ var ctimeSqlCondition = function ctimeSqlCondition(column, filterItem) {
187
183
  filter_term = filterItem.filter_term,
188
184
  filter_term_modifier = filterItem.filter_term_modifier;
189
185
  var filterLabel = [filterPredicate.FILTER_PREDICATE_TYPE.EMPTY, filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY];
190
- if ((!filter_term || filter_term.length === 0) && filterLabel.indexOf(filter_predicate) < 0 && filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE) {
186
+ if (filter_term.length === 0 && filterLabel.indexOf(filter_predicate) < 0 && filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE) {
191
187
  return '';
192
188
  }
193
189
 
@@ -706,103 +702,32 @@ var getSqlConditionByFilter = function getSqlConditionByFilter(column, filterIte
706
702
  }
707
703
  return '';
708
704
  };
709
-
710
- /**
711
- * FilterGroup: {"filter_conjunction": "And", filters: [Filter, ...]}
712
- * Filter: {"column_key": "xxx", filter_predicate: "xxx", ...}
713
- * @param {array} filters
714
- * @param {object} table
715
- * @param {string} username
716
- * @param {string} userId
717
- * @param {object} userDepartmentIdsMap
718
- * @returns string
719
- */
720
- var getSqlConditionsByFilters = function getSqlConditionsByFilters(filters, table, username, userId, userDepartmentIdsMap) {
721
- var columns = table.columns;
705
+ var filter2SqlCondition = function filter2SqlCondition(table, view, username, userId, userDepartmentIdsMap) {
722
706
  var patchedUsername = patchUtils["default"].getUsername(username);
723
707
  var patchedUserId = patchUtils["default"].getUserId(userId);
724
708
  var patchedUserDepartmentIdsMap = patchUtils["default"].getUserDepartmentIdsMap(userDepartmentIdsMap);
725
- var sqlConditions = [];
726
- filters.forEach(function (filter) {
727
- if (core.checkIsFilterGroup(filter)) {
728
- var subFilters = filter.filters,
729
- sub_filter_conjunction = filter.filter_conjunction;
730
- var subSqlConditions = subFilters.map(function (subFilter) {
731
- var filterColumn = column$1.getTableColumnByKey(table, subFilter.column_key);
732
- return getSqlConditionByFilter(filterColumn, subFilter, patchedUsername, patchedUserId, patchedUserDepartmentIdsMap);
733
- });
734
- var subSqlConditionsLength = subSqlConditions.length;
735
- if (subSqlConditionsLength > 0) {
736
- var subSqlConditionsString = subSqlConditions.length === 1 ? subSqlConditions + '' : "(".concat(subSqlConditions.join(' ' + sub_filter_conjunction + ' '), ")");
737
- sqlConditions.push(subSqlConditionsString);
738
- }
739
- } else {
740
- var column_key = filter.column_key;
741
- var filterColumn = columns.find(function (column) {
742
- return column.key === column_key;
743
- });
744
- sqlConditions.push(getSqlConditionByFilter(filterColumn, filter, patchedUsername, patchedUserId, patchedUserDepartmentIdsMap));
745
- }
746
- });
747
- return sqlConditions;
748
- };
749
- var checkFilter = function checkFilter(filter$1, columns) {
750
- var _ValidateFilter$valid = filter.ValidateFilter.validate(filter$1, columns),
751
- error_message = _ValidateFilter$valid.error_message;
752
- if (error_message) {
753
- if (error_message === index.FILTER_ERR_MSG.INCOMPLETE_FILTER) {
754
- return false;
755
- }
756
- throw new Error(error_message);
757
- }
758
- return true;
759
- };
760
- var validateFilters = function validateFilters(filters, columns) {
761
- var validFilters = [];
762
- filters.forEach(function (filter) {
763
- if (core.checkIsFilterGroup(filter)) {
764
- var subFilters = filter.filters;
765
- if (!Array.isArray(subFilters) || subFilters.length === 0) {
766
- return;
767
- }
768
- var validSubFilters = subFilters.filter(function (subFilter) {
769
- return checkFilter(subFilter, columns);
770
- });
771
- if (validSubFilters.length === 0) {
772
- return;
773
- }
774
- validFilters.push(_objectSpread(_objectSpread({}, filter), {}, {
775
- filters: validSubFilters
776
- }));
777
- } else {
778
- if (!checkFilter(filter, columns)) {
779
- return;
780
- }
781
- validFilters.push(filter);
782
- }
783
- });
784
- return validFilters;
785
- };
786
- var filter2SqlCondition = function filter2SqlCondition(table, view, username, userId, userDepartmentIdsMap) {
787
709
  var columns = table.columns;
788
710
  var filter_conjunction = view.filter_conjunction,
789
711
  filters = view.filters;
790
712
  if (typeof filter_conjunction !== 'string' || !Array.isArray(filters) || filters.length === 0) {
791
713
  return '';
792
714
  }
793
- var validFilters = [];
794
- try {
795
- validFilters = validateFilters(filters, columns);
796
- } catch (err) {
797
- throw new Error(err.message);
798
- }
799
- if (validFilters.length === 0) {
800
- return '';
801
- }
802
715
 
803
716
  // 1. add WHERE condition
804
717
  var filterHeader = 'WHERE ';
805
- var stringList = getSqlConditionsByFilters(validFilters, table, username, userId, userDepartmentIdsMap);
718
+ var stringList = filters.map(function (filterItem) {
719
+ var _ValidateFilter$valid = filter.ValidateFilter.validate(filterItem, columns),
720
+ error_message = _ValidateFilter$valid.error_message;
721
+ if (error_message) {
722
+ if (error_message === index.FILTER_ERR_MSG.INCOMPLETE_FILTER) {
723
+ return '';
724
+ }
725
+ throw new Error(error_message);
726
+ }
727
+ var column_key = filterItem.column_key;
728
+ var column = column$1.getTableColumnByKey(table, column_key);
729
+ return getSqlConditionByFilter(column, filterItem, patchedUsername, patchedUserId, patchedUserDepartmentIdsMap);
730
+ });
806
731
 
807
732
  // 2. filtered '' sql clause
808
733
  stringList = stringList.filter(function (item) {
@@ -814,29 +739,21 @@ var filter2SqlCondition = function filter2SqlCondition(table, view, username, us
814
739
  // const filterContent = stringList.join(' ' + filter_conjunction + ' ');
815
740
  var filterContent = stringList[0];
816
741
  for (var i = 1; i < stringList.length; i++) {
817
- var currStr = stringList[i];
818
- if (currStr.startsWith('(') && currStr.endsWith(')')) {
819
- filterContent += " ".concat(filter_conjunction, " ").concat(stringList[i]);
820
- } else {
821
- filterContent += " ".concat(filter_conjunction, " (").concat(stringList[i], ")");
822
- }
742
+ filterContent += " ".concat(filter_conjunction, " (").concat(stringList[i], ")");
823
743
  }
824
744
  return filterHeader + filterContent;
825
745
  };
826
746
 
827
- exports.arrayColumnCondition = arrayColumnCondition;
828
747
  exports.checkboxSqlCondition = checkboxSqlCondition;
829
748
  exports.collaboratorSqlCondition = collaboratorSqlCondition;
830
749
  exports.creatorSqlCondition = creatorSqlCondition;
831
750
  exports.ctimeSqlCondition = ctimeSqlCondition;
832
751
  exports.dateSqlCondition = dateSqlCondition;
833
- exports.departmentMultipleSelectSqlCondition = departmentMultipleSelectSqlCondition;
834
752
  exports.departmentSingleSelectSqlCondition = departmentSingleSelectSqlCondition;
835
753
  exports.fileSqlCondition = fileSqlCondition;
836
754
  exports.filter2SqlCondition = filter2SqlCondition;
837
755
  exports.formulaSqlCondition = formulaSqlCondition;
838
756
  exports.getSqlConditionByFilter = getSqlConditionByFilter;
839
- exports.getSqlConditionsByFilters = getSqlConditionsByFilters;
840
757
  exports.linkSqlCondition = linkSqlCondition;
841
758
  exports.longtextSqlCondition = longtextSqlCondition;
842
759
  exports.multipleSelectSqlCondition = multipleSelectSqlCondition;
package/lib/common.js CHANGED
@@ -50,11 +50,7 @@ var isEmptyObject = function isEmptyObject(obj) {
50
50
  }
51
51
  return true;
52
52
  };
53
- var hasOwnProperty = function hasOwnProperty(obj, key) {
54
- return Object.prototype.hasOwnProperty.call(obj, key);
55
- };
56
53
 
57
54
  exports.generatorBase64Code = generatorBase64Code;
58
- exports.hasOwnProperty = hasOwnProperty;
59
55
  exports.isEmpty = isEmpty;
60
56
  exports.isEmptyObject = isEmptyObject;
@@ -10,7 +10,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
10
10
  var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
11
11
 
12
12
  var _COLUMNS_ICON_CONFIG, _SINGLE_CELL_VALUE_CO;
13
- var COLUMNS_ICON_CONFIG = (_COLUMNS_ICON_CONFIG = {}, _defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.DEFAULT, 'dtable-font dtable-icon-single-line-text'), cellType.CellType.TEXT, 'dtable-font dtable-icon-single-line-text'), cellType.CellType.NUMBER, 'dtable-font dtable-icon-number'), cellType.CellType.CHECKBOX, 'dtable-font dtable-icon-check-square-solid'), cellType.CellType.DATE, 'dtable-font dtable-icon-calendar-alt-solid'), cellType.CellType.SINGLE_SELECT, 'dtable-font dtable-icon-single-election'), cellType.CellType.LONG_TEXT, 'dtable-font dtable-icon-long-text'), cellType.CellType.IMAGE, 'dtable-font dtable-icon-picture'), cellType.CellType.FILE, 'dtable-font dtable-icon-file-alt-solid'), cellType.CellType.MULTIPLE_SELECT, 'dtable-font dtable-icon-multiple-selection'), _defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.COLLABORATOR, 'dtable-font dtable-icon-collaborator'), cellType.CellType.LINK, 'dtable-font dtable-icon-link-other-record'), cellType.CellType.FORMULA, 'dtable-font dtable-icon-formula'), cellType.CellType.LINK_FORMULA, 'dtable-font dtable-icon-link-formulas'), cellType.CellType.CREATOR, 'dtable-font dtable-icon-creator'), cellType.CellType.CTIME, 'dtable-font dtable-icon-creation-time'), cellType.CellType.LAST_MODIFIER, 'dtable-font dtable-icon-creator'), cellType.CellType.MTIME, 'dtable-font dtable-icon-creation-time'), cellType.CellType.GEOLOCATION, 'dtable-font dtable-icon-location'), cellType.CellType.AUTO_NUMBER, 'dtable-font dtable-icon-autonumber'), _defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.URL, 'dtable-font dtable-icon-url'), cellType.CellType.EMAIL, 'dtable-font dtable-icon-email'), cellType.CellType.DURATION, 'dtable-font dtable-icon-duration'), cellType.CellType.BUTTON, 'dtable-font dtable-icon-button'), cellType.CellType.RATE, 'dtable-font dtable-icon-rate'), cellType.CellType.DIGITAL_SIGN, 'dtable-font dtable-icon-handwritten-signature'), cellType.CellType.DEPARTMENT_SINGLE_SELECT, 'dtable-font dtable-icon-department-single-selection'));
13
+ var COLUMNS_ICON_CONFIG = (_COLUMNS_ICON_CONFIG = {}, _defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.DEFAULT, 'dtable-font dtable-icon-single-line-text'), cellType.CellType.TEXT, 'dtable-font dtable-icon-single-line-text'), cellType.CellType.STRING, 'dtable-font dtable-icon-single-line-text'), cellType.CellType.NUMBER, 'dtable-font dtable-icon-number'), cellType.CellType.CHECKBOX, 'dtable-font dtable-icon-check-square-solid'), cellType.CellType.DATE, 'dtable-font dtable-icon-calendar-alt-solid'), cellType.CellType.SINGLE_SELECT, 'dtable-font dtable-icon-single-election'), cellType.CellType.LONG_TEXT, 'dtable-font dtable-icon-long-text'), cellType.CellType.IMAGE, 'dtable-font dtable-icon-picture'), cellType.CellType.FILE, 'dtable-font dtable-icon-file-alt-solid'), _defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.MULTIPLE_SELECT, 'dtable-font dtable-icon-multiple-selection'), cellType.CellType.COLLABORATOR, 'dtable-font dtable-icon-collaborator'), cellType.CellType.LINK, 'dtable-font dtable-icon-link-other-record'), cellType.CellType.FORMULA, 'dtable-font dtable-icon-formula'), cellType.CellType.LINK_FORMULA, 'dtable-font dtable-icon-link-formulas'), cellType.CellType.CREATOR, 'dtable-font dtable-icon-creator'), cellType.CellType.CTIME, 'dtable-font dtable-icon-creation-time'), cellType.CellType.LAST_MODIFIER, 'dtable-font dtable-icon-creator'), cellType.CellType.MTIME, 'dtable-font dtable-icon-creation-time'), cellType.CellType.GEOLOCATION, 'dtable-font dtable-icon-location'), _defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.AUTO_NUMBER, 'dtable-font dtable-icon-autonumber'), cellType.CellType.URL, 'dtable-font dtable-icon-url'), cellType.CellType.EMAIL, 'dtable-font dtable-icon-email'), cellType.CellType.DURATION, 'dtable-font dtable-icon-duration'), cellType.CellType.BUTTON, 'dtable-font dtable-icon-button'), cellType.CellType.RATE, 'dtable-font dtable-icon-rate'), cellType.CellType.DIGITAL_SIGN, 'dtable-font dtable-icon-handwritten-signature'), cellType.CellType.DEPARTMENT_SINGLE_SELECT, 'dtable-font dtable-icon-department-single-selection'));
14
14
  var COLUMN_OPTIONS = [{
15
15
  iconName: 'Basic',
16
16
  iconClass: '',
@@ -8,7 +8,6 @@ var date = require('../date.js');
8
8
  var index = require('../constants/filter/index.js');
9
9
  var cellType = require('../constants/cell-type.js');
10
10
  var formula = require('../constants/formula.js');
11
- var common = require('../common.js');
12
11
  var filterModifier = require('../constants/filter/filter-modifier.js');
13
12
 
14
13
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -18,45 +17,6 @@ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_definePropert
18
17
  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; }
19
18
  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__default["default"](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; }
20
19
  var EXACT_DATE_TERM_MODIFIER_TYPES = [filterModifier.FILTER_TERM_MODIFIER_TYPE.TODAY, filterModifier.FILTER_TERM_MODIFIER_TYPE.TOMORROW, filterModifier.FILTER_TERM_MODIFIER_TYPE.YESTERDAY, filterModifier.FILTER_TERM_MODIFIER_TYPE.ONE_WEEK_AGO, filterModifier.FILTER_TERM_MODIFIER_TYPE.ONE_WEEK_FROM_NOW, filterModifier.FILTER_TERM_MODIFIER_TYPE.ONE_MONTH_AGO, filterModifier.FILTER_TERM_MODIFIER_TYPE.ONE_MONTH_FROM_NOW, filterModifier.FILTER_TERM_MODIFIER_TYPE.NUMBER_OF_DAYS_AGO, filterModifier.FILTER_TERM_MODIFIER_TYPE.NUMBER_OF_DAYS_FROM_NOW, filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE];
21
-
22
- /**
23
- * Check if is filter group
24
- * @param {object} filter
25
- * @returns bool
26
- */
27
- var checkIsFilterGroup = function checkIsFilterGroup(filter) {
28
- return common.hasOwnProperty(filter, 'filters');
29
- };
30
-
31
- /**
32
- * Check if is formula/link filter
33
- * @param {object} filter
34
- * @returns bool
35
- */
36
- var checkIsFormulaFilter = function checkIsFormulaFilter(filter) {
37
- var column = filter.column;
38
- return formula.FORMULA_COLUMN_TYPES_MAP[column.type] || column.type === cellType.CellType.LINK;
39
- };
40
-
41
- /**
42
- * Check has contains formula filter
43
- * @param {array} filters e.g. [{ column_key, column, ...}]
44
- * @returns bool
45
- */
46
- var checkHasFormulaFilter = function checkHasFormulaFilter(filters) {
47
- return filters.some(function (filter) {
48
- if (checkIsFilterGroup(filter)) {
49
- var subFilters = filter.filters;
50
- if (!Array.isArray(subFilters) || subFilters.length === 0) {
51
- return false;
52
- }
53
- return subFilters.some(function (subFilter) {
54
- return checkIsFormulaFilter(subFilter);
55
- });
56
- }
57
- return checkIsFormulaFilter(filter);
58
- });
59
- };
60
20
  var isCurrentUserDepartment = function isCurrentUserDepartment(departmentId, userDepartmentIdsMap) {
61
21
  var _ref = userDepartmentIdsMap || {},
62
22
  current_user_department_ids = _ref.current_user_department_ids;
@@ -72,24 +32,9 @@ var isSpecificDepartment = function isSpecificDepartment(departmentId, filterTer
72
32
  return filterTerm.includes(departmentId);
73
33
  };
74
34
 
75
- /**
76
- * Check if the filter is available to display
77
- * @param {object} filter
78
- * @param {array} columns
79
- * @returns bool
80
- */
81
- var checkIsAvailableFilter = function checkIsAvailableFilter(filter$1, columns) {
82
- var _ValidateFilter$valid = filter.ValidateFilter.validate(filter$1, columns),
83
- error_message = _ValidateFilter$valid.error_message;
84
- if (error_message && error_message === index.FILTER_ERR_MSG.INCOMPLETE_FILTER) {
85
- return false;
86
- }
87
- return true;
88
- };
89
-
90
35
  /**
91
36
  * Get filters which excludes incomplete
92
- * @param {array} filters e.g. [{ column_key, filter_predicate, ... }, { filters: [...]}]
37
+ * @param {array} filters e.g. [{ column_key, filter_predicate, ... }]
93
38
  * @param {array} columns
94
39
  * @returns valid filters, array
95
40
  */
@@ -97,24 +42,11 @@ var getValidFilters = function getValidFilters(filters, columns) {
97
42
  if (!Array.isArray(filters) || !Array.isArray(columns)) {
98
43
  return [];
99
44
  }
100
- var availableFilters = [];
101
- filters.forEach(function (filter) {
102
- if (checkIsFilterGroup(filter)) {
103
- var subFilters = filter.filters;
104
- var availableSubFilters = [];
105
- if (Array.isArray(subFilters) && subFilters.length > 0) {
106
- availableSubFilters = subFilters.filter(function (subFilter) {
107
- return checkIsAvailableFilter(subFilter, columns);
108
- });
109
- }
110
- availableFilters.push(_objectSpread(_objectSpread({}, filter), {}, {
111
- filters: availableSubFilters
112
- }));
113
- } else if (checkIsAvailableFilter(filter, columns)) {
114
- availableFilters.push(filter);
115
- }
45
+ return filters.filter(function (filter$1) {
46
+ var _ValidateFilter$valid = filter.ValidateFilter.validate(filter$1, columns),
47
+ error_message = _ValidateFilter$valid.error_message;
48
+ return !error_message || error_message !== index.FILTER_ERR_MSG.INCOMPLETE_FILTER;
116
49
  });
117
- return availableFilters;
118
50
  };
119
51
 
120
52
  /**
@@ -376,37 +308,9 @@ var _getFormattedFilter = function getFormattedFilter(filter, column) {
376
308
  */
377
309
  var getFormattedFilters = function getFormattedFilters(filters) {
378
310
  return filters.map(function (filter) {
379
- if (checkIsFilterGroup(filter)) {
380
- var subFilters = filter.filters;
381
- var formattedSubFilters = [];
382
- if (Array.isArray(subFilters) && subFilters.length > 0) {
383
- formattedSubFilters = subFilters.map(function (subFilter) {
384
- return _getFormattedFilter(subFilter, subFilter.column);
385
- });
386
- }
387
- return _objectSpread(_objectSpread({}, filter), {}, {
388
- filters: formattedSubFilters
389
- });
390
- }
391
311
  return _getFormattedFilter(filter, filter.column);
392
312
  });
393
313
  };
394
- var checkFilter = function checkFilter(filter$1, columns) {
395
- var _ValidateFilter$valid2 = filter.ValidateFilter.validate(filter$1, columns),
396
- error_message = _ValidateFilter$valid2.error_message;
397
- if (error_message) {
398
- if (error_message === index.FILTER_ERR_MSG.INCOMPLETE_FILTER) {
399
- return null;
400
- }
401
- throw new Error(error_message);
402
- }
403
- var newFilter = _objectSpread({}, filter$1);
404
- var column_key = filter$1.column_key;
405
- newFilter.column = columns.find(function (column) {
406
- return column.key === column_key;
407
- });
408
- return newFilter;
409
- };
410
314
 
411
315
  /**
412
316
  * Get filters without error messages and formatted with filter column
@@ -419,116 +323,33 @@ var deleteInvalidFilter = function deleteInvalidFilter(filters, columns) {
419
323
  return [];
420
324
  }
421
325
  var cleanFilters = [];
422
- filters.forEach(function (filter) {
423
- if (checkIsFilterGroup(filter)) {
424
- var subFilters = filter.filters;
425
- if (Array.isArray(subFilters) && subFilters.length > 0) {
426
- var cleanSubFilters = [];
427
- subFilters.forEach(function (subFilter) {
428
- var newSubFilter = checkFilter(subFilter, columns);
429
- if (newSubFilter) {
430
- cleanSubFilters.push(newSubFilter);
431
- }
432
- });
433
-
434
- // just keep the filter group which has valid sub-filters
435
- if (cleanSubFilters.length > 0) {
436
- cleanFilters.push(_objectSpread(_objectSpread({}, filter), {}, {
437
- filters: cleanSubFilters
438
- }));
439
- }
326
+ filters.forEach(function (filter$1) {
327
+ var column_key = filter$1.column_key;
328
+ var _ValidateFilter$valid2 = filter.ValidateFilter.validate(filter$1, columns),
329
+ error_message = _ValidateFilter$valid2.error_message;
330
+ if (error_message) {
331
+ if (error_message !== index.FILTER_ERR_MSG.INCOMPLETE_FILTER) {
332
+ throw new Error(error_message);
440
333
  }
441
334
  } else {
442
- var newFilter = checkFilter(filter, columns);
443
- if (newFilter) {
444
- cleanFilters.push(newFilter);
445
- }
335
+ var filterColumn = columns.find(function (column) {
336
+ return column.key === column_key;
337
+ });
338
+ var newFilter = _objectSpread(_objectSpread({}, filter$1), {}, {
339
+ column: filterColumn
340
+ });
341
+ cleanFilters.push(newFilter);
446
342
  }
447
343
  });
448
344
  return cleanFilters;
449
345
  };
450
346
 
451
- /**
452
- * Categorize filters
453
- * @param {array} filters
454
- * @returns {object} { generalFilters, formulaFilters, filterGroups }
455
- */
456
- var getClassifiedFilters = function getClassifiedFilters(filters) {
457
- var generalFilters = [];
458
- var formulaFilters = [];
459
- var filterGroups = [];
460
- filters.forEach(function (filter) {
461
- if (checkIsFilterGroup(filter)) {
462
- filterGroups.push(filter);
463
- } else if (checkIsFormulaFilter(filter)) {
464
- formulaFilters.push(filter);
465
- } else {
466
- generalFilters.push(filter);
467
- }
468
- });
469
- return {
470
- generalFilters: generalFilters,
471
- formulaFilters: formulaFilters,
472
- filterGroups: filterGroups
473
- };
474
- };
475
-
476
- /**
477
- * Check if is related filter of given columns
478
- * @param {object} filter
479
- * @param {object} updatedColumnKeyMap e.g. { [column.key]: true }
480
- * @returns bool
481
- */
482
- var checkIsRelatedFilter = function checkIsRelatedFilter(filter, columnKeyMap) {
483
- var column_key = filter.column_key;
484
- if (!column_key) {
485
- return false;
486
- }
487
- return !!columnKeyMap[column_key];
488
- };
489
-
490
- /**
491
- * Check if is related filter group of given columns
492
- * @param {object} filterGroup
493
- * @param {object} columnKeyMap
494
- * @returns bool
495
- */
496
- var checkIsRelatedFilterGroup = function checkIsRelatedFilterGroup(filterGroup, columnKeyMap) {
497
- var filters = filterGroup.filters;
498
- if (!Array.isArray(filters) || filters.length === 0) {
499
- return false;
500
- }
501
- return filters.some(function (filter) {
502
- return checkIsRelatedFilter(filter, columnKeyMap);
503
- });
504
- };
505
-
506
- /**
507
- * Check if has related filters of given columns
508
- * @param {array} filters
509
- * @param {object} updatedColumnKeyMap e.g. { [column.key]: true }
510
- * @returns bool
511
- */
512
- var hasRelatedFilters = function hasRelatedFilters(filters, columnKeyMap) {
513
- return filters.some(function (filter) {
514
- return checkIsFilterGroup(filter) ? checkIsRelatedFilterGroup(filter, columnKeyMap) : checkIsRelatedFilter(filter, columnKeyMap);
515
- });
516
- };
517
-
518
- exports.checkHasFormulaFilter = checkHasFormulaFilter;
519
- exports.checkIsAvailableFilter = checkIsAvailableFilter;
520
- exports.checkIsFilterGroup = checkIsFilterGroup;
521
- exports.checkIsFormulaFilter = checkIsFormulaFilter;
522
- exports.checkIsRelatedFilter = checkIsRelatedFilter;
523
- exports.checkIsRelatedFilterGroup = checkIsRelatedFilterGroup;
524
347
  exports.deleteInvalidFilter = deleteInvalidFilter;
525
- exports.getClassifiedFilters = getClassifiedFilters;
526
348
  exports.getFormattedFilter = _getFormattedFilter;
527
349
  exports.getFormattedFilterOtherDate = getFormattedFilterOtherDate;
528
350
  exports.getFormattedFilters = getFormattedFilters;
529
351
  exports.getValidFilters = getValidFilters;
530
352
  exports.getValidFiltersWithoutError = getValidFiltersWithoutError;
531
- exports.hasRelatedFilters = hasRelatedFilters;
532
353
  exports.isCurrentUserDepartment = isCurrentUserDepartment;
533
354
  exports.isCurrentUserDepartmentAndSub = isCurrentUserDepartmentAndSub;
534
355
  exports.isSpecificDepartment = isSpecificDepartment;
@@ -141,7 +141,7 @@ var getFilterResult = function getFilterResult(row, filter, _ref) {
141
141
  * @param {object} userDepartmentIdsMap e.g. { current_user_department_ids: [8, 10], current_user_department_and_sub_ids: [8, 10, 12, 34] }
142
142
  * @returns filter result, bool
143
143
  */
144
- var _filterRow = function filterRow(row, filterConjunction, filters) {
144
+ var filterRow = function filterRow(row, filterConjunction, filters) {
145
145
  var _ref2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
146
146
  formulaRow = _ref2.formulaRow,
147
147
  _ref2$username = _ref2.username,
@@ -151,14 +151,6 @@ var _filterRow = function filterRow(row, filterConjunction, filters) {
151
151
  userDepartmentIdsMap = _ref2$userDepartmentI === void 0 ? {} : _ref2$userDepartmentI;
152
152
  if (filterConjunction === index.FILTER_CONJUNCTION_TYPE.AND) {
153
153
  return filters.every(function (filter) {
154
- if (core.checkIsFilterGroup(filter)) {
155
- return _filterRow(row, filter.filter_conjunction, filter.filters, {
156
- formulaRow: formulaRow,
157
- username: username,
158
- userId: userId,
159
- userDepartmentIdsMap: userDepartmentIdsMap
160
- });
161
- }
162
154
  return getFilterResult(row, filter, {
163
155
  formulaRow: formulaRow,
164
156
  username: username,
@@ -169,14 +161,6 @@ var _filterRow = function filterRow(row, filterConjunction, filters) {
169
161
  }
170
162
  if (filterConjunction === index.FILTER_CONJUNCTION_TYPE.OR) {
171
163
  return filters.some(function (filter) {
172
- if (core.checkIsFilterGroup(filter)) {
173
- return _filterRow(row, filter.filter_conjunction, filter.filters, {
174
- formulaRow: formulaRow,
175
- username: username,
176
- userId: userId,
177
- userDepartmentIdsMap: userDepartmentIdsMap
178
- });
179
- }
180
164
  return getFilterResult(row, filter, {
181
165
  formulaRow: formulaRow,
182
166
  username: username,
@@ -209,7 +193,7 @@ var filterRows = function filterRows(filterConjunction, filters, rows, _ref3) {
209
193
  rows.forEach(function (row) {
210
194
  var rowId = row._id;
211
195
  var formulaRow = formulaRows ? formulaRows[rowId] : null;
212
- if (_filterRow(row, filterConjunction, formattedFilters, {
196
+ if (filterRow(row, filterConjunction, formattedFilters, {
213
197
  formulaRow: formulaRow,
214
198
  username: username,
215
199
  userId: userId,
@@ -273,6 +257,6 @@ var getFilteredRowsWithoutFormulaCalculation = function getFilteredRowsWithoutFo
273
257
  };
274
258
  };
275
259
 
276
- exports.filterRow = _filterRow;
260
+ exports.filterRow = filterRow;
277
261
  exports.filterRows = filterRows;
278
262
  exports.getFilteredRowsWithoutFormulaCalculation = getFilteredRowsWithoutFormulaCalculation;
package/lib/index.js CHANGED
@@ -253,17 +253,12 @@ exports.searchCollaborators = search.searchCollaborators;
253
253
  exports.ValidateFilter = filter.ValidateFilter;
254
254
  exports.isValidEmail = email.isValidEmail;
255
255
  exports.isValidPosition = geolocation$2.isValidPosition;
256
- exports.checkHasFormulaFilter = core$5.checkHasFormulaFilter;
257
- exports.checkIsFilterGroup = core$5.checkIsFilterGroup;
258
- exports.checkIsRelatedFilter = core$5.checkIsRelatedFilter;
259
256
  exports.deleteInvalidFilter = core$5.deleteInvalidFilter;
260
- exports.getClassifiedFilters = core$5.getClassifiedFilters;
261
257
  exports.getFormattedFilter = core$5.getFormattedFilter;
262
258
  exports.getFormattedFilterOtherDate = core$5.getFormattedFilterOtherDate;
263
259
  exports.getFormattedFilters = core$5.getFormattedFilters;
264
260
  exports.getValidFilters = core$5.getValidFilters;
265
261
  exports.getValidFiltersWithoutError = core$5.getValidFiltersWithoutError;
266
- exports.hasRelatedFilters = core$5.hasRelatedFilters;
267
262
  exports.otherDate = core$5.otherDate;
268
263
  exports.checkboxFilter = checkbox$1.checkboxFilter;
269
264
  exports.collaboratorFilter = collaborator$1.collaboratorFilter;
@@ -114,7 +114,7 @@ var convertRow = function convertRow(row, value, table, view, formulaResults, co
114
114
  }
115
115
  case cellType.CellType.DATE:
116
116
  {
117
- var timeTextWithoutTimezone = cellValue$1.replace(/([+-]\d{2}:?\d{2})|Z$/g, '');
117
+ var timeTextWithoutTimezone = cellValue$1 ? cellValue$1.replace(/([+-]\d{2}:?\d{2})|Z$/g, '') : '';
118
118
  var format = column.data && column.data.format;
119
119
  result[columnName] = date.formatTextToDate(timeTextWithoutTimezone, format);
120
120
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dtable-utils",
3
- "version": "5.0.5-beta.4",
3
+ "version": "5.0.6-alpha1",
4
4
  "description": "dtable common utils",
5
5
  "main": "./lib/index.js",
6
6
  "module": "./es/index.js",
@@ -43,6 +43,6 @@
43
43
  "eslint": "^8.43.0",
44
44
  "eslint-config-airbnb": "^19.0.4",
45
45
  "jest": "^29.5.0",
46
- "rollup": "2.79.1"
46
+ "rollup": "2.79.2"
47
47
  }
48
48
  }