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.
Files changed (67) hide show
  1. package/es/assets/css/dashboard.css +22 -0
  2. package/es/calculator/basic-chart-calculator.js +27 -18
  3. package/es/calculator/combination-calculator.js +34 -9
  4. package/es/calculator/compare-bar-calculator.js +37 -30
  5. package/es/calculator/heat-map-calculator.js +25 -14
  6. package/es/calculator/map-calculator.js +25 -14
  7. package/es/calculator/mirror-calculator.js +29 -14
  8. package/es/calculator/pivot-table-calculator.js +132 -76
  9. package/es/calculator/workers/basic-chart-calculator-worker.js +21 -6
  10. package/es/calculator/workers/combination-calculator-worker.js +20 -5
  11. package/es/calculator/workers/compare-bar-chart-calculator-worker.js +12 -6
  12. package/es/calculator/workers/mirror-calculator-worker.js +15 -6
  13. package/es/calculator/workers/pivot-table-calculator-worker.js +97 -44
  14. package/es/calculator/world-map-calculator.js +25 -14
  15. package/es/components/dialog/enlarged-chart-dialog.js +2 -2
  16. package/es/components/dialog/statistic-record-dialog/index.css +2 -0
  17. package/es/components/dialog/statistic-record-dialog/index.js +80 -52
  18. package/es/constants/index.js +30 -29
  19. package/es/dashboard.js +57 -43
  20. package/es/desktop-dashboard.js +21 -56
  21. package/es/index.js +34 -2
  22. package/es/locale/lang/de.js +7 -3
  23. package/es/locale/lang/en.js +5 -1
  24. package/es/locale/lang/fr.js +7 -3
  25. package/es/locale/lang/zh_CN.js +5 -1
  26. package/es/mobile-dashboard.js +5 -5
  27. package/es/model/horizontal-bar-group.js +2 -0
  28. package/es/stat-editor/stat-settings/advance-chart-settings/index.js +1 -2
  29. package/es/stat-editor/stat-settings/advance-chart-settings/summary-settings.js +1 -1
  30. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/horizontal-bar-chart-style.js +20 -3
  31. package/es/stat-editor/stat-settings/basic-chart-settings/summary-settings.js +2 -8
  32. package/es/stat-editor/stat-settings/public-setting/type-settings/index.js +23 -2
  33. package/es/stat-list/chart-preview.js +3 -4
  34. package/es/stat-list/index.js +10 -4
  35. package/es/stat-view/area-chart.js +177 -162
  36. package/es/stat-view/bar-chart.js +221 -222
  37. package/es/stat-view/base-chart.js +79 -7
  38. package/es/stat-view/basic-number-card.js +11 -19
  39. package/es/stat-view/combination-chart.js +100 -83
  40. package/es/stat-view/compare-chart.js +133 -144
  41. package/es/stat-view/completeness-chart.js +108 -102
  42. package/es/stat-view/custom-bar.js +79 -99
  43. package/es/stat-view/dashboard-chart.js +57 -57
  44. package/es/stat-view/heat-map.js +13 -32
  45. package/es/stat-view/horizontal-bar-chart.js +200 -230
  46. package/es/stat-view/index.js +2 -2
  47. package/es/stat-view/line-chart.js +162 -158
  48. package/es/stat-view/map.js +26 -40
  49. package/es/stat-view/mirror.js +88 -94
  50. package/es/stat-view/pie-chart.js +11 -39
  51. package/es/stat-view/pivot-table/index.js +4 -16
  52. package/es/stat-view/pivot-table/one-dimension-table-no-numeric-columns.js +36 -23
  53. package/es/stat-view/pivot-table/one-dimension-table-with-numeric-columns.js +11 -5
  54. package/es/stat-view/pivot-table/pivot-table-display-name.js +206 -0
  55. package/es/stat-view/pivot-table/two-dimension-table.js +104 -60
  56. package/es/stat-view/ring-chart.js +24 -42
  57. package/es/stat-view/scatter-chart.js +4 -21
  58. package/es/stat-view/treemap-chart.js +3 -12
  59. package/es/stat-view/trend-chart.js +6 -17
  60. package/es/stat-view/world-map.js +39 -50
  61. package/es/tabs/tab.js +2 -1
  62. package/es/utils/collaborator.js +9 -0
  63. package/es/utils/common-utils.js +24 -6
  64. package/es/utils/index.js +1 -1
  65. package/es/utils/sql-utils.js +10 -9
  66. package/es/utils/stat-utils.js +8 -5
  67. 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
- summaryColumn = TableUtils.getTableColumnByKey(selectedTable, summary_column);
115
- summaryColumnName = summaryColumn.name;
116
- summaryColumnMethod = getSummaryColumnMethod(method, summaryColumnName);
117
- sqlString = "select `".concat(columnName, "`, `").concat(groupColumnName, "`, ").concat(summaryColumnMethod, " from `").concat(selectedTable.name, "` ").concat(sqlCondition, " group by `").concat(columnName, "`, `").concat(groupColumnName, "` limit 5000");
118
- } else {
119
- sqlString = "select `".concat(columnName, "`, `").concat(groupColumnName, "`, ").concat(method, "(").concat(columnName, ") from `").concat(selectedTable.name, "` ").concat(sqlCondition, " group by `").concat(columnName, "`, `").concat(groupColumnName, "` limit 5000");
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.next = 15;
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 15:
134
+ case 24:
124
135
  result = _context2.sent;
125
136
  if (!(result.status === 200 && result.data.success)) {
126
- _context2.next = 26;
137
+ _context2.next = 35;
127
138
  break;
128
139
  }
129
140
  data = result.data;
130
141
  if (data.results) {
131
- _context2.next = 20;
142
+ _context2.next = 29;
132
143
  break;
133
144
  }
134
145
  return _context2.abrupt("return", []);
135
- case 20:
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 26:
188
+ case 35:
174
189
  return _context2.abrupt("return", []);
175
- case 27:
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 _summarySQLColumnName2ColumnKey = {};
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
- var summaryColumnKey = summaryColumn.key;
213
- _summarySQLColumnName2ColumnKey[sqlSummaryMethodColumnKey] = summaryColumnKey;
214
- _summaryTableColumnKey2Column[summaryColumnKey] = summaryColumn;
215
- _summaryTableColumnKey2Method[summaryColumnKey] = _summaryMethod;
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
- var _summaryColumnKey = summaryColumn.key;
228
- _summarySQLColumnName2ColumnKey[_sqlSummaryMethodColumnKey] = _summaryColumnKey;
229
- _summaryTableColumnKey2Column[_summaryColumnKey] = summaryColumn;
230
- _summaryTableColumnKey2Method[_summaryColumnKey] = summaryMethod;
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
- summarySQLColumnName2ColumnKey: _summarySQLColumnName2ColumnKey,
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 statisticSummaryColumnsString = validStatisticNumericColumnKeys.map(function (key) {
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
- }).map(function (column) {
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
- var summaryColumnKey = column.key;
259
- summarySQLColumnName2ColumnKey[sqlNumericColumnKey] = summaryColumnKey;
260
- summaryTableColumnKey2Column[summaryColumnKey] = column;
261
- summaryTableColumnKey2Method[summaryColumnKey] = summaryMethod;
262
- return sqlNumericColumn;
263
- }).join(', ');
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
- summarySQLColumnName2ColumnKey: summarySQLColumnName2ColumnKey,
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: _this3.getLabel(groupbyColumn, _sqlGroupbyColumnKey, row, groupby_geolocation_granularity, groupby_date_granularity),
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
- summarySQLColumnName2ColumnKey = statisticSQLMap.summarySQLColumnName2ColumnKey,
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
- Object.values(summaryColumnKeys).forEach(function (key) {
384
- var summaryMethod = summaryTableColumnKey2Method[key];
385
- totalTemplate[key + summaryMethod] = _this3.initTotal(summaryMethod);
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: 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
- sqlSummaryColumnKeys.forEach(function (key) {
395
- var columnKey = summarySQLColumnName2ColumnKey[key];
396
- var summaryColumn = summaryTableColumnKey2Column[columnKey];
397
- var summaryMethod = summaryTableColumnKey2Method[columnKey];
398
- var value = row[key] || _this3.initTotal(summaryMethod);
399
- allTotal[columnKey + summaryMethod] = _this3.getSummaryValue({
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[columnKey + summaryMethod], value);
429
+ }, allTotal[totalKey], value);
403
430
  if (summaryColumn && isDateColumn(summaryColumn)) {
404
- rowTotal[columnKey + summaryMethod] = value;
431
+ rowTotal[totalKey] = value;
405
432
  } else if (summaryColumn && isNumericColumn(summaryColumn)) {
406
- rowTotal[columnKey + summaryMethod] = rowTotal[columnKey + summaryMethod] + value;
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: _this3.getLabel(groupbyColumn, sqlGroupbyColumnKey, row, groupby_geolocation_granularity, groupby_date_granularity),
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 groupbyColumnCellValueKey = _this4.getLabel(groupbyColumn, sqlGroupbyColumnKey, row, groupby_geolocation_granularity, groupby_date_granularity);
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 columnGroupbyColumnCellValueKey = _this4.getLabel(columnGroupbyColumn, sqlColumnGroupbyColumnKey, row, column_groupby_geolocation_granularity, column_groupby_date_granularity);
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, columnGroupbyColumnCellValue, {
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, groupbyColumnCellValue, {
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, groupName, statRow, groupby_date_granularity, groupby_geolocation_granularity) {
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
- label = statRow[groupName];
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 label;
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 === 'Max') {
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 === 'Min') {
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 === 'MAX' || summaryMethod === 'MIN') {
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, columnCellValue, _ref5) {
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
- original_name: k
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
- original_name: columnCellValue
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, format_cell_value, _ref6) {
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: format_cell_value
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 table_id = chart.table_id,
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
- return n[geolocation_granularity] === r.name;
343
+ if (geolocationGranularity) {
344
+ return n[geolocationGranularity] === r.name;
345
+ }
346
+ return n = r.name;
339
347
  });
340
- updateBasicChartRows(results, nameIndex, n[geolocation_granularity], row);
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] ? row[geoColumn.key][geolocation_granularity] : null;
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
- value2 = 0;
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, leftSummaryColumn[columnKey].method);
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
  }