dtable-utils 5.0.4 → 5.0.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 +98 -19
- package/es/common.js +4 -1
- package/es/filter/core.js +93 -19
- package/es/filter/filter-row.js +17 -1
- package/lib/archive/sql-generator/filter-condition.js +100 -17
- package/lib/common.js +4 -0
- package/lib/filter/core.js +95 -19
- package/lib/filter/filter-row.js +16 -0
- package/package.json +1 -1
package/lib/filter/core.js
CHANGED
|
@@ -8,6 +8,7 @@ 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');
|
|
11
12
|
var filterModifier = require('../constants/filter/filter-modifier.js');
|
|
12
13
|
|
|
13
14
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -17,6 +18,15 @@ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_definePropert
|
|
|
17
18
|
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
19
|
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
20
|
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
|
+
};
|
|
20
30
|
var isCurrentUserDepartment = function isCurrentUserDepartment(departmentId, userDepartmentIdsMap) {
|
|
21
31
|
var _ref = userDepartmentIdsMap || {},
|
|
22
32
|
current_user_department_ids = _ref.current_user_department_ids;
|
|
@@ -32,9 +42,24 @@ var isSpecificDepartment = function isSpecificDepartment(departmentId, filterTer
|
|
|
32
42
|
return filterTerm.includes(departmentId);
|
|
33
43
|
};
|
|
34
44
|
|
|
45
|
+
/**
|
|
46
|
+
* Check if the filter is available to display
|
|
47
|
+
* @param {object} filter
|
|
48
|
+
* @param {array} columns
|
|
49
|
+
* @returns bool
|
|
50
|
+
*/
|
|
51
|
+
var checkIsAvailableFilter = function checkIsAvailableFilter(filter$1, columns) {
|
|
52
|
+
var _ValidateFilter$valid = filter.ValidateFilter.validate(filter$1, columns),
|
|
53
|
+
error_message = _ValidateFilter$valid.error_message;
|
|
54
|
+
if (error_message && error_message === index.FILTER_ERR_MSG.INCOMPLETE_FILTER) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return true;
|
|
58
|
+
};
|
|
59
|
+
|
|
35
60
|
/**
|
|
36
61
|
* Get filters which excludes incomplete
|
|
37
|
-
* @param {array} filters e.g. [{ column_key, filter_predicate, ... }]
|
|
62
|
+
* @param {array} filters e.g. [{ column_key, filter_predicate, ... }, { filters: [...]}]
|
|
38
63
|
* @param {array} columns
|
|
39
64
|
* @returns valid filters, array
|
|
40
65
|
*/
|
|
@@ -42,11 +67,24 @@ var getValidFilters = function getValidFilters(filters, columns) {
|
|
|
42
67
|
if (!Array.isArray(filters) || !Array.isArray(columns)) {
|
|
43
68
|
return [];
|
|
44
69
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
70
|
+
var availableFilters = [];
|
|
71
|
+
filters.forEach(function (filter) {
|
|
72
|
+
if (checkIsFilterGroup(filter)) {
|
|
73
|
+
var subFilters = filter.filters;
|
|
74
|
+
var availableSubFilters = [];
|
|
75
|
+
if (Array.isArray(subFilters) && subFilters.length > 0) {
|
|
76
|
+
availableSubFilters = subFilters.filter(function (subFilter) {
|
|
77
|
+
return checkIsAvailableFilter(subFilter, columns);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
availableFilters.push(_objectSpread(_objectSpread({}, filter), {}, {
|
|
81
|
+
filters: availableSubFilters
|
|
82
|
+
}));
|
|
83
|
+
} else if (checkIsAvailableFilter(filter, columns)) {
|
|
84
|
+
availableFilters.push(filter);
|
|
85
|
+
}
|
|
49
86
|
});
|
|
87
|
+
return availableFilters;
|
|
50
88
|
};
|
|
51
89
|
|
|
52
90
|
/**
|
|
@@ -308,9 +346,37 @@ var getFormattedFilter = function getFormattedFilter(filter, column) {
|
|
|
308
346
|
*/
|
|
309
347
|
var getFormattedFilters = function getFormattedFilters(filters) {
|
|
310
348
|
return filters.map(function (filter) {
|
|
349
|
+
if (checkIsFilterGroup(filter)) {
|
|
350
|
+
var subFilters = filter.filters;
|
|
351
|
+
var formattedSubFilters = [];
|
|
352
|
+
if (Array.isArray(subFilters) && subFilters.length > 0) {
|
|
353
|
+
formattedSubFilters = subFilters.map(function (subFilter) {
|
|
354
|
+
return getFormattedFilter(subFilter, subFilter.column);
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
return _objectSpread(_objectSpread({}, filter), {}, {
|
|
358
|
+
filters: formattedSubFilters
|
|
359
|
+
});
|
|
360
|
+
}
|
|
311
361
|
return getFormattedFilter(filter, filter.column);
|
|
312
362
|
});
|
|
313
363
|
};
|
|
364
|
+
var checkFilter = function checkFilter(filter$1, columns) {
|
|
365
|
+
var _ValidateFilter$valid2 = filter.ValidateFilter.validate(filter$1, columns),
|
|
366
|
+
error_message = _ValidateFilter$valid2.error_message;
|
|
367
|
+
if (error_message) {
|
|
368
|
+
if (error_message === index.FILTER_ERR_MSG.INCOMPLETE_FILTER) {
|
|
369
|
+
return null;
|
|
370
|
+
}
|
|
371
|
+
throw new Error(error_message);
|
|
372
|
+
}
|
|
373
|
+
var newFilter = _objectSpread({}, filter$1);
|
|
374
|
+
var column_key = filter$1.column_key;
|
|
375
|
+
newFilter.column = columns.find(function (column) {
|
|
376
|
+
return column.key === column_key;
|
|
377
|
+
});
|
|
378
|
+
return newFilter;
|
|
379
|
+
};
|
|
314
380
|
|
|
315
381
|
/**
|
|
316
382
|
* Get filters without error messages and formatted with filter column
|
|
@@ -323,27 +389,37 @@ var deleteInvalidFilter = function deleteInvalidFilter(filters, columns) {
|
|
|
323
389
|
return [];
|
|
324
390
|
}
|
|
325
391
|
var cleanFilters = [];
|
|
326
|
-
filters.forEach(function (filter
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
392
|
+
filters.forEach(function (filter) {
|
|
393
|
+
if (checkIsFilterGroup(filter)) {
|
|
394
|
+
var subFilters = filter.filters;
|
|
395
|
+
if (Array.isArray(subFilters) && subFilters.length > 0) {
|
|
396
|
+
var cleanSubFilters = [];
|
|
397
|
+
subFilters.forEach(function (subFilter) {
|
|
398
|
+
var newSubFilter = checkFilter(subFilter, columns);
|
|
399
|
+
if (newSubFilter) {
|
|
400
|
+
cleanSubFilters.push(newSubFilter);
|
|
401
|
+
}
|
|
402
|
+
});
|
|
403
|
+
|
|
404
|
+
// just keep the filter group which has valid sub-filters
|
|
405
|
+
if (cleanSubFilters.length > 0) {
|
|
406
|
+
cleanFilters.push(_objectSpread(_objectSpread({}, filter), {}, {
|
|
407
|
+
filters: cleanSubFilters
|
|
408
|
+
}));
|
|
409
|
+
}
|
|
333
410
|
}
|
|
334
411
|
} else {
|
|
335
|
-
var
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
column: filterColumn
|
|
340
|
-
});
|
|
341
|
-
cleanFilters.push(newFilter);
|
|
412
|
+
var newFilter = checkFilter(filter, columns);
|
|
413
|
+
if (newFilter) {
|
|
414
|
+
cleanFilters.push(newFilter);
|
|
415
|
+
}
|
|
342
416
|
}
|
|
343
417
|
});
|
|
344
418
|
return cleanFilters;
|
|
345
419
|
};
|
|
346
420
|
|
|
421
|
+
exports.checkIsAvailableFilter = checkIsAvailableFilter;
|
|
422
|
+
exports.checkIsFilterGroup = checkIsFilterGroup;
|
|
347
423
|
exports.deleteInvalidFilter = deleteInvalidFilter;
|
|
348
424
|
exports.getFormattedFilter = getFormattedFilter;
|
|
349
425
|
exports.getFormattedFilterOtherDate = getFormattedFilterOtherDate;
|
package/lib/filter/filter-row.js
CHANGED
|
@@ -151,6 +151,14 @@ 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
|
+
}
|
|
154
162
|
return getFilterResult(row, filter, {
|
|
155
163
|
formulaRow: formulaRow,
|
|
156
164
|
username: username,
|
|
@@ -161,6 +169,14 @@ var filterRow = function filterRow(row, filterConjunction, filters) {
|
|
|
161
169
|
}
|
|
162
170
|
if (filterConjunction === index.FILTER_CONJUNCTION_TYPE.OR) {
|
|
163
171
|
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
|
+
}
|
|
164
180
|
return getFilterResult(row, filter, {
|
|
165
181
|
formulaRow: formulaRow,
|
|
166
182
|
username: username,
|