dtable-utils 0.0.3-beta.1 → 0.0.4-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -3
- package/dist/index.js +1 -1
- package/es/cell-value-get/cell-value.js +82 -60
- package/es/cell-value-get/collaborator.js +9 -2
- package/es/cell-value-get/duration.js +3 -3
- package/es/cell-value-get/geolocation.js +23 -25
- package/es/cell-value-get/number.js +19 -11
- package/es/cell-value-get/option.js +18 -4
- package/es/cell-value-get/rate.js +5 -0
- package/es/cell-value-set/date.js +9 -3
- package/es/{column/color.js → color/column-color.js} +25 -3
- package/es/{row/color.js → color/row-color.js} +12 -1
- package/es/column/option.js +37 -7
- package/es/common.js +23 -2
- package/es/constants/formula.js +2 -1
- package/es/filter/core.js +61 -26
- package/es/filter/filter-column/array.js +35 -30
- package/es/filter/filter-column/checkbox.js +9 -3
- package/es/filter/filter-column/collaborator.js +20 -15
- package/es/filter/filter-column/creator.js +22 -13
- package/es/filter/filter-column/date.js +57 -14
- package/es/filter/filter-column/digital-sign.js +11 -8
- package/es/filter/filter-column/file.js +9 -6
- package/es/filter/filter-column/formula.js +16 -8
- package/es/filter/filter-column/geolocation.js +12 -7
- package/es/filter/filter-column/link.js +10 -2
- package/es/filter/filter-column/long-text.js +10 -7
- package/es/filter/filter-column/multiple-select.js +17 -13
- package/es/filter/filter-column/number.js +25 -21
- package/es/filter/filter-column/single-select.js +14 -10
- package/es/filter/filter-column/text.js +18 -13
- package/es/filter/filter-row.js +35 -0
- package/es/group/core.js +15 -6
- package/es/group/group-row.js +39 -3
- package/es/index.js +10 -10
- package/es/link/core.js +14 -14
- package/es/number.js +11 -3
- package/es/row/core.js +20 -1
- package/es/sort/core.js +66 -7
- package/es/sort/sort-column/array.js +39 -30
- package/es/sort/sort-column/checkbox.js +12 -5
- package/es/sort/sort-column/collaborator.js +11 -4
- package/es/sort/sort-column/date.js +12 -12
- package/es/sort/sort-column/formula.js +21 -12
- package/es/sort/sort-column/link.js +18 -9
- package/es/sort/sort-column/multiple-select.js +26 -26
- package/es/sort/sort-column/number.js +15 -8
- package/es/sort/sort-column/single-select.js +16 -8
- package/es/sort/sort-column/text.js +24 -10
- package/es/sort/sort-row.js +22 -38
- package/es/table/column.js +2 -2
- package/es/table/core.js +2 -2
- package/es/table/row.js +4 -4
- package/es/view/core.js +20 -21
- package/es/view/formula.js +35 -31
- package/es/view/group.js +4 -4
- package/es/view/summaries.js +17 -29
- package/lib/cell-value-get/cell-value.js +82 -60
- package/lib/cell-value-get/collaborator.js +9 -2
- package/lib/cell-value-get/duration.js +4 -2
- package/lib/cell-value-get/geolocation.js +23 -25
- package/lib/cell-value-get/number.js +19 -11
- package/lib/cell-value-get/option.js +18 -4
- package/lib/cell-value-get/rate.js +5 -0
- package/lib/cell-value-set/date.js +9 -3
- package/lib/{column/color.js → color/column-color.js} +31 -9
- package/lib/{row/color.js → color/row-color.js} +12 -1
- package/lib/column/option.js +37 -7
- package/lib/common.js +23 -1
- package/lib/constants/formula.js +2 -0
- package/lib/filter/core.js +61 -26
- package/lib/filter/filter-column/array.js +35 -30
- package/lib/filter/filter-column/checkbox.js +9 -3
- package/lib/filter/filter-column/collaborator.js +20 -15
- package/lib/filter/filter-column/creator.js +22 -13
- package/lib/filter/filter-column/date.js +57 -14
- package/lib/filter/filter-column/digital-sign.js +11 -8
- package/lib/filter/filter-column/file.js +9 -6
- package/lib/filter/filter-column/formula.js +16 -8
- package/lib/filter/filter-column/geolocation.js +12 -7
- package/lib/filter/filter-column/link.js +10 -2
- package/lib/filter/filter-column/long-text.js +10 -7
- package/lib/filter/filter-column/multiple-select.js +17 -13
- package/lib/filter/filter-column/number.js +25 -21
- package/lib/filter/filter-column/single-select.js +14 -10
- package/lib/filter/filter-column/text.js +18 -13
- package/lib/filter/filter-row.js +35 -0
- package/lib/group/core.js +15 -6
- package/lib/group/group-row.js +39 -3
- package/lib/index.js +47 -45
- package/lib/link/core.js +14 -14
- package/lib/number.js +11 -3
- package/lib/row/core.js +20 -1
- package/lib/sort/core.js +71 -6
- package/lib/sort/sort-column/array.js +39 -30
- package/lib/sort/sort-column/checkbox.js +12 -5
- package/lib/sort/sort-column/collaborator.js +11 -4
- package/lib/sort/sort-column/date.js +12 -12
- package/lib/sort/sort-column/formula.js +21 -12
- package/lib/sort/sort-column/link.js +18 -9
- package/lib/sort/sort-column/multiple-select.js +25 -26
- package/lib/sort/sort-column/number.js +15 -8
- package/lib/sort/sort-column/single-select.js +16 -8
- package/lib/sort/sort-column/text.js +24 -10
- package/lib/sort/sort-row.js +21 -42
- package/lib/table/column.js +2 -2
- package/lib/table/core.js +2 -2
- package/lib/table/row.js +4 -4
- package/lib/view/core.js +20 -21
- package/lib/view/formula.js +35 -31
- package/lib/view/group.js +4 -4
- package/lib/view/summaries.js +17 -29
- package/package.json +1 -1
- package/es/table/index.js +0 -14
- package/lib/table/index.js +0 -18
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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
|
49
|
+
* @returns bool
|
|
50
50
|
*/
|
|
51
51
|
var isSortView = function isSortView(view, columns) {
|
|
52
|
-
var
|
|
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
|
-
*
|
|
59
|
-
* @param {object} view {
|
|
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
|
|
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
|
-
*
|
|
69
|
-
* @param {object} view { filters, groupbys, sorts, ... }
|
|
70
|
-
* @param {object} table
|
|
71
|
-
* @returns
|
|
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,
|
package/lib/view/formula.js
CHANGED
|
@@ -6,9 +6,9 @@ var cellType = require('../constants/cell-type.js');
|
|
|
6
6
|
var formula = require('../constants/formula.js');
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
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
|
-
*
|
|
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)
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
keyEdgesMap[dependColumnKey]
|
|
85
|
-
|
|
86
|
-
|
|
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)
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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)) {
|
package/lib/view/summaries.js
CHANGED
|
@@ -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('../
|
|
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
|
-
*
|
|
26
|
-
* @param {object} table
|
|
27
|
-
* @param {array} rows table
|
|
28
|
-
* @param {object} formulaRows
|
|
29
|
-
* @returns
|
|
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
|
-
*
|
|
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
|
|
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
|
|
112
|
-
var summary =
|
|
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
|
|
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
|
-
*
|
|
160
|
-
* @param {array} groups { subgroups, row_ids, ... }
|
|
161
|
-
* @param {object} table
|
|
162
|
-
* @param {object} formulaRows
|
|
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
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 };
|
package/lib/table/index.js
DELETED
|
@@ -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;
|