dtable-utils 0.0.3 → 4.2.0

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 (152) hide show
  1. package/README.md +56 -5
  2. package/dist/index.js +1 -1
  3. package/es/cell-value-get/cell-value.js +250 -20
  4. package/es/cell-value-get/collaborator.js +16 -3
  5. package/es/cell-value-get/digital-sign.js +1 -1
  6. package/es/cell-value-get/duration.js +3 -3
  7. package/es/cell-value-get/geolocation.js +52 -30
  8. package/es/cell-value-get/long-text.js +1 -1
  9. package/es/cell-value-get/number.js +51 -19
  10. package/es/cell-value-get/option.js +33 -9
  11. package/es/cell-value-get/rate.js +11 -0
  12. package/es/cell-value-set/date.js +26 -0
  13. package/es/cell-value-set/number.js +53 -1
  14. package/es/color/column-color.js +437 -0
  15. package/es/color/gradient-color.js +100 -0
  16. package/es/color/row-color.js +289 -0
  17. package/es/column/{common.js → core.js} +2 -14
  18. package/es/column/date.js +1 -1
  19. package/es/column/number.js +1 -1
  20. package/es/column/option.js +143 -0
  21. package/es/common.js +23 -3
  22. package/es/constants/color.js +16 -0
  23. package/es/constants/column-permission.js +7 -0
  24. package/es/constants/column.js +127 -2
  25. package/es/constants/filter/index.js +5 -1
  26. package/es/constants/formula.js +2 -1
  27. package/es/constants/grid-header.js +6 -0
  28. package/es/constants/group.js +23 -0
  29. package/es/constants/limit.js +3 -0
  30. package/es/constants/reg.js +4 -0
  31. package/es/constants/row-color.js +11 -0
  32. package/es/constants/sort.js +11 -0
  33. package/es/date.js +1 -1
  34. package/es/filter/core.js +322 -0
  35. package/es/filter/filter-column/array.js +87 -0
  36. package/es/filter/filter-column/checkbox.js +14 -0
  37. package/es/filter/filter-column/collaborator.js +72 -0
  38. package/es/filter/filter-column/creator.js +59 -0
  39. package/es/filter/filter-column/date.js +102 -0
  40. package/es/filter/filter-column/digital-sign.js +29 -0
  41. package/es/filter/filter-column/file.js +27 -0
  42. package/es/filter/filter-column/formula.js +57 -0
  43. package/es/filter/filter-column/geolocation.js +58 -0
  44. package/es/filter/filter-column/link.js +20 -0
  45. package/es/filter/filter-column/long-text.js +28 -0
  46. package/es/filter/filter-column/multiple-select.js +64 -0
  47. package/es/filter/filter-column/number.js +97 -0
  48. package/es/filter/filter-column/single-select.js +45 -0
  49. package/es/filter/filter-column/text.js +60 -0
  50. package/es/filter/filter-row.js +233 -0
  51. package/es/group/core.js +116 -0
  52. package/es/group/group-row.js +402 -0
  53. package/es/index.js +63 -11
  54. package/es/link/core.js +78 -0
  55. package/es/number.js +21 -0
  56. package/es/row/core.js +180 -0
  57. package/es/sort/core.js +91 -0
  58. package/es/sort/sort-column/array.js +72 -0
  59. package/es/sort/sort-column/checkbox.js +22 -0
  60. package/es/sort/sort-column/collaborator.js +16 -0
  61. package/es/sort/sort-column/date.js +25 -0
  62. package/es/sort/sort-column/formula.js +49 -0
  63. package/es/sort/sort-column/link.js +32 -0
  64. package/es/sort/sort-column/multiple-select.js +45 -0
  65. package/es/sort/sort-column/number.js +31 -0
  66. package/es/sort/sort-column/single-select.js +36 -0
  67. package/es/sort/sort-column/text.js +69 -0
  68. package/es/sort/sort-row.js +110 -0
  69. package/es/table/column.js +27 -0
  70. package/es/table/core.js +14 -0
  71. package/es/table/row.js +25 -0
  72. package/es/validate/filter.js +1 -1
  73. package/es/validate/geolocation.js +5 -0
  74. package/es/view/core.js +134 -0
  75. package/es/view/formula.js +147 -0
  76. package/es/view/group.js +32 -0
  77. package/es/view/summaries.js +167 -0
  78. package/lib/cell-value-get/cell-value.js +254 -19
  79. package/lib/cell-value-get/collaborator.js +16 -2
  80. package/lib/cell-value-get/digital-sign.js +1 -1
  81. package/lib/cell-value-get/duration.js +3 -2
  82. package/lib/cell-value-get/geolocation.js +53 -30
  83. package/lib/cell-value-get/long-text.js +1 -1
  84. package/lib/cell-value-get/number.js +51 -18
  85. package/lib/cell-value-get/option.js +34 -8
  86. package/lib/cell-value-get/rate.js +15 -0
  87. package/lib/cell-value-set/date.js +30 -0
  88. package/lib/cell-value-set/number.js +53 -0
  89. package/lib/color/column-color.js +446 -0
  90. package/lib/color/gradient-color.js +110 -0
  91. package/lib/color/row-color.js +297 -0
  92. package/lib/column/{common.js → core.js} +1 -14
  93. package/lib/column/date.js +2 -2
  94. package/lib/column/number.js +3 -3
  95. package/lib/column/option.js +151 -0
  96. package/lib/common.js +27 -3
  97. package/lib/constants/color.js +20 -0
  98. package/lib/constants/column-permission.js +11 -0
  99. package/lib/constants/column.js +134 -1
  100. package/lib/constants/filter/index.js +5 -0
  101. package/lib/constants/formula.js +2 -0
  102. package/lib/constants/grid-header.js +10 -0
  103. package/lib/constants/group.js +36 -0
  104. package/lib/constants/limit.js +7 -0
  105. package/lib/constants/reg.js +9 -0
  106. package/lib/constants/row-color.js +17 -0
  107. package/lib/constants/sort.js +18 -0
  108. package/lib/filter/core.js +336 -0
  109. package/lib/filter/filter-column/array.js +91 -0
  110. package/lib/filter/filter-column/checkbox.js +18 -0
  111. package/lib/filter/filter-column/collaborator.js +80 -0
  112. package/lib/filter/filter-column/creator.js +63 -0
  113. package/lib/filter/filter-column/date.js +106 -0
  114. package/lib/filter/filter-column/digital-sign.js +33 -0
  115. package/lib/filter/filter-column/file.js +31 -0
  116. package/lib/filter/filter-column/formula.js +61 -0
  117. package/lib/filter/filter-column/geolocation.js +62 -0
  118. package/lib/filter/filter-column/link.js +24 -0
  119. package/lib/filter/filter-column/long-text.js +32 -0
  120. package/lib/filter/filter-column/multiple-select.js +72 -0
  121. package/lib/filter/filter-column/number.js +101 -0
  122. package/lib/filter/filter-column/single-select.js +49 -0
  123. package/lib/filter/filter-column/text.js +64 -0
  124. package/lib/filter/filter-row.js +239 -0
  125. package/lib/group/core.js +126 -0
  126. package/lib/group/group-row.js +413 -0
  127. package/lib/index.js +177 -7
  128. package/lib/link/core.js +90 -0
  129. package/lib/number.js +26 -0
  130. package/lib/row/core.js +189 -0
  131. package/lib/sort/core.js +102 -0
  132. package/lib/sort/sort-column/array.js +76 -0
  133. package/lib/sort/sort-column/checkbox.js +26 -0
  134. package/lib/sort/sort-column/collaborator.js +20 -0
  135. package/lib/sort/sort-column/date.js +29 -0
  136. package/lib/sort/sort-column/formula.js +53 -0
  137. package/lib/sort/sort-column/link.js +36 -0
  138. package/lib/sort/sort-column/multiple-select.js +49 -0
  139. package/lib/sort/sort-column/number.js +35 -0
  140. package/lib/sort/sort-column/single-select.js +40 -0
  141. package/lib/sort/sort-column/text.js +74 -0
  142. package/lib/sort/sort-row.js +115 -0
  143. package/lib/table/column.js +32 -0
  144. package/lib/table/core.js +18 -0
  145. package/lib/table/row.js +30 -0
  146. package/lib/validate/filter.js +3 -3
  147. package/lib/validate/geolocation.js +9 -0
  148. package/lib/view/core.js +143 -0
  149. package/lib/view/formula.js +154 -0
  150. package/lib/view/group.js +36 -0
  151. package/lib/view/summaries.js +173 -0
  152. package/package.json +5 -3
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var filterPredicate = require('../../constants/filter/filter-predicate.js');
6
+
7
+ /**
8
+ * Filter digital signature
9
+ * @param {object} digitalSignature e.g. { username, sign_time, sign_image_url, ... }
10
+ * @param {string} filter_predicate
11
+ * @returns bool
12
+ */
13
+ var digitalSignFilter = function digitalSignFilter(digitalSignature, _ref) {
14
+ var filter_predicate = _ref.filter_predicate;
15
+ switch (filter_predicate) {
16
+ case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
17
+ {
18
+ if (!digitalSignature) return true;
19
+ return !digitalSignature.username || !digitalSignature.sign_time || !digitalSignature.sign_image_url;
20
+ }
21
+ case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
22
+ {
23
+ if (!digitalSignature) return false;
24
+ return !!(digitalSignature.username && digitalSignature.sign_time && digitalSignature.sign_image_url);
25
+ }
26
+ default:
27
+ {
28
+ return false;
29
+ }
30
+ }
31
+ };
32
+
33
+ exports.digitalSignFilter = digitalSignFilter;
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var filterPredicate = require('../../constants/filter/filter-predicate.js');
6
+
7
+ /**
8
+ * Filter file
9
+ * @param {array} files e.g. [{ name, type, url, ... }] | [ url1, ... ]
10
+ * @param {string} filter_predicate
11
+ * @returns bool
12
+ */
13
+ var fileFilter = function fileFilter(files, _ref) {
14
+ var filter_predicate = _ref.filter_predicate;
15
+ switch (filter_predicate) {
16
+ case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
17
+ {
18
+ return !(files && files.length > 0);
19
+ }
20
+ case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
21
+ {
22
+ return !!(files && files.length > 0);
23
+ }
24
+ default:
25
+ {
26
+ return false;
27
+ }
28
+ }
29
+ };
30
+
31
+ exports.fileFilter = fileFilter;
@@ -0,0 +1,61 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var number = require('./number.js');
6
+ var date = require('./date.js');
7
+ var checkbox = require('./checkbox.js');
8
+ var text = require('./text.js');
9
+ var array = require('./array.js');
10
+ var cellValue = require('../../cell-value-get/cell-value.js');
11
+ var formula = require('../../constants/formula.js');
12
+
13
+ /**
14
+ * Filter formula
15
+ * @param {any} computedValue cell value from formulaRow
16
+ * @param {object} filter e.g. { filter_predicate, column, ... }
17
+ * @param {string} username
18
+ * @param {string} userId
19
+ * @returns bool
20
+ */
21
+ var formulaFilter = function formulaFilter(computedValue, filter, _ref) {
22
+ var username = _ref.username,
23
+ userId = _ref.userId;
24
+ var data = filter.column.data;
25
+ var _ref2 = data || {},
26
+ result_type = _ref2.result_type;
27
+ switch (result_type) {
28
+ case formula.FORMULA_RESULT_TYPE.NUMBER:
29
+ {
30
+ return number.numberFilter(computedValue, filter);
31
+ }
32
+ case formula.FORMULA_RESULT_TYPE.DATE:
33
+ {
34
+ return date.dateFilter(computedValue, filter);
35
+ }
36
+ case formula.FORMULA_RESULT_TYPE.BOOL:
37
+ {
38
+ var normalizedCellValue = computedValue;
39
+ if (computedValue === 'true') {
40
+ normalizedCellValue = true;
41
+ } else if (computedValue === 'false') {
42
+ normalizedCellValue = false;
43
+ }
44
+ return checkbox.checkboxFilter(normalizedCellValue, filter);
45
+ }
46
+ case formula.FORMULA_RESULT_TYPE.ARRAY:
47
+ {
48
+ return array.filterByArrayType(computedValue, filter, {
49
+ username: username,
50
+ userId: userId
51
+ });
52
+ }
53
+ default:
54
+ {
55
+ // FORMULA_RESULT_TYPE.STRING
56
+ return text.textFilter(cellValue.getFormulaDisplayString(computedValue, data) || '', filter, userId);
57
+ }
58
+ }
59
+ };
60
+
61
+ exports.formulaFilter = formulaFilter;
@@ -0,0 +1,62 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var geolocation = require('../../cell-value-get/geolocation.js');
6
+ var filterPredicate = require('../../constants/filter/filter-predicate.js');
7
+
8
+ /**
9
+ * Filter geolocation
10
+ * @param {object} location e.g. { province, ... }
11
+ * @param {string} filter_predicate
12
+ * @param {string} filter_term
13
+ * @param {object} column e.g. { type, data: { geo_format, ... }, ... }
14
+ * @returns bool
15
+ */
16
+ var geolocationFilter = function geolocationFilter(location, _ref) {
17
+ var filter_predicate = _ref.filter_predicate,
18
+ filter_term = _ref.filter_term,
19
+ column = _ref.column;
20
+ var geolocation$1 = geolocation.getGeolocationDisplayString(location, column.data);
21
+ switch (filter_predicate) {
22
+ case filterPredicate.FILTER_PREDICATE_TYPE.CONTAINS:
23
+ {
24
+ if (!filter_term) {
25
+ return true;
26
+ }
27
+ if (!geolocation$1) {
28
+ return false;
29
+ }
30
+ return geolocation$1.toString().toLowerCase().indexOf(filter_term.toLowerCase()) > -1;
31
+ }
32
+ case filterPredicate.FILTER_PREDICATE_TYPE.NOT_CONTAIN:
33
+ {
34
+ if (!filter_term || !geolocation$1) {
35
+ return true;
36
+ }
37
+ return geolocation$1.toString().toLowerCase().indexOf(filter_term.toLowerCase()) < 0;
38
+ }
39
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS:
40
+ {
41
+ return !filter_term || geolocation$1 === filter_term;
42
+ }
43
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_NOT:
44
+ {
45
+ return !filter_term || geolocation$1 !== filter_term;
46
+ }
47
+ case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
48
+ {
49
+ return !geolocation$1;
50
+ }
51
+ case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
52
+ {
53
+ return !!geolocation$1;
54
+ }
55
+ default:
56
+ {
57
+ return false;
58
+ }
59
+ }
60
+ };
61
+
62
+ exports.geolocationFilter = geolocationFilter;
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var array = require('./array.js');
6
+
7
+ /**
8
+ * Filter link
9
+ * @param {array} linkedCellValues e.g. [ displayCellValue, ... ]
10
+ * @param {object} filter e.g. { filter_predicate, column, ... }
11
+ * @param {string} username
12
+ * @param {string} userId
13
+ * @returns bool
14
+ */
15
+ var linkFilter = function linkFilter(linkedCellValues, filter, _ref) {
16
+ var username = _ref.username,
17
+ userId = _ref.userId;
18
+ return array.filterByArrayType(linkedCellValues, filter, {
19
+ username: username,
20
+ userId: userId
21
+ });
22
+ };
23
+
24
+ exports.linkFilter = linkFilter;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var filterPredicate = require('../../constants/filter/filter-predicate.js');
6
+
7
+ /**
8
+ * Filter long-text
9
+ * @param {object} longText e.g. { text, ... }
10
+ * @param {string} filter_predicate
11
+ * @returns bool
12
+ */
13
+ var longTextFilter = function longTextFilter(longText, _ref) {
14
+ var filter_predicate = _ref.filter_predicate;
15
+ var text = longText ? longText.text : null;
16
+ switch (filter_predicate) {
17
+ case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
18
+ {
19
+ return !text;
20
+ }
21
+ case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
22
+ {
23
+ return !!text;
24
+ }
25
+ default:
26
+ {
27
+ return false;
28
+ }
29
+ }
30
+ };
31
+
32
+ exports.longTextFilter = longTextFilter;
@@ -0,0 +1,72 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
6
+ var filterPredicate = require('../../constants/filter/filter-predicate.js');
7
+
8
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
+
10
+ var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
11
+
12
+ /**
13
+ * Filter multiple-select
14
+ * @param {array} optionIds e.g. [ option.id, ... ]
15
+ * @param {string} filter_predicate
16
+ * @param {array} filter_term option ids
17
+ * @returns bool
18
+ */
19
+ var multipleSelectFilter = function multipleSelectFilter(optionIds, _ref) {
20
+ var filter_predicate = _ref.filter_predicate,
21
+ filter_term = _ref.filter_term;
22
+ switch (filter_predicate) {
23
+ case filterPredicate.FILTER_PREDICATE_TYPE.HAS_ANY_OF:
24
+ {
25
+ return filter_term.length === 0 || Array.isArray(optionIds) && optionIds.some(function (optionId) {
26
+ return filter_term.includes(optionId);
27
+ });
28
+ }
29
+ case filterPredicate.FILTER_PREDICATE_TYPE.HAS_ALL_OF:
30
+ {
31
+ return filter_term.length === 0 || Array.isArray(optionIds) && filter_term.every(function (optionId) {
32
+ return optionIds.includes(optionId);
33
+ });
34
+ }
35
+ case filterPredicate.FILTER_PREDICATE_TYPE.HAS_NONE_OF:
36
+ {
37
+ if (filter_term.length === 0 || !Array.isArray(optionIds) || optionIds.length === 0) {
38
+ return true;
39
+ }
40
+ return filter_term.every(function (optionId) {
41
+ return optionIds.indexOf(optionId) < 0;
42
+ });
43
+ }
44
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_EXACTLY:
45
+ {
46
+ if (filter_term.length === 0) {
47
+ return true;
48
+ }
49
+ if (!Array.isArray(optionIds)) {
50
+ return false;
51
+ }
52
+ var uniqueArr = function uniqueArr(arr) {
53
+ return _toConsumableArray__default["default"](new Set(arr)).sort();
54
+ };
55
+ return uniqueArr(optionIds).toString() === uniqueArr(filter_term).toString();
56
+ }
57
+ case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
58
+ {
59
+ return !Array.isArray(optionIds) || optionIds.length === 0;
60
+ }
61
+ case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
62
+ {
63
+ return Array.isArray(optionIds) && optionIds.length > 0;
64
+ }
65
+ default:
66
+ {
67
+ return false;
68
+ }
69
+ }
70
+ };
71
+
72
+ exports.multipleSelectFilter = multipleSelectFilter;
@@ -0,0 +1,101 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var number = require('../../number.js');
6
+ var filterPredicate = require('../../constants/filter/filter-predicate.js');
7
+
8
+ /**
9
+ * Filter number
10
+ * @param {number} number
11
+ * @param {string} filter_predicate
12
+ * @param {number} filter_term
13
+ * @returns bool
14
+ */
15
+ var numberFilter = function numberFilter(number$1, _ref) {
16
+ var filter_predicate = _ref.filter_predicate,
17
+ filter_term = _ref.filter_term;
18
+ switch (filter_predicate) {
19
+ case filterPredicate.FILTER_PREDICATE_TYPE.EQUAL:
20
+ {
21
+ if (!filter_term && filter_term !== 0) {
22
+ return true;
23
+ }
24
+ if (!number$1 && number$1 !== 0) {
25
+ return false;
26
+ }
27
+ return number.isNumberEqual(filter_term, number$1);
28
+ }
29
+ case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EQUAL:
30
+ {
31
+ if (!filter_term && filter_term !== 0 || !number$1 && number$1 !== 0) {
32
+ return true;
33
+ }
34
+ return !number.isNumberEqual(filter_term, number$1);
35
+ }
36
+ case filterPredicate.FILTER_PREDICATE_TYPE.LESS:
37
+ {
38
+ if (!filter_term && filter_term !== 0) {
39
+ return true;
40
+ }
41
+ if (!number$1 && number$1 !== 0 || number.isNumberEqual(number$1, filter_term)) {
42
+ return false;
43
+ }
44
+ return number$1 < filter_term;
45
+ }
46
+ case filterPredicate.FILTER_PREDICATE_TYPE.GREATER:
47
+ {
48
+ if (!filter_term && filter_term !== 0) {
49
+ return true;
50
+ }
51
+ if (!number$1 && number$1 !== 0 || number.isNumberEqual(number$1, filter_term)) {
52
+ return false;
53
+ }
54
+ return number$1 > filter_term;
55
+ }
56
+ case filterPredicate.FILTER_PREDICATE_TYPE.LESS_OR_EQUAL:
57
+ {
58
+ if (!filter_term && filter_term !== 0) {
59
+ return true;
60
+ }
61
+ if (!number$1 && number$1 !== 0) {
62
+ return false;
63
+ }
64
+ if (number.isNumberEqual(number$1, filter_term)) {
65
+ return true;
66
+ }
67
+ return number$1 < filter_term;
68
+ }
69
+ case filterPredicate.FILTER_PREDICATE_TYPE.GREATER_OR_EQUAL:
70
+ {
71
+ if (!filter_term && filter_term !== 0) {
72
+ return true;
73
+ }
74
+ if (!number$1 && number$1 !== 0) {
75
+ return false;
76
+ }
77
+ return number.isNumberEqual(number$1, filter_term) || number$1 > filter_term;
78
+ }
79
+ case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
80
+ {
81
+ if (number$1 === 0) {
82
+ return false;
83
+ }
84
+ return !number$1 || typeof number$1 !== 'number';
85
+ }
86
+ case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
87
+ {
88
+ // must be a number
89
+ if (number$1 === 0) {
90
+ return true;
91
+ }
92
+ return !!(number$1 && typeof number$1 === 'number');
93
+ }
94
+ default:
95
+ {
96
+ return false;
97
+ }
98
+ }
99
+ };
100
+
101
+ exports.numberFilter = numberFilter;
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var filterPredicate = require('../../constants/filter/filter-predicate.js');
6
+
7
+ /**
8
+ * Filter single-select
9
+ * @param {string} optionId
10
+ * @param {string} filter_predicate
11
+ * @param {string|array} filter_term option id or option ids
12
+ * @returns bool
13
+ */
14
+ var singleSelectFilter = function singleSelectFilter(optionId, _ref) {
15
+ var filter_predicate = _ref.filter_predicate,
16
+ filter_term = _ref.filter_term;
17
+ switch (filter_predicate) {
18
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS:
19
+ {
20
+ return !filter_term || optionId === filter_term;
21
+ }
22
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_NOT:
23
+ {
24
+ return !filter_term || optionId !== filter_term;
25
+ }
26
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_ANY_OF:
27
+ {
28
+ return filter_term.length === 0 || filter_term.includes(optionId);
29
+ }
30
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_NONE_OF:
31
+ {
32
+ return filter_term.length === 0 || filter_term.indexOf(optionId) < 0;
33
+ }
34
+ case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
35
+ {
36
+ return !optionId;
37
+ }
38
+ case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
39
+ {
40
+ return !!optionId;
41
+ }
42
+ default:
43
+ {
44
+ return false;
45
+ }
46
+ }
47
+ };
48
+
49
+ exports.singleSelectFilter = singleSelectFilter;
@@ -0,0 +1,64 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var filterPredicate = require('../../constants/filter/filter-predicate.js');
6
+
7
+ /**
8
+ * Filter text
9
+ * @param {string} text
10
+ * @param {string} filter_predicate
11
+ * @param {string} filter_term
12
+ * @param {string} userId
13
+ * @returns bool
14
+ */
15
+ var textFilter = function textFilter(text, _ref, userId) {
16
+ var filter_predicate = _ref.filter_predicate,
17
+ filter_term = _ref.filter_term;
18
+ switch (filter_predicate) {
19
+ case filterPredicate.FILTER_PREDICATE_TYPE.CONTAINS:
20
+ {
21
+ if (!filter_term) {
22
+ return true;
23
+ }
24
+ if (!text) {
25
+ return false;
26
+ }
27
+ return text.toString().toLowerCase().indexOf(filter_term.toLowerCase()) > -1;
28
+ }
29
+ case filterPredicate.FILTER_PREDICATE_TYPE.NOT_CONTAIN:
30
+ {
31
+ if (!filter_term || !text) {
32
+ return true;
33
+ }
34
+ return text.toString().toLowerCase().indexOf(filter_term.toLowerCase()) < 0;
35
+ }
36
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS:
37
+ {
38
+ return !filter_term || text === filter_term;
39
+ }
40
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_NOT:
41
+ {
42
+ return !filter_term || text !== filter_term;
43
+ }
44
+ case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
45
+ {
46
+ return !text;
47
+ }
48
+ case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
49
+ {
50
+ return !!text;
51
+ }
52
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_CURRENT_USER_ID:
53
+ {
54
+ if (!userId) return false;
55
+ return text === userId;
56
+ }
57
+ default:
58
+ {
59
+ return false;
60
+ }
61
+ }
62
+ };
63
+
64
+ exports.textFilter = textFilter;