dtable-utils 5.0.5-beta.4 → 5.0.6
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/README.md +2 -0
- package/dist/index.js +1 -1
- package/es/archive/sql-generator/filter-condition.js +19 -98
- package/es/color/column-color.js +2 -2
- package/es/color/row-color.js +2 -2
- package/es/common.js +1 -4
- package/es/filter/core.js +20 -191
- package/es/filter/filter-row.js +4 -20
- package/es/index.js +1 -1
- package/es/row/convert.js +1 -1
- package/lib/archive/sql-generator/filter-condition.js +17 -100
- package/lib/common.js +0 -4
- package/lib/filter/core.js +19 -198
- package/lib/filter/filter-row.js +3 -19
- package/lib/index.js +0 -5
- package/lib/row/convert.js +1 -1
- package/package.json +2 -2
|
@@ -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 (
|
|
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 (
|
|
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 =
|
|
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
|
-
|
|
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;
|
package/lib/filter/core.js
CHANGED
|
@@ -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, ... }
|
|
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
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
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
|
|
443
|
-
|
|
444
|
-
|
|
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;
|
package/lib/filter/filter-row.js
CHANGED
|
@@ -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
|
|
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 (
|
|
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 =
|
|
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;
|
package/lib/row/convert.js
CHANGED
|
@@ -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.
|
|
3
|
+
"version": "5.0.6",
|
|
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.
|
|
46
|
+
"rollup": "2.79.2"
|
|
47
47
|
}
|
|
48
48
|
}
|