dtable-statistic 4.0.6 → 4.0.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/assets/css/dashboard.css +22 -0
- package/es/calculator/basic-chart-calculator.js +27 -18
- package/es/calculator/combination-calculator.js +34 -9
- package/es/calculator/compare-bar-calculator.js +37 -30
- package/es/calculator/heat-map-calculator.js +25 -14
- package/es/calculator/map-calculator.js +25 -14
- package/es/calculator/mirror-calculator.js +29 -14
- package/es/calculator/pivot-table-calculator.js +132 -76
- package/es/calculator/workers/basic-chart-calculator-worker.js +21 -6
- package/es/calculator/workers/combination-calculator-worker.js +20 -5
- package/es/calculator/workers/compare-bar-chart-calculator-worker.js +12 -6
- package/es/calculator/workers/mirror-calculator-worker.js +15 -6
- package/es/calculator/workers/pivot-table-calculator-worker.js +97 -44
- package/es/calculator/world-map-calculator.js +25 -14
- package/es/components/dialog/enlarged-chart-dialog.js +2 -2
- package/es/components/dialog/statistic-record-dialog/index.css +2 -0
- package/es/components/dialog/statistic-record-dialog/index.js +80 -52
- package/es/constants/index.js +30 -29
- package/es/dashboard.js +57 -43
- package/es/desktop-dashboard.js +21 -56
- package/es/index.js +34 -2
- package/es/locale/lang/de.js +7 -3
- package/es/locale/lang/en.js +5 -1
- package/es/locale/lang/fr.js +7 -3
- package/es/locale/lang/zh_CN.js +5 -1
- package/es/mobile-dashboard.js +5 -5
- package/es/model/horizontal-bar-group.js +2 -0
- package/es/stat-editor/stat-settings/advance-chart-settings/index.js +1 -2
- package/es/stat-editor/stat-settings/advance-chart-settings/summary-settings.js +1 -1
- package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/horizontal-bar-chart-style.js +20 -3
- package/es/stat-editor/stat-settings/basic-chart-settings/summary-settings.js +2 -8
- package/es/stat-editor/stat-settings/public-setting/type-settings/index.js +23 -2
- package/es/stat-list/chart-preview.js +3 -4
- package/es/stat-list/index.js +10 -4
- package/es/stat-view/area-chart.js +177 -162
- package/es/stat-view/bar-chart.js +221 -222
- package/es/stat-view/base-chart.js +79 -7
- package/es/stat-view/basic-number-card.js +11 -19
- package/es/stat-view/combination-chart.js +100 -83
- package/es/stat-view/compare-chart.js +133 -144
- package/es/stat-view/completeness-chart.js +108 -102
- package/es/stat-view/custom-bar.js +79 -99
- package/es/stat-view/dashboard-chart.js +57 -57
- package/es/stat-view/heat-map.js +13 -32
- package/es/stat-view/horizontal-bar-chart.js +200 -230
- package/es/stat-view/index.js +2 -2
- package/es/stat-view/line-chart.js +162 -158
- package/es/stat-view/map.js +26 -40
- package/es/stat-view/mirror.js +88 -94
- package/es/stat-view/pie-chart.js +11 -39
- package/es/stat-view/pivot-table/index.js +4 -16
- package/es/stat-view/pivot-table/one-dimension-table-no-numeric-columns.js +36 -23
- package/es/stat-view/pivot-table/one-dimension-table-with-numeric-columns.js +11 -5
- package/es/stat-view/pivot-table/pivot-table-display-name.js +206 -0
- package/es/stat-view/pivot-table/two-dimension-table.js +104 -60
- package/es/stat-view/ring-chart.js +24 -42
- package/es/stat-view/scatter-chart.js +4 -21
- package/es/stat-view/treemap-chart.js +3 -12
- package/es/stat-view/trend-chart.js +6 -17
- package/es/stat-view/world-map.js +39 -50
- package/es/tabs/tab.js +2 -1
- package/es/utils/collaborator.js +9 -0
- package/es/utils/common-utils.js +24 -6
- package/es/utils/index.js +1 -1
- package/es/utils/sql-utils.js +10 -9
- package/es/utils/stat-utils.js +8 -5
- package/package.json +1 -1
|
@@ -110,29 +110,40 @@ var MirrorCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
110
110
|
method = isAdvanced ? DTABLE_DB_SUMMARY_METHOD[summary_method] : 'COUNT';
|
|
111
111
|
sqlCondition = filter2SqlCondition(selectedTable, selectedView);
|
|
112
112
|
summaryColumnName = '';
|
|
113
|
-
if (isAdvanced) {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
113
|
+
if (!isAdvanced) {
|
|
114
|
+
_context2.next = 21;
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
summaryColumn = TableUtils.getTableColumnByKey(selectedTable, summary_column);
|
|
118
|
+
if (summaryColumn) {
|
|
119
|
+
_context2.next = 16;
|
|
120
|
+
break;
|
|
120
121
|
}
|
|
121
|
-
_context2.
|
|
122
|
+
return _context2.abrupt("return", []);
|
|
123
|
+
case 16:
|
|
124
|
+
summaryColumnName = summaryColumn.name;
|
|
125
|
+
summaryColumnMethod = getSummaryColumnMethod(method, summaryColumnName);
|
|
126
|
+
sqlString = "select `".concat(columnName, "`, `").concat(groupColumnName, "`, ").concat(summaryColumnMethod, " from `").concat(selectedTable.name, "` ").concat(sqlCondition, " group by `").concat(columnName, "`, `").concat(groupColumnName, "` limit 5000");
|
|
127
|
+
_context2.next = 22;
|
|
128
|
+
break;
|
|
129
|
+
case 21:
|
|
130
|
+
sqlString = "select `".concat(columnName, "`, `").concat(groupColumnName, "`, ").concat(method, "(").concat(columnName, ") from `").concat(selectedTable.name, "` ").concat(sqlCondition, " group by `").concat(columnName, "`, `").concat(groupColumnName, "` limit 5000");
|
|
131
|
+
case 22:
|
|
132
|
+
_context2.next = 24;
|
|
122
133
|
return this.sqlQuery(sqlString);
|
|
123
|
-
case
|
|
134
|
+
case 24:
|
|
124
135
|
result = _context2.sent;
|
|
125
136
|
if (!(result.status === 200 && result.data.success)) {
|
|
126
|
-
_context2.next =
|
|
137
|
+
_context2.next = 35;
|
|
127
138
|
break;
|
|
128
139
|
}
|
|
129
140
|
data = result.data;
|
|
130
141
|
if (data.results) {
|
|
131
|
-
_context2.next =
|
|
142
|
+
_context2.next = 29;
|
|
132
143
|
break;
|
|
133
144
|
}
|
|
134
145
|
return _context2.abrupt("return", []);
|
|
135
|
-
case
|
|
146
|
+
case 29:
|
|
136
147
|
newResult = [];
|
|
137
148
|
_summaryColumnMethod = getSummaryColumnMethod(method, summaryColumnName);
|
|
138
149
|
valueKey = isAdvanced ? "".concat(_summaryColumnMethod) : "".concat(method, "(").concat(columnName, ")");
|
|
@@ -147,19 +158,23 @@ var MirrorCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
147
158
|
var equal2GroupData1 = groupData1.id === groupValue;
|
|
148
159
|
if (equal2GroupData0 || equal2GroupData1) {
|
|
149
160
|
var value = item[valueKey];
|
|
161
|
+
var formattedValue = value;
|
|
150
162
|
if (isAdvanced) {
|
|
151
163
|
value = formatNumericValue(value, summaryColumn);
|
|
164
|
+
formattedValue = StatUtils.getFormattedValue(value, summaryColumn, summary_method);
|
|
152
165
|
}
|
|
153
166
|
newResult.push({
|
|
154
167
|
name: label,
|
|
155
168
|
original_name: item[column],
|
|
156
169
|
value: equal2GroupData0 ? value : 0,
|
|
170
|
+
formatted_value: equal2GroupData0 ? formattedValue : 0,
|
|
157
171
|
group_name: groupData[0].name,
|
|
158
172
|
color: groupData[0].color
|
|
159
173
|
}, {
|
|
160
174
|
name: label,
|
|
161
175
|
original_name: item[column],
|
|
162
176
|
value: equal2GroupData1 ? value : 0,
|
|
177
|
+
formatted_value: equal2GroupData1 ? formattedValue : 0,
|
|
163
178
|
group_name: groupData[1].name,
|
|
164
179
|
color: groupData[1].color
|
|
165
180
|
});
|
|
@@ -170,9 +185,9 @@ var MirrorCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
170
185
|
data: newResult,
|
|
171
186
|
colorSet: [groupData[0] && groupData[0].color, groupData[1] && groupData[1].color]
|
|
172
187
|
});
|
|
173
|
-
case
|
|
188
|
+
case 35:
|
|
174
189
|
return _context2.abrupt("return", []);
|
|
175
|
-
case
|
|
190
|
+
case 36:
|
|
176
191
|
case "end":
|
|
177
192
|
return _context2.stop();
|
|
178
193
|
}
|
|
@@ -9,7 +9,7 @@ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
|
9
9
|
import dayjs from 'dayjs';
|
|
10
10
|
import { CellType, filter2SqlCondition, isDateColumn, isNumericColumn, TableUtils } from 'dtable-store';
|
|
11
11
|
import BaseCalculator from './base-calculator';
|
|
12
|
-
import { DTABLE_DB_SUMMARY_METHOD, MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP, SUMMARY_TYPE, TIME_COLUMN_LIST } from '../constants';
|
|
12
|
+
import { DTABLE_DB_SUMMARY_METHOD, MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP, SUMMARY_METHOD_MAP, SUMMARY_TYPE, TIME_COLUMN_LIST } from '../constants';
|
|
13
13
|
import { getSummaryColumnMethod } from '../utils/common-utils';
|
|
14
14
|
import StatUtils from '../utils/stat-utils';
|
|
15
15
|
import { getFormattedLabel } from '../utils/row-utils';
|
|
@@ -199,9 +199,7 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
199
199
|
};
|
|
200
200
|
}
|
|
201
201
|
if (summary_columns_option) {
|
|
202
|
-
var
|
|
203
|
-
var _summaryTableColumnKey2Column = {};
|
|
204
|
-
var _summaryTableColumnKey2Method = {};
|
|
202
|
+
var _summaries = [];
|
|
205
203
|
var summaryColumnOptions = [];
|
|
206
204
|
var _summaryMethod = summary_method;
|
|
207
205
|
var summaryColumn = TableUtils.getTableColumnByKey(table, summary_column_key);
|
|
@@ -209,10 +207,11 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
209
207
|
var _this$summaryMethodCo2 = this.summaryMethodColumn2SqlColumn(_summaryMethod, summaryColumn),
|
|
210
208
|
sqlSummaryMethodColumnName = _this$summaryMethodCo2.name,
|
|
211
209
|
sqlSummaryMethodColumnKey = _this$summaryMethodCo2.key;
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
210
|
+
_summaries.push({
|
|
211
|
+
sqlSummaryMethodColumnKey: sqlSummaryMethodColumnKey,
|
|
212
|
+
summaryColumn: summaryColumn,
|
|
213
|
+
summaryMethod: _summaryMethod
|
|
214
|
+
});
|
|
216
215
|
summaryColumnOptions.push(sqlSummaryMethodColumnName);
|
|
217
216
|
}
|
|
218
217
|
summary_columns_option.forEach(function (option) {
|
|
@@ -224,10 +223,11 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
224
223
|
var _this$summaryMethodCo3 = _this.summaryMethodColumn2SqlColumn(summaryMethod, summaryColumn),
|
|
225
224
|
_sqlSummaryMethodColumnName = _this$summaryMethodCo3.name,
|
|
226
225
|
_sqlSummaryMethodColumnKey = _this$summaryMethodCo3.key;
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
226
|
+
_summaries.push({
|
|
227
|
+
sqlSummaryMethodColumnKey: _sqlSummaryMethodColumnKey,
|
|
228
|
+
summaryColumn: summaryColumn,
|
|
229
|
+
summaryMethod: summaryMethod
|
|
230
|
+
});
|
|
231
231
|
summaryColumnOptions.push(_sqlSummaryMethodColumnName);
|
|
232
232
|
}
|
|
233
233
|
});
|
|
@@ -236,38 +236,35 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
236
236
|
return {
|
|
237
237
|
sql: _sql2,
|
|
238
238
|
sqlGroupbyColumnKey: sqlGroupbyColumnKey,
|
|
239
|
-
|
|
240
|
-
summaryTableColumnKey2Column: _summaryTableColumnKey2Column,
|
|
241
|
-
summaryTableColumnKey2Method: _summaryTableColumnKey2Method
|
|
239
|
+
summaries: _summaries
|
|
242
240
|
};
|
|
243
241
|
}
|
|
244
|
-
var summarySQLColumnName2ColumnKey = {};
|
|
245
|
-
var summaryTableColumnKey2Column = {};
|
|
246
|
-
var summaryTableColumnKey2Method = {};
|
|
247
242
|
var summaryMethod = summary_method;
|
|
248
243
|
var statisticNumericColumnKeys = [summary_column_key].concat(_toConsumableArray(numeric_column_keys || []));
|
|
249
244
|
var validStatisticNumericColumnKeys = _toConsumableArray(new Set(statisticNumericColumnKeys));
|
|
250
|
-
var
|
|
245
|
+
var sqlNumericColumns = [];
|
|
246
|
+
var summaries = [];
|
|
247
|
+
validStatisticNumericColumnKeys.map(function (key) {
|
|
251
248
|
return TableUtils.getTableColumnByKey(table, key);
|
|
252
249
|
}).filter(function (column) {
|
|
253
250
|
return column && (isDateColumn(column) || isNumericColumn(column));
|
|
254
|
-
}).
|
|
251
|
+
}).forEach(function (column) {
|
|
255
252
|
var _this$summaryMethodCo4 = _this.summaryMethodColumn2SqlColumn(summaryMethod, column),
|
|
256
253
|
sqlNumericColumn = _this$summaryMethodCo4.name,
|
|
257
254
|
sqlNumericColumnKey = _this$summaryMethodCo4.key;
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
255
|
+
summaries.push({
|
|
256
|
+
sqlSummaryMethodColumnKey: sqlNumericColumnKey,
|
|
257
|
+
summaryColumn: column,
|
|
258
|
+
summaryMethod: summaryMethod
|
|
259
|
+
});
|
|
260
|
+
sqlNumericColumns.push(sqlNumericColumn);
|
|
261
|
+
});
|
|
262
|
+
var statisticSummaryColumnsString = sqlNumericColumns.join(', ');
|
|
264
263
|
var sql = "SELECT ".concat(sqlGroupbyColumnName).concat(statisticSummaryColumnsString ? ', ' + statisticSummaryColumnsString : '', " FROM ").concat(tableName, " ").concat(condition, " GROUP BY ").concat(sqlGroupbyColumnName, " LIMIT 0, 5000");
|
|
265
264
|
return {
|
|
266
265
|
sql: sql,
|
|
267
266
|
sqlGroupbyColumnKey: sqlGroupbyColumnKey,
|
|
268
|
-
|
|
269
|
-
summaryTableColumnKey2Column: summaryTableColumnKey2Column,
|
|
270
|
-
summaryTableColumnKey2Method: summaryTableColumnKey2Method
|
|
267
|
+
summaries: summaries
|
|
271
268
|
};
|
|
272
269
|
}
|
|
273
270
|
}, {
|
|
@@ -329,8 +326,35 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
329
326
|
}) : [];
|
|
330
327
|
sqlSummaryColumnName = sqlSummaryMultipleNumericColumnName;
|
|
331
328
|
}
|
|
329
|
+
if (summary_columns_option) {
|
|
330
|
+
var summaryColumnOptions = [];
|
|
331
|
+
summary_columns_option.forEach(function (option) {
|
|
332
|
+
var key = option.key,
|
|
333
|
+
method = option.method;
|
|
334
|
+
var summaryColumn = TableUtils.getTableColumnByKey(table, key);
|
|
335
|
+
var summaryMethod = method;
|
|
336
|
+
if (summaryColumn && (isNumericColumn(summaryColumn) || isDateColumn(summaryColumn))) {
|
|
337
|
+
var _this2$summaryMethodC2 = _this2.summaryMethodColumn2SqlColumn(summaryMethod, summaryColumn),
|
|
338
|
+
sqlSummaryMethodColumnName = _this2$summaryMethodC2.name;
|
|
339
|
+
summaryColumnOptions.push(sqlSummaryMethodColumnName);
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
var statisticSummaryColumnsString = summaryColumnOptions.join(', ');
|
|
343
|
+
if (statisticSummaryColumnsString) {
|
|
344
|
+
if (sqlSummaryColumnName) {
|
|
345
|
+
sqlSummaryColumnName += ", ".concat(statisticSummaryColumnsString);
|
|
346
|
+
} else {
|
|
347
|
+
sqlSummaryColumnName = statisticSummaryColumnsString;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
var sql;
|
|
353
|
+
if (sqlSummaryColumnName) {
|
|
354
|
+
sql = "SELECT ".concat(sqlGroupbyColumnName, ", ").concat(sqlColumnGroupbyColumn, ", ").concat(sqlSummaryColumnName, " FROM ").concat(tableName, " ").concat(condition, " GROUP BY ").concat(sqlGroupbyColumnName, ", ").concat(sqlColumnGroupbyColumn, " ORDER BY `").concat(groupbyColumn.name, "` LIMIT 0, 5000");
|
|
355
|
+
} else {
|
|
356
|
+
sql = "SELECT ".concat(sqlGroupbyColumnName, ", ").concat(sqlColumnGroupbyColumn, " FROM ").concat(tableName, " ").concat(condition, " GROUP BY ").concat(sqlGroupbyColumnName, ", ").concat(sqlColumnGroupbyColumn, " ORDER BY `").concat(groupbyColumn.name, "` LIMIT 0, 5000");
|
|
332
357
|
}
|
|
333
|
-
var sql = "SELECT ".concat(sqlGroupbyColumnName, ", ").concat(sqlColumnGroupbyColumn, ", ").concat(sqlSummaryColumnName, " FROM ").concat(tableName, " ").concat(condition, " GROUP BY ").concat(sqlGroupbyColumnName, ", ").concat(sqlColumnGroupbyColumn, " ORDER BY `").concat(groupbyColumn.name, "` LIMIT 0, 5000");
|
|
334
358
|
return {
|
|
335
359
|
sql: sql,
|
|
336
360
|
sqlGroupbyColumnKey: sqlGroupbyColumnKey,
|
|
@@ -356,13 +380,16 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
356
380
|
sqlRows.forEach(function (row) {
|
|
357
381
|
var total = row[sqlSummaryColumnKey] || 0;
|
|
358
382
|
_allTotal += total;
|
|
383
|
+
var originalLabel = _this3.getOriginalLabel(groupbyColumn, _sqlGroupbyColumnKey, row, groupby_geolocation_granularity, groupby_date_granularity);
|
|
384
|
+
var name = _this3.getLabel(groupbyColumn, originalLabel);
|
|
385
|
+
var original_name = _this3.getOriginalName(groupbyColumn, originalLabel);
|
|
359
386
|
pivot_rows.push({
|
|
360
|
-
name:
|
|
387
|
+
name: name,
|
|
388
|
+
original_name: original_name,
|
|
361
389
|
rows: [],
|
|
362
390
|
total: {
|
|
363
391
|
total: total
|
|
364
|
-
}
|
|
365
|
-
original_name: row[groupbyColumn.key]
|
|
392
|
+
}
|
|
366
393
|
});
|
|
367
394
|
});
|
|
368
395
|
return {
|
|
@@ -374,43 +401,46 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
374
401
|
};
|
|
375
402
|
}
|
|
376
403
|
var sqlGroupbyColumnKey = statisticSQLMap.sqlGroupbyColumnKey,
|
|
377
|
-
|
|
378
|
-
summaryTableColumnKey2Column = statisticSQLMap.summaryTableColumnKey2Column,
|
|
379
|
-
summaryTableColumnKey2Method = statisticSQLMap.summaryTableColumnKey2Method;
|
|
380
|
-
var summaryColumnKeys = Object.values(summarySQLColumnName2ColumnKey);
|
|
381
|
-
var sqlSummaryColumnKeys = Object.keys(summarySQLColumnName2ColumnKey);
|
|
404
|
+
summaries = statisticSQLMap.summaries;
|
|
382
405
|
var totalTemplate = {};
|
|
383
|
-
|
|
384
|
-
var
|
|
385
|
-
|
|
406
|
+
summaries.forEach(function (summary) {
|
|
407
|
+
var summaryColumn = summary.summaryColumn,
|
|
408
|
+
summaryMethod = summary.summaryMethod;
|
|
409
|
+
var summaryColumnKey = summaryColumn.key;
|
|
410
|
+
totalTemplate[summaryColumnKey + summaryMethod] = _this3.initTotal(summaryMethod);
|
|
386
411
|
pivot_columns.push({
|
|
387
|
-
key:
|
|
412
|
+
key: summaryColumnKey,
|
|
388
413
|
method: summaryMethod
|
|
389
414
|
});
|
|
390
415
|
});
|
|
391
416
|
var allTotal = _objectSpread({}, totalTemplate);
|
|
392
417
|
sqlRows.forEach(function (row) {
|
|
393
418
|
var rowTotal = _objectSpread({}, totalTemplate);
|
|
394
|
-
|
|
395
|
-
var
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
var
|
|
399
|
-
|
|
419
|
+
summaries.forEach(function (summary) {
|
|
420
|
+
var sqlSummaryMethodColumnKey = summary.sqlSummaryMethodColumnKey,
|
|
421
|
+
summaryColumn = summary.summaryColumn,
|
|
422
|
+
summaryMethod = summary.summaryMethod;
|
|
423
|
+
var summaryColumnKey = summaryColumn.key;
|
|
424
|
+
var totalKey = summaryColumnKey + summaryMethod;
|
|
425
|
+
var value = row[sqlSummaryMethodColumnKey] || _this3.initTotal(summaryMethod);
|
|
426
|
+
allTotal[totalKey] = _this3.getSummaryValue({
|
|
400
427
|
summaryColumn: summaryColumn,
|
|
401
428
|
summaryMethod: summaryMethod
|
|
402
|
-
}, allTotal[
|
|
429
|
+
}, allTotal[totalKey], value);
|
|
403
430
|
if (summaryColumn && isDateColumn(summaryColumn)) {
|
|
404
|
-
rowTotal[
|
|
431
|
+
rowTotal[totalKey] = value;
|
|
405
432
|
} else if (summaryColumn && isNumericColumn(summaryColumn)) {
|
|
406
|
-
rowTotal[
|
|
433
|
+
rowTotal[totalKey] = rowTotal[totalKey] + value;
|
|
407
434
|
}
|
|
408
435
|
});
|
|
436
|
+
var originalLabel = _this3.getOriginalLabel(groupbyColumn, sqlGroupbyColumnKey, row, groupby_geolocation_granularity, groupby_date_granularity);
|
|
437
|
+
var name = _this3.getLabel(groupbyColumn, originalLabel);
|
|
438
|
+
var original_name = _this3.getOriginalName(groupbyColumn, originalLabel);
|
|
409
439
|
pivot_rows.push({
|
|
410
|
-
name:
|
|
440
|
+
name: name,
|
|
441
|
+
original_name: original_name,
|
|
411
442
|
rows: [row],
|
|
412
|
-
total: rowTotal
|
|
413
|
-
original_name: row[groupbyColumn.key]
|
|
443
|
+
total: rowTotal
|
|
414
444
|
});
|
|
415
445
|
});
|
|
416
446
|
if (pivot_columns.length < 2) {
|
|
@@ -459,12 +489,16 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
459
489
|
var isRowGroupbyColumnDataAsAnArray = !!MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[columnGroupbyColumn.type];
|
|
460
490
|
sqlRows.forEach(function (row) {
|
|
461
491
|
var groupbyColumnCellValue = row[sqlGroupbyColumnKey];
|
|
462
|
-
var
|
|
492
|
+
var groupbyColumnOriginalLabel = _this4.getOriginalLabel(groupbyColumn, sqlGroupbyColumnKey, row, groupby_geolocation_granularity, groupby_date_granularity);
|
|
493
|
+
var groupbyColumnCellValueKey = _this4.getLabel(groupbyColumn, groupbyColumnOriginalLabel);
|
|
494
|
+
var groupbyColumnOriginalCellValueKey = _this4.getOriginalName(groupbyColumn, groupbyColumnOriginalLabel);
|
|
463
495
|
var columnGroupbyColumnCellValue = row[sqlColumnGroupbyColumnKey];
|
|
464
|
-
var
|
|
496
|
+
var columnGroupbyColumnOriginalLabel = _this4.getOriginalLabel(columnGroupbyColumn, sqlColumnGroupbyColumnKey, row, column_groupby_geolocation_granularity, column_groupby_date_granularity);
|
|
497
|
+
var columnGroupbyColumnCellValueKey = _this4.getLabel(columnGroupbyColumn, columnGroupbyColumnOriginalLabel);
|
|
498
|
+
var columnGroupbyColumnOriginalCellValueKey = _this4.getOriginalName(columnGroupbyColumn, columnGroupbyColumnOriginalLabel);
|
|
465
499
|
var count = row[sqlSummaryColumnKey];
|
|
466
500
|
if (_this4.isValidCellValue(columnGroupbyColumnCellValue, groupby_include_empty_cells)) {
|
|
467
|
-
_this4.updateTwoDimensionColumns(pivot_columns, columnGroupbyColumnCellValueKey,
|
|
501
|
+
_this4.updateTwoDimensionColumns(pivot_columns, columnGroupbyColumnCellValueKey, columnGroupbyColumnOriginalCellValueKey, {
|
|
468
502
|
isIncludeEmpty: groupby_include_empty_cells,
|
|
469
503
|
isCellValueAsAnArray: isRowGroupbyColumnDataAsAnArray
|
|
470
504
|
});
|
|
@@ -474,7 +508,7 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
474
508
|
var resName = r.name;
|
|
475
509
|
return resName === null && groupbyColumnCellValueKey === null || resName === undefined && groupbyColumnCellValueKey === undefined || resName === 0 && groupbyColumnCellValueKey === 0 || resName === groupbyColumnCellValueKey;
|
|
476
510
|
});
|
|
477
|
-
_this4.updateTwoDimensionRows(pivot_rows, pivot_columns, pivotRowIndex, groupbyColumnCellValueKey, count, row, isRowGroupbyColumnDataAsAnArray, columnGroupbyColumnCellValueKey,
|
|
511
|
+
_this4.updateTwoDimensionRows(pivot_rows, pivot_columns, pivotRowIndex, groupbyColumnCellValueKey, groupbyColumnOriginalCellValueKey, count, row, isRowGroupbyColumnDataAsAnArray, columnGroupbyColumnCellValueKey, {
|
|
478
512
|
summaryMethod: summaryMethod,
|
|
479
513
|
summaryColumn: summaryColumn
|
|
480
514
|
});
|
|
@@ -611,19 +645,37 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
611
645
|
key: getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[summaryMethod], columnName)
|
|
612
646
|
};
|
|
613
647
|
}
|
|
648
|
+
}, {
|
|
649
|
+
key: "getOriginalLabel",
|
|
650
|
+
value: function getOriginalLabel(groupColumn, groupName, statRow, groupby_date_granularity, groupby_geolocation_granularity) {
|
|
651
|
+
var isTimeColumn = TIME_COLUMN_LIST.includes(groupColumn.type);
|
|
652
|
+
if (isTimeColumn || groupColumn.type === CellType.GEOLOCATION) {
|
|
653
|
+
return statRow[groupName];
|
|
654
|
+
}
|
|
655
|
+
var currentGroupLabel = statRow[groupColumn.key];
|
|
656
|
+
return StatUtils.getGroupLabel(currentGroupLabel, {}, groupColumn, groupby_date_granularity, groupby_geolocation_granularity, this.value);
|
|
657
|
+
}
|
|
658
|
+
}, {
|
|
659
|
+
key: "getOriginalName",
|
|
660
|
+
value: function getOriginalName(groupColumn, originalLabel) {
|
|
661
|
+
var isTimeColumn = TIME_COLUMN_LIST.includes(groupColumn.type);
|
|
662
|
+
if (isTimeColumn || groupColumn.type === CellType.GEOLOCATION) {
|
|
663
|
+
return originalLabel;
|
|
664
|
+
}
|
|
665
|
+
var columnType = groupColumn.type;
|
|
666
|
+
if (columnType === CellType.MULTIPLE_SELECT || columnType === CellType.COLLABORATOR || columnType === CellType.LINK) {
|
|
667
|
+
return Array.isArray(originalLabel) ? originalLabel[0] : null;
|
|
668
|
+
}
|
|
669
|
+
return originalLabel;
|
|
670
|
+
}
|
|
614
671
|
}, {
|
|
615
672
|
key: "getLabel",
|
|
616
|
-
value: function getLabel(groupColumn,
|
|
673
|
+
value: function getLabel(groupColumn, originalLabel) {
|
|
617
674
|
var isTimeColumn = TIME_COLUMN_LIST.includes(groupColumn.type);
|
|
618
|
-
var label;
|
|
619
675
|
if (isTimeColumn || groupColumn.type === CellType.GEOLOCATION) {
|
|
620
|
-
|
|
621
|
-
} else {
|
|
622
|
-
var currentGroupLabel = statRow[groupColumn.key];
|
|
623
|
-
label = StatUtils.getGroupLabel(currentGroupLabel, {}, groupColumn, groupby_date_granularity, groupby_geolocation_granularity, this.value);
|
|
624
|
-
label = getFormattedLabel(groupColumn, label, this.value.collaborators);
|
|
676
|
+
return originalLabel;
|
|
625
677
|
}
|
|
626
|
-
return
|
|
678
|
+
return getFormattedLabel(groupColumn, originalLabel, this.value.collaborators);
|
|
627
679
|
}
|
|
628
680
|
}, {
|
|
629
681
|
key: "initTotal",
|
|
@@ -637,7 +689,7 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
637
689
|
var summaryMethod = _ref4.summaryMethod,
|
|
638
690
|
summaryColumn = _ref4.summaryColumn;
|
|
639
691
|
if (summaryColumn && isDateColumn(summaryColumn)) {
|
|
640
|
-
if (summaryMethod ===
|
|
692
|
+
if (summaryMethod === SUMMARY_METHOD_MAP.Max) {
|
|
641
693
|
if (currentValue && nextValue) {
|
|
642
694
|
return dayjs(currentValue).isBefore(nextValue) ? nextValue : currentValue;
|
|
643
695
|
}
|
|
@@ -646,7 +698,7 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
646
698
|
}
|
|
647
699
|
return currentValue;
|
|
648
700
|
}
|
|
649
|
-
if (summaryMethod ===
|
|
701
|
+
if (summaryMethod === SUMMARY_METHOD_MAP.Min) {
|
|
650
702
|
if (currentValue && nextValue) {
|
|
651
703
|
return dayjs(currentValue).isBefore(nextValue) ? currentValue : nextValue;
|
|
652
704
|
}
|
|
@@ -655,9 +707,12 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
655
707
|
}
|
|
656
708
|
return currentValue;
|
|
657
709
|
}
|
|
710
|
+
if (summaryMethod === SUMMARY_METHOD_MAP.Distinct_values) {
|
|
711
|
+
return (currentValue - 0 || 0) + (nextValue - 0 || 0);
|
|
712
|
+
}
|
|
658
713
|
return currentValue;
|
|
659
714
|
}
|
|
660
|
-
if (summaryMethod ===
|
|
715
|
+
if (summaryMethod === SUMMARY_METHOD_MAP.Max || SUMMARY_METHOD_MAP.Min) {
|
|
661
716
|
if (currentValue === null && nextValue === null) return null;
|
|
662
717
|
if (currentValue === null) return nextValue;
|
|
663
718
|
if (nextValue === null) return currentValue;
|
|
@@ -672,17 +727,18 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
672
727
|
}
|
|
673
728
|
}, {
|
|
674
729
|
key: "updateTwoDimensionColumns",
|
|
675
|
-
value: function updateTwoDimensionColumns(pivot_columns, key,
|
|
730
|
+
value: function updateTwoDimensionColumns(pivot_columns, key, original_key, _ref5) {
|
|
676
731
|
var isIncludeEmpty = _ref5.isIncludeEmpty,
|
|
677
732
|
isCellValueAsAnArray = _ref5.isCellValueAsAnArray;
|
|
678
|
-
if (isCellValueAsAnArray) {
|
|
733
|
+
if (isCellValueAsAnArray && Array.isArray(key)) {
|
|
679
734
|
if (key.length === 0 && isIncludeEmpty) {
|
|
680
735
|
var _pivotColumnIndex = pivot_columns.findIndex(function (r) {
|
|
681
736
|
return !r.key;
|
|
682
737
|
});
|
|
683
738
|
if (_pivotColumnIndex < 0) {
|
|
684
739
|
pivot_columns.unshift({
|
|
685
|
-
key: null
|
|
740
|
+
key: null,
|
|
741
|
+
original_key: null
|
|
686
742
|
});
|
|
687
743
|
}
|
|
688
744
|
return;
|
|
@@ -694,7 +750,7 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
694
750
|
if (pivotColumnIndex < 0) {
|
|
695
751
|
pivot_columns.push({
|
|
696
752
|
key: k,
|
|
697
|
-
|
|
753
|
+
original_key: k
|
|
698
754
|
});
|
|
699
755
|
}
|
|
700
756
|
});
|
|
@@ -707,13 +763,13 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
707
763
|
if (pivotColumnIndex < 0) {
|
|
708
764
|
pivot_columns.push({
|
|
709
765
|
key: key,
|
|
710
|
-
|
|
766
|
+
original_key: original_key
|
|
711
767
|
});
|
|
712
768
|
}
|
|
713
769
|
}
|
|
714
770
|
}, {
|
|
715
771
|
key: "updateTwoDimensionRows",
|
|
716
|
-
value: function updateTwoDimensionRows(pivot_rows, pivot_columns, index, name, count, row, isColumnDataAsAnArray, cellValue,
|
|
772
|
+
value: function updateTwoDimensionRows(pivot_rows, pivot_columns, index, name, original_name, count, row, isColumnDataAsAnArray, cellValue, _ref6) {
|
|
717
773
|
var _this5 = this;
|
|
718
774
|
var summaryMethod = _ref6.summaryMethod,
|
|
719
775
|
summaryColumn = _ref6.summaryColumn;
|
|
@@ -764,7 +820,7 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
764
820
|
name: name,
|
|
765
821
|
cells: _cells,
|
|
766
822
|
total: _total,
|
|
767
|
-
original_name:
|
|
823
|
+
original_name: original_name
|
|
768
824
|
});
|
|
769
825
|
}
|
|
770
826
|
}
|
|
@@ -228,7 +228,7 @@ function updateChartValue(summaryColumn, summary_type, summary_method, formula_r
|
|
|
228
228
|
var updated = _objectSpread({}, item);
|
|
229
229
|
var value = StatUtils.getTotal(summaryColumnKey, summaryColumnType, summary_type, summary_method, rows, formula_rows);
|
|
230
230
|
updated.value = value;
|
|
231
|
-
updated.formatted_value = StatUtils.getFormattedValue(value, summaryColumn);
|
|
231
|
+
updated.formatted_value = StatUtils.getFormattedValue(value, summaryColumn, summary_method);
|
|
232
232
|
results[index] = updated;
|
|
233
233
|
});
|
|
234
234
|
}
|
|
@@ -306,13 +306,18 @@ function getGroupbyNumericColumnsChartResults(rows, formulaRows, groupbyColumn,
|
|
|
306
306
|
return getGroupChartStatResult(table, value, groupbyColumn, numericSummaryColumnKey, rows, formulaRows, includeEmpty, groupbyDateGranularity, groupbyGeolocationGranularity, columnGroupbyDateGranularity, columnGroupbyGeolocationGranularity, summaryColumn, summaryType, summaryMethod, columnGroupbyMultipleNumericColumn, yAxisType);
|
|
307
307
|
}
|
|
308
308
|
function calculateGeolocationBasicChart(chart, value, username, userId) {
|
|
309
|
-
var
|
|
309
|
+
var type = chart.type,
|
|
310
|
+
table_id = chart.table_id,
|
|
310
311
|
view_id = chart.view_id,
|
|
311
312
|
geo_column = chart.geo_column,
|
|
312
313
|
geolocation_granularity = chart.geolocation_granularity,
|
|
313
314
|
summary_type = chart.summary_type,
|
|
314
315
|
summary_column = chart.summary_column,
|
|
315
316
|
summary_method = chart.summary_method;
|
|
317
|
+
var geolocationGranularity = geolocation_granularity;
|
|
318
|
+
if (type === STAT_TYPE.WORLD_MAP || type === STAT_TYPE.WORLD_MAP_BUBBLE) {
|
|
319
|
+
geolocationGranularity = null;
|
|
320
|
+
}
|
|
316
321
|
var table = TableUtils.getTableById(value.tables, table_id);
|
|
317
322
|
var view = table && Views.getViewById(table.views, view_id);
|
|
318
323
|
if (!view) {
|
|
@@ -335,16 +340,26 @@ function calculateGeolocationBasicChart(chart, value, username, userId) {
|
|
|
335
340
|
var list = formulaRow[geoColumn.key];
|
|
336
341
|
list.forEach(function (n) {
|
|
337
342
|
var nameIndex = results.findIndex(function (r) {
|
|
338
|
-
|
|
343
|
+
if (geolocationGranularity) {
|
|
344
|
+
return n[geolocationGranularity] === r.name;
|
|
345
|
+
}
|
|
346
|
+
return n = r.name;
|
|
339
347
|
});
|
|
340
|
-
|
|
348
|
+
if (geolocationGranularity) {
|
|
349
|
+
updateBasicChartRows(results, nameIndex, n[geolocationGranularity], row, null);
|
|
350
|
+
} else {
|
|
351
|
+
updateBasicChartRows(results, nameIndex, n, row, null);
|
|
352
|
+
}
|
|
341
353
|
});
|
|
342
354
|
} else {
|
|
343
|
-
var name = row[geoColumn.key]
|
|
355
|
+
var name = row[geoColumn.key] || null;
|
|
356
|
+
if (name && geolocationGranularity) {
|
|
357
|
+
name = name[geolocationGranularity];
|
|
358
|
+
}
|
|
344
359
|
var nameIndex = results.findIndex(function (r) {
|
|
345
360
|
return r.name === name;
|
|
346
361
|
});
|
|
347
|
-
updateBasicChartRows(results, nameIndex, name, row);
|
|
362
|
+
updateBasicChartRows(results, nameIndex, name, row, null);
|
|
348
363
|
}
|
|
349
364
|
}
|
|
350
365
|
});
|
|
@@ -42,6 +42,7 @@ export default function calculateResult(chart, value, username, userId) {
|
|
|
42
42
|
method: y_axis_left_summary_method,
|
|
43
43
|
column_name: column1.name,
|
|
44
44
|
type: column1.type,
|
|
45
|
+
data: column1.data,
|
|
45
46
|
color: LABEL_COLORS[0]
|
|
46
47
|
};
|
|
47
48
|
}
|
|
@@ -53,6 +54,7 @@ export default function calculateResult(chart, value, username, userId) {
|
|
|
53
54
|
method: item.summary_method,
|
|
54
55
|
column_name: summaryColumn.name,
|
|
55
56
|
type: summaryColumn.type,
|
|
57
|
+
data: summaryColumn.data,
|
|
56
58
|
color: LABEL_COLORS[(index + 1) % 12]
|
|
57
59
|
};
|
|
58
60
|
}
|
|
@@ -206,37 +208,50 @@ export default function calculateResult(chart, value, username, userId) {
|
|
|
206
208
|
var item = _step.value;
|
|
207
209
|
var key = item[0];
|
|
208
210
|
var leftValue = item[1];
|
|
209
|
-
var value1 = 0
|
|
210
|
-
|
|
211
|
+
var value1 = 0;
|
|
212
|
+
var value2 = 0;
|
|
213
|
+
var formattedValueLeft = value1;
|
|
214
|
+
var formattedValueRight = value2;
|
|
211
215
|
var rightValue = rightResultMap.get(key);
|
|
212
216
|
if (y_axis_right_summary_type === SUMMARY_TYPE.COUNT) {
|
|
213
217
|
value2 = rightValue;
|
|
218
|
+
formattedValueRight = value2;
|
|
214
219
|
}
|
|
215
220
|
if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED) {
|
|
216
221
|
value2 = getSummaryResult(rightValue, y_axis_right_summary_method);
|
|
222
|
+
formattedValueRight = StatUtils.getFormattedValue(value2, column2, y_axis_right_summary_method);
|
|
217
223
|
}
|
|
218
224
|
if (!y_axis_left_group_by_multiple_numeric_column) {
|
|
219
225
|
if (y_axis_left_summary_type === SUMMARY_TYPE.COUNT) {
|
|
220
226
|
value1 = leftValue;
|
|
227
|
+
formattedValueLeft = value1;
|
|
221
228
|
}
|
|
222
229
|
if (y_axis_left_summary_type === SUMMARY_TYPE.ADVANCED) {
|
|
223
230
|
var list = leftValue[column1.key];
|
|
224
231
|
value1 = getSummaryResult(list, y_axis_left_summary_method);
|
|
232
|
+
formattedValueLeft = StatUtils.getFormattedValue(value1, column1, y_axis_left_summary_method);
|
|
225
233
|
}
|
|
226
234
|
results.push({
|
|
227
235
|
name: key,
|
|
228
236
|
value_left: value1,
|
|
229
|
-
value_right: value2
|
|
237
|
+
value_right: value2,
|
|
238
|
+
formatted_value_left: formattedValueLeft,
|
|
239
|
+
formatted_value_right: formattedValueRight
|
|
230
240
|
});
|
|
231
241
|
} else {
|
|
232
242
|
leftSummaryColumnKeys.forEach(function (columnKey) {
|
|
243
|
+
var summaryColumn = leftSummaryColumn[columnKey];
|
|
244
|
+
var summaryMethod = summaryColumn.method;
|
|
233
245
|
var list = leftValue[columnKey];
|
|
234
|
-
var value = getSummaryResult(list,
|
|
246
|
+
var value = getSummaryResult(list, summaryMethod);
|
|
247
|
+
formattedValueLeft = StatUtils.getFormattedValue(value, summaryColumn, summaryMethod);
|
|
235
248
|
results.push({
|
|
236
249
|
name: key,
|
|
237
250
|
value_left: value,
|
|
238
251
|
color: leftSummaryColumn[columnKey].color,
|
|
239
|
-
value_right: value2
|
|
252
|
+
value_right: value2,
|
|
253
|
+
formatted_value_left: formattedValueLeft,
|
|
254
|
+
formatted_value_right: formattedValueRight
|
|
240
255
|
});
|
|
241
256
|
});
|
|
242
257
|
}
|