dtable-statistic 4.0.12 → 4.1.0

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.
@@ -0,0 +1,91 @@
1
+ import { FORMULA_COLUMN_TYPES_MAP, isNumber } from 'dtable-store';
2
+ import { STATISTICS_COUNT_TYPE, SUMMARY_METHOD_MAP } from '../constants';
3
+ var getCellValueFromRow = function getCellValueFromRow(row, formulaRow, columnType, columnKey, sqlKey, isSqlQuery) {
4
+ if (!isSqlQuery) {
5
+ if (FORMULA_COLUMN_TYPES_MAP[columnType]) {
6
+ var cellValue = formulaRow[columnKey];
7
+ return Array.isArray(cellValue) ? cellValue[0] : cellValue;
8
+ }
9
+ return row[columnKey];
10
+ }
11
+ return row[sqlKey];
12
+ };
13
+ export var getPivotTableSummaryTotal = function getPivotTableSummaryTotal(summaryColumnType, summaryColumnKey, sqlKey, summaryType, summaryMethod, rows, formulaRows, isSqlQuery) {
14
+ if (summaryType === STATISTICS_COUNT_TYPE.COUNT) {
15
+ return rows.length;
16
+ }
17
+ if (summaryType !== STATISTICS_COUNT_TYPE.ADVANCED) {
18
+ return 0;
19
+ }
20
+ switch (summaryMethod) {
21
+ case SUMMARY_METHOD_MAP.Distinct_values:
22
+ {
23
+ var count = 0;
24
+ var existMap = {};
25
+ rows.forEach(function (row) {
26
+ var formulaRow = formulaRows && formulaRows[row._id];
27
+ var cellValue = getCellValueFromRow(row, formulaRow, summaryColumnType, summaryColumnKey, sqlKey, isSqlQuery);
28
+ if (!cellValue) {
29
+ if (cellValue === 0) {
30
+ cellValue = '0';
31
+ } else {
32
+ cellValue = !!cellValue;
33
+ }
34
+ }
35
+ if (!existMap[cellValue]) {
36
+ existMap[cellValue] = true;
37
+ count++;
38
+ }
39
+ });
40
+ return count;
41
+ }
42
+ case SUMMARY_METHOD_MAP.Sum:
43
+ case SUMMARY_METHOD_MAP.Mean:
44
+ {
45
+ var sum = 0;
46
+ var validNumbersCount = 0;
47
+ rows.forEach(function (row) {
48
+ var formulaRow = formulaRows && formulaRows[row._id];
49
+ var cellValue = getCellValueFromRow(row, formulaRow, summaryColumnType, summaryColumnKey, sqlKey, isSqlQuery);
50
+ if (isNumber(cellValue)) {
51
+ validNumbersCount++;
52
+ sum += cellValue;
53
+ }
54
+ });
55
+ if (summaryMethod === SUMMARY_METHOD_MAP.Sum) {
56
+ sum = Number.parseFloat(sum.toFixed(8));
57
+ } else if (summaryMethod === SUMMARY_METHOD_MAP.Mean) {
58
+ sum = validNumbersCount === 0 ? 0 : Number.parseFloat((sum / validNumbersCount).toFixed(8));
59
+ }
60
+ return sum;
61
+ }
62
+ case SUMMARY_METHOD_MAP.Max:
63
+ case SUMMARY_METHOD_MAP.Min:
64
+ {
65
+ if (rows.length === 0) {
66
+ return 0;
67
+ }
68
+ var result = rows.reduce(function (current, next) {
69
+ var currentFormulaRow = formulaRows && formulaRows[current._id];
70
+ var nextFormulaRow = formulaRows && formulaRows[next._id];
71
+ var currentValue = getCellValueFromRow(current, currentFormulaRow, summaryColumnType, summaryColumnKey, sqlKey, isSqlQuery);
72
+ var nextValue = getCellValueFromRow(next, nextFormulaRow, summaryColumnType, summaryColumnKey, sqlKey, isSqlQuery);
73
+ if (!nextValue && nextValue !== 0) {
74
+ return current;
75
+ }
76
+ var isNextGreater = currentValue < nextValue;
77
+ if (summaryMethod === SUMMARY_METHOD_MAP.Min) {
78
+ return isNextGreater ? current : next;
79
+ } else {
80
+ return isNextGreater ? next : current;
81
+ }
82
+ });
83
+ var formulaRow = formulaRows && formulaRows[result._id];
84
+ return getCellValueFromRow(result, formulaRow, summaryColumnType, summaryColumnKey, sqlKey, isSqlQuery);
85
+ }
86
+ default:
87
+ {
88
+ return 0;
89
+ }
90
+ }
91
+ };
@@ -37,6 +37,21 @@ export var getSqlGroup = function getSqlGroup(granularity, column) {
37
37
  }
38
38
  return "`".concat(columnName, "`");
39
39
  };
40
+ export var getPieChartSqlGroupName = function getPieChartSqlGroupName(statisticRecord, selectedColumn, groupName) {
41
+ var original_name_list = statisticRecord.original_name_list,
42
+ name_list = statisticRecord.name_list;
43
+ var sqlString = '';
44
+ var list = original_name_list.length > 0 ? original_name_list : name_list;
45
+ list.forEach(function (item, index) {
46
+ if (index === 0) {
47
+ sqlString += getSqlGroupName(name_list[0], original_name_list[0], selectedColumn);
48
+ } else {
49
+ var sqlName = getSqlGroupName(name_list[index], original_name_list[index], selectedColumn);
50
+ sqlString = "".concat(sqlString, " or ").concat(groupName, "=").concat(sqlName);
51
+ }
52
+ });
53
+ return sqlString;
54
+ };
40
55
  export var getSqlString = function getSqlString(statItem, statisticRecord, _ref) {
41
56
  var isColumn = _ref.isColumn,
42
57
  isCurrentView = _ref.isCurrentView,
@@ -63,6 +78,9 @@ export var getSqlString = function getSqlString(statItem, statisticRecord, _ref)
63
78
  group_original_name = statisticRecord.group_original_name,
64
79
  group_name = statisticRecord.group_name;
65
80
  var sqlName = getSqlGroupName(name, original_name, selectedColumn);
81
+ if ((type === STAT_TYPE.PIE || type === STAT_TYPE.RING) && original_name === 'Others') {
82
+ sqlName = getPieChartSqlGroupName(statisticRecord, selectedColumn, groupName);
83
+ }
66
84
  var sqlGroupName;
67
85
  if (isGroup) {
68
86
  sqlGroupName = getSqlGroupName(group_name, group_original_name, columnSelectedColumn);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dtable-statistic",
3
- "version": "4.0.12",
3
+ "version": "4.1.0",
4
4
  "description": "statistics",
5
5
  "main": "dist/dtable-statistic.js",
6
6
  "author": "seafile",
@@ -12,8 +12,8 @@
12
12
  "@seafile/seafile-calendar": "0.0.24",
13
13
  "comlink": "^4.3.1",
14
14
  "dayjs": "1.10.7",
15
- "dtable-store": "4.0.6",
16
- "dtable-web-api": "4.0.4",
15
+ "dtable-store": "4.1.0",
16
+ "dtable-web-api": "4.0.5",
17
17
  "glamor": "^2.20.40",
18
18
  "html2canvas": "^1.4.1",
19
19
  "rc-slider": "^9.7.4",