dtable-utils 0.0.2 → 0.0.3-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.
Files changed (150) hide show
  1. package/README.md +30 -2
  2. package/dist/index.js +1 -1
  3. package/es/cell-value-get/cell-value.js +227 -19
  4. package/es/cell-value-get/collaborator.js +9 -3
  5. package/es/cell-value-get/digital-sign.js +1 -1
  6. package/es/cell-value-get/geolocation.js +29 -5
  7. package/es/cell-value-get/long-text.js +1 -1
  8. package/es/cell-value-get/number.js +42 -18
  9. package/es/cell-value-get/option.js +17 -7
  10. package/es/cell-value-get/rate.js +6 -0
  11. package/es/cell-value-set/date.js +20 -0
  12. package/es/cell-value-set/number.js +53 -1
  13. package/es/color/gradient-color.js +100 -0
  14. package/es/column/color.js +415 -0
  15. package/es/column/{common.js → core.js} +3 -15
  16. package/es/column/date.js +2 -3
  17. package/es/column/number.js +3 -5
  18. package/es/column/option.js +115 -0
  19. package/es/common.js +10 -1
  20. package/es/constants/color.js +16 -0
  21. package/es/constants/column-permission.js +7 -0
  22. package/es/constants/column.js +127 -2
  23. package/es/constants/filter/index.js +5 -1
  24. package/es/constants/grid-header.js +6 -0
  25. package/es/constants/group.js +23 -0
  26. package/es/constants/limit.js +3 -0
  27. package/es/constants/reg.js +4 -0
  28. package/es/constants/row-color.js +11 -0
  29. package/es/constants/sort.js +11 -0
  30. package/es/date.js +1 -1
  31. package/es/filter/core.js +287 -0
  32. package/es/filter/filter-column/array.js +82 -0
  33. package/es/filter/filter-column/checkbox.js +8 -0
  34. package/es/filter/filter-column/collaborator.js +67 -0
  35. package/es/filter/filter-column/creator.js +50 -0
  36. package/es/filter/filter-column/date.js +59 -0
  37. package/es/filter/filter-column/digital-sign.js +26 -0
  38. package/es/filter/filter-column/file.js +24 -0
  39. package/es/filter/filter-column/formula.js +49 -0
  40. package/es/filter/filter-column/geolocation.js +53 -0
  41. package/es/filter/filter-column/link.js +12 -0
  42. package/es/filter/filter-column/long-text.js +25 -0
  43. package/es/filter/filter-column/multiple-select.js +60 -0
  44. package/es/filter/filter-column/number.js +93 -0
  45. package/es/filter/filter-column/single-select.js +41 -0
  46. package/es/filter/filter-column/text.js +55 -0
  47. package/es/filter/filter-row.js +198 -0
  48. package/es/group/core.js +107 -0
  49. package/es/group/group-row.js +366 -0
  50. package/es/index.js +62 -10
  51. package/es/link/core.js +78 -0
  52. package/es/number.js +13 -0
  53. package/es/row/color.js +278 -0
  54. package/es/row/core.js +161 -0
  55. package/es/sort/core.js +32 -0
  56. package/es/sort/sort-column/array.js +63 -0
  57. package/es/sort/sort-column/checkbox.js +15 -0
  58. package/es/sort/sort-column/collaborator.js +9 -0
  59. package/es/sort/sort-column/date.js +25 -0
  60. package/es/sort/sort-column/formula.js +40 -0
  61. package/es/sort/sort-column/link.js +23 -0
  62. package/es/sort/sort-column/multiple-select.js +45 -0
  63. package/es/sort/sort-column/number.js +18 -0
  64. package/es/sort/sort-column/single-select.js +22 -0
  65. package/es/sort/sort-column/text.js +47 -0
  66. package/es/sort/sort-row.js +126 -0
  67. package/es/table/column.js +27 -0
  68. package/es/table/core.js +14 -0
  69. package/es/table/index.js +14 -0
  70. package/es/table/row.js +25 -0
  71. package/es/validate/filter.js +1 -1
  72. package/es/validate/geolocation.js +5 -0
  73. package/es/view/core.js +135 -0
  74. package/es/view/formula.js +143 -0
  75. package/es/view/group.js +32 -0
  76. package/es/view/summaries.js +179 -0
  77. package/lib/cell-value-get/cell-value.js +231 -18
  78. package/lib/cell-value-get/collaborator.js +9 -2
  79. package/lib/cell-value-get/digital-sign.js +1 -1
  80. package/lib/cell-value-get/geolocation.js +30 -5
  81. package/lib/cell-value-get/long-text.js +1 -1
  82. package/lib/cell-value-get/number.js +42 -17
  83. package/lib/cell-value-get/option.js +18 -6
  84. package/lib/cell-value-get/rate.js +10 -0
  85. package/lib/cell-value-set/date.js +24 -0
  86. package/lib/cell-value-set/number.js +53 -0
  87. package/lib/color/gradient-color.js +110 -0
  88. package/lib/column/color.js +424 -0
  89. package/lib/column/{common.js → core.js} +3 -16
  90. package/lib/column/date.js +2 -3
  91. package/lib/column/number.js +3 -5
  92. package/lib/column/option.js +123 -0
  93. package/lib/common.js +14 -0
  94. package/lib/constants/color.js +20 -0
  95. package/lib/constants/column-permission.js +11 -0
  96. package/lib/constants/column.js +134 -1
  97. package/lib/constants/filter/index.js +5 -0
  98. package/lib/constants/grid-header.js +10 -0
  99. package/lib/constants/group.js +36 -0
  100. package/lib/constants/limit.js +7 -0
  101. package/lib/constants/reg.js +9 -0
  102. package/lib/constants/row-color.js +17 -0
  103. package/lib/constants/sort.js +18 -0
  104. package/lib/filter/core.js +301 -0
  105. package/lib/filter/filter-column/array.js +86 -0
  106. package/lib/filter/filter-column/checkbox.js +12 -0
  107. package/lib/filter/filter-column/collaborator.js +75 -0
  108. package/lib/filter/filter-column/creator.js +54 -0
  109. package/lib/filter/filter-column/date.js +63 -0
  110. package/lib/filter/filter-column/digital-sign.js +30 -0
  111. package/lib/filter/filter-column/file.js +28 -0
  112. package/lib/filter/filter-column/formula.js +53 -0
  113. package/lib/filter/filter-column/geolocation.js +57 -0
  114. package/lib/filter/filter-column/link.js +16 -0
  115. package/lib/filter/filter-column/long-text.js +29 -0
  116. package/lib/filter/filter-column/multiple-select.js +68 -0
  117. package/lib/filter/filter-column/number.js +97 -0
  118. package/lib/filter/filter-column/single-select.js +45 -0
  119. package/lib/filter/filter-column/text.js +59 -0
  120. package/lib/filter/filter-row.js +204 -0
  121. package/lib/group/core.js +117 -0
  122. package/lib/group/group-row.js +377 -0
  123. package/lib/index.js +176 -6
  124. package/lib/link/core.js +90 -0
  125. package/lib/number.js +18 -0
  126. package/lib/row/color.js +286 -0
  127. package/lib/row/core.js +170 -0
  128. package/lib/sort/core.js +37 -0
  129. package/lib/sort/sort-column/array.js +67 -0
  130. package/lib/sort/sort-column/checkbox.js +19 -0
  131. package/lib/sort/sort-column/collaborator.js +13 -0
  132. package/lib/sort/sort-column/date.js +29 -0
  133. package/lib/sort/sort-column/formula.js +44 -0
  134. package/lib/sort/sort-column/link.js +27 -0
  135. package/lib/sort/sort-column/multiple-select.js +50 -0
  136. package/lib/sort/sort-column/number.js +22 -0
  137. package/lib/sort/sort-column/single-select.js +26 -0
  138. package/lib/sort/sort-column/text.js +52 -0
  139. package/lib/sort/sort-row.js +136 -0
  140. package/lib/table/column.js +32 -0
  141. package/lib/table/core.js +18 -0
  142. package/lib/table/index.js +18 -0
  143. package/lib/table/row.js +30 -0
  144. package/lib/validate/filter.js +3 -3
  145. package/lib/validate/geolocation.js +9 -0
  146. package/lib/view/core.js +144 -0
  147. package/lib/view/formula.js +150 -0
  148. package/lib/view/group.js +36 -0
  149. package/lib/view/summaries.js +185 -0
  150. package/package.json +4 -2
@@ -0,0 +1,67 @@
1
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
2
+ import '../../constants/filter/filter-column-options.js';
3
+ import '../../constants/filter/filter-modifier.js';
4
+ import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js';
5
+ import '../../constants/filter/filter-is-within.js';
6
+
7
+ var collaboratorFilter = function collaboratorFilter(cellValue, _ref, username) {
8
+ var filter_predicate = _ref.filter_predicate,
9
+ filter_term = _ref.filter_term;
10
+ switch (filter_predicate) {
11
+ case FILTER_PREDICATE_TYPE.HAS_ANY_OF:
12
+ {
13
+ return !Array.isArray(filter_term) || filter_term.length === 0 || Array.isArray(cellValue) && filter_term.some(function (email) {
14
+ return cellValue.includes(email);
15
+ });
16
+ }
17
+ case FILTER_PREDICATE_TYPE.HAS_ALL_OF:
18
+ {
19
+ return !Array.isArray(filter_term) || filter_term.length === 0 || Array.isArray(cellValue) && filter_term.every(function (email) {
20
+ return cellValue.includes(email);
21
+ });
22
+ }
23
+ case FILTER_PREDICATE_TYPE.HAS_NONE_OF:
24
+ {
25
+ if (!Array.isArray(filter_term) || filter_term.length === 0 || !Array.isArray(cellValue) || cellValue.length === 0) {
26
+ return true;
27
+ }
28
+ return filter_term.every(function (email) {
29
+ return cellValue.indexOf(email) < 0;
30
+ });
31
+ }
32
+ case FILTER_PREDICATE_TYPE.IS_EXACTLY:
33
+ {
34
+ if (!Array.isArray(filter_term) || filter_term.length === 0) {
35
+ return true;
36
+ }
37
+ if (!Array.isArray(cellValue) || cellValue.length === 0) {
38
+ return false;
39
+ }
40
+ var nonReptCellValue = _toConsumableArray(new Set(cellValue));
41
+ if (nonReptCellValue.length !== filter_term.length) {
42
+ return false;
43
+ }
44
+ return filter_term.every(function (email) {
45
+ return nonReptCellValue.includes(email);
46
+ });
47
+ }
48
+ case FILTER_PREDICATE_TYPE.EMPTY:
49
+ {
50
+ return !Array.isArray(cellValue) || cellValue.length === 0;
51
+ }
52
+ case FILTER_PREDICATE_TYPE.NOT_EMPTY:
53
+ {
54
+ return Array.isArray(cellValue) && cellValue.length > 0;
55
+ }
56
+ case FILTER_PREDICATE_TYPE.INCLUDE_ME:
57
+ {
58
+ return Array.isArray(cellValue) && cellValue.indexOf(username) > -1;
59
+ }
60
+ default:
61
+ {
62
+ return false;
63
+ }
64
+ }
65
+ };
66
+
67
+ export { collaboratorFilter };
@@ -0,0 +1,50 @@
1
+ import '../../constants/filter/filter-column-options.js';
2
+ import '../../constants/filter/filter-modifier.js';
3
+ import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js';
4
+ import '../../constants/filter/filter-is-within.js';
5
+
6
+ var creatorFilter = function creatorFilter(cellValue, _ref, username) {
7
+ var filter_predicate = _ref.filter_predicate,
8
+ filter_term = _ref.filter_term;
9
+ switch (filter_predicate) {
10
+ case FILTER_PREDICATE_TYPE.CONTAINS:
11
+ {
12
+ if (!Array.isArray(filter_term)) {
13
+ return true;
14
+ }
15
+ if (!cellValue) {
16
+ return false;
17
+ }
18
+ return filter_term.findIndex(function (item) {
19
+ return item === cellValue;
20
+ }) > -1;
21
+ }
22
+ case FILTER_PREDICATE_TYPE.NOT_CONTAIN:
23
+ {
24
+ if (!Array.isArray(filter_term) || !cellValue) {
25
+ return true;
26
+ }
27
+ return filter_term.findIndex(function (item) {
28
+ return item === cellValue;
29
+ }) < 0;
30
+ }
31
+ case FILTER_PREDICATE_TYPE.INCLUDE_ME:
32
+ {
33
+ return cellValue === username;
34
+ }
35
+ case FILTER_PREDICATE_TYPE.IS:
36
+ {
37
+ return !Array.isArray(filter_term) || cellValue === filter_term[0];
38
+ }
39
+ case FILTER_PREDICATE_TYPE.IS_NOT:
40
+ {
41
+ return !Array.isArray(filter_term) || cellValue !== filter_term[0];
42
+ }
43
+ default:
44
+ {
45
+ return false;
46
+ }
47
+ }
48
+ };
49
+
50
+ export { creatorFilter };
@@ -0,0 +1,59 @@
1
+ import { DateUtils } from '../../date.js';
2
+ import '../../constants/filter/filter-column-options.js';
3
+ import { FILTER_TERM_MODIFIER_TYPE } from '../../constants/filter/filter-modifier.js';
4
+ import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js';
5
+ import '../../constants/filter/filter-is-within.js';
6
+
7
+ var dateFilter = function dateFilter(cellValue, _ref) {
8
+ var filter_predicate = _ref.filter_predicate,
9
+ filter_term_modifier = _ref.filter_term_modifier,
10
+ filter_term = _ref.filter_term,
11
+ other_date = _ref.other_date;
12
+ switch (filter_predicate) {
13
+ case FILTER_PREDICATE_TYPE.IS:
14
+ {
15
+ return filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term || DateUtils.format(cellValue) === other_date;
16
+ }
17
+ case FILTER_PREDICATE_TYPE.IS_WITHIN:
18
+ {
19
+ var startDate = other_date.startDate,
20
+ endDate = other_date.endDate;
21
+ var currentDate = DateUtils.format(cellValue);
22
+ return filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term || !!cellValue && currentDate >= startDate && currentDate <= endDate;
23
+ }
24
+ case FILTER_PREDICATE_TYPE.IS_BEFORE:
25
+ {
26
+ return filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term || !!cellValue && DateUtils.getValidDate(cellValue) && DateUtils.format(cellValue) < other_date;
27
+ }
28
+ case FILTER_PREDICATE_TYPE.IS_AFTER:
29
+ {
30
+ return filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term || !!cellValue && DateUtils.getValidDate(cellValue) && DateUtils.format(cellValue) > other_date;
31
+ }
32
+ case FILTER_PREDICATE_TYPE.IS_ON_OR_BEFORE:
33
+ {
34
+ return filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term || !!cellValue && DateUtils.getValidDate(cellValue) && DateUtils.format(cellValue) <= other_date;
35
+ }
36
+ case FILTER_PREDICATE_TYPE.IS_ON_OR_AFTER:
37
+ {
38
+ return filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term || !!cellValue && DateUtils.getValidDate(cellValue) && DateUtils.format(cellValue) >= other_date;
39
+ }
40
+ case FILTER_PREDICATE_TYPE.IS_NOT:
41
+ {
42
+ return filter_term_modifier === FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term || !cellValue || DateUtils.format(cellValue) !== other_date;
43
+ }
44
+ case FILTER_PREDICATE_TYPE.EMPTY:
45
+ {
46
+ return cellValue && DateUtils.getValidDate(cellValue) ? false : true;
47
+ }
48
+ case FILTER_PREDICATE_TYPE.NOT_EMPTY:
49
+ {
50
+ return cellValue && DateUtils.getValidDate(cellValue) ? true : false;
51
+ }
52
+ default:
53
+ {
54
+ return false;
55
+ }
56
+ }
57
+ };
58
+
59
+ export { dateFilter };
@@ -0,0 +1,26 @@
1
+ import '../../constants/filter/filter-column-options.js';
2
+ import '../../constants/filter/filter-modifier.js';
3
+ import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js';
4
+ import '../../constants/filter/filter-is-within.js';
5
+
6
+ var digitalSignFilter = function digitalSignFilter(cellValue, _ref) {
7
+ var filter_predicate = _ref.filter_predicate;
8
+ switch (filter_predicate) {
9
+ case FILTER_PREDICATE_TYPE.EMPTY:
10
+ {
11
+ if (!cellValue) return true;
12
+ return !cellValue.username || !cellValue.sign_time || !cellValue.sign_image_url;
13
+ }
14
+ case FILTER_PREDICATE_TYPE.NOT_EMPTY:
15
+ {
16
+ if (!cellValue) return false;
17
+ return cellValue.username && cellValue.sign_time && cellValue.sign_image_url ? true : false;
18
+ }
19
+ default:
20
+ {
21
+ return false;
22
+ }
23
+ }
24
+ };
25
+
26
+ export { digitalSignFilter };
@@ -0,0 +1,24 @@
1
+ import '../../constants/filter/filter-column-options.js';
2
+ import '../../constants/filter/filter-modifier.js';
3
+ import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js';
4
+ import '../../constants/filter/filter-is-within.js';
5
+
6
+ var fileFilter = function fileFilter(cellValue, _ref) {
7
+ var filter_predicate = _ref.filter_predicate;
8
+ switch (filter_predicate) {
9
+ case FILTER_PREDICATE_TYPE.EMPTY:
10
+ {
11
+ return cellValue && cellValue.length > 0 ? false : true;
12
+ }
13
+ case FILTER_PREDICATE_TYPE.NOT_EMPTY:
14
+ {
15
+ return cellValue && cellValue.length > 0 ? true : false;
16
+ }
17
+ default:
18
+ {
19
+ return false;
20
+ }
21
+ }
22
+ };
23
+
24
+ export { fileFilter };
@@ -0,0 +1,49 @@
1
+ import { numberFilter } from './number.js';
2
+ import { dateFilter } from './date.js';
3
+ import { checkboxFilter } from './checkbox.js';
4
+ import { textFilter } from './text.js';
5
+ import { filterByArrayType } from './array.js';
6
+ import { getFormulaDisplayString } from '../../cell-value-get/cell-value.js';
7
+ import { FORMULA_RESULT_TYPE } from '../../constants/formula.js';
8
+
9
+ var formulaFilter = function formulaFilter(cellValue, filter, _ref) {
10
+ var username = _ref.username,
11
+ userId = _ref.userId;
12
+ var data = filter.column.data;
13
+ var _ref2 = data || {},
14
+ result_type = _ref2.result_type;
15
+ switch (result_type) {
16
+ case FORMULA_RESULT_TYPE.NUMBER:
17
+ {
18
+ return numberFilter(cellValue, filter);
19
+ }
20
+ case FORMULA_RESULT_TYPE.DATE:
21
+ {
22
+ return dateFilter(cellValue, filter);
23
+ }
24
+ case FORMULA_RESULT_TYPE.BOOL:
25
+ {
26
+ var normalizedCellValue = cellValue;
27
+ if (cellValue === 'true') {
28
+ normalizedCellValue = true;
29
+ } else if (cellValue === 'false') {
30
+ normalizedCellValue = false;
31
+ }
32
+ return checkboxFilter(normalizedCellValue, filter);
33
+ }
34
+ case FORMULA_RESULT_TYPE.ARRAY:
35
+ {
36
+ return filterByArrayType(cellValue, filter, {
37
+ username: username,
38
+ userId: userId
39
+ });
40
+ }
41
+ default:
42
+ {
43
+ // FORMULA_RESULT_TYPE.STRING
44
+ return textFilter(getFormulaDisplayString(cellValue, data) || '', filter, userId);
45
+ }
46
+ }
47
+ };
48
+
49
+ export { formulaFilter };
@@ -0,0 +1,53 @@
1
+ import { getGeolocationDisplayString } from '../../cell-value-get/geolocation.js';
2
+ import '../../constants/filter/filter-column-options.js';
3
+ import '../../constants/filter/filter-modifier.js';
4
+ import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js';
5
+ import '../../constants/filter/filter-is-within.js';
6
+
7
+ var geolocationFilter = function geolocationFilter(cellValue, _ref) {
8
+ var filter_predicate = _ref.filter_predicate,
9
+ filter_term = _ref.filter_term,
10
+ column = _ref.column;
11
+ var geolocation = getGeolocationDisplayString(cellValue, column.data);
12
+ switch (filter_predicate) {
13
+ case FILTER_PREDICATE_TYPE.CONTAINS:
14
+ {
15
+ if (!filter_term) {
16
+ return true;
17
+ }
18
+ if (!geolocation) {
19
+ return false;
20
+ }
21
+ return geolocation.toString().toLowerCase().indexOf(filter_term.toLowerCase()) > -1;
22
+ }
23
+ case FILTER_PREDICATE_TYPE.NOT_CONTAIN:
24
+ {
25
+ if (!filter_term || !geolocation) {
26
+ return true;
27
+ }
28
+ return geolocation.toString().toLowerCase().indexOf(filter_term.toLowerCase()) < 0;
29
+ }
30
+ case FILTER_PREDICATE_TYPE.IS:
31
+ {
32
+ return !filter_term || geolocation === filter_term;
33
+ }
34
+ case FILTER_PREDICATE_TYPE.IS_NOT:
35
+ {
36
+ return !filter_term || geolocation !== filter_term;
37
+ }
38
+ case FILTER_PREDICATE_TYPE.EMPTY:
39
+ {
40
+ return geolocation ? false : true;
41
+ }
42
+ case FILTER_PREDICATE_TYPE.NOT_EMPTY:
43
+ {
44
+ return geolocation ? true : false;
45
+ }
46
+ default:
47
+ {
48
+ return false;
49
+ }
50
+ }
51
+ };
52
+
53
+ export { geolocationFilter };
@@ -0,0 +1,12 @@
1
+ import { filterByArrayType } from './array.js';
2
+
3
+ var linkFilter = function linkFilter(cellValue, filter, _ref) {
4
+ var username = _ref.username,
5
+ userId = _ref.userId;
6
+ return filterByArrayType(cellValue, filter, {
7
+ username: username,
8
+ userId: userId
9
+ });
10
+ };
11
+
12
+ export { linkFilter };
@@ -0,0 +1,25 @@
1
+ import '../../constants/filter/filter-column-options.js';
2
+ import '../../constants/filter/filter-modifier.js';
3
+ import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js';
4
+ import '../../constants/filter/filter-is-within.js';
5
+
6
+ var longTextFilter = function longTextFilter(cellValue, _ref) {
7
+ var filter_predicate = _ref.filter_predicate;
8
+ var text = cellValue ? cellValue.text : null;
9
+ switch (filter_predicate) {
10
+ case FILTER_PREDICATE_TYPE.EMPTY:
11
+ {
12
+ return text ? false : true;
13
+ }
14
+ case FILTER_PREDICATE_TYPE.NOT_EMPTY:
15
+ {
16
+ return text ? true : false;
17
+ }
18
+ default:
19
+ {
20
+ return false;
21
+ }
22
+ }
23
+ };
24
+
25
+ export { longTextFilter };
@@ -0,0 +1,60 @@
1
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
2
+ import '../../constants/filter/filter-column-options.js';
3
+ import '../../constants/filter/filter-modifier.js';
4
+ import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js';
5
+ import '../../constants/filter/filter-is-within.js';
6
+
7
+ var multipleSelectFilter = function multipleSelectFilter(cellValue, _ref) {
8
+ var filter_predicate = _ref.filter_predicate,
9
+ filter_term = _ref.filter_term;
10
+ switch (filter_predicate) {
11
+ case FILTER_PREDICATE_TYPE.HAS_ANY_OF:
12
+ {
13
+ return filter_term.length === 0 || Array.isArray(cellValue) && cellValue.some(function (optionId) {
14
+ return filter_term.includes(optionId);
15
+ });
16
+ }
17
+ case FILTER_PREDICATE_TYPE.HAS_ALL_OF:
18
+ {
19
+ return filter_term.length === 0 || Array.isArray(cellValue) && filter_term.every(function (optionId) {
20
+ return cellValue.includes(optionId);
21
+ });
22
+ }
23
+ case FILTER_PREDICATE_TYPE.HAS_NONE_OF:
24
+ {
25
+ if (filter_term.length === 0 || !Array.isArray(cellValue) || cellValue.length === 0) {
26
+ return true;
27
+ }
28
+ return filter_term.every(function (optionId) {
29
+ return cellValue.indexOf(optionId) < 0;
30
+ });
31
+ }
32
+ case FILTER_PREDICATE_TYPE.IS_EXACTLY:
33
+ {
34
+ if (filter_term.length === 0) {
35
+ return true;
36
+ }
37
+ if (!Array.isArray(cellValue)) {
38
+ return false;
39
+ }
40
+ var uniqueArr = function uniqueArr(arr) {
41
+ return _toConsumableArray(new Set(arr)).sort();
42
+ };
43
+ return uniqueArr(cellValue).toString() === uniqueArr(filter_term).toString();
44
+ }
45
+ case FILTER_PREDICATE_TYPE.EMPTY:
46
+ {
47
+ return !Array.isArray(cellValue) || cellValue.length === 0;
48
+ }
49
+ case FILTER_PREDICATE_TYPE.NOT_EMPTY:
50
+ {
51
+ return Array.isArray(cellValue) && cellValue.length > 0;
52
+ }
53
+ default:
54
+ {
55
+ return false;
56
+ }
57
+ }
58
+ };
59
+
60
+ export { multipleSelectFilter };
@@ -0,0 +1,93 @@
1
+ import { isNumberEqual } from '../../number.js';
2
+ import '../../constants/filter/filter-column-options.js';
3
+ import '../../constants/filter/filter-modifier.js';
4
+ import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js';
5
+ import '../../constants/filter/filter-is-within.js';
6
+
7
+ var numberFilter = function numberFilter(cellValue, _ref) {
8
+ var filter_predicate = _ref.filter_predicate,
9
+ filter_term = _ref.filter_term;
10
+ switch (filter_predicate) {
11
+ case FILTER_PREDICATE_TYPE.EQUAL:
12
+ {
13
+ if (!filter_term && filter_term !== 0) {
14
+ return true;
15
+ }
16
+ if (!cellValue && cellValue !== 0) {
17
+ return false;
18
+ }
19
+ return isNumberEqual(filter_term, cellValue);
20
+ }
21
+ case FILTER_PREDICATE_TYPE.NOT_EQUAL:
22
+ {
23
+ if (!filter_term && filter_term !== 0 || !cellValue && cellValue !== 0) {
24
+ return true;
25
+ }
26
+ return !isNumberEqual(filter_term, cellValue);
27
+ }
28
+ case FILTER_PREDICATE_TYPE.LESS:
29
+ {
30
+ if (!filter_term && filter_term !== 0) {
31
+ return true;
32
+ }
33
+ if (!cellValue && cellValue !== 0 || isNumberEqual(cellValue, filter_term)) {
34
+ return false;
35
+ }
36
+ return cellValue < filter_term;
37
+ }
38
+ case FILTER_PREDICATE_TYPE.GREATER:
39
+ {
40
+ if (!filter_term && filter_term !== 0) {
41
+ return true;
42
+ }
43
+ if (!cellValue && cellValue !== 0 || isNumberEqual(cellValue, filter_term)) {
44
+ return false;
45
+ }
46
+ return cellValue > filter_term;
47
+ }
48
+ case FILTER_PREDICATE_TYPE.LESS_OR_EQUAL:
49
+ {
50
+ if (!filter_term && filter_term !== 0) {
51
+ return true;
52
+ }
53
+ if (!cellValue && cellValue !== 0) {
54
+ return false;
55
+ }
56
+ if (isNumberEqual(cellValue, filter_term)) {
57
+ return true;
58
+ }
59
+ return cellValue < filter_term;
60
+ }
61
+ case FILTER_PREDICATE_TYPE.GREATER_OR_EQUAL:
62
+ {
63
+ if (!filter_term && filter_term !== 0) {
64
+ return true;
65
+ }
66
+ if (!cellValue && cellValue !== 0) {
67
+ return false;
68
+ }
69
+ return isNumberEqual(cellValue, filter_term) || cellValue > filter_term;
70
+ }
71
+ case FILTER_PREDICATE_TYPE.EMPTY:
72
+ {
73
+ if (cellValue === 0) {
74
+ return false;
75
+ }
76
+ return !cellValue || typeof cellValue !== 'number';
77
+ }
78
+ case FILTER_PREDICATE_TYPE.NOT_EMPTY:
79
+ {
80
+ // must be a number
81
+ if (cellValue === 0) {
82
+ return true;
83
+ }
84
+ return cellValue && typeof cellValue === 'number' ? true : false;
85
+ }
86
+ default:
87
+ {
88
+ return false;
89
+ }
90
+ }
91
+ };
92
+
93
+ export { numberFilter };
@@ -0,0 +1,41 @@
1
+ import '../../constants/filter/filter-column-options.js';
2
+ import '../../constants/filter/filter-modifier.js';
3
+ import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js';
4
+ import '../../constants/filter/filter-is-within.js';
5
+
6
+ var singleSelectFilter = function singleSelectFilter(cellValue, _ref) {
7
+ var filter_predicate = _ref.filter_predicate,
8
+ filter_term = _ref.filter_term;
9
+ switch (filter_predicate) {
10
+ case FILTER_PREDICATE_TYPE.IS:
11
+ {
12
+ return !filter_term || cellValue === filter_term;
13
+ }
14
+ case FILTER_PREDICATE_TYPE.IS_NOT:
15
+ {
16
+ return !filter_term || cellValue !== filter_term;
17
+ }
18
+ case FILTER_PREDICATE_TYPE.IS_ANY_OF:
19
+ {
20
+ return filter_term.length === 0 || filter_term.includes(cellValue);
21
+ }
22
+ case FILTER_PREDICATE_TYPE.IS_NONE_OF:
23
+ {
24
+ return filter_term.length === 0 || filter_term.indexOf(cellValue) < 0;
25
+ }
26
+ case FILTER_PREDICATE_TYPE.EMPTY:
27
+ {
28
+ return cellValue ? false : true;
29
+ }
30
+ case FILTER_PREDICATE_TYPE.NOT_EMPTY:
31
+ {
32
+ return cellValue ? true : false;
33
+ }
34
+ default:
35
+ {
36
+ return false;
37
+ }
38
+ }
39
+ };
40
+
41
+ export { singleSelectFilter };
@@ -0,0 +1,55 @@
1
+ import '../../constants/filter/filter-column-options.js';
2
+ import '../../constants/filter/filter-modifier.js';
3
+ import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js';
4
+ import '../../constants/filter/filter-is-within.js';
5
+
6
+ var textFilter = function textFilter(cellValue, _ref, userId) {
7
+ var filter_predicate = _ref.filter_predicate,
8
+ filter_term = _ref.filter_term;
9
+ switch (filter_predicate) {
10
+ case FILTER_PREDICATE_TYPE.CONTAINS:
11
+ {
12
+ if (!filter_term) {
13
+ return true;
14
+ }
15
+ if (!cellValue) {
16
+ return false;
17
+ }
18
+ return cellValue.toString().toLowerCase().indexOf(filter_term.toLowerCase()) > -1;
19
+ }
20
+ case FILTER_PREDICATE_TYPE.NOT_CONTAIN:
21
+ {
22
+ if (!filter_term || !cellValue) {
23
+ return true;
24
+ }
25
+ return cellValue.toString().toLowerCase().indexOf(filter_term.toLowerCase()) < 0;
26
+ }
27
+ case FILTER_PREDICATE_TYPE.IS:
28
+ {
29
+ return !filter_term || cellValue === filter_term;
30
+ }
31
+ case FILTER_PREDICATE_TYPE.IS_NOT:
32
+ {
33
+ return !filter_term || cellValue !== filter_term;
34
+ }
35
+ case FILTER_PREDICATE_TYPE.EMPTY:
36
+ {
37
+ return cellValue ? false : true;
38
+ }
39
+ case FILTER_PREDICATE_TYPE.NOT_EMPTY:
40
+ {
41
+ return cellValue ? true : false;
42
+ }
43
+ case FILTER_PREDICATE_TYPE.IS_CURRENT_USER_ID:
44
+ {
45
+ if (!userId) return false;
46
+ return cellValue === userId;
47
+ }
48
+ default:
49
+ {
50
+ return false;
51
+ }
52
+ }
53
+ };
54
+
55
+ export { textFilter };