dtable-statistic 4.3.6 → 4.3.8
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/es/calculator/base-calculator.js +16 -5
- package/es/calculator/basic-chart-calculator.js +17 -31
- package/es/calculator/combination-calculator.js +20 -34
- package/es/calculator/compare-bar-calculator.js +9 -20
- package/es/calculator/completeness-calculator.js +10 -24
- package/es/calculator/dashboard-calculator.js +6 -20
- package/es/calculator/heat-map-calculator.js +6 -20
- package/es/calculator/horizontal-bar-calculator.js +2 -13
- package/es/calculator/index.js +2 -0
- package/es/calculator/map-calculator.js +7 -21
- package/es/calculator/mirror-calculator.js +8 -22
- package/es/calculator/number-card-calculator.js +4 -18
- package/es/calculator/pivot-table-calculator.js +40 -54
- package/es/calculator/scatter-calculator.js +6 -20
- package/es/calculator/thread-manager.js +41 -41
- package/es/calculator/trend-calculator.js +6 -20
- package/es/calculator/workers/basic-chart-calculator-worker.js +77 -45
- package/es/calculator/workers/calculator.worker.js +5 -2
- package/es/calculator/workers/card-calculator-worker.js +13 -9
- package/es/calculator/workers/combination-calculator-worker.js +20 -16
- package/es/calculator/workers/compare-bar-chart-calculator-worker.js +12 -8
- package/es/calculator/workers/completeness-calculator-worker.js +21 -17
- package/es/calculator/workers/dashboard-calculator-worker.js +16 -12
- package/es/calculator/workers/mirror-calculator-worker.js +14 -10
- package/es/calculator/workers/pivot-table-calculator-worker.js +53 -35
- package/es/calculator/workers/scatter-calculator-worker.js +15 -11
- package/es/calculator/workers/trend-calculator-worker.js +14 -10
- package/es/calculator/world-map-calculator.js +6 -20
- package/es/components/dialog/chart-addition-edit-dialog.js +1 -1
- package/es/components/dialog/chart-addition-widgets/chart-selector.js +1 -1
- package/es/components/dialog/statistic-record-dialog/index.js +21 -11
- package/es/components/dropdown-menu/statistic-dropdown-menu.js +1 -1
- package/es/components/popover/color-rules/rule-filters/number-input.js +5 -5
- package/es/components/popover/color-rules-popover.js +2 -2
- package/es/components/select/select.js +3 -3
- package/es/components/toast/alert.js +2 -0
- package/es/components/toast/toastManager.js +1 -0
- package/es/constants/color-rules.js +3 -3
- package/es/constants/index.js +9 -9
- package/es/dashboard.js +7 -13
- package/es/desktop-dashboard.js +1 -1
- package/es/locale/lang/de.js +10 -10
- package/es/locale/lang/en.js +8 -8
- package/es/locale/lang/fr.js +10 -10
- package/es/locale/lang/zh_CN.js +8 -8
- package/es/model/basic-number-card.js +3 -3
- package/es/model/compare-bar.js +2 -2
- package/es/model/generic-model.js +11 -11
- package/es/model/heat-map.js +2 -2
- package/es/model/horizontal-bar.js +2 -2
- package/es/model/index.js +3 -2
- package/es/model/map.js +3 -3
- package/es/model/mirror.js +2 -2
- package/es/model/trend.js +2 -2
- package/es/model/world-map.js +3 -3
- package/es/stat-editor/stat-settings/advance-chart-settings/combination-settings.js +7 -7
- package/es/stat-editor/stat-settings/advance-chart-settings/index.js +2 -2
- package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/combination-style-setting.js +2 -2
- package/es/stat-editor/stat-settings/advance-chart-settings/summary-settings.js +1 -1
- package/es/stat-editor/stat-settings/basic-chart-settings/bar-settings.js +1 -1
- package/es/stat-editor/stat-settings/basic-chart-settings/completeness-chart-settings.js +7 -7
- package/es/stat-editor/stat-settings/basic-chart-settings/groupby-settings.js +6 -6
- package/es/stat-editor/stat-settings/basic-chart-settings/index.js +4 -4
- package/es/stat-editor/stat-settings/basic-chart-settings/pivot-table-settings.js +5 -5
- package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/bar-chart-style-setting.js +3 -3
- package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/horizontal-bar-chart-style.js +3 -3
- package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/pie-chart-style-settings.js +3 -3
- package/es/stat-editor/stat-settings/basic-chart-settings/summary-method-setting.js +1 -1
- package/es/stat-editor/stat-settings/basic-chart-settings/summary-settings.js +1 -1
- package/es/stat-editor/stat-settings/basic-chart-settings/time-comparison-settings.js +4 -18
- package/es/stat-editor/stat-settings/color-setting/color-picker.js +1 -0
- package/es/stat-editor/stat-settings/public-setting/column-settings.js +1 -1
- package/es/stat-editor/stat-settings/public-setting/numeric-summary-item.js +1 -1
- package/es/stat-view/area-chart.js +4 -4
- package/es/stat-view/bar-chart.js +4 -4
- package/es/stat-view/base-chart.js +2 -2
- package/es/stat-view/basic-number-card.js +49 -49
- package/es/stat-view/combination-chart.js +69 -69
- package/es/stat-view/compare-chart.js +4 -4
- package/es/stat-view/completeness-chart.js +3 -3
- package/es/stat-view/custom-bar.js +2 -2
- package/es/stat-view/dashboard-chart.js +50 -50
- package/es/stat-view/heat-map.js +2 -2
- package/es/stat-view/horizontal-bar-chart.js +4 -4
- package/es/stat-view/line-chart.js +4 -4
- package/es/stat-view/map.js +3 -3
- package/es/stat-view/mirror.js +2 -2
- package/es/stat-view/pivot-table/index.js +6 -6
- package/es/stat-view/pivot-table/one-dimension-table-no-numeric-columns.js +5 -5
- package/es/stat-view/pivot-table/one-dimension-table-with-numeric-columns.js +3 -3
- package/es/stat-view/pivot-table/pivot-table-display-name.js +19 -19
- package/es/stat-view/pivot-table/two-dimension-table.js +7 -7
- package/es/stat-view/ring-chart.js +2 -2
- package/es/stat-view/scatter-chart.js +56 -56
- package/es/stat-view/treemap-chart.js +50 -49
- package/es/stat-view/trend-chart.js +52 -52
- package/es/stat-view/world-map.js +3 -3
- package/es/utils/cell-format.js +16 -16
- package/es/utils/cell-value.js +3 -3
- package/es/utils/color-utils.js +3 -3
- package/es/utils/column-utils.js +10 -10
- package/es/utils/column.js +2 -2
- package/es/utils/common-utils.js +10 -8
- package/es/utils/export-table-utils.js +38 -38
- package/es/utils/object.js +3 -3
- package/es/utils/pivot-table.js +3 -3
- package/es/utils/row-utils.js +17 -17
- package/es/utils/search.js +14 -14
- package/es/utils/sql-utils.js +23 -20
- package/es/utils/stat-utils.js +52 -52
- package/es/utils/trend-utils.js +1 -0
- package/package.json +6 -3
|
@@ -5,13 +5,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
-
var
|
|
8
|
+
var _dtableUtils = require("dtable-utils");
|
|
9
9
|
var _utils = require("../../utils");
|
|
10
10
|
var _commonUtils = require("../../utils/common-utils");
|
|
11
11
|
var _rowUtils = require("../../utils/row-utils");
|
|
12
12
|
var _constants = require("../../constants");
|
|
13
13
|
var _statUtils = _interopRequireDefault(require("../../utils/stat-utils"));
|
|
14
|
-
function calculateStatItem(chart, dtableValue,
|
|
14
|
+
async function calculateStatItem(chart, dtableValue, _ref) {
|
|
15
|
+
let {
|
|
16
|
+
getViewRows,
|
|
17
|
+
getTableFormulaResults
|
|
18
|
+
} = _ref;
|
|
15
19
|
const {
|
|
16
20
|
table_id,
|
|
17
21
|
view_id,
|
|
@@ -21,13 +25,13 @@ function calculateStatItem(chart, dtableValue, username, userId) {
|
|
|
21
25
|
summary_method,
|
|
22
26
|
group_column
|
|
23
27
|
} = chart;
|
|
24
|
-
const table =
|
|
25
|
-
const view = table &&
|
|
26
|
-
const columnItem =
|
|
27
|
-
const rows =
|
|
28
|
-
const formulaRows =
|
|
29
|
-
const groupColumn =
|
|
30
|
-
const numericColumn = summary_column &&
|
|
28
|
+
const table = (0, _dtableUtils.getTableById)(dtableValue.tables, table_id);
|
|
29
|
+
const view = table && (0, _dtableUtils.getViewById)(table.views, view_id);
|
|
30
|
+
const columnItem = (0, _dtableUtils.getTableColumnByKey)(table, column);
|
|
31
|
+
const rows = await getViewRows(view, table);
|
|
32
|
+
const formulaRows = await getTableFormulaResults(table, rows);
|
|
33
|
+
const groupColumn = (0, _dtableUtils.getTableColumnByKey)(table, group_column);
|
|
34
|
+
const numericColumn = summary_column && (0, _dtableUtils.getTableColumnByKey)(table, summary_column);
|
|
31
35
|
const groupItems = getGroupItems(rows, groupColumn);
|
|
32
36
|
if (groupColumn.length === 0) return;
|
|
33
37
|
let result = {};
|
|
@@ -74,7 +78,7 @@ function calculateStatItem(chart, dtableValue, username, userId) {
|
|
|
74
78
|
const list = result[groupItem][value];
|
|
75
79
|
const formulaRow = formulaRows[row._id];
|
|
76
80
|
let cellValue = (0, _rowUtils.getCellValue)(row, formulaRow, numericColumn);
|
|
77
|
-
cellValue = (0,
|
|
81
|
+
cellValue = (0, _dtableUtils.isNumber)(cellValue) ? cellValue : 0;
|
|
78
82
|
if (groupItem === groupValue) {
|
|
79
83
|
if (!list) {
|
|
80
84
|
result[groupItem][value] = [cellValue];
|
|
@@ -5,12 +5,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = calculateStatItem;
|
|
8
|
-
var
|
|
8
|
+
var _dtableUtils = require("dtable-utils");
|
|
9
9
|
var _constants = require("../../constants");
|
|
10
10
|
var _commonUtils = require("../../utils/common-utils");
|
|
11
11
|
var _rowUtils = require("../../utils/row-utils");
|
|
12
12
|
var _statUtils = _interopRequireDefault(require("../../utils/stat-utils"));
|
|
13
|
-
function calculateStatItem(chart, value,
|
|
13
|
+
function calculateStatItem(chart, value, _ref) {
|
|
14
|
+
let {
|
|
15
|
+
getViewRows,
|
|
16
|
+
getTableFormulaResults
|
|
17
|
+
} = _ref;
|
|
14
18
|
const {
|
|
15
19
|
groupby_column_key,
|
|
16
20
|
column_groupby_column_key
|
|
@@ -19,11 +23,21 @@ function calculateStatItem(chart, value, username, userId) {
|
|
|
19
23
|
return {};
|
|
20
24
|
}
|
|
21
25
|
if (!column_groupby_column_key) {
|
|
22
|
-
return calculateOneDimensionTable(chart, value,
|
|
26
|
+
return calculateOneDimensionTable(chart, value, {
|
|
27
|
+
getViewRows,
|
|
28
|
+
getTableFormulaResults
|
|
29
|
+
});
|
|
23
30
|
}
|
|
24
|
-
return calculateTwoDimensionTable(chart, value,
|
|
31
|
+
return calculateTwoDimensionTable(chart, value, {
|
|
32
|
+
getViewRows,
|
|
33
|
+
getTableFormulaResults
|
|
34
|
+
});
|
|
25
35
|
}
|
|
26
|
-
function calculateOneDimensionTable(chart, value,
|
|
36
|
+
async function calculateOneDimensionTable(chart, value, _ref2) {
|
|
37
|
+
let {
|
|
38
|
+
getViewRows,
|
|
39
|
+
getTableFormulaResults
|
|
40
|
+
} = _ref2;
|
|
27
41
|
const {
|
|
28
42
|
table_id,
|
|
29
43
|
view_id,
|
|
@@ -36,13 +50,13 @@ function calculateOneDimensionTable(chart, value, username, userId) {
|
|
|
36
50
|
groupby_geolocation_granularity,
|
|
37
51
|
summary_columns_option
|
|
38
52
|
} = chart;
|
|
39
|
-
const table =
|
|
40
|
-
const view = table &&
|
|
41
|
-
const column =
|
|
53
|
+
const table = (0, _dtableUtils.getTableById)(value.tables, table_id);
|
|
54
|
+
const view = table && (0, _dtableUtils.getViewById)(table.views, view_id);
|
|
55
|
+
const column = (0, _dtableUtils.getTableColumnByKey)(table, groupby_column_key);
|
|
42
56
|
if (!column) return {};
|
|
43
57
|
const isColumnDataAsAnArray = (0, _commonUtils.isArrayCellValue)(column);
|
|
44
|
-
const statRows =
|
|
45
|
-
const formulaRows =
|
|
58
|
+
const statRows = await getViewRows(view, table);
|
|
59
|
+
const formulaRows = await getTableFormulaResults(table, statRows);
|
|
46
60
|
let pivot_rows = [];
|
|
47
61
|
statRows.forEach(row => {
|
|
48
62
|
const {
|
|
@@ -74,7 +88,7 @@ function calculateOneDimensionTable(chart, value, username, userId) {
|
|
|
74
88
|
const statisticColumnKeys = [summary_column_key, ...summary_columns_option_keys];
|
|
75
89
|
const validStatisticColumnKeys = statisticColumnKeys;
|
|
76
90
|
let statisticColumns = validStatisticColumnKeys.map(key => {
|
|
77
|
-
const column =
|
|
91
|
+
const column = (0, _dtableUtils.getTableColumnByKey)(table, key);
|
|
78
92
|
return column ? {
|
|
79
93
|
...column
|
|
80
94
|
} : null;
|
|
@@ -96,7 +110,7 @@ function calculateOneDimensionTable(chart, value, username, userId) {
|
|
|
96
110
|
key: column.key,
|
|
97
111
|
method: column.method
|
|
98
112
|
};
|
|
99
|
-
}).filter(item =>
|
|
113
|
+
}).filter(item => (0, _dtableUtils.getTableColumnByKey)(table, item.key));
|
|
100
114
|
pivot_rows.forEach(row => {
|
|
101
115
|
row.original_name = row.name;
|
|
102
116
|
row.name = (0, _rowUtils.getFormattedLabel)(column, row.name, value.collaborators);
|
|
@@ -128,7 +142,7 @@ function getOneDimensionTotal(columns, summary_type, formula_rows) {
|
|
|
128
142
|
let dateColumnsTotalArr = {};
|
|
129
143
|
if (Array.isArray(columns) && columns.length > 0) {
|
|
130
144
|
columns.forEach(column => {
|
|
131
|
-
if (column && (0,
|
|
145
|
+
if (column && (0, _dtableUtils.isDateColumn)(column)) {
|
|
132
146
|
dateColumnsTotalArr[column.key] = [];
|
|
133
147
|
}
|
|
134
148
|
});
|
|
@@ -153,7 +167,7 @@ function getOneDimensionTotal(columns, summary_type, formula_rows) {
|
|
|
153
167
|
method
|
|
154
168
|
} = summaryColumn;
|
|
155
169
|
const total = getTotal(summaryColumn, summary_type, method, rows, formula_rows);
|
|
156
|
-
if (summaryColumn && (0,
|
|
170
|
+
if (summaryColumn && (0, _dtableUtils.isDateColumn)(summaryColumn)) {
|
|
157
171
|
if (method === _constants.SUMMARY_METHOD_MAP.Distinct_values) {
|
|
158
172
|
totalMap['total'] = total;
|
|
159
173
|
} else {
|
|
@@ -184,7 +198,7 @@ function getOneDimensionTotal(columns, summary_type, formula_rows) {
|
|
|
184
198
|
} = column;
|
|
185
199
|
const totalKey = key + method;
|
|
186
200
|
const total = getTotal(column, summary_type, method, rows, formula_rows);
|
|
187
|
-
if (column && (0,
|
|
201
|
+
if (column && (0, _dtableUtils.isDateColumn)(column)) {
|
|
188
202
|
if (method === _constants.SUMMARY_METHOD_MAP.Distinct_values) {
|
|
189
203
|
totalMap[totalKey] = total;
|
|
190
204
|
} else {
|
|
@@ -218,7 +232,11 @@ function getOneDimensionTotal(columns, summary_type, formula_rows) {
|
|
|
218
232
|
pivot_columns_total
|
|
219
233
|
};
|
|
220
234
|
}
|
|
221
|
-
function calculateTwoDimensionTable(chart, value,
|
|
235
|
+
async function calculateTwoDimensionTable(chart, value, _ref3) {
|
|
236
|
+
let {
|
|
237
|
+
getViewRows,
|
|
238
|
+
getTableFormulaResults
|
|
239
|
+
} = _ref3;
|
|
222
240
|
const {
|
|
223
241
|
table_id,
|
|
224
242
|
view_id,
|
|
@@ -234,24 +252,24 @@ function calculateTwoDimensionTable(chart, value, username, userId) {
|
|
|
234
252
|
column_groupby_geolocation_granularity,
|
|
235
253
|
summary_columns_option
|
|
236
254
|
} = chart;
|
|
237
|
-
const table =
|
|
238
|
-
const view = table &&
|
|
255
|
+
const table = (0, _dtableUtils.getTableById)(value.tables, table_id);
|
|
256
|
+
const view = table && (0, _dtableUtils.getViewById)(table.views, view_id);
|
|
239
257
|
if (!view) return;
|
|
240
|
-
const groupbyColumn =
|
|
258
|
+
const groupbyColumn = (0, _dtableUtils.getTableColumnByKey)(table, groupby_column_key);
|
|
241
259
|
if (!groupbyColumn) return;
|
|
242
260
|
const isGroupbyColumnDataAsAnArray = (0, _commonUtils.isArrayCellValue)(groupbyColumn);
|
|
243
|
-
const rowGroupbyColumn =
|
|
261
|
+
const rowGroupbyColumn = (0, _dtableUtils.getTableColumnByKey)(table, column_groupby_column_key);
|
|
244
262
|
if (!rowGroupbyColumn) {
|
|
245
263
|
return calculateOneDimensionTable(chart, value);
|
|
246
264
|
}
|
|
247
265
|
const isRowGroupbyColumnDataAsAnArray = (0, _commonUtils.isArrayCellValue)(rowGroupbyColumn);
|
|
248
|
-
const summaryColumn =
|
|
249
|
-
const statRows =
|
|
250
|
-
const formulaRows =
|
|
266
|
+
const summaryColumn = (0, _dtableUtils.getTableColumnByKey)(table, summary_column_key);
|
|
267
|
+
const statRows = await getViewRows(view, table);
|
|
268
|
+
const formulaRows = await getTableFormulaResults(table, statRows);
|
|
251
269
|
const pivot_summary_multiple_columns = [];
|
|
252
270
|
summary_columns_option.forEach(item => {
|
|
253
|
-
const column =
|
|
254
|
-
if (column && (0,
|
|
271
|
+
const column = (0, _dtableUtils.getTableColumnByKey)(table, item.key);
|
|
272
|
+
if (column && (0, _dtableUtils.isNumericColumn)(column)) {
|
|
255
273
|
pivot_summary_multiple_columns.push({
|
|
256
274
|
key: item.key,
|
|
257
275
|
type: column.type,
|
|
@@ -420,7 +438,7 @@ function updateTwoDimensionRows(pivot_rows, pivot_columns, index, name, row, isC
|
|
|
420
438
|
}
|
|
421
439
|
}
|
|
422
440
|
function isSameName(prevName, currName) {
|
|
423
|
-
if ((0,
|
|
441
|
+
if ((0, _dtableUtils.isNumber)(prevName) && (0, _dtableUtils.isNumber)(currName)) {
|
|
424
442
|
return prevName === currName;
|
|
425
443
|
}
|
|
426
444
|
if (!prevName && !currName) {
|
|
@@ -443,7 +461,7 @@ function getTwoDimensionTotal(summaryColumn, summary_type, summary_method, formu
|
|
|
443
461
|
let {
|
|
444
462
|
type: summary_column_type
|
|
445
463
|
} = summaryColumn || {};
|
|
446
|
-
const isSummaryDateColumn = summaryColumn && (0,
|
|
464
|
+
const isSummaryDateColumn = summaryColumn && (0, _dtableUtils.isDateColumn)(summaryColumn);
|
|
447
465
|
let date_summary_column_format = isSummaryDateColumn ? summaryColumn.data.format : '';
|
|
448
466
|
Array.isArray(pivot_rows) && pivot_rows.forEach(pivotRow => {
|
|
449
467
|
let {
|
|
@@ -482,7 +500,7 @@ function getTwoDimensionTotal(summaryColumn, summary_type, summary_method, formu
|
|
|
482
500
|
pivot_table_total += total;
|
|
483
501
|
}
|
|
484
502
|
});
|
|
485
|
-
if (summaryColumn && (0,
|
|
503
|
+
if (summaryColumn && (0, _dtableUtils.isDateColumn)(summaryColumn)) {
|
|
486
504
|
if (summary_method === _constants.SUMMARY_METHOD_MAP.Distinct_values) {
|
|
487
505
|
pivot_columns_total = Number.parseFloat(pivot_table_total.toFixed(8));
|
|
488
506
|
} else {
|
|
@@ -516,7 +534,7 @@ function getTotal(summary_column, summary_type, summary_method) {
|
|
|
516
534
|
let existMap = {};
|
|
517
535
|
rows.forEach(row => {
|
|
518
536
|
let num;
|
|
519
|
-
if (
|
|
537
|
+
if (_dtableUtils.FORMULA_COLUMN_TYPES_MAP[summary_column_type]) {
|
|
520
538
|
const formulaRow = formula_rows[row._id] || {};
|
|
521
539
|
num = formulaRow[summary_column_key];
|
|
522
540
|
num = Array.isArray(num) ? num[0] : num;
|
|
@@ -537,14 +555,14 @@ function getTotal(summary_column, summary_type, summary_method) {
|
|
|
537
555
|
});
|
|
538
556
|
return total;
|
|
539
557
|
}
|
|
540
|
-
if (summary_column && (0,
|
|
558
|
+
if (summary_column && (0, _dtableUtils.isDateColumn)(summary_column)) {
|
|
541
559
|
if (rowsLength === 0) return;
|
|
542
560
|
let dateArr = [];
|
|
543
561
|
rows.forEach(r => {
|
|
544
562
|
let formatDate = {};
|
|
545
563
|
let formatDateData;
|
|
546
564
|
let value = r[summary_column_key];
|
|
547
|
-
if (
|
|
565
|
+
if (_dtableUtils.FORMULA_COLUMN_TYPES_MAP[summary_column_type]) {
|
|
548
566
|
let formulaRow = formula_rows[r._id] || {};
|
|
549
567
|
value = formulaRow[summary_column_key];
|
|
550
568
|
}
|
|
@@ -575,7 +593,7 @@ function getTotal(summary_column, summary_type, summary_method) {
|
|
|
575
593
|
let validNumbersCount = 0;
|
|
576
594
|
rows.forEach(r => {
|
|
577
595
|
let num;
|
|
578
|
-
if (
|
|
596
|
+
if (_dtableUtils.FORMULA_COLUMN_TYPES_MAP[summary_column_type]) {
|
|
579
597
|
let formulaRow = formula_rows[r._id] || {};
|
|
580
598
|
if (formulaRow[summary_column_key] && typeof formulaRow[summary_column_key] === 'object') {
|
|
581
599
|
num = formulaRow[summary_column_key][0];
|
|
@@ -585,7 +603,7 @@ function getTotal(summary_column, summary_type, summary_method) {
|
|
|
585
603
|
} else {
|
|
586
604
|
num = r[summary_column_key];
|
|
587
605
|
}
|
|
588
|
-
if ((0,
|
|
606
|
+
if ((0, _dtableUtils.isNumber)(num)) {
|
|
589
607
|
validNumbersCount++;
|
|
590
608
|
sum += num;
|
|
591
609
|
}
|
|
@@ -603,7 +621,7 @@ function getTotal(summary_column, summary_type, summary_method) {
|
|
|
603
621
|
if (rowsLength > 0) {
|
|
604
622
|
let result = rows.reduce((current, next) => {
|
|
605
623
|
let currentValue, nextValue;
|
|
606
|
-
if (
|
|
624
|
+
if (_dtableUtils.FORMULA_COLUMN_TYPES_MAP[summary_column_type]) {
|
|
607
625
|
let currentFormulaRow = formula_rows[current._id] || {};
|
|
608
626
|
let nextFormulaRow = formula_rows[next._id] || {};
|
|
609
627
|
currentValue = currentFormulaRow[summary_column_key];
|
|
@@ -622,7 +640,7 @@ function getTotal(summary_column, summary_type, summary_method) {
|
|
|
622
640
|
return isNextGreater ? next : current;
|
|
623
641
|
}
|
|
624
642
|
});
|
|
625
|
-
if (
|
|
643
|
+
if (_dtableUtils.FORMULA_COLUMN_TYPES_MAP[summary_column_type]) {
|
|
626
644
|
let formulaRow = formula_rows[result._id];
|
|
627
645
|
if (formulaRow) {
|
|
628
646
|
if (formulaRow[summary_column_key] && typeof formulaRow[summary_column_key] === 'object') {
|
|
@@ -5,12 +5,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
-
var
|
|
8
|
+
var _dtableUtils = require("dtable-utils");
|
|
9
9
|
var _statUtils = _interopRequireDefault(require("../../utils/stat-utils"));
|
|
10
10
|
var _commonUtils = require("../../utils/common-utils");
|
|
11
11
|
var _rowUtils = require("../../utils/row-utils");
|
|
12
12
|
var _constants = require("../../constants");
|
|
13
|
-
function calculateResult(chart, value,
|
|
13
|
+
async function calculateResult(chart, value, _ref) {
|
|
14
|
+
let {
|
|
15
|
+
getViewRows,
|
|
16
|
+
getTableFormulaResults
|
|
17
|
+
} = _ref;
|
|
14
18
|
const {
|
|
15
19
|
table_id,
|
|
16
20
|
view_id,
|
|
@@ -18,16 +22,16 @@ function calculateResult(chart, value, username, userId) {
|
|
|
18
22
|
y_axis_column,
|
|
19
23
|
group_column
|
|
20
24
|
} = chart;
|
|
21
|
-
const table =
|
|
22
|
-
const view = table &&
|
|
25
|
+
const table = (0, _dtableUtils.getTableById)(value.tables, table_id);
|
|
26
|
+
const view = table && (0, _dtableUtils.getViewById)(table.views, view_id);
|
|
23
27
|
if (!view) {
|
|
24
28
|
return [];
|
|
25
29
|
}
|
|
26
|
-
const selectedXAxisColumn =
|
|
27
|
-
const selectedYAxisColumn =
|
|
28
|
-
const selectedGroupColumn =
|
|
29
|
-
const statRows =
|
|
30
|
-
const formulaRows =
|
|
30
|
+
const selectedXAxisColumn = (0, _dtableUtils.getTableColumnByKey)(table, x_axis_column);
|
|
31
|
+
const selectedYAxisColumn = (0, _dtableUtils.getTableColumnByKey)(table, y_axis_column);
|
|
32
|
+
const selectedGroupColumn = (0, _dtableUtils.getTableColumnByKey)(table, group_column);
|
|
33
|
+
const statRows = await getViewRows(view, table);
|
|
34
|
+
const formulaRows = await getTableFormulaResults(table, statRows);
|
|
31
35
|
const data = [];
|
|
32
36
|
statRows.forEach(row => {
|
|
33
37
|
const {
|
|
@@ -36,8 +40,8 @@ function calculateResult(chart, value, username, userId) {
|
|
|
36
40
|
const formulaRow = formulaRows[rowId] || {};
|
|
37
41
|
let x_axis = (0, _rowUtils.getCellValue)(row, formulaRow, selectedXAxisColumn);
|
|
38
42
|
let y_axis = (0, _rowUtils.getCellValue)(row, formulaRow, selectedYAxisColumn);
|
|
39
|
-
x_axis = (0,
|
|
40
|
-
y_axis = (0,
|
|
43
|
+
x_axis = (0, _dtableUtils.isNumber)(x_axis) ? x_axis : 0;
|
|
44
|
+
y_axis = (0, _dtableUtils.isNumber)(y_axis) ? y_axis : 0;
|
|
41
45
|
const name = getColumnValue(row, formulaRow, selectedGroupColumn, value);
|
|
42
46
|
const nameIndex = data.findIndex(r => r.name === name && r.x_axis === x_axis && r.y_axis === y_axis);
|
|
43
47
|
const dataItem = {
|
|
@@ -7,14 +7,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
9
9
|
var _quarterOfYear = _interopRequireDefault(require("dayjs/plugin/quarterOfYear"));
|
|
10
|
-
var
|
|
10
|
+
var _dtableUtils = require("dtable-utils");
|
|
11
11
|
var _constants = require("../../constants");
|
|
12
12
|
var _statUtils = _interopRequireDefault(require("../../utils/stat-utils"));
|
|
13
13
|
var _rowUtils = require("../../utils/row-utils");
|
|
14
14
|
var _commonUtils = require("../../utils/common-utils");
|
|
15
15
|
var _trendUtils = require("../../utils/trend-utils");
|
|
16
16
|
_dayjs.default.extend(_quarterOfYear.default);
|
|
17
|
-
function calculateStatItem(chart, value,
|
|
17
|
+
async function calculateStatItem(chart, value, _ref) {
|
|
18
|
+
let {
|
|
19
|
+
getViewRows,
|
|
20
|
+
getTableFormulaResults
|
|
21
|
+
} = _ref;
|
|
18
22
|
const {
|
|
19
23
|
table_id,
|
|
20
24
|
view_id,
|
|
@@ -24,16 +28,16 @@ function calculateStatItem(chart, value, username, userId) {
|
|
|
24
28
|
summary_type,
|
|
25
29
|
summary_method
|
|
26
30
|
} = chart;
|
|
27
|
-
const selectedTable =
|
|
28
|
-
const selectedView = selectedTable &&
|
|
29
|
-
const selectedColumn =
|
|
31
|
+
const selectedTable = (0, _dtableUtils.getTableById)(value.tables, table_id);
|
|
32
|
+
const selectedView = selectedTable && (0, _dtableUtils.getViewById)(selectedTable.views, view_id);
|
|
33
|
+
const selectedColumn = (0, _dtableUtils.getTableColumnByKey)(selectedTable, date_column);
|
|
30
34
|
const resultMap = new Map();
|
|
31
35
|
let formulaRows = {};
|
|
32
|
-
const rows =
|
|
33
|
-
const numericColumn =
|
|
36
|
+
const rows = await getViewRows(selectedView, selectedTable);
|
|
37
|
+
const numericColumn = (0, _dtableUtils.getTableColumnByKey)(selectedTable, summary_column);
|
|
34
38
|
if (summary_type === _constants.SUMMARY_TYPE.ADVANCED) {
|
|
35
|
-
if (
|
|
36
|
-
formulaRows =
|
|
39
|
+
if (_dtableUtils.FORMULA_COLUMN_TYPES_MAP[numericColumn.type]) {
|
|
40
|
+
formulaRows = await getTableFormulaResults(selectedTable, rows);
|
|
37
41
|
}
|
|
38
42
|
}
|
|
39
43
|
let granularity = date_granularity;
|
|
@@ -51,7 +55,7 @@ function calculateStatItem(chart, value, username, userId) {
|
|
|
51
55
|
const formulaRow = formulaRows[row._id];
|
|
52
56
|
const numericValue = (0, _rowUtils.getCellValue)(row, formulaRow, numericColumn);
|
|
53
57
|
const currentList = resultMap.get(label) || [];
|
|
54
|
-
if ((0,
|
|
58
|
+
if ((0, _dtableUtils.isNumber)(numericValue)) {
|
|
55
59
|
currentList.push(numericValue);
|
|
56
60
|
}
|
|
57
61
|
resultMap.set(label, currentList);
|
|
@@ -5,26 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
-
var
|
|
8
|
+
var _dtableUtils = require("dtable-utils");
|
|
9
9
|
var _baseCalculator = _interopRequireDefault(require("./base-calculator"));
|
|
10
10
|
var _commonUtils = require("../utils/common-utils");
|
|
11
11
|
var _constants = require("../constants");
|
|
12
12
|
var _statUtils = _interopRequireDefault(require("../utils/stat-utils"));
|
|
13
13
|
class WorldMapCalculator extends _baseCalculator.default {
|
|
14
|
-
constructor(_ref) {
|
|
15
|
-
let {
|
|
16
|
-
value,
|
|
17
|
-
statisticThreadManager,
|
|
18
|
-
username,
|
|
19
|
-
userId
|
|
20
|
-
} = _ref;
|
|
21
|
-
super({
|
|
22
|
-
value,
|
|
23
|
-
statisticThreadManager,
|
|
24
|
-
username,
|
|
25
|
-
userId
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
14
|
isValidChart(chart) {
|
|
29
15
|
if (!this.validateBaseConfigs(chart)) {
|
|
30
16
|
return false;
|
|
@@ -35,11 +21,11 @@ class WorldMapCalculator extends _baseCalculator.default {
|
|
|
35
21
|
summary_column
|
|
36
22
|
} = chart;
|
|
37
23
|
const table = this.getTableById(table_id);
|
|
38
|
-
const selectedColumn = column &&
|
|
24
|
+
const selectedColumn = column && (0, _dtableUtils.getTableColumnByKey)(table, column);
|
|
39
25
|
if (column && !selectedColumn) {
|
|
40
26
|
return false;
|
|
41
27
|
}
|
|
42
|
-
if (summary_column && !
|
|
28
|
+
if (summary_column && !(0, _dtableUtils.getTableColumnByKey)(table, summary_column)) {
|
|
43
29
|
return false;
|
|
44
30
|
}
|
|
45
31
|
return true;
|
|
@@ -63,17 +49,17 @@ class WorldMapCalculator extends _baseCalculator.default {
|
|
|
63
49
|
} = chart;
|
|
64
50
|
const selectedTable = this.getTableById(table_id);
|
|
65
51
|
const selectedView = this.getViewById(view_id, selectedTable);
|
|
66
|
-
const selectedColumn =
|
|
52
|
+
const selectedColumn = (0, _dtableUtils.getTableColumnByKey)(selectedTable, column);
|
|
67
53
|
if (!selectedColumn) return [];
|
|
68
54
|
const columnName = selectedColumn.name;
|
|
69
55
|
const isAdvanced = summary_type === 'advanced';
|
|
70
56
|
const method = isAdvanced ? _constants.DTABLE_DB_SUMMARY_METHOD[summary_method] : 'COUNT';
|
|
71
|
-
const sqlCondition =
|
|
57
|
+
const sqlCondition = this.filter2SqlCondition(selectedTable, selectedView);
|
|
72
58
|
let summaryColumnName = '';
|
|
73
59
|
let summaryColumn;
|
|
74
60
|
let sqlString = '';
|
|
75
61
|
if (isAdvanced) {
|
|
76
|
-
summaryColumn =
|
|
62
|
+
summaryColumn = (0, _dtableUtils.getTableColumnByKey)(selectedTable, summary_column);
|
|
77
63
|
if (!summaryColumn) {
|
|
78
64
|
return [];
|
|
79
65
|
}
|
|
@@ -65,7 +65,7 @@ class ChartAdditionEditDialog extends _react.Component {
|
|
|
65
65
|
zIndex: 1048
|
|
66
66
|
}, /*#__PURE__*/_react.default.createElement(_reactstrap.ModalHeader, {
|
|
67
67
|
toggle: this.props.hideChartAdditionDialog
|
|
68
|
-
}, _reactIntlUniversal.default.get(editMode ? 'Edit_the_chart' : '
|
|
68
|
+
}, _reactIntlUniversal.default.get(editMode ? 'Edit_the_chart' : 'All_charts')), /*#__PURE__*/_react.default.createElement(_reactstrap.ModalBody, {
|
|
69
69
|
className: "statistic-modal-body"
|
|
70
70
|
}, editMode ? /*#__PURE__*/_react.default.createElement(_statEditor.default, {
|
|
71
71
|
dtableChangedTime: this.props.dtableChangedTime,
|
|
@@ -174,7 +174,7 @@ class ChartSelector extends _react.default.Component {
|
|
|
174
174
|
image: 'number-card.png'
|
|
175
175
|
}, {
|
|
176
176
|
type: _constants.STAT_TYPE.TREND_CHART,
|
|
177
|
-
title: _reactIntlUniversal.default.get('
|
|
177
|
+
title: _reactIntlUniversal.default.get('Trend_card'),
|
|
178
178
|
image: 'trend-chart.png'
|
|
179
179
|
}]
|
|
180
180
|
}, {
|
|
@@ -9,7 +9,7 @@ exports.default = void 0;
|
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _reactIntlUniversal = _interopRequireDefault(require("react-intl-universal"));
|
|
11
11
|
var _reactstrap = require("reactstrap");
|
|
12
|
-
var
|
|
12
|
+
var _dtableUtils = require("dtable-utils");
|
|
13
13
|
var _dtableDbApi = _interopRequireDefault(require("../../../api/dtable-db-api"));
|
|
14
14
|
var _index = require("../../index");
|
|
15
15
|
var _utils = require("../../../utils");
|
|
@@ -42,16 +42,24 @@ class StatisticRecordDialog extends _react.default.Component {
|
|
|
42
42
|
view_id
|
|
43
43
|
} = chart;
|
|
44
44
|
this.table = getTableById(table_id);
|
|
45
|
-
this.view =
|
|
46
|
-
this.isArchiveView =
|
|
45
|
+
this.view = (0, _dtableUtils.getViewById)(this.table.views, view_id);
|
|
46
|
+
this.isArchiveView = (0, _dtableUtils.isArchiveView)(this.view);
|
|
47
47
|
this.unShowColumnKeyList = this.getUnShowColumnKeyList(this.view);
|
|
48
48
|
this.renderedColumns = this.getRenderedColumns(this.table);
|
|
49
49
|
if (this.isArchiveView || !records) {
|
|
50
|
+
const {
|
|
51
|
+
username,
|
|
52
|
+
userId,
|
|
53
|
+
userDepartmentIdsMap
|
|
54
|
+
} = window.dtable || {};
|
|
50
55
|
const sqlString = (0, _sqlUtils.getSqlString)(chart, statisticRecord, {
|
|
51
56
|
isColumn,
|
|
52
57
|
isCurrentView,
|
|
53
58
|
isRow,
|
|
54
|
-
getTableById
|
|
59
|
+
getTableById,
|
|
60
|
+
username,
|
|
61
|
+
userId,
|
|
62
|
+
userDepartmentIdsMap
|
|
55
63
|
});
|
|
56
64
|
_dtableDbApi.default.sqlQuery(sqlString).then(res => {
|
|
57
65
|
const {
|
|
@@ -86,7 +94,7 @@ class StatisticRecordDialog extends _react.default.Component {
|
|
|
86
94
|
};
|
|
87
95
|
this.initComputedProperties = drilledRows => {
|
|
88
96
|
if (this.isArchiveView) {
|
|
89
|
-
const formulaColumns =
|
|
97
|
+
const formulaColumns = (0, _dtableUtils.getFormulaColumnsContainLinks)(this.table);
|
|
90
98
|
if (formulaColumns.length === 0) return {};
|
|
91
99
|
let formulaRows = {};
|
|
92
100
|
drilledRows.forEach(row => {
|
|
@@ -131,7 +139,7 @@ class StatisticRecordDialog extends _react.default.Component {
|
|
|
131
139
|
this.getSearchedRows = (rows, searchVal) => {
|
|
132
140
|
if (!Array.isArray(rows) || rows.length === 0) return [];
|
|
133
141
|
if (searchVal) {
|
|
134
|
-
return (0, _utils.searchRows)(rows,
|
|
142
|
+
return (0, _utils.searchRows)(rows, (0, _dtableUtils.getViewShownColumns)(this.view, this.table.columns), searchVal, row => {
|
|
135
143
|
return row;
|
|
136
144
|
}).map(row => row._id);
|
|
137
145
|
}
|
|
@@ -236,11 +244,13 @@ class StatisticRecordDialog extends _react.default.Component {
|
|
|
236
244
|
formulaRows: view.formula_rows
|
|
237
245
|
};
|
|
238
246
|
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
247
|
+
if (window.app && window.app.cacheFormulaResults) {
|
|
248
|
+
window.app.cacheFormulaResults(table.rows, {
|
|
249
|
+
targetViewId: view._id,
|
|
250
|
+
table,
|
|
251
|
+
value
|
|
252
|
+
});
|
|
253
|
+
}
|
|
244
254
|
return {
|
|
245
255
|
formulaRows: view.formula_rows
|
|
246
256
|
};
|
|
@@ -90,7 +90,7 @@ class StatisticDropdownMenu extends _react.default.Component {
|
|
|
90
90
|
className: "item-icon dtable-font dtable-icon-copy"
|
|
91
91
|
}), /*#__PURE__*/_react.default.createElement("span", {
|
|
92
92
|
className: "item-text"
|
|
93
|
-
}, _reactIntlUniversal.default.get('
|
|
93
|
+
}, _reactIntlUniversal.default.get('Duplicate')))), chartType === _constants.STAT_TYPE.PIVOT_TABLE && !isTableReadOnly && /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactstrap.DropdownItem, {
|
|
94
94
|
onClick: this.props.onNewTableDialogToggle
|
|
95
95
|
}, /*#__PURE__*/_react.default.createElement("i", {
|
|
96
96
|
className: "item-icon dtable-font dtable-icon-export"
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
-
var
|
|
9
|
+
var _dtableUtils = require("dtable-utils");
|
|
10
10
|
/**
|
|
11
11
|
* support type number with format
|
|
12
12
|
*/
|
|
@@ -23,19 +23,19 @@ class NumberInput extends _react.Component {
|
|
|
23
23
|
if (valueType === 'number') {
|
|
24
24
|
numericValue = value;
|
|
25
25
|
} else if (valueType === 'string') {
|
|
26
|
-
numericValue = (0,
|
|
26
|
+
numericValue = (0, _dtableUtils.formatStringToNumber)(value, {});
|
|
27
27
|
}
|
|
28
28
|
if (!numericValue && numericValue !== 0) {
|
|
29
29
|
return '';
|
|
30
30
|
}
|
|
31
|
-
return (0,
|
|
31
|
+
return (0, _dtableUtils.getNumberDisplayString)(numericValue, {}) || '';
|
|
32
32
|
};
|
|
33
33
|
this.onChange = evt => {
|
|
34
|
-
const value = (0,
|
|
34
|
+
const value = (0, _dtableUtils.replaceNumberNotAllowInput)(evt.target.value.trim(), _dtableUtils.DEFAULT_NUMBER_FORMAT, null);
|
|
35
35
|
this.setState({
|
|
36
36
|
value
|
|
37
37
|
}, () => {
|
|
38
|
-
this.props.onChange((0,
|
|
38
|
+
this.props.onChange((0, _dtableUtils.formatStringToNumber)(value, {}));
|
|
39
39
|
});
|
|
40
40
|
};
|
|
41
41
|
this.onPaste = evt => {
|
|
@@ -9,7 +9,7 @@ exports.default = void 0;
|
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
11
11
|
var _reactIntlUniversal = _interopRequireDefault(require("react-intl-universal"));
|
|
12
|
-
var
|
|
12
|
+
var _dtableUtils = require("dtable-utils");
|
|
13
13
|
var _index = require("../index");
|
|
14
14
|
var _colorRules = _interopRequireDefault(require("./color-rules"));
|
|
15
15
|
var _colorRules2 = require("../../constants/color-rules");
|
|
@@ -82,7 +82,7 @@ class ColorRulesPopover extends _react.Component {
|
|
|
82
82
|
switch (filterType) {
|
|
83
83
|
case _colorRules2.COLOR_RULE_FILTER_TYPE_MAP.NUMERIC_VALUE:
|
|
84
84
|
{
|
|
85
|
-
return
|
|
85
|
+
return _dtableUtils.FILTER_COLUMN_OPTIONS[_dtableUtils.CellType.NUMBER];
|
|
86
86
|
}
|
|
87
87
|
default:
|
|
88
88
|
{
|
|
@@ -31,7 +31,7 @@ class Select extends _react.Component {
|
|
|
31
31
|
});
|
|
32
32
|
window.app.eventBus.dispatch(_constants.CommonEventTypes.OPEN_SELECT, !this.state.isShowSelectOptions);
|
|
33
33
|
};
|
|
34
|
-
this.
|
|
34
|
+
this.onMousedown = event => {
|
|
35
35
|
if (this.props.isShowSelected && event.target.className.includes('icon-fork-number')) {
|
|
36
36
|
return;
|
|
37
37
|
}
|
|
@@ -84,10 +84,10 @@ class Select extends _react.Component {
|
|
|
84
84
|
};
|
|
85
85
|
}
|
|
86
86
|
componentDidMount() {
|
|
87
|
-
document.addEventListener('
|
|
87
|
+
document.addEventListener('mousedown', this.onMousedown);
|
|
88
88
|
}
|
|
89
89
|
componentWillUnmount() {
|
|
90
|
-
document.removeEventListener('
|
|
90
|
+
document.removeEventListener('mousedown', this.onMousedown);
|
|
91
91
|
}
|
|
92
92
|
render() {
|
|
93
93
|
let {
|