dtable-utils 0.0.2 → 0.0.3-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -2
- package/dist/index.js +1 -1
- package/es/cell-value-get/cell-value.js +227 -19
- package/es/cell-value-get/collaborator.js +9 -3
- package/es/cell-value-get/digital-sign.js +1 -1
- package/es/cell-value-get/geolocation.js +29 -5
- package/es/cell-value-get/long-text.js +1 -1
- package/es/cell-value-get/number.js +42 -18
- package/es/cell-value-get/option.js +17 -7
- package/es/cell-value-get/rate.js +6 -0
- package/es/cell-value-set/date.js +20 -0
- package/es/cell-value-set/number.js +53 -1
- package/es/color/gradient-color.js +100 -0
- package/es/column/color.js +415 -0
- package/es/column/{common.js → core.js} +3 -15
- package/es/column/date.js +2 -3
- package/es/column/number.js +3 -5
- package/es/column/option.js +115 -0
- package/es/common.js +10 -1
- 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/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 +287 -0
- package/es/filter/filter-column/array.js +82 -0
- package/es/filter/filter-column/checkbox.js +8 -0
- package/es/filter/filter-column/collaborator.js +67 -0
- package/es/filter/filter-column/creator.js +50 -0
- package/es/filter/filter-column/date.js +59 -0
- package/es/filter/filter-column/digital-sign.js +26 -0
- package/es/filter/filter-column/file.js +24 -0
- package/es/filter/filter-column/formula.js +49 -0
- package/es/filter/filter-column/geolocation.js +53 -0
- package/es/filter/filter-column/link.js +12 -0
- package/es/filter/filter-column/long-text.js +25 -0
- package/es/filter/filter-column/multiple-select.js +60 -0
- package/es/filter/filter-column/number.js +93 -0
- package/es/filter/filter-column/single-select.js +41 -0
- package/es/filter/filter-column/text.js +55 -0
- package/es/filter/filter-row.js +198 -0
- package/es/group/core.js +107 -0
- package/es/group/group-row.js +366 -0
- package/es/index.js +62 -10
- package/es/link/core.js +78 -0
- package/es/number.js +13 -0
- package/es/row/color.js +278 -0
- package/es/row/core.js +161 -0
- package/es/sort/core.js +32 -0
- package/es/sort/sort-column/array.js +63 -0
- package/es/sort/sort-column/checkbox.js +15 -0
- package/es/sort/sort-column/collaborator.js +9 -0
- package/es/sort/sort-column/date.js +25 -0
- package/es/sort/sort-column/formula.js +40 -0
- package/es/sort/sort-column/link.js +23 -0
- package/es/sort/sort-column/multiple-select.js +45 -0
- package/es/sort/sort-column/number.js +18 -0
- package/es/sort/sort-column/single-select.js +22 -0
- package/es/sort/sort-column/text.js +47 -0
- package/es/sort/sort-row.js +126 -0
- package/es/table/column.js +27 -0
- package/es/table/core.js +14 -0
- package/es/table/index.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 +135 -0
- package/es/view/formula.js +143 -0
- package/es/view/group.js +32 -0
- package/es/view/summaries.js +179 -0
- package/lib/cell-value-get/cell-value.js +231 -18
- package/lib/cell-value-get/collaborator.js +9 -2
- package/lib/cell-value-get/digital-sign.js +1 -1
- package/lib/cell-value-get/geolocation.js +30 -5
- package/lib/cell-value-get/long-text.js +1 -1
- package/lib/cell-value-get/number.js +42 -17
- package/lib/cell-value-get/option.js +18 -6
- package/lib/cell-value-get/rate.js +10 -0
- package/lib/cell-value-set/date.js +24 -0
- package/lib/cell-value-set/number.js +53 -0
- package/lib/color/gradient-color.js +110 -0
- package/lib/column/color.js +424 -0
- package/lib/column/{common.js → core.js} +3 -16
- package/lib/column/date.js +2 -3
- package/lib/column/number.js +3 -5
- package/lib/column/option.js +123 -0
- package/lib/common.js +14 -0
- 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/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 +301 -0
- package/lib/filter/filter-column/array.js +86 -0
- package/lib/filter/filter-column/checkbox.js +12 -0
- package/lib/filter/filter-column/collaborator.js +75 -0
- package/lib/filter/filter-column/creator.js +54 -0
- package/lib/filter/filter-column/date.js +63 -0
- package/lib/filter/filter-column/digital-sign.js +30 -0
- package/lib/filter/filter-column/file.js +28 -0
- package/lib/filter/filter-column/formula.js +53 -0
- package/lib/filter/filter-column/geolocation.js +57 -0
- package/lib/filter/filter-column/link.js +16 -0
- package/lib/filter/filter-column/long-text.js +29 -0
- package/lib/filter/filter-column/multiple-select.js +68 -0
- package/lib/filter/filter-column/number.js +97 -0
- package/lib/filter/filter-column/single-select.js +45 -0
- package/lib/filter/filter-column/text.js +59 -0
- package/lib/filter/filter-row.js +204 -0
- package/lib/group/core.js +117 -0
- package/lib/group/group-row.js +377 -0
- package/lib/index.js +176 -6
- package/lib/link/core.js +90 -0
- package/lib/number.js +18 -0
- package/lib/row/color.js +286 -0
- package/lib/row/core.js +170 -0
- package/lib/sort/core.js +37 -0
- package/lib/sort/sort-column/array.js +67 -0
- package/lib/sort/sort-column/checkbox.js +19 -0
- package/lib/sort/sort-column/collaborator.js +13 -0
- package/lib/sort/sort-column/date.js +29 -0
- package/lib/sort/sort-column/formula.js +44 -0
- package/lib/sort/sort-column/link.js +27 -0
- package/lib/sort/sort-column/multiple-select.js +50 -0
- package/lib/sort/sort-column/number.js +22 -0
- package/lib/sort/sort-column/single-select.js +26 -0
- package/lib/sort/sort-column/text.js +52 -0
- package/lib/sort/sort-row.js +136 -0
- package/lib/table/column.js +32 -0
- package/lib/table/core.js +18 -0
- package/lib/table/index.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 +144 -0
- package/lib/view/formula.js +150 -0
- package/lib/view/group.js +36 -0
- package/lib/view/summaries.js +185 -0
- package/package.json +4 -2
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var number = require('./number.js');
|
|
6
|
+
var date = require('./date.js');
|
|
7
|
+
var checkbox = require('./checkbox.js');
|
|
8
|
+
var text = require('./text.js');
|
|
9
|
+
var array = require('./array.js');
|
|
10
|
+
var cellValue = require('../../cell-value-get/cell-value.js');
|
|
11
|
+
var formula = require('../../constants/formula.js');
|
|
12
|
+
|
|
13
|
+
var formulaFilter = function formulaFilter(cellValue$1, filter, _ref) {
|
|
14
|
+
var username = _ref.username,
|
|
15
|
+
userId = _ref.userId;
|
|
16
|
+
var data = filter.column.data;
|
|
17
|
+
var _ref2 = data || {},
|
|
18
|
+
result_type = _ref2.result_type;
|
|
19
|
+
switch (result_type) {
|
|
20
|
+
case formula.FORMULA_RESULT_TYPE.NUMBER:
|
|
21
|
+
{
|
|
22
|
+
return number.numberFilter(cellValue$1, filter);
|
|
23
|
+
}
|
|
24
|
+
case formula.FORMULA_RESULT_TYPE.DATE:
|
|
25
|
+
{
|
|
26
|
+
return date.dateFilter(cellValue$1, filter);
|
|
27
|
+
}
|
|
28
|
+
case formula.FORMULA_RESULT_TYPE.BOOL:
|
|
29
|
+
{
|
|
30
|
+
var normalizedCellValue = cellValue$1;
|
|
31
|
+
if (cellValue$1 === 'true') {
|
|
32
|
+
normalizedCellValue = true;
|
|
33
|
+
} else if (cellValue$1 === 'false') {
|
|
34
|
+
normalizedCellValue = false;
|
|
35
|
+
}
|
|
36
|
+
return checkbox.checkboxFilter(normalizedCellValue, filter);
|
|
37
|
+
}
|
|
38
|
+
case formula.FORMULA_RESULT_TYPE.ARRAY:
|
|
39
|
+
{
|
|
40
|
+
return array.filterByArrayType(cellValue$1, filter, {
|
|
41
|
+
username: username,
|
|
42
|
+
userId: userId
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
default:
|
|
46
|
+
{
|
|
47
|
+
// FORMULA_RESULT_TYPE.STRING
|
|
48
|
+
return text.textFilter(cellValue.getFormulaDisplayString(cellValue$1, data) || '', filter, userId);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
exports.formulaFilter = formulaFilter;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var geolocation = require('../../cell-value-get/geolocation.js');
|
|
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
|
+
var geolocationFilter = function geolocationFilter(cellValue, _ref) {
|
|
12
|
+
var filter_predicate = _ref.filter_predicate,
|
|
13
|
+
filter_term = _ref.filter_term,
|
|
14
|
+
column = _ref.column;
|
|
15
|
+
var geolocation$1 = geolocation.getGeolocationDisplayString(cellValue, column.data);
|
|
16
|
+
switch (filter_predicate) {
|
|
17
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.CONTAINS:
|
|
18
|
+
{
|
|
19
|
+
if (!filter_term) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
if (!geolocation$1) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
return geolocation$1.toString().toLowerCase().indexOf(filter_term.toLowerCase()) > -1;
|
|
26
|
+
}
|
|
27
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.NOT_CONTAIN:
|
|
28
|
+
{
|
|
29
|
+
if (!filter_term || !geolocation$1) {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
return geolocation$1.toString().toLowerCase().indexOf(filter_term.toLowerCase()) < 0;
|
|
33
|
+
}
|
|
34
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS:
|
|
35
|
+
{
|
|
36
|
+
return !filter_term || geolocation$1 === filter_term;
|
|
37
|
+
}
|
|
38
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS_NOT:
|
|
39
|
+
{
|
|
40
|
+
return !filter_term || geolocation$1 !== filter_term;
|
|
41
|
+
}
|
|
42
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
|
|
43
|
+
{
|
|
44
|
+
return geolocation$1 ? false : true;
|
|
45
|
+
}
|
|
46
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
|
|
47
|
+
{
|
|
48
|
+
return geolocation$1 ? true : false;
|
|
49
|
+
}
|
|
50
|
+
default:
|
|
51
|
+
{
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
exports.geolocationFilter = geolocationFilter;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var array = require('./array.js');
|
|
6
|
+
|
|
7
|
+
var linkFilter = function linkFilter(cellValue, filter, _ref) {
|
|
8
|
+
var username = _ref.username,
|
|
9
|
+
userId = _ref.userId;
|
|
10
|
+
return array.filterByArrayType(cellValue, filter, {
|
|
11
|
+
username: username,
|
|
12
|
+
userId: userId
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
exports.linkFilter = linkFilter;
|
|
@@ -0,0 +1,29 @@
|
|
|
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 longTextFilter = function longTextFilter(cellValue, _ref) {
|
|
11
|
+
var filter_predicate = _ref.filter_predicate;
|
|
12
|
+
var text = cellValue ? cellValue.text : null;
|
|
13
|
+
switch (filter_predicate) {
|
|
14
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
|
|
15
|
+
{
|
|
16
|
+
return text ? false : true;
|
|
17
|
+
}
|
|
18
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
|
|
19
|
+
{
|
|
20
|
+
return text ? true : false;
|
|
21
|
+
}
|
|
22
|
+
default:
|
|
23
|
+
{
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
exports.longTextFilter = longTextFilter;
|
|
@@ -0,0 +1,68 @@
|
|
|
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 multipleSelectFilter = function multipleSelectFilter(cellValue, _ref) {
|
|
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 filter_term.length === 0 || Array.isArray(cellValue) && cellValue.some(function (optionId) {
|
|
22
|
+
return filter_term.includes(optionId);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.HAS_ALL_OF:
|
|
26
|
+
{
|
|
27
|
+
return filter_term.length === 0 || Array.isArray(cellValue) && filter_term.every(function (optionId) {
|
|
28
|
+
return cellValue.includes(optionId);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.HAS_NONE_OF:
|
|
32
|
+
{
|
|
33
|
+
if (filter_term.length === 0 || !Array.isArray(cellValue) || cellValue.length === 0) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
return filter_term.every(function (optionId) {
|
|
37
|
+
return cellValue.indexOf(optionId) < 0;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS_EXACTLY:
|
|
41
|
+
{
|
|
42
|
+
if (filter_term.length === 0) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
if (!Array.isArray(cellValue)) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
var uniqueArr = function uniqueArr(arr) {
|
|
49
|
+
return _toConsumableArray__default["default"](new Set(arr)).sort();
|
|
50
|
+
};
|
|
51
|
+
return uniqueArr(cellValue).toString() === uniqueArr(filter_term).toString();
|
|
52
|
+
}
|
|
53
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
|
|
54
|
+
{
|
|
55
|
+
return !Array.isArray(cellValue) || cellValue.length === 0;
|
|
56
|
+
}
|
|
57
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
|
|
58
|
+
{
|
|
59
|
+
return Array.isArray(cellValue) && cellValue.length > 0;
|
|
60
|
+
}
|
|
61
|
+
default:
|
|
62
|
+
{
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
exports.multipleSelectFilter = multipleSelectFilter;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var number = require('../../number.js');
|
|
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
|
+
var numberFilter = function numberFilter(cellValue, _ref) {
|
|
12
|
+
var filter_predicate = _ref.filter_predicate,
|
|
13
|
+
filter_term = _ref.filter_term;
|
|
14
|
+
switch (filter_predicate) {
|
|
15
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.EQUAL:
|
|
16
|
+
{
|
|
17
|
+
if (!filter_term && filter_term !== 0) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
if (!cellValue && cellValue !== 0) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
return number.isNumberEqual(filter_term, cellValue);
|
|
24
|
+
}
|
|
25
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EQUAL:
|
|
26
|
+
{
|
|
27
|
+
if (!filter_term && filter_term !== 0 || !cellValue && cellValue !== 0) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
return !number.isNumberEqual(filter_term, cellValue);
|
|
31
|
+
}
|
|
32
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.LESS:
|
|
33
|
+
{
|
|
34
|
+
if (!filter_term && filter_term !== 0) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
if (!cellValue && cellValue !== 0 || number.isNumberEqual(cellValue, filter_term)) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
return cellValue < filter_term;
|
|
41
|
+
}
|
|
42
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.GREATER:
|
|
43
|
+
{
|
|
44
|
+
if (!filter_term && filter_term !== 0) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
if (!cellValue && cellValue !== 0 || number.isNumberEqual(cellValue, filter_term)) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
return cellValue > filter_term;
|
|
51
|
+
}
|
|
52
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.LESS_OR_EQUAL:
|
|
53
|
+
{
|
|
54
|
+
if (!filter_term && filter_term !== 0) {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
if (!cellValue && cellValue !== 0) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
if (number.isNumberEqual(cellValue, filter_term)) {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
return cellValue < filter_term;
|
|
64
|
+
}
|
|
65
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.GREATER_OR_EQUAL:
|
|
66
|
+
{
|
|
67
|
+
if (!filter_term && filter_term !== 0) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
if (!cellValue && cellValue !== 0) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
return number.isNumberEqual(cellValue, filter_term) || cellValue > filter_term;
|
|
74
|
+
}
|
|
75
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
|
|
76
|
+
{
|
|
77
|
+
if (cellValue === 0) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
return !cellValue || typeof cellValue !== 'number';
|
|
81
|
+
}
|
|
82
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
|
|
83
|
+
{
|
|
84
|
+
// must be a number
|
|
85
|
+
if (cellValue === 0) {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
return cellValue && typeof cellValue === 'number' ? true : false;
|
|
89
|
+
}
|
|
90
|
+
default:
|
|
91
|
+
{
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
exports.numberFilter = numberFilter;
|
|
@@ -0,0 +1,45 @@
|
|
|
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 singleSelectFilter = function singleSelectFilter(cellValue, _ref) {
|
|
11
|
+
var filter_predicate = _ref.filter_predicate,
|
|
12
|
+
filter_term = _ref.filter_term;
|
|
13
|
+
switch (filter_predicate) {
|
|
14
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS:
|
|
15
|
+
{
|
|
16
|
+
return !filter_term || cellValue === filter_term;
|
|
17
|
+
}
|
|
18
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS_NOT:
|
|
19
|
+
{
|
|
20
|
+
return !filter_term || cellValue !== filter_term;
|
|
21
|
+
}
|
|
22
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS_ANY_OF:
|
|
23
|
+
{
|
|
24
|
+
return filter_term.length === 0 || filter_term.includes(cellValue);
|
|
25
|
+
}
|
|
26
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS_NONE_OF:
|
|
27
|
+
{
|
|
28
|
+
return filter_term.length === 0 || filter_term.indexOf(cellValue) < 0;
|
|
29
|
+
}
|
|
30
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
|
|
31
|
+
{
|
|
32
|
+
return cellValue ? false : true;
|
|
33
|
+
}
|
|
34
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
|
|
35
|
+
{
|
|
36
|
+
return cellValue ? true : false;
|
|
37
|
+
}
|
|
38
|
+
default:
|
|
39
|
+
{
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
exports.singleSelectFilter = singleSelectFilter;
|
|
@@ -0,0 +1,59 @@
|
|
|
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 textFilter = function textFilter(cellValue, _ref, userId) {
|
|
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 (!filter_term) {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
if (!cellValue) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
return cellValue.toString().toLowerCase().indexOf(filter_term.toLowerCase()) > -1;
|
|
23
|
+
}
|
|
24
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.NOT_CONTAIN:
|
|
25
|
+
{
|
|
26
|
+
if (!filter_term || !cellValue) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
return cellValue.toString().toLowerCase().indexOf(filter_term.toLowerCase()) < 0;
|
|
30
|
+
}
|
|
31
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS:
|
|
32
|
+
{
|
|
33
|
+
return !filter_term || cellValue === filter_term;
|
|
34
|
+
}
|
|
35
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS_NOT:
|
|
36
|
+
{
|
|
37
|
+
return !filter_term || cellValue !== filter_term;
|
|
38
|
+
}
|
|
39
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
|
|
40
|
+
{
|
|
41
|
+
return cellValue ? false : true;
|
|
42
|
+
}
|
|
43
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
|
|
44
|
+
{
|
|
45
|
+
return cellValue ? true : false;
|
|
46
|
+
}
|
|
47
|
+
case filterPredicate.FILTER_PREDICATE_TYPE.IS_CURRENT_USER_ID:
|
|
48
|
+
{
|
|
49
|
+
if (!userId) return false;
|
|
50
|
+
return cellValue === userId;
|
|
51
|
+
}
|
|
52
|
+
default:
|
|
53
|
+
{
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
exports.textFilter = textFilter;
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var core = require('./core.js');
|
|
6
|
+
var checkbox = require('./filter-column/checkbox.js');
|
|
7
|
+
var collaborator = require('./filter-column/collaborator.js');
|
|
8
|
+
var creator = require('./filter-column/creator.js');
|
|
9
|
+
var date$1 = require('./filter-column/date.js');
|
|
10
|
+
var digitalSign = require('./filter-column/digital-sign.js');
|
|
11
|
+
var file = require('./filter-column/file.js');
|
|
12
|
+
var formula = require('./filter-column/formula.js');
|
|
13
|
+
var geolocation = require('./filter-column/geolocation.js');
|
|
14
|
+
var text = require('./filter-column/text.js');
|
|
15
|
+
var longText = require('./filter-column/long-text.js');
|
|
16
|
+
var multipleSelect = require('./filter-column/multiple-select.js');
|
|
17
|
+
var number = require('./filter-column/number.js');
|
|
18
|
+
var singleSelect = require('./filter-column/single-select.js');
|
|
19
|
+
var link = require('./filter-column/link.js');
|
|
20
|
+
var index = require('../constants/filter/index.js');
|
|
21
|
+
var date = require('../date.js');
|
|
22
|
+
var cellType = require('../constants/cell-type.js');
|
|
23
|
+
var column = require('../constants/column.js');
|
|
24
|
+
|
|
25
|
+
var getFilterResult = function getFilterResult(row, filter, _ref) {
|
|
26
|
+
var formulaRow = _ref.formulaRow,
|
|
27
|
+
username = _ref.username,
|
|
28
|
+
userId = _ref.userId;
|
|
29
|
+
var column_key = filter.column_key,
|
|
30
|
+
column$1 = filter.column;
|
|
31
|
+
var cellValue = row[column_key];
|
|
32
|
+
switch (column$1.type) {
|
|
33
|
+
case cellType.CellType.CHECKBOX:
|
|
34
|
+
{
|
|
35
|
+
return checkbox.checkboxFilter(cellValue, filter);
|
|
36
|
+
}
|
|
37
|
+
case cellType.CellType.SINGLE_SELECT:
|
|
38
|
+
{
|
|
39
|
+
return singleSelect.singleSelectFilter(cellValue, filter);
|
|
40
|
+
}
|
|
41
|
+
case cellType.CellType.MULTIPLE_SELECT:
|
|
42
|
+
{
|
|
43
|
+
return multipleSelect.multipleSelectFilter(cellValue, filter);
|
|
44
|
+
}
|
|
45
|
+
case cellType.CellType.DURATION:
|
|
46
|
+
case cellType.CellType.NUMBER:
|
|
47
|
+
case cellType.CellType.RATE:
|
|
48
|
+
{
|
|
49
|
+
return number.numberFilter(cellValue, filter);
|
|
50
|
+
}
|
|
51
|
+
case cellType.CellType.DATE:
|
|
52
|
+
{
|
|
53
|
+
return date$1.dateFilter(cellValue, filter);
|
|
54
|
+
}
|
|
55
|
+
case cellType.CellType.CTIME:
|
|
56
|
+
case cellType.CellType.MTIME:
|
|
57
|
+
{
|
|
58
|
+
cellValue = date.DateUtils.format(cellValue, column.DATE_FORMAT_MAP.YYYY_MM_DD_HH_MM_SS);
|
|
59
|
+
return date$1.dateFilter(cellValue, filter);
|
|
60
|
+
}
|
|
61
|
+
case cellType.CellType.COLLABORATOR:
|
|
62
|
+
{
|
|
63
|
+
return collaborator.collaboratorFilter(cellValue, filter, username);
|
|
64
|
+
}
|
|
65
|
+
case cellType.CellType.LONG_TEXT:
|
|
66
|
+
{
|
|
67
|
+
return longText.longTextFilter(cellValue, filter);
|
|
68
|
+
}
|
|
69
|
+
case cellType.CellType.TEXT:
|
|
70
|
+
case cellType.CellType.AUTO_NUMBER:
|
|
71
|
+
case cellType.CellType.EMAIL:
|
|
72
|
+
case cellType.CellType.URL:
|
|
73
|
+
{
|
|
74
|
+
return text.textFilter(cellValue, filter, userId);
|
|
75
|
+
}
|
|
76
|
+
case cellType.CellType.IMAGE:
|
|
77
|
+
case cellType.CellType.FILE:
|
|
78
|
+
{
|
|
79
|
+
return file.fileFilter(cellValue, filter);
|
|
80
|
+
}
|
|
81
|
+
case cellType.CellType.LAST_MODIFIER:
|
|
82
|
+
case cellType.CellType.CREATOR:
|
|
83
|
+
{
|
|
84
|
+
return creator.creatorFilter(cellValue, filter, username);
|
|
85
|
+
}
|
|
86
|
+
case cellType.CellType.GEOLOCATION:
|
|
87
|
+
{
|
|
88
|
+
return geolocation.geolocationFilter(cellValue, filter);
|
|
89
|
+
}
|
|
90
|
+
case cellType.CellType.FORMULA:
|
|
91
|
+
case cellType.CellType.LINK_FORMULA:
|
|
92
|
+
{
|
|
93
|
+
cellValue = formulaRow[column_key];
|
|
94
|
+
return formula.formulaFilter(cellValue, filter, {
|
|
95
|
+
username: username,
|
|
96
|
+
userId: userId
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
case cellType.CellType.LINK:
|
|
100
|
+
{
|
|
101
|
+
cellValue = formulaRow[column_key];
|
|
102
|
+
cellValue = Array.isArray(cellValue) ? cellValue.map(function (linked) {
|
|
103
|
+
return linked.display_value;
|
|
104
|
+
}) : null;
|
|
105
|
+
return link.linkFilter(cellValue, filter, {
|
|
106
|
+
username: username,
|
|
107
|
+
userId: userId
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
case cellType.CellType.DIGITAL_SIGN:
|
|
111
|
+
{
|
|
112
|
+
return digitalSign.digitalSignFilter(cellValue, filter);
|
|
113
|
+
}
|
|
114
|
+
default:
|
|
115
|
+
{
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
var filterRow = function filterRow(row, filterConjunction, filters) {
|
|
121
|
+
var _ref2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
|
|
122
|
+
_ref2$formulaRow = _ref2.formulaRow,
|
|
123
|
+
formulaRow = _ref2$formulaRow === void 0 ? {} : _ref2$formulaRow,
|
|
124
|
+
_ref2$username = _ref2.username,
|
|
125
|
+
username = _ref2$username === void 0 ? '' : _ref2$username,
|
|
126
|
+
userId = _ref2.userId;
|
|
127
|
+
if (filterConjunction === index.FILTER_CONJUNCTION_TYPE.AND) {
|
|
128
|
+
return filters.every(function (filter) {
|
|
129
|
+
return getFilterResult(row, filter, {
|
|
130
|
+
formulaRow: formulaRow,
|
|
131
|
+
username: username,
|
|
132
|
+
userId: userId
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
if (filterConjunction === index.FILTER_CONJUNCTION_TYPE.OR) {
|
|
137
|
+
return filters.some(function (filter) {
|
|
138
|
+
return getFilterResult(row, filter, {
|
|
139
|
+
formulaRow: formulaRow,
|
|
140
|
+
username: username,
|
|
141
|
+
userId: userId
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
return false;
|
|
146
|
+
};
|
|
147
|
+
var filterRows = function filterRows(filterConjunction, filters, rows, _ref3) {
|
|
148
|
+
var formulaRows = _ref3.formulaRows,
|
|
149
|
+
username = _ref3.username,
|
|
150
|
+
userId = _ref3.userId;
|
|
151
|
+
var filteredRows = [];
|
|
152
|
+
var formattedFilters = core.getFormattedFilters(filters);
|
|
153
|
+
rows.forEach(function (row) {
|
|
154
|
+
var rowId = row._id;
|
|
155
|
+
var formulaRow = formulaRows && formulaRows[rowId] ? formulaRows[rowId] : {};
|
|
156
|
+
if (filterRow(row, filterConjunction, formattedFilters, {
|
|
157
|
+
formulaRow: formulaRow,
|
|
158
|
+
username: username,
|
|
159
|
+
userId: userId
|
|
160
|
+
})) {
|
|
161
|
+
filteredRows.push(rowId);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
return filteredRows;
|
|
165
|
+
};
|
|
166
|
+
var getFilteredRowsWithoutFormulaCalculation = function getFilteredRowsWithoutFormulaCalculation(filterConjunction, filters, rows, table) {
|
|
167
|
+
var _ref4 = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {},
|
|
168
|
+
_ref4$formulaRows = _ref4.formulaRows,
|
|
169
|
+
formulaRows = _ref4$formulaRows === void 0 ? null : _ref4$formulaRows,
|
|
170
|
+
_ref4$username = _ref4.username,
|
|
171
|
+
username = _ref4$username === void 0 ? null : _ref4$username,
|
|
172
|
+
_ref4$userId = _ref4.userId,
|
|
173
|
+
userId = _ref4$userId === void 0 ? null : _ref4$userId;
|
|
174
|
+
var columns = table.columns;
|
|
175
|
+
var validFilters = [];
|
|
176
|
+
try {
|
|
177
|
+
validFilters = core.deleteInvalidFilter(filters, columns);
|
|
178
|
+
} catch (err) {
|
|
179
|
+
return {
|
|
180
|
+
row_ids: [],
|
|
181
|
+
error_message: err.message
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
var filteredRows = [];
|
|
185
|
+
if (validFilters.length === 0) {
|
|
186
|
+
filteredRows = rows.map(function (row) {
|
|
187
|
+
return row._id;
|
|
188
|
+
});
|
|
189
|
+
} else {
|
|
190
|
+
filteredRows = filterRows(filterConjunction, validFilters, rows, {
|
|
191
|
+
formulaRows: formulaRows,
|
|
192
|
+
username: username,
|
|
193
|
+
userId: userId
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
return {
|
|
197
|
+
row_ids: filteredRows,
|
|
198
|
+
error_message: null
|
|
199
|
+
};
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
exports.filterRow = filterRow;
|
|
203
|
+
exports.filterRows = filterRows;
|
|
204
|
+
exports.getFilteredRowsWithoutFormulaCalculation = getFilteredRowsWithoutFormulaCalculation;
|