dtable-utils 0.0.3-beta.1 → 0.0.4-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -3
- package/dist/index.js +1 -1
- package/es/cell-value-get/cell-value.js +82 -60
- package/es/cell-value-get/collaborator.js +9 -2
- package/es/cell-value-get/duration.js +3 -3
- package/es/cell-value-get/geolocation.js +23 -25
- package/es/cell-value-get/number.js +19 -11
- package/es/cell-value-get/option.js +18 -4
- package/es/cell-value-get/rate.js +5 -0
- package/es/cell-value-set/date.js +9 -3
- package/es/{column/color.js → color/column-color.js} +25 -3
- package/es/{row/color.js → color/row-color.js} +12 -1
- package/es/column/option.js +37 -7
- package/es/common.js +23 -2
- package/es/constants/formula.js +2 -1
- package/es/filter/core.js +61 -26
- package/es/filter/filter-column/array.js +35 -30
- package/es/filter/filter-column/checkbox.js +9 -3
- package/es/filter/filter-column/collaborator.js +20 -15
- package/es/filter/filter-column/creator.js +22 -13
- package/es/filter/filter-column/date.js +57 -14
- package/es/filter/filter-column/digital-sign.js +11 -8
- package/es/filter/filter-column/file.js +9 -6
- package/es/filter/filter-column/formula.js +16 -8
- package/es/filter/filter-column/geolocation.js +12 -7
- package/es/filter/filter-column/link.js +10 -2
- package/es/filter/filter-column/long-text.js +10 -7
- package/es/filter/filter-column/multiple-select.js +17 -13
- package/es/filter/filter-column/number.js +25 -21
- package/es/filter/filter-column/single-select.js +14 -10
- package/es/filter/filter-column/text.js +18 -13
- package/es/filter/filter-row.js +35 -0
- package/es/group/core.js +15 -6
- package/es/group/group-row.js +39 -3
- package/es/index.js +10 -10
- package/es/link/core.js +14 -14
- package/es/number.js +11 -3
- package/es/row/core.js +20 -1
- package/es/sort/core.js +66 -7
- package/es/sort/sort-column/array.js +39 -30
- package/es/sort/sort-column/checkbox.js +12 -5
- package/es/sort/sort-column/collaborator.js +11 -4
- package/es/sort/sort-column/date.js +12 -12
- package/es/sort/sort-column/formula.js +21 -12
- package/es/sort/sort-column/link.js +18 -9
- package/es/sort/sort-column/multiple-select.js +26 -26
- package/es/sort/sort-column/number.js +15 -8
- package/es/sort/sort-column/single-select.js +16 -8
- package/es/sort/sort-column/text.js +24 -10
- package/es/sort/sort-row.js +22 -38
- package/es/table/column.js +2 -2
- package/es/table/core.js +2 -2
- package/es/table/row.js +4 -4
- package/es/view/core.js +20 -21
- package/es/view/formula.js +35 -31
- package/es/view/group.js +4 -4
- package/es/view/summaries.js +17 -29
- package/lib/cell-value-get/cell-value.js +82 -60
- package/lib/cell-value-get/collaborator.js +9 -2
- package/lib/cell-value-get/duration.js +4 -2
- package/lib/cell-value-get/geolocation.js +23 -25
- package/lib/cell-value-get/number.js +19 -11
- package/lib/cell-value-get/option.js +18 -4
- package/lib/cell-value-get/rate.js +5 -0
- package/lib/cell-value-set/date.js +9 -3
- package/lib/{column/color.js → color/column-color.js} +31 -9
- package/lib/{row/color.js → color/row-color.js} +12 -1
- package/lib/column/option.js +37 -7
- package/lib/common.js +23 -1
- package/lib/constants/formula.js +2 -0
- package/lib/filter/core.js +61 -26
- package/lib/filter/filter-column/array.js +35 -30
- package/lib/filter/filter-column/checkbox.js +9 -3
- package/lib/filter/filter-column/collaborator.js +20 -15
- package/lib/filter/filter-column/creator.js +22 -13
- package/lib/filter/filter-column/date.js +57 -14
- package/lib/filter/filter-column/digital-sign.js +11 -8
- package/lib/filter/filter-column/file.js +9 -6
- package/lib/filter/filter-column/formula.js +16 -8
- package/lib/filter/filter-column/geolocation.js +12 -7
- package/lib/filter/filter-column/link.js +10 -2
- package/lib/filter/filter-column/long-text.js +10 -7
- package/lib/filter/filter-column/multiple-select.js +17 -13
- package/lib/filter/filter-column/number.js +25 -21
- package/lib/filter/filter-column/single-select.js +14 -10
- package/lib/filter/filter-column/text.js +18 -13
- package/lib/filter/filter-row.js +35 -0
- package/lib/group/core.js +15 -6
- package/lib/group/group-row.js +39 -3
- package/lib/index.js +47 -45
- package/lib/link/core.js +14 -14
- package/lib/number.js +11 -3
- package/lib/row/core.js +20 -1
- package/lib/sort/core.js +71 -6
- package/lib/sort/sort-column/array.js +39 -30
- package/lib/sort/sort-column/checkbox.js +12 -5
- package/lib/sort/sort-column/collaborator.js +11 -4
- package/lib/sort/sort-column/date.js +12 -12
- package/lib/sort/sort-column/formula.js +21 -12
- package/lib/sort/sort-column/link.js +18 -9
- package/lib/sort/sort-column/multiple-select.js +25 -26
- package/lib/sort/sort-column/number.js +15 -8
- package/lib/sort/sort-column/single-select.js +16 -8
- package/lib/sort/sort-column/text.js +24 -10
- package/lib/sort/sort-row.js +21 -42
- package/lib/table/column.js +2 -2
- package/lib/table/core.js +2 -2
- package/lib/table/row.js +4 -4
- package/lib/view/core.js +20 -21
- package/lib/view/formula.js +35 -31
- package/lib/view/group.js +4 -4
- package/lib/view/summaries.js +17 -29
- package/package.json +1 -1
- package/es/table/index.js +0 -14
- package/lib/table/index.js +0 -18
package/lib/column/option.js
CHANGED
|
@@ -15,6 +15,12 @@ var getColumnOptions = function getColumnOptions(column) {
|
|
|
15
15
|
}
|
|
16
16
|
return column.data.options;
|
|
17
17
|
};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* generate unique option id
|
|
21
|
+
* @param {array} options e.g. [{ id, ... }, ...]
|
|
22
|
+
* @returns generated option id, string
|
|
23
|
+
*/
|
|
18
24
|
var generateOptionID = function generateOptionID(options) {
|
|
19
25
|
if (options.length === 1) return String(Math.floor(Math.random() * Math.pow(10, 6)));
|
|
20
26
|
var optionID;
|
|
@@ -57,22 +63,38 @@ var getRandomOptionColor = function getRandomOptionColor(options) {
|
|
|
57
63
|
}
|
|
58
64
|
return defaultOptions[colorIdx] || defaultOptions[0];
|
|
59
65
|
};
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* generate option
|
|
69
|
+
* @param {array} options e.g. [{ id, ... }, ...]
|
|
70
|
+
* @param {string} optionName
|
|
71
|
+
* @param {string} optionColor used to find system support color options. The new color option will be generated if not found by "optionColor" or not supported
|
|
72
|
+
* @returns generated option, object
|
|
73
|
+
*/
|
|
60
74
|
var createOption = function createOption(options, optionName) {
|
|
61
|
-
var
|
|
75
|
+
var optionColor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
62
76
|
var id = generateOptionID(options);
|
|
63
|
-
var
|
|
64
|
-
return
|
|
77
|
+
var colors = optionColor && selectOption.SELECT_OPTION_COLORS.find(function (systemColor) {
|
|
78
|
+
return systemColor.COLOR === optionColor;
|
|
65
79
|
});
|
|
66
|
-
if (!
|
|
67
|
-
|
|
80
|
+
if (!colors) {
|
|
81
|
+
colors = getRandomOptionColor(options);
|
|
68
82
|
}
|
|
69
83
|
return {
|
|
70
84
|
id: id,
|
|
71
85
|
name: optionName,
|
|
72
|
-
color:
|
|
73
|
-
textColor:
|
|
86
|
+
color: colors.COLOR,
|
|
87
|
+
textColor: colors.TEXT_COLOR
|
|
74
88
|
};
|
|
75
89
|
};
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Generate cell option by name.
|
|
93
|
+
* Return the option id if exist, otherwise generate a new option
|
|
94
|
+
* @param {array} options e.g. [{ id, ... }, ...]
|
|
95
|
+
* @param {string} optionName used as the option name
|
|
96
|
+
* @returns option id and option, object
|
|
97
|
+
*/
|
|
76
98
|
var generatorCellOption = function generatorCellOption(options, optionName) {
|
|
77
99
|
var existOption = options.find(function (option) {
|
|
78
100
|
return option.name === optionName;
|
|
@@ -88,6 +110,14 @@ var generatorCellOption = function generatorCellOption(options, optionName) {
|
|
|
88
110
|
selectedOptionId: newOption.id
|
|
89
111
|
};
|
|
90
112
|
};
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Generate cell options by names.
|
|
116
|
+
* Return the options ids if exist, otherwise generate new options
|
|
117
|
+
* @param {array} options e.g. [{ id, ... }, ...]
|
|
118
|
+
* @param {array} optionNames used as the options names
|
|
119
|
+
* @returns options ids and options, object
|
|
120
|
+
*/
|
|
91
121
|
var generatorCellOptions = function generatorCellOptions(options, optionNames) {
|
|
92
122
|
var cellOptions = [];
|
|
93
123
|
var selectedOptionIds = [];
|
package/lib/common.js
CHANGED
|
@@ -22,13 +22,35 @@ var generatorBase64Code = function generatorBase64Code() {
|
|
|
22
22
|
}
|
|
23
23
|
return key;
|
|
24
24
|
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Check whether the given value is empty
|
|
28
|
+
* @param {any} val
|
|
29
|
+
* @returns bool
|
|
30
|
+
*/
|
|
25
31
|
var isEmpty = function isEmpty(val) {
|
|
26
|
-
if (val
|
|
32
|
+
if (val === null || val === undefined) return true;
|
|
27
33
|
if (val.length !== undefined) return val.length === 0;
|
|
28
34
|
if (val instanceof Date) return false;
|
|
29
35
|
if (_typeof__default["default"](val) === 'object') return Object.keys(val).length === 0;
|
|
30
36
|
return false;
|
|
31
37
|
};
|
|
32
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Check whether the object is empty.
|
|
41
|
+
* The true will be returned if the "obj" is invalid.
|
|
42
|
+
* @param {object} obj
|
|
43
|
+
* @returns bool
|
|
44
|
+
*/
|
|
45
|
+
var isEmptyObject = function isEmptyObject(obj) {
|
|
46
|
+
var name;
|
|
47
|
+
// eslint-disable-next-line
|
|
48
|
+
for (name in obj) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
return true;
|
|
52
|
+
};
|
|
53
|
+
|
|
33
54
|
exports.generatorBase64Code = generatorBase64Code;
|
|
34
55
|
exports.isEmpty = isEmpty;
|
|
56
|
+
exports.isEmptyObject = isEmptyObject;
|
package/lib/constants/formula.js
CHANGED
|
@@ -18,6 +18,8 @@ var FORMULA_RESULT_TYPE = {
|
|
|
18
18
|
ARRAY: 'array'
|
|
19
19
|
};
|
|
20
20
|
var FORMULA_COLUMN_TYPES_MAP = (_FORMULA_COLUMN_TYPES = {}, _defineProperty__default["default"](_FORMULA_COLUMN_TYPES, cellType.CellType.FORMULA, true), _defineProperty__default["default"](_FORMULA_COLUMN_TYPES, cellType.CellType.LINK_FORMULA, true), _FORMULA_COLUMN_TYPES);
|
|
21
|
+
var DISPLAY_INTERNAL_ERRORS = ['#ERROR!', '#DIV/0!', '#NAME?', '#N/A', '#NULL!', '#NUM!', '#REF!', '#VALUE!', '#GETTING_DATA'];
|
|
21
22
|
|
|
23
|
+
exports.DISPLAY_INTERNAL_ERRORS = DISPLAY_INTERNAL_ERRORS;
|
|
22
24
|
exports.FORMULA_COLUMN_TYPES_MAP = FORMULA_COLUMN_TYPES_MAP;
|
|
23
25
|
exports.FORMULA_RESULT_TYPE = FORMULA_RESULT_TYPE;
|
package/lib/filter/core.js
CHANGED
|
@@ -19,10 +19,10 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
19
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
20
|
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
23
|
-
* @param {array} filters [{ column_key
|
|
22
|
+
* Get filters which excludes incomplete
|
|
23
|
+
* @param {array} filters e.g. [{ column_key, filter_predicate, ... }]
|
|
24
24
|
* @param {array} columns
|
|
25
|
-
* @returns array
|
|
25
|
+
* @returns valid filters, array
|
|
26
26
|
*/
|
|
27
27
|
var getValidFilters = function getValidFilters(filters, columns) {
|
|
28
28
|
if (!Array.isArray(filters) || !Array.isArray(columns)) {
|
|
@@ -36,10 +36,10 @@ var getValidFilters = function getValidFilters(filters, columns) {
|
|
|
36
36
|
};
|
|
37
37
|
|
|
38
38
|
/**
|
|
39
|
-
*
|
|
40
|
-
* @param {array} filters [{ column_key
|
|
39
|
+
* Get filters without error messages
|
|
40
|
+
* @param {array} filters e.g. [{ column_key, filter_predicate, ... }]
|
|
41
41
|
* @param {array} columns
|
|
42
|
-
* @returns array
|
|
42
|
+
* @returns valid filters, array
|
|
43
43
|
*/
|
|
44
44
|
var getValidFiltersWithoutError = function getValidFiltersWithoutError(filters, columns) {
|
|
45
45
|
if (!Array.isArray(filters) || !Array.isArray(columns)) {
|
|
@@ -49,13 +49,21 @@ var getValidFiltersWithoutError = function getValidFiltersWithoutError(filters,
|
|
|
49
49
|
return !filter.ValidateFilter.validate(filter$1, columns).error_message;
|
|
50
50
|
});
|
|
51
51
|
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Generate date for filter
|
|
55
|
+
* @param {string} filterTermModifier
|
|
56
|
+
* @param {any} filterTerm
|
|
57
|
+
* @returns date | date range, object
|
|
58
|
+
*/
|
|
52
59
|
var otherDate = function otherDate(filterTermModifier, filterTerm) {
|
|
53
60
|
var today = new Date();
|
|
54
61
|
var year = today.getFullYear();
|
|
55
62
|
var month = today.getMonth(); // use js month representation: 0 - 11
|
|
56
63
|
var day = today.getDate();
|
|
57
|
-
|
|
64
|
+
|
|
58
65
|
// 0 1 2 3 4 5 6 7 8 9 10 11
|
|
66
|
+
var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
|
59
67
|
days[1] = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) ? 29 : 28; // is leap year
|
|
60
68
|
switch (filterTermModifier) {
|
|
61
69
|
case filterModifier.FILTER_TERM_MODIFIER_TYPE.TODAY:
|
|
@@ -196,19 +204,32 @@ var otherDate = function otherDate(filterTermModifier, filterTerm) {
|
|
|
196
204
|
}
|
|
197
205
|
}
|
|
198
206
|
};
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Generate formatted date for filter
|
|
210
|
+
* @param {string} filterTermModifier
|
|
211
|
+
* @param {any} filterTerm
|
|
212
|
+
* @returns formatted date | date range, object
|
|
213
|
+
*/
|
|
199
214
|
var getFormattedFilterOtherDate = function getFormattedFilterOtherDate(filterTermModifier, filterTerm) {
|
|
200
215
|
var _otherDate = otherDate(filterTermModifier, filterTerm);
|
|
201
216
|
if (EXACT_DATE_TERM_MODIFIER_TYPES.includes(filterTermModifier)) {
|
|
202
217
|
return date.DateUtils.format(_otherDate);
|
|
203
218
|
}
|
|
204
|
-
var
|
|
205
|
-
|
|
206
|
-
endDate = _ref.endDate;
|
|
219
|
+
var startDate = _otherDate.startDate,
|
|
220
|
+
endDate = _otherDate.endDate;
|
|
207
221
|
return {
|
|
208
|
-
startDate: date.DateUtils.format(startDate),
|
|
209
|
-
endDate: date.DateUtils.format(endDate)
|
|
222
|
+
startDate: startDate ? date.DateUtils.format(startDate) : '',
|
|
223
|
+
endDate: endDate ? date.DateUtils.format(endDate) : ''
|
|
210
224
|
};
|
|
211
225
|
};
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Format filter with other_date, linked_column etc.
|
|
229
|
+
* @param {object} filter e.g. { filter_term, filter_term_modifier, ... }
|
|
230
|
+
* @param {object} column
|
|
231
|
+
* @returns formatted filter
|
|
232
|
+
*/
|
|
212
233
|
var getFormattedFilter = function getFormattedFilter(filter, column) {
|
|
213
234
|
var filter_term = filter.filter_term,
|
|
214
235
|
filter_term_modifier = filter.filter_term_modifier;
|
|
@@ -224,7 +245,8 @@ var getFormattedFilter = function getFormattedFilter(filter, column) {
|
|
|
224
245
|
array_data = columnData.array_data;
|
|
225
246
|
if (result_type === formula.FORMULA_RESULT_TYPE.DATE) {
|
|
226
247
|
formattedFilter.other_date = getFormattedFilterOtherDate(filter_term_modifier, filter_term);
|
|
227
|
-
}
|
|
248
|
+
}
|
|
249
|
+
if (result_type === formula.FORMULA_RESULT_TYPE.ARRAY) {
|
|
228
250
|
var linkedColumn = {
|
|
229
251
|
type: array_type,
|
|
230
252
|
data: array_data
|
|
@@ -243,9 +265,9 @@ var getFormattedFilter = function getFormattedFilter(filter, column) {
|
|
|
243
265
|
}
|
|
244
266
|
case cellType.CellType.LINK:
|
|
245
267
|
{
|
|
246
|
-
var
|
|
247
|
-
_array_type =
|
|
248
|
-
_array_data =
|
|
268
|
+
var _ref = columnData || {},
|
|
269
|
+
_array_type = _ref.array_type,
|
|
270
|
+
_array_data = _ref.array_data;
|
|
249
271
|
var _linkedColumn = {
|
|
250
272
|
type: _array_type,
|
|
251
273
|
data: _array_data
|
|
@@ -264,11 +286,24 @@ var getFormattedFilter = function getFormattedFilter(filter, column) {
|
|
|
264
286
|
}
|
|
265
287
|
return formattedFilter;
|
|
266
288
|
};
|
|
289
|
+
|
|
290
|
+
/**
|
|
291
|
+
* Get formatted filters with other_date, linked_column etc.
|
|
292
|
+
* @param {array} filters [{ filter_term, filter_term_modifier, column, ... }]
|
|
293
|
+
* @returns formatted filters, array
|
|
294
|
+
*/
|
|
267
295
|
var getFormattedFilters = function getFormattedFilters(filters) {
|
|
268
296
|
return filters.map(function (filter) {
|
|
269
297
|
return getFormattedFilter(filter, filter.column);
|
|
270
298
|
});
|
|
271
299
|
};
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Get filters without error messages and formatted with filter column
|
|
303
|
+
* @param {array} filters e.g. [{ column_key, filter_predicate, ... }]
|
|
304
|
+
* @param {array} columns
|
|
305
|
+
* @returns filters, array
|
|
306
|
+
*/
|
|
272
307
|
var deleteInvalidFilter = function deleteInvalidFilter(filters, columns) {
|
|
273
308
|
var cleanFilters = [];
|
|
274
309
|
filters.forEach(function (filter$1) {
|
|
@@ -276,18 +311,18 @@ var deleteInvalidFilter = function deleteInvalidFilter(filters, columns) {
|
|
|
276
311
|
var _ValidateFilter$valid2 = filter.ValidateFilter.validate(filter$1, columns),
|
|
277
312
|
error_message = _ValidateFilter$valid2.error_message;
|
|
278
313
|
if (error_message) {
|
|
279
|
-
if (error_message
|
|
280
|
-
|
|
314
|
+
if (error_message !== index.FILTER_ERR_MSG.INCOMPLETE_FILTER) {
|
|
315
|
+
throw new Error(error_message);
|
|
281
316
|
}
|
|
282
|
-
|
|
317
|
+
} else {
|
|
318
|
+
var filterColumn = columns.find(function (column) {
|
|
319
|
+
return column.key === column_key;
|
|
320
|
+
});
|
|
321
|
+
var newFilter = _objectSpread(_objectSpread({}, filter$1), {}, {
|
|
322
|
+
column: filterColumn
|
|
323
|
+
});
|
|
324
|
+
cleanFilters.push(newFilter);
|
|
283
325
|
}
|
|
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
326
|
});
|
|
292
327
|
return cleanFilters;
|
|
293
328
|
};
|
|
@@ -12,75 +12,80 @@ var multipleSelect = require('./multiple-select.js');
|
|
|
12
12
|
var number$1 = require('./number.js');
|
|
13
13
|
var cellType = require('../../constants/cell-type.js');
|
|
14
14
|
var column = require('../../constants/column.js');
|
|
15
|
-
require('../../constants/filter/filter-column-options.js');
|
|
16
|
-
require('../../constants/filter/filter-modifier.js');
|
|
17
15
|
var filterPredicate = require('../../constants/filter/filter-predicate.js');
|
|
18
|
-
require('../../constants/filter/filter-is-within.js');
|
|
19
16
|
|
|
20
17
|
var TRUE_VALUE = [true, 'true'];
|
|
21
|
-
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Filter by array type
|
|
21
|
+
* @param {array} array e.g. [ cellValue, ... ]
|
|
22
|
+
* @param {object} filter e.g. { filter_predicate, column, ... }
|
|
23
|
+
* @param {string} username
|
|
24
|
+
* @param {string} userId
|
|
25
|
+
* @returns bool
|
|
26
|
+
*/
|
|
27
|
+
var filterByArrayType = function filterByArrayType(array, filter, _ref) {
|
|
22
28
|
var username = _ref.username,
|
|
23
29
|
userId = _ref.userId;
|
|
24
30
|
var column$1 = filter.column,
|
|
25
31
|
linked_column = filter.linked_column;
|
|
26
32
|
var filter_predicate = filter.filter_predicate;
|
|
27
|
-
if (Array.isArray(
|
|
33
|
+
if (Array.isArray(array)) {
|
|
28
34
|
if (filter_predicate === filterPredicate.FILTER_PREDICATE_TYPE.EMPTY) {
|
|
29
|
-
return
|
|
35
|
+
return array.length === 0;
|
|
30
36
|
}
|
|
31
37
|
if (filter_predicate === filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY) {
|
|
32
|
-
return
|
|
38
|
+
return array.length > 0;
|
|
33
39
|
}
|
|
34
40
|
}
|
|
35
41
|
if (!linked_column) {
|
|
36
42
|
return text.textFilter('', filter, userId);
|
|
37
43
|
}
|
|
38
|
-
var data = column$1.data;
|
|
39
44
|
var linkedColumnType = linked_column.type;
|
|
40
45
|
if (linkedColumnType === cellType.CellType.BOOL || linkedColumnType === cellType.CellType.CHECKBOX) {
|
|
41
|
-
var
|
|
42
|
-
if (Array.isArray(
|
|
43
|
-
|
|
46
|
+
var normalizedArray = array;
|
|
47
|
+
if (Array.isArray(array)) {
|
|
48
|
+
normalizedArray = array[0];
|
|
44
49
|
}
|
|
45
|
-
|
|
46
|
-
return checkbox.checkboxFilter(
|
|
50
|
+
normalizedArray = TRUE_VALUE.includes(normalizedArray);
|
|
51
|
+
return checkbox.checkboxFilter(normalizedArray, filter);
|
|
47
52
|
}
|
|
48
53
|
if (linkedColumnType === cellType.CellType.SINGLE_SELECT) {
|
|
49
|
-
var
|
|
50
|
-
if (
|
|
51
|
-
|
|
54
|
+
var _normalizedArray = array;
|
|
55
|
+
if (array && !Array.isArray(array)) {
|
|
56
|
+
_normalizedArray = [array];
|
|
52
57
|
}
|
|
53
|
-
return multipleSelect.multipleSelectFilter(
|
|
58
|
+
return multipleSelect.multipleSelectFilter(_normalizedArray, filter);
|
|
54
59
|
}
|
|
55
60
|
if (linkedColumnType === cellType.CellType.MULTIPLE_SELECT) {
|
|
56
|
-
return multipleSelect.multipleSelectFilter(
|
|
61
|
+
return multipleSelect.multipleSelectFilter(array, filter);
|
|
57
62
|
}
|
|
58
63
|
if (number.isNumericColumn({
|
|
59
64
|
type: linkedColumnType
|
|
60
65
|
})) {
|
|
61
|
-
var
|
|
62
|
-
if (Array.isArray(
|
|
63
|
-
var cellValueLength =
|
|
66
|
+
var _normalizedArray2 = array;
|
|
67
|
+
if (Array.isArray(array)) {
|
|
68
|
+
var cellValueLength = array.length;
|
|
64
69
|
if (cellValueLength === 0) {
|
|
65
|
-
|
|
70
|
+
_normalizedArray2 = '';
|
|
66
71
|
} else if (cellValueLength === 1) {
|
|
67
|
-
|
|
72
|
+
_normalizedArray2 = array[0];
|
|
68
73
|
}
|
|
69
74
|
}
|
|
70
|
-
return number$1.numberFilter(
|
|
75
|
+
return number$1.numberFilter(_normalizedArray2, filter);
|
|
71
76
|
}
|
|
72
77
|
if (column.DATE_COLUMN_OPTIONS.includes(linkedColumnType)) {
|
|
73
|
-
var newCellValue =
|
|
74
|
-
if (Array.isArray(
|
|
75
|
-
newCellValue = String(
|
|
78
|
+
var newCellValue = array;
|
|
79
|
+
if (Array.isArray(array)) {
|
|
80
|
+
newCellValue = String(array);
|
|
76
81
|
}
|
|
77
82
|
return date.dateFilter(newCellValue, filter);
|
|
78
83
|
}
|
|
79
84
|
if (column.COLLABORATOR_COLUMN_TYPES.includes(linkedColumnType)) {
|
|
80
|
-
return collaborator.collaboratorFilter(
|
|
85
|
+
return collaborator.collaboratorFilter(array, filter, username);
|
|
81
86
|
}
|
|
82
|
-
var
|
|
83
|
-
return text.textFilter(
|
|
87
|
+
var displayString = cellValue.getFormulaDisplayString(array, column$1.data) || '';
|
|
88
|
+
return text.textFilter(displayString, filter, userId);
|
|
84
89
|
};
|
|
85
90
|
|
|
86
91
|
exports.filterByArrayType = filterByArrayType;
|
|
@@ -2,11 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Filter checkbox
|
|
7
|
+
* @param {bool} checked
|
|
8
|
+
* @param {bool} filter_term
|
|
9
|
+
* @returns boolean
|
|
10
|
+
*/
|
|
11
|
+
var checkboxFilter = function checkboxFilter(checked, _ref) {
|
|
6
12
|
var filter_term = _ref.filter_term;
|
|
7
13
|
var filterTerm = filter_term || false;
|
|
8
|
-
var
|
|
9
|
-
return
|
|
14
|
+
var normalizedChecked = checked || false;
|
|
15
|
+
return normalizedChecked === filterTerm;
|
|
10
16
|
};
|
|
11
17
|
|
|
12
18
|
exports.checkboxFilter = checkboxFilter;
|
|
@@ -3,38 +3,43 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
6
|
-
require('../../constants/filter/filter-column-options.js');
|
|
7
|
-
require('../../constants/filter/filter-modifier.js');
|
|
8
6
|
var filterPredicate = require('../../constants/filter/filter-predicate.js');
|
|
9
|
-
require('../../constants/filter/filter-is-within.js');
|
|
10
7
|
|
|
11
8
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
12
9
|
|
|
13
10
|
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
|
|
14
11
|
|
|
15
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Filter collaborator
|
|
14
|
+
* @param {array} emails e.g. [ collaborator.email, ... ]
|
|
15
|
+
* @param {string} filter_predicate
|
|
16
|
+
* @param {array} filter_term e.g. [ collaborator.email, ... ]
|
|
17
|
+
* @param {string} username
|
|
18
|
+
* @returns bool
|
|
19
|
+
*/
|
|
20
|
+
var collaboratorFilter = function collaboratorFilter(emails, _ref, username) {
|
|
16
21
|
var filter_predicate = _ref.filter_predicate,
|
|
17
22
|
filter_term = _ref.filter_term;
|
|
18
23
|
switch (filter_predicate) {
|
|
19
24
|
case filterPredicate.FILTER_PREDICATE_TYPE.HAS_ANY_OF:
|
|
20
25
|
{
|
|
21
|
-
return !Array.isArray(filter_term) || filter_term.length === 0 || Array.isArray(
|
|
22
|
-
return
|
|
26
|
+
return !Array.isArray(filter_term) || filter_term.length === 0 || Array.isArray(emails) && filter_term.some(function (email) {
|
|
27
|
+
return emails.includes(email);
|
|
23
28
|
});
|
|
24
29
|
}
|
|
25
30
|
case filterPredicate.FILTER_PREDICATE_TYPE.HAS_ALL_OF:
|
|
26
31
|
{
|
|
27
|
-
return !Array.isArray(filter_term) || filter_term.length === 0 || Array.isArray(
|
|
28
|
-
return
|
|
32
|
+
return !Array.isArray(filter_term) || filter_term.length === 0 || Array.isArray(emails) && filter_term.every(function (email) {
|
|
33
|
+
return emails.includes(email);
|
|
29
34
|
});
|
|
30
35
|
}
|
|
31
36
|
case filterPredicate.FILTER_PREDICATE_TYPE.HAS_NONE_OF:
|
|
32
37
|
{
|
|
33
|
-
if (!Array.isArray(filter_term) || filter_term.length === 0 || !Array.isArray(
|
|
38
|
+
if (!Array.isArray(filter_term) || filter_term.length === 0 || !Array.isArray(emails) || emails.length === 0) {
|
|
34
39
|
return true;
|
|
35
40
|
}
|
|
36
41
|
return filter_term.every(function (email) {
|
|
37
|
-
return
|
|
42
|
+
return emails.indexOf(email) < 0;
|
|
38
43
|
});
|
|
39
44
|
}
|
|
40
45
|
case filterPredicate.FILTER_PREDICATE_TYPE.IS_EXACTLY:
|
|
@@ -42,10 +47,10 @@ var collaboratorFilter = function collaboratorFilter(cellValue, _ref, username)
|
|
|
42
47
|
if (!Array.isArray(filter_term) || filter_term.length === 0) {
|
|
43
48
|
return true;
|
|
44
49
|
}
|
|
45
|
-
if (!Array.isArray(
|
|
50
|
+
if (!Array.isArray(emails) || emails.length === 0) {
|
|
46
51
|
return false;
|
|
47
52
|
}
|
|
48
|
-
var nonReptCellValue = _toConsumableArray__default["default"](new Set(
|
|
53
|
+
var nonReptCellValue = _toConsumableArray__default["default"](new Set(emails));
|
|
49
54
|
if (nonReptCellValue.length !== filter_term.length) {
|
|
50
55
|
return false;
|
|
51
56
|
}
|
|
@@ -55,15 +60,15 @@ var collaboratorFilter = function collaboratorFilter(cellValue, _ref, username)
|
|
|
55
60
|
}
|
|
56
61
|
case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
|
|
57
62
|
{
|
|
58
|
-
return !Array.isArray(
|
|
63
|
+
return !Array.isArray(emails) || emails.length === 0;
|
|
59
64
|
}
|
|
60
65
|
case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
|
|
61
66
|
{
|
|
62
|
-
return Array.isArray(
|
|
67
|
+
return Array.isArray(emails) && emails.length > 0;
|
|
63
68
|
}
|
|
64
69
|
case filterPredicate.FILTER_PREDICATE_TYPE.INCLUDE_ME:
|
|
65
70
|
{
|
|
66
|
-
return Array.isArray(
|
|
71
|
+
return Array.isArray(emails) && emails.indexOf(username) > -1;
|
|
67
72
|
}
|
|
68
73
|
default:
|
|
69
74
|
{
|
|
@@ -2,12 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
require('../../constants/filter/filter-column-options.js');
|
|
6
|
-
require('../../constants/filter/filter-modifier.js');
|
|
7
5
|
var filterPredicate = require('../../constants/filter/filter-predicate.js');
|
|
8
|
-
require('../../constants/filter/filter-is-within.js');
|
|
9
6
|
|
|
10
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Filter creator
|
|
9
|
+
* @param {string} email
|
|
10
|
+
* @param {string} filter_predicate
|
|
11
|
+
* @param {array} filter_term e.g. [ collaborator.email, ... ]
|
|
12
|
+
* @param {string} username
|
|
13
|
+
* @returns bool
|
|
14
|
+
*/
|
|
15
|
+
var creatorFilter = function creatorFilter(email, _ref, username) {
|
|
11
16
|
var filter_predicate = _ref.filter_predicate,
|
|
12
17
|
filter_term = _ref.filter_term;
|
|
13
18
|
switch (filter_predicate) {
|
|
@@ -16,33 +21,37 @@ var creatorFilter = function creatorFilter(cellValue, _ref, username) {
|
|
|
16
21
|
if (!Array.isArray(filter_term)) {
|
|
17
22
|
return true;
|
|
18
23
|
}
|
|
19
|
-
if (!
|
|
24
|
+
if (!email) {
|
|
20
25
|
return false;
|
|
21
26
|
}
|
|
22
|
-
return filter_term.findIndex(function (
|
|
23
|
-
return
|
|
27
|
+
return filter_term.findIndex(function (filterEmail) {
|
|
28
|
+
return filterEmail === email;
|
|
24
29
|
}) > -1;
|
|
25
30
|
}
|
|
26
31
|
case filterPredicate.FILTER_PREDICATE_TYPE.NOT_CONTAIN:
|
|
27
32
|
{
|
|
28
|
-
if (!Array.isArray(filter_term) || !
|
|
33
|
+
if (!Array.isArray(filter_term) || !email) {
|
|
29
34
|
return true;
|
|
30
35
|
}
|
|
31
|
-
return filter_term.findIndex(function (
|
|
32
|
-
return
|
|
36
|
+
return filter_term.findIndex(function (filterEmail) {
|
|
37
|
+
return filterEmail === email;
|
|
33
38
|
}) < 0;
|
|
34
39
|
}
|
|
35
40
|
case filterPredicate.FILTER_PREDICATE_TYPE.INCLUDE_ME:
|
|
36
41
|
{
|
|
37
|
-
return
|
|
42
|
+
return email === username;
|
|
38
43
|
}
|
|
39
44
|
case filterPredicate.FILTER_PREDICATE_TYPE.IS:
|
|
40
45
|
{
|
|
41
|
-
|
|
46
|
+
if (!filter_term) return true;
|
|
47
|
+
if (!Array.isArray(filter_term)) return email === filter_term;
|
|
48
|
+
return email === filter_term[0];
|
|
42
49
|
}
|
|
43
50
|
case filterPredicate.FILTER_PREDICATE_TYPE.IS_NOT:
|
|
44
51
|
{
|
|
45
|
-
|
|
52
|
+
if (!filter_term) return true;
|
|
53
|
+
if (!Array.isArray(filter_term)) return email !== filter_term;
|
|
54
|
+
return email !== filter_term[0];
|
|
46
55
|
}
|
|
47
56
|
default:
|
|
48
57
|
{
|