dtable-utils 4.4.4 → 4.4.5-beta.1
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/dist/index.js +1 -1
- package/es/archive/sql-generator/filter-condition.js +52 -5
- package/es/filter/core.js +18 -4
- package/es/filter/filter-column/array.js +14 -5
- package/es/filter/filter-column/department-multiple-select.js +117 -0
- package/es/filter/filter-column/department-single-select.js +1 -15
- package/es/filter/filter-column/formula.js +4 -2
- package/es/filter/filter-column/link.js +4 -2
- package/es/filter/filter-row.js +7 -3
- package/es/index.js +1 -0
- package/es/validate/filter.js +4 -1
- package/lib/archive/sql-generator/filter-condition.js +52 -5
- package/lib/filter/core.js +20 -3
- package/lib/filter/filter-column/array.js +14 -5
- package/lib/filter/filter-column/department-multiple-select.js +125 -0
- package/lib/filter/filter-column/department-single-select.js +11 -25
- package/lib/filter/filter-column/formula.js +4 -2
- package/lib/filter/filter-column/link.js +4 -2
- package/lib/filter/filter-row.js +7 -3
- package/lib/index.js +1 -0
- package/lib/validate/filter.js +4 -1
- package/package.json +1 -1
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
6
|
+
var column = require('../../constants/column.js');
|
|
7
|
+
var filterPredicate = require('../../constants/filter/filter-predicate.js');
|
|
8
|
+
var core = require('../core.js');
|
|
9
|
+
|
|
10
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
|
+
|
|
12
|
+
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Filter multiple-select
|
|
16
|
+
* @param {array} departmentIds e.g. [ 14, ... ]
|
|
17
|
+
* @param {string} filter_predicate
|
|
18
|
+
* @param {array} filter_term department ids
|
|
19
|
+
* @param {object} userDepartmentIdsMap
|
|
20
|
+
* @returns bool
|
|
21
|
+
*/
|
|
22
|
+
var departmentMultipleSelectFilter = function departmentMultipleSelectFilter(departmentIds, _ref, userDepartmentIdsMap) {
|
|
23
|
+
var filter_predicate = _ref.filter_predicate,
|
|
24
|
+
filter_term = _ref.filter_term;
|
|
25
|
+
switch (filter_predicate) {
|
|
26
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.HAS_ANY_OF:
|
|
27
|
+
{
|
|
28
|
+
if (filter_term.length === 0) return true;
|
|
29
|
+
if (!Array.isArray(departmentIds)) return false;
|
|
30
|
+
// CURRENT_USER_DEPARTMENT is a subset of CURRENT_USER_DEPARTMENT_AND_SUB, so it is necessary to first determine CURRENT_USER_DEPARTMENT_AND_SUB.
|
|
31
|
+
if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) {
|
|
32
|
+
return departmentIds.some(function (id) {
|
|
33
|
+
return core.isCurrentUserDepartmentAndSub(id, userDepartmentIdsMap) || core.isSpecificDepartment(id, filter_term);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) {
|
|
37
|
+
return departmentIds.some(function (id) {
|
|
38
|
+
return core.isCurrentUserDepartment(id, userDepartmentIdsMap) || core.isSpecificDepartment(id, filter_term);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return departmentIds.some(function (id) {
|
|
42
|
+
return core.isSpecificDepartment(id, filter_term);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.HAS_ALL_OF:
|
|
46
|
+
{
|
|
47
|
+
if (filter_term.length === 0) return true;
|
|
48
|
+
if (!Array.isArray(departmentIds)) return false;
|
|
49
|
+
var _ref2 = userDepartmentIdsMap || {},
|
|
50
|
+
current_user_department_and_sub_ids = _ref2.current_user_department_and_sub_ids,
|
|
51
|
+
current_user_department_ids = _ref2.current_user_department_ids;
|
|
52
|
+
if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) {
|
|
53
|
+
if (Array.isArray(current_user_department_and_sub_ids) && !current_user_department_and_sub_ids.every(function (id) {
|
|
54
|
+
return departmentIds.includes(id);
|
|
55
|
+
})) return false;
|
|
56
|
+
} else if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) {
|
|
57
|
+
if (Array.isArray(current_user_department_ids) && !current_user_department_ids.every(function (id) {
|
|
58
|
+
return departmentIds.includes(id);
|
|
59
|
+
})) return false;
|
|
60
|
+
}
|
|
61
|
+
return filter_term.every(function (id) {
|
|
62
|
+
return id === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT || id === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB || core.isSpecificDepartment(id, departmentIds);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.HAS_NONE_OF:
|
|
66
|
+
{
|
|
67
|
+
if (filter_term.length === 0 || !Array.isArray(departmentIds) || departmentIds.length === 0) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) {
|
|
71
|
+
return departmentIds.every(function (id) {
|
|
72
|
+
return !core.isCurrentUserDepartmentAndSub(id, userDepartmentIdsMap) && !core.isSpecificDepartment(id, filter_term);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) {
|
|
76
|
+
return departmentIds.every(function (id) {
|
|
77
|
+
return !core.isCurrentUserDepartment(id, userDepartmentIdsMap) && !core.isSpecificDepartment(id, filter_term);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return filter_term.every(function (departmentId) {
|
|
81
|
+
return !core.isSpecificDepartment(departmentId, departmentIds);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS_EXACTLY:
|
|
85
|
+
{
|
|
86
|
+
if (filter_term.length === 0) return true;
|
|
87
|
+
if (!Array.isArray(departmentIds)) return false;
|
|
88
|
+
var normalizedFilterTerm = filter_term.slice(0);
|
|
89
|
+
if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) {
|
|
90
|
+
var index = normalizedFilterTerm.indexOf(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB);
|
|
91
|
+
var _ref3 = userDepartmentIdsMap || {},
|
|
92
|
+
_current_user_department_and_sub_ids = _ref3.current_user_department_and_sub_ids;
|
|
93
|
+
if (Array.isArray(_current_user_department_and_sub_ids)) {
|
|
94
|
+
normalizedFilterTerm.splice.apply(normalizedFilterTerm, [index, 1].concat(_toConsumableArray__default["default"](_current_user_department_and_sub_ids)));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) {
|
|
98
|
+
var _index = normalizedFilterTerm.indexOf(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT);
|
|
99
|
+
var _ref4 = userDepartmentIdsMap || {},
|
|
100
|
+
_current_user_department_ids = _ref4.current_user_department_ids;
|
|
101
|
+
if (Array.isArray(_current_user_department_ids)) {
|
|
102
|
+
normalizedFilterTerm.splice.apply(normalizedFilterTerm, [_index, 1].concat(_toConsumableArray__default["default"](_current_user_department_ids)));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
var uniqueArr = function uniqueArr(arr) {
|
|
106
|
+
return _toConsumableArray__default["default"](new Set(arr)).sort();
|
|
107
|
+
};
|
|
108
|
+
return uniqueArr(departmentIds).toString() === uniqueArr(normalizedFilterTerm).toString();
|
|
109
|
+
}
|
|
110
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
|
|
111
|
+
{
|
|
112
|
+
return !Array.isArray(departmentIds) || departmentIds.length === 0;
|
|
113
|
+
}
|
|
114
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
|
|
115
|
+
{
|
|
116
|
+
return Array.isArray(departmentIds) && departmentIds.length > 0;
|
|
117
|
+
}
|
|
118
|
+
default:
|
|
119
|
+
{
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
exports.departmentMultipleSelectFilter = departmentMultipleSelectFilter;
|
|
@@ -4,21 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var column = require('../../constants/column.js');
|
|
6
6
|
var filterPredicate = require('../../constants/filter/filter-predicate.js');
|
|
7
|
-
|
|
8
|
-
var isCurrentUserDepartment = function isCurrentUserDepartment(id, userDepartmentIdsMap) {
|
|
9
|
-
var currentUserDepartmentIds = userDepartmentIdsMap && userDepartmentIdsMap.current_user_department_ids;
|
|
10
|
-
if (!Array.isArray(currentUserDepartmentIds)) return false;
|
|
11
|
-
return currentUserDepartmentIds.includes(id);
|
|
12
|
-
};
|
|
13
|
-
var isCurrentUserDepartmentAndSub = function isCurrentUserDepartmentAndSub(id, userDepartmentIdsMap) {
|
|
14
|
-
var currentUserDepartmentAndSubIds = userDepartmentIdsMap && userDepartmentIdsMap.current_user_department_and_sub_ids;
|
|
15
|
-
if (!Array.isArray(currentUserDepartmentAndSubIds)) return false;
|
|
16
|
-
return currentUserDepartmentAndSubIds.includes(id);
|
|
17
|
-
};
|
|
18
|
-
var isSpecificDepartment = function isSpecificDepartment(departmentId, filterTerm) {
|
|
19
|
-
if (typeof departmentId !== 'number') return false;
|
|
20
|
-
return filterTerm.includes(departmentId);
|
|
21
|
-
};
|
|
7
|
+
var core = require('../core.js');
|
|
22
8
|
|
|
23
9
|
/**
|
|
24
10
|
* Filter department-single-select
|
|
@@ -36,10 +22,10 @@ var departmentSingleSelectFilter = function departmentSingleSelectFilter(departm
|
|
|
36
22
|
{
|
|
37
23
|
if (!filter_term) return true;
|
|
38
24
|
if (filter_term === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT) {
|
|
39
|
-
return isCurrentUserDepartment(departmentId, userDepartmentIdsMap);
|
|
25
|
+
return core.isCurrentUserDepartment(departmentId, userDepartmentIdsMap);
|
|
40
26
|
}
|
|
41
27
|
if (filter_term === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB) {
|
|
42
|
-
return isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap);
|
|
28
|
+
return core.isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap);
|
|
43
29
|
}
|
|
44
30
|
return departmentId === filter_term;
|
|
45
31
|
}
|
|
@@ -47,10 +33,10 @@ var departmentSingleSelectFilter = function departmentSingleSelectFilter(departm
|
|
|
47
33
|
{
|
|
48
34
|
if (!filter_term) return true;
|
|
49
35
|
if (filter_term === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT) {
|
|
50
|
-
return !isCurrentUserDepartment(departmentId, userDepartmentIdsMap);
|
|
36
|
+
return !core.isCurrentUserDepartment(departmentId, userDepartmentIdsMap);
|
|
51
37
|
}
|
|
52
38
|
if (filter_term === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB) {
|
|
53
|
-
return !isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap);
|
|
39
|
+
return !core.isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap);
|
|
54
40
|
}
|
|
55
41
|
return departmentId !== filter_term;
|
|
56
42
|
}
|
|
@@ -58,23 +44,23 @@ var departmentSingleSelectFilter = function departmentSingleSelectFilter(departm
|
|
|
58
44
|
{
|
|
59
45
|
if (filter_term.length === 0) return true;
|
|
60
46
|
if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) {
|
|
61
|
-
return isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap) || isSpecificDepartment(departmentId, filter_term);
|
|
47
|
+
return core.isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap) || core.isSpecificDepartment(departmentId, filter_term);
|
|
62
48
|
}
|
|
63
49
|
if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) {
|
|
64
|
-
return isCurrentUserDepartment(departmentId, userDepartmentIdsMap) || isSpecificDepartment(departmentId, filter_term);
|
|
50
|
+
return core.isCurrentUserDepartment(departmentId, userDepartmentIdsMap) || core.isSpecificDepartment(departmentId, filter_term);
|
|
65
51
|
}
|
|
66
|
-
return isSpecificDepartment(departmentId, filter_term);
|
|
52
|
+
return core.isSpecificDepartment(departmentId, filter_term);
|
|
67
53
|
}
|
|
68
54
|
case filterPredicate.FILTER_PREDICATE_TYPE.IS_NONE_OF:
|
|
69
55
|
{
|
|
70
56
|
if (filter_term.length === 0) return true;
|
|
71
57
|
if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) {
|
|
72
|
-
return !isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap) && !isSpecificDepartment(departmentId, filter_term);
|
|
58
|
+
return !core.isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap) && !core.isSpecificDepartment(departmentId, filter_term);
|
|
73
59
|
}
|
|
74
60
|
if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) {
|
|
75
|
-
return !isCurrentUserDepartment(departmentId, userDepartmentIdsMap) && !isSpecificDepartment(departmentId, filter_term);
|
|
61
|
+
return !core.isCurrentUserDepartment(departmentId, userDepartmentIdsMap) && !core.isSpecificDepartment(departmentId, filter_term);
|
|
76
62
|
}
|
|
77
|
-
return !isSpecificDepartment(departmentId, filter_term);
|
|
63
|
+
return !core.isSpecificDepartment(departmentId, filter_term);
|
|
78
64
|
}
|
|
79
65
|
case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
|
|
80
66
|
{
|
|
@@ -20,7 +20,8 @@ var formula = require('../../constants/formula.js');
|
|
|
20
20
|
*/
|
|
21
21
|
var formulaFilter = function formulaFilter(computedValue, filter, _ref) {
|
|
22
22
|
var username = _ref.username,
|
|
23
|
-
userId = _ref.userId
|
|
23
|
+
userId = _ref.userId,
|
|
24
|
+
userDepartmentIdsMap = _ref.userDepartmentIdsMap;
|
|
24
25
|
var data = filter.column.data;
|
|
25
26
|
var _ref2 = data || {},
|
|
26
27
|
result_type = _ref2.result_type;
|
|
@@ -47,7 +48,8 @@ var formulaFilter = function formulaFilter(computedValue, filter, _ref) {
|
|
|
47
48
|
{
|
|
48
49
|
return array.filterByArrayType(computedValue, filter, {
|
|
49
50
|
username: username,
|
|
50
|
-
userId: userId
|
|
51
|
+
userId: userId,
|
|
52
|
+
userDepartmentIdsMap: userDepartmentIdsMap
|
|
51
53
|
});
|
|
52
54
|
}
|
|
53
55
|
default:
|
|
@@ -14,10 +14,12 @@ var array = require('./array.js');
|
|
|
14
14
|
*/
|
|
15
15
|
var linkFilter = function linkFilter(linkedCellValues, filter, _ref) {
|
|
16
16
|
var username = _ref.username,
|
|
17
|
-
userId = _ref.userId
|
|
17
|
+
userId = _ref.userId,
|
|
18
|
+
userDepartmentIdsMap = _ref.userDepartmentIdsMap;
|
|
18
19
|
return array.filterByArrayType(linkedCellValues, filter, {
|
|
19
20
|
username: username,
|
|
20
|
-
userId: userId
|
|
21
|
+
userId: userId,
|
|
22
|
+
userDepartmentIdsMap: userDepartmentIdsMap
|
|
21
23
|
});
|
|
22
24
|
};
|
|
23
25
|
|
package/lib/filter/filter-row.js
CHANGED
|
@@ -18,10 +18,12 @@ var number = require('./filter-column/number.js');
|
|
|
18
18
|
var singleSelect = require('./filter-column/single-select.js');
|
|
19
19
|
var link = require('./filter-column/link.js');
|
|
20
20
|
var departmentSingleSelect = require('./filter-column/department-single-select.js');
|
|
21
|
+
require('@babel/runtime/helpers/toConsumableArray');
|
|
22
|
+
var column = require('../constants/column.js');
|
|
23
|
+
require('../constants/filter/filter-predicate.js');
|
|
21
24
|
var index = require('../constants/filter/index.js');
|
|
22
25
|
var date = require('../date.js');
|
|
23
26
|
var cellType = require('../constants/cell-type.js');
|
|
24
|
-
var column = require('../constants/column.js');
|
|
25
27
|
|
|
26
28
|
var getFilterResult = function getFilterResult(row, filter, _ref) {
|
|
27
29
|
var formulaRow = _ref.formulaRow,
|
|
@@ -99,7 +101,8 @@ var getFilterResult = function getFilterResult(row, filter, _ref) {
|
|
|
99
101
|
cellValue = formulaRow[column_key];
|
|
100
102
|
return formula.formulaFilter(cellValue, filter, {
|
|
101
103
|
username: username,
|
|
102
|
-
userId: userId
|
|
104
|
+
userId: userId,
|
|
105
|
+
userDepartmentIdsMap: userDepartmentIdsMap
|
|
103
106
|
});
|
|
104
107
|
}
|
|
105
108
|
case cellType.CellType.LINK:
|
|
@@ -110,7 +113,8 @@ var getFilterResult = function getFilterResult(row, filter, _ref) {
|
|
|
110
113
|
}) : null;
|
|
111
114
|
return link.linkFilter(cellValue, filter, {
|
|
112
115
|
username: username,
|
|
113
|
-
userId: userId
|
|
116
|
+
userId: userId,
|
|
117
|
+
userDepartmentIdsMap: userDepartmentIdsMap
|
|
114
118
|
});
|
|
115
119
|
}
|
|
116
120
|
case cellType.CellType.DIGITAL_SIGN:
|
package/lib/index.js
CHANGED
|
@@ -77,6 +77,7 @@ var number$4 = require('./filter/filter-column/number.js');
|
|
|
77
77
|
var singleSelect$1 = require('./filter/filter-column/single-select.js');
|
|
78
78
|
var link = require('./filter/filter-column/link.js');
|
|
79
79
|
var filterPredicate = require('./constants/filter/filter-predicate.js');
|
|
80
|
+
require('@babel/runtime/helpers/toConsumableArray');
|
|
80
81
|
var filterRow = require('./filter/filter-row.js');
|
|
81
82
|
var core$6 = require('./sort/core.js');
|
|
82
83
|
var checkbox$2 = require('./sort/sort-column/checkbox.js');
|
package/lib/validate/filter.js
CHANGED
|
@@ -186,7 +186,7 @@ var ValidateFilter = /*#__PURE__*/function () {
|
|
|
186
186
|
if (CHECK_EMPTY_PREDICATES.includes(predicate)) {
|
|
187
187
|
return true;
|
|
188
188
|
}
|
|
189
|
-
if (array_type === cellType.CellType.SINGLE_SELECT) {
|
|
189
|
+
if (array_type === cellType.CellType.SINGLE_SELECT || array_type === cellType.CellType.DEPARTMENT_SINGLE_SELECT) {
|
|
190
190
|
return this.validatePredicate(predicate, {
|
|
191
191
|
type: cellType.CellType.MULTIPLE_SELECT
|
|
192
192
|
});
|
|
@@ -431,6 +431,9 @@ var ValidateFilter = /*#__PURE__*/function () {
|
|
|
431
431
|
data: array_data
|
|
432
432
|
});
|
|
433
433
|
}
|
|
434
|
+
if (array_type === cellType.CellType.DEPARTMENT_SINGLE_SELECT) {
|
|
435
|
+
return this.isValidTermType(term, TERM_TYPE_MAP.ARRAY);
|
|
436
|
+
}
|
|
434
437
|
if (column.COLLABORATOR_COLUMN_TYPES.includes(array_type)) {
|
|
435
438
|
return this.isValidTerm(term, predicate, modifier, {
|
|
436
439
|
type: cellType.CellType.COLLABORATOR
|