dtable-utils 0.0.3-beta.1 → 0.0.4-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -3
- package/dist/index.js +1 -1
- package/es/cell-value-get/cell-value.js +82 -60
- package/es/cell-value-get/collaborator.js +9 -2
- package/es/cell-value-get/duration.js +3 -3
- package/es/cell-value-get/geolocation.js +23 -25
- package/es/cell-value-get/number.js +19 -11
- package/es/cell-value-get/option.js +18 -4
- package/es/cell-value-get/rate.js +5 -0
- package/es/cell-value-set/date.js +9 -3
- package/es/{column/color.js → color/column-color.js} +25 -3
- package/es/{row/color.js → color/row-color.js} +12 -1
- package/es/column/option.js +37 -7
- package/es/common.js +23 -2
- package/es/constants/formula.js +2 -1
- package/es/filter/core.js +61 -26
- package/es/filter/filter-column/array.js +35 -30
- package/es/filter/filter-column/checkbox.js +9 -3
- package/es/filter/filter-column/collaborator.js +20 -15
- package/es/filter/filter-column/creator.js +22 -13
- package/es/filter/filter-column/date.js +57 -14
- package/es/filter/filter-column/digital-sign.js +11 -8
- package/es/filter/filter-column/file.js +9 -6
- package/es/filter/filter-column/formula.js +16 -8
- package/es/filter/filter-column/geolocation.js +12 -7
- package/es/filter/filter-column/link.js +10 -2
- package/es/filter/filter-column/long-text.js +10 -7
- package/es/filter/filter-column/multiple-select.js +17 -13
- package/es/filter/filter-column/number.js +25 -21
- package/es/filter/filter-column/single-select.js +14 -10
- package/es/filter/filter-column/text.js +18 -13
- package/es/filter/filter-row.js +35 -0
- package/es/group/core.js +15 -6
- package/es/group/group-row.js +39 -3
- package/es/index.js +10 -10
- package/es/link/core.js +14 -14
- package/es/number.js +11 -3
- package/es/row/core.js +20 -1
- package/es/sort/core.js +66 -7
- package/es/sort/sort-column/array.js +39 -30
- package/es/sort/sort-column/checkbox.js +12 -5
- package/es/sort/sort-column/collaborator.js +11 -4
- package/es/sort/sort-column/date.js +12 -12
- package/es/sort/sort-column/formula.js +21 -12
- package/es/sort/sort-column/link.js +18 -9
- package/es/sort/sort-column/multiple-select.js +26 -26
- package/es/sort/sort-column/number.js +15 -8
- package/es/sort/sort-column/single-select.js +16 -8
- package/es/sort/sort-column/text.js +24 -10
- package/es/sort/sort-row.js +22 -38
- package/es/table/column.js +2 -2
- package/es/table/core.js +2 -2
- package/es/table/row.js +4 -4
- package/es/view/core.js +20 -21
- package/es/view/formula.js +35 -31
- package/es/view/group.js +4 -4
- package/es/view/summaries.js +17 -29
- package/lib/cell-value-get/cell-value.js +82 -60
- package/lib/cell-value-get/collaborator.js +9 -2
- package/lib/cell-value-get/duration.js +4 -2
- package/lib/cell-value-get/geolocation.js +23 -25
- package/lib/cell-value-get/number.js +19 -11
- package/lib/cell-value-get/option.js +18 -4
- package/lib/cell-value-get/rate.js +5 -0
- package/lib/cell-value-set/date.js +9 -3
- package/lib/{column/color.js → color/column-color.js} +31 -9
- package/lib/{row/color.js → color/row-color.js} +12 -1
- package/lib/column/option.js +37 -7
- package/lib/common.js +23 -1
- package/lib/constants/formula.js +2 -0
- package/lib/filter/core.js +61 -26
- package/lib/filter/filter-column/array.js +35 -30
- package/lib/filter/filter-column/checkbox.js +9 -3
- package/lib/filter/filter-column/collaborator.js +20 -15
- package/lib/filter/filter-column/creator.js +22 -13
- package/lib/filter/filter-column/date.js +57 -14
- package/lib/filter/filter-column/digital-sign.js +11 -8
- package/lib/filter/filter-column/file.js +9 -6
- package/lib/filter/filter-column/formula.js +16 -8
- package/lib/filter/filter-column/geolocation.js +12 -7
- package/lib/filter/filter-column/link.js +10 -2
- package/lib/filter/filter-column/long-text.js +10 -7
- package/lib/filter/filter-column/multiple-select.js +17 -13
- package/lib/filter/filter-column/number.js +25 -21
- package/lib/filter/filter-column/single-select.js +14 -10
- package/lib/filter/filter-column/text.js +18 -13
- package/lib/filter/filter-row.js +35 -0
- package/lib/group/core.js +15 -6
- package/lib/group/group-row.js +39 -3
- package/lib/index.js +47 -45
- package/lib/link/core.js +14 -14
- package/lib/number.js +11 -3
- package/lib/row/core.js +20 -1
- package/lib/sort/core.js +71 -6
- package/lib/sort/sort-column/array.js +39 -30
- package/lib/sort/sort-column/checkbox.js +12 -5
- package/lib/sort/sort-column/collaborator.js +11 -4
- package/lib/sort/sort-column/date.js +12 -12
- package/lib/sort/sort-column/formula.js +21 -12
- package/lib/sort/sort-column/link.js +18 -9
- package/lib/sort/sort-column/multiple-select.js +25 -26
- package/lib/sort/sort-column/number.js +15 -8
- package/lib/sort/sort-column/single-select.js +16 -8
- package/lib/sort/sort-column/text.js +24 -10
- package/lib/sort/sort-row.js +21 -42
- package/lib/table/column.js +2 -2
- package/lib/table/core.js +2 -2
- package/lib/table/row.js +4 -4
- package/lib/view/core.js +20 -21
- package/lib/view/formula.js +35 -31
- package/lib/view/group.js +4 -4
- package/lib/view/summaries.js +17 -29
- package/package.json +1 -1
- package/es/table/index.js +0 -14
- package/lib/table/index.js +0 -18
|
@@ -13,55 +13,64 @@ var cellType = require('../../constants/cell-type.js');
|
|
|
13
13
|
var column = require('../../constants/column.js');
|
|
14
14
|
var formula = require('../../constants/formula.js');
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Sort by array type
|
|
18
|
+
* @param {array} leftArray
|
|
19
|
+
* @param {array} rightArray
|
|
20
|
+
* @param {string} sortType e.g. 'up' | 'down
|
|
21
|
+
* @param {object} columnData e.g. { result_type, array_type, array_data, ... }
|
|
22
|
+
* @param {object} value e.g. { collaborators, ... }
|
|
23
|
+
* @returns number
|
|
24
|
+
*/
|
|
25
|
+
var sortByArrayType = function sortByArrayType(leftArray, rightArray, sortType, _ref) {
|
|
17
26
|
var columnData = _ref.columnData,
|
|
18
27
|
value = _ref.value;
|
|
19
28
|
var _ref2 = columnData || {},
|
|
20
29
|
array_type = _ref2.array_type;
|
|
21
30
|
if (column.NUMERIC_COLUMNS_TYPES.includes(array_type)) {
|
|
22
|
-
var
|
|
23
|
-
var
|
|
24
|
-
if (Array.isArray(
|
|
25
|
-
|
|
31
|
+
var leftNumber = leftArray;
|
|
32
|
+
var rightNumber = rightArray;
|
|
33
|
+
if (Array.isArray(leftArray)) {
|
|
34
|
+
leftNumber = leftArray[0];
|
|
26
35
|
}
|
|
27
|
-
if (Array.isArray(
|
|
28
|
-
|
|
36
|
+
if (Array.isArray(rightArray)) {
|
|
37
|
+
rightNumber = rightArray[0];
|
|
29
38
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
return number.sortNumber(
|
|
39
|
+
leftNumber = leftNumber || leftNumber === 0 ? leftNumber : null;
|
|
40
|
+
rightNumber = rightNumber || rightNumber === 0 ? rightNumber : null;
|
|
41
|
+
return number.sortNumber(leftNumber, rightNumber, sortType);
|
|
33
42
|
}
|
|
34
43
|
if (column.DATE_COLUMN_OPTIONS.includes(array_type)) {
|
|
35
|
-
var
|
|
36
|
-
var
|
|
37
|
-
return date.sortDate(
|
|
44
|
+
var leftDate = Array.isArray(leftArray) ? leftArray[0] : leftArray;
|
|
45
|
+
var rightDate = Array.isArray(rightArray) ? rightArray[0] : rightArray;
|
|
46
|
+
return date.sortDate(leftDate, rightDate, sortType);
|
|
38
47
|
}
|
|
39
48
|
if (array_type === cellType.CellType.CHECKBOX || array_type === formula.FORMULA_RESULT_TYPE.BOOL) {
|
|
40
|
-
var
|
|
41
|
-
var
|
|
42
|
-
if (Array.isArray(
|
|
43
|
-
|
|
49
|
+
var leftBool = leftArray;
|
|
50
|
+
var rightBool = rightArray;
|
|
51
|
+
if (Array.isArray(leftArray)) {
|
|
52
|
+
leftBool = leftArray[0];
|
|
44
53
|
}
|
|
45
|
-
if (Array.isArray(
|
|
46
|
-
|
|
54
|
+
if (Array.isArray(rightArray)) {
|
|
55
|
+
rightBool = rightArray[0];
|
|
47
56
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return checkbox.sortCheckbox(
|
|
57
|
+
leftBool = leftBool || false;
|
|
58
|
+
rightBool = rightBool || false;
|
|
59
|
+
return checkbox.sortCheckbox(leftBool, rightBool, sortType);
|
|
51
60
|
}
|
|
52
61
|
if (array_type === cellType.CellType.COLLABORATOR) {
|
|
53
62
|
var collaborators = value.collaborators;
|
|
54
|
-
var
|
|
55
|
-
var
|
|
63
|
+
var leftCollaborators = Array.isArray(leftArray) ? leftArray : [leftArray];
|
|
64
|
+
var rightCollaborators = Array.isArray(rightArray) ? rightArray : [rightArray];
|
|
56
65
|
if (collaborators) {
|
|
57
|
-
|
|
58
|
-
|
|
66
|
+
leftCollaborators = collaborator.getCollaboratorsNames(leftCollaborators, collaborators);
|
|
67
|
+
rightCollaborators = collaborator.getCollaboratorsNames(rightCollaborators, collaborators);
|
|
59
68
|
}
|
|
60
|
-
return collaborator$1.sortCollaborator(
|
|
69
|
+
return collaborator$1.sortCollaborator(leftCollaborators, rightCollaborators, sortType);
|
|
61
70
|
}
|
|
62
|
-
var
|
|
63
|
-
var
|
|
64
|
-
return text.sortText(
|
|
71
|
+
var leftText = cellValue.getFormulaDisplayString(leftArray, columnData);
|
|
72
|
+
var rightText = cellValue.getFormulaDisplayString(rightArray, columnData);
|
|
73
|
+
return text.sortText(leftText, rightText, sortType);
|
|
65
74
|
};
|
|
66
75
|
|
|
67
76
|
exports.sortByArrayType = sortByArrayType;
|
|
@@ -4,13 +4,20 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var sort = require('../../constants/sort.js');
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Sort checkbox
|
|
9
|
+
* @param {bool} leftChecked
|
|
10
|
+
* @param {bool} rightChecked
|
|
11
|
+
* @param {string} sortType e.g. 'up' | 'down
|
|
12
|
+
* @returns number
|
|
13
|
+
*/
|
|
14
|
+
var sortCheckbox = function sortCheckbox(leftChecked, rightChecked, sortType) {
|
|
15
|
+
var normalizedCurrChecked = leftChecked ? 1 : -1;
|
|
16
|
+
var normalizedNextChecked = rightChecked ? 1 : -1;
|
|
17
|
+
if (normalizedCurrChecked > normalizedNextChecked) {
|
|
11
18
|
return sortType === sort.SORT_TYPE.UP ? 1 : -1;
|
|
12
19
|
}
|
|
13
|
-
if (
|
|
20
|
+
if (normalizedCurrChecked < normalizedNextChecked) {
|
|
14
21
|
return sortType === sort.SORT_TYPE.UP ? -1 : 1;
|
|
15
22
|
}
|
|
16
23
|
return 0;
|
|
@@ -4,10 +4,17 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var text = require('./text.js');
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Sort collaborator with email or name
|
|
9
|
+
* @param {array} leftCollaborators e.g. [ collaborator.email, ... ] | [ collaborator.name, ... ]
|
|
10
|
+
* @param {array} rightCollaborators
|
|
11
|
+
* @param {string} sortType e.g. 'up' | 'down
|
|
12
|
+
* @returns number
|
|
13
|
+
*/
|
|
14
|
+
var sortCollaborator = function sortCollaborator(leftCollaborators, rightCollaborators, sortType) {
|
|
15
|
+
var sLeftCollaborators = Array.isArray(leftCollaborators) && leftCollaborators.length ? leftCollaborators.join('') : null;
|
|
16
|
+
var sRightCollaborators = Array.isArray(rightCollaborators) && rightCollaborators.length ? rightCollaborators.join('') : null;
|
|
17
|
+
return text.sortText(sLeftCollaborators, sRightCollaborators, sortType);
|
|
11
18
|
};
|
|
12
19
|
|
|
13
20
|
exports.sortCollaborator = sortCollaborator;
|
|
@@ -5,22 +5,22 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var sort = require('../../constants/sort.js');
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
* @param {string}
|
|
10
|
-
* @param {string} nextDate
|
|
8
|
+
* Sort date
|
|
9
|
+
* @param {string} leftDate e.g. '2023-07-31'
|
|
10
|
+
* @param {string} nextDate
|
|
11
11
|
* @param {string} sortType e.g. 'up' | 'down'
|
|
12
|
-
* @returns number
|
|
12
|
+
* @returns number
|
|
13
13
|
*/
|
|
14
|
-
var sortDate = function sortDate(
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
if (
|
|
18
|
-
if (
|
|
19
|
-
if (
|
|
20
|
-
if (
|
|
14
|
+
var sortDate = function sortDate(leftDate, rightDate, sortType) {
|
|
15
|
+
var emptyLeftDate = !leftDate;
|
|
16
|
+
var emptyRightDate = !rightDate;
|
|
17
|
+
if (emptyLeftDate && emptyRightDate) return 0;
|
|
18
|
+
if (emptyLeftDate) return 1;
|
|
19
|
+
if (emptyRightDate) return -1;
|
|
20
|
+
if (leftDate > rightDate) {
|
|
21
21
|
return sortType === sort.SORT_TYPE.UP ? 1 : -1;
|
|
22
22
|
}
|
|
23
|
-
if (
|
|
23
|
+
if (leftDate < rightDate) {
|
|
24
24
|
return sortType === sort.SORT_TYPE.UP ? -1 : 1;
|
|
25
25
|
}
|
|
26
26
|
return 0;
|
|
@@ -12,33 +12,42 @@ var column = require('../../constants/column.js');
|
|
|
12
12
|
var formula = require('../../constants/formula.js');
|
|
13
13
|
var sort = require('../../constants/sort.js');
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Sort formula
|
|
17
|
+
* @param {any} leftComputedValue compute value from formula row
|
|
18
|
+
* @param {any} rightComputedValue
|
|
19
|
+
* @param {string} sortType e.g. 'up' | 'down
|
|
20
|
+
* @param {object} columnData e.g. { result_type, array_type, array_data, ... }
|
|
21
|
+
* @param {object} value e.g. { collaborators, ... }
|
|
22
|
+
* @returns number
|
|
23
|
+
*/
|
|
24
|
+
var sortFormula = function sortFormula(leftComputedValue, rightComputedValue, sortType, _ref) {
|
|
16
25
|
var columnData = _ref.columnData,
|
|
17
26
|
value = _ref.value;
|
|
18
27
|
var _ref2 = columnData || {},
|
|
19
28
|
result_type = _ref2.result_type;
|
|
20
29
|
if (sort.NUMBER_SORTER_COLUMN_TYPES.includes(result_type)) {
|
|
21
|
-
var
|
|
22
|
-
var
|
|
23
|
-
return number.sortNumber(
|
|
30
|
+
var leftNumber = leftComputedValue || leftComputedValue === 0 ? leftComputedValue - 0 : null;
|
|
31
|
+
var rightNumber = rightComputedValue || rightComputedValue === 0 ? rightComputedValue - 0 : null;
|
|
32
|
+
return number.sortNumber(leftNumber, rightNumber, sortType);
|
|
24
33
|
}
|
|
25
34
|
if (column.DATE_COLUMN_OPTIONS.includes(result_type)) {
|
|
26
|
-
return date.sortDate(
|
|
35
|
+
return date.sortDate(leftComputedValue, rightComputedValue, sortType);
|
|
27
36
|
}
|
|
28
37
|
if (result_type === formula.FORMULA_RESULT_TYPE.BOOL) {
|
|
29
|
-
var
|
|
30
|
-
var
|
|
31
|
-
return checkbox.sortCheckbox(
|
|
38
|
+
var leftBoolean = leftComputedValue || false;
|
|
39
|
+
var rightBoolean = rightComputedValue || false;
|
|
40
|
+
return checkbox.sortCheckbox(leftBoolean, rightBoolean, sortType);
|
|
32
41
|
}
|
|
33
42
|
if (result_type === formula.FORMULA_RESULT_TYPE.ARRAY) {
|
|
34
|
-
return array.sortByArrayType(
|
|
43
|
+
return array.sortByArrayType(leftComputedValue, rightComputedValue, sortType, {
|
|
35
44
|
columnData: columnData,
|
|
36
45
|
value: value
|
|
37
46
|
});
|
|
38
47
|
}
|
|
39
|
-
var
|
|
40
|
-
var
|
|
41
|
-
return text.sortText(
|
|
48
|
+
var leftText = cellValue.getFormulaDisplayString(leftComputedValue, columnData);
|
|
49
|
+
var rightText = cellValue.getFormulaDisplayString(rightComputedValue, columnData);
|
|
50
|
+
return text.sortText(leftText, rightText, sortType);
|
|
42
51
|
};
|
|
43
52
|
|
|
44
53
|
exports.sortFormula = sortFormula;
|
|
@@ -4,21 +4,30 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var array = require('./array.js');
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Sort link
|
|
9
|
+
* @param {array} leftLinkedCellValues e.g. [{ row_id, display_value }]
|
|
10
|
+
* @param {array} rightLinkedCellValues
|
|
11
|
+
* @param {string} sortType e.g. 'up' | 'down
|
|
12
|
+
* @param {object} columnData e.g. { result_type, array_type, array_data, ... }
|
|
13
|
+
* @param {object} value e.g. { collaborators, ... }
|
|
14
|
+
* @returns number
|
|
15
|
+
*/
|
|
16
|
+
var sortLink = function sortLink(leftLinkedCellValues, rightLinkedCellValues, sortType, _ref) {
|
|
8
17
|
var columnData = _ref.columnData,
|
|
9
18
|
value = _ref.value;
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
if (
|
|
13
|
-
if (
|
|
14
|
-
if (
|
|
15
|
-
var
|
|
19
|
+
var emptyLeftLinkedCellValues = !Array.isArray(leftLinkedCellValues) || leftLinkedCellValues.length === 0;
|
|
20
|
+
var emptyRightLinkedCellValues = !Array.isArray(rightLinkedCellValues) || rightLinkedCellValues.length === 0;
|
|
21
|
+
if (emptyLeftLinkedCellValues && emptyRightLinkedCellValues) return 0;
|
|
22
|
+
if (emptyLeftLinkedCellValues) return 1;
|
|
23
|
+
if (emptyRightLinkedCellValues) return -1;
|
|
24
|
+
var leftDisplayValues = leftLinkedCellValues.map(function (linked) {
|
|
16
25
|
return linked.display_value;
|
|
17
26
|
});
|
|
18
|
-
var
|
|
27
|
+
var rightDisplayValues = rightLinkedCellValues.map(function (linked) {
|
|
19
28
|
return linked.display_value;
|
|
20
29
|
});
|
|
21
|
-
return array.sortByArrayType(
|
|
30
|
+
return array.sortByArrayType(leftDisplayValues, rightDisplayValues, sortType, {
|
|
22
31
|
columnData: columnData,
|
|
23
32
|
value: value
|
|
24
33
|
});
|
|
@@ -2,49 +2,48 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var core = require('../core.js');
|
|
5
6
|
var sort = require('../../constants/sort.js');
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
};
|
|
17
|
-
var sortMultipleSelect = function sortMultipleSelect(currCellVal, nextCellVal, _ref) {
|
|
8
|
+
/**
|
|
9
|
+
* Sort multiple-select
|
|
10
|
+
* @param {array} leftOptionIds the ids of options
|
|
11
|
+
* @param {array} rightOptionIds
|
|
12
|
+
* @param {string} sort_type e.g. 'up' | 'down'
|
|
13
|
+
* @param {object} option_id_index_map e.g. { [option.id]: 0, ... }
|
|
14
|
+
* @returns number
|
|
15
|
+
*/
|
|
16
|
+
var sortMultipleSelect = function sortMultipleSelect(leftOptionIds, rightOptionIds, _ref) {
|
|
18
17
|
var sort_type = _ref.sort_type,
|
|
19
18
|
option_id_index_map = _ref.option_id_index_map;
|
|
20
|
-
var
|
|
21
|
-
var
|
|
22
|
-
if (
|
|
23
|
-
if (
|
|
24
|
-
if (
|
|
25
|
-
var
|
|
26
|
-
var
|
|
27
|
-
var
|
|
28
|
-
var
|
|
19
|
+
var emptyLeftOptionIds = !leftOptionIds || leftOptionIds.length === 0;
|
|
20
|
+
var emptyRightOptionIds = !rightOptionIds || rightOptionIds.length === 0;
|
|
21
|
+
if (emptyLeftOptionIds && emptyRightOptionIds) return 0;
|
|
22
|
+
if (emptyLeftOptionIds) return 1;
|
|
23
|
+
if (emptyRightOptionIds) return -1;
|
|
24
|
+
var leftOptionIndexes = core.getMultipleIndexesOrderbyOptions(leftOptionIds, option_id_index_map);
|
|
25
|
+
var rightOptionIndexes = core.getMultipleIndexesOrderbyOptions(rightOptionIds, option_id_index_map);
|
|
26
|
+
var leftOptionsLen = leftOptionIndexes.length;
|
|
27
|
+
var rightOptionsLen = rightOptionIndexes.length;
|
|
29
28
|
|
|
30
29
|
// current multiple select equal to next multiple select.
|
|
31
|
-
if (
|
|
30
|
+
if (leftOptionsLen === rightOptionsLen && (leftOptionsLen === 0 || leftOptionIndexes.join('') === rightOptionIndexes.join(''))) {
|
|
32
31
|
return 0;
|
|
33
32
|
}
|
|
34
|
-
var len = Math.min(
|
|
33
|
+
var len = Math.min(leftOptionsLen, rightOptionsLen);
|
|
35
34
|
for (var i = 0; i < len; i++) {
|
|
36
|
-
if (
|
|
35
|
+
if (leftOptionIndexes[i] > rightOptionIndexes[i]) {
|
|
37
36
|
return sort_type === sort.SORT_TYPE.UP ? 1 : -1;
|
|
38
37
|
}
|
|
39
|
-
if (
|
|
38
|
+
if (leftOptionIndexes[i] < rightOptionIndexes[i]) {
|
|
40
39
|
return sort_type === sort.SORT_TYPE.UP ? -1 : 1;
|
|
41
40
|
}
|
|
42
41
|
}
|
|
43
|
-
if (
|
|
42
|
+
if (leftOptionsLen > rightOptionsLen) {
|
|
44
43
|
return sort_type === sort.SORT_TYPE.UP ? 1 : -1;
|
|
45
44
|
}
|
|
46
45
|
return sort_type === sort.SORT_TYPE.UP ? -1 : 1;
|
|
47
46
|
};
|
|
48
47
|
|
|
49
|
-
exports.getMultipleIndexesOrderbyOptions = getMultipleIndexesOrderbyOptions;
|
|
48
|
+
exports.getMultipleIndexesOrderbyOptions = core.getMultipleIndexesOrderbyOptions;
|
|
50
49
|
exports.sortMultipleSelect = sortMultipleSelect;
|
|
@@ -4,16 +4,23 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var sort = require('../../constants/sort.js');
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Sort number
|
|
9
|
+
* @param {number} leftNumber
|
|
10
|
+
* @param {number} rightNumber
|
|
11
|
+
* @param {string} sortType e.g. 'up' | 'down'
|
|
12
|
+
* @returns number
|
|
13
|
+
*/
|
|
14
|
+
var sortNumber = function sortNumber(leftNumber, rightNumber, sortType) {
|
|
15
|
+
var emptyLeftNumber = !leftNumber && leftNumber !== 0;
|
|
16
|
+
var emptyRightNumber = !rightNumber && rightNumber !== 0;
|
|
17
|
+
if (emptyLeftNumber && emptyRightNumber) return 0;
|
|
18
|
+
if (emptyLeftNumber) return 1;
|
|
19
|
+
if (emptyRightNumber) return -1;
|
|
20
|
+
if (leftNumber > rightNumber) {
|
|
14
21
|
return sortType === sort.SORT_TYPE.UP ? 1 : -1;
|
|
15
22
|
}
|
|
16
|
-
if (
|
|
23
|
+
if (leftNumber < rightNumber) {
|
|
17
24
|
return sortType === sort.SORT_TYPE.UP ? -1 : 1;
|
|
18
25
|
}
|
|
19
26
|
return 0;
|
|
@@ -4,16 +4,24 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var sort = require('../../constants/sort.js');
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Sort single-select
|
|
9
|
+
* @param {string} leftOptionId the id of option
|
|
10
|
+
* @param {string} rightOptionId
|
|
11
|
+
* @param {string} sort_type e.g. 'up' | 'down'
|
|
12
|
+
* @param {object} option_id_index_map e.g. { [option.id]: 0, ... }
|
|
13
|
+
* @returns number
|
|
14
|
+
*/
|
|
15
|
+
var sortSingleSelect = function sortSingleSelect(leftOptionId, rightOptionId, _ref) {
|
|
8
16
|
var sort_type = _ref.sort_type,
|
|
9
17
|
option_id_index_map = _ref.option_id_index_map;
|
|
10
|
-
var currentOptionIdIndex = option_id_index_map[
|
|
11
|
-
var nextOptionIdIndex = option_id_index_map[
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
if (
|
|
15
|
-
if (
|
|
16
|
-
if (
|
|
18
|
+
var currentOptionIdIndex = option_id_index_map[leftOptionId];
|
|
19
|
+
var nextOptionIdIndex = option_id_index_map[rightOptionId];
|
|
20
|
+
var emptyLeftOptionId = !currentOptionIdIndex && currentOptionIdIndex !== 0;
|
|
21
|
+
var emptyRightOptionId = !nextOptionIdIndex && nextOptionIdIndex !== 0;
|
|
22
|
+
if (emptyLeftOptionId && emptyRightOptionId) return 0;
|
|
23
|
+
if (emptyLeftOptionId) return 1;
|
|
24
|
+
if (emptyRightOptionId) return -1;
|
|
17
25
|
if (currentOptionIdIndex > nextOptionIdIndex) {
|
|
18
26
|
return sort_type === sort.SORT_TYPE.UP ? 1 : -1;
|
|
19
27
|
}
|
|
@@ -5,6 +5,12 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var reg = require('../../constants/reg.js');
|
|
6
6
|
var sort = require('../../constants/sort.js');
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Compare strings
|
|
10
|
+
* @param {string} leftString
|
|
11
|
+
* @param {string} rightString
|
|
12
|
+
* @returns number
|
|
13
|
+
*/
|
|
8
14
|
var compareString = function compareString(leftString, rightString) {
|
|
9
15
|
if (!leftString && !rightString) return 0;
|
|
10
16
|
if (!leftString) return -1;
|
|
@@ -23,8 +29,8 @@ var compareString = function compareString(leftString, rightString) {
|
|
|
23
29
|
rightStringPart = rightStringParts[i];
|
|
24
30
|
isDigitPart = reg.REG_NUMBER_DIGIT.test(leftStringPart) && reg.REG_NUMBER_DIGIT.test(rightStringPart);
|
|
25
31
|
if (isDigitPart) {
|
|
26
|
-
leftStringPart = parseInt(leftStringPart
|
|
27
|
-
rightStringPart = parseInt(rightStringPart
|
|
32
|
+
leftStringPart = parseInt(leftStringPart);
|
|
33
|
+
rightStringPart = parseInt(rightStringPart);
|
|
28
34
|
if (leftStringPart > rightStringPart) {
|
|
29
35
|
return 1;
|
|
30
36
|
}
|
|
@@ -38,14 +44,22 @@ var compareString = function compareString(leftString, rightString) {
|
|
|
38
44
|
}
|
|
39
45
|
return leftString.localeCompare(rightString);
|
|
40
46
|
};
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Sort text
|
|
50
|
+
* @param {string} leftText
|
|
51
|
+
* @param {string} rightText
|
|
52
|
+
* @param {string} sortType e.g. 'up' | 'down
|
|
53
|
+
* @returns number
|
|
54
|
+
*/
|
|
55
|
+
var sortText = function sortText(leftText, rightText, sortType) {
|
|
56
|
+
var emptyLeftText = !leftText;
|
|
57
|
+
var emptyRightText = !rightText;
|
|
58
|
+
if (emptyLeftText && emptyRightText) return 0;
|
|
59
|
+
if (emptyLeftText) return 1;
|
|
60
|
+
if (emptyRightText) return -1;
|
|
61
|
+
if (rightText === leftText) return 0;
|
|
62
|
+
return sortType === sort.SORT_TYPE.UP ? compareString(leftText, rightText) : -1 * compareString(leftText, rightText);
|
|
49
63
|
};
|
|
50
64
|
|
|
51
65
|
exports.compareString = compareString;
|
package/lib/sort/sort-row.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
6
5
|
var core = require('./core.js');
|
|
7
6
|
var checkbox = require('./sort-column/checkbox.js');
|
|
8
7
|
var collaborator$1 = require('./sort-column/collaborator.js');
|
|
@@ -18,49 +17,20 @@ var formula$1 = require('./sort-column/formula.js');
|
|
|
18
17
|
var link = require('./sort-column/link.js');
|
|
19
18
|
var multipleSelect = require('./sort-column/multiple-select.js');
|
|
20
19
|
var singleSelect = require('./sort-column/single-select.js');
|
|
21
|
-
var option = require('../column/option.js');
|
|
22
20
|
var sort = require('../constants/sort.js');
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
var cleanSorts = [];
|
|
33
|
-
validSorts.forEach(function (sort) {
|
|
34
|
-
var column_key = sort.column_key;
|
|
35
|
-
var sortColumn = columns.find(function (column) {
|
|
36
|
-
return column.key === column_key;
|
|
37
|
-
});
|
|
38
|
-
var columnType = sortColumn.type;
|
|
39
|
-
var newSort = _objectSpread(_objectSpread({}, sort), {}, {
|
|
40
|
-
column: sortColumn
|
|
41
|
-
});
|
|
42
|
-
switch (columnType) {
|
|
43
|
-
case cellType.CellType.SINGLE_SELECT:
|
|
44
|
-
case cellType.CellType.MULTIPLE_SELECT:
|
|
45
|
-
{
|
|
46
|
-
var options = option.getColumnOptions(sortColumn);
|
|
47
|
-
var option_id_index_map = {};
|
|
48
|
-
options.forEach(function (option, index) {
|
|
49
|
-
option_id_index_map[option.id] = index;
|
|
50
|
-
});
|
|
51
|
-
newSort.option_id_index_map = option_id_index_map;
|
|
52
|
-
break;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
cleanSorts.push(newSort);
|
|
56
|
-
});
|
|
57
|
-
return cleanSorts;
|
|
58
|
-
};
|
|
59
|
-
var sortRowsWithMultiSorts = function sortRowsWithMultiSorts(sortRows, sorts, _ref) {
|
|
22
|
+
/**
|
|
23
|
+
* Sort rows with multiple sorts
|
|
24
|
+
* @param {array} tableRows e.g. [{ _id, [column.key]: '', ...}, ...]
|
|
25
|
+
* @param {array} sorts e.g. [{ column_key, sort_type, column, ... }, ...]
|
|
26
|
+
* @param {object} formulaRows computed value of formula, link-formula, link etc.
|
|
27
|
+
* @param {object} value e.g. { collaborators, ... }
|
|
28
|
+
*/
|
|
29
|
+
var sortRowsWithMultiSorts = function sortRowsWithMultiSorts(tableRows, sorts, _ref) {
|
|
60
30
|
var _ref$formulaRows = _ref.formulaRows,
|
|
61
31
|
formulaRows = _ref$formulaRows === void 0 ? {} : _ref$formulaRows,
|
|
62
32
|
value = _ref.value;
|
|
63
|
-
|
|
33
|
+
tableRows.sort(function (currentRow, nextRow) {
|
|
64
34
|
var initValue = 0;
|
|
65
35
|
sorts.forEach(function (sort$1) {
|
|
66
36
|
var column_key = sort$1.column_key,
|
|
@@ -114,13 +84,23 @@ var sortRowsWithMultiSorts = function sortRowsWithMultiSorts(sortRows, sorts, _r
|
|
|
114
84
|
return initValue;
|
|
115
85
|
});
|
|
116
86
|
};
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Get sorted rows ids from table rows with multiple sorts
|
|
90
|
+
* @param {array} sorts e.g. [{ column_key, sort_type, column, ... }, ...]
|
|
91
|
+
* @param {array} rows e.g. [{ _id, [column.key]: '', ...}, ...]
|
|
92
|
+
* @param {array} columns e.g. [{ key, type, ... }, ...]
|
|
93
|
+
* @param {object} formulaRows computed value of formula, link-formula, link etc.
|
|
94
|
+
* @param {object} value e.g. { collaborators, ... }
|
|
95
|
+
* @returns sorted rows ids, array
|
|
96
|
+
*/
|
|
117
97
|
var sortTableRows = function sortTableRows(sorts, rows, columns) {
|
|
118
98
|
var _ref2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
|
|
119
99
|
formulaRows = _ref2.formulaRows,
|
|
120
100
|
value = _ref2.value;
|
|
121
|
-
if (!Array.isArray(rows)) return [];
|
|
101
|
+
if (!Array.isArray(rows) || rows.length === 0) return [];
|
|
122
102
|
var sortRows = rows.slice(0);
|
|
123
|
-
var validSorts = deleteInvalidSort(sorts, columns);
|
|
103
|
+
var validSorts = core.deleteInvalidSort(sorts, columns);
|
|
124
104
|
var normalizedFormulaRows = formulaRows || {};
|
|
125
105
|
sortRowsWithMultiSorts(sortRows, validSorts, {
|
|
126
106
|
formulaRows: normalizedFormulaRows,
|
|
@@ -131,6 +111,5 @@ var sortTableRows = function sortTableRows(sorts, rows, columns) {
|
|
|
131
111
|
});
|
|
132
112
|
};
|
|
133
113
|
|
|
134
|
-
exports.deleteInvalidSort = deleteInvalidSort;
|
|
135
114
|
exports.sortRowsWithMultiSorts = sortRowsWithMultiSorts;
|
|
136
115
|
exports.sortTableRows = sortTableRows;
|
package/lib/table/column.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Get column by key from table
|
|
7
7
|
* @param {object} table
|
|
8
8
|
* @param {string} columnKey
|
|
9
9
|
* @returns column, object
|
|
@@ -16,7 +16,7 @@ var getTableColumnByKey = function getTableColumnByKey(table, columnKey) {
|
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
19
|
+
* Get table column by name
|
|
20
20
|
* @param {object} table
|
|
21
21
|
* @param {string} columnName
|
|
22
22
|
* @returns column, object
|
package/lib/table/core.js
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Get table by id
|
|
7
7
|
* @param {array} tables
|
|
8
8
|
* @param {string} tableId
|
|
9
|
-
* @returns object
|
|
9
|
+
* @returns table, object
|
|
10
10
|
*/
|
|
11
11
|
var getTableById = function getTableById(tables, tableId) {
|
|
12
12
|
if (!Array.isArray(tables) || !tableId) return null;
|
package/lib/table/row.js
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Get table row by id
|
|
7
7
|
* @param {object} table
|
|
8
8
|
* @param {string} rowId the id of row
|
|
9
|
-
* @returns object
|
|
9
|
+
* @returns row, object
|
|
10
10
|
*/
|
|
11
11
|
var getRowById = function getRowById(table, rowId) {
|
|
12
12
|
if (!table || !table.id_row_map || !rowId) return null;
|
|
@@ -14,10 +14,10 @@ var getRowById = function getRowById(table, rowId) {
|
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* Get table rows by ids
|
|
18
18
|
* @param {object} table { id_row_map, ... }
|
|
19
19
|
* @param {array} rowsIds [ row._id, ... ]
|
|
20
|
-
* @returns
|
|
20
|
+
* @returns rows, array
|
|
21
21
|
*/
|
|
22
22
|
var getRowsByIds = function getRowsByIds(table, rowsIds) {
|
|
23
23
|
if (!table || !table.id_row_map || !Array.isArray(rowsIds)) return [];
|