dtable-utils 4.4.3 → 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.
- package/dist/index.js +1 -1
- package/es/archive/clause-module/search.js +1 -1
- package/es/archive/sql-generator/filter-condition.js +52 -5
- package/es/cell-value-set/duration.js +3 -1
- package/es/cell-value-set/geolocation.js +4 -4
- package/es/cell-value-set/image.js +3 -3
- package/es/cell-value-set/multiple-select.js +6 -6
- package/es/cell-value-set/single-select.js +2 -2
- 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 +2 -1
- package/es/row/core.js +132 -1
- package/es/validate/filter.js +4 -1
- package/lib/archive/clause-module/search.js +1 -1
- package/lib/archive/sql-generator/filter-condition.js +52 -5
- package/lib/cell-value-set/duration.js +3 -1
- package/lib/cell-value-set/geolocation.js +4 -4
- package/lib/cell-value-set/image.js +3 -3
- package/lib/cell-value-set/multiple-select.js +6 -6
- package/lib/cell-value-set/single-select.js +2 -2
- 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 +3 -0
- package/lib/row/core.js +133 -0
- package/lib/validate/filter.js +4 -1
- package/package.json +2 -1
package/es/validate/filter.js
CHANGED
|
@@ -176,7 +176,7 @@ var ValidateFilter = /*#__PURE__*/function () {
|
|
|
176
176
|
if (CHECK_EMPTY_PREDICATES.includes(predicate)) {
|
|
177
177
|
return true;
|
|
178
178
|
}
|
|
179
|
-
if (array_type === CellType.SINGLE_SELECT) {
|
|
179
|
+
if (array_type === CellType.SINGLE_SELECT || array_type === CellType.DEPARTMENT_SINGLE_SELECT) {
|
|
180
180
|
return this.validatePredicate(predicate, {
|
|
181
181
|
type: CellType.MULTIPLE_SELECT
|
|
182
182
|
});
|
|
@@ -421,6 +421,9 @@ var ValidateFilter = /*#__PURE__*/function () {
|
|
|
421
421
|
data: array_data
|
|
422
422
|
});
|
|
423
423
|
}
|
|
424
|
+
if (array_type === CellType.DEPARTMENT_SINGLE_SELECT) {
|
|
425
|
+
return this.isValidTermType(term, TERM_TYPE_MAP.ARRAY);
|
|
426
|
+
}
|
|
424
427
|
if (COLLABORATOR_COLUMN_TYPES.includes(array_type)) {
|
|
425
428
|
return this.isValidTerm(term, predicate, modifier, {
|
|
426
429
|
type: CellType.COLLABORATOR
|
|
@@ -15,9 +15,9 @@ require('../../cell-value-get/cell-value.js');
|
|
|
15
15
|
var filter = require('../../validate/filter.js');
|
|
16
16
|
var core = require('../../view/core.js');
|
|
17
17
|
require('@babel/runtime/helpers/typeof');
|
|
18
|
+
require('../../date.js');
|
|
18
19
|
require('@babel/runtime/helpers/defineProperty');
|
|
19
20
|
require('@babel/runtime/helpers/toConsumableArray');
|
|
20
|
-
require('../../date.js');
|
|
21
21
|
|
|
22
22
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
23
23
|
|
|
@@ -388,6 +388,50 @@ var departmentSingleSelectSqlCondition = function departmentSingleSelectSqlCondi
|
|
|
388
388
|
}
|
|
389
389
|
return '';
|
|
390
390
|
};
|
|
391
|
+
var departmentMultipleSelectSqlCondition = function departmentMultipleSelectSqlCondition(column$1, filterItem) {
|
|
392
|
+
var _ref2;
|
|
393
|
+
var patchedUserDepartmentIdsMap = patchUtils["default"].getUserDepartmentIdsMap(userDepartmentIdsMap);
|
|
394
|
+
var filterPredicate$1 = filterItem.filter_predicate,
|
|
395
|
+
filterTerm = filterItem.filter_term;
|
|
396
|
+
var name = column$1.name;
|
|
397
|
+
if (filterPredicate$1 === filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY) {
|
|
398
|
+
return "`".concat(name, "` is not null");
|
|
399
|
+
}
|
|
400
|
+
if (filterPredicate$1 === filterPredicate.FILTER_PREDICATE_TYPE.EMPTY) {
|
|
401
|
+
return "`".concat(name, "` is null");
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
// filter_term is invalid
|
|
405
|
+
if (!Array.isArray(filterTerm) || filterTerm.length === 0) {
|
|
406
|
+
return '';
|
|
407
|
+
}
|
|
408
|
+
var _ref = patchedUserDepartmentIdsMap || {},
|
|
409
|
+
current_user_department_ids = _ref.current_user_department_ids,
|
|
410
|
+
current_user_department_and_sub_ids = _ref.current_user_department_and_sub_ids;
|
|
411
|
+
var normalizedFilterTerm = filterTerm;
|
|
412
|
+
normalizedFilterTerm = (_ref2 = []).concat.apply(_ref2, _toConsumableArray__default["default"](filterTerm.map(function (value) {
|
|
413
|
+
if (value === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT && Array.isArray(current_user_department_ids)) {
|
|
414
|
+
return current_user_department_ids;
|
|
415
|
+
}
|
|
416
|
+
if (value === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB && Array.isArray(current_user_department_and_sub_ids)) {
|
|
417
|
+
return current_user_department_and_sub_ids;
|
|
418
|
+
}
|
|
419
|
+
return value;
|
|
420
|
+
})));
|
|
421
|
+
if (filterPredicate$1 === filterPredicate.FILTER_PREDICATE_TYPE.HAS_ANY_OF) {
|
|
422
|
+
return "`".concat(name, "` in (").concat(normalizedFilterTerm.join(', '), ")");
|
|
423
|
+
}
|
|
424
|
+
if (filterPredicate$1 === filterPredicate.FILTER_PREDICATE_TYPE.HAS_ALL_OF) {
|
|
425
|
+
return "`".concat(name, "` has all of (").concat(normalizedFilterTerm.join(', '), ")");
|
|
426
|
+
}
|
|
427
|
+
if (filterPredicate$1 === filterPredicate.FILTER_PREDICATE_TYPE.HAS_NONE_OF) {
|
|
428
|
+
return "`".concat(name, "` has none of (").concat(normalizedFilterTerm.join(', '), ")");
|
|
429
|
+
}
|
|
430
|
+
if (filterPredicate$1 === filterPredicate.FILTER_PREDICATE_TYPE.IS_EXACTLY) {
|
|
431
|
+
return "`".concat(name, "` is exactly (").concat(normalizedFilterTerm.join(', '), ")");
|
|
432
|
+
}
|
|
433
|
+
return '';
|
|
434
|
+
};
|
|
391
435
|
|
|
392
436
|
// MULTIPLE_SELECT
|
|
393
437
|
var multipleSelectSqlCondition = function multipleSelectSqlCondition(column, filterItem) {
|
|
@@ -533,9 +577,9 @@ var arrayColumnCondition = function arrayColumnCondition(column, filterItem) {
|
|
|
533
577
|
if (filter_predicate === filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY) {
|
|
534
578
|
return "`".concat(name, "` is not null");
|
|
535
579
|
}
|
|
536
|
-
var
|
|
537
|
-
array_type =
|
|
538
|
-
array_data =
|
|
580
|
+
var _ref3 = column.data || {},
|
|
581
|
+
array_type = _ref3.array_type,
|
|
582
|
+
array_data = _ref3.array_data;
|
|
539
583
|
if (!array_type) return '';
|
|
540
584
|
|
|
541
585
|
// encapsulate a new column according to the calculation result
|
|
@@ -567,6 +611,9 @@ var arrayColumnCondition = function arrayColumnCondition(column, filterItem) {
|
|
|
567
611
|
if (array_type === cellType.CellType.SINGLE_SELECT) {
|
|
568
612
|
return multipleSelectSqlCondition(linkedColumn, filterItem);
|
|
569
613
|
}
|
|
614
|
+
if (array_type === cellType.CellType.DEPARTMENT_SINGLE_SELECT) {
|
|
615
|
+
return departmentMultipleSelectSqlCondition(linkedColumn, filterItem);
|
|
616
|
+
}
|
|
570
617
|
if ([cellType.CellType.CREATOR, cellType.CellType.LAST_MODIFIER].includes(array_type)) {
|
|
571
618
|
return collaboratorSqlCondition(linkedColumn, filterItem);
|
|
572
619
|
}
|
|
@@ -582,8 +629,8 @@ var linkSqlCondition = function linkSqlCondition(column, filterItem) {
|
|
|
582
629
|
|
|
583
630
|
// FORMULA | LINK-FORMULA
|
|
584
631
|
var formulaSqlCondition = function formulaSqlCondition(column, filterItem) {
|
|
585
|
-
var
|
|
586
|
-
result_type =
|
|
632
|
+
var _ref4 = column.data || {},
|
|
633
|
+
result_type = _ref4.result_type;
|
|
587
634
|
if (result_type === formula.FORMULA_RESULT_TYPE.STRING) {
|
|
588
635
|
// need to change the type of column to text
|
|
589
636
|
var newColumn = {
|
|
@@ -37,7 +37,9 @@ var formatTextToDuration = function formatTextToDuration(value, data) {
|
|
|
37
37
|
var timeParts = stringifyDuration.split(/[::]/); // support ':' and ':'.
|
|
38
38
|
var timePartsLen = timeParts.length;
|
|
39
39
|
if (timePartsLen === 0) return '';
|
|
40
|
-
var hoursIndex
|
|
40
|
+
var hoursIndex;
|
|
41
|
+
var minutesIndex;
|
|
42
|
+
var secondsIndex;
|
|
41
43
|
if (duration_format === column.DURATION_FORMATS_MAP.H_MM) {
|
|
42
44
|
hoursIndex = timePartsLen - 2;
|
|
43
45
|
minutesIndex = timePartsLen - 1;
|
|
@@ -40,10 +40,10 @@ var formatTextToGeolocation = function formatTextToGeolocation(value, columnData
|
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
var matchedProvince = cellValue.match(provinceReg);
|
|
43
|
-
var province = ''
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
var province = '';
|
|
44
|
+
var city = '';
|
|
45
|
+
var district = '';
|
|
46
|
+
var detail = '';
|
|
47
47
|
if (matchedProvince) {
|
|
48
48
|
province = matchedProvince[0];
|
|
49
49
|
cellValue = cellValue.slice(matchedProvince.index + province.length);
|
|
@@ -8,12 +8,12 @@ var formatTextToImage = function formatTextToImage(value) {
|
|
|
8
8
|
}
|
|
9
9
|
var imageUrl = value.trim();
|
|
10
10
|
var imageUrls = imageUrl.split(' ');
|
|
11
|
-
imageUrls = imageUrls.filter(function (
|
|
12
|
-
var strUrl =
|
|
11
|
+
imageUrls = imageUrls.filter(function (item) {
|
|
12
|
+
var strUrl = item.match(/http:\/\/.+/);
|
|
13
13
|
if (!strUrl) {
|
|
14
14
|
return false;
|
|
15
15
|
}
|
|
16
|
-
if (!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(
|
|
16
|
+
if (!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(item)) {
|
|
17
17
|
return false;
|
|
18
18
|
}
|
|
19
19
|
return true;
|
|
@@ -32,8 +32,8 @@ var formatTextToMultipleOption = function formatTextToMultipleOption(value, colu
|
|
|
32
32
|
options = [];
|
|
33
33
|
}
|
|
34
34
|
// is exist
|
|
35
|
-
var option = options.find(function (
|
|
36
|
-
return
|
|
35
|
+
var option = options.find(function (item) {
|
|
36
|
+
return item.name === optionName;
|
|
37
37
|
});
|
|
38
38
|
if (option) {
|
|
39
39
|
return [option.id];
|
|
@@ -41,8 +41,8 @@ var formatTextToMultipleOption = function formatTextToMultipleOption(value, colu
|
|
|
41
41
|
|
|
42
42
|
// not exist
|
|
43
43
|
var optionNames = optionName.split(' ');
|
|
44
|
-
var optionIds = optionNames.map(function (
|
|
45
|
-
return singleSelect.formatTextToSingleOption(
|
|
44
|
+
var optionIds = optionNames.map(function (item) {
|
|
45
|
+
return singleSelect.formatTextToSingleOption(item, column);
|
|
46
46
|
});
|
|
47
47
|
return optionIds;
|
|
48
48
|
};
|
|
@@ -61,8 +61,8 @@ var formatValueToMultipleOption = function formatValueToMultipleOption(value, co
|
|
|
61
61
|
options = [];
|
|
62
62
|
}
|
|
63
63
|
var selectOptions = value.map(function (optionName) {
|
|
64
|
-
var option$1 = options.find(function (
|
|
65
|
-
return
|
|
64
|
+
var option$1 = options.find(function (item) {
|
|
65
|
+
return item.name === optionName;
|
|
66
66
|
});
|
|
67
67
|
if (option$1) return option$1;
|
|
68
68
|
var random = Math.floor(Math.random() * (selectOption.SELECT_OPTION_COLORS.length - 1));
|
|
@@ -30,8 +30,8 @@ var formatTextToSingleOption = function formatTextToSingleOption(value, column)
|
|
|
30
30
|
column.data.options = [];
|
|
31
31
|
options = [];
|
|
32
32
|
}
|
|
33
|
-
var option$1 = options.find(function (
|
|
34
|
-
return
|
|
33
|
+
var option$1 = options.find(function (item) {
|
|
34
|
+
return item.name === optionName;
|
|
35
35
|
});
|
|
36
36
|
if (option$1) {
|
|
37
37
|
return option$1.id;
|
package/lib/filter/core.js
CHANGED
|
@@ -17,6 +17,20 @@ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_definePropert
|
|
|
17
17
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
18
18
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
19
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];
|
|
20
|
+
var isCurrentUserDepartment = function isCurrentUserDepartment(departmentId, userDepartmentIdsMap) {
|
|
21
|
+
var _ref = userDepartmentIdsMap || {},
|
|
22
|
+
current_user_department_ids = _ref.current_user_department_ids;
|
|
23
|
+
return Array.isArray(current_user_department_ids) && current_user_department_ids.includes(departmentId);
|
|
24
|
+
};
|
|
25
|
+
var isCurrentUserDepartmentAndSub = function isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap) {
|
|
26
|
+
var _ref2 = userDepartmentIdsMap || {},
|
|
27
|
+
current_user_department_and_sub_ids = _ref2.current_user_department_and_sub_ids;
|
|
28
|
+
return Array.isArray(current_user_department_and_sub_ids) && current_user_department_and_sub_ids.includes(departmentId);
|
|
29
|
+
};
|
|
30
|
+
var isSpecificDepartment = function isSpecificDepartment(departmentId, filterTerm) {
|
|
31
|
+
if (typeof departmentId !== 'number') return false;
|
|
32
|
+
return filterTerm.includes(departmentId);
|
|
33
|
+
};
|
|
20
34
|
|
|
21
35
|
/**
|
|
22
36
|
* Get filters which excludes incomplete
|
|
@@ -265,9 +279,9 @@ var getFormattedFilter = function getFormattedFilter(filter, column) {
|
|
|
265
279
|
}
|
|
266
280
|
case cellType.CellType.LINK:
|
|
267
281
|
{
|
|
268
|
-
var
|
|
269
|
-
_array_type =
|
|
270
|
-
_array_data =
|
|
282
|
+
var _ref3 = columnData || {},
|
|
283
|
+
_array_type = _ref3.array_type,
|
|
284
|
+
_array_data = _ref3.array_data;
|
|
271
285
|
var _linkedColumn = {
|
|
272
286
|
type: _array_type,
|
|
273
287
|
data: _array_data
|
|
@@ -336,4 +350,7 @@ exports.getFormattedFilterOtherDate = getFormattedFilterOtherDate;
|
|
|
336
350
|
exports.getFormattedFilters = getFormattedFilters;
|
|
337
351
|
exports.getValidFilters = getValidFilters;
|
|
338
352
|
exports.getValidFiltersWithoutError = getValidFiltersWithoutError;
|
|
353
|
+
exports.isCurrentUserDepartment = isCurrentUserDepartment;
|
|
354
|
+
exports.isCurrentUserDepartmentAndSub = isCurrentUserDepartmentAndSub;
|
|
355
|
+
exports.isSpecificDepartment = isSpecificDepartment;
|
|
339
356
|
exports.otherDate = otherDate;
|
|
@@ -9,6 +9,7 @@ var collaborator = require('./collaborator.js');
|
|
|
9
9
|
var date = require('./date.js');
|
|
10
10
|
var text = require('./text.js');
|
|
11
11
|
var multipleSelect = require('./multiple-select.js');
|
|
12
|
+
var departmentMultipleSelect = require('./department-multiple-select.js');
|
|
12
13
|
var number$1 = require('./number.js');
|
|
13
14
|
var cellType = require('../../constants/cell-type.js');
|
|
14
15
|
var column = require('../../constants/column.js');
|
|
@@ -26,7 +27,8 @@ var TRUE_VALUE = [true, 'true'];
|
|
|
26
27
|
*/
|
|
27
28
|
var filterByArrayType = function filterByArrayType(array, filter, _ref) {
|
|
28
29
|
var username = _ref.username,
|
|
29
|
-
userId = _ref.userId
|
|
30
|
+
userId = _ref.userId,
|
|
31
|
+
userDepartmentIdsMap = _ref.userDepartmentIdsMap;
|
|
30
32
|
var column$1 = filter.column,
|
|
31
33
|
linked_column = filter.linked_column;
|
|
32
34
|
var filter_predicate = filter.filter_predicate;
|
|
@@ -60,19 +62,26 @@ var filterByArrayType = function filterByArrayType(array, filter, _ref) {
|
|
|
60
62
|
if (linkedColumnType === cellType.CellType.MULTIPLE_SELECT) {
|
|
61
63
|
return multipleSelect.multipleSelectFilter(array, filter);
|
|
62
64
|
}
|
|
65
|
+
if (linkedColumnType === cellType.CellType.DEPARTMENT_SINGLE_SELECT) {
|
|
66
|
+
var _normalizedArray2 = array;
|
|
67
|
+
if (array && !Array.isArray(array)) {
|
|
68
|
+
_normalizedArray2 = [array];
|
|
69
|
+
}
|
|
70
|
+
return departmentMultipleSelect.departmentMultipleSelectFilter(_normalizedArray2, filter, userDepartmentIdsMap);
|
|
71
|
+
}
|
|
63
72
|
if (number.isNumericColumn({
|
|
64
73
|
type: linkedColumnType
|
|
65
74
|
})) {
|
|
66
|
-
var
|
|
75
|
+
var _normalizedArray3 = array;
|
|
67
76
|
if (Array.isArray(array)) {
|
|
68
77
|
var cellValueLength = array.length;
|
|
69
78
|
if (cellValueLength === 0) {
|
|
70
|
-
|
|
79
|
+
_normalizedArray3 = '';
|
|
71
80
|
} else if (cellValueLength === 1) {
|
|
72
|
-
|
|
81
|
+
_normalizedArray3 = array[0];
|
|
73
82
|
}
|
|
74
83
|
}
|
|
75
|
-
return number$1.numberFilter(
|
|
84
|
+
return number$1.numberFilter(_normalizedArray3, filter);
|
|
76
85
|
}
|
|
77
86
|
if (column.DATE_COLUMN_OPTIONS.includes(linkedColumnType)) {
|
|
78
87
|
var newCellValue = array;
|
|
@@ -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');
|
|
@@ -162,7 +163,9 @@ exports.getTableColumnByKey = column$1.getTableColumnByKey;
|
|
|
162
163
|
exports.getTableColumnByName = column$1.getTableColumnByName;
|
|
163
164
|
exports.getRowById = row.getRowById;
|
|
164
165
|
exports.getRowsByIds = row.getRowsByIds;
|
|
166
|
+
exports.getRowDefaultData = core$1.getRowDefaultData;
|
|
165
167
|
exports.isTableRows = core$1.isTableRows;
|
|
168
|
+
exports.updateTableRowsWithRowsData = core$1.updateTableRowsWithRowsData;
|
|
166
169
|
exports.convertRow = convert.convertRow;
|
|
167
170
|
exports.convertRowBack = convert.convertRowBack;
|
|
168
171
|
exports.getLinkColumnsUsedInFilters = core$2.getLinkColumnsUsedInFilters;
|