dtable-utils 0.0.1 → 0.0.3-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +41 -10
- 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 +42 -10
- 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
package/lib/row/core.js
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _typeof = require('@babel/runtime/helpers/typeof');
|
|
6
|
+
var cellValue = require('../cell-value-get/cell-value.js');
|
|
7
|
+
require('dayjs');
|
|
8
|
+
require('../constants/column.js');
|
|
9
|
+
var option = require('../cell-value-get/option.js');
|
|
10
|
+
require('../constants/group.js');
|
|
11
|
+
var core = require('../link/core.js');
|
|
12
|
+
var common = require('../common.js');
|
|
13
|
+
var cellType = require('../constants/cell-type.js');
|
|
14
|
+
var limit = require('../constants/limit.js');
|
|
15
|
+
|
|
16
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
17
|
+
|
|
18
|
+
var _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);
|
|
19
|
+
|
|
20
|
+
var isTableRows = function isTableRows(rows) {
|
|
21
|
+
return Array.isArray(rows) && _typeof__default["default"](rows[0]) === 'object';
|
|
22
|
+
};
|
|
23
|
+
var convertRow = function convertRow(row, value, table, view, formulaResults, convertLinkID) {
|
|
24
|
+
var _ref = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {},
|
|
25
|
+
debug = _ref.debug;
|
|
26
|
+
var result = {};
|
|
27
|
+
// eslint-disable-next-line
|
|
28
|
+
if (row.hasOwnProperty('_id')) {
|
|
29
|
+
result._id = row._id;
|
|
30
|
+
}
|
|
31
|
+
// eslint-disable-next-line
|
|
32
|
+
if (row.hasOwnProperty('_mtime')) {
|
|
33
|
+
result._mtime = row._mtime;
|
|
34
|
+
}
|
|
35
|
+
// eslint-disable-next-line
|
|
36
|
+
if (row.hasOwnProperty('_ctime')) {
|
|
37
|
+
result._ctime = row._ctime;
|
|
38
|
+
}
|
|
39
|
+
var columns = table.columns;
|
|
40
|
+
if (columns.length > limit.CONVERT_ROW_COLUMNS_LIMIT) {
|
|
41
|
+
columns = columns.slice(0, limit.CONVERT_ROW_COLUMNS_LIMIT);
|
|
42
|
+
}
|
|
43
|
+
var hiddenColumns = view ? view.hidden_columns : null;
|
|
44
|
+
for (var i = 0; i < columns.length; i++) {
|
|
45
|
+
var column = columns[i];
|
|
46
|
+
var key = column.key,
|
|
47
|
+
type = column.type,
|
|
48
|
+
columnName = column.name;
|
|
49
|
+
if (hiddenColumns && hiddenColumns.includes(key)) {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
var cellValue$1 = row[key];
|
|
53
|
+
switch (type) {
|
|
54
|
+
case cellType.CellType.SINGLE_SELECT:
|
|
55
|
+
{
|
|
56
|
+
if (!column.data) {
|
|
57
|
+
if (debug) {
|
|
58
|
+
debug('No options found');
|
|
59
|
+
}
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
result[columnName] = option.getColumnOptionNameById(column, cellValue$1);
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
case cellType.CellType.MULTIPLE_SELECT:
|
|
66
|
+
{
|
|
67
|
+
if (!column.data) {
|
|
68
|
+
if (debug) {
|
|
69
|
+
debug('No options found');
|
|
70
|
+
}
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
if (!Array.isArray(cellValue$1)) {
|
|
74
|
+
result[columnName] = '';
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
var optionNames = [];
|
|
78
|
+
for (var optionIndex = 0; optionIndex < cellValue$1.length; optionIndex++) {
|
|
79
|
+
var optionName = option.getColumnOptionNameById(column, cellValue$1[optionIndex]);
|
|
80
|
+
if (optionName) {
|
|
81
|
+
optionNames.push(optionName);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
result[columnName] = optionNames;
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
case cellType.CellType.LONG_TEXT:
|
|
88
|
+
{
|
|
89
|
+
result[columnName] = cellValue$1 ? cellValue$1.text : '';
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
case cellType.CellType.LINK:
|
|
93
|
+
{
|
|
94
|
+
if (!column.data) {
|
|
95
|
+
if (debug) {
|
|
96
|
+
debug('No links found');
|
|
97
|
+
}
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
// convertLinkID to display value
|
|
101
|
+
if (convertLinkID) {
|
|
102
|
+
// get values form formulaResults
|
|
103
|
+
var formulaRow = formulaResults && formulaResults[row._id];
|
|
104
|
+
var cellResult = formulaRow && formulaRow[key];
|
|
105
|
+
if (!cellResult || !Array.isArray(cellResult) || cellResult.length === 0) {
|
|
106
|
+
result[columnName] = null;
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
// linked with common column:
|
|
110
|
+
// cellResult
|
|
111
|
+
// [
|
|
112
|
+
// {row_id: '', displayValue: ''},
|
|
113
|
+
// {row_id: '', displayValue: ''},
|
|
114
|
+
// ]
|
|
115
|
+
|
|
116
|
+
// linked with formula column and formula result is array
|
|
117
|
+
// cellResult
|
|
118
|
+
// [
|
|
119
|
+
// {row_id: '', display_value: []},
|
|
120
|
+
// {row_id: '', display_value: []},
|
|
121
|
+
// ]
|
|
122
|
+
result[columnName] = cellResult;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
var tableID = table._id;
|
|
126
|
+
var _column$data = column.data,
|
|
127
|
+
link_id = _column$data.link_id,
|
|
128
|
+
table_id = _column$data.table_id,
|
|
129
|
+
other_table_id = _column$data.other_table_id;
|
|
130
|
+
var otherTableID = tableID === table_id ? other_table_id : table_id;
|
|
131
|
+
var links = value.links;
|
|
132
|
+
result[columnName] = core.getLinkCellValue(links, link_id, tableID, otherTableID, row._id);
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
case cellType.CellType.FORMULA:
|
|
136
|
+
case cellType.CellType.LINK_FORMULA:
|
|
137
|
+
{
|
|
138
|
+
if (!column.data || !formulaResults) {
|
|
139
|
+
if (debug) {
|
|
140
|
+
debug('No formula found');
|
|
141
|
+
}
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
var _formulaRow = formulaResults[row._id] || {};
|
|
145
|
+
result[columnName] = cellValue.getFormulaDisplayString(_formulaRow[key], column.data);
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
default:
|
|
149
|
+
{
|
|
150
|
+
// text/email/url/auto-number/
|
|
151
|
+
// check/
|
|
152
|
+
// rate/duration/
|
|
153
|
+
// file/image/button/
|
|
154
|
+
// translate in dtable-events
|
|
155
|
+
// number/
|
|
156
|
+
// date/ctime/mtime/
|
|
157
|
+
// geolocation/
|
|
158
|
+
// collaborator/creator/last-modifier/
|
|
159
|
+
result[columnName] = cellValue$1;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (common.isEmpty(result[columnName])) {
|
|
163
|
+
delete result[columnName];
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return result;
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
exports.convertRow = convertRow;
|
|
170
|
+
exports.isTableRows = isTableRows;
|
package/lib/sort/core.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var sort = require('../constants/sort.js');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* check is valid sort
|
|
9
|
+
* @param {object} sort e.g. { column_key: '', sort_type: '' }
|
|
10
|
+
* @param {array} columns
|
|
11
|
+
* @returns boolean
|
|
12
|
+
*/
|
|
13
|
+
var isValidSort = function isValidSort(sort$1, columns) {
|
|
14
|
+
var sortByColumn = sort$1 && columns.find(function (column) {
|
|
15
|
+
return column.key === sort$1.column_key;
|
|
16
|
+
});
|
|
17
|
+
if (!sortByColumn) return false;
|
|
18
|
+
return sort.SORT_COLUMN_OPTIONS.includes(sortByColumn.type);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* get valid sorts
|
|
23
|
+
* 1. sort column is exist or not
|
|
24
|
+
* 2. valid sort type
|
|
25
|
+
* @param {array} sorts
|
|
26
|
+
* @param {array} columns
|
|
27
|
+
* @returns array
|
|
28
|
+
*/
|
|
29
|
+
var getValidSorts = function getValidSorts(sorts, columns) {
|
|
30
|
+
if (!Array.isArray(sorts) || !Array.isArray(columns)) return [];
|
|
31
|
+
return sorts.filter(function (sort) {
|
|
32
|
+
return isValidSort(sort, columns);
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
exports.getValidSorts = getValidSorts;
|
|
37
|
+
exports.isValidSort = isValidSort;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var collaborator = require('../../cell-value-get/collaborator.js');
|
|
6
|
+
var cellValue = require('../../cell-value-get/cell-value.js');
|
|
7
|
+
var checkbox = require('./checkbox.js');
|
|
8
|
+
var collaborator$1 = require('./collaborator.js');
|
|
9
|
+
var date = require('./date.js');
|
|
10
|
+
var number = require('./number.js');
|
|
11
|
+
var text = require('./text.js');
|
|
12
|
+
var cellType = require('../../constants/cell-type.js');
|
|
13
|
+
var column = require('../../constants/column.js');
|
|
14
|
+
var formula = require('../../constants/formula.js');
|
|
15
|
+
|
|
16
|
+
var sortByArrayType = function sortByArrayType(currCellVal, nextCellVal, sortType, _ref) {
|
|
17
|
+
var columnData = _ref.columnData,
|
|
18
|
+
value = _ref.value;
|
|
19
|
+
var _ref2 = columnData || {},
|
|
20
|
+
array_type = _ref2.array_type;
|
|
21
|
+
if (column.NUMERIC_COLUMNS_TYPES.includes(array_type)) {
|
|
22
|
+
var currNumber = currCellVal;
|
|
23
|
+
var nextNumber = nextCellVal;
|
|
24
|
+
if (Array.isArray(currCellVal)) {
|
|
25
|
+
currNumber = currCellVal[0];
|
|
26
|
+
}
|
|
27
|
+
if (Array.isArray(nextCellVal)) {
|
|
28
|
+
nextNumber = nextCellVal[0];
|
|
29
|
+
}
|
|
30
|
+
currNumber = currNumber || currNumber === 0 ? currNumber : null;
|
|
31
|
+
nextNumber = nextNumber || nextNumber === 0 ? nextNumber : null;
|
|
32
|
+
return number.sortNumber(currNumber, nextNumber, sortType);
|
|
33
|
+
}
|
|
34
|
+
if (column.DATE_COLUMN_OPTIONS.includes(array_type)) {
|
|
35
|
+
var currDate = Array.isArray(currCellVal) ? currCellVal[0] : currCellVal;
|
|
36
|
+
var nextDate = Array.isArray(nextCellVal) ? nextCellVal[0] : nextCellVal;
|
|
37
|
+
return date.sortDate(currDate, nextDate, sortType);
|
|
38
|
+
}
|
|
39
|
+
if (array_type === cellType.CellType.CHECKBOX || array_type === formula.FORMULA_RESULT_TYPE.BOOL) {
|
|
40
|
+
var currBoolean = currCellVal;
|
|
41
|
+
var nextBoolean = nextCellVal;
|
|
42
|
+
if (Array.isArray(currCellVal)) {
|
|
43
|
+
currBoolean = currCellVal[0];
|
|
44
|
+
}
|
|
45
|
+
if (Array.isArray(nextCellVal)) {
|
|
46
|
+
nextBoolean = nextCellVal[0];
|
|
47
|
+
}
|
|
48
|
+
currBoolean = currBoolean || false;
|
|
49
|
+
nextBoolean = nextBoolean || false;
|
|
50
|
+
return checkbox.sortCheckbox(currBoolean, nextBoolean, sortType);
|
|
51
|
+
}
|
|
52
|
+
if (array_type === cellType.CellType.COLLABORATOR) {
|
|
53
|
+
var collaborators = value.collaborators;
|
|
54
|
+
var currCollaborators = Array.isArray(currCellVal) ? currCellVal : [currCellVal];
|
|
55
|
+
var nextCollaborators = Array.isArray(nextCellVal) ? nextCellVal : [nextCellVal];
|
|
56
|
+
if (collaborators) {
|
|
57
|
+
currCollaborators = collaborator.getCollaboratorsNames(currCollaborators, collaborators);
|
|
58
|
+
nextCollaborators = collaborator.getCollaboratorsNames(nextCollaborators, collaborators);
|
|
59
|
+
}
|
|
60
|
+
return collaborator$1.sortCollaborator(currCollaborators, nextCollaborators, sortType);
|
|
61
|
+
}
|
|
62
|
+
var currText = cellValue.getFormulaDisplayString(currCellVal, columnData);
|
|
63
|
+
var nextText = cellValue.getFormulaDisplayString(nextCellVal, columnData);
|
|
64
|
+
return text.sortText(currText, nextText, sortType);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
exports.sortByArrayType = sortByArrayType;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var sort = require('../../constants/sort.js');
|
|
6
|
+
|
|
7
|
+
var sortCheckbox = function sortCheckbox(currCellVal, nextCellVal, sortType) {
|
|
8
|
+
var currCellValPart = currCellVal ? 1 : -1;
|
|
9
|
+
var nextCellValPart = nextCellVal ? 1 : -1;
|
|
10
|
+
if (currCellValPart > nextCellValPart) {
|
|
11
|
+
return sortType === sort.SORT_TYPE.UP ? 1 : -1;
|
|
12
|
+
}
|
|
13
|
+
if (currCellValPart < nextCellValPart) {
|
|
14
|
+
return sortType === sort.SORT_TYPE.UP ? -1 : 1;
|
|
15
|
+
}
|
|
16
|
+
return 0;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
exports.sortCheckbox = sortCheckbox;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var text = require('./text.js');
|
|
6
|
+
|
|
7
|
+
var sortCollaborator = function sortCollaborator(currCellVal, nextCellVal, sortType) {
|
|
8
|
+
var currCellValString = Array.isArray(currCellVal) && currCellVal.length ? currCellVal.join('') : null;
|
|
9
|
+
var nextCellValString = Array.isArray(currCellVal) && currCellVal.length ? nextCellVal.join('') : null;
|
|
10
|
+
return text.sortText(currCellValString, nextCellValString, sortType);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
exports.sortCollaborator = sortCollaborator;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var sort = require('../../constants/sort.js');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* compare date
|
|
9
|
+
* @param {string} currDate date string, e.g. '2023-07-31'
|
|
10
|
+
* @param {string} nextDate date string
|
|
11
|
+
* @param {string} sortType e.g. 'up' | 'down'
|
|
12
|
+
* @returns number, e.g. 1 | -1 | 0
|
|
13
|
+
*/
|
|
14
|
+
var sortDate = function sortDate(currDate, nextDate, sortType) {
|
|
15
|
+
var emptyCurrDate = !currDate;
|
|
16
|
+
var emptyNextDate = !nextDate;
|
|
17
|
+
if (emptyCurrDate && emptyNextDate) return 0;
|
|
18
|
+
if (emptyCurrDate) return 1;
|
|
19
|
+
if (emptyNextDate) return -1;
|
|
20
|
+
if (currDate > nextDate) {
|
|
21
|
+
return sortType === sort.SORT_TYPE.UP ? 1 : -1;
|
|
22
|
+
}
|
|
23
|
+
if (currDate < nextDate) {
|
|
24
|
+
return sortType === sort.SORT_TYPE.UP ? -1 : 1;
|
|
25
|
+
}
|
|
26
|
+
return 0;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
exports.sortDate = sortDate;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var cellValue = require('../../cell-value-get/cell-value.js');
|
|
6
|
+
var array = require('./array.js');
|
|
7
|
+
var checkbox = require('./checkbox.js');
|
|
8
|
+
var date = require('./date.js');
|
|
9
|
+
var number = require('./number.js');
|
|
10
|
+
var text = require('./text.js');
|
|
11
|
+
var column = require('../../constants/column.js');
|
|
12
|
+
var formula = require('../../constants/formula.js');
|
|
13
|
+
var sort = require('../../constants/sort.js');
|
|
14
|
+
|
|
15
|
+
var sortFormula = function sortFormula(currCellVal, nextCellVal, sortType, _ref) {
|
|
16
|
+
var columnData = _ref.columnData,
|
|
17
|
+
value = _ref.value;
|
|
18
|
+
var _ref2 = columnData || {},
|
|
19
|
+
result_type = _ref2.result_type;
|
|
20
|
+
if (sort.NUMBER_SORTER_COLUMN_TYPES.includes(result_type)) {
|
|
21
|
+
var currNumber = currCellVal || currCellVal === 0 ? currCellVal - 0 : null;
|
|
22
|
+
var nextNumber = nextCellVal || nextCellVal === 0 ? nextCellVal - 0 : null;
|
|
23
|
+
return number.sortNumber(currNumber, nextNumber, sortType);
|
|
24
|
+
}
|
|
25
|
+
if (column.DATE_COLUMN_OPTIONS.includes(result_type)) {
|
|
26
|
+
return date.sortDate(currCellVal, nextCellVal, sortType);
|
|
27
|
+
}
|
|
28
|
+
if (result_type === formula.FORMULA_RESULT_TYPE.BOOL) {
|
|
29
|
+
var currBoolean = currCellVal || false;
|
|
30
|
+
var nextBoolean = nextCellVal || false;
|
|
31
|
+
return checkbox.sortCheckbox(currBoolean, nextBoolean);
|
|
32
|
+
}
|
|
33
|
+
if (result_type === formula.FORMULA_RESULT_TYPE.ARRAY) {
|
|
34
|
+
return array.sortByArrayType(currCellVal, nextCellVal, sortType, {
|
|
35
|
+
columnData: columnData,
|
|
36
|
+
value: value
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
var currText = cellValue.getFormulaDisplayString(currCellVal, columnData);
|
|
40
|
+
var nextText = cellValue.getFormulaDisplayString(nextCellVal, columnData);
|
|
41
|
+
return text.sortText(currText, nextText, sortType);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
exports.sortFormula = sortFormula;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var array = require('./array.js');
|
|
6
|
+
|
|
7
|
+
var sortLink = function sortLink(currCellVal, nextCellVal, sortType, _ref) {
|
|
8
|
+
var columnData = _ref.columnData,
|
|
9
|
+
value = _ref.value;
|
|
10
|
+
var emptyCurrCellVal = !Array.isArray(currCellVal) || currCellVal.length === 0;
|
|
11
|
+
var emptyNextCellVal = !Array.isArray(nextCellVal) || nextCellVal.length === 0;
|
|
12
|
+
if (emptyCurrCellVal && emptyNextCellVal) return 0;
|
|
13
|
+
if (emptyCurrCellVal) return 1;
|
|
14
|
+
if (emptyNextCellVal) return -1;
|
|
15
|
+
var currDisplayValues = currCellVal.map(function (linked) {
|
|
16
|
+
return linked.display_value;
|
|
17
|
+
});
|
|
18
|
+
var nextDisplayValues = nextCellVal.map(function (linked) {
|
|
19
|
+
return linked.display_value;
|
|
20
|
+
});
|
|
21
|
+
return array.sortByArrayType(currDisplayValues, nextDisplayValues, sortType, {
|
|
22
|
+
columnData: columnData,
|
|
23
|
+
value: value
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
exports.sortLink = sortLink;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var sort = require('../../constants/sort.js');
|
|
6
|
+
|
|
7
|
+
var getMultipleIndexesOrderbyOptions = function getMultipleIndexesOrderbyOptions(cellValue, option_id_index_map) {
|
|
8
|
+
var indexArr = [];
|
|
9
|
+
cellValue.forEach(function (optionId) {
|
|
10
|
+
var index = option_id_index_map[optionId];
|
|
11
|
+
if (index > -1) {
|
|
12
|
+
indexArr.push(index);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
return indexArr.sort();
|
|
16
|
+
};
|
|
17
|
+
var sortMultipleSelect = function sortMultipleSelect(currCellVal, nextCellVal, _ref) {
|
|
18
|
+
var sort_type = _ref.sort_type,
|
|
19
|
+
option_id_index_map = _ref.option_id_index_map;
|
|
20
|
+
var emptyCurrCellVal = !currCellVal || currCellVal.length === 0;
|
|
21
|
+
var emptyNextCellVal = !nextCellVal || nextCellVal.length === 0;
|
|
22
|
+
if (emptyCurrCellVal && emptyNextCellVal) return 0;
|
|
23
|
+
if (emptyCurrCellVal) return 1;
|
|
24
|
+
if (emptyNextCellVal) return -1;
|
|
25
|
+
var currCellValIndexes = getMultipleIndexesOrderbyOptions(currCellVal, option_id_index_map);
|
|
26
|
+
var nextCellValIndexes = getMultipleIndexesOrderbyOptions(nextCellVal, option_id_index_map);
|
|
27
|
+
var currLen = currCellValIndexes.length;
|
|
28
|
+
var nextLen = nextCellValIndexes.length;
|
|
29
|
+
|
|
30
|
+
// current multiple select equal to next multiple select.
|
|
31
|
+
if (currLen === nextLen && (currLen === 0 || currCellValIndexes.join('') === nextCellValIndexes.join(''))) {
|
|
32
|
+
return 0;
|
|
33
|
+
}
|
|
34
|
+
var len = Math.min(currLen, nextLen);
|
|
35
|
+
for (var i = 0; i < len; i++) {
|
|
36
|
+
if (currCellValIndexes[i] > nextCellValIndexes[i]) {
|
|
37
|
+
return sort_type === sort.SORT_TYPE.UP ? 1 : -1;
|
|
38
|
+
}
|
|
39
|
+
if (currCellValIndexes[i] < nextCellValIndexes[i]) {
|
|
40
|
+
return sort_type === sort.SORT_TYPE.UP ? -1 : 1;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (currLen > nextLen) {
|
|
44
|
+
return sort_type === sort.SORT_TYPE.UP ? 1 : -1;
|
|
45
|
+
}
|
|
46
|
+
return sort_type === sort.SORT_TYPE.UP ? -1 : 1;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
exports.getMultipleIndexesOrderbyOptions = getMultipleIndexesOrderbyOptions;
|
|
50
|
+
exports.sortMultipleSelect = sortMultipleSelect;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var sort = require('../../constants/sort.js');
|
|
6
|
+
|
|
7
|
+
var sortNumber = function sortNumber(currNum, nextNum, sortType) {
|
|
8
|
+
var emptyCurrNum = !currNum && currNum !== 0;
|
|
9
|
+
var emptyNextNum = !nextNum && nextNum !== 0;
|
|
10
|
+
if (emptyCurrNum && emptyNextNum) return 0;
|
|
11
|
+
if (emptyCurrNum) return 1;
|
|
12
|
+
if (emptyNextNum) return -1;
|
|
13
|
+
if (currNum > nextNum) {
|
|
14
|
+
return sortType === sort.SORT_TYPE.UP ? 1 : -1;
|
|
15
|
+
}
|
|
16
|
+
if (currNum < nextNum) {
|
|
17
|
+
return sortType === sort.SORT_TYPE.UP ? -1 : 1;
|
|
18
|
+
}
|
|
19
|
+
return 0;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
exports.sortNumber = sortNumber;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var sort = require('../../constants/sort.js');
|
|
6
|
+
|
|
7
|
+
var sortSingleSelect = function sortSingleSelect(currCellVal, nextCellVal, _ref) {
|
|
8
|
+
var sort_type = _ref.sort_type,
|
|
9
|
+
option_id_index_map = _ref.option_id_index_map;
|
|
10
|
+
var currentOptionIdIndex = option_id_index_map[currCellVal];
|
|
11
|
+
var nextOptionIdIndex = option_id_index_map[nextCellVal];
|
|
12
|
+
var emptyCurrCellVal = !currentOptionIdIndex && currentOptionIdIndex !== 0;
|
|
13
|
+
var emptyNextCellVal = !nextOptionIdIndex && nextOptionIdIndex !== 0;
|
|
14
|
+
if (emptyCurrCellVal && emptyNextCellVal) return 0;
|
|
15
|
+
if (emptyCurrCellVal) return 1;
|
|
16
|
+
if (emptyNextCellVal) return -1;
|
|
17
|
+
if (currentOptionIdIndex > nextOptionIdIndex) {
|
|
18
|
+
return sort_type === sort.SORT_TYPE.UP ? 1 : -1;
|
|
19
|
+
}
|
|
20
|
+
if (currentOptionIdIndex < nextOptionIdIndex) {
|
|
21
|
+
return sort_type === sort.SORT_TYPE.UP ? -1 : 1;
|
|
22
|
+
}
|
|
23
|
+
return 0;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
exports.sortSingleSelect = sortSingleSelect;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var reg = require('../../constants/reg.js');
|
|
6
|
+
var sort = require('../../constants/sort.js');
|
|
7
|
+
|
|
8
|
+
var compareString = function compareString(leftString, rightString) {
|
|
9
|
+
if (!leftString && !rightString) return 0;
|
|
10
|
+
if (!leftString) return -1;
|
|
11
|
+
if (!rightString) return 1;
|
|
12
|
+
if (typeof leftString !== 'string' || typeof rightString !== 'string') return 0;
|
|
13
|
+
var leftStringParts = leftString.match(reg.REG_STRING_NUMBER_PARTS);
|
|
14
|
+
var rightStringParts = rightString.match(reg.REG_STRING_NUMBER_PARTS);
|
|
15
|
+
var len = Math.min(leftStringParts.length, rightStringParts.length);
|
|
16
|
+
var isDigitPart;
|
|
17
|
+
var leftStringPart;
|
|
18
|
+
var rightStringPart;
|
|
19
|
+
|
|
20
|
+
// Loop through each substring part to canCompare the overall strings.
|
|
21
|
+
for (var i = 0; i < len; i++) {
|
|
22
|
+
leftStringPart = leftStringParts[i];
|
|
23
|
+
rightStringPart = rightStringParts[i];
|
|
24
|
+
isDigitPart = reg.REG_NUMBER_DIGIT.test(leftStringPart) && reg.REG_NUMBER_DIGIT.test(rightStringPart);
|
|
25
|
+
if (isDigitPart) {
|
|
26
|
+
leftStringPart = parseInt(leftStringPart, 10);
|
|
27
|
+
rightStringPart = parseInt(rightStringPart, 10);
|
|
28
|
+
if (leftStringPart > rightStringPart) {
|
|
29
|
+
return 1;
|
|
30
|
+
}
|
|
31
|
+
if (leftStringPart < rightStringPart) {
|
|
32
|
+
return -1;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (leftStringPart !== rightStringPart) {
|
|
36
|
+
return leftString.localeCompare(rightString);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return leftString.localeCompare(rightString);
|
|
40
|
+
};
|
|
41
|
+
var sortText = function sortText(currCellVal, nextCellVal, sortType) {
|
|
42
|
+
var emptyCurrCellVal = !currCellVal;
|
|
43
|
+
var emptyNextCellVal = !nextCellVal;
|
|
44
|
+
if (emptyCurrCellVal && emptyNextCellVal) return 0;
|
|
45
|
+
if (emptyCurrCellVal) return 1;
|
|
46
|
+
if (emptyNextCellVal) return -1;
|
|
47
|
+
if (nextCellVal === currCellVal) return 0;
|
|
48
|
+
return sortType === sort.SORT_TYPE.UP ? compareString(currCellVal, nextCellVal) : -1 * compareString(currCellVal, nextCellVal);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
exports.compareString = compareString;
|
|
52
|
+
exports.sortText = sortText;
|