dtable-utils 0.0.3-beta.1 → 0.0.3

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 (152) hide show
  1. package/README.md +2 -30
  2. package/dist/index.js +1 -1
  3. package/es/cell-value-get/cell-value.js +19 -227
  4. package/es/cell-value-get/collaborator.js +3 -9
  5. package/es/cell-value-get/digital-sign.js +1 -1
  6. package/es/cell-value-get/duration.js +1 -1
  7. package/es/cell-value-get/geolocation.js +5 -29
  8. package/es/cell-value-get/long-text.js +1 -1
  9. package/es/cell-value-get/number.js +18 -42
  10. package/es/cell-value-get/option.js +7 -17
  11. package/es/cell-value-set/number.js +1 -53
  12. package/es/column/{core.js → common.js} +14 -2
  13. package/es/column/date.js +1 -1
  14. package/es/column/number.js +1 -1
  15. package/es/common.js +10 -9
  16. package/es/constants/column.js +2 -127
  17. package/es/constants/filter/index.js +1 -5
  18. package/es/date.js +1 -1
  19. package/es/index.js +10 -62
  20. package/es/validate/filter.js +1 -1
  21. package/lib/cell-value-get/cell-value.js +18 -231
  22. package/lib/cell-value-get/collaborator.js +2 -9
  23. package/lib/cell-value-get/digital-sign.js +1 -1
  24. package/lib/cell-value-get/duration.js +1 -0
  25. package/lib/cell-value-get/geolocation.js +5 -30
  26. package/lib/cell-value-get/long-text.js +1 -1
  27. package/lib/cell-value-get/number.js +17 -42
  28. package/lib/cell-value-get/option.js +6 -18
  29. package/lib/cell-value-set/number.js +0 -53
  30. package/lib/column/{core.js → common.js} +14 -1
  31. package/lib/column/date.js +2 -2
  32. package/lib/column/number.js +3 -3
  33. package/lib/common.js +11 -13
  34. package/lib/constants/column.js +1 -134
  35. package/lib/constants/filter/index.js +0 -5
  36. package/lib/index.js +8 -176
  37. package/lib/validate/filter.js +3 -3
  38. package/package.json +3 -5
  39. package/es/cell-value-get/rate.js +0 -6
  40. package/es/cell-value-set/date.js +0 -20
  41. package/es/color/gradient-color.js +0 -100
  42. package/es/column/color.js +0 -415
  43. package/es/column/option.js +0 -115
  44. package/es/constants/color.js +0 -16
  45. package/es/constants/column-permission.js +0 -7
  46. package/es/constants/grid-header.js +0 -6
  47. package/es/constants/group.js +0 -23
  48. package/es/constants/limit.js +0 -3
  49. package/es/constants/reg.js +0 -4
  50. package/es/constants/row-color.js +0 -11
  51. package/es/constants/sort.js +0 -11
  52. package/es/filter/core.js +0 -287
  53. package/es/filter/filter-column/array.js +0 -82
  54. package/es/filter/filter-column/checkbox.js +0 -8
  55. package/es/filter/filter-column/collaborator.js +0 -67
  56. package/es/filter/filter-column/creator.js +0 -50
  57. package/es/filter/filter-column/date.js +0 -59
  58. package/es/filter/filter-column/digital-sign.js +0 -26
  59. package/es/filter/filter-column/file.js +0 -24
  60. package/es/filter/filter-column/formula.js +0 -49
  61. package/es/filter/filter-column/geolocation.js +0 -53
  62. package/es/filter/filter-column/link.js +0 -12
  63. package/es/filter/filter-column/long-text.js +0 -25
  64. package/es/filter/filter-column/multiple-select.js +0 -60
  65. package/es/filter/filter-column/number.js +0 -93
  66. package/es/filter/filter-column/single-select.js +0 -41
  67. package/es/filter/filter-column/text.js +0 -55
  68. package/es/filter/filter-row.js +0 -198
  69. package/es/group/core.js +0 -107
  70. package/es/group/group-row.js +0 -366
  71. package/es/link/core.js +0 -78
  72. package/es/number.js +0 -13
  73. package/es/row/color.js +0 -278
  74. package/es/row/core.js +0 -161
  75. package/es/sort/core.js +0 -32
  76. package/es/sort/sort-column/array.js +0 -63
  77. package/es/sort/sort-column/checkbox.js +0 -15
  78. package/es/sort/sort-column/collaborator.js +0 -9
  79. package/es/sort/sort-column/date.js +0 -25
  80. package/es/sort/sort-column/formula.js +0 -40
  81. package/es/sort/sort-column/link.js +0 -23
  82. package/es/sort/sort-column/multiple-select.js +0 -45
  83. package/es/sort/sort-column/number.js +0 -18
  84. package/es/sort/sort-column/single-select.js +0 -22
  85. package/es/sort/sort-column/text.js +0 -47
  86. package/es/sort/sort-row.js +0 -126
  87. package/es/table/column.js +0 -27
  88. package/es/table/core.js +0 -14
  89. package/es/table/index.js +0 -14
  90. package/es/table/row.js +0 -25
  91. package/es/validate/geolocation.js +0 -5
  92. package/es/view/core.js +0 -135
  93. package/es/view/formula.js +0 -143
  94. package/es/view/group.js +0 -32
  95. package/es/view/summaries.js +0 -179
  96. package/lib/cell-value-get/rate.js +0 -10
  97. package/lib/cell-value-set/date.js +0 -24
  98. package/lib/color/gradient-color.js +0 -110
  99. package/lib/column/color.js +0 -424
  100. package/lib/column/option.js +0 -123
  101. package/lib/constants/color.js +0 -20
  102. package/lib/constants/column-permission.js +0 -11
  103. package/lib/constants/grid-header.js +0 -10
  104. package/lib/constants/group.js +0 -36
  105. package/lib/constants/limit.js +0 -7
  106. package/lib/constants/reg.js +0 -9
  107. package/lib/constants/row-color.js +0 -17
  108. package/lib/constants/sort.js +0 -18
  109. package/lib/filter/core.js +0 -301
  110. package/lib/filter/filter-column/array.js +0 -86
  111. package/lib/filter/filter-column/checkbox.js +0 -12
  112. package/lib/filter/filter-column/collaborator.js +0 -75
  113. package/lib/filter/filter-column/creator.js +0 -54
  114. package/lib/filter/filter-column/date.js +0 -63
  115. package/lib/filter/filter-column/digital-sign.js +0 -30
  116. package/lib/filter/filter-column/file.js +0 -28
  117. package/lib/filter/filter-column/formula.js +0 -53
  118. package/lib/filter/filter-column/geolocation.js +0 -57
  119. package/lib/filter/filter-column/link.js +0 -16
  120. package/lib/filter/filter-column/long-text.js +0 -29
  121. package/lib/filter/filter-column/multiple-select.js +0 -68
  122. package/lib/filter/filter-column/number.js +0 -97
  123. package/lib/filter/filter-column/single-select.js +0 -45
  124. package/lib/filter/filter-column/text.js +0 -59
  125. package/lib/filter/filter-row.js +0 -204
  126. package/lib/group/core.js +0 -117
  127. package/lib/group/group-row.js +0 -377
  128. package/lib/link/core.js +0 -90
  129. package/lib/number.js +0 -18
  130. package/lib/row/color.js +0 -286
  131. package/lib/row/core.js +0 -170
  132. package/lib/sort/core.js +0 -37
  133. package/lib/sort/sort-column/array.js +0 -67
  134. package/lib/sort/sort-column/checkbox.js +0 -19
  135. package/lib/sort/sort-column/collaborator.js +0 -13
  136. package/lib/sort/sort-column/date.js +0 -29
  137. package/lib/sort/sort-column/formula.js +0 -44
  138. package/lib/sort/sort-column/link.js +0 -27
  139. package/lib/sort/sort-column/multiple-select.js +0 -50
  140. package/lib/sort/sort-column/number.js +0 -22
  141. package/lib/sort/sort-column/single-select.js +0 -26
  142. package/lib/sort/sort-column/text.js +0 -52
  143. package/lib/sort/sort-row.js +0 -136
  144. package/lib/table/column.js +0 -32
  145. package/lib/table/core.js +0 -18
  146. package/lib/table/index.js +0 -18
  147. package/lib/table/row.js +0 -30
  148. package/lib/validate/geolocation.js +0 -9
  149. package/lib/view/core.js +0 -144
  150. package/lib/view/formula.js +0 -150
  151. package/lib/view/group.js +0 -36
  152. package/lib/view/summaries.js +0 -185
package/lib/group/core.js DELETED
@@ -1,117 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
- var date = require('../column/date.js');
7
- var core$1 = require('../link/core.js');
8
- var column = require('../table/column.js');
9
- var core = require('../table/core.js');
10
- var cellType = require('../constants/cell-type.js');
11
- var group = require('../constants/group.js');
12
-
13
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
-
15
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
16
-
17
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
-
20
- /**
21
- * check is valid groupby
22
- * @param {object} groupby { column_key: '', count_type: '', sort_type: '' }
23
- * @param {array} columns
24
- * @returns boolean
25
- */
26
- var isValidGroupby = function isValidGroupby(groupby, columns) {
27
- if (!groupby || !Array.isArray(columns)) return false;
28
- var column_key = groupby.column_key;
29
- var groupbyColumn = columns.find(function (column) {
30
- return column.key === column_key;
31
- });
32
- if (!groupbyColumn) {
33
- return false;
34
- }
35
- return group.SUPPORT_GROUP_COLUMN_TYPES.includes(groupbyColumn.type);
36
- };
37
-
38
- /**
39
- * get valid groupbys
40
- * @param {array} groupbys
41
- * @param {array} columns
42
- * @returns array
43
- */
44
- var getValidGroupbys = function getValidGroupbys(groupbys, columns) {
45
- if (!Array.isArray(groupbys) || !Array.isArray(columns)) {
46
- return [];
47
- }
48
- return groupbys.filter(function (groupby) {
49
- return isValidGroupby(groupby, columns);
50
- });
51
- };
52
- var deleteInvalidGroupby = function deleteInvalidGroupby(groupbys, columns, currentTable, value) {
53
- var validGroupbys = getValidGroupbys(groupbys, columns);
54
- var cleanGroupbys = [];
55
- validGroupbys.forEach(function (groupby) {
56
- var groupbyColumnKey = groupby.column_key,
57
- count_type = groupby.count_type;
58
- var groupbyColumn = columns.find(function (column) {
59
- return groupbyColumnKey === column.key;
60
- });
61
- var columnType = groupbyColumn.type,
62
- columnData = groupbyColumn.data;
63
- var newGroupby = _objectSpread(_objectSpread({}, groupby), {}, {
64
- column: groupbyColumn
65
- });
66
- switch (columnType) {
67
- case cellType.CellType.DATE:
68
- case cellType.CellType.CTIME:
69
- case cellType.CellType.MTIME:
70
- {
71
- newGroupby.count_type = count_type || group.GROUP_DATE_GRANULARITY.MONTH;
72
- break;
73
- }
74
- case cellType.CellType.GEOLOCATION:
75
- {
76
- newGroupby.count_type = count_type || group.GROUP_GEOLOCATION_GRANULARITY.PROVINCE;
77
- break;
78
- }
79
- case cellType.CellType.COLLABORATOR:
80
- {
81
- var collaborator_email_map = {};
82
- value.collaborators.forEach(function (collaborator) {
83
- collaborator_email_map[collaborator.email] = true;
84
- });
85
- newGroupby.collaborator_email_map = collaborator_email_map;
86
- break;
87
- }
88
- case cellType.CellType.LINK:
89
- {
90
- var table_id = columnData.table_id,
91
- other_table_id = columnData.other_table_id,
92
- display_column_key = columnData.display_column_key;
93
- var currentTableId = currentTable ? currentTable._id : '';
94
- var linkedTableID = core$1.getLinkedTableID(currentTableId, table_id, other_table_id);
95
- var linkedTable = core.getTableById(value.tables, linkedTableID);
96
- var displayColumn = column.getTableColumnByKey(linkedTable, display_column_key);
97
- newGroupby.linked_table = linkedTable;
98
- newGroupby.display_column = displayColumn;
99
- break;
100
- }
101
- case cellType.CellType.FORMULA:
102
- case cellType.CellType.LINK_FORMULA:
103
- {
104
- if (date.isDateColumn(groupbyColumn) && !count_type) {
105
- newGroupby.count_type = group.GROUP_DATE_GRANULARITY.MONTH;
106
- }
107
- break;
108
- }
109
- }
110
- cleanGroupbys.push(newGroupby);
111
- });
112
- return cleanGroupbys;
113
- };
114
-
115
- exports.deleteInvalidGroupby = deleteInvalidGroupby;
116
- exports.getValidGroupbys = getValidGroupbys;
117
- exports.isValidGroupby = isValidGroupby;
@@ -1,377 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
- var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
7
- var core$1 = require('../row/core.js');
8
- var row = require('../table/row.js');
9
- var core = require('./core.js');
10
- var date = require('../date.js');
11
- var date$1 = require('../column/date.js');
12
- var collaborator = require('../cell-value-get/collaborator.js');
13
- var geolocation = require('../cell-value-get/geolocation.js');
14
- var cellValue = require('../cell-value-get/cell-value.js');
15
- var checkbox = require('../sort/sort-column/checkbox.js');
16
- var collaborator$1 = require('../sort/sort-column/collaborator.js');
17
- var date$2 = require('../sort/sort-column/date.js');
18
- var number = require('../sort/sort-column/number.js');
19
- var text = require('../sort/sort-column/text.js');
20
- var cellType = require('../constants/cell-type.js');
21
- var column = require('../constants/column.js');
22
- var formula = require('../constants/formula.js');
23
- var formula$1 = require('../sort/sort-column/formula.js');
24
- var link = require('../sort/sort-column/link.js');
25
- var multipleSelect = require('../sort/sort-column/multiple-select.js');
26
- var singleSelect = require('../sort/sort-column/single-select.js');
27
- var group = require('../constants/group.js');
28
- var sort = require('../constants/sort.js');
29
-
30
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
31
-
32
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
33
- var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
34
-
35
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
36
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
37
- var _getCellValue = function _getCellValue(row, formulaRows, groupby) {
38
- var column_key = groupby.column_key,
39
- column = groupby.column;
40
- var cellValue = row[column_key];
41
- var type = column.type;
42
- if (formula.FORMULA_COLUMN_TYPES_MAP[type]) {
43
- var formulaRow = formulaRows[row._id] || {};
44
- return formulaRow[column_key];
45
- }
46
- // link column value is calculate as a special formula column
47
- if (type === cellType.CellType.LINK) {
48
- var _formulaRow = formulaRows[row._id] || {};
49
- return _formulaRow[column_key] || [];
50
- }
51
- return cellValue;
52
- };
53
- var _getFormattedCellValue = function _getFormattedCellValue(cellValue$1, groupby) {
54
- var column = groupby.column,
55
- countType = groupby.count_type;
56
- var columnType = column.type,
57
- columnData = column.data;
58
- switch (columnType) {
59
- case cellType.CellType.TEXT:
60
- case cellType.CellType.URL:
61
- case cellType.CellType.EMAIL:
62
- case cellType.CellType.LAST_MODIFIER:
63
- case cellType.CellType.CREATOR:
64
- {
65
- return cellValue$1 || null;
66
- }
67
- case cellType.CellType.DATE:
68
- case cellType.CellType.CTIME:
69
- case cellType.CellType.MTIME:
70
- {
71
- return date.DateUtils.getDateByGranularity(cellValue$1, countType) || null;
72
- }
73
- case cellType.CellType.NUMBER:
74
- case cellType.CellType.DURATION:
75
- case cellType.CellType.RATE:
76
- {
77
- return cellValue$1 || cellValue$1 === 0 ? cellValue$1 : null;
78
- }
79
- case cellType.CellType.CHECKBOX:
80
- {
81
- return !!cellValue$1;
82
- }
83
- case cellType.CellType.SINGLE_SELECT:
84
- {
85
- return cellValue$1 || null;
86
- }
87
- case cellType.CellType.MULTIPLE_SELECT:
88
- {
89
- return Array.isArray(cellValue$1) ? cellValue$1 : [];
90
- }
91
- case cellType.CellType.COLLABORATOR:
92
- {
93
- if (!Array.isArray(cellValue$1)) {
94
- return [];
95
- }
96
- var collaborator_email_map = groupby.collaborator_email_map;
97
- return cellValue$1.filter(function (email) {
98
- return collaborator_email_map[email];
99
- });
100
- }
101
- case cellType.CellType.GEOLOCATION:
102
- {
103
- return geolocation.getGeolocationByGranularity(cellValue$1, countType);
104
- }
105
- case cellType.CellType.FORMULA:
106
- case cellType.CellType.LINK_FORMULA:
107
- {
108
- var _ref = columnData || {},
109
- result_type = _ref.result_type;
110
- if (result_type === formula.FORMULA_RESULT_TYPE.NUMBER) {
111
- return cellValue$1 || cellValue$1 === 0 ? cellValue$1 : null;
112
- }
113
- if (result_type === formula.FORMULA_RESULT_TYPE.DATE) {
114
- return date.DateUtils.getDateByGranularity(cellValue$1, countType) || null;
115
- }
116
- if (result_type === formula.FORMULA_RESULT_TYPE.BOOL) {
117
- return !!cellValue$1;
118
- }
119
- if (result_type === formula.FORMULA_RESULT_TYPE.ARRAY) {
120
- var newCellValue = cellValue$1;
121
- if (date$1.isDateColumn(column) && Array.isArray(cellValue$1) && cellValue$1.length > 0) {
122
- return date.DateUtils.getDateByGranularity(cellValue$1[0], countType) || null;
123
- }
124
-
125
- // convert to string
126
- return cellValue.getFormulaDisplayString(newCellValue, columnData) || null;
127
- }
128
- return cellValue$1 || null;
129
- }
130
- case cellType.CellType.LINK:
131
- {
132
- if (!Array.isArray(cellValue$1) || cellValue$1.length === 0) {
133
- return [];
134
- }
135
- return cellValue$1.map(function (linked) {
136
- return linked.display_value;
137
- });
138
- }
139
- default:
140
- {
141
- return null;
142
- }
143
- }
144
- };
145
- var _getStrCellValue = function _getStrCellValue(cellValue, columnType) {
146
- var sCellValue = null;
147
- if (column.SINGLE_CELL_VALUE_COLUMN_TYPE_MAP[columnType]) {
148
- sCellValue = typeof cellValue === 'string' ? cellValue : String(cellValue);
149
- } else if (column.MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[columnType]) {
150
- sCellValue = _toConsumableArray__default["default"](cellValue).sort().toString();
151
- }
152
- return sCellValue;
153
- };
154
- var _findGroupIndexWithMultipleGroupbys = function _findGroupIndexWithMultipleGroupbys(sCellValue, cellValue2GroupIndexMap, groupsLength) {
155
- var target = cellValue2GroupIndexMap[sCellValue];
156
- if (target && target.index > -1) {
157
- return target.index;
158
- }
159
-
160
- // eslint-disable-next-line
161
- cellValue2GroupIndexMap[sCellValue] = {};
162
-
163
- // eslint-disable-next-line
164
- cellValue2GroupIndexMap[sCellValue].subgroups = {};
165
-
166
- // eslint-disable-next-line
167
- cellValue2GroupIndexMap[sCellValue].index = groupsLength;
168
- return -1;
169
- };
170
- var _findGroupIndex = function _findGroupIndex(sCellValue, cellValue2GroupIndexMap, groupsLength) {
171
- var index = cellValue2GroupIndexMap[sCellValue];
172
- if (index > -1) {
173
- return index;
174
- }
175
-
176
- // eslint-disable-next-line
177
- cellValue2GroupIndexMap[sCellValue] = groupsLength;
178
- return -1;
179
- };
180
- var getSortedGroups = function getSortedGroups(groups, groupbys, value, level) {
181
- var _groupbys$level = groupbys[level],
182
- column$1 = _groupbys$level.column,
183
- sort_type = _groupbys$level.sort_type;
184
- var collaborators = value.collaborators;
185
- var columnType = column$1.type,
186
- columnData = column$1.data;
187
- var normalizedSortType = sort_type || sort.SORT_TYPE.UP;
188
- var option_id_index_map = {};
189
- if (columnType === cellType.CellType.SINGLE_SELECT || columnType === cellType.CellType.MULTIPLE_SELECT) {
190
- var _ref2 = columnData || {},
191
- options = _ref2.options;
192
- if (Array.isArray(options)) {
193
- options.forEach(function (option, index) {
194
- option_id_index_map[option.id] = index;
195
- });
196
- }
197
- }
198
- groups.sort(function (currGroupRow, nextGroupRow) {
199
- var currCellVal = currGroupRow.cell_value;
200
- var nextCellVal = nextGroupRow.cell_value;
201
- if (sort.SORT_COLUMN_OPTIONS.includes(columnType)) {
202
- var sortResult;
203
- if (sort.TEXT_SORTER_COLUMN_TYPES.includes(columnType)) {
204
- sortResult = text.sortText(currCellVal, nextCellVal, normalizedSortType);
205
- } else if (sort.NUMBER_SORTER_COLUMN_TYPES.includes(columnType)) {
206
- sortResult = number.sortNumber(currCellVal, nextCellVal, normalizedSortType);
207
- } else if (column.DATE_COLUMN_OPTIONS.includes(columnType)) {
208
- sortResult = date$2.sortDate(currCellVal, nextCellVal, normalizedSortType);
209
- } else if (columnType === cellType.CellType.CHECKBOX) {
210
- sortResult = checkbox.sortCheckbox(currCellVal, nextCellVal, normalizedSortType);
211
- } else if (columnType === cellType.CellType.COLLABORATOR) {
212
- var currCollaborators = currCellVal;
213
- var nextCollaborators = nextCellVal;
214
- if (collaborators) {
215
- currCollaborators = collaborator.getCollaboratorsNames(currCollaborators, collaborators);
216
- nextCollaborators = collaborator.getCollaboratorsNames(nextCollaborators, collaborators);
217
- }
218
- sortResult = collaborator$1.sortCollaborator(currCollaborators, nextCollaborators, normalizedSortType);
219
- } else if (columnType === cellType.CellType.SINGLE_SELECT) {
220
- sortResult = singleSelect.sortSingleSelect(currCellVal, nextCellVal, {
221
- sort_type: normalizedSortType,
222
- option_id_index_map: option_id_index_map
223
- });
224
- } else if (columnType === cellType.CellType.MULTIPLE_SELECT) {
225
- sortResult = multipleSelect.sortMultipleSelect(currCellVal, nextCellVal, {
226
- sort_type: normalizedSortType,
227
- option_id_index_map: option_id_index_map
228
- });
229
- } else if (formula.FORMULA_COLUMN_TYPES_MAP[columnType]) {
230
- var currOriginalCellVal = currGroupRow.original_cell_value;
231
- var nextOriginalCellVal = nextGroupRow.original_cell_value;
232
- sortResult = formula$1.sortFormula(currOriginalCellVal, nextOriginalCellVal, normalizedSortType, {
233
- columnData: columnData,
234
- value: value
235
- });
236
- } else if (columnType === cellType.CellType.LINK) {
237
- var _currOriginalCellVal = currGroupRow.original_cell_value;
238
- var _nextOriginalCellVal = nextGroupRow.original_cell_value;
239
- sortResult = link.sortLink(_currOriginalCellVal, _nextOriginalCellVal, normalizedSortType, {
240
- columnData: columnData,
241
- value: value
242
- });
243
- }
244
- return sortResult;
245
- }
246
- if (currCellVal === '') return 1;
247
- if (nextCellVal === '') return -1;
248
- return 0;
249
- });
250
-
251
- // for nested group.
252
- var isNestedGroup = Array.isArray(groups[0].subgroups) && groups[0].subgroups.length > 0;
253
- if (isNestedGroup) {
254
- var nextLevel = level + 1;
255
-
256
- // eslint-disable-next-line
257
- groups = groups.map(function (group) {
258
- var sortedSubgroups = getSortedGroups(group.subgroups, groupbys, value, nextLevel);
259
- return _objectSpread(_objectSpread({}, group), {}, {
260
- subgroups: sortedSubgroups
261
- });
262
- });
263
- }
264
- return groups;
265
- };
266
- var groupRowsWithMultipleGroupbys = function groupRowsWithMultipleGroupbys(groupbys, rows, formulaRows, value) {
267
- var validGroupbys = groupbys.length > group.MAX_GROUP_LEVEL ? groupbys.slice(0, group.MAX_GROUP_LEVEL) : _toConsumableArray__default["default"](groupbys);
268
- var groups = [];
269
- var cellValue2GroupIndexMap = {};
270
- rows.forEach(function (row) {
271
- var rowId = row._id;
272
- var updatedGroup;
273
- var updateCellValue2GroupIndexMap;
274
- for (var level = 0; level < validGroupbys.length; level++) {
275
- var currentGroupby = validGroupbys[level];
276
- var column = currentGroupby.column,
277
- column_key = currentGroupby.column_key;
278
- var columnType = column.type;
279
- var cellValue = _getCellValue(row, formulaRows, currentGroupby);
280
- var formattedValue = _getFormattedCellValue(cellValue, currentGroupby);
281
- var sCellValue = _getStrCellValue(formattedValue, columnType);
282
- var group = {
283
- cell_value: formattedValue,
284
- original_cell_value: cellValue,
285
- row_ids: null,
286
- column_key: column_key,
287
- subgroups: [],
288
- summaries: {}
289
- };
290
- if (level === 0) {
291
- var groupedRowIndex = _findGroupIndexWithMultipleGroupbys(sCellValue, cellValue2GroupIndexMap, groups.length);
292
- updateCellValue2GroupIndexMap = cellValue2GroupIndexMap[sCellValue].subgroups;
293
- if (groupedRowIndex < 0) {
294
- groups.push(group);
295
- updatedGroup = groups[groups.length - 1];
296
- } else {
297
- updatedGroup = groups[groupedRowIndex];
298
- }
299
- } else {
300
- var _groupedRowIndex = _findGroupIndexWithMultipleGroupbys(sCellValue, updateCellValue2GroupIndexMap, updatedGroup.subgroups.length);
301
- updateCellValue2GroupIndexMap = updateCellValue2GroupIndexMap[sCellValue].subgroups;
302
- if (_groupedRowIndex < 0) {
303
- updatedGroup.subgroups.push(group);
304
- updatedGroup = updatedGroup.subgroups[updatedGroup.subgroups.length - 1];
305
- } else {
306
- updatedGroup = updatedGroup.subgroups[_groupedRowIndex];
307
- }
308
-
309
- // update row_ids in the deepest group.
310
- if (level === validGroupbys.length - 1) {
311
- if (!updatedGroup.row_ids) {
312
- updatedGroup.row_ids = [rowId];
313
- } else {
314
- updatedGroup.row_ids.push(rowId);
315
- }
316
- }
317
- }
318
- }
319
- });
320
- groups = getSortedGroups(groups, validGroupbys, value, 0);
321
- return groups;
322
- };
323
- var groupTableRows = function groupTableRows(groupbys, rows, formulaRows, value) {
324
- if (groupbys.length === 0) {
325
- return [];
326
- }
327
- if (groupbys.length > 1) {
328
- return groupRowsWithMultipleGroupbys(groupbys, rows, formulaRows, value);
329
- }
330
- var groupby = groupbys[0];
331
- var column_key = groupby.column_key,
332
- column = groupby.column;
333
- var columnType = column.type;
334
- var groups = [];
335
- var cellValue2GroupIndexMap = {};
336
- rows.forEach(function (r) {
337
- var cellValue = _getCellValue(r, formulaRows, groupby);
338
- var formattedValue = _getFormattedCellValue(cellValue, groupby);
339
- var sCellValue = _getStrCellValue(formattedValue, columnType);
340
- var groupedRowIndex = _findGroupIndex(sCellValue, cellValue2GroupIndexMap, groups.length);
341
- if (groupedRowIndex > -1) {
342
- groups[groupedRowIndex].row_ids.push(r._id);
343
- } else {
344
- groups.push({
345
- cell_value: formattedValue,
346
- original_cell_value: cellValue,
347
- column_key: column_key,
348
- row_ids: [r._id],
349
- subgroups: null,
350
- summaries: {}
351
- });
352
- }
353
- });
354
-
355
- // sort groups
356
- groups = getSortedGroups(groups, groupbys, value, 0);
357
- return groups;
358
- };
359
- var groupViewRows = function groupViewRows(groupbys, table, rows, formulaRows, value) {
360
- if (rows.length === 0) {
361
- return [];
362
- }
363
- var rowsData = row.getRowsByIds(table, rows);
364
- return groupTableRows(groupbys, rowsData, formulaRows, value);
365
- };
366
- var getGroupedRowsWithoutFormulaCalculation = function getGroupedRowsWithoutFormulaCalculation(groupbys, rows, table, value) {
367
- var _ref3 = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {},
368
- _ref3$formulaRows = _ref3.formulaRows,
369
- formulaRows = _ref3$formulaRows === void 0 ? null : _ref3$formulaRows;
370
- var columns = table.columns;
371
- var validGroupbys = core.deleteInvalidGroupby(groupbys, columns, table, value);
372
- return core$1.isTableRows(rows) ? groupTableRows(validGroupbys, rows, formulaRows, value) : groupViewRows(validGroupbys, table, rows, formulaRows, value);
373
- };
374
-
375
- exports.getGroupedRowsWithoutFormulaCalculation = getGroupedRowsWithoutFormulaCalculation;
376
- exports.groupTableRows = groupTableRows;
377
- exports.groupViewRows = groupViewRows;
package/lib/link/core.js DELETED
@@ -1,90 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
6
-
7
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
-
9
- var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
10
-
11
- /**
12
- * get link by id
13
- * @param {array} links [{ _id, ... }]
14
- * @param {string} linkId
15
- * @returns object
16
- */
17
- var getLinkById = function getLinkById(links, linkId) {
18
- if (!Array.isArray(links) || !linkId) return null;
19
- return links.find(function (link) {
20
- return link._id === linkId;
21
- });
22
- };
23
-
24
- /**
25
- * check is valid link by link column's data
26
- * @param {object} columnData
27
- * @returns boolean
28
- */
29
- var isValidLink = function isValidLink(linkColumnData) {
30
- if (!linkColumnData) return false;
31
- var link_id = linkColumnData.link_id,
32
- table_id = linkColumnData.table_id,
33
- other_table_id = linkColumnData.other_table_id,
34
- display_column_key = linkColumnData.display_column_key;
35
- return !!(link_id && table_id && other_table_id && display_column_key);
36
- };
37
-
38
- /**
39
- * get current table's id
40
- * @param {string} currentTableID
41
- * @param {string} tableID
42
- * @param {string} otherTableID
43
- * @returns string
44
- */
45
- var getLinkTableID = function getLinkTableID(currentTableID, tableID, otherTableID) {
46
- return currentTableID === tableID ? tableID : otherTableID;
47
- };
48
-
49
- /**
50
- * get linked table's id
51
- * @param {string} currentTableID
52
- * @param {string} tableID
53
- * @param {string} otherTableID
54
- * @returns string
55
- */
56
- var getLinkedTableID = function getLinkedTableID(currentTableID, tableID, otherTableID) {
57
- return currentTableID === tableID ? otherTableID : tableID;
58
- };
59
-
60
- /**
61
- * get linked rows ids of the row id
62
- * @param {array} links [ { _id: '', table1_id, table2_id: '', table1_table2_map: {}, table2_table1_map: {} }, ... ]
63
- * @param {string} link_id
64
- * @param {string} table1Id
65
- * @param {string} table2Id
66
- * @param {string} rowId
67
- * @returns array, linked rows ids
68
- */
69
- var getLinkCellValue = function getLinkCellValue(links, linkId, table1Id, table2Id, rowId) {
70
- if (!Array.isArray(links) || links.length === 0 || !table1Id || !table2Id || !rowId) return [];
71
- var linkBetween2Tables = getLinkById(links, linkId);
72
- if (!linkBetween2Tables) return [];
73
- var linkMap = {};
74
- if (table1Id === table2Id) {
75
- linkMap = linkBetween2Tables.table2_table1_map;
76
- } else {
77
- linkMap = linkBetween2Tables.table1_id === table1Id ? linkBetween2Tables.table1_table2_map : linkBetween2Tables.table2_table1_map;
78
- }
79
- var linkedRowIds = linkMap[rowId];
80
- if (!linkedRowIds) {
81
- return [];
82
- }
83
- return _toConsumableArray__default["default"](linkedRowIds);
84
- };
85
-
86
- exports.getLinkById = getLinkById;
87
- exports.getLinkCellValue = getLinkCellValue;
88
- exports.getLinkTableID = getLinkTableID;
89
- exports.getLinkedTableID = getLinkedTableID;
90
- exports.isValidLink = isValidLink;
package/lib/number.js DELETED
@@ -1,18 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- /**
6
- * check whether is number
7
- * @param {number} number
8
- * @returns boolean
9
- */
10
- var isNumber = function isNumber(number) {
11
- return (number || number === 0) && Object.prototype.toString.call(number) === '[object Number]';
12
- };
13
- var isNumberEqual = function isNumberEqual(number1, number2) {
14
- return number1 === number2 || Math.abs(number1 - number2) < 0.00001;
15
- };
16
-
17
- exports.isNumber = isNumber;
18
- exports.isNumberEqual = isNumberEqual;