dtable-statistic 4.0.7 → 4.0.9

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 (64) hide show
  1. package/es/calculator/basic-chart-calculator.js +27 -18
  2. package/es/calculator/combination-calculator.js +34 -9
  3. package/es/calculator/compare-bar-calculator.js +37 -30
  4. package/es/calculator/heat-map-calculator.js +25 -14
  5. package/es/calculator/map-calculator.js +25 -14
  6. package/es/calculator/mirror-calculator.js +29 -14
  7. package/es/calculator/pivot-table-calculator.js +78 -51
  8. package/es/calculator/workers/basic-chart-calculator-worker.js +21 -6
  9. package/es/calculator/workers/combination-calculator-worker.js +20 -5
  10. package/es/calculator/workers/compare-bar-chart-calculator-worker.js +12 -6
  11. package/es/calculator/workers/mirror-calculator-worker.js +15 -6
  12. package/es/calculator/workers/pivot-table-calculator-worker.js +87 -41
  13. package/es/calculator/world-map-calculator.js +25 -14
  14. package/es/components/dialog/enlarged-chart-dialog.js +2 -2
  15. package/es/components/dialog/statistic-record-dialog/index.js +71 -41
  16. package/es/constants/index.js +30 -29
  17. package/es/dashboard.js +57 -43
  18. package/es/desktop-dashboard.js +16 -51
  19. package/es/index.js +34 -2
  20. package/es/locale/lang/de.js +2 -0
  21. package/es/locale/lang/en.js +2 -0
  22. package/es/locale/lang/fr.js +2 -0
  23. package/es/locale/lang/zh_CN.js +2 -0
  24. package/es/mobile-dashboard.js +5 -5
  25. package/es/model/horizontal-bar-group.js +2 -0
  26. package/es/model/ring.js +3 -2
  27. package/es/stat-editor/stat-settings/advance-chart-settings/index.js +1 -2
  28. package/es/stat-editor/stat-settings/advance-chart-settings/summary-settings.js +1 -1
  29. package/es/stat-editor/stat-settings/basic-chart-settings/pivot-table-settings.js +4 -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 +81 -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 +207 -231
  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 +22 -15
  53. package/es/stat-view/pivot-table/two-dimension-table.js +98 -31
  54. package/es/stat-view/ring-chart.js +24 -42
  55. package/es/stat-view/scatter-chart.js +4 -21
  56. package/es/stat-view/treemap-chart.js +3 -12
  57. package/es/stat-view/trend-chart.js +6 -17
  58. package/es/stat-view/world-map.js +39 -50
  59. package/es/tabs/tab.js +2 -1
  60. package/es/utils/common-utils.js +29 -12
  61. package/es/utils/sql-utils.js +10 -9
  62. package/es/utils/stat-utils.js +23 -15
  63. package/es/utils/trend-utils.js +1 -1
  64. package/package.json +1 -1
@@ -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,
@@ -377,36 +401,36 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
377
401
  };
378
402
  }
379
403
  var sqlGroupbyColumnKey = statisticSQLMap.sqlGroupbyColumnKey,
380
- summarySQLColumnName2ColumnKey = statisticSQLMap.summarySQLColumnName2ColumnKey,
381
- summaryTableColumnKey2Column = statisticSQLMap.summaryTableColumnKey2Column,
382
- summaryTableColumnKey2Method = statisticSQLMap.summaryTableColumnKey2Method;
383
- var summaryColumnKeys = Object.values(summarySQLColumnName2ColumnKey);
384
- var sqlSummaryColumnKeys = Object.keys(summarySQLColumnName2ColumnKey);
404
+ summaries = statisticSQLMap.summaries;
385
405
  var totalTemplate = {};
386
- Object.values(summaryColumnKeys).forEach(function (key) {
387
- var summaryMethod = summaryTableColumnKey2Method[key];
388
- 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);
389
411
  pivot_columns.push({
390
- key: key,
412
+ key: summaryColumnKey,
391
413
  method: summaryMethod
392
414
  });
393
415
  });
394
416
  var allTotal = _objectSpread({}, totalTemplate);
395
417
  sqlRows.forEach(function (row) {
396
418
  var rowTotal = _objectSpread({}, totalTemplate);
397
- sqlSummaryColumnKeys.forEach(function (key) {
398
- var columnKey = summarySQLColumnName2ColumnKey[key];
399
- var summaryColumn = summaryTableColumnKey2Column[columnKey];
400
- var summaryMethod = summaryTableColumnKey2Method[columnKey];
401
- var value = row[key] || _this3.initTotal(summaryMethod);
402
- 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({
403
427
  summaryColumn: summaryColumn,
404
428
  summaryMethod: summaryMethod
405
- }, allTotal[columnKey + summaryMethod], value);
429
+ }, allTotal[totalKey], value);
406
430
  if (summaryColumn && isDateColumn(summaryColumn)) {
407
- rowTotal[columnKey + summaryMethod] = value;
431
+ rowTotal[totalKey] = value;
408
432
  } else if (summaryColumn && isNumericColumn(summaryColumn)) {
409
- rowTotal[columnKey + summaryMethod] = rowTotal[columnKey + summaryMethod] + value;
433
+ rowTotal[totalKey] = rowTotal[totalKey] + value;
410
434
  }
411
435
  });
412
436
  var originalLabel = _this3.getOriginalLabel(groupbyColumn, sqlGroupbyColumnKey, row, groupby_geolocation_granularity, groupby_date_granularity);
@@ -665,7 +689,7 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
665
689
  var summaryMethod = _ref4.summaryMethod,
666
690
  summaryColumn = _ref4.summaryColumn;
667
691
  if (summaryColumn && isDateColumn(summaryColumn)) {
668
- if (summaryMethod === 'Max') {
692
+ if (summaryMethod === SUMMARY_METHOD_MAP.Max) {
669
693
  if (currentValue && nextValue) {
670
694
  return dayjs(currentValue).isBefore(nextValue) ? nextValue : currentValue;
671
695
  }
@@ -674,7 +698,7 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
674
698
  }
675
699
  return currentValue;
676
700
  }
677
- if (summaryMethod === 'Min') {
701
+ if (summaryMethod === SUMMARY_METHOD_MAP.Min) {
678
702
  if (currentValue && nextValue) {
679
703
  return dayjs(currentValue).isBefore(nextValue) ? currentValue : nextValue;
680
704
  }
@@ -683,9 +707,12 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
683
707
  }
684
708
  return currentValue;
685
709
  }
710
+ if (summaryMethod === SUMMARY_METHOD_MAP.Distinct_values) {
711
+ return (currentValue - 0 || 0) + (nextValue - 0 || 0);
712
+ }
686
713
  return currentValue;
687
714
  }
688
- if (summaryMethod === 'MAX' || summaryMethod === 'MIN') {
715
+ if (summaryMethod === SUMMARY_METHOD_MAP.Max || SUMMARY_METHOD_MAP.Min) {
689
716
  if (currentValue === null && nextValue === null) return null;
690
717
  if (currentValue === null) return nextValue;
691
718
  if (nextValue === null) return currentValue;
@@ -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
  }
@@ -89,14 +89,17 @@ function calculateChart(chart, value, username, userId) {
89
89
  var item = _step.value;
90
90
  var key = item[0];
91
91
  var _value = item[1];
92
+ var formatted_value = _value;
92
93
  if (isAdvance) {
93
94
  _value = getSummaryResult(_value, y_axis_summary_method, data.precision);
95
+ formatted_value = StatUtils.getFormattedValue(_value, summaryColumn, y_axis_summary_method);
94
96
  }
95
97
  dateRangeResult.push({
96
98
  name: key,
97
- value: _value,
98
99
  group_name: groupName1,
99
- raw_name: key
100
+ raw_name: key,
101
+ value: _value,
102
+ formatted_value: formatted_value
100
103
  });
101
104
  }
102
105
  } catch (err) {
@@ -112,14 +115,17 @@ function calculateChart(chart, value, username, userId) {
112
115
  var _item = _step2.value;
113
116
  var _key = _item[0];
114
117
  var _value2 = _item[1];
118
+ var _formatted_value = _value2;
115
119
  if (isAdvance) {
116
120
  _value2 = getSummaryResult(_value2, y_axis_summary_method, data.precision);
121
+ _formatted_value = StatUtils.getFormattedValue(_value2, summaryColumn, y_axis_summary_method);
117
122
  }
118
123
  comparedDateRangeResult.push({
119
124
  name: _key,
120
- value: _value2,
121
125
  group_name: groupName2,
122
- raw_name: _key
126
+ raw_name: _key,
127
+ value: _value2,
128
+ formatted_value: _formatted_value
123
129
  });
124
130
  }
125
131
  } catch (err) {
@@ -132,8 +138,8 @@ function calculateChart(chart, value, username, userId) {
132
138
  if (!comparedDateRangeResult[i]) break;
133
139
  comparedDateRangeResult[i].name = dateRangeResult[i].name;
134
140
  if (display_increase) {
135
- var value1 = dateRangeResult[i].value,
136
- value2 = comparedDateRangeResult[i].value || 0.001;
141
+ var value1 = dateRangeResult[i].value;
142
+ var value2 = comparedDateRangeResult[i].value || 0.001;
137
143
  if (!value2) {
138
144
  comparedDateRangeResult[i].increase_value = 1;
139
145
  } else {
@@ -3,6 +3,7 @@ import { getClientCellValueDisplayString } from '../../utils';
3
3
  import { getSummaryResult } from '../../utils/common-utils';
4
4
  import { getCellValue } from '../../utils/row-utils';
5
5
  import { SUMMARY_TYPE } from '../../constants';
6
+ import StatUtils from '../../utils/stat-utils';
6
7
  function calculateStatItem(chart, dtableValue, username, userId) {
7
8
  var table_id = chart.table_id,
8
9
  view_id = chart.view_id,
@@ -17,6 +18,7 @@ function calculateStatItem(chart, dtableValue, username, userId) {
17
18
  var rows = Views.getViewRows(view, table, dtableValue, username, userId);
18
19
  var formulaRows = Views.getTableFormulaResults(table, rows, dtableValue);
19
20
  var groupColumn = TableUtils.getTableColumnByKey(table, group_column);
21
+ var numericColumn = summary_column && TableUtils.getTableColumnByKey(table, summary_column);
20
22
  var groupItems = getGroupItems(rows, groupColumn);
21
23
  if (groupColumn.length === 0) return;
22
24
  var result = {};
@@ -50,7 +52,6 @@ function calculateStatItem(chart, dtableValue, username, userId) {
50
52
  });
51
53
  });
52
54
  } else {
53
- var numericColumn = TableUtils.getTableColumnByKey(table, summary_column);
54
55
  groupItems.forEach(function (groupItem) {
55
56
  rows.forEach(function (row) {
56
57
  var value = getClientCellValueDisplayString(row, columnItem.type, columnItem.key, {
@@ -79,10 +80,12 @@ function calculateStatItem(chart, dtableValue, username, userId) {
79
80
  }
80
81
  });
81
82
  });
82
- var data = numericColumn.data || {};
83
- result = summaryResult(result, summary_method, data.precision);
83
+ if (numericColumn) {
84
+ var data = numericColumn.data || {};
85
+ result = summaryResult(result, summary_method, data.precision);
86
+ }
84
87
  }
85
- return normalizeResult(result, groupColumn);
88
+ return normalizeResult(result, groupColumn, numericColumn, summary_type, summary_method);
86
89
  }
87
90
  function summaryResult(result, summaryMethod, precision) {
88
91
  var newResult = {};
@@ -95,7 +98,7 @@ function summaryResult(result, summaryMethod, precision) {
95
98
  });
96
99
  return newResult;
97
100
  }
98
- function normalizeResult(result, groupColumn) {
101
+ function normalizeResult(result, groupColumn, summaryColumn, summaryType, summaryMethod) {
99
102
  var data = [];
100
103
  var colorSet = [];
101
104
  Object.keys(result).forEach(function (groupId, index) {
@@ -105,9 +108,15 @@ function normalizeResult(result, groupColumn) {
105
108
  if (!groupItem) return;
106
109
  colorSet[index] = groupItem.color;
107
110
  Object.keys(result[groupId]).forEach(function (name) {
111
+ var value = result[groupId][name];
112
+ var formattedValue = value;
113
+ if (summaryType === SUMMARY_TYPE.ADVANCED) {
114
+ formattedValue = StatUtils.getFormattedValue(value, summaryColumn, summaryMethod);
115
+ }
108
116
  data.push({
109
117
  name: name,
110
- value: result[groupId][name],
118
+ value: value,
119
+ formatted_value: formattedValue,
111
120
  group_name: groupItem.name,
112
121
  color: groupItem.color
113
122
  });