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.
Files changed (150) hide show
  1. package/README.md +30 -2
  2. package/dist/index.js +1 -1
  3. package/es/cell-value-get/cell-value.js +227 -19
  4. package/es/cell-value-get/collaborator.js +9 -3
  5. package/es/cell-value-get/digital-sign.js +1 -1
  6. package/es/cell-value-get/geolocation.js +41 -10
  7. package/es/cell-value-get/long-text.js +1 -1
  8. package/es/cell-value-get/number.js +42 -18
  9. package/es/cell-value-get/option.js +17 -7
  10. package/es/cell-value-get/rate.js +6 -0
  11. package/es/cell-value-set/date.js +20 -0
  12. package/es/cell-value-set/number.js +53 -1
  13. package/es/color/gradient-color.js +100 -0
  14. package/es/column/color.js +415 -0
  15. package/es/column/{common.js → core.js} +3 -15
  16. package/es/column/date.js +2 -3
  17. package/es/column/number.js +3 -5
  18. package/es/column/option.js +115 -0
  19. package/es/common.js +10 -1
  20. package/es/constants/color.js +16 -0
  21. package/es/constants/column-permission.js +7 -0
  22. package/es/constants/column.js +127 -2
  23. package/es/constants/filter/index.js +5 -1
  24. package/es/constants/grid-header.js +6 -0
  25. package/es/constants/group.js +23 -0
  26. package/es/constants/limit.js +3 -0
  27. package/es/constants/reg.js +4 -0
  28. package/es/constants/row-color.js +11 -0
  29. package/es/constants/sort.js +11 -0
  30. package/es/date.js +1 -1
  31. package/es/filter/core.js +287 -0
  32. package/es/filter/filter-column/array.js +82 -0
  33. package/es/filter/filter-column/checkbox.js +8 -0
  34. package/es/filter/filter-column/collaborator.js +67 -0
  35. package/es/filter/filter-column/creator.js +50 -0
  36. package/es/filter/filter-column/date.js +59 -0
  37. package/es/filter/filter-column/digital-sign.js +26 -0
  38. package/es/filter/filter-column/file.js +24 -0
  39. package/es/filter/filter-column/formula.js +49 -0
  40. package/es/filter/filter-column/geolocation.js +53 -0
  41. package/es/filter/filter-column/link.js +12 -0
  42. package/es/filter/filter-column/long-text.js +25 -0
  43. package/es/filter/filter-column/multiple-select.js +60 -0
  44. package/es/filter/filter-column/number.js +93 -0
  45. package/es/filter/filter-column/single-select.js +41 -0
  46. package/es/filter/filter-column/text.js +55 -0
  47. package/es/filter/filter-row.js +198 -0
  48. package/es/group/core.js +107 -0
  49. package/es/group/group-row.js +366 -0
  50. package/es/index.js +62 -10
  51. package/es/link/core.js +78 -0
  52. package/es/number.js +13 -0
  53. package/es/row/color.js +278 -0
  54. package/es/row/core.js +161 -0
  55. package/es/sort/core.js +32 -0
  56. package/es/sort/sort-column/array.js +63 -0
  57. package/es/sort/sort-column/checkbox.js +15 -0
  58. package/es/sort/sort-column/collaborator.js +9 -0
  59. package/es/sort/sort-column/date.js +25 -0
  60. package/es/sort/sort-column/formula.js +40 -0
  61. package/es/sort/sort-column/link.js +23 -0
  62. package/es/sort/sort-column/multiple-select.js +45 -0
  63. package/es/sort/sort-column/number.js +18 -0
  64. package/es/sort/sort-column/single-select.js +22 -0
  65. package/es/sort/sort-column/text.js +47 -0
  66. package/es/sort/sort-row.js +126 -0
  67. package/es/table/column.js +27 -0
  68. package/es/table/core.js +14 -0
  69. package/es/table/index.js +14 -0
  70. package/es/table/row.js +25 -0
  71. package/es/validate/filter.js +1 -1
  72. package/es/validate/geolocation.js +5 -0
  73. package/es/view/core.js +135 -0
  74. package/es/view/formula.js +143 -0
  75. package/es/view/group.js +32 -0
  76. package/es/view/summaries.js +179 -0
  77. package/lib/cell-value-get/cell-value.js +231 -18
  78. package/lib/cell-value-get/collaborator.js +9 -2
  79. package/lib/cell-value-get/digital-sign.js +1 -1
  80. package/lib/cell-value-get/geolocation.js +42 -10
  81. package/lib/cell-value-get/long-text.js +1 -1
  82. package/lib/cell-value-get/number.js +42 -17
  83. package/lib/cell-value-get/option.js +18 -6
  84. package/lib/cell-value-get/rate.js +10 -0
  85. package/lib/cell-value-set/date.js +24 -0
  86. package/lib/cell-value-set/number.js +53 -0
  87. package/lib/color/gradient-color.js +110 -0
  88. package/lib/column/color.js +424 -0
  89. package/lib/column/{common.js → core.js} +3 -16
  90. package/lib/column/date.js +2 -3
  91. package/lib/column/number.js +3 -5
  92. package/lib/column/option.js +123 -0
  93. package/lib/common.js +14 -0
  94. package/lib/constants/color.js +20 -0
  95. package/lib/constants/column-permission.js +11 -0
  96. package/lib/constants/column.js +134 -1
  97. package/lib/constants/filter/index.js +5 -0
  98. package/lib/constants/grid-header.js +10 -0
  99. package/lib/constants/group.js +36 -0
  100. package/lib/constants/limit.js +7 -0
  101. package/lib/constants/reg.js +9 -0
  102. package/lib/constants/row-color.js +17 -0
  103. package/lib/constants/sort.js +18 -0
  104. package/lib/filter/core.js +301 -0
  105. package/lib/filter/filter-column/array.js +86 -0
  106. package/lib/filter/filter-column/checkbox.js +12 -0
  107. package/lib/filter/filter-column/collaborator.js +75 -0
  108. package/lib/filter/filter-column/creator.js +54 -0
  109. package/lib/filter/filter-column/date.js +63 -0
  110. package/lib/filter/filter-column/digital-sign.js +30 -0
  111. package/lib/filter/filter-column/file.js +28 -0
  112. package/lib/filter/filter-column/formula.js +53 -0
  113. package/lib/filter/filter-column/geolocation.js +57 -0
  114. package/lib/filter/filter-column/link.js +16 -0
  115. package/lib/filter/filter-column/long-text.js +29 -0
  116. package/lib/filter/filter-column/multiple-select.js +68 -0
  117. package/lib/filter/filter-column/number.js +97 -0
  118. package/lib/filter/filter-column/single-select.js +45 -0
  119. package/lib/filter/filter-column/text.js +59 -0
  120. package/lib/filter/filter-row.js +204 -0
  121. package/lib/group/core.js +117 -0
  122. package/lib/group/group-row.js +377 -0
  123. package/lib/index.js +176 -6
  124. package/lib/link/core.js +90 -0
  125. package/lib/number.js +18 -0
  126. package/lib/row/color.js +286 -0
  127. package/lib/row/core.js +170 -0
  128. package/lib/sort/core.js +37 -0
  129. package/lib/sort/sort-column/array.js +67 -0
  130. package/lib/sort/sort-column/checkbox.js +19 -0
  131. package/lib/sort/sort-column/collaborator.js +13 -0
  132. package/lib/sort/sort-column/date.js +29 -0
  133. package/lib/sort/sort-column/formula.js +44 -0
  134. package/lib/sort/sort-column/link.js +27 -0
  135. package/lib/sort/sort-column/multiple-select.js +50 -0
  136. package/lib/sort/sort-column/number.js +22 -0
  137. package/lib/sort/sort-column/single-select.js +26 -0
  138. package/lib/sort/sort-column/text.js +52 -0
  139. package/lib/sort/sort-row.js +136 -0
  140. package/lib/table/column.js +32 -0
  141. package/lib/table/core.js +18 -0
  142. package/lib/table/index.js +18 -0
  143. package/lib/table/row.js +30 -0
  144. package/lib/validate/filter.js +3 -3
  145. package/lib/validate/geolocation.js +9 -0
  146. package/lib/view/core.js +144 -0
  147. package/lib/view/formula.js +150 -0
  148. package/lib/view/group.js +36 -0
  149. package/lib/view/summaries.js +185 -0
  150. package/package.json +4 -2
@@ -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;
@@ -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;