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.
- package/README.md +56 -5
- package/dist/index.js +1 -1
- package/es/cell-value-get/cell-value.js +250 -20
- package/es/cell-value-get/collaborator.js +16 -3
- package/es/cell-value-get/digital-sign.js +1 -1
- package/es/cell-value-get/duration.js +3 -3
- package/es/cell-value-get/geolocation.js +52 -30
- package/es/cell-value-get/long-text.js +1 -1
- package/es/cell-value-get/number.js +51 -19
- package/es/cell-value-get/option.js +33 -9
- package/es/cell-value-get/rate.js +11 -0
- package/es/cell-value-set/date.js +26 -0
- package/es/cell-value-set/number.js +53 -1
- package/es/color/column-color.js +437 -0
- package/es/color/gradient-color.js +100 -0
- package/es/color/row-color.js +289 -0
- package/es/column/{common.js → core.js} +2 -14
- package/es/column/date.js +1 -1
- package/es/column/number.js +1 -1
- package/es/column/option.js +143 -0
- package/es/common.js +23 -3
- package/es/constants/color.js +16 -0
- package/es/constants/column-permission.js +7 -0
- package/es/constants/column.js +127 -2
- package/es/constants/filter/index.js +5 -1
- package/es/constants/formula.js +2 -1
- package/es/constants/grid-header.js +6 -0
- package/es/constants/group.js +23 -0
- package/es/constants/limit.js +3 -0
- package/es/constants/reg.js +4 -0
- package/es/constants/row-color.js +11 -0
- package/es/constants/sort.js +11 -0
- package/es/date.js +1 -1
- package/es/filter/core.js +322 -0
- package/es/filter/filter-column/array.js +87 -0
- package/es/filter/filter-column/checkbox.js +14 -0
- package/es/filter/filter-column/collaborator.js +72 -0
- package/es/filter/filter-column/creator.js +59 -0
- package/es/filter/filter-column/date.js +102 -0
- package/es/filter/filter-column/digital-sign.js +29 -0
- package/es/filter/filter-column/file.js +27 -0
- package/es/filter/filter-column/formula.js +57 -0
- package/es/filter/filter-column/geolocation.js +58 -0
- package/es/filter/filter-column/link.js +20 -0
- package/es/filter/filter-column/long-text.js +28 -0
- package/es/filter/filter-column/multiple-select.js +64 -0
- package/es/filter/filter-column/number.js +97 -0
- package/es/filter/filter-column/single-select.js +45 -0
- package/es/filter/filter-column/text.js +60 -0
- package/es/filter/filter-row.js +233 -0
- package/es/group/core.js +116 -0
- package/es/group/group-row.js +402 -0
- package/es/index.js +63 -11
- package/es/link/core.js +78 -0
- package/es/number.js +21 -0
- package/es/row/core.js +180 -0
- package/es/sort/core.js +91 -0
- package/es/sort/sort-column/array.js +72 -0
- package/es/sort/sort-column/checkbox.js +22 -0
- package/es/sort/sort-column/collaborator.js +16 -0
- package/es/sort/sort-column/date.js +25 -0
- package/es/sort/sort-column/formula.js +49 -0
- package/es/sort/sort-column/link.js +32 -0
- package/es/sort/sort-column/multiple-select.js +45 -0
- package/es/sort/sort-column/number.js +31 -0
- package/es/sort/sort-column/single-select.js +36 -0
- package/es/sort/sort-column/text.js +69 -0
- package/es/sort/sort-row.js +110 -0
- package/es/table/column.js +27 -0
- package/es/table/core.js +14 -0
- package/es/table/row.js +25 -0
- package/es/validate/filter.js +1 -1
- package/es/validate/geolocation.js +5 -0
- package/es/view/core.js +134 -0
- package/es/view/formula.js +147 -0
- package/es/view/group.js +32 -0
- package/es/view/summaries.js +167 -0
- package/lib/cell-value-get/cell-value.js +254 -19
- package/lib/cell-value-get/collaborator.js +16 -2
- package/lib/cell-value-get/digital-sign.js +1 -1
- package/lib/cell-value-get/duration.js +3 -2
- package/lib/cell-value-get/geolocation.js +53 -30
- package/lib/cell-value-get/long-text.js +1 -1
- package/lib/cell-value-get/number.js +51 -18
- package/lib/cell-value-get/option.js +34 -8
- package/lib/cell-value-get/rate.js +15 -0
- package/lib/cell-value-set/date.js +30 -0
- package/lib/cell-value-set/number.js +53 -0
- package/lib/color/column-color.js +446 -0
- package/lib/color/gradient-color.js +110 -0
- package/lib/color/row-color.js +297 -0
- package/lib/column/{common.js → core.js} +1 -14
- package/lib/column/date.js +2 -2
- package/lib/column/number.js +3 -3
- package/lib/column/option.js +151 -0
- package/lib/common.js +27 -3
- package/lib/constants/color.js +20 -0
- package/lib/constants/column-permission.js +11 -0
- package/lib/constants/column.js +134 -1
- package/lib/constants/filter/index.js +5 -0
- package/lib/constants/formula.js +2 -0
- package/lib/constants/grid-header.js +10 -0
- package/lib/constants/group.js +36 -0
- package/lib/constants/limit.js +7 -0
- package/lib/constants/reg.js +9 -0
- package/lib/constants/row-color.js +17 -0
- package/lib/constants/sort.js +18 -0
- package/lib/filter/core.js +336 -0
- package/lib/filter/filter-column/array.js +91 -0
- package/lib/filter/filter-column/checkbox.js +18 -0
- package/lib/filter/filter-column/collaborator.js +80 -0
- package/lib/filter/filter-column/creator.js +63 -0
- package/lib/filter/filter-column/date.js +106 -0
- package/lib/filter/filter-column/digital-sign.js +33 -0
- package/lib/filter/filter-column/file.js +31 -0
- package/lib/filter/filter-column/formula.js +61 -0
- package/lib/filter/filter-column/geolocation.js +62 -0
- package/lib/filter/filter-column/link.js +24 -0
- package/lib/filter/filter-column/long-text.js +32 -0
- package/lib/filter/filter-column/multiple-select.js +72 -0
- package/lib/filter/filter-column/number.js +101 -0
- package/lib/filter/filter-column/single-select.js +49 -0
- package/lib/filter/filter-column/text.js +64 -0
- package/lib/filter/filter-row.js +239 -0
- package/lib/group/core.js +126 -0
- package/lib/group/group-row.js +413 -0
- package/lib/index.js +177 -7
- package/lib/link/core.js +90 -0
- package/lib/number.js +26 -0
- package/lib/row/core.js +189 -0
- package/lib/sort/core.js +102 -0
- package/lib/sort/sort-column/array.js +76 -0
- package/lib/sort/sort-column/checkbox.js +26 -0
- package/lib/sort/sort-column/collaborator.js +20 -0
- package/lib/sort/sort-column/date.js +29 -0
- package/lib/sort/sort-column/formula.js +53 -0
- package/lib/sort/sort-column/link.js +36 -0
- package/lib/sort/sort-column/multiple-select.js +49 -0
- package/lib/sort/sort-column/number.js +35 -0
- package/lib/sort/sort-column/single-select.js +40 -0
- package/lib/sort/sort-column/text.js +74 -0
- package/lib/sort/sort-row.js +115 -0
- package/lib/table/column.js +32 -0
- package/lib/table/core.js +18 -0
- package/lib/table/row.js +30 -0
- package/lib/validate/filter.js +3 -3
- package/lib/validate/geolocation.js +9 -0
- package/lib/view/core.js +143 -0
- package/lib/view/formula.js +154 -0
- package/lib/view/group.js +36 -0
- package/lib/view/summaries.js +173 -0
- package/package.json +5 -3
|
@@ -0,0 +1,336 @@
|
|
|
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 e.g. [{ column_key, filter_predicate, ... }]
|
|
24
|
+
* @param {array} columns
|
|
25
|
+
* @returns valid filters, 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 e.g. [{ column_key, filter_predicate, ... }]
|
|
41
|
+
* @param {array} columns
|
|
42
|
+
* @returns valid filters, 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
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Generate date for filter
|
|
55
|
+
* @param {string} filterTermModifier
|
|
56
|
+
* @param {any} filterTerm
|
|
57
|
+
* @returns date | date range, object
|
|
58
|
+
*/
|
|
59
|
+
var otherDate = function otherDate(filterTermModifier, filterTerm) {
|
|
60
|
+
var today = new Date();
|
|
61
|
+
var year = today.getFullYear();
|
|
62
|
+
var month = today.getMonth(); // use js month representation: 0 - 11
|
|
63
|
+
var day = today.getDate();
|
|
64
|
+
|
|
65
|
+
// 0 1 2 3 4 5 6 7 8 9 10 11 days in every month
|
|
66
|
+
var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
|
67
|
+
days[1] = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) ? 29 : 28; // is leap year
|
|
68
|
+
switch (filterTermModifier) {
|
|
69
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.TODAY:
|
|
70
|
+
{
|
|
71
|
+
// today, should start at 0:00 and end at 24:00
|
|
72
|
+
return new Date(year, month, day, 0, 0, 0);
|
|
73
|
+
}
|
|
74
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.TOMORROW:
|
|
75
|
+
{
|
|
76
|
+
return new Date(year, month, day + 1);
|
|
77
|
+
}
|
|
78
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.YESTERDAY:
|
|
79
|
+
{
|
|
80
|
+
return new Date(year, month, day - 1);
|
|
81
|
+
}
|
|
82
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.ONE_WEEK_AGO:
|
|
83
|
+
{
|
|
84
|
+
return new Date(year, month, day - 7);
|
|
85
|
+
}
|
|
86
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.ONE_WEEK_FROM_NOW:
|
|
87
|
+
{
|
|
88
|
+
return new Date(year, month, day + 7);
|
|
89
|
+
}
|
|
90
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.ONE_MONTH_AGO:
|
|
91
|
+
{
|
|
92
|
+
var pastMonth = month - 1;
|
|
93
|
+
var monthDaysIndex = month === 0 ? 11 : pastMonth;
|
|
94
|
+
var currentDay = day > days[monthDaysIndex] ? days[monthDaysIndex] : day;
|
|
95
|
+
return new Date(year, pastMonth, currentDay);
|
|
96
|
+
}
|
|
97
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.ONE_MONTH_FROM_NOW:
|
|
98
|
+
{
|
|
99
|
+
var nextMonth = month + 1;
|
|
100
|
+
var _monthDaysIndex = month === 11 ? 0 : nextMonth;
|
|
101
|
+
var _currentDay = day > days[_monthDaysIndex] ? days[_monthDaysIndex] : day;
|
|
102
|
+
return new Date(year, nextMonth, _currentDay);
|
|
103
|
+
}
|
|
104
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.NUMBER_OF_DAYS_AGO:
|
|
105
|
+
{
|
|
106
|
+
return new Date(year, month, day - Number(filterTerm));
|
|
107
|
+
}
|
|
108
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.NUMBER_OF_DAYS_FROM_NOW:
|
|
109
|
+
{
|
|
110
|
+
return new Date(year, month, day + Number(filterTerm));
|
|
111
|
+
}
|
|
112
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE:
|
|
113
|
+
{
|
|
114
|
+
return new Date(filterTerm);
|
|
115
|
+
}
|
|
116
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.THE_PAST_WEEK:
|
|
117
|
+
{
|
|
118
|
+
var weekDay = today.getDay() !== 0 ? today.getDay() : 7;
|
|
119
|
+
return {
|
|
120
|
+
startDate: new Date(year, month, day - weekDay - 6),
|
|
121
|
+
endDate: new Date(year, month, day - weekDay)
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.THIS_WEEK:
|
|
125
|
+
{
|
|
126
|
+
var _weekDay = today.getDay() !== 0 ? today.getDay() : 7;
|
|
127
|
+
return {
|
|
128
|
+
startDate: new Date(year, month, day - _weekDay + 1),
|
|
129
|
+
endDate: new Date(year, month, day - _weekDay + 7)
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.THE_NEXT_WEEK:
|
|
133
|
+
{
|
|
134
|
+
var _weekDay2 = today.getDay() !== 0 ? today.getDay() : 7;
|
|
135
|
+
return {
|
|
136
|
+
startDate: new Date(year, month, day - _weekDay2 + 8),
|
|
137
|
+
endDate: new Date(year, month, day - _weekDay2 + 14)
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.THE_PAST_MONTH:
|
|
141
|
+
{
|
|
142
|
+
var _pastMonth = month - 1;
|
|
143
|
+
return {
|
|
144
|
+
startDate: new Date(year, _pastMonth, 1),
|
|
145
|
+
endDate: new Date(year, _pastMonth, days[month === 0 ? 11 : _pastMonth])
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.THIS_MONTH:
|
|
149
|
+
{
|
|
150
|
+
return {
|
|
151
|
+
startDate: new Date(year, month, 1),
|
|
152
|
+
endDate: new Date(year, month, days[month])
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.THE_NEXT_MONTH:
|
|
156
|
+
{
|
|
157
|
+
var _nextMonth = month + 1;
|
|
158
|
+
return {
|
|
159
|
+
startDate: new Date(year, _nextMonth, 1),
|
|
160
|
+
endDate: new Date(year, _nextMonth, month === 11 ? days[0] : days[_nextMonth])
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.THE_PAST_YEAR:
|
|
164
|
+
{
|
|
165
|
+
var pastYear = year - 1;
|
|
166
|
+
return {
|
|
167
|
+
startDate: new Date(pastYear, 0, 1),
|
|
168
|
+
// The computer's month starts at 0.
|
|
169
|
+
endDate: new Date(pastYear, 11, 31)
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.THIS_YEAR:
|
|
173
|
+
{
|
|
174
|
+
return {
|
|
175
|
+
startDate: new Date(year, 0, 1),
|
|
176
|
+
endDate: new Date(year, 11, 31)
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.THE_NEXT_YEAR:
|
|
180
|
+
{
|
|
181
|
+
var nextYear = year + 1;
|
|
182
|
+
return {
|
|
183
|
+
startDate: new Date(nextYear, 0, 1),
|
|
184
|
+
endDate: new Date(nextYear, 11, 31)
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.THE_NEXT_NUMBERS_OF_DAYS:
|
|
188
|
+
{
|
|
189
|
+
return {
|
|
190
|
+
startDate: new Date(year, month, day + 1, 0, 0, 0),
|
|
191
|
+
endDate: new Date(year, month, day + Number(filterTerm))
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
case filterModifier.FILTER_TERM_MODIFIER_TYPE.THE_PAST_NUMBERS_OF_DAYS:
|
|
195
|
+
{
|
|
196
|
+
return {
|
|
197
|
+
startDate: new Date(year, month, day - Number(filterTerm)),
|
|
198
|
+
endDate: new Date(year, month, day, 0, 0, 0)
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
default:
|
|
202
|
+
{
|
|
203
|
+
return {};
|
|
204
|
+
}
|
|
205
|
+
}
|
|
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
|
+
*/
|
|
214
|
+
var getFormattedFilterOtherDate = function getFormattedFilterOtherDate(filterTermModifier, filterTerm) {
|
|
215
|
+
var _otherDate = otherDate(filterTermModifier, filterTerm);
|
|
216
|
+
if (EXACT_DATE_TERM_MODIFIER_TYPES.includes(filterTermModifier)) {
|
|
217
|
+
return date.DateUtils.format(_otherDate);
|
|
218
|
+
}
|
|
219
|
+
var startDate = _otherDate.startDate,
|
|
220
|
+
endDate = _otherDate.endDate;
|
|
221
|
+
return {
|
|
222
|
+
startDate: startDate ? date.DateUtils.format(startDate) : '',
|
|
223
|
+
endDate: endDate ? date.DateUtils.format(endDate) : ''
|
|
224
|
+
};
|
|
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
|
+
*/
|
|
233
|
+
var getFormattedFilter = function getFormattedFilter(filter, column) {
|
|
234
|
+
var filter_term = filter.filter_term,
|
|
235
|
+
filter_term_modifier = filter.filter_term_modifier;
|
|
236
|
+
var columnType = column.type,
|
|
237
|
+
columnData = column.data;
|
|
238
|
+
var formattedFilter = filter;
|
|
239
|
+
switch (columnType) {
|
|
240
|
+
case cellType.CellType.FORMULA:
|
|
241
|
+
case cellType.CellType.LINK_FORMULA:
|
|
242
|
+
{
|
|
243
|
+
var result_type = columnData.result_type,
|
|
244
|
+
array_type = columnData.array_type,
|
|
245
|
+
array_data = columnData.array_data;
|
|
246
|
+
if (result_type === formula.FORMULA_RESULT_TYPE.DATE) {
|
|
247
|
+
formattedFilter.other_date = getFormattedFilterOtherDate(filter_term_modifier, filter_term);
|
|
248
|
+
}
|
|
249
|
+
if (result_type === formula.FORMULA_RESULT_TYPE.ARRAY) {
|
|
250
|
+
var linkedColumn = {
|
|
251
|
+
type: array_type,
|
|
252
|
+
data: array_data
|
|
253
|
+
};
|
|
254
|
+
formattedFilter.linked_column = linkedColumn;
|
|
255
|
+
formattedFilter = getFormattedFilter(formattedFilter, linkedColumn);
|
|
256
|
+
}
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
case cellType.CellType.DATE:
|
|
260
|
+
case cellType.CellType.CTIME:
|
|
261
|
+
case cellType.CellType.MTIME:
|
|
262
|
+
{
|
|
263
|
+
formattedFilter.other_date = getFormattedFilterOtherDate(filter_term_modifier, filter_term);
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
case cellType.CellType.LINK:
|
|
267
|
+
{
|
|
268
|
+
var _ref = columnData || {},
|
|
269
|
+
_array_type = _ref.array_type,
|
|
270
|
+
_array_data = _ref.array_data;
|
|
271
|
+
var _linkedColumn = {
|
|
272
|
+
type: _array_type,
|
|
273
|
+
data: _array_data
|
|
274
|
+
};
|
|
275
|
+
var filterColumnData = _objectSpread(_objectSpread({}, columnData), {}, {
|
|
276
|
+
result_type: formula.FORMULA_RESULT_TYPE.ARRAY
|
|
277
|
+
});
|
|
278
|
+
var filterColumn = _objectSpread(_objectSpread({}, column), {}, {
|
|
279
|
+
data: filterColumnData
|
|
280
|
+
});
|
|
281
|
+
formattedFilter.column = filterColumn;
|
|
282
|
+
formattedFilter.linked_column = _linkedColumn;
|
|
283
|
+
formattedFilter = getFormattedFilter(formattedFilter, _linkedColumn);
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return formattedFilter;
|
|
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
|
+
*/
|
|
295
|
+
var getFormattedFilters = function getFormattedFilters(filters) {
|
|
296
|
+
return filters.map(function (filter) {
|
|
297
|
+
return getFormattedFilter(filter, filter.column);
|
|
298
|
+
});
|
|
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
|
+
*/
|
|
307
|
+
var deleteInvalidFilter = function deleteInvalidFilter(filters, columns) {
|
|
308
|
+
var cleanFilters = [];
|
|
309
|
+
filters.forEach(function (filter$1) {
|
|
310
|
+
var column_key = filter$1.column_key;
|
|
311
|
+
var _ValidateFilter$valid2 = filter.ValidateFilter.validate(filter$1, columns),
|
|
312
|
+
error_message = _ValidateFilter$valid2.error_message;
|
|
313
|
+
if (error_message) {
|
|
314
|
+
if (error_message !== index.FILTER_ERR_MSG.INCOMPLETE_FILTER) {
|
|
315
|
+
throw new Error(error_message);
|
|
316
|
+
}
|
|
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);
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
return cleanFilters;
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
exports.deleteInvalidFilter = deleteInvalidFilter;
|
|
331
|
+
exports.getFormattedFilter = getFormattedFilter;
|
|
332
|
+
exports.getFormattedFilterOtherDate = getFormattedFilterOtherDate;
|
|
333
|
+
exports.getFormattedFilters = getFormattedFilters;
|
|
334
|
+
exports.getValidFilters = getValidFilters;
|
|
335
|
+
exports.getValidFiltersWithoutError = getValidFiltersWithoutError;
|
|
336
|
+
exports.otherDate = otherDate;
|
|
@@ -0,0 +1,91 @@
|
|
|
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
|
+
var filterPredicate = require('../../constants/filter/filter-predicate.js');
|
|
16
|
+
|
|
17
|
+
var TRUE_VALUE = [true, 'true'];
|
|
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) {
|
|
28
|
+
var username = _ref.username,
|
|
29
|
+
userId = _ref.userId;
|
|
30
|
+
var column$1 = filter.column,
|
|
31
|
+
linked_column = filter.linked_column;
|
|
32
|
+
var filter_predicate = filter.filter_predicate;
|
|
33
|
+
if (Array.isArray(array)) {
|
|
34
|
+
if (filter_predicate === filterPredicate.FILTER_PREDICATE_TYPE.EMPTY) {
|
|
35
|
+
return array.length === 0;
|
|
36
|
+
}
|
|
37
|
+
if (filter_predicate === filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY) {
|
|
38
|
+
return array.length > 0;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (!linked_column) {
|
|
42
|
+
return text.textFilter('', filter, userId);
|
|
43
|
+
}
|
|
44
|
+
var linkedColumnType = linked_column.type;
|
|
45
|
+
if (linkedColumnType === cellType.CellType.BOOL || linkedColumnType === cellType.CellType.CHECKBOX) {
|
|
46
|
+
var normalizedArray = array;
|
|
47
|
+
if (Array.isArray(array)) {
|
|
48
|
+
normalizedArray = array[0];
|
|
49
|
+
}
|
|
50
|
+
normalizedArray = TRUE_VALUE.includes(normalizedArray);
|
|
51
|
+
return checkbox.checkboxFilter(normalizedArray, filter);
|
|
52
|
+
}
|
|
53
|
+
if (linkedColumnType === cellType.CellType.SINGLE_SELECT) {
|
|
54
|
+
var _normalizedArray = array;
|
|
55
|
+
if (array && !Array.isArray(array)) {
|
|
56
|
+
_normalizedArray = [array];
|
|
57
|
+
}
|
|
58
|
+
return multipleSelect.multipleSelectFilter(_normalizedArray, filter);
|
|
59
|
+
}
|
|
60
|
+
if (linkedColumnType === cellType.CellType.MULTIPLE_SELECT) {
|
|
61
|
+
return multipleSelect.multipleSelectFilter(array, filter);
|
|
62
|
+
}
|
|
63
|
+
if (number.isNumericColumn({
|
|
64
|
+
type: linkedColumnType
|
|
65
|
+
})) {
|
|
66
|
+
var _normalizedArray2 = array;
|
|
67
|
+
if (Array.isArray(array)) {
|
|
68
|
+
var cellValueLength = array.length;
|
|
69
|
+
if (cellValueLength === 0) {
|
|
70
|
+
_normalizedArray2 = '';
|
|
71
|
+
} else if (cellValueLength === 1) {
|
|
72
|
+
_normalizedArray2 = array[0];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return number$1.numberFilter(_normalizedArray2, filter);
|
|
76
|
+
}
|
|
77
|
+
if (column.DATE_COLUMN_OPTIONS.includes(linkedColumnType)) {
|
|
78
|
+
var newCellValue = array;
|
|
79
|
+
if (Array.isArray(array)) {
|
|
80
|
+
newCellValue = String(array);
|
|
81
|
+
}
|
|
82
|
+
return date.dateFilter(newCellValue, filter);
|
|
83
|
+
}
|
|
84
|
+
if (column.COLLABORATOR_COLUMN_TYPES.includes(linkedColumnType)) {
|
|
85
|
+
return collaborator.collaboratorFilter(array, filter, username);
|
|
86
|
+
}
|
|
87
|
+
var displayString = cellValue.getFormulaDisplayString(array, column$1.data) || '';
|
|
88
|
+
return text.textFilter(displayString, filter, userId);
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
exports.filterByArrayType = filterByArrayType;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Filter checkbox
|
|
7
|
+
* @param {bool} checked
|
|
8
|
+
* @param {bool} filter_term
|
|
9
|
+
* @returns boolean
|
|
10
|
+
*/
|
|
11
|
+
var checkboxFilter = function checkboxFilter(checked, _ref) {
|
|
12
|
+
var filter_term = _ref.filter_term;
|
|
13
|
+
var filterTerm = filter_term || false;
|
|
14
|
+
var normalizedChecked = checked || false;
|
|
15
|
+
return normalizedChecked === filterTerm;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
exports.checkboxFilter = checkboxFilter;
|
|
@@ -0,0 +1,80 @@
|
|
|
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 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) {
|
|
21
|
+
var filter_predicate = _ref.filter_predicate,
|
|
22
|
+
filter_term = _ref.filter_term;
|
|
23
|
+
switch (filter_predicate) {
|
|
24
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.HAS_ANY_OF:
|
|
25
|
+
{
|
|
26
|
+
return !Array.isArray(filter_term) || filter_term.length === 0 || Array.isArray(emails) && filter_term.some(function (email) {
|
|
27
|
+
return emails.includes(email);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.HAS_ALL_OF:
|
|
31
|
+
{
|
|
32
|
+
return !Array.isArray(filter_term) || filter_term.length === 0 || Array.isArray(emails) && filter_term.every(function (email) {
|
|
33
|
+
return emails.includes(email);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.HAS_NONE_OF:
|
|
37
|
+
{
|
|
38
|
+
if (!Array.isArray(filter_term) || filter_term.length === 0 || !Array.isArray(emails) || emails.length === 0) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
return filter_term.every(function (email) {
|
|
42
|
+
return emails.indexOf(email) < 0;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS_EXACTLY:
|
|
46
|
+
{
|
|
47
|
+
if (!Array.isArray(filter_term) || filter_term.length === 0) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
if (!Array.isArray(emails) || emails.length === 0) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
var nonReptCellValue = _toConsumableArray__default["default"](new Set(emails));
|
|
54
|
+
if (nonReptCellValue.length !== filter_term.length) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
return filter_term.every(function (email) {
|
|
58
|
+
return nonReptCellValue.includes(email);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
|
|
62
|
+
{
|
|
63
|
+
return !Array.isArray(emails) || emails.length === 0;
|
|
64
|
+
}
|
|
65
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
|
|
66
|
+
{
|
|
67
|
+
return Array.isArray(emails) && emails.length > 0;
|
|
68
|
+
}
|
|
69
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.INCLUDE_ME:
|
|
70
|
+
{
|
|
71
|
+
return Array.isArray(emails) && emails.indexOf(username) > -1;
|
|
72
|
+
}
|
|
73
|
+
default:
|
|
74
|
+
{
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
exports.collaboratorFilter = collaboratorFilter;
|
|
@@ -0,0 +1,63 @@
|
|
|
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 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) {
|
|
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 (!Array.isArray(filter_term)) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
if (!email) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
return filter_term.findIndex(function (filterEmail) {
|
|
28
|
+
return filterEmail === email;
|
|
29
|
+
}) > -1;
|
|
30
|
+
}
|
|
31
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.NOT_CONTAIN:
|
|
32
|
+
{
|
|
33
|
+
if (!Array.isArray(filter_term) || !email) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
return filter_term.findIndex(function (filterEmail) {
|
|
37
|
+
return filterEmail === email;
|
|
38
|
+
}) < 0;
|
|
39
|
+
}
|
|
40
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.INCLUDE_ME:
|
|
41
|
+
{
|
|
42
|
+
return email === username;
|
|
43
|
+
}
|
|
44
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS:
|
|
45
|
+
{
|
|
46
|
+
if (!filter_term) return true;
|
|
47
|
+
if (!Array.isArray(filter_term)) return email === filter_term;
|
|
48
|
+
return email === filter_term[0];
|
|
49
|
+
}
|
|
50
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS_NOT:
|
|
51
|
+
{
|
|
52
|
+
if (!filter_term) return true;
|
|
53
|
+
if (!Array.isArray(filter_term)) return email !== filter_term;
|
|
54
|
+
return email !== filter_term[0];
|
|
55
|
+
}
|
|
56
|
+
default:
|
|
57
|
+
{
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
exports.creatorFilter = creatorFilter;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var date = require('../../date.js');
|
|
6
|
+
var filterPredicate = require('../../constants/filter/filter-predicate.js');
|
|
7
|
+
var filterModifier = require('../../constants/filter/filter-modifier.js');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Filter date
|
|
11
|
+
* @param {string} date
|
|
12
|
+
* @param {string} filter_predicate
|
|
13
|
+
* @param {string} filter_term_modifier
|
|
14
|
+
* @param {any} filter_term date string or number etc.
|
|
15
|
+
* @param {string|object} other_date date string or { startDate, endDate }
|
|
16
|
+
* @returns bool
|
|
17
|
+
*/
|
|
18
|
+
var dateFilter = function dateFilter(date$1, _ref) {
|
|
19
|
+
var filter_predicate = _ref.filter_predicate,
|
|
20
|
+
filter_term_modifier = _ref.filter_term_modifier,
|
|
21
|
+
filter_term = _ref.filter_term,
|
|
22
|
+
other_date = _ref.other_date;
|
|
23
|
+
switch (filter_predicate) {
|
|
24
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS:
|
|
25
|
+
{
|
|
26
|
+
return filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term || date.DateUtils.format(date$1) === other_date;
|
|
27
|
+
}
|
|
28
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS_WITHIN:
|
|
29
|
+
{
|
|
30
|
+
if (filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
if (!date$1) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
var startDate = other_date.startDate,
|
|
37
|
+
endDate = other_date.endDate;
|
|
38
|
+
var currentDate = date.DateUtils.format(date$1);
|
|
39
|
+
return currentDate >= startDate && currentDate <= endDate;
|
|
40
|
+
}
|
|
41
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS_BEFORE:
|
|
42
|
+
{
|
|
43
|
+
if (filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
if (!date$1 || !date.DateUtils.getValidDate(date$1)) {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
return date.DateUtils.format(date$1) < other_date;
|
|
50
|
+
}
|
|
51
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS_AFTER:
|
|
52
|
+
{
|
|
53
|
+
if (filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
if (!date$1 || !date.DateUtils.getValidDate(date$1)) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
return date.DateUtils.format(date$1) > other_date;
|
|
60
|
+
}
|
|
61
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS_ON_OR_BEFORE:
|
|
62
|
+
{
|
|
63
|
+
if (filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
if (!date$1 || !date.DateUtils.getValidDate(date$1)) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
return date.DateUtils.format(date$1) <= other_date;
|
|
70
|
+
}
|
|
71
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS_ON_OR_AFTER:
|
|
72
|
+
{
|
|
73
|
+
if (filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term) {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
if (!date$1 || !date.DateUtils.getValidDate(date$1)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
return date.DateUtils.format(date$1) >= other_date;
|
|
80
|
+
}
|
|
81
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS_NOT:
|
|
82
|
+
{
|
|
83
|
+
if (filter_term_modifier === filterModifier.FILTER_TERM_MODIFIER_TYPE.EXACT_DATE && !filter_term) {
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
if (!date$1 || !date.DateUtils.getValidDate(date$1)) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
return date.DateUtils.format(date$1) !== other_date;
|
|
90
|
+
}
|
|
91
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
|
|
92
|
+
{
|
|
93
|
+
return !(date$1 && date.DateUtils.getValidDate(date$1));
|
|
94
|
+
}
|
|
95
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
|
|
96
|
+
{
|
|
97
|
+
return !!(date$1 && date.DateUtils.getValidDate(date$1));
|
|
98
|
+
}
|
|
99
|
+
default:
|
|
100
|
+
{
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
exports.dateFilter = dateFilter;
|