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.
- 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 +78 -51
- 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 +87 -41
- 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.js +71 -41
- package/es/constants/index.js +30 -29
- package/es/dashboard.js +57 -43
- package/es/desktop-dashboard.js +16 -51
- package/es/index.js +34 -2
- package/es/locale/lang/de.js +2 -0
- package/es/locale/lang/en.js +2 -0
- package/es/locale/lang/fr.js +2 -0
- package/es/locale/lang/zh_CN.js +2 -0
- package/es/mobile-dashboard.js +5 -5
- package/es/model/horizontal-bar-group.js +2 -0
- package/es/model/ring.js +3 -2
- 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/pivot-table-settings.js +4 -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 +81 -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 +207 -231
- 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 +22 -15
- package/es/stat-view/pivot-table/two-dimension-table.js +98 -31
- 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/common-utils.js +29 -12
- package/es/utils/sql-utils.js +10 -9
- package/es/utils/stat-utils.js +23 -15
- package/es/utils/trend-utils.js +1 -1
- 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
|
|
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,
|
|
@@ -377,36 +401,36 @@ var PivotTableCalculator = /*#__PURE__*/function (_BaseCalculator) {
|
|
|
377
401
|
};
|
|
378
402
|
}
|
|
379
403
|
var sqlGroupbyColumnKey = statisticSQLMap.sqlGroupbyColumnKey,
|
|
380
|
-
|
|
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
|
-
|
|
387
|
-
var
|
|
388
|
-
|
|
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:
|
|
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
|
-
|
|
398
|
-
var
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
var
|
|
402
|
-
|
|
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[
|
|
429
|
+
}, allTotal[totalKey], value);
|
|
406
430
|
if (summaryColumn && isDateColumn(summaryColumn)) {
|
|
407
|
-
rowTotal[
|
|
431
|
+
rowTotal[totalKey] = value;
|
|
408
432
|
} else if (summaryColumn && isNumericColumn(summaryColumn)) {
|
|
409
|
-
rowTotal[
|
|
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 ===
|
|
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 ===
|
|
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 ===
|
|
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
|
|
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
|
}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
83
|
-
|
|
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:
|
|
118
|
+
value: value,
|
|
119
|
+
formatted_value: formattedValue,
|
|
111
120
|
group_name: groupItem.name,
|
|
112
121
|
color: groupItem.color
|
|
113
122
|
});
|