dtable-utils 0.0.3 → 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.
Files changed (152) hide show
  1. package/README.md +42 -5
  2. package/dist/index.js +1 -1
  3. package/es/cell-value-get/cell-value.js +250 -20
  4. package/es/cell-value-get/collaborator.js +16 -3
  5. package/es/cell-value-get/digital-sign.js +1 -1
  6. package/es/cell-value-get/duration.js +3 -3
  7. package/es/cell-value-get/geolocation.js +52 -30
  8. package/es/cell-value-get/long-text.js +1 -1
  9. package/es/cell-value-get/number.js +51 -19
  10. package/es/cell-value-get/option.js +33 -9
  11. package/es/cell-value-get/rate.js +11 -0
  12. package/es/cell-value-set/date.js +26 -0
  13. package/es/cell-value-set/number.js +53 -1
  14. package/es/color/column-color.js +437 -0
  15. package/es/color/gradient-color.js +100 -0
  16. package/es/color/row-color.js +289 -0
  17. package/es/column/{common.js → core.js} +2 -14
  18. package/es/column/date.js +1 -1
  19. package/es/column/number.js +1 -1
  20. package/es/column/option.js +145 -0
  21. package/es/common.js +23 -3
  22. package/es/constants/color.js +16 -0
  23. package/es/constants/column-permission.js +7 -0
  24. package/es/constants/column.js +127 -2
  25. package/es/constants/filter/index.js +5 -1
  26. package/es/constants/formula.js +2 -1
  27. package/es/constants/grid-header.js +6 -0
  28. package/es/constants/group.js +23 -0
  29. package/es/constants/limit.js +3 -0
  30. package/es/constants/reg.js +4 -0
  31. package/es/constants/row-color.js +11 -0
  32. package/es/constants/sort.js +11 -0
  33. package/es/date.js +1 -1
  34. package/es/filter/core.js +322 -0
  35. package/es/filter/filter-column/array.js +87 -0
  36. package/es/filter/filter-column/checkbox.js +14 -0
  37. package/es/filter/filter-column/collaborator.js +72 -0
  38. package/es/filter/filter-column/creator.js +59 -0
  39. package/es/filter/filter-column/date.js +102 -0
  40. package/es/filter/filter-column/digital-sign.js +29 -0
  41. package/es/filter/filter-column/file.js +27 -0
  42. package/es/filter/filter-column/formula.js +57 -0
  43. package/es/filter/filter-column/geolocation.js +58 -0
  44. package/es/filter/filter-column/link.js +20 -0
  45. package/es/filter/filter-column/long-text.js +28 -0
  46. package/es/filter/filter-column/multiple-select.js +64 -0
  47. package/es/filter/filter-column/number.js +97 -0
  48. package/es/filter/filter-column/single-select.js +45 -0
  49. package/es/filter/filter-column/text.js +60 -0
  50. package/es/filter/filter-row.js +233 -0
  51. package/es/group/core.js +116 -0
  52. package/es/group/group-row.js +402 -0
  53. package/es/index.js +63 -11
  54. package/es/link/core.js +78 -0
  55. package/es/number.js +21 -0
  56. package/es/row/core.js +180 -0
  57. package/es/sort/core.js +91 -0
  58. package/es/sort/sort-column/array.js +72 -0
  59. package/es/sort/sort-column/checkbox.js +22 -0
  60. package/es/sort/sort-column/collaborator.js +16 -0
  61. package/es/sort/sort-column/date.js +25 -0
  62. package/es/sort/sort-column/formula.js +49 -0
  63. package/es/sort/sort-column/link.js +32 -0
  64. package/es/sort/sort-column/multiple-select.js +45 -0
  65. package/es/sort/sort-column/number.js +25 -0
  66. package/es/sort/sort-column/single-select.js +30 -0
  67. package/es/sort/sort-column/text.js +61 -0
  68. package/es/sort/sort-row.js +110 -0
  69. package/es/table/column.js +27 -0
  70. package/es/table/core.js +14 -0
  71. package/es/table/row.js +25 -0
  72. package/es/validate/filter.js +1 -1
  73. package/es/validate/geolocation.js +5 -0
  74. package/es/view/core.js +134 -0
  75. package/es/view/formula.js +147 -0
  76. package/es/view/group.js +32 -0
  77. package/es/view/summaries.js +167 -0
  78. package/lib/cell-value-get/cell-value.js +254 -19
  79. package/lib/cell-value-get/collaborator.js +16 -2
  80. package/lib/cell-value-get/digital-sign.js +1 -1
  81. package/lib/cell-value-get/duration.js +3 -2
  82. package/lib/cell-value-get/geolocation.js +53 -30
  83. package/lib/cell-value-get/long-text.js +1 -1
  84. package/lib/cell-value-get/number.js +51 -18
  85. package/lib/cell-value-get/option.js +34 -8
  86. package/lib/cell-value-get/rate.js +15 -0
  87. package/lib/cell-value-set/date.js +30 -0
  88. package/lib/cell-value-set/number.js +53 -0
  89. package/lib/color/column-color.js +446 -0
  90. package/lib/color/gradient-color.js +110 -0
  91. package/lib/color/row-color.js +297 -0
  92. package/lib/column/{common.js → core.js} +1 -14
  93. package/lib/column/date.js +2 -2
  94. package/lib/column/number.js +3 -3
  95. package/lib/column/option.js +153 -0
  96. package/lib/common.js +27 -3
  97. package/lib/constants/color.js +20 -0
  98. package/lib/constants/column-permission.js +11 -0
  99. package/lib/constants/column.js +134 -1
  100. package/lib/constants/filter/index.js +5 -0
  101. package/lib/constants/formula.js +2 -0
  102. package/lib/constants/grid-header.js +10 -0
  103. package/lib/constants/group.js +36 -0
  104. package/lib/constants/limit.js +7 -0
  105. package/lib/constants/reg.js +9 -0
  106. package/lib/constants/row-color.js +17 -0
  107. package/lib/constants/sort.js +18 -0
  108. package/lib/filter/core.js +336 -0
  109. package/lib/filter/filter-column/array.js +91 -0
  110. package/lib/filter/filter-column/checkbox.js +18 -0
  111. package/lib/filter/filter-column/collaborator.js +80 -0
  112. package/lib/filter/filter-column/creator.js +63 -0
  113. package/lib/filter/filter-column/date.js +106 -0
  114. package/lib/filter/filter-column/digital-sign.js +33 -0
  115. package/lib/filter/filter-column/file.js +31 -0
  116. package/lib/filter/filter-column/formula.js +61 -0
  117. package/lib/filter/filter-column/geolocation.js +62 -0
  118. package/lib/filter/filter-column/link.js +24 -0
  119. package/lib/filter/filter-column/long-text.js +32 -0
  120. package/lib/filter/filter-column/multiple-select.js +72 -0
  121. package/lib/filter/filter-column/number.js +101 -0
  122. package/lib/filter/filter-column/single-select.js +49 -0
  123. package/lib/filter/filter-column/text.js +64 -0
  124. package/lib/filter/filter-row.js +239 -0
  125. package/lib/group/core.js +126 -0
  126. package/lib/group/group-row.js +413 -0
  127. package/lib/index.js +177 -7
  128. package/lib/link/core.js +90 -0
  129. package/lib/number.js +26 -0
  130. package/lib/row/core.js +189 -0
  131. package/lib/sort/core.js +102 -0
  132. package/lib/sort/sort-column/array.js +76 -0
  133. package/lib/sort/sort-column/checkbox.js +26 -0
  134. package/lib/sort/sort-column/collaborator.js +20 -0
  135. package/lib/sort/sort-column/date.js +29 -0
  136. package/lib/sort/sort-column/formula.js +53 -0
  137. package/lib/sort/sort-column/link.js +36 -0
  138. package/lib/sort/sort-column/multiple-select.js +49 -0
  139. package/lib/sort/sort-column/number.js +29 -0
  140. package/lib/sort/sort-column/single-select.js +34 -0
  141. package/lib/sort/sort-column/text.js +66 -0
  142. package/lib/sort/sort-row.js +115 -0
  143. package/lib/table/column.js +32 -0
  144. package/lib/table/core.js +18 -0
  145. package/lib/table/row.js +30 -0
  146. package/lib/validate/filter.js +3 -3
  147. package/lib/validate/geolocation.js +9 -0
  148. package/lib/view/core.js +143 -0
  149. package/lib/view/formula.js +154 -0
  150. package/lib/view/group.js +36 -0
  151. package/lib/view/summaries.js +173 -0
  152. package/package.json +5 -3
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var core = require('../core.js');
6
+ var sort = require('../../constants/sort.js');
7
+
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) {
17
+ var sort_type = _ref.sort_type,
18
+ option_id_index_map = _ref.option_id_index_map;
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;
28
+
29
+ // current multiple select equal to next multiple select.
30
+ if (leftOptionsLen === rightOptionsLen && (leftOptionsLen === 0 || leftOptionIndexes.join('') === rightOptionIndexes.join(''))) {
31
+ return 0;
32
+ }
33
+ var len = Math.min(leftOptionsLen, rightOptionsLen);
34
+ for (var i = 0; i < len; i++) {
35
+ if (leftOptionIndexes[i] > rightOptionIndexes[i]) {
36
+ return sort_type === sort.SORT_TYPE.UP ? 1 : -1;
37
+ }
38
+ if (leftOptionIndexes[i] < rightOptionIndexes[i]) {
39
+ return sort_type === sort.SORT_TYPE.UP ? -1 : 1;
40
+ }
41
+ }
42
+ if (leftOptionsLen > rightOptionsLen) {
43
+ return sort_type === sort.SORT_TYPE.UP ? 1 : -1;
44
+ }
45
+ return sort_type === sort.SORT_TYPE.UP ? -1 : 1;
46
+ };
47
+
48
+ exports.getMultipleIndexesOrderbyOptions = core.getMultipleIndexesOrderbyOptions;
49
+ exports.sortMultipleSelect = sortMultipleSelect;
@@ -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
+ * 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) {
21
+ return sortType === sort.SORT_TYPE.UP ? 1 : -1;
22
+ }
23
+ if (leftNumber < rightNumber) {
24
+ return sortType === sort.SORT_TYPE.UP ? -1 : 1;
25
+ }
26
+ return 0;
27
+ };
28
+
29
+ exports.sortNumber = sortNumber;
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var sort = require('../../constants/sort.js');
6
+
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) {
16
+ var sort_type = _ref.sort_type,
17
+ option_id_index_map = _ref.option_id_index_map;
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;
25
+ if (currentOptionIdIndex > nextOptionIdIndex) {
26
+ return sort_type === sort.SORT_TYPE.UP ? 1 : -1;
27
+ }
28
+ if (currentOptionIdIndex < nextOptionIdIndex) {
29
+ return sort_type === sort.SORT_TYPE.UP ? -1 : 1;
30
+ }
31
+ return 0;
32
+ };
33
+
34
+ exports.sortSingleSelect = sortSingleSelect;
@@ -0,0 +1,66 @@
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
+ /**
9
+ * Compare strings
10
+ * @param {string} leftString
11
+ * @param {string} rightString
12
+ * @returns number
13
+ */
14
+ var compareString = function compareString(leftString, rightString) {
15
+ if (!leftString && !rightString) return 0;
16
+ if (!leftString) return -1;
17
+ if (!rightString) return 1;
18
+ if (typeof leftString !== 'string' || typeof rightString !== 'string') return 0;
19
+ var leftStringParts = leftString.match(reg.REG_STRING_NUMBER_PARTS);
20
+ var rightStringParts = rightString.match(reg.REG_STRING_NUMBER_PARTS);
21
+ var len = Math.min(leftStringParts.length, rightStringParts.length);
22
+ var isDigitPart;
23
+ var leftStringPart;
24
+ var rightStringPart;
25
+
26
+ // Loop through each substring part to canCompare the overall strings.
27
+ for (var i = 0; i < len; i++) {
28
+ leftStringPart = leftStringParts[i];
29
+ rightStringPart = rightStringParts[i];
30
+ isDigitPart = reg.REG_NUMBER_DIGIT.test(leftStringPart) && reg.REG_NUMBER_DIGIT.test(rightStringPart);
31
+ if (isDigitPart) {
32
+ leftStringPart = parseInt(leftStringPart);
33
+ rightStringPart = parseInt(rightStringPart);
34
+ if (leftStringPart > rightStringPart) {
35
+ return 1;
36
+ }
37
+ if (leftStringPart < rightStringPart) {
38
+ return -1;
39
+ }
40
+ }
41
+ if (leftStringPart !== rightStringPart) {
42
+ return leftString.localeCompare(rightString);
43
+ }
44
+ }
45
+ return leftString.localeCompare(rightString);
46
+ };
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);
63
+ };
64
+
65
+ exports.compareString = compareString;
66
+ exports.sortText = sortText;
@@ -0,0 +1,115 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var core = require('./core.js');
6
+ var checkbox = require('./sort-column/checkbox.js');
7
+ var collaborator$1 = require('./sort-column/collaborator.js');
8
+ var date = require('./sort-column/date.js');
9
+ var collaborator = require('../cell-value-get/collaborator.js');
10
+ require('../cell-value-get/cell-value.js');
11
+ var number = require('./sort-column/number.js');
12
+ var text = require('./sort-column/text.js');
13
+ var cellType = require('../constants/cell-type.js');
14
+ var column = require('../constants/column.js');
15
+ var formula = require('../constants/formula.js');
16
+ var formula$1 = require('./sort-column/formula.js');
17
+ var link = require('./sort-column/link.js');
18
+ var multipleSelect = require('./sort-column/multiple-select.js');
19
+ var singleSelect = require('./sort-column/single-select.js');
20
+ var sort = require('../constants/sort.js');
21
+
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) {
30
+ var _ref$formulaRows = _ref.formulaRows,
31
+ formulaRows = _ref$formulaRows === void 0 ? {} : _ref$formulaRows,
32
+ value = _ref.value;
33
+ tableRows.sort(function (currentRow, nextRow) {
34
+ var initValue = 0;
35
+ sorts.forEach(function (sort$1) {
36
+ var column_key = sort$1.column_key,
37
+ sort_type = sort$1.sort_type,
38
+ column$1 = sort$1.column;
39
+ var columnType = column$1.type,
40
+ columnData = column$1.data;
41
+ var currCellVal = currentRow[column_key];
42
+ var nextCellVal = nextRow[column_key];
43
+ if (column.DATE_COLUMN_OPTIONS.includes(columnType)) {
44
+ initValue = initValue || date.sortDate(currCellVal, nextCellVal, sort_type);
45
+ } else if (columnType === cellType.CellType.SINGLE_SELECT) {
46
+ initValue = initValue || singleSelect.sortSingleSelect(currCellVal, nextCellVal, sort$1);
47
+ } else if (sort.NUMBER_SORTER_COLUMN_TYPES.includes(columnType)) {
48
+ initValue = initValue || number.sortNumber(currCellVal, nextCellVal, sort_type);
49
+ } else if (formula.FORMULA_COLUMN_TYPES_MAP[columnType]) {
50
+ var currentFormulaRow = formulaRows[currentRow._id] || {};
51
+ var nextFormulaRow = formulaRows[nextRow._id] || {};
52
+ currCellVal = currentFormulaRow[column_key];
53
+ nextCellVal = nextFormulaRow[column_key];
54
+ initValue = initValue || formula$1.sortFormula(currCellVal, nextCellVal, sort_type, {
55
+ columnData: columnData,
56
+ value: value
57
+ });
58
+ } else if (columnType === cellType.CellType.COLLABORATOR) {
59
+ var collaborators = value.collaborators;
60
+ var currValidCollaborators = currCellVal;
61
+ var nextValidCollaborators = nextCellVal;
62
+ if (collaborators) {
63
+ currValidCollaborators = collaborator.getCollaboratorsNames(currCellVal, collaborators);
64
+ nextValidCollaborators = collaborator.getCollaboratorsNames(nextCellVal, collaborators);
65
+ }
66
+ initValue = initValue || collaborator$1.sortCollaborator(currValidCollaborators, nextValidCollaborators, sort_type);
67
+ } else if (columnType === cellType.CellType.CHECKBOX) {
68
+ initValue = initValue || checkbox.sortCheckbox(currCellVal, nextCellVal, sort_type);
69
+ } else if (columnType === cellType.CellType.MULTIPLE_SELECT) {
70
+ initValue = initValue || multipleSelect.sortMultipleSelect(currCellVal, nextCellVal, sort$1);
71
+ } else if (columnType === cellType.CellType.LINK) {
72
+ var _currentFormulaRow = formulaRows[currentRow._id] || {};
73
+ var _nextFormulaRow = formulaRows[nextRow._id] || {};
74
+ currCellVal = _currentFormulaRow[column_key];
75
+ nextCellVal = _nextFormulaRow[column_key];
76
+ initValue = initValue || link.sortLink(currCellVal, nextCellVal, sort_type, {
77
+ columnData: columnData,
78
+ value: value
79
+ });
80
+ } else {
81
+ initValue = initValue || text.sortText(currCellVal, nextCellVal, sort_type);
82
+ }
83
+ });
84
+ return initValue;
85
+ });
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
+ */
97
+ var sortTableRows = function sortTableRows(sorts, rows, columns) {
98
+ var _ref2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
99
+ formulaRows = _ref2.formulaRows,
100
+ value = _ref2.value;
101
+ if (!Array.isArray(rows) || rows.length === 0) return [];
102
+ var sortRows = rows.slice(0);
103
+ var validSorts = core.deleteInvalidSort(sorts, columns);
104
+ var normalizedFormulaRows = formulaRows || {};
105
+ sortRowsWithMultiSorts(sortRows, validSorts, {
106
+ formulaRows: normalizedFormulaRows,
107
+ value: value
108
+ });
109
+ return sortRows.map(function (row) {
110
+ return row._id;
111
+ });
112
+ };
113
+
114
+ exports.sortRowsWithMultiSorts = sortRowsWithMultiSorts;
115
+ exports.sortTableRows = sortTableRows;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ /**
6
+ * Get column by key from table
7
+ * @param {object} table
8
+ * @param {string} columnKey
9
+ * @returns column, object
10
+ */
11
+ var getTableColumnByKey = function getTableColumnByKey(table, columnKey) {
12
+ if (!table || !Array.isArray(table.columns) || !columnKey) return null;
13
+ return table.columns.find(function (column) {
14
+ return column.key === columnKey;
15
+ });
16
+ };
17
+
18
+ /**
19
+ * Get table column by name
20
+ * @param {object} table
21
+ * @param {string} columnName
22
+ * @returns column, object
23
+ */
24
+ var getTableColumnByName = function getTableColumnByName(table, columnName) {
25
+ if (!table || !Array.isArray(table.columns) || !columnName) return null;
26
+ return table.columns.find(function (column) {
27
+ return column.name === columnName;
28
+ });
29
+ };
30
+
31
+ exports.getTableColumnByKey = getTableColumnByKey;
32
+ exports.getTableColumnByName = getTableColumnByName;
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ /**
6
+ * Get table by id
7
+ * @param {array} tables
8
+ * @param {string} tableId
9
+ * @returns table, object
10
+ */
11
+ var getTableById = function getTableById(tables, tableId) {
12
+ if (!Array.isArray(tables) || !tableId) return null;
13
+ return tables.find(function (table) {
14
+ return table._id === tableId;
15
+ });
16
+ };
17
+
18
+ exports.getTableById = getTableById;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ /**
6
+ * Get table row by id
7
+ * @param {object} table
8
+ * @param {string} rowId the id of row
9
+ * @returns row, object
10
+ */
11
+ var getRowById = function getRowById(table, rowId) {
12
+ if (!table || !table.id_row_map || !rowId) return null;
13
+ return table.id_row_map[rowId];
14
+ };
15
+
16
+ /**
17
+ * Get table rows by ids
18
+ * @param {object} table { id_row_map, ... }
19
+ * @param {array} rowsIds [ row._id, ... ]
20
+ * @returns rows, array
21
+ */
22
+ var getRowsByIds = function getRowsByIds(table, rowsIds) {
23
+ if (!table || !table.id_row_map || !Array.isArray(rowsIds)) return [];
24
+ return rowsIds.map(function (rowId) {
25
+ return table.id_row_map[rowId];
26
+ }).filter(Boolean);
27
+ };
28
+
29
+ exports.getRowById = getRowById;
30
+ exports.getRowsByIds = getRowsByIds;
@@ -9,7 +9,7 @@ var cellType = require('../constants/cell-type.js');
9
9
  var column = require('../constants/column.js');
10
10
  var formula = require('../constants/formula.js');
11
11
  var index = require('../constants/filter/index.js');
12
- var common = require('../column/common.js');
12
+ var option = require('../column/option.js');
13
13
  var date = require('../column/date.js');
14
14
  var filterPredicate = require('../constants/filter/filter-predicate.js');
15
15
  var filterModifier = require('../constants/filter/filter-modifier.js');
@@ -307,7 +307,7 @@ var ValidateFilter = /*#__PURE__*/function () {
307
307
  }
308
308
  case cellType.CellType.SINGLE_SELECT:
309
309
  {
310
- var options = common.getColumnOptions(filterColumn);
310
+ var options = option.getColumnOptions(filterColumn);
311
311
  if (PREDICATES_REQUIRE_ARRAY_TERM.includes(predicate)) {
312
312
  if (!this.isValidTermType(term, TERM_TYPE_MAP.ARRAY)) {
313
313
  return false;
@@ -349,7 +349,7 @@ var ValidateFilter = /*#__PURE__*/function () {
349
349
  }
350
350
 
351
351
  // contains deleted option(s)
352
- var _options = common.getColumnOptions(filterColumn);
352
+ var _options = option.getColumnOptions(filterColumn);
353
353
  return this.isValidSelectedOptions(term, _options);
354
354
  }
355
355
  case cellType.CellType.DATE:
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var isValidPosition = function isValidPosition(lng, lat) {
6
+ return (lng || lng === 0) && (lat || lat === 0);
7
+ };
8
+
9
+ exports.isValidPosition = isValidPosition;
@@ -0,0 +1,143 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var core = require('../filter/core.js');
6
+ var core$1 = require('../group/core.js');
7
+ var core$2 = require('../sort/core.js');
8
+ var cellType = require('../constants/cell-type.js');
9
+
10
+ /**
11
+ * Get view by id
12
+ * @param {array} views e.g. [{ _id, ... }, ...]
13
+ * @param {string} viewId
14
+ * @returns view, object
15
+ */
16
+ var getViewById = function getViewById(views, viewId) {
17
+ if (!Array.isArray(views) || !viewId) return null;
18
+ return views.find(function (view) {
19
+ return view._id === viewId;
20
+ });
21
+ };
22
+
23
+ /**
24
+ * Check whether the view contains filters
25
+ * @param {object} view e.g. { filters, ... }
26
+ * @param {array} columns
27
+ * @returns bool
28
+ */
29
+ var isFilterView = function isFilterView(view, columns) {
30
+ var validFilters = core.getValidFilters(view.filters, columns);
31
+ return validFilters.length > 0;
32
+ };
33
+
34
+ /**
35
+ * Check whether the view contains groupbys
36
+ * @param {object} view e.g. { groupbys, ... }
37
+ * @param {array} columns
38
+ * @returns bool
39
+ */
40
+ var isGroupView = function isGroupView(view, columns) {
41
+ var validGroupbys = core$1.getValidGroupbys(view.groupbys, columns);
42
+ return validGroupbys.length > 0;
43
+ };
44
+
45
+ /**
46
+ * Check whether the view contains sorts
47
+ * @param {object} view e.g. { sorts, ... }
48
+ * @param {array} columns
49
+ * @returns bool
50
+ */
51
+ var isSortView = function isSortView(view, columns) {
52
+ var validSorts = core$2.getValidSorts(view.sorts, columns);
53
+ return validSorts.length > 0;
54
+ };
55
+
56
+ /**
57
+ * Check is default view which no contains filters, sorts, groupbys etc.
58
+ * @param {object} view e.g. { filters, groupbys, sorts, ... }
59
+ * @param {array} columns
60
+ * @returns bool
61
+ */
62
+ var isDefaultView = function isDefaultView(view, columns) {
63
+ return !isFilterView(view, columns) && !isSortView(view, columns) && !isGroupView(view, columns);
64
+ };
65
+
66
+ /**
67
+ * Get link columns which used either in filters, groupbys, sorts etc.
68
+ * @param {object} view e.g. { filters, groupbys, sorts, ... }
69
+ * @param {object} table e.g. { columns, ... }
70
+ * @returns link columns, array
71
+ */
72
+ var getLinkColumnsUsedInFilters = function getLinkColumnsUsedInFilters(view, table) {
73
+ var filters = view.filters,
74
+ sorts = view.sorts,
75
+ groupbys = view.groupbys;
76
+ var columns = table.columns;
77
+ if (!Array.isArray(columns)) return [];
78
+ var validFilters = core.getValidFiltersWithoutError(filters, columns);
79
+ var validSorts = core$2.getValidSorts(sorts, columns);
80
+ var validGroupbys = core$1.getValidGroupbys(groupbys, columns);
81
+ var hasFilters = validFilters && validFilters.length > 0;
82
+ var hasSorts = validSorts && validSorts.length > 0;
83
+ var hasGroupbys = validGroupbys && validGroupbys.length > 0;
84
+ if (!hasFilters && !hasSorts && !hasGroupbys) return [];
85
+ var keyLinkColumnMap = {};
86
+ var keyExistLinkColumnMap = {};
87
+ var linkColumns = [];
88
+ columns.forEach(function (column) {
89
+ var key = column.key,
90
+ name = column.name,
91
+ type = column.type,
92
+ data = column.data,
93
+ width = column.width;
94
+ if (type === cellType.CellType.LINK) {
95
+ keyLinkColumnMap[column.key] = {
96
+ key: key,
97
+ name: name,
98
+ type: type,
99
+ data: data,
100
+ width: width
101
+ };
102
+ }
103
+ });
104
+ if (Object.keys(keyLinkColumnMap).length === 0) return [];
105
+ if (hasFilters) {
106
+ validFilters.forEach(function (filter) {
107
+ var filterColumnKey = filter.column_key;
108
+ var filterLinkColumn = keyLinkColumnMap[filterColumnKey];
109
+ if (filterLinkColumn && !keyExistLinkColumnMap[filterColumnKey]) {
110
+ linkColumns.push(filterLinkColumn);
111
+ keyExistLinkColumnMap[filterColumnKey] = true;
112
+ }
113
+ });
114
+ }
115
+ if (hasSorts) {
116
+ validSorts.forEach(function (sort) {
117
+ var sortColumnKey = sort.column_key;
118
+ var sortLinkColumn = keyLinkColumnMap[sortColumnKey];
119
+ if (sortLinkColumn && !keyExistLinkColumnMap[sortColumnKey]) {
120
+ linkColumns.push(sortLinkColumn);
121
+ keyExistLinkColumnMap[sortColumnKey] = true;
122
+ }
123
+ });
124
+ }
125
+ if (hasGroupbys) {
126
+ validGroupbys.forEach(function (groupby) {
127
+ var groupbyColumnKey = groupby.column_key;
128
+ var groupbyLinkColumn = keyLinkColumnMap[groupbyColumnKey];
129
+ if (groupbyLinkColumn && !keyExistLinkColumnMap[groupbyColumnKey]) {
130
+ linkColumns.push(groupbyLinkColumn);
131
+ keyExistLinkColumnMap[groupbyColumnKey] = true;
132
+ }
133
+ });
134
+ }
135
+ return linkColumns;
136
+ };
137
+
138
+ exports.getLinkColumnsUsedInFilters = getLinkColumnsUsedInFilters;
139
+ exports.getViewById = getViewById;
140
+ exports.isDefaultView = isDefaultView;
141
+ exports.isFilterView = isFilterView;
142
+ exports.isGroupView = isGroupView;
143
+ exports.isSortView = isSortView;