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
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
1
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
3
2
|
import dayjs from 'dayjs';
|
|
4
3
|
import utc from 'dayjs/plugin/utc';
|
|
5
4
|
import { ValidateFilter } from '../../validate/filter.js';
|
|
6
|
-
import { otherDate
|
|
5
|
+
import { otherDate } from '../../filter/core.js';
|
|
7
6
|
import { getTableColumnByKey } from '../../table/column.js';
|
|
8
7
|
import { FILTER_ERR_MSG } from '../../constants/filter/index.js';
|
|
9
8
|
import { CellType } from '../../constants/cell-type.js';
|
|
@@ -13,8 +12,6 @@ import PatchUtils from '../../helper/patch-utils.js';
|
|
|
13
12
|
import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js';
|
|
14
13
|
import { FILTER_TERM_MODIFIER_TYPE } from '../../constants/filter/filter-modifier.js';
|
|
15
14
|
|
|
16
|
-
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; }
|
|
17
|
-
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(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; }
|
|
18
15
|
dayjs.extend(utc);
|
|
19
16
|
|
|
20
17
|
// TEXT | GEOLOCATION | EMAIL | AUTO_NUMBER
|
|
@@ -117,7 +114,7 @@ var dateSqlCondition = function dateSqlCondition(column, filterItem) {
|
|
|
117
114
|
filter_term = filterItem.filter_term,
|
|
118
115
|
filter_term_modifier = filterItem.filter_term_modifier;
|
|
119
116
|
var filterLabel = [FILTER_PREDICATE_TYPE.EMPTY, FILTER_PREDICATE_TYPE.NOT_EMPTY];
|
|
120
|
-
if (
|
|
117
|
+
if (filter_term.length === 0 && filterLabel.indexOf(filter_predicate) < 0 && filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE) {
|
|
121
118
|
return '';
|
|
122
119
|
}
|
|
123
120
|
if (filter_predicate === FILTER_PREDICATE_TYPE.IS) {
|
|
@@ -176,7 +173,7 @@ var ctimeSqlCondition = function ctimeSqlCondition(column, filterItem) {
|
|
|
176
173
|
filter_term = filterItem.filter_term,
|
|
177
174
|
filter_term_modifier = filterItem.filter_term_modifier;
|
|
178
175
|
var filterLabel = [FILTER_PREDICATE_TYPE.EMPTY, FILTER_PREDICATE_TYPE.NOT_EMPTY];
|
|
179
|
-
if (
|
|
176
|
+
if (filter_term.length === 0 && filterLabel.indexOf(filter_predicate) < 0 && filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE) {
|
|
180
177
|
return '';
|
|
181
178
|
}
|
|
182
179
|
|
|
@@ -695,103 +692,32 @@ var getSqlConditionByFilter = function getSqlConditionByFilter(column, filterIte
|
|
|
695
692
|
}
|
|
696
693
|
return '';
|
|
697
694
|
};
|
|
698
|
-
|
|
699
|
-
/**
|
|
700
|
-
* FilterGroup: {"filter_conjunction": "And", filters: [Filter, ...]}
|
|
701
|
-
* Filter: {"column_key": "xxx", filter_predicate: "xxx", ...}
|
|
702
|
-
* @param {array} filters
|
|
703
|
-
* @param {object} table
|
|
704
|
-
* @param {string} username
|
|
705
|
-
* @param {string} userId
|
|
706
|
-
* @param {object} userDepartmentIdsMap
|
|
707
|
-
* @returns string
|
|
708
|
-
*/
|
|
709
|
-
var getSqlConditionsByFilters = function getSqlConditionsByFilters(filters, table, username, userId, userDepartmentIdsMap) {
|
|
710
|
-
var columns = table.columns;
|
|
695
|
+
var filter2SqlCondition = function filter2SqlCondition(table, view, username, userId, userDepartmentIdsMap) {
|
|
711
696
|
var patchedUsername = PatchUtils.getUsername(username);
|
|
712
697
|
var patchedUserId = PatchUtils.getUserId(userId);
|
|
713
698
|
var patchedUserDepartmentIdsMap = PatchUtils.getUserDepartmentIdsMap(userDepartmentIdsMap);
|
|
714
|
-
var sqlConditions = [];
|
|
715
|
-
filters.forEach(function (filter) {
|
|
716
|
-
if (checkIsFilterGroup(filter)) {
|
|
717
|
-
var subFilters = filter.filters,
|
|
718
|
-
sub_filter_conjunction = filter.filter_conjunction;
|
|
719
|
-
var subSqlConditions = subFilters.map(function (subFilter) {
|
|
720
|
-
var filterColumn = getTableColumnByKey(table, subFilter.column_key);
|
|
721
|
-
return getSqlConditionByFilter(filterColumn, subFilter, patchedUsername, patchedUserId, patchedUserDepartmentIdsMap);
|
|
722
|
-
});
|
|
723
|
-
var subSqlConditionsLength = subSqlConditions.length;
|
|
724
|
-
if (subSqlConditionsLength > 0) {
|
|
725
|
-
var subSqlConditionsString = subSqlConditions.length === 1 ? subSqlConditions + '' : "(".concat(subSqlConditions.join(' ' + sub_filter_conjunction + ' '), ")");
|
|
726
|
-
sqlConditions.push(subSqlConditionsString);
|
|
727
|
-
}
|
|
728
|
-
} else {
|
|
729
|
-
var column_key = filter.column_key;
|
|
730
|
-
var filterColumn = columns.find(function (column) {
|
|
731
|
-
return column.key === column_key;
|
|
732
|
-
});
|
|
733
|
-
sqlConditions.push(getSqlConditionByFilter(filterColumn, filter, patchedUsername, patchedUserId, patchedUserDepartmentIdsMap));
|
|
734
|
-
}
|
|
735
|
-
});
|
|
736
|
-
return sqlConditions;
|
|
737
|
-
};
|
|
738
|
-
var checkFilter = function checkFilter(filter, columns) {
|
|
739
|
-
var _ValidateFilter$valid = ValidateFilter.validate(filter, columns),
|
|
740
|
-
error_message = _ValidateFilter$valid.error_message;
|
|
741
|
-
if (error_message) {
|
|
742
|
-
if (error_message === FILTER_ERR_MSG.INCOMPLETE_FILTER) {
|
|
743
|
-
return false;
|
|
744
|
-
}
|
|
745
|
-
throw new Error(error_message);
|
|
746
|
-
}
|
|
747
|
-
return true;
|
|
748
|
-
};
|
|
749
|
-
var validateFilters = function validateFilters(filters, columns) {
|
|
750
|
-
var validFilters = [];
|
|
751
|
-
filters.forEach(function (filter) {
|
|
752
|
-
if (checkIsFilterGroup(filter)) {
|
|
753
|
-
var subFilters = filter.filters;
|
|
754
|
-
if (!Array.isArray(subFilters) || subFilters.length === 0) {
|
|
755
|
-
return;
|
|
756
|
-
}
|
|
757
|
-
var validSubFilters = subFilters.filter(function (subFilter) {
|
|
758
|
-
return checkFilter(subFilter, columns);
|
|
759
|
-
});
|
|
760
|
-
if (validSubFilters.length === 0) {
|
|
761
|
-
return;
|
|
762
|
-
}
|
|
763
|
-
validFilters.push(_objectSpread(_objectSpread({}, filter), {}, {
|
|
764
|
-
filters: validSubFilters
|
|
765
|
-
}));
|
|
766
|
-
} else {
|
|
767
|
-
if (!checkFilter(filter, columns)) {
|
|
768
|
-
return;
|
|
769
|
-
}
|
|
770
|
-
validFilters.push(filter);
|
|
771
|
-
}
|
|
772
|
-
});
|
|
773
|
-
return validFilters;
|
|
774
|
-
};
|
|
775
|
-
var filter2SqlCondition = function filter2SqlCondition(table, view, username, userId, userDepartmentIdsMap) {
|
|
776
699
|
var columns = table.columns;
|
|
777
700
|
var filter_conjunction = view.filter_conjunction,
|
|
778
701
|
filters = view.filters;
|
|
779
702
|
if (typeof filter_conjunction !== 'string' || !Array.isArray(filters) || filters.length === 0) {
|
|
780
703
|
return '';
|
|
781
704
|
}
|
|
782
|
-
var validFilters = [];
|
|
783
|
-
try {
|
|
784
|
-
validFilters = validateFilters(filters, columns);
|
|
785
|
-
} catch (err) {
|
|
786
|
-
throw new Error(err.message);
|
|
787
|
-
}
|
|
788
|
-
if (validFilters.length === 0) {
|
|
789
|
-
return '';
|
|
790
|
-
}
|
|
791
705
|
|
|
792
706
|
// 1. add WHERE condition
|
|
793
707
|
var filterHeader = 'WHERE ';
|
|
794
|
-
var stringList =
|
|
708
|
+
var stringList = filters.map(function (filterItem) {
|
|
709
|
+
var _ValidateFilter$valid = ValidateFilter.validate(filterItem, columns),
|
|
710
|
+
error_message = _ValidateFilter$valid.error_message;
|
|
711
|
+
if (error_message) {
|
|
712
|
+
if (error_message === FILTER_ERR_MSG.INCOMPLETE_FILTER) {
|
|
713
|
+
return '';
|
|
714
|
+
}
|
|
715
|
+
throw new Error(error_message);
|
|
716
|
+
}
|
|
717
|
+
var column_key = filterItem.column_key;
|
|
718
|
+
var column = getTableColumnByKey(table, column_key);
|
|
719
|
+
return getSqlConditionByFilter(column, filterItem, patchedUsername, patchedUserId, patchedUserDepartmentIdsMap);
|
|
720
|
+
});
|
|
795
721
|
|
|
796
722
|
// 2. filtered '' sql clause
|
|
797
723
|
stringList = stringList.filter(function (item) {
|
|
@@ -803,14 +729,9 @@ var filter2SqlCondition = function filter2SqlCondition(table, view, username, us
|
|
|
803
729
|
// const filterContent = stringList.join(' ' + filter_conjunction + ' ');
|
|
804
730
|
var filterContent = stringList[0];
|
|
805
731
|
for (var i = 1; i < stringList.length; i++) {
|
|
806
|
-
|
|
807
|
-
if (currStr.startsWith('(') && currStr.endsWith(')')) {
|
|
808
|
-
filterContent += " ".concat(filter_conjunction, " ").concat(stringList[i]);
|
|
809
|
-
} else {
|
|
810
|
-
filterContent += " ".concat(filter_conjunction, " (").concat(stringList[i], ")");
|
|
811
|
-
}
|
|
732
|
+
filterContent += " ".concat(filter_conjunction, " (").concat(stringList[i], ")");
|
|
812
733
|
}
|
|
813
734
|
return filterHeader + filterContent;
|
|
814
735
|
};
|
|
815
736
|
|
|
816
|
-
export {
|
|
737
|
+
export { checkboxSqlCondition, collaboratorSqlCondition, creatorSqlCondition, ctimeSqlCondition, dateSqlCondition, departmentSingleSelectSqlCondition, fileSqlCondition, filter2SqlCondition, formulaSqlCondition, getSqlConditionByFilter, linkSqlCondition, longtextSqlCondition, multipleSelectSqlCondition, numberSqlCondition, singleSelectSqlCondition, textSqlCondition };
|
package/es/color/column-color.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
2
|
import deepCopy from 'deep-copy';
|
|
3
3
|
import { deleteInvalidFilter, getFormattedFilters } from '../filter/core.js';
|
|
4
|
-
import { filterRows, filterRow
|
|
4
|
+
import { filterRows, filterRow } from '../filter/filter-row.js';
|
|
5
5
|
import { ValidateFilter } from '../validate/filter.js';
|
|
6
6
|
import { isNumberColumn } from '../column/number.js';
|
|
7
7
|
import { getRowsByIds } from '../table/row.js';
|
|
@@ -327,7 +327,7 @@ var getColumnColors = function getColumnColors(rows, view, table, value) {
|
|
|
327
327
|
var filter_conjunction = colorRule.filter_conjunction,
|
|
328
328
|
filters = colorRule.filters,
|
|
329
329
|
color = colorRule.color;
|
|
330
|
-
if (
|
|
330
|
+
if (filterRow(row, filter_conjunction, filters, {
|
|
331
331
|
formulaRow: formulaRow,
|
|
332
332
|
username: username,
|
|
333
333
|
userId: userId,
|
package/es/color/row-color.js
CHANGED
|
@@ -6,7 +6,7 @@ import { getColumnOptions } from '../column/option.js';
|
|
|
6
6
|
import { getGeolocationDisplayString } from '../cell-value-get/geolocation.js';
|
|
7
7
|
import { ValidateFilter } from '../validate/filter.js';
|
|
8
8
|
import { deleteInvalidFilter, getFormattedFilters } from '../filter/core.js';
|
|
9
|
-
import { filterRow
|
|
9
|
+
import { filterRow } from '../filter/filter-row.js';
|
|
10
10
|
import { ROW_COLOR_TYPE, ROW_COLOR_FOR_DUPLICATE_VALUES, SUPPORT_CHECKING_DUPLICATE_COLUMNS_TYPES } from '../constants/row-color.js';
|
|
11
11
|
import { CellType } from '../constants/cell-type.js';
|
|
12
12
|
|
|
@@ -177,7 +177,7 @@ var getRowsColorByRules = function getRowsColorByRules(rows, view, table) {
|
|
|
177
177
|
var color = colorRule.color,
|
|
178
178
|
filter_conjunction = colorRule.filter_conjunction,
|
|
179
179
|
filters = colorRule.filters;
|
|
180
|
-
if (
|
|
180
|
+
if (filterRow(row, filter_conjunction, filters, {
|
|
181
181
|
formulaRow: formulaRow,
|
|
182
182
|
username: username,
|
|
183
183
|
userId: userId,
|
package/es/common.js
CHANGED
|
@@ -42,8 +42,5 @@ var isEmptyObject = function isEmptyObject(obj) {
|
|
|
42
42
|
}
|
|
43
43
|
return true;
|
|
44
44
|
};
|
|
45
|
-
var hasOwnProperty = function hasOwnProperty(obj, key) {
|
|
46
|
-
return Object.prototype.hasOwnProperty.call(obj, key);
|
|
47
|
-
};
|
|
48
45
|
|
|
49
|
-
export { generatorBase64Code,
|
|
46
|
+
export { generatorBase64Code, isEmpty, isEmptyObject };
|
package/es/filter/core.js
CHANGED
|
@@ -3,52 +3,12 @@ import { ValidateFilter } from '../validate/filter.js';
|
|
|
3
3
|
import { DateUtils } from '../date.js';
|
|
4
4
|
import { FILTER_ERR_MSG } from '../constants/filter/index.js';
|
|
5
5
|
import { CellType } from '../constants/cell-type.js';
|
|
6
|
-
import { FORMULA_RESULT_TYPE
|
|
7
|
-
import { hasOwnProperty } from '../common.js';
|
|
6
|
+
import { FORMULA_RESULT_TYPE } from '../constants/formula.js';
|
|
8
7
|
import { FILTER_TERM_MODIFIER_TYPE } from '../constants/filter/filter-modifier.js';
|
|
9
8
|
|
|
10
9
|
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; }
|
|
11
10
|
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(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; }
|
|
12
11
|
var EXACT_DATE_TERM_MODIFIER_TYPES = [FILTER_TERM_MODIFIER_TYPE.TODAY, FILTER_TERM_MODIFIER_TYPE.TOMORROW, FILTER_TERM_MODIFIER_TYPE.YESTERDAY, FILTER_TERM_MODIFIER_TYPE.ONE_WEEK_AGO, FILTER_TERM_MODIFIER_TYPE.ONE_WEEK_FROM_NOW, FILTER_TERM_MODIFIER_TYPE.ONE_MONTH_AGO, FILTER_TERM_MODIFIER_TYPE.ONE_MONTH_FROM_NOW, FILTER_TERM_MODIFIER_TYPE.NUMBER_OF_DAYS_AGO, FILTER_TERM_MODIFIER_TYPE.NUMBER_OF_DAYS_FROM_NOW, FILTER_TERM_MODIFIER_TYPE.EXACT_DATE];
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Check if is filter group
|
|
16
|
-
* @param {object} filter
|
|
17
|
-
* @returns bool
|
|
18
|
-
*/
|
|
19
|
-
var checkIsFilterGroup = function checkIsFilterGroup(filter) {
|
|
20
|
-
return hasOwnProperty(filter, 'filters');
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Check if is formula/link filter
|
|
25
|
-
* @param {object} filter
|
|
26
|
-
* @returns bool
|
|
27
|
-
*/
|
|
28
|
-
var checkIsFormulaFilter = function checkIsFormulaFilter(filter) {
|
|
29
|
-
var column = filter.column;
|
|
30
|
-
return FORMULA_COLUMN_TYPES_MAP[column.type] || column.type === CellType.LINK;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Check has contains formula filter
|
|
35
|
-
* @param {array} filters e.g. [{ column_key, column, ...}]
|
|
36
|
-
* @returns bool
|
|
37
|
-
*/
|
|
38
|
-
var checkHasFormulaFilter = function checkHasFormulaFilter(filters) {
|
|
39
|
-
return filters.some(function (filter) {
|
|
40
|
-
if (checkIsFilterGroup(filter)) {
|
|
41
|
-
var subFilters = filter.filters;
|
|
42
|
-
if (!Array.isArray(subFilters) || subFilters.length === 0) {
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
return subFilters.some(function (subFilter) {
|
|
46
|
-
return checkIsFormulaFilter(subFilter);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
return checkIsFormulaFilter(filter);
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
12
|
var isCurrentUserDepartment = function isCurrentUserDepartment(departmentId, userDepartmentIdsMap) {
|
|
53
13
|
var _ref = userDepartmentIdsMap || {},
|
|
54
14
|
current_user_department_ids = _ref.current_user_department_ids;
|
|
@@ -64,24 +24,9 @@ var isSpecificDepartment = function isSpecificDepartment(departmentId, filterTer
|
|
|
64
24
|
return filterTerm.includes(departmentId);
|
|
65
25
|
};
|
|
66
26
|
|
|
67
|
-
/**
|
|
68
|
-
* Check if the filter is available to display
|
|
69
|
-
* @param {object} filter
|
|
70
|
-
* @param {array} columns
|
|
71
|
-
* @returns bool
|
|
72
|
-
*/
|
|
73
|
-
var checkIsAvailableFilter = function checkIsAvailableFilter(filter, columns) {
|
|
74
|
-
var _ValidateFilter$valid = ValidateFilter.validate(filter, columns),
|
|
75
|
-
error_message = _ValidateFilter$valid.error_message;
|
|
76
|
-
if (error_message && error_message === FILTER_ERR_MSG.INCOMPLETE_FILTER) {
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
return true;
|
|
80
|
-
};
|
|
81
|
-
|
|
82
27
|
/**
|
|
83
28
|
* Get filters which excludes incomplete
|
|
84
|
-
* @param {array} filters e.g. [{ column_key, filter_predicate, ... }
|
|
29
|
+
* @param {array} filters e.g. [{ column_key, filter_predicate, ... }]
|
|
85
30
|
* @param {array} columns
|
|
86
31
|
* @returns valid filters, array
|
|
87
32
|
*/
|
|
@@ -89,24 +34,11 @@ var getValidFilters = function getValidFilters(filters, columns) {
|
|
|
89
34
|
if (!Array.isArray(filters) || !Array.isArray(columns)) {
|
|
90
35
|
return [];
|
|
91
36
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
var availableSubFilters = [];
|
|
97
|
-
if (Array.isArray(subFilters) && subFilters.length > 0) {
|
|
98
|
-
availableSubFilters = subFilters.filter(function (subFilter) {
|
|
99
|
-
return checkIsAvailableFilter(subFilter, columns);
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
availableFilters.push(_objectSpread(_objectSpread({}, filter), {}, {
|
|
103
|
-
filters: availableSubFilters
|
|
104
|
-
}));
|
|
105
|
-
} else if (checkIsAvailableFilter(filter, columns)) {
|
|
106
|
-
availableFilters.push(filter);
|
|
107
|
-
}
|
|
37
|
+
return filters.filter(function (filter) {
|
|
38
|
+
var _ValidateFilter$valid = ValidateFilter.validate(filter, columns),
|
|
39
|
+
error_message = _ValidateFilter$valid.error_message;
|
|
40
|
+
return !error_message || error_message !== FILTER_ERR_MSG.INCOMPLETE_FILTER;
|
|
108
41
|
});
|
|
109
|
-
return availableFilters;
|
|
110
42
|
};
|
|
111
43
|
|
|
112
44
|
/**
|
|
@@ -368,37 +300,9 @@ var _getFormattedFilter = function getFormattedFilter(filter, column) {
|
|
|
368
300
|
*/
|
|
369
301
|
var getFormattedFilters = function getFormattedFilters(filters) {
|
|
370
302
|
return filters.map(function (filter) {
|
|
371
|
-
if (checkIsFilterGroup(filter)) {
|
|
372
|
-
var subFilters = filter.filters;
|
|
373
|
-
var formattedSubFilters = [];
|
|
374
|
-
if (Array.isArray(subFilters) && subFilters.length > 0) {
|
|
375
|
-
formattedSubFilters = subFilters.map(function (subFilter) {
|
|
376
|
-
return _getFormattedFilter(subFilter, subFilter.column);
|
|
377
|
-
});
|
|
378
|
-
}
|
|
379
|
-
return _objectSpread(_objectSpread({}, filter), {}, {
|
|
380
|
-
filters: formattedSubFilters
|
|
381
|
-
});
|
|
382
|
-
}
|
|
383
303
|
return _getFormattedFilter(filter, filter.column);
|
|
384
304
|
});
|
|
385
305
|
};
|
|
386
|
-
var checkFilter = function checkFilter(filter, columns) {
|
|
387
|
-
var _ValidateFilter$valid2 = ValidateFilter.validate(filter, columns),
|
|
388
|
-
error_message = _ValidateFilter$valid2.error_message;
|
|
389
|
-
if (error_message) {
|
|
390
|
-
if (error_message === FILTER_ERR_MSG.INCOMPLETE_FILTER) {
|
|
391
|
-
return null;
|
|
392
|
-
}
|
|
393
|
-
throw new Error(error_message);
|
|
394
|
-
}
|
|
395
|
-
var newFilter = _objectSpread({}, filter);
|
|
396
|
-
var column_key = filter.column_key;
|
|
397
|
-
newFilter.column = columns.find(function (column) {
|
|
398
|
-
return column.key === column_key;
|
|
399
|
-
});
|
|
400
|
-
return newFilter;
|
|
401
|
-
};
|
|
402
306
|
|
|
403
307
|
/**
|
|
404
308
|
* Get filters without error messages and formatted with filter column
|
|
@@ -412,99 +316,24 @@ var deleteInvalidFilter = function deleteInvalidFilter(filters, columns) {
|
|
|
412
316
|
}
|
|
413
317
|
var cleanFilters = [];
|
|
414
318
|
filters.forEach(function (filter) {
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
if (newSubFilter) {
|
|
422
|
-
cleanSubFilters.push(newSubFilter);
|
|
423
|
-
}
|
|
424
|
-
});
|
|
425
|
-
|
|
426
|
-
// just keep the filter group which has valid sub-filters
|
|
427
|
-
if (cleanSubFilters.length > 0) {
|
|
428
|
-
cleanFilters.push(_objectSpread(_objectSpread({}, filter), {}, {
|
|
429
|
-
filters: cleanSubFilters
|
|
430
|
-
}));
|
|
431
|
-
}
|
|
319
|
+
var column_key = filter.column_key;
|
|
320
|
+
var _ValidateFilter$valid2 = ValidateFilter.validate(filter, columns),
|
|
321
|
+
error_message = _ValidateFilter$valid2.error_message;
|
|
322
|
+
if (error_message) {
|
|
323
|
+
if (error_message !== FILTER_ERR_MSG.INCOMPLETE_FILTER) {
|
|
324
|
+
throw new Error(error_message);
|
|
432
325
|
}
|
|
433
326
|
} else {
|
|
434
|
-
var
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
}
|
|
327
|
+
var filterColumn = columns.find(function (column) {
|
|
328
|
+
return column.key === column_key;
|
|
329
|
+
});
|
|
330
|
+
var newFilter = _objectSpread(_objectSpread({}, filter), {}, {
|
|
331
|
+
column: filterColumn
|
|
332
|
+
});
|
|
333
|
+
cleanFilters.push(newFilter);
|
|
438
334
|
}
|
|
439
335
|
});
|
|
440
336
|
return cleanFilters;
|
|
441
337
|
};
|
|
442
338
|
|
|
443
|
-
|
|
444
|
-
* Categorize filters
|
|
445
|
-
* @param {array} filters
|
|
446
|
-
* @returns {object} { generalFilters, formulaFilters, filterGroups }
|
|
447
|
-
*/
|
|
448
|
-
var getClassifiedFilters = function getClassifiedFilters(filters) {
|
|
449
|
-
var generalFilters = [];
|
|
450
|
-
var formulaFilters = [];
|
|
451
|
-
var filterGroups = [];
|
|
452
|
-
filters.forEach(function (filter) {
|
|
453
|
-
if (checkIsFilterGroup(filter)) {
|
|
454
|
-
filterGroups.push(filter);
|
|
455
|
-
} else if (checkIsFormulaFilter(filter)) {
|
|
456
|
-
formulaFilters.push(filter);
|
|
457
|
-
} else {
|
|
458
|
-
generalFilters.push(filter);
|
|
459
|
-
}
|
|
460
|
-
});
|
|
461
|
-
return {
|
|
462
|
-
generalFilters: generalFilters,
|
|
463
|
-
formulaFilters: formulaFilters,
|
|
464
|
-
filterGroups: filterGroups
|
|
465
|
-
};
|
|
466
|
-
};
|
|
467
|
-
|
|
468
|
-
/**
|
|
469
|
-
* Check if is related filter of given columns
|
|
470
|
-
* @param {object} filter
|
|
471
|
-
* @param {object} updatedColumnKeyMap e.g. { [column.key]: true }
|
|
472
|
-
* @returns bool
|
|
473
|
-
*/
|
|
474
|
-
var checkIsRelatedFilter = function checkIsRelatedFilter(filter, columnKeyMap) {
|
|
475
|
-
var column_key = filter.column_key;
|
|
476
|
-
if (!column_key) {
|
|
477
|
-
return false;
|
|
478
|
-
}
|
|
479
|
-
return !!columnKeyMap[column_key];
|
|
480
|
-
};
|
|
481
|
-
|
|
482
|
-
/**
|
|
483
|
-
* Check if is related filter group of given columns
|
|
484
|
-
* @param {object} filterGroup
|
|
485
|
-
* @param {object} columnKeyMap
|
|
486
|
-
* @returns bool
|
|
487
|
-
*/
|
|
488
|
-
var checkIsRelatedFilterGroup = function checkIsRelatedFilterGroup(filterGroup, columnKeyMap) {
|
|
489
|
-
var filters = filterGroup.filters;
|
|
490
|
-
if (!Array.isArray(filters) || filters.length === 0) {
|
|
491
|
-
return false;
|
|
492
|
-
}
|
|
493
|
-
return filters.some(function (filter) {
|
|
494
|
-
return checkIsRelatedFilter(filter, columnKeyMap);
|
|
495
|
-
});
|
|
496
|
-
};
|
|
497
|
-
|
|
498
|
-
/**
|
|
499
|
-
* Check if has related filters of given columns
|
|
500
|
-
* @param {array} filters
|
|
501
|
-
* @param {object} updatedColumnKeyMap e.g. { [column.key]: true }
|
|
502
|
-
* @returns bool
|
|
503
|
-
*/
|
|
504
|
-
var hasRelatedFilters = function hasRelatedFilters(filters, columnKeyMap) {
|
|
505
|
-
return filters.some(function (filter) {
|
|
506
|
-
return checkIsFilterGroup(filter) ? checkIsRelatedFilterGroup(filter, columnKeyMap) : checkIsRelatedFilter(filter, columnKeyMap);
|
|
507
|
-
});
|
|
508
|
-
};
|
|
509
|
-
|
|
510
|
-
export { checkHasFormulaFilter, checkIsAvailableFilter, checkIsFilterGroup, checkIsFormulaFilter, checkIsRelatedFilter, checkIsRelatedFilterGroup, deleteInvalidFilter, getClassifiedFilters, _getFormattedFilter as getFormattedFilter, getFormattedFilterOtherDate, getFormattedFilters, getValidFilters, getValidFiltersWithoutError, hasRelatedFilters, isCurrentUserDepartment, isCurrentUserDepartmentAndSub, isSpecificDepartment, otherDate };
|
|
339
|
+
export { deleteInvalidFilter, _getFormattedFilter as getFormattedFilter, getFormattedFilterOtherDate, getFormattedFilters, getValidFilters, getValidFiltersWithoutError, isCurrentUserDepartment, isCurrentUserDepartmentAndSub, isSpecificDepartment, otherDate };
|
package/es/filter/filter-row.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getFormattedFilters, deleteInvalidFilter } from './core.js';
|
|
2
2
|
import { checkboxFilter } from './filter-column/checkbox.js';
|
|
3
3
|
import { collaboratorFilter } from './filter-column/collaborator.js';
|
|
4
4
|
import { creatorFilter } from './filter-column/creator.js';
|
|
@@ -137,7 +137,7 @@ var getFilterResult = function getFilterResult(row, filter, _ref) {
|
|
|
137
137
|
* @param {object} userDepartmentIdsMap e.g. { current_user_department_ids: [8, 10], current_user_department_and_sub_ids: [8, 10, 12, 34] }
|
|
138
138
|
* @returns filter result, bool
|
|
139
139
|
*/
|
|
140
|
-
var
|
|
140
|
+
var filterRow = function filterRow(row, filterConjunction, filters) {
|
|
141
141
|
var _ref2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
|
|
142
142
|
formulaRow = _ref2.formulaRow,
|
|
143
143
|
_ref2$username = _ref2.username,
|
|
@@ -147,14 +147,6 @@ var _filterRow = function filterRow(row, filterConjunction, filters) {
|
|
|
147
147
|
userDepartmentIdsMap = _ref2$userDepartmentI === void 0 ? {} : _ref2$userDepartmentI;
|
|
148
148
|
if (filterConjunction === FILTER_CONJUNCTION_TYPE.AND) {
|
|
149
149
|
return filters.every(function (filter) {
|
|
150
|
-
if (checkIsFilterGroup(filter)) {
|
|
151
|
-
return _filterRow(row, filter.filter_conjunction, filter.filters, {
|
|
152
|
-
formulaRow: formulaRow,
|
|
153
|
-
username: username,
|
|
154
|
-
userId: userId,
|
|
155
|
-
userDepartmentIdsMap: userDepartmentIdsMap
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
150
|
return getFilterResult(row, filter, {
|
|
159
151
|
formulaRow: formulaRow,
|
|
160
152
|
username: username,
|
|
@@ -165,14 +157,6 @@ var _filterRow = function filterRow(row, filterConjunction, filters) {
|
|
|
165
157
|
}
|
|
166
158
|
if (filterConjunction === FILTER_CONJUNCTION_TYPE.OR) {
|
|
167
159
|
return filters.some(function (filter) {
|
|
168
|
-
if (checkIsFilterGroup(filter)) {
|
|
169
|
-
return _filterRow(row, filter.filter_conjunction, filter.filters, {
|
|
170
|
-
formulaRow: formulaRow,
|
|
171
|
-
username: username,
|
|
172
|
-
userId: userId,
|
|
173
|
-
userDepartmentIdsMap: userDepartmentIdsMap
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
160
|
return getFilterResult(row, filter, {
|
|
177
161
|
formulaRow: formulaRow,
|
|
178
162
|
username: username,
|
|
@@ -205,7 +189,7 @@ var filterRows = function filterRows(filterConjunction, filters, rows, _ref3) {
|
|
|
205
189
|
rows.forEach(function (row) {
|
|
206
190
|
var rowId = row._id;
|
|
207
191
|
var formulaRow = formulaRows ? formulaRows[rowId] : null;
|
|
208
|
-
if (
|
|
192
|
+
if (filterRow(row, filterConjunction, formattedFilters, {
|
|
209
193
|
formulaRow: formulaRow,
|
|
210
194
|
username: username,
|
|
211
195
|
userId: userId,
|
|
@@ -269,4 +253,4 @@ var getFilteredRowsWithoutFormulaCalculation = function getFilteredRowsWithoutFo
|
|
|
269
253
|
};
|
|
270
254
|
};
|
|
271
255
|
|
|
272
|
-
export {
|
|
256
|
+
export { filterRow, filterRows, getFilteredRowsWithoutFormulaCalculation };
|
package/es/index.js
CHANGED
|
@@ -57,7 +57,7 @@ export { searchCollaborators } from './search.js';
|
|
|
57
57
|
export { ValidateFilter } from './validate/filter.js';
|
|
58
58
|
export { isValidEmail } from './validate/email.js';
|
|
59
59
|
export { isValidPosition } from './validate/geolocation.js';
|
|
60
|
-
export {
|
|
60
|
+
export { deleteInvalidFilter, getFormattedFilter, getFormattedFilterOtherDate, getFormattedFilters, getValidFilters, getValidFiltersWithoutError, otherDate } from './filter/core.js';
|
|
61
61
|
export { checkboxFilter } from './filter/filter-column/checkbox.js';
|
|
62
62
|
export { collaboratorFilter } from './filter/filter-column/collaborator.js';
|
|
63
63
|
export { creatorFilter } from './filter/filter-column/creator.js';
|
package/es/row/convert.js
CHANGED
|
@@ -106,7 +106,7 @@ var convertRow = function convertRow(row, value, table, view, formulaResults, co
|
|
|
106
106
|
}
|
|
107
107
|
case CellType.DATE:
|
|
108
108
|
{
|
|
109
|
-
var timeTextWithoutTimezone = cellValue.replace(/([+-]\d{2}:?\d{2})|Z$/g, '');
|
|
109
|
+
var timeTextWithoutTimezone = cellValue ? cellValue.replace(/([+-]\d{2}:?\d{2})|Z$/g, '') : '';
|
|
110
110
|
var format = column.data && column.data.format;
|
|
111
111
|
result[columnName] = formatTextToDate(timeTextWithoutTimezone, format);
|
|
112
112
|
break;
|