dtable-utils 4.4.3-alpha2 → 4.4.4-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.
@@ -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
 
@@ -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');
@@ -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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dtable-utils",
3
- "version": "4.4.3-alpha2",
3
+ "version": "4.4.4-beta.1",
4
4
  "description": "dtable common utils",
5
5
  "main": "./lib/index.js",
6
6
  "module": "./es/index.js",