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.
Files changed (115) hide show
  1. package/README.md +12 -3
  2. package/dist/index.js +1 -1
  3. package/es/cell-value-get/cell-value.js +82 -60
  4. package/es/cell-value-get/collaborator.js +9 -2
  5. package/es/cell-value-get/duration.js +3 -3
  6. package/es/cell-value-get/geolocation.js +23 -25
  7. package/es/cell-value-get/number.js +19 -11
  8. package/es/cell-value-get/option.js +18 -4
  9. package/es/cell-value-get/rate.js +5 -0
  10. package/es/cell-value-set/date.js +9 -3
  11. package/es/{column/color.js → color/column-color.js} +25 -3
  12. package/es/{row/color.js → color/row-color.js} +12 -1
  13. package/es/column/option.js +37 -7
  14. package/es/common.js +23 -2
  15. package/es/constants/formula.js +2 -1
  16. package/es/filter/core.js +61 -26
  17. package/es/filter/filter-column/array.js +35 -30
  18. package/es/filter/filter-column/checkbox.js +9 -3
  19. package/es/filter/filter-column/collaborator.js +20 -15
  20. package/es/filter/filter-column/creator.js +22 -13
  21. package/es/filter/filter-column/date.js +57 -14
  22. package/es/filter/filter-column/digital-sign.js +11 -8
  23. package/es/filter/filter-column/file.js +9 -6
  24. package/es/filter/filter-column/formula.js +16 -8
  25. package/es/filter/filter-column/geolocation.js +12 -7
  26. package/es/filter/filter-column/link.js +10 -2
  27. package/es/filter/filter-column/long-text.js +10 -7
  28. package/es/filter/filter-column/multiple-select.js +17 -13
  29. package/es/filter/filter-column/number.js +25 -21
  30. package/es/filter/filter-column/single-select.js +14 -10
  31. package/es/filter/filter-column/text.js +18 -13
  32. package/es/filter/filter-row.js +35 -0
  33. package/es/group/core.js +15 -6
  34. package/es/group/group-row.js +39 -3
  35. package/es/index.js +10 -10
  36. package/es/link/core.js +14 -14
  37. package/es/number.js +11 -3
  38. package/es/row/core.js +20 -1
  39. package/es/sort/core.js +66 -7
  40. package/es/sort/sort-column/array.js +39 -30
  41. package/es/sort/sort-column/checkbox.js +12 -5
  42. package/es/sort/sort-column/collaborator.js +11 -4
  43. package/es/sort/sort-column/date.js +12 -12
  44. package/es/sort/sort-column/formula.js +21 -12
  45. package/es/sort/sort-column/link.js +18 -9
  46. package/es/sort/sort-column/multiple-select.js +26 -26
  47. package/es/sort/sort-column/number.js +15 -8
  48. package/es/sort/sort-column/single-select.js +16 -8
  49. package/es/sort/sort-column/text.js +24 -10
  50. package/es/sort/sort-row.js +22 -38
  51. package/es/table/column.js +2 -2
  52. package/es/table/core.js +2 -2
  53. package/es/table/row.js +4 -4
  54. package/es/view/core.js +20 -21
  55. package/es/view/formula.js +35 -31
  56. package/es/view/group.js +4 -4
  57. package/es/view/summaries.js +17 -29
  58. package/lib/cell-value-get/cell-value.js +82 -60
  59. package/lib/cell-value-get/collaborator.js +9 -2
  60. package/lib/cell-value-get/duration.js +4 -2
  61. package/lib/cell-value-get/geolocation.js +23 -25
  62. package/lib/cell-value-get/number.js +19 -11
  63. package/lib/cell-value-get/option.js +18 -4
  64. package/lib/cell-value-get/rate.js +5 -0
  65. package/lib/cell-value-set/date.js +9 -3
  66. package/lib/{column/color.js → color/column-color.js} +31 -9
  67. package/lib/{row/color.js → color/row-color.js} +12 -1
  68. package/lib/column/option.js +37 -7
  69. package/lib/common.js +23 -1
  70. package/lib/constants/formula.js +2 -0
  71. package/lib/filter/core.js +61 -26
  72. package/lib/filter/filter-column/array.js +35 -30
  73. package/lib/filter/filter-column/checkbox.js +9 -3
  74. package/lib/filter/filter-column/collaborator.js +20 -15
  75. package/lib/filter/filter-column/creator.js +22 -13
  76. package/lib/filter/filter-column/date.js +57 -14
  77. package/lib/filter/filter-column/digital-sign.js +11 -8
  78. package/lib/filter/filter-column/file.js +9 -6
  79. package/lib/filter/filter-column/formula.js +16 -8
  80. package/lib/filter/filter-column/geolocation.js +12 -7
  81. package/lib/filter/filter-column/link.js +10 -2
  82. package/lib/filter/filter-column/long-text.js +10 -7
  83. package/lib/filter/filter-column/multiple-select.js +17 -13
  84. package/lib/filter/filter-column/number.js +25 -21
  85. package/lib/filter/filter-column/single-select.js +14 -10
  86. package/lib/filter/filter-column/text.js +18 -13
  87. package/lib/filter/filter-row.js +35 -0
  88. package/lib/group/core.js +15 -6
  89. package/lib/group/group-row.js +39 -3
  90. package/lib/index.js +47 -45
  91. package/lib/link/core.js +14 -14
  92. package/lib/number.js +11 -3
  93. package/lib/row/core.js +20 -1
  94. package/lib/sort/core.js +71 -6
  95. package/lib/sort/sort-column/array.js +39 -30
  96. package/lib/sort/sort-column/checkbox.js +12 -5
  97. package/lib/sort/sort-column/collaborator.js +11 -4
  98. package/lib/sort/sort-column/date.js +12 -12
  99. package/lib/sort/sort-column/formula.js +21 -12
  100. package/lib/sort/sort-column/link.js +18 -9
  101. package/lib/sort/sort-column/multiple-select.js +25 -26
  102. package/lib/sort/sort-column/number.js +15 -8
  103. package/lib/sort/sort-column/single-select.js +16 -8
  104. package/lib/sort/sort-column/text.js +24 -10
  105. package/lib/sort/sort-row.js +21 -42
  106. package/lib/table/column.js +2 -2
  107. package/lib/table/core.js +2 -2
  108. package/lib/table/row.js +4 -4
  109. package/lib/view/core.js +20 -21
  110. package/lib/view/formula.js +35 -31
  111. package/lib/view/group.js +4 -4
  112. package/lib/view/summaries.js +17 -29
  113. package/package.json +1 -1
  114. package/es/table/index.js +0 -14
  115. package/lib/table/index.js +0 -18
package/lib/view/core.js CHANGED
@@ -8,10 +8,10 @@ var core$2 = require('../sort/core.js');
8
8
  var cellType = require('../constants/cell-type.js');
9
9
 
10
10
  /**
11
- * get view by id
12
- * @param {array} views { _id: '', ... }
11
+ * Get view by id
12
+ * @param {array} views e.g. [{ _id, ... }, ...]
13
13
  * @param {string} viewId
14
- * @returns object
14
+ * @returns view, object
15
15
  */
16
16
  var getViewById = function getViewById(views, viewId) {
17
17
  if (!Array.isArray(views) || !viewId) return null;
@@ -21,10 +21,10 @@ var getViewById = function getViewById(views, viewId) {
21
21
  };
22
22
 
23
23
  /**
24
- * check whether the view contains filters
25
- * @param {object} view { filters: [], ... }
24
+ * Check whether the view contains filters
25
+ * @param {object} view e.g. { filters, ... }
26
26
  * @param {array} columns
27
- * @returns boolean
27
+ * @returns bool
28
28
  */
29
29
  var isFilterView = function isFilterView(view, columns) {
30
30
  var validFilters = core.getValidFilters(view.filters, columns);
@@ -32,10 +32,10 @@ var isFilterView = function isFilterView(view, columns) {
32
32
  };
33
33
 
34
34
  /**
35
- * check whether the view contains groupbys
36
- * @param {object} view { groupbys: [], ... }
35
+ * Check whether the view contains groupbys
36
+ * @param {object} view e.g. { groupbys, ... }
37
37
  * @param {array} columns
38
- * @returns boolean
38
+ * @returns bool
39
39
  */
40
40
  var isGroupView = function isGroupView(view, columns) {
41
41
  var validGroupbys = core$1.getValidGroupbys(view.groupbys, columns);
@@ -43,32 +43,31 @@ var isGroupView = function isGroupView(view, columns) {
43
43
  };
44
44
 
45
45
  /**
46
- * check whether the view contains sorts
47
- * @param {object} view { sorts: [], ... }
46
+ * Check whether the view contains sorts
47
+ * @param {object} view e.g. { sorts, ... }
48
48
  * @param {array} columns
49
- * @returns boolean
49
+ * @returns bool
50
50
  */
51
51
  var isSortView = function isSortView(view, columns) {
52
- var sorts = view.sorts;
53
- var validSorts = core$2.getValidSorts(sorts, columns);
52
+ var validSorts = core$2.getValidSorts(view.sorts, columns);
54
53
  return validSorts.length > 0;
55
54
  };
56
55
 
57
56
  /**
58
- * check is default view which no contains filters, sorts, groupbys etc.
59
- * @param {object} view { sorts: [], ... }
57
+ * Check is default view which no contains filters, sorts, groupbys etc.
58
+ * @param {object} view e.g. { filters, groupbys, sorts, ... }
60
59
  * @param {array} columns
61
- * @returns boolean
60
+ * @returns bool
62
61
  */
63
62
  var isDefaultView = function isDefaultView(view, columns) {
64
63
  return !isFilterView(view, columns) && !isSortView(view, columns) && !isGroupView(view, columns);
65
64
  };
66
65
 
67
66
  /**
68
- * get link columns which used either in filters, groupbys, sorts etc.
69
- * @param {object} view { filters, groupbys, sorts, ... }
70
- * @param {object} table
71
- * @returns array, link columns
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
72
71
  */
73
72
  var getLinkColumnsUsedInFilters = function getLinkColumnsUsedInFilters(view, table) {
74
73
  var filters = view.filters,
@@ -6,9 +6,9 @@ var cellType = require('../constants/cell-type.js');
6
6
  var formula = require('../constants/formula.js');
7
7
 
8
8
  /**
9
- * transform the formats of link column to link-formula's
10
- * @param {object} linkColumn { key, data: { display_column_key, ... }, ... }
11
- * @returns object
9
+ * Transform the formats of link column to link-formula's
10
+ * @param {object} linkColumn e.g. { key, data: { display_column_key, ... }, ... }
11
+ * @returns converted link column, object
12
12
  */
13
13
  var transLink2LinkFormula = function transLink2LinkFormula(linkColumn) {
14
14
  var key = linkColumn.key,
@@ -30,10 +30,10 @@ var transLink2LinkFormula = function transLink2LinkFormula(linkColumn) {
30
30
  };
31
31
 
32
32
  /**
33
- * get sorted formula columns
34
- * @param {array} formulaColumns
35
- * @param {object} table
36
- * @returns array
33
+ * Get sorted formula columns
34
+ * @param {array} formulaColumns the formula columns waiting to sort
35
+ * @param {object} table e.g. { columns, ... }
36
+ * @returns sorted formula columns, array
37
37
  */
38
38
  var getSortedFormulaColumns = function getSortedFormulaColumns(formulaColumns, table) {
39
39
  if (!Array.isArray(formulaColumns) || !table || !Array.isArray(table.columns)) return [];
@@ -74,18 +74,20 @@ var getSortedFormulaColumns = function getSortedFormulaColumns(formulaColumns, t
74
74
  var data = formulaColumn.data;
75
75
  var operated_columns = data.operated_columns;
76
76
  keyInDegreeMap[formulaColumnKey] = 0;
77
- Array.isArray(operated_columns) && operated_columns.forEach(function (dependColumnKey) {
78
- var dependColumn = keyColumnMap[dependColumnKey];
79
- if (!dependColumn) {
80
- return;
81
- }
82
- keyInDegreeMap[formulaColumnKey]++;
83
- if (keyEdgesMap[dependColumnKey]) {
84
- keyEdgesMap[dependColumnKey].push(formulaColumnKey);
85
- } else {
86
- keyEdgesMap[dependColumnKey] = [formulaColumnKey];
87
- }
88
- });
77
+ if (Array.isArray(operated_columns)) {
78
+ operated_columns.forEach(function (dependColumnKey) {
79
+ var dependColumn = keyColumnMap[dependColumnKey];
80
+ if (!dependColumn) {
81
+ return;
82
+ }
83
+ keyInDegreeMap[formulaColumnKey] += 1;
84
+ if (keyEdgesMap[dependColumnKey]) {
85
+ keyEdgesMap[dependColumnKey].push(formulaColumnKey);
86
+ } else {
87
+ keyEdgesMap[dependColumnKey] = [formulaColumnKey];
88
+ }
89
+ });
90
+ }
89
91
  });
90
92
  var sortedList = [];
91
93
  var waitingQueue = [];
@@ -98,12 +100,14 @@ var getSortedFormulaColumns = function getSortedFormulaColumns(formulaColumns, t
98
100
  var columnKey = waitingQueue.shift();
99
101
  var edges = keyEdgesMap[columnKey];
100
102
  sortedList.push(columnKey);
101
- Array.isArray(edges) && edges.forEach(function (edge) {
102
- keyInDegreeMap[edge]--;
103
- if (keyInDegreeMap[edge] === 0) {
104
- waitingQueue.push(edge);
105
- }
106
- });
103
+ if (Array.isArray(edges)) {
104
+ edges.forEach(function (edge) {
105
+ keyInDegreeMap[edge] -= 1;
106
+ if (keyInDegreeMap[edge] === 0) {
107
+ waitingQueue.push(edge);
108
+ }
109
+ });
110
+ }
107
111
  }
108
112
  return sortedList.map(function (columnKey) {
109
113
  return keyColumnMap[columnKey];
@@ -111,9 +115,9 @@ var getSortedFormulaColumns = function getSortedFormulaColumns(formulaColumns, t
111
115
  };
112
116
 
113
117
  /**
114
- * get formula columns and link columns from table
115
- * @param {object} table { columns: [], ... }
116
- * @returns array
118
+ * Get table formula columns and link columns
119
+ * @param {object} table e.g. { columns, ... }
120
+ * @returns formula and link columns, array
117
121
  */
118
122
  var getFormulaColumnsContainLinks = function getFormulaColumnsContainLinks(table) {
119
123
  var columns = table.columns;
@@ -134,9 +138,9 @@ var getFormulaColumnsContainLinks = function getFormulaColumnsContainLinks(table
134
138
  };
135
139
 
136
140
  /**
137
- * get sorted formula columns and link columns from table
138
- * @param {object} table { columns: [], ... }
139
- * @returns array
141
+ * Get sorted formula and link columns from table
142
+ * @param {object} table e.g. { columns, ... }
143
+ * @returns sorted formula and link columns, array
140
144
  */
141
145
  var getSortedFormulaColumnsContainLinks = function getSortedFormulaColumnsContainLinks(table) {
142
146
  var formulaColumns = getFormulaColumnsContainLinks(table);
package/lib/view/group.js CHANGED
@@ -3,10 +3,10 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  /**
6
- * get group by paths.
7
- * @param {array} paths e.g. [0, 1, 2]
8
- * @param {array} groups
9
- * @returns object
6
+ * Get group by paths
7
+ * @param {array} paths e.g. [ 0, 1, 2 ]
8
+ * @param {array} groups grouped rows
9
+ * @returns group, object
10
10
  */
11
11
  var getGroupByPath = function getGroupByPath(paths, groups) {
12
12
  if (!Array.isArray(paths) || !Array.isArray(groups)) {
@@ -4,29 +4,16 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var row = require('../table/row.js');
6
6
  var core = require('../row/core.js');
7
- require('@babel/runtime/helpers/defineProperty');
8
- require('../constants/group.js');
9
- require('../validate/filter.js');
10
- require('../filter/core.js');
11
- require('@babel/runtime/helpers/toConsumableArray');
12
- require('../constants/filter/filter-column-options.js');
13
- require('../constants/filter/filter-modifier.js');
14
- require('../constants/filter/filter-predicate.js');
15
- require('../constants/filter/filter-is-within.js');
16
- require('../date.js');
17
- var number$1 = require('../number.js');
18
- require('../cell-value-get/cell-value.js');
19
7
  var number = require('../column/number.js');
20
- require('../constants/column.js');
8
+ var number$1 = require('../number.js');
21
9
  var formula = require('../constants/formula.js');
22
- require('../constants/row-color.js');
23
10
 
24
11
  /**
25
- * calculate summaries of numeric columns from table
26
- * @param {object} table
27
- * @param {array} rows table's rows or rows ids
28
- * @param {object} formulaRows support numeric formula columns
29
- * @returns object, { [column.key]: { sum, average, median, max, min, ... }, ... }
12
+ * Calculate summaries of table numeric columns
13
+ * @param {object} table e.g. { columns, ... }
14
+ * @param {array} rows e.g. table rows: [{ _id, ...}, ...] | view rows: [ row._id, ... ]
15
+ * @param {object} formulaRows for numeric formula columns
16
+ * @returns summaries: { [column.key]: { sum, average, median, max, min, ... }, ... }, object
30
17
  */
31
18
  var getSummaries = function getSummaries(table, rows, formulaRows) {
32
19
  var numericColumns = table.columns.filter(function (column) {
@@ -92,10 +79,10 @@ var getSummaries = function getSummaries(table, rows, formulaRows) {
92
79
  };
93
80
 
94
81
  /**
95
- * calculate sub-group's summaries of numeric columns
96
- * @param {array} subgroups { summaries, ... }
82
+ * Calculate group summaries by subgroup
83
+ * @param {array} subgroups e.g. [{ summaries, ... }, ...]
97
84
  * @param {array} numericColumns
98
- * @returns object, { [column.key]: { sum, average, median, max, min, ... } }
85
+ * @returns summaries: { [column.key]: { sum, average, median, max, min, ... }, ... }, object
99
86
  */
100
87
  var getSummariesWithSubgroups = function getSummariesWithSubgroups(subgroups, numericColumns) {
101
88
  var subgroupsLen = subgroups.length;
@@ -108,8 +95,8 @@ var getSummariesWithSubgroups = function getSummariesWithSubgroups(subgroups, nu
108
95
  var max;
109
96
  var min;
110
97
  subgroups.forEach(function (subgroup) {
111
- var summaries = subgroup.summaries;
112
- var summary = summaries[column.key];
98
+ var subSummaries = subgroup.summaries;
99
+ var summary = subSummaries[column.key];
113
100
  var subgroupSum = summary.sum,
114
101
  subgroupAverage = summary.average,
115
102
  subgroupMedian = summary.median,
@@ -143,7 +130,7 @@ var getSummariesWithSubgroups = function getSummariesWithSubgroups(subgroups, nu
143
130
  median = medianArr[parseInt(medianArr.length / 2)];
144
131
  }
145
132
  }
146
- average = average / subgroupsLen;
133
+ average /= subgroupsLen;
147
134
  summaries[column.key] = {
148
135
  sum: sum,
149
136
  average: average,
@@ -156,10 +143,11 @@ var getSummariesWithSubgroups = function getSummariesWithSubgroups(subgroups, nu
156
143
  };
157
144
 
158
145
  /**
159
- * calculate group's summaries of numeric columns from table
160
- * @param {array} groups { subgroups, row_ids, ... }
161
- * @param {object} table
162
- * @param {object} formulaRows support numeric formula columns
146
+ * Calculate group summaries
147
+ * @param {array} groups e.g. [{ subgroups, row_ids, ... }, ...]
148
+ * @param {object} table e.g. { columns, ... }
149
+ * @param {object} formulaRows for numeric formula columns
150
+ * @returns void
163
151
  */
164
152
  var updateGroupSummaries = function updateGroupSummaries(groups, table, formulaRows) {
165
153
  var numericColumns = table.columns.filter(function (column) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dtable-utils",
3
- "version": "0.0.3-beta.1",
3
+ "version": "0.0.4-beta.1",
4
4
  "description": "dtable common utils",
5
5
  "main": "./lib/index.js",
6
6
  "module": "./es/index.js",
package/es/table/index.js DELETED
@@ -1,14 +0,0 @@
1
- /**
2
- * get table by id
3
- * @param {array} tables
4
- * @param {string} tableId
5
- * @returns table, object
6
- */
7
- var getTableById = function getTableById(tables, tableId) {
8
- if (!Array.isArray(tables) || !tableId) return null;
9
- return tables.find(function (table) {
10
- return table._id === tableId;
11
- });
12
- };
13
-
14
- export { getTableById };
@@ -1,18 +0,0 @@
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;