dtable-utils 0.0.1 → 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 +41 -10
  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 +42 -10
  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,301 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
+ var filter = require('../validate/filter.js');
7
+ var date = require('../date.js');
8
+ var index = require('../constants/filter/index.js');
9
+ var cellType = require('../constants/cell-type.js');
10
+ var formula = require('../constants/formula.js');
11
+ var filterModifier = require('../constants/filter/filter-modifier.js');
12
+
13
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
+
15
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
16
+
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
+ 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
+ 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
+
21
+ /**
22
+ * get filters which excludes incomplete
23
+ * @param {array} filters [{ column_key: '', filter_predicate: '' }]
24
+ * @param {array} columns
25
+ * @returns array
26
+ */
27
+ var getValidFilters = function getValidFilters(filters, columns) {
28
+ if (!Array.isArray(filters) || !Array.isArray(columns)) {
29
+ return [];
30
+ }
31
+ return filters.filter(function (filter$1) {
32
+ var _ValidateFilter$valid = filter.ValidateFilter.validate(filter$1, columns),
33
+ error_message = _ValidateFilter$valid.error_message;
34
+ return !error_message || error_message !== index.FILTER_ERR_MSG.INCOMPLETE_FILTER;
35
+ });
36
+ };
37
+
38
+ /**
39
+ * get filters without error messages
40
+ * @param {array} filters [{ column_key: '', filter_predicate: '' }]
41
+ * @param {array} columns
42
+ * @returns array
43
+ */
44
+ var getValidFiltersWithoutError = function getValidFiltersWithoutError(filters, columns) {
45
+ if (!Array.isArray(filters) || !Array.isArray(columns)) {
46
+ return [];
47
+ }
48
+ return filters.filter(function (filter$1) {
49
+ return !filter.ValidateFilter.validate(filter$1, columns).error_message;
50
+ });
51
+ };
52
+ var otherDate = function otherDate(filterTermModifier, filterTerm) {
53
+ var today = new Date();
54
+ var year = today.getFullYear();
55
+ var month = today.getMonth(); // use js month representation: 0 - 11
56
+ var day = today.getDate();
57
+ var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
58
+ // 0 1 2 3 4 5 6 7 8 9 10 11
59
+ days[1] = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) ? 29 : 28; // is leap year
60
+ switch (filterTermModifier) {
61
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.TODAY:
62
+ {
63
+ // today, should start at 0:00 and end at 24:00
64
+ return new Date(year, month, day, 0, 0, 0);
65
+ }
66
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.TOMORROW:
67
+ {
68
+ return new Date(year, month, day + 1);
69
+ }
70
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.YESTERDAY:
71
+ {
72
+ return new Date(year, month, day - 1);
73
+ }
74
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.ONE_WEEK_AGO:
75
+ {
76
+ return new Date(year, month, day - 7);
77
+ }
78
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.ONE_WEEK_FROM_NOW:
79
+ {
80
+ return new Date(year, month, day + 7);
81
+ }
82
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.ONE_MONTH_AGO:
83
+ {
84
+ var pastMonth = month - 1;
85
+ var monthDaysIndex = month === 0 ? 11 : pastMonth;
86
+ var currentDay = day > days[monthDaysIndex] ? days[monthDaysIndex] : day;
87
+ return new Date(year, pastMonth, currentDay);
88
+ }
89
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.ONE_MONTH_FROM_NOW:
90
+ {
91
+ var nextMonth = month + 1;
92
+ var _monthDaysIndex = month === 11 ? 0 : nextMonth;
93
+ var _currentDay = day > days[_monthDaysIndex] ? days[_monthDaysIndex] : day;
94
+ return new Date(year, nextMonth, _currentDay);
95
+ }
96
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.NUMBER_OF_DAYS_AGO:
97
+ {
98
+ return new Date(year, month, day - Number(filterTerm));
99
+ }
100
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.NUMBER_OF_DAYS_FROM_NOW:
101
+ {
102
+ return new Date(year, month, day + Number(filterTerm));
103
+ }
104
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE:
105
+ {
106
+ return new Date(filterTerm);
107
+ }
108
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.THE_PAST_WEEK:
109
+ {
110
+ var weekDay = today.getDay() !== 0 ? today.getDay() : 7;
111
+ return {
112
+ startDate: new Date(year, month, day - weekDay - 6),
113
+ endDate: new Date(year, month, day - weekDay)
114
+ };
115
+ }
116
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.THIS_WEEK:
117
+ {
118
+ var _weekDay = today.getDay() !== 0 ? today.getDay() : 7;
119
+ return {
120
+ startDate: new Date(year, month, day - _weekDay + 1),
121
+ endDate: new Date(year, month, day - _weekDay + 7)
122
+ };
123
+ }
124
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.THE_NEXT_WEEK:
125
+ {
126
+ var _weekDay2 = today.getDay() !== 0 ? today.getDay() : 7;
127
+ return {
128
+ startDate: new Date(year, month, day - _weekDay2 + 8),
129
+ endDate: new Date(year, month, day - _weekDay2 + 14)
130
+ };
131
+ }
132
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.THE_PAST_MONTH:
133
+ {
134
+ var _pastMonth = month - 1;
135
+ return {
136
+ startDate: new Date(year, _pastMonth, 1),
137
+ endDate: new Date(year, _pastMonth, days[month === 0 ? 11 : _pastMonth])
138
+ };
139
+ }
140
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.THIS_MONTH:
141
+ {
142
+ return {
143
+ startDate: new Date(year, month, 1),
144
+ endDate: new Date(year, month, days[month])
145
+ };
146
+ }
147
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.THE_NEXT_MONTH:
148
+ {
149
+ var _nextMonth = month + 1;
150
+ return {
151
+ startDate: new Date(year, _nextMonth, 1),
152
+ endDate: new Date(year, _nextMonth, month === 11 ? days[0] : days[_nextMonth])
153
+ };
154
+ }
155
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.THE_PAST_YEAR:
156
+ {
157
+ var pastYear = year - 1;
158
+ return {
159
+ startDate: new Date(pastYear, 0, 1),
160
+ // The computer's month starts at 0.
161
+ endDate: new Date(pastYear, 11, 31)
162
+ };
163
+ }
164
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.THIS_YEAR:
165
+ {
166
+ return {
167
+ startDate: new Date(year, 0, 1),
168
+ endDate: new Date(year, 11, 31)
169
+ };
170
+ }
171
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.THE_NEXT_YEAR:
172
+ {
173
+ var nextYear = year + 1;
174
+ return {
175
+ startDate: new Date(nextYear, 0, 1),
176
+ endDate: new Date(nextYear, 11, 31)
177
+ };
178
+ }
179
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.THE_NEXT_NUMBERS_OF_DAYS:
180
+ {
181
+ return {
182
+ startDate: new Date(year, month, day + 1, 0, 0, 0),
183
+ endDate: new Date(year, month, day + Number(filterTerm))
184
+ };
185
+ }
186
+ case filterModifier.FILTER_TERM_MODIFIER_TYPE.THE_PAST_NUMBERS_OF_DAYS:
187
+ {
188
+ return {
189
+ startDate: new Date(year, month, day - Number(filterTerm)),
190
+ endDate: new Date(year, month, day, 0, 0, 0)
191
+ };
192
+ }
193
+ default:
194
+ {
195
+ return {};
196
+ }
197
+ }
198
+ };
199
+ var getFormattedFilterOtherDate = function getFormattedFilterOtherDate(filterTermModifier, filterTerm) {
200
+ var _otherDate = otherDate(filterTermModifier, filterTerm);
201
+ if (EXACT_DATE_TERM_MODIFIER_TYPES.includes(filterTermModifier)) {
202
+ return date.DateUtils.format(_otherDate);
203
+ }
204
+ var _ref = _otherDate || {},
205
+ startDate = _ref.startDate,
206
+ endDate = _ref.endDate;
207
+ return {
208
+ startDate: date.DateUtils.format(startDate),
209
+ endDate: date.DateUtils.format(endDate)
210
+ };
211
+ };
212
+ var getFormattedFilter = function getFormattedFilter(filter, column) {
213
+ var filter_term = filter.filter_term,
214
+ filter_term_modifier = filter.filter_term_modifier;
215
+ var columnType = column.type,
216
+ columnData = column.data;
217
+ var formattedFilter = filter;
218
+ switch (columnType) {
219
+ case cellType.CellType.FORMULA:
220
+ case cellType.CellType.LINK_FORMULA:
221
+ {
222
+ var result_type = columnData.result_type,
223
+ array_type = columnData.array_type,
224
+ array_data = columnData.array_data;
225
+ if (result_type === formula.FORMULA_RESULT_TYPE.DATE) {
226
+ formattedFilter.other_date = getFormattedFilterOtherDate(filter_term_modifier, filter_term);
227
+ } else if (result_type === formula.FORMULA_RESULT_TYPE.ARRAY) {
228
+ var linkedColumn = {
229
+ type: array_type,
230
+ data: array_data
231
+ };
232
+ formattedFilter.linked_column = linkedColumn;
233
+ formattedFilter = getFormattedFilter(formattedFilter, linkedColumn);
234
+ }
235
+ break;
236
+ }
237
+ case cellType.CellType.DATE:
238
+ case cellType.CellType.CTIME:
239
+ case cellType.CellType.MTIME:
240
+ {
241
+ formattedFilter.other_date = getFormattedFilterOtherDate(filter_term_modifier, filter_term);
242
+ break;
243
+ }
244
+ case cellType.CellType.LINK:
245
+ {
246
+ var _ref2 = columnData || {},
247
+ _array_type = _ref2.array_type,
248
+ _array_data = _ref2.array_data;
249
+ var _linkedColumn = {
250
+ type: _array_type,
251
+ data: _array_data
252
+ };
253
+ var filterColumnData = _objectSpread(_objectSpread({}, columnData), {}, {
254
+ result_type: formula.FORMULA_RESULT_TYPE.ARRAY
255
+ });
256
+ var filterColumn = _objectSpread(_objectSpread({}, column), {}, {
257
+ data: filterColumnData
258
+ });
259
+ formattedFilter.column = filterColumn;
260
+ formattedFilter.linked_column = _linkedColumn;
261
+ formattedFilter = getFormattedFilter(formattedFilter, _linkedColumn);
262
+ break;
263
+ }
264
+ }
265
+ return formattedFilter;
266
+ };
267
+ var getFormattedFilters = function getFormattedFilters(filters) {
268
+ return filters.map(function (filter) {
269
+ return getFormattedFilter(filter, filter.column);
270
+ });
271
+ };
272
+ var deleteInvalidFilter = function deleteInvalidFilter(filters, columns) {
273
+ var cleanFilters = [];
274
+ filters.forEach(function (filter$1) {
275
+ var column_key = filter$1.column_key;
276
+ var _ValidateFilter$valid2 = filter.ValidateFilter.validate(filter$1, columns),
277
+ error_message = _ValidateFilter$valid2.error_message;
278
+ if (error_message) {
279
+ if (error_message === index.FILTER_ERR_MSG.INCOMPLETE_FILTER) {
280
+ return;
281
+ }
282
+ throw new Error(error_message);
283
+ }
284
+ var filterColumn = columns.find(function (column) {
285
+ return column.key === column_key;
286
+ });
287
+ var newFilter = _objectSpread(_objectSpread({}, filter$1), {}, {
288
+ column: filterColumn
289
+ });
290
+ cleanFilters.push(newFilter);
291
+ });
292
+ return cleanFilters;
293
+ };
294
+
295
+ exports.deleteInvalidFilter = deleteInvalidFilter;
296
+ exports.getFormattedFilter = getFormattedFilter;
297
+ exports.getFormattedFilterOtherDate = getFormattedFilterOtherDate;
298
+ exports.getFormattedFilters = getFormattedFilters;
299
+ exports.getValidFilters = getValidFilters;
300
+ exports.getValidFiltersWithoutError = getValidFiltersWithoutError;
301
+ exports.otherDate = otherDate;
@@ -0,0 +1,86 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var cellValue = require('../../cell-value-get/cell-value.js');
6
+ var number = require('../../column/number.js');
7
+ var checkbox = require('./checkbox.js');
8
+ var collaborator = require('./collaborator.js');
9
+ var date = require('./date.js');
10
+ var text = require('./text.js');
11
+ var multipleSelect = require('./multiple-select.js');
12
+ var number$1 = require('./number.js');
13
+ var cellType = require('../../constants/cell-type.js');
14
+ var column = require('../../constants/column.js');
15
+ require('../../constants/filter/filter-column-options.js');
16
+ require('../../constants/filter/filter-modifier.js');
17
+ var filterPredicate = require('../../constants/filter/filter-predicate.js');
18
+ require('../../constants/filter/filter-is-within.js');
19
+
20
+ var TRUE_VALUE = [true, 'true'];
21
+ var filterByArrayType = function filterByArrayType(cellValue$1, filter, _ref) {
22
+ var username = _ref.username,
23
+ userId = _ref.userId;
24
+ var column$1 = filter.column,
25
+ linked_column = filter.linked_column;
26
+ var filter_predicate = filter.filter_predicate;
27
+ if (Array.isArray(cellValue$1)) {
28
+ if (filter_predicate === filterPredicate.FILTER_PREDICATE_TYPE.EMPTY) {
29
+ return cellValue$1.length === 0;
30
+ }
31
+ if (filter_predicate === filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY) {
32
+ return cellValue$1.length > 0;
33
+ }
34
+ }
35
+ if (!linked_column) {
36
+ return text.textFilter('', filter, userId);
37
+ }
38
+ var data = column$1.data;
39
+ var linkedColumnType = linked_column.type;
40
+ if (linkedColumnType === cellType.CellType.BOOL || linkedColumnType === cellType.CellType.CHECKBOX) {
41
+ var normalizedCellValue = cellValue$1;
42
+ if (Array.isArray(cellValue$1)) {
43
+ normalizedCellValue = cellValue$1[0];
44
+ }
45
+ normalizedCellValue = TRUE_VALUE.includes(normalizedCellValue);
46
+ return checkbox.checkboxFilter(normalizedCellValue, filter);
47
+ }
48
+ if (linkedColumnType === cellType.CellType.SINGLE_SELECT) {
49
+ var _normalizedCellValue = cellValue$1;
50
+ if (cellValue$1 && !Array.isArray(cellValue$1)) {
51
+ _normalizedCellValue = [cellValue$1];
52
+ }
53
+ return multipleSelect.multipleSelectFilter(_normalizedCellValue, filter);
54
+ }
55
+ if (linkedColumnType === cellType.CellType.MULTIPLE_SELECT) {
56
+ return multipleSelect.multipleSelectFilter(cellValue$1, filter);
57
+ }
58
+ if (number.isNumericColumn({
59
+ type: linkedColumnType
60
+ })) {
61
+ var _normalizedCellValue2 = cellValue$1;
62
+ if (Array.isArray(cellValue$1)) {
63
+ var cellValueLength = cellValue$1.length;
64
+ if (cellValueLength === 0) {
65
+ _normalizedCellValue2 = '';
66
+ } else if (cellValueLength === 1) {
67
+ _normalizedCellValue2 = cellValue$1[0];
68
+ }
69
+ }
70
+ return number$1.numberFilter(_normalizedCellValue2, filter);
71
+ }
72
+ if (column.DATE_COLUMN_OPTIONS.includes(linkedColumnType)) {
73
+ var newCellValue = cellValue$1;
74
+ if (Array.isArray(cellValue$1)) {
75
+ newCellValue = String(cellValue$1);
76
+ }
77
+ return date.dateFilter(newCellValue, filter);
78
+ }
79
+ if (column.COLLABORATOR_COLUMN_TYPES.includes(linkedColumnType)) {
80
+ return collaborator.collaboratorFilter(cellValue$1, filter, username);
81
+ }
82
+ var sCellValue = cellValue.getFormulaDisplayString(cellValue$1, data) || '';
83
+ return text.textFilter(sCellValue, filter, userId);
84
+ };
85
+
86
+ exports.filterByArrayType = filterByArrayType;
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var checkboxFilter = function checkboxFilter(cellValue, _ref) {
6
+ var filter_term = _ref.filter_term;
7
+ var filterTerm = filter_term || false;
8
+ var normalizedCellValue = cellValue || false;
9
+ return normalizedCellValue === filterTerm;
10
+ };
11
+
12
+ exports.checkboxFilter = checkboxFilter;
@@ -0,0 +1,75 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
6
+ require('../../constants/filter/filter-column-options.js');
7
+ require('../../constants/filter/filter-modifier.js');
8
+ var filterPredicate = require('../../constants/filter/filter-predicate.js');
9
+ require('../../constants/filter/filter-is-within.js');
10
+
11
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
+
13
+ var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
14
+
15
+ var collaboratorFilter = function collaboratorFilter(cellValue, _ref, username) {
16
+ var filter_predicate = _ref.filter_predicate,
17
+ filter_term = _ref.filter_term;
18
+ switch (filter_predicate) {
19
+ case filterPredicate.FILTER_PREDICATE_TYPE.HAS_ANY_OF:
20
+ {
21
+ return !Array.isArray(filter_term) || filter_term.length === 0 || Array.isArray(cellValue) && filter_term.some(function (email) {
22
+ return cellValue.includes(email);
23
+ });
24
+ }
25
+ case filterPredicate.FILTER_PREDICATE_TYPE.HAS_ALL_OF:
26
+ {
27
+ return !Array.isArray(filter_term) || filter_term.length === 0 || Array.isArray(cellValue) && filter_term.every(function (email) {
28
+ return cellValue.includes(email);
29
+ });
30
+ }
31
+ case filterPredicate.FILTER_PREDICATE_TYPE.HAS_NONE_OF:
32
+ {
33
+ if (!Array.isArray(filter_term) || filter_term.length === 0 || !Array.isArray(cellValue) || cellValue.length === 0) {
34
+ return true;
35
+ }
36
+ return filter_term.every(function (email) {
37
+ return cellValue.indexOf(email) < 0;
38
+ });
39
+ }
40
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_EXACTLY:
41
+ {
42
+ if (!Array.isArray(filter_term) || filter_term.length === 0) {
43
+ return true;
44
+ }
45
+ if (!Array.isArray(cellValue) || cellValue.length === 0) {
46
+ return false;
47
+ }
48
+ var nonReptCellValue = _toConsumableArray__default["default"](new Set(cellValue));
49
+ if (nonReptCellValue.length !== filter_term.length) {
50
+ return false;
51
+ }
52
+ return filter_term.every(function (email) {
53
+ return nonReptCellValue.includes(email);
54
+ });
55
+ }
56
+ case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
57
+ {
58
+ return !Array.isArray(cellValue) || cellValue.length === 0;
59
+ }
60
+ case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
61
+ {
62
+ return Array.isArray(cellValue) && cellValue.length > 0;
63
+ }
64
+ case filterPredicate.FILTER_PREDICATE_TYPE.INCLUDE_ME:
65
+ {
66
+ return Array.isArray(cellValue) && cellValue.indexOf(username) > -1;
67
+ }
68
+ default:
69
+ {
70
+ return false;
71
+ }
72
+ }
73
+ };
74
+
75
+ exports.collaboratorFilter = collaboratorFilter;
@@ -0,0 +1,54 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('../../constants/filter/filter-column-options.js');
6
+ require('../../constants/filter/filter-modifier.js');
7
+ var filterPredicate = require('../../constants/filter/filter-predicate.js');
8
+ require('../../constants/filter/filter-is-within.js');
9
+
10
+ var creatorFilter = function creatorFilter(cellValue, _ref, username) {
11
+ var filter_predicate = _ref.filter_predicate,
12
+ filter_term = _ref.filter_term;
13
+ switch (filter_predicate) {
14
+ case filterPredicate.FILTER_PREDICATE_TYPE.CONTAINS:
15
+ {
16
+ if (!Array.isArray(filter_term)) {
17
+ return true;
18
+ }
19
+ if (!cellValue) {
20
+ return false;
21
+ }
22
+ return filter_term.findIndex(function (item) {
23
+ return item === cellValue;
24
+ }) > -1;
25
+ }
26
+ case filterPredicate.FILTER_PREDICATE_TYPE.NOT_CONTAIN:
27
+ {
28
+ if (!Array.isArray(filter_term) || !cellValue) {
29
+ return true;
30
+ }
31
+ return filter_term.findIndex(function (item) {
32
+ return item === cellValue;
33
+ }) < 0;
34
+ }
35
+ case filterPredicate.FILTER_PREDICATE_TYPE.INCLUDE_ME:
36
+ {
37
+ return cellValue === username;
38
+ }
39
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS:
40
+ {
41
+ return !Array.isArray(filter_term) || cellValue === filter_term[0];
42
+ }
43
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_NOT:
44
+ {
45
+ return !Array.isArray(filter_term) || cellValue !== filter_term[0];
46
+ }
47
+ default:
48
+ {
49
+ return false;
50
+ }
51
+ }
52
+ };
53
+
54
+ exports.creatorFilter = creatorFilter;
@@ -0,0 +1,63 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var date = require('../../date.js');
6
+ require('../../constants/filter/filter-column-options.js');
7
+ var filterModifier = require('../../constants/filter/filter-modifier.js');
8
+ var filterPredicate = require('../../constants/filter/filter-predicate.js');
9
+ require('../../constants/filter/filter-is-within.js');
10
+
11
+ var dateFilter = function dateFilter(cellValue, _ref) {
12
+ var filter_predicate = _ref.filter_predicate,
13
+ filter_term_modifier = _ref.filter_term_modifier,
14
+ filter_term = _ref.filter_term,
15
+ other_date = _ref.other_date;
16
+ switch (filter_predicate) {
17
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS:
18
+ {
19
+ return filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term || date.DateUtils.format(cellValue) === other_date;
20
+ }
21
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_WITHIN:
22
+ {
23
+ var startDate = other_date.startDate,
24
+ endDate = other_date.endDate;
25
+ var currentDate = date.DateUtils.format(cellValue);
26
+ return filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term || !!cellValue && currentDate >= startDate && currentDate <= endDate;
27
+ }
28
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_BEFORE:
29
+ {
30
+ return filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term || !!cellValue && date.DateUtils.getValidDate(cellValue) && date.DateUtils.format(cellValue) < other_date;
31
+ }
32
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_AFTER:
33
+ {
34
+ return filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term || !!cellValue && date.DateUtils.getValidDate(cellValue) && date.DateUtils.format(cellValue) > other_date;
35
+ }
36
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_ON_OR_BEFORE:
37
+ {
38
+ return filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term || !!cellValue && date.DateUtils.getValidDate(cellValue) && date.DateUtils.format(cellValue) <= other_date;
39
+ }
40
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_ON_OR_AFTER:
41
+ {
42
+ return filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term || !!cellValue && date.DateUtils.getValidDate(cellValue) && date.DateUtils.format(cellValue) >= other_date;
43
+ }
44
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_NOT:
45
+ {
46
+ return filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term || !cellValue || date.DateUtils.format(cellValue) !== other_date;
47
+ }
48
+ case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
49
+ {
50
+ return cellValue && date.DateUtils.getValidDate(cellValue) ? false : true;
51
+ }
52
+ case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
53
+ {
54
+ return cellValue && date.DateUtils.getValidDate(cellValue) ? true : false;
55
+ }
56
+ default:
57
+ {
58
+ return false;
59
+ }
60
+ }
61
+ };
62
+
63
+ exports.dateFilter = dateFilter;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('../../constants/filter/filter-column-options.js');
6
+ require('../../constants/filter/filter-modifier.js');
7
+ var filterPredicate = require('../../constants/filter/filter-predicate.js');
8
+ require('../../constants/filter/filter-is-within.js');
9
+
10
+ var digitalSignFilter = function digitalSignFilter(cellValue, _ref) {
11
+ var filter_predicate = _ref.filter_predicate;
12
+ switch (filter_predicate) {
13
+ case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
14
+ {
15
+ if (!cellValue) return true;
16
+ return !cellValue.username || !cellValue.sign_time || !cellValue.sign_image_url;
17
+ }
18
+ case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
19
+ {
20
+ if (!cellValue) return false;
21
+ return cellValue.username && cellValue.sign_time && cellValue.sign_image_url ? true : false;
22
+ }
23
+ default:
24
+ {
25
+ return false;
26
+ }
27
+ }
28
+ };
29
+
30
+ exports.digitalSignFilter = digitalSignFilter;
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('../../constants/filter/filter-column-options.js');
6
+ require('../../constants/filter/filter-modifier.js');
7
+ var filterPredicate = require('../../constants/filter/filter-predicate.js');
8
+ require('../../constants/filter/filter-is-within.js');
9
+
10
+ var fileFilter = function fileFilter(cellValue, _ref) {
11
+ var filter_predicate = _ref.filter_predicate;
12
+ switch (filter_predicate) {
13
+ case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
14
+ {
15
+ return cellValue && cellValue.length > 0 ? false : true;
16
+ }
17
+ case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
18
+ {
19
+ return cellValue && cellValue.length > 0 ? true : false;
20
+ }
21
+ default:
22
+ {
23
+ return false;
24
+ }
25
+ }
26
+ };
27
+
28
+ exports.fileFilter = fileFilter;