dtable-statistic 4.0.12 → 4.0.13
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/workers/pivot-table-calculator-worker.js +15 -7
- package/es/stat-view/pie-chart.js +0 -2
- package/es/stat-view/pivot-table/index.js +2 -2
- package/es/stat-view/pivot-table/two-dimension-table.js +5 -93
- package/es/stat-view/ring-chart.js +0 -2
- package/es/utils/common-utils.js +25 -2
- package/es/utils/export-table-utils.js +510 -311
- package/es/utils/pivot-table.js +91 -0
- package/es/utils/sql-utils.js +18 -0
- package/package.json +3 -3
|
@@ -56,9 +56,8 @@ function calculateOneDimensionTable(chart, value, username, userId) {
|
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
58
|
} else {
|
|
59
|
-
pivotRowIndex = pivot_rows.findIndex(function (
|
|
60
|
-
|
|
61
|
-
return resName === null && name === null || resName === undefined && name === undefined || resName === 0 && name === 0 || resName === name;
|
|
59
|
+
pivotRowIndex = pivot_rows.findIndex(function (pivotRow) {
|
|
60
|
+
return isSameName(pivotRow.name, name);
|
|
62
61
|
});
|
|
63
62
|
updateOneDimensionRows(pivot_rows, pivotRowIndex, name, row);
|
|
64
63
|
}
|
|
@@ -99,7 +98,8 @@ function calculateOneDimensionTable(chart, value, username, userId) {
|
|
|
99
98
|
return {
|
|
100
99
|
pivot_columns_total: pivot_columns_total,
|
|
101
100
|
pivot_rows: pivot_rows,
|
|
102
|
-
pivot_columns: pivot_columns
|
|
101
|
+
pivot_columns: pivot_columns,
|
|
102
|
+
formulaRows: formulaRows
|
|
103
103
|
};
|
|
104
104
|
}
|
|
105
105
|
function updateOneDimensionRows(pivot_rows, index, name, row) {
|
|
@@ -286,9 +286,8 @@ function calculateTwoDimensionTable(chart, value, username, userId) {
|
|
|
286
286
|
});
|
|
287
287
|
}
|
|
288
288
|
} else {
|
|
289
|
-
pivotRowIndex = pivot_rows.findIndex(function (
|
|
290
|
-
|
|
291
|
-
return resName === null && name === null || resName === undefined && name === undefined || resName === 0 && name === 0 || resName === name;
|
|
289
|
+
pivotRowIndex = pivot_rows.findIndex(function (pivotRow) {
|
|
290
|
+
return isSameName(pivotRow.name, name);
|
|
292
291
|
});
|
|
293
292
|
updateTwoDimensionRows(pivot_rows, pivot_columns, pivotRowIndex, name, row, isRowGroupbyColumnDataAsAnArray, cellValueForColumn);
|
|
294
293
|
}
|
|
@@ -403,6 +402,15 @@ function updateTwoDimensionRows(pivot_rows, pivot_columns, index, name, row, isC
|
|
|
403
402
|
});
|
|
404
403
|
}
|
|
405
404
|
}
|
|
405
|
+
function isSameName(prevName, currName) {
|
|
406
|
+
if (isNumber(prevName) && isNumber(currName)) {
|
|
407
|
+
return prevName === currName;
|
|
408
|
+
}
|
|
409
|
+
if (!prevName && !currName) {
|
|
410
|
+
return prevName === null && currName === null || prevName === undefined && currName === undefined || isNaN(prevName) && isNaN(currName);
|
|
411
|
+
}
|
|
412
|
+
return prevName === currName;
|
|
413
|
+
}
|
|
406
414
|
function isSameGroup(isColumnDataAsAnArray, source, target) {
|
|
407
415
|
if (isColumnDataAsAnArray) {
|
|
408
416
|
return (!source || source.length === 0) && !target || source && source.includes(target);
|
|
@@ -87,8 +87,6 @@ var PieChart = /*#__PURE__*/function (_BaseChart) {
|
|
|
87
87
|
var name = obj.name;
|
|
88
88
|
if (!obj.name && typeof obj.name !== 'number') {
|
|
89
89
|
name = intl.get(EMPTY_NAME);
|
|
90
|
-
} else if (obj.name === 'Others') {
|
|
91
|
-
name = intl.get('Others');
|
|
92
90
|
}
|
|
93
91
|
return {
|
|
94
92
|
name: name,
|
|
@@ -77,10 +77,10 @@ var PivotTable = /*#__PURE__*/function (_BaseChart) {
|
|
|
77
77
|
var summaryMethod = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : SUMMARY_TYPE.COUNT;
|
|
78
78
|
if (!summaryColumn || !summaryColumn.type) return summaryValue;
|
|
79
79
|
if (!summaryValue && summaryValue !== 0) return summaryValue;
|
|
80
|
-
if (summaryMethod.toUpperCase() === 'DISTINCT_VALUES') return summaryValue;
|
|
80
|
+
if (summaryMethod && summaryMethod.toUpperCase() === 'DISTINCT_VALUES') return summaryValue;
|
|
81
81
|
var data = summaryColumn.data;
|
|
82
82
|
if (TIME_COLUMN_LIST.includes(summaryColumn.type)) {
|
|
83
|
-
if (typeof summaryValue !== 'string') return
|
|
83
|
+
if (typeof summaryValue !== 'string') return '';
|
|
84
84
|
// The date returned by db carries T and Z, so that there is a time difference in data formatting
|
|
85
85
|
var _ref = data || {},
|
|
86
86
|
format = _ref.format;
|
|
@@ -6,10 +6,11 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
|
6
6
|
import _createSuper from "@babel/runtime/helpers/esm/createSuper";
|
|
7
7
|
import React, { PureComponent } from 'react';
|
|
8
8
|
import intl from 'react-intl-universal';
|
|
9
|
-
import {
|
|
9
|
+
import { isNumber, TableUtils, Views } from 'dtable-store';
|
|
10
10
|
import PivotTableDisplayName from './pivot-table-display-name';
|
|
11
11
|
import { isMobile } from '../../utils';
|
|
12
|
-
import {
|
|
12
|
+
import { getPivotTableSummaryTotal } from '../../utils/pivot-table';
|
|
13
|
+
import { STATISTICS_COUNT_TYPE, TITLE_TOTAL } from '../../constants';
|
|
13
14
|
import styles from './statistic-pivot-table.module.css';
|
|
14
15
|
var TwoDimensionTable = /*#__PURE__*/function (_PureComponent) {
|
|
15
16
|
_inherits(TwoDimensionTable, _PureComponent);
|
|
@@ -59,95 +60,6 @@ var TwoDimensionTable = /*#__PURE__*/function (_PureComponent) {
|
|
|
59
60
|
}
|
|
60
61
|
return 0;
|
|
61
62
|
};
|
|
62
|
-
_this.getCellValueFromRow = function (row, formulaRow, columnType, columnKey, sqlKey, isSqlQuery) {
|
|
63
|
-
if (!isSqlQuery) {
|
|
64
|
-
if (FORMULA_COLUMN_TYPES_MAP[columnType]) {
|
|
65
|
-
var cellValue = formulaRow[columnKey];
|
|
66
|
-
return Array.isArray(cellValue) ? cellValue[0] : cellValue;
|
|
67
|
-
}
|
|
68
|
-
return row[columnKey];
|
|
69
|
-
}
|
|
70
|
-
return row[sqlKey];
|
|
71
|
-
};
|
|
72
|
-
_this.getSummaryTotal = function (summaryColumnType, summaryColumnKey, sqlKey, summaryType, summaryMethod, rows, formulaRows, isSqlQuery) {
|
|
73
|
-
if (summaryType === STATISTICS_COUNT_TYPE.COUNT) {
|
|
74
|
-
return rows.length;
|
|
75
|
-
}
|
|
76
|
-
if (summaryType !== STATISTICS_COUNT_TYPE.ADVANCED) {
|
|
77
|
-
return 0;
|
|
78
|
-
}
|
|
79
|
-
switch (summaryMethod) {
|
|
80
|
-
case SUMMARY_METHOD_MAP.Distinct_values:
|
|
81
|
-
{
|
|
82
|
-
var count = 0;
|
|
83
|
-
var existMap = {};
|
|
84
|
-
rows.forEach(function (row) {
|
|
85
|
-
var formulaRow = formulaRows && formulaRows[row._id];
|
|
86
|
-
var cellValue = _this.getCellValueFromRow(row, formulaRow, summaryColumnType, summaryColumnKey, sqlKey, isSqlQuery);
|
|
87
|
-
if (!cellValue) {
|
|
88
|
-
if (cellValue === 0) {
|
|
89
|
-
cellValue = '0';
|
|
90
|
-
} else {
|
|
91
|
-
cellValue = !!cellValue;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
if (!existMap[cellValue]) {
|
|
95
|
-
existMap[cellValue] = true;
|
|
96
|
-
count++;
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
return count;
|
|
100
|
-
}
|
|
101
|
-
case SUMMARY_METHOD_MAP.Sum:
|
|
102
|
-
case SUMMARY_METHOD_MAP.Mean:
|
|
103
|
-
{
|
|
104
|
-
var sum = 0;
|
|
105
|
-
var validNumbersCount = 0;
|
|
106
|
-
rows.forEach(function (row) {
|
|
107
|
-
var formulaRow = formulaRows && formulaRows[row._id];
|
|
108
|
-
var cellValue = _this.getCellValueFromRow(row, formulaRow, summaryColumnType, summaryColumnKey, sqlKey, isSqlQuery);
|
|
109
|
-
if (isNumber(cellValue)) {
|
|
110
|
-
validNumbersCount++;
|
|
111
|
-
sum += cellValue;
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
if (summaryMethod === SUMMARY_METHOD_MAP.Sum) {
|
|
115
|
-
sum = Number.parseFloat(sum.toFixed(8));
|
|
116
|
-
} else if (summaryMethod === SUMMARY_METHOD_MAP.Mean) {
|
|
117
|
-
sum = validNumbersCount === 0 ? 0 : Number.parseFloat((sum / validNumbersCount).toFixed(8));
|
|
118
|
-
}
|
|
119
|
-
return sum;
|
|
120
|
-
}
|
|
121
|
-
case SUMMARY_METHOD_MAP.Max:
|
|
122
|
-
case SUMMARY_METHOD_MAP.Min:
|
|
123
|
-
{
|
|
124
|
-
if (rows.length === 0) {
|
|
125
|
-
return 0;
|
|
126
|
-
}
|
|
127
|
-
var result = rows.reduce(function (current, next) {
|
|
128
|
-
var currentFormulaRow = formulaRows && formulaRows[current._id];
|
|
129
|
-
var nextFormulaRow = formulaRows && formulaRows[next._id];
|
|
130
|
-
var currentValue = _this.getCellValueFromRow(current, currentFormulaRow, summaryColumnType, summaryColumnKey, sqlKey, isSqlQuery);
|
|
131
|
-
var nextValue = _this.getCellValueFromRow(next, nextFormulaRow, summaryColumnType, summaryColumnKey, sqlKey, isSqlQuery);
|
|
132
|
-
if (!nextValue && nextValue !== 0) {
|
|
133
|
-
return current;
|
|
134
|
-
}
|
|
135
|
-
var isNextGreater = currentValue < nextValue;
|
|
136
|
-
if (summaryMethod === SUMMARY_METHOD_MAP.Min) {
|
|
137
|
-
return isNextGreater ? current : next;
|
|
138
|
-
} else {
|
|
139
|
-
return isNextGreater ? next : current;
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
var formulaRow = formulaRows && formulaRows[result._id];
|
|
143
|
-
return _this.getCellValueFromRow(result, formulaRow, summaryColumnType, summaryColumnKey, sqlKey, isSqlQuery);
|
|
144
|
-
}
|
|
145
|
-
default:
|
|
146
|
-
{
|
|
147
|
-
return 0;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
63
|
_this.getCells = function (row, summaryColumn) {
|
|
152
64
|
var _this$props2 = _this.props,
|
|
153
65
|
pivotResult = _this$props2.pivotResult,
|
|
@@ -172,7 +84,7 @@ var TwoDimensionTable = /*#__PURE__*/function (_PureComponent) {
|
|
|
172
84
|
sqlKey = column.sqlKey,
|
|
173
85
|
method = column.method;
|
|
174
86
|
if (Array.isArray(rowData)) {
|
|
175
|
-
var sum =
|
|
87
|
+
var sum = getPivotTableSummaryTotal(type, key, sqlKey, STATISTICS_COUNT_TYPE.ADVANCED, method, rowData, formulaRows, isSqlQuery);
|
|
176
88
|
summary_multiple_columns.push(sum);
|
|
177
89
|
formatted_summary_multiple_columns.push(getSummaryValueDisplayString(column, sum, method));
|
|
178
90
|
return;
|
|
@@ -386,7 +298,7 @@ var TwoDimensionTable = /*#__PURE__*/function (_PureComponent) {
|
|
|
386
298
|
key = summaryCol.key,
|
|
387
299
|
sqlKey = summaryCol.sqlKey,
|
|
388
300
|
method = summaryCol.method;
|
|
389
|
-
total +=
|
|
301
|
+
total += getPivotTableSummaryTotal(type, key, sqlKey, STATISTICS_COUNT_TYPE.ADVANCED, method, pivotColumnCell, formulaRows, isSqlQuery);
|
|
390
302
|
});
|
|
391
303
|
totalDisplayValue = total;
|
|
392
304
|
allTotalDisplay += total;
|
|
@@ -161,8 +161,6 @@ var RingChart = /*#__PURE__*/function (_BaseChart) {
|
|
|
161
161
|
var title = name;
|
|
162
162
|
if (!name || name === 'undefined') {
|
|
163
163
|
title = intl.get(EMPTY_NAME);
|
|
164
|
-
} else if (name === 'Others') {
|
|
165
|
-
title = intl.get('Others');
|
|
166
164
|
}
|
|
167
165
|
return show_percent || display_label ? {
|
|
168
166
|
name: title,
|
package/es/utils/common-utils.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
1
2
|
import { CellType, COLLABORATOR_COLUMN_TYPES, FORMULA_COLUMN_TYPES_MAP, FORMULA_RESULT_TYPE, generatorBase64Code, isNumber, TableUtils } from 'dtable-store';
|
|
3
|
+
import intl from 'react-intl-universal';
|
|
2
4
|
import { STAT_TYPE, DEFAULT_LABEL_FONT_SIZE, MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP, CHART_STYLE_COLORS, PIE_COLOR_OPTIONS, SUMMARY_METHOD_MAP } from '../constants';
|
|
3
5
|
import StatUtils from './stat-utils';
|
|
4
6
|
export var generatorUniqueId = function generatorUniqueId(list) {
|
|
@@ -8,7 +10,10 @@ export var generatorUniqueId = function generatorUniqueId(list) {
|
|
|
8
10
|
uniqueId = generatorBase64Code();
|
|
9
11
|
|
|
10
12
|
// eslint-disable-next-line
|
|
11
|
-
|
|
13
|
+
if (!Array.isArray(list) || list.length === 0) {
|
|
14
|
+
break;
|
|
15
|
+
}
|
|
16
|
+
isUnique = list.every(function (item) {
|
|
12
17
|
return item._id !== uniqueId;
|
|
13
18
|
});
|
|
14
19
|
if (isUnique) {
|
|
@@ -251,10 +256,28 @@ export function formatPieChartData(data, statItem, table, currentTheme) {
|
|
|
251
256
|
var filteredSum = filteredItems.reduce(function (total, currentValue) {
|
|
252
257
|
return total += currentValue.value;
|
|
253
258
|
}, 0);
|
|
259
|
+
var original_name_list = [];
|
|
260
|
+
var name_list = [];
|
|
261
|
+
var rows = [];
|
|
262
|
+
filteredItems.forEach(function (item) {
|
|
263
|
+
if (item.original_name) {
|
|
264
|
+
original_name_list.push(item.original_name);
|
|
265
|
+
}
|
|
266
|
+
if (item.name) {
|
|
267
|
+
name_list.push(item.name);
|
|
268
|
+
}
|
|
269
|
+
if (item.rows) {
|
|
270
|
+
rows.push.apply(rows, _toConsumableArray(item.rows));
|
|
271
|
+
}
|
|
272
|
+
});
|
|
254
273
|
data.push({
|
|
255
|
-
|
|
274
|
+
rows: rows,
|
|
275
|
+
name_list: name_list,
|
|
276
|
+
original_name_list: original_name_list,
|
|
277
|
+
name: intl.get('Others'),
|
|
256
278
|
value: filteredSum,
|
|
257
279
|
color: '#dbdbdb',
|
|
280
|
+
original_name: 'Others',
|
|
258
281
|
percent: String(Number.parseFloat(filteredSum / sum * 100).toFixed(1)) + '%'
|
|
259
282
|
});
|
|
260
283
|
colorSet.push('#dbdbdb');
|
|
@@ -5,7 +5,8 @@ import { getOption, getCollaborator, getNumberDisplayString, isNumber, CellType,
|
|
|
5
5
|
import { isCellValueChanged } from './cell-value';
|
|
6
6
|
import { getSelectColumnOptions, getDateColumnFormat } from './column';
|
|
7
7
|
import { getKnownCreatorByEmail } from './collaborator';
|
|
8
|
-
import { EMPTY_NAME } from '../constants';
|
|
8
|
+
import { EMPTY_NAME, STATISTICS_COUNT_TYPE } from '../constants';
|
|
9
|
+
import { getPivotTableSummaryTotal } from './pivot-table';
|
|
9
10
|
var isEmptyName = function isEmptyName(title) {
|
|
10
11
|
return title === null || title === '';
|
|
11
12
|
};
|
|
@@ -96,276 +97,8 @@ var getValidValueForColumn = function getValidValueForColumn(column, value) {
|
|
|
96
97
|
if (type === CellType.TEXT) return value ? value : '';
|
|
97
98
|
return '';
|
|
98
99
|
};
|
|
99
|
-
var
|
|
100
|
-
var
|
|
101
|
-
statisticalResult = _ref3.statisticalResult;
|
|
102
|
-
var pivotResult = statisticalResult.pivotResult,
|
|
103
|
-
groupbyColumn = statisticalResult.groupbyColumn,
|
|
104
|
-
statisticTableColumns = statisticalResult.statisticTableColumns;
|
|
105
|
-
if (!groupbyColumn) return {};
|
|
106
|
-
var nameColumn = TableUtils.getTableColumnByName(updateTable, groupbyColumn.name);
|
|
107
|
-
if (!nameColumn) return {};
|
|
108
|
-
var pivot_rows = pivotResult.pivot_rows,
|
|
109
|
-
pivot_columns = pivotResult.pivot_columns;
|
|
110
|
-
var tableRows = updateTable.rows;
|
|
111
|
-
var columnMap = {};
|
|
112
|
-
var newRows = [];
|
|
113
|
-
var updatedRows = {};
|
|
114
|
-
var oldRows = {};
|
|
115
|
-
var rowIds = [];
|
|
116
|
-
|
|
117
|
-
// one dimension table no summary columns
|
|
118
|
-
if (pivot_columns.length < 2) {
|
|
119
|
-
columnMap['total'] = TableUtils.getTableColumnByName(updateTable, intl.get('Total'));
|
|
120
|
-
|
|
121
|
-
// updated rows
|
|
122
|
-
pivot_rows.forEach(function (item) {
|
|
123
|
-
var name = item.name,
|
|
124
|
-
original_name = item.original_name,
|
|
125
|
-
total = item.total;
|
|
126
|
-
var groupName = isEmptyName(original_name) ? intl.get(EMPTY_NAME) : name;
|
|
127
|
-
var row = tableRows.find(function (row) {
|
|
128
|
-
return row[nameColumn.key] === groupName;
|
|
129
|
-
});
|
|
130
|
-
var totalColumn = columnMap['total'];
|
|
131
|
-
if (row) {
|
|
132
|
-
// update old row
|
|
133
|
-
var updateRow = {};
|
|
134
|
-
var oldRow = {};
|
|
135
|
-
var validTotalCellValue = getValidValueForColumn(totalColumn, total.total);
|
|
136
|
-
if (totalColumn && isCellValueChanged(row[totalColumn.key], validTotalCellValue, totalColumn.type)) {
|
|
137
|
-
updateRow[totalColumn.key] = validTotalCellValue;
|
|
138
|
-
oldRow[totalColumn.key] = row[totalColumn.key];
|
|
139
|
-
}
|
|
140
|
-
if (Object.keys(updateRow).length > 0) {
|
|
141
|
-
var rowId = row._id;
|
|
142
|
-
rowIds.push(rowId);
|
|
143
|
-
updatedRows[rowId] = updateRow;
|
|
144
|
-
oldRows[rowId] = oldRow;
|
|
145
|
-
}
|
|
146
|
-
} else {
|
|
147
|
-
// insert new row
|
|
148
|
-
var newRow = {};
|
|
149
|
-
newRow[nameColumn.key] = groupName;
|
|
150
|
-
if (totalColumn) {
|
|
151
|
-
newRow[totalColumn.key] = getValidValueForColumn(totalColumn, total.total);
|
|
152
|
-
}
|
|
153
|
-
newRows.push(newRow);
|
|
154
|
-
}
|
|
155
|
-
});
|
|
156
|
-
return {
|
|
157
|
-
newRows: newRows,
|
|
158
|
-
updatedRows: updatedRows,
|
|
159
|
-
rowIds: rowIds,
|
|
160
|
-
oldRows: oldRows
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
// one dimension table with summary columns
|
|
165
|
-
Array.isArray(pivot_columns) && pivot_columns.forEach(function (item) {
|
|
166
|
-
var key = item.key;
|
|
167
|
-
var column = statisticTableColumns.find(function (column) {
|
|
168
|
-
return column.key === key;
|
|
169
|
-
});
|
|
170
|
-
if (column) {
|
|
171
|
-
columnMap[key] = TableUtils.getTableColumnByName(updateTable, column.name);
|
|
172
|
-
}
|
|
173
|
-
});
|
|
174
|
-
|
|
175
|
-
// updated rows
|
|
176
|
-
var nameColumnKey = nameColumn.key;
|
|
177
|
-
pivot_rows.forEach(function (item) {
|
|
178
|
-
var name = item.name,
|
|
179
|
-
original_name = item.original_name,
|
|
180
|
-
total = item.total;
|
|
181
|
-
var groupName = isEmptyName(original_name) ? intl.get(EMPTY_NAME) : name;
|
|
182
|
-
var row = tableRows.find(function (row) {
|
|
183
|
-
return row[nameColumnKey] === groupName;
|
|
184
|
-
});
|
|
185
|
-
if (row) {
|
|
186
|
-
var updateRow = {};
|
|
187
|
-
var oldRow = {};
|
|
188
|
-
Array.isArray(pivot_columns) && pivot_columns.forEach(function (item) {
|
|
189
|
-
var key = item.key;
|
|
190
|
-
var column = columnMap[key];
|
|
191
|
-
var totalCellValue = getValidValueForColumn(column, total[key]);
|
|
192
|
-
if (column && isCellValueChanged(row[column.key], totalCellValue, column.type)) {
|
|
193
|
-
updateRow[column.key] = totalCellValue;
|
|
194
|
-
oldRow[column.key] = row[column.key];
|
|
195
|
-
}
|
|
196
|
-
});
|
|
197
|
-
if (Object.keys(updateRow).length > 0) {
|
|
198
|
-
var rowId = row._id;
|
|
199
|
-
rowIds.push(rowId);
|
|
200
|
-
updatedRows[rowId] = updateRow;
|
|
201
|
-
oldRows[rowId] = oldRow;
|
|
202
|
-
}
|
|
203
|
-
} else {
|
|
204
|
-
var newRow = _defineProperty({}, nameColumn.key, groupName);
|
|
205
|
-
Array.isArray(pivot_columns) && pivot_columns.forEach(function (item) {
|
|
206
|
-
var key = item.key;
|
|
207
|
-
var column = columnMap[key];
|
|
208
|
-
if (column) {
|
|
209
|
-
var totalCellValue = getValidValueForColumn(column, total[key]);
|
|
210
|
-
newRow[column.key] = totalCellValue;
|
|
211
|
-
}
|
|
212
|
-
});
|
|
213
|
-
newRows.push(newRow);
|
|
214
|
-
}
|
|
215
|
-
});
|
|
216
|
-
return {
|
|
217
|
-
newRows: newRows,
|
|
218
|
-
updatedRows: updatedRows,
|
|
219
|
-
rowIds: rowIds,
|
|
220
|
-
oldRows: oldRows
|
|
221
|
-
};
|
|
222
|
-
};
|
|
223
|
-
var getUpdatedTwoDimensionStatisticTableResultToTable = function getUpdatedTwoDimensionStatisticTableResultToTable(_ref4) {
|
|
224
|
-
var updateTable = _ref4.updateTable,
|
|
225
|
-
statisticalResult = _ref4.statisticalResult;
|
|
226
|
-
var pivotResult = statisticalResult.pivotResult,
|
|
227
|
-
groupbyColumn = statisticalResult.groupbyColumn;
|
|
228
|
-
var nameColumn = TableUtils.getTableColumnByName(updateTable, groupbyColumn.name);
|
|
229
|
-
if (!nameColumn) return {};
|
|
230
|
-
var pivot_rows = pivotResult.pivot_rows,
|
|
231
|
-
pivot_columns = pivotResult.pivot_columns;
|
|
232
|
-
var tableRows = updateTable.rows;
|
|
233
|
-
var columnMap = {};
|
|
234
|
-
var newRows = [];
|
|
235
|
-
var updatedRows = {};
|
|
236
|
-
var rowIds = [];
|
|
237
|
-
var oldRows = {};
|
|
238
|
-
|
|
239
|
-
// updated columns
|
|
240
|
-
Array.isArray(pivot_columns) && pivot_columns.forEach(function (item) {
|
|
241
|
-
var key = item.key,
|
|
242
|
-
original_key = item.original_key;
|
|
243
|
-
var columnName = isEmptyName(original_key) ? intl.get(EMPTY_NAME) : key;
|
|
244
|
-
columnMap[columnName] = TableUtils.getTableColumnByName(updateTable, columnName);
|
|
245
|
-
});
|
|
246
|
-
columnMap['total'] = TableUtils.getTableColumnByName(updateTable, intl.get('Total'));
|
|
247
|
-
|
|
248
|
-
// updated rows
|
|
249
|
-
var _loop = function _loop(i) {
|
|
250
|
-
var pivotRow = pivot_rows[i];
|
|
251
|
-
var name = pivotRow.name,
|
|
252
|
-
original_name = pivotRow.original_name,
|
|
253
|
-
cells = pivotRow.cells,
|
|
254
|
-
total = pivotRow.total;
|
|
255
|
-
if (isEmptyName(original_name)) {
|
|
256
|
-
name = intl.get(EMPTY_NAME);
|
|
257
|
-
}
|
|
258
|
-
var nameColumnKey = nameColumn.key;
|
|
259
|
-
var row = tableRows.find(function (row) {
|
|
260
|
-
return row[nameColumnKey] === name;
|
|
261
|
-
});
|
|
262
|
-
var totalColumn = columnMap['total'];
|
|
263
|
-
if (row) {
|
|
264
|
-
// update old row
|
|
265
|
-
var updatedRow = {};
|
|
266
|
-
var oldRow = {}; // op used
|
|
267
|
-
var validTotalCellValue = getValidValueForColumn(totalColumn, total);
|
|
268
|
-
if (totalColumn && isCellValueChanged(row[totalColumn.key], validTotalCellValue, totalColumn.type)) {
|
|
269
|
-
updatedRow[totalColumn.key] = validTotalCellValue;
|
|
270
|
-
oldRow[totalColumn.key] = row[totalColumn.key];
|
|
271
|
-
}
|
|
272
|
-
Object.keys(cells).forEach(function (key) {
|
|
273
|
-
var columnName = isEmptyName(key) ? intl.get(EMPTY_NAME) : key;
|
|
274
|
-
var column = columnMap[columnName];
|
|
275
|
-
var validCellValue = getValidValueForColumn(column, cells[key].total);
|
|
276
|
-
if (column && isCellValueChanged(row[column.key], validCellValue, column.type)) {
|
|
277
|
-
updatedRow[column.key] = validCellValue;
|
|
278
|
-
oldRow[column.key] = row[column.key];
|
|
279
|
-
}
|
|
280
|
-
});
|
|
281
|
-
if (Object.keys(updatedRow).length > 0) {
|
|
282
|
-
var rowId = row._id;
|
|
283
|
-
rowIds.push(rowId);
|
|
284
|
-
updatedRows[rowId] = updatedRow;
|
|
285
|
-
oldRows[rowId] = oldRow;
|
|
286
|
-
}
|
|
287
|
-
} else {
|
|
288
|
-
// insert new row
|
|
289
|
-
var newRow = {};
|
|
290
|
-
newRow[nameColumnKey] = name;
|
|
291
|
-
if (totalColumn) {
|
|
292
|
-
newRow[totalColumn.key] = getValidValueForColumn(totalColumn, name);
|
|
293
|
-
}
|
|
294
|
-
Object.keys(cells).forEach(function (key) {
|
|
295
|
-
var columnName = isEmptyName(key) ? intl.get(EMPTY_NAME) : key;
|
|
296
|
-
var column = columnMap[columnName];
|
|
297
|
-
if (column) {
|
|
298
|
-
newRow[column.key] = getValidValueForColumn(column, cells[key].total);
|
|
299
|
-
}
|
|
300
|
-
});
|
|
301
|
-
if (Object.keys(newRow).length > 0) {
|
|
302
|
-
newRows.push(newRow);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
};
|
|
306
|
-
for (var i = 0; i < pivot_rows.length; i++) {
|
|
307
|
-
_loop(i);
|
|
308
|
-
}
|
|
309
|
-
return {
|
|
310
|
-
newRows: newRows,
|
|
311
|
-
updatedRows: updatedRows,
|
|
312
|
-
oldRows: oldRows,
|
|
313
|
-
rowIds: rowIds
|
|
314
|
-
};
|
|
315
|
-
};
|
|
316
|
-
|
|
317
|
-
/**
|
|
318
|
-
* statisticalResult: {
|
|
319
|
-
* columnGroupbyColumn: null,
|
|
320
|
-
* groupbyColumn: null,
|
|
321
|
-
* pivotResult: {
|
|
322
|
-
* pivot_columns: [],
|
|
323
|
-
* pivot_rows: [
|
|
324
|
-
* { name: 'xxx', original_name: 'xxx', total }
|
|
325
|
-
* ]
|
|
326
|
-
* },
|
|
327
|
-
* statisticTableColumns: null,
|
|
328
|
-
* summaryColumn: null,
|
|
329
|
-
* }
|
|
330
|
-
*
|
|
331
|
-
* @return {
|
|
332
|
-
* columns: [
|
|
333
|
-
* {
|
|
334
|
-
* name: xxx,
|
|
335
|
-
* type: CellType.DATE
|
|
336
|
-
* data: { format }
|
|
337
|
-
* }, {
|
|
338
|
-
* name: xxx,
|
|
339
|
-
* type: CellType.NUMBER
|
|
340
|
-
* data: { decimal, thousands, precision, enable_precision, format }
|
|
341
|
-
* },
|
|
342
|
-
* ],
|
|
343
|
-
* rows: [
|
|
344
|
-
* { columnName: value, xxx },
|
|
345
|
-
* ]
|
|
346
|
-
* }
|
|
347
|
-
*/
|
|
348
|
-
export var exportStatisticToTable = function exportStatisticToTable(_ref5) {
|
|
349
|
-
var statisticalResult = _ref5.statisticalResult;
|
|
350
|
-
var pivotResult = statisticalResult.pivotResult,
|
|
351
|
-
groupbyColumn = statisticalResult.groupbyColumn,
|
|
352
|
-
columnGroupbyColumn = statisticalResult.columnGroupbyColumn;
|
|
353
|
-
var pivot_columns = pivotResult.pivot_columns;
|
|
354
|
-
if (!groupbyColumn) return {};
|
|
355
|
-
|
|
356
|
-
// two dimension table
|
|
357
|
-
if (columnGroupbyColumn) {
|
|
358
|
-
return getTwoDimensionStatisticTableResultToTable({
|
|
359
|
-
statisticalResult: statisticalResult
|
|
360
|
-
});
|
|
361
|
-
}
|
|
362
|
-
if (!Array.isArray(pivot_columns)) return {};
|
|
363
|
-
return getOneDimensionStatisticTableResultToTable({
|
|
364
|
-
statisticalResult: statisticalResult
|
|
365
|
-
});
|
|
366
|
-
};
|
|
367
|
-
export var getOneDimensionStatisticTableResultToTable = function getOneDimensionStatisticTableResultToTable(_ref6) {
|
|
368
|
-
var statisticalResult = _ref6.statisticalResult;
|
|
100
|
+
var exportOneDimensionToTable = function exportOneDimensionToTable(_ref3) {
|
|
101
|
+
var statisticalResult = _ref3.statisticalResult;
|
|
369
102
|
var pivotResult = statisticalResult.pivotResult,
|
|
370
103
|
groupbyColumn = statisticalResult.groupbyColumn,
|
|
371
104
|
statisticTableColumns = statisticalResult.statisticTableColumns,
|
|
@@ -393,8 +126,8 @@ export var getOneDimensionStatisticTableResultToTable = function getOneDimension
|
|
|
393
126
|
var isIncludeHour = false;
|
|
394
127
|
if (summaryColumn) {
|
|
395
128
|
if (isSummaryDateColumn(summaryColumn)) {
|
|
396
|
-
var
|
|
397
|
-
format =
|
|
129
|
+
var _ref4 = summaryColumn.data || {},
|
|
130
|
+
format = _ref4.format;
|
|
398
131
|
columnData = {
|
|
399
132
|
format: format
|
|
400
133
|
};
|
|
@@ -406,12 +139,12 @@ export var getOneDimensionStatisticTableResultToTable = function getOneDimension
|
|
|
406
139
|
such as the data attribute in the function column, which contains other content that is not
|
|
407
140
|
useful for creating a new column
|
|
408
141
|
*/
|
|
409
|
-
var
|
|
410
|
-
decimal =
|
|
411
|
-
thousands =
|
|
412
|
-
precision =
|
|
413
|
-
enable_precision =
|
|
414
|
-
_format =
|
|
142
|
+
var _ref5 = summaryColumn.data || {},
|
|
143
|
+
decimal = _ref5.decimal,
|
|
144
|
+
thousands = _ref5.thousands,
|
|
145
|
+
precision = _ref5.precision,
|
|
146
|
+
enable_precision = _ref5.enable_precision,
|
|
147
|
+
_format = _ref5.format;
|
|
415
148
|
columnData = {
|
|
416
149
|
decimal: decimal,
|
|
417
150
|
thousands: thousands,
|
|
@@ -432,7 +165,7 @@ export var getOneDimensionStatisticTableResultToTable = function getOneDimension
|
|
|
432
165
|
|
|
433
166
|
// generator rows
|
|
434
167
|
pivot_rows.forEach(function (item) {
|
|
435
|
-
var
|
|
168
|
+
var _newRow;
|
|
436
169
|
var name = item.name,
|
|
437
170
|
original_name = item.original_name,
|
|
438
171
|
total = item.total;
|
|
@@ -441,7 +174,7 @@ export var getOneDimensionStatisticTableResultToTable = function getOneDimension
|
|
|
441
174
|
if (_isDateSummaryColumn && cellValue) {
|
|
442
175
|
cellValue = isIncludeHour ? dayjs(cellValue).format('YYYY-MM-DD HH:mm') : dayjs(cellValue).format('YYYY-MM-DD');
|
|
443
176
|
}
|
|
444
|
-
var newRow = (
|
|
177
|
+
var newRow = (_newRow = {}, _defineProperty(_newRow, groupbyColumn.name, groupName), _defineProperty(_newRow, intl.get('Total'), cellValue), _newRow);
|
|
445
178
|
rows.push(newRow);
|
|
446
179
|
});
|
|
447
180
|
return {
|
|
@@ -462,8 +195,8 @@ export var getOneDimensionStatisticTableResultToTable = function getOneDimension
|
|
|
462
195
|
var columnType = CellType.NUMBER;
|
|
463
196
|
if (isSummaryDateColumn(column)) {
|
|
464
197
|
columnType = CellType.DATE;
|
|
465
|
-
var
|
|
466
|
-
_format2 =
|
|
198
|
+
var _ref6 = column.data || {},
|
|
199
|
+
_format2 = _ref6.format;
|
|
467
200
|
_columnData = {
|
|
468
201
|
format: _format2
|
|
469
202
|
};
|
|
@@ -473,12 +206,12 @@ export var getOneDimensionStatisticTableResultToTable = function getOneDimension
|
|
|
473
206
|
such as the data attribute in the function column, which contains other content that is not
|
|
474
207
|
useful for creating a new column
|
|
475
208
|
*/
|
|
476
|
-
var
|
|
477
|
-
_decimal =
|
|
478
|
-
_thousands =
|
|
479
|
-
_precision =
|
|
480
|
-
_enable_precision =
|
|
481
|
-
_format3 =
|
|
209
|
+
var _ref7 = column.data || {},
|
|
210
|
+
_decimal = _ref7.decimal,
|
|
211
|
+
_thousands = _ref7.thousands,
|
|
212
|
+
_precision = _ref7.precision,
|
|
213
|
+
_enable_precision = _ref7.enable_precision,
|
|
214
|
+
_format3 = _ref7.format;
|
|
482
215
|
_columnData = {
|
|
483
216
|
decimal: _decimal,
|
|
484
217
|
thousands: _thousands,
|
|
@@ -505,12 +238,14 @@ export var getOneDimensionStatisticTableResultToTable = function getOneDimension
|
|
|
505
238
|
var groupName = isEmptyName(original_name) ? intl.get(EMPTY_NAME) : name;
|
|
506
239
|
var newRow = _defineProperty({}, groupbyColumn.name, groupName);
|
|
507
240
|
Array.isArray(pivot_columns) && pivot_columns.forEach(function (item) {
|
|
508
|
-
var key = item.key
|
|
241
|
+
var key = item.key,
|
|
242
|
+
method = item.method;
|
|
509
243
|
var column = columnMap[key];
|
|
244
|
+
var cellValueKey = key + method;
|
|
510
245
|
var name = column.name,
|
|
511
246
|
type = column.type,
|
|
512
247
|
data = column.data;
|
|
513
|
-
var cellValue = total[
|
|
248
|
+
var cellValue = total[cellValueKey];
|
|
514
249
|
if (type === CellType.DATE && cellValue) {
|
|
515
250
|
var dateFormat = data && data.format && data.format.indexOf('HH:mm') > -1 ? 'YYYY-MM-DD HH:mm' : 'YYYY-MM-DD';
|
|
516
251
|
cellValue = dayjs(cellValue).format(dateFormat);
|
|
@@ -524,8 +259,8 @@ export var getOneDimensionStatisticTableResultToTable = function getOneDimension
|
|
|
524
259
|
rows: rows
|
|
525
260
|
};
|
|
526
261
|
};
|
|
527
|
-
|
|
528
|
-
var statisticalResult =
|
|
262
|
+
var exportTwoDimensionToTable = function exportTwoDimensionToTable(_ref8) {
|
|
263
|
+
var statisticalResult = _ref8.statisticalResult;
|
|
529
264
|
var pivotResult = statisticalResult.pivotResult,
|
|
530
265
|
groupbyColumn = statisticalResult.groupbyColumn,
|
|
531
266
|
summaryColumn = statisticalResult.summaryColumn;
|
|
@@ -550,8 +285,8 @@ export var getTwoDimensionStatisticTableResultToTable = function getTwoDimension
|
|
|
550
285
|
if (summaryColumn) {
|
|
551
286
|
if (isSummaryDateColumn(summaryColumn)) {
|
|
552
287
|
_isDateSummaryColumn = true;
|
|
553
|
-
var
|
|
554
|
-
format =
|
|
288
|
+
var _ref9 = summaryColumn.data || {},
|
|
289
|
+
format = _ref9.format;
|
|
555
290
|
columnData = {
|
|
556
291
|
format: format
|
|
557
292
|
};
|
|
@@ -562,12 +297,12 @@ export var getTwoDimensionStatisticTableResultToTable = function getTwoDimension
|
|
|
562
297
|
such as the data attribute in the function column, which contains other content that is not
|
|
563
298
|
useful for creating a new column
|
|
564
299
|
*/
|
|
565
|
-
var
|
|
566
|
-
decimal =
|
|
567
|
-
thousands =
|
|
568
|
-
precision =
|
|
569
|
-
enable_precision =
|
|
570
|
-
_format4 =
|
|
300
|
+
var _ref10 = summaryColumn.data || {},
|
|
301
|
+
decimal = _ref10.decimal,
|
|
302
|
+
thousands = _ref10.thousands,
|
|
303
|
+
precision = _ref10.precision,
|
|
304
|
+
enable_precision = _ref10.enable_precision,
|
|
305
|
+
_format4 = _ref10.format;
|
|
571
306
|
columnData = {
|
|
572
307
|
decimal: decimal,
|
|
573
308
|
thousands: thousands,
|
|
@@ -628,23 +363,487 @@ export var getTwoDimensionStatisticTableResultToTable = function getTwoDimension
|
|
|
628
363
|
rows: rows
|
|
629
364
|
};
|
|
630
365
|
};
|
|
631
|
-
|
|
632
|
-
var
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
366
|
+
var getTwoDimensionWithSummaryColumns = function getTwoDimensionWithSummaryColumns(_ref11) {
|
|
367
|
+
var statisticalResult = _ref11.statisticalResult;
|
|
368
|
+
var pivotResult = statisticalResult.pivotResult,
|
|
369
|
+
groupbyColumn = statisticalResult.groupbyColumn;
|
|
370
|
+
var pivot_rows = pivotResult.pivot_rows,
|
|
371
|
+
pivot_columns = pivotResult.pivot_columns,
|
|
372
|
+
pivot_summary_multiple_columns = pivotResult.pivot_summary_multiple_columns,
|
|
373
|
+
formulaRows = pivotResult.formulaRows,
|
|
374
|
+
isSqlQuery = pivotResult.isSqlQuery;
|
|
375
|
+
var summaryColumns = pivot_summary_multiple_columns.filter(Boolean);
|
|
376
|
+
if (!groupbyColumn || summaryColumns.length === 0 || !Array.isArray(pivot_columns) || pivot_columns.length === 0 || !Array.isArray(pivot_rows) || pivot_rows.length === 0) return {};
|
|
377
|
+
var groupbyColumnName = groupbyColumn.name;
|
|
378
|
+
var firstSummaryColumn = summaryColumns[0];
|
|
379
|
+
var columns = [{
|
|
380
|
+
// name column
|
|
381
|
+
key: '0000',
|
|
382
|
+
type: CellType.TEXT,
|
|
383
|
+
name: groupbyColumnName,
|
|
384
|
+
data: null
|
|
385
|
+
}];
|
|
386
|
+
var tmpColumns = [];
|
|
387
|
+
pivot_columns.forEach(function (pivotColumn) {
|
|
388
|
+
var pivotColumnKey = pivotColumn.key,
|
|
389
|
+
original_key = pivotColumn.original_key;
|
|
390
|
+
var pivotColumnColumnName = isEmptyName(original_key) ? intl.get(EMPTY_NAME) : pivotColumnKey;
|
|
391
|
+
summaryColumns.forEach(function (summaryColumn) {
|
|
392
|
+
var key = summaryColumn.key,
|
|
393
|
+
type = summaryColumn.type,
|
|
394
|
+
sqlKey = summaryColumn.sqlKey,
|
|
395
|
+
column_name = summaryColumn.column_name,
|
|
396
|
+
data = summaryColumn.data,
|
|
397
|
+
method = summaryColumn.method;
|
|
398
|
+
var newColumnName = "".concat(pivotColumnColumnName, "-").concat(column_name);
|
|
399
|
+
columns.push({
|
|
400
|
+
// just support number column
|
|
401
|
+
type: CellType.NUMBER,
|
|
402
|
+
name: newColumnName,
|
|
403
|
+
data: data
|
|
404
|
+
});
|
|
405
|
+
tmpColumns.push({
|
|
406
|
+
name: newColumnName,
|
|
407
|
+
pivotColumnKey: pivotColumnKey,
|
|
408
|
+
key: key,
|
|
409
|
+
type: type,
|
|
410
|
+
sqlKey: sqlKey,
|
|
411
|
+
method: method
|
|
412
|
+
});
|
|
413
|
+
});
|
|
414
|
+
});
|
|
415
|
+
columns.push({
|
|
416
|
+
type: CellType.NUMBER,
|
|
417
|
+
name: intl.get('Total'),
|
|
418
|
+
data: firstSummaryColumn.data
|
|
419
|
+
});
|
|
420
|
+
var rows = [];
|
|
421
|
+
pivot_rows.forEach(function (pivotRow) {
|
|
422
|
+
var name = pivotRow.name,
|
|
423
|
+
original_name = pivotRow.original_name,
|
|
424
|
+
cells = pivotRow.cells;
|
|
425
|
+
if (isEmptyName(original_name)) {
|
|
426
|
+
name = intl.get(EMPTY_NAME);
|
|
427
|
+
}
|
|
428
|
+
var newRow = _defineProperty({}, groupbyColumnName, name);
|
|
429
|
+
var total = 0;
|
|
430
|
+
tmpColumns.forEach(function (tmpColumn) {
|
|
431
|
+
var name = tmpColumn.name,
|
|
432
|
+
pivotColumnKey = tmpColumn.pivotColumnKey,
|
|
433
|
+
key = tmpColumn.key,
|
|
434
|
+
type = tmpColumn.type,
|
|
435
|
+
sqlKey = tmpColumn.sqlKey,
|
|
436
|
+
method = tmpColumn.method;
|
|
437
|
+
var cell = cells && cells[pivotColumnKey];
|
|
438
|
+
var cellRows = cell && cell.rows;
|
|
439
|
+
if (!Array.isArray(cellRows) || cellRows.length === 0) {
|
|
440
|
+
newRow[name] = 0;
|
|
441
|
+
} else {
|
|
442
|
+
var cellValue = getPivotTableSummaryTotal(type, key, sqlKey, STATISTICS_COUNT_TYPE.ADVANCED, method, cellRows, formulaRows, isSqlQuery);
|
|
443
|
+
newRow[name] = cellValue;
|
|
444
|
+
total += cellValue;
|
|
445
|
+
}
|
|
446
|
+
});
|
|
447
|
+
newRow[intl.get('Total')] = total;
|
|
448
|
+
rows.push(newRow);
|
|
449
|
+
});
|
|
450
|
+
return {
|
|
451
|
+
columns: columns,
|
|
452
|
+
rows: rows
|
|
453
|
+
};
|
|
454
|
+
};
|
|
455
|
+
var exportTwoDimensionWithSummaryColumnsToTable = function exportTwoDimensionWithSummaryColumnsToTable(_ref12) {
|
|
456
|
+
var statisticalResult = _ref12.statisticalResult;
|
|
457
|
+
return getTwoDimensionWithSummaryColumns({
|
|
458
|
+
statisticalResult: statisticalResult
|
|
459
|
+
});
|
|
460
|
+
};
|
|
461
|
+
var updatedOneDimensionToTable = function updatedOneDimensionToTable(_ref13) {
|
|
462
|
+
var updateTable = _ref13.updateTable,
|
|
463
|
+
statisticalResult = _ref13.statisticalResult;
|
|
464
|
+
var pivotResult = statisticalResult.pivotResult,
|
|
465
|
+
groupbyColumn = statisticalResult.groupbyColumn,
|
|
466
|
+
statisticTableColumns = statisticalResult.statisticTableColumns;
|
|
467
|
+
if (!groupbyColumn) return {};
|
|
468
|
+
var nameColumn = TableUtils.getTableColumnByName(updateTable, groupbyColumn.name);
|
|
469
|
+
if (!nameColumn) return {};
|
|
470
|
+
var pivot_rows = pivotResult.pivot_rows,
|
|
471
|
+
pivot_columns = pivotResult.pivot_columns;
|
|
472
|
+
var tableRows = updateTable.rows;
|
|
473
|
+
var columnMap = {};
|
|
474
|
+
var newRows = [];
|
|
475
|
+
var updatedRows = {};
|
|
476
|
+
var oldRows = {};
|
|
477
|
+
var rowIds = [];
|
|
478
|
+
|
|
479
|
+
// one dimension table no summary columns
|
|
480
|
+
if (pivot_columns.length < 2) {
|
|
481
|
+
columnMap['total'] = TableUtils.getTableColumnByName(updateTable, intl.get('Total'));
|
|
482
|
+
|
|
483
|
+
// updated rows
|
|
484
|
+
pivot_rows.forEach(function (item) {
|
|
485
|
+
var name = item.name,
|
|
486
|
+
original_name = item.original_name,
|
|
487
|
+
total = item.total;
|
|
488
|
+
var groupName = isEmptyName(original_name) ? intl.get(EMPTY_NAME) : name;
|
|
489
|
+
var row = tableRows.find(function (row) {
|
|
490
|
+
return row[nameColumn.key] === groupName;
|
|
491
|
+
});
|
|
492
|
+
var totalColumn = columnMap['total'];
|
|
493
|
+
if (row) {
|
|
494
|
+
// update old row
|
|
495
|
+
var updateRow = {};
|
|
496
|
+
var oldRow = {};
|
|
497
|
+
var validTotalCellValue = getValidValueForColumn(totalColumn, total.total);
|
|
498
|
+
if (totalColumn && isCellValueChanged(row[totalColumn.key], validTotalCellValue, totalColumn.type)) {
|
|
499
|
+
updateRow[totalColumn.key] = validTotalCellValue;
|
|
500
|
+
oldRow[totalColumn.key] = row[totalColumn.key];
|
|
501
|
+
}
|
|
502
|
+
if (Object.keys(updateRow).length > 0) {
|
|
503
|
+
var rowId = row._id;
|
|
504
|
+
rowIds.push(rowId);
|
|
505
|
+
updatedRows[rowId] = updateRow;
|
|
506
|
+
oldRows[rowId] = oldRow;
|
|
507
|
+
}
|
|
508
|
+
} else {
|
|
509
|
+
// insert new row
|
|
510
|
+
var newRow = {};
|
|
511
|
+
newRow[nameColumn.key] = groupName;
|
|
512
|
+
if (totalColumn) {
|
|
513
|
+
newRow[totalColumn.key] = getValidValueForColumn(totalColumn, total.total);
|
|
514
|
+
}
|
|
515
|
+
newRows.push(newRow);
|
|
516
|
+
}
|
|
517
|
+
});
|
|
518
|
+
return {
|
|
519
|
+
newRows: newRows,
|
|
520
|
+
updatedRows: updatedRows,
|
|
521
|
+
rowIds: rowIds,
|
|
522
|
+
oldRows: oldRows
|
|
523
|
+
};
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
// one dimension table with summary columns
|
|
527
|
+
Array.isArray(pivot_columns) && pivot_columns.forEach(function (item) {
|
|
528
|
+
var key = item.key;
|
|
529
|
+
var column = statisticTableColumns.find(function (column) {
|
|
530
|
+
return column.key === key;
|
|
531
|
+
});
|
|
532
|
+
if (column) {
|
|
533
|
+
columnMap[key] = TableUtils.getTableColumnByName(updateTable, column.name);
|
|
534
|
+
}
|
|
535
|
+
});
|
|
536
|
+
|
|
537
|
+
// updated rows
|
|
538
|
+
var nameColumnKey = nameColumn.key;
|
|
539
|
+
pivot_rows.forEach(function (item) {
|
|
540
|
+
var name = item.name,
|
|
541
|
+
original_name = item.original_name,
|
|
542
|
+
total = item.total;
|
|
543
|
+
var groupName = isEmptyName(original_name) ? intl.get(EMPTY_NAME) : name;
|
|
544
|
+
var row = tableRows.find(function (row) {
|
|
545
|
+
return row[nameColumnKey] === groupName;
|
|
546
|
+
});
|
|
547
|
+
if (row) {
|
|
548
|
+
var updateRow = {};
|
|
549
|
+
var oldRow = {};
|
|
550
|
+
Array.isArray(pivot_columns) && pivot_columns.forEach(function (item) {
|
|
551
|
+
var key = item.key,
|
|
552
|
+
method = item.method;
|
|
553
|
+
var column = columnMap[key];
|
|
554
|
+
var cellValueKey = key + method;
|
|
555
|
+
var totalCellValue = getValidValueForColumn(column, total[cellValueKey]);
|
|
556
|
+
if (column && isCellValueChanged(row[column.key], totalCellValue, column.type)) {
|
|
557
|
+
updateRow[column.key] = totalCellValue;
|
|
558
|
+
oldRow[column.key] = row[column.key];
|
|
559
|
+
}
|
|
560
|
+
});
|
|
561
|
+
if (Object.keys(updateRow).length > 0) {
|
|
562
|
+
var rowId = row._id;
|
|
563
|
+
rowIds.push(rowId);
|
|
564
|
+
updatedRows[rowId] = updateRow;
|
|
565
|
+
oldRows[rowId] = oldRow;
|
|
566
|
+
}
|
|
567
|
+
} else {
|
|
568
|
+
var newRow = _defineProperty({}, nameColumn.key, groupName);
|
|
569
|
+
Array.isArray(pivot_columns) && pivot_columns.forEach(function (item) {
|
|
570
|
+
var key = item.key,
|
|
571
|
+
method = item.method;
|
|
572
|
+
var cellValueKey = key + method;
|
|
573
|
+
var column = columnMap[key];
|
|
574
|
+
if (column) {
|
|
575
|
+
var totalCellValue = getValidValueForColumn(column, total[cellValueKey]);
|
|
576
|
+
newRow[column.key] = totalCellValue;
|
|
577
|
+
}
|
|
578
|
+
});
|
|
579
|
+
newRows.push(newRow);
|
|
580
|
+
}
|
|
581
|
+
});
|
|
582
|
+
return {
|
|
583
|
+
newRows: newRows,
|
|
584
|
+
updatedRows: updatedRows,
|
|
585
|
+
rowIds: rowIds,
|
|
586
|
+
oldRows: oldRows
|
|
587
|
+
};
|
|
588
|
+
};
|
|
589
|
+
var updateTwoDimensionToTable = function updateTwoDimensionToTable(_ref14) {
|
|
590
|
+
var updateTable = _ref14.updateTable,
|
|
591
|
+
statisticalResult = _ref14.statisticalResult;
|
|
592
|
+
var pivotResult = statisticalResult.pivotResult,
|
|
593
|
+
groupbyColumn = statisticalResult.groupbyColumn;
|
|
594
|
+
var nameColumn = TableUtils.getTableColumnByName(updateTable, groupbyColumn.name);
|
|
595
|
+
if (!nameColumn) return {};
|
|
596
|
+
var pivot_rows = pivotResult.pivot_rows,
|
|
597
|
+
pivot_columns = pivotResult.pivot_columns;
|
|
598
|
+
var tableRows = updateTable.rows;
|
|
599
|
+
var columnMap = {};
|
|
600
|
+
var newRows = [];
|
|
601
|
+
var updatedRows = {};
|
|
602
|
+
var rowIds = [];
|
|
603
|
+
var oldRows = {};
|
|
604
|
+
|
|
605
|
+
// updated columns
|
|
606
|
+
var updateColumns = [];
|
|
607
|
+
Array.isArray(pivot_columns) && pivot_columns.forEach(function (item) {
|
|
608
|
+
var key = item.key,
|
|
609
|
+
original_key = item.original_key;
|
|
610
|
+
var columnName = isEmptyName(original_key) ? intl.get(EMPTY_NAME) : key;
|
|
611
|
+
var column = TableUtils.getTableColumnByName(updateTable, columnName);
|
|
612
|
+
columnMap[columnName] = column;
|
|
613
|
+
updateColumns.push(column);
|
|
614
|
+
});
|
|
615
|
+
var totalColumn = TableUtils.getTableColumnByName(updateTable, intl.get('Total'));
|
|
616
|
+
columnMap['total'] = totalColumn;
|
|
617
|
+
updateColumns.push(totalColumn);
|
|
618
|
+
|
|
619
|
+
// updated rows
|
|
620
|
+
var _loop = function _loop(i) {
|
|
621
|
+
var pivotRow = pivot_rows[i];
|
|
622
|
+
var name = pivotRow.name,
|
|
623
|
+
original_name = pivotRow.original_name,
|
|
624
|
+
cells = pivotRow.cells,
|
|
625
|
+
total = pivotRow.total;
|
|
626
|
+
if (isEmptyName(original_name)) {
|
|
627
|
+
name = intl.get(EMPTY_NAME);
|
|
628
|
+
}
|
|
629
|
+
var nameColumnKey = nameColumn.key;
|
|
630
|
+
var row = tableRows.find(function (row) {
|
|
631
|
+
return row[nameColumnKey] === name;
|
|
632
|
+
});
|
|
633
|
+
var totalColumn = columnMap['total'];
|
|
634
|
+
if (row) {
|
|
635
|
+
// update old row
|
|
636
|
+
var rowId = row._id;
|
|
637
|
+
var updatedRow = {};
|
|
638
|
+
var oldRow = {}; // op used
|
|
639
|
+
var validTotalCellValue = getValidValueForColumn(totalColumn, total);
|
|
640
|
+
if (totalColumn && isCellValueChanged(row[totalColumn.key], validTotalCellValue, totalColumn.type)) {
|
|
641
|
+
updatedRow[totalColumn.key] = validTotalCellValue;
|
|
642
|
+
oldRow[totalColumn.key] = row[totalColumn.key];
|
|
643
|
+
}
|
|
644
|
+
var keys = Object.keys(cells);
|
|
645
|
+
if (keys.length === 0) {
|
|
646
|
+
updateColumns.forEach(function (column) {
|
|
647
|
+
var key = column.key,
|
|
648
|
+
type = column.type;
|
|
649
|
+
var newCellValue = key === totalColumn.key ? 0 : null;
|
|
650
|
+
if (isCellValueChanged(row[key], newCellValue, type)) {
|
|
651
|
+
updatedRow[key] = newCellValue;
|
|
652
|
+
oldRow[key] = row[key];
|
|
653
|
+
}
|
|
654
|
+
});
|
|
655
|
+
} else {
|
|
656
|
+
keys.forEach(function (key) {
|
|
657
|
+
var columnName = isEmptyName(key) ? intl.get(EMPTY_NAME) : key;
|
|
658
|
+
var column = columnMap[columnName];
|
|
659
|
+
var validCellValue = getValidValueForColumn(column, cells[key].total);
|
|
660
|
+
if (column && isCellValueChanged(row[column.key], validCellValue, column.type)) {
|
|
661
|
+
updatedRow[column.key] = validCellValue;
|
|
662
|
+
oldRow[column.key] = row[column.key];
|
|
663
|
+
}
|
|
664
|
+
});
|
|
665
|
+
}
|
|
666
|
+
if (Object.keys(updatedRow).length > 0) {
|
|
667
|
+
rowIds.push(rowId);
|
|
668
|
+
updatedRows[rowId] = updatedRow;
|
|
669
|
+
oldRows[rowId] = oldRow;
|
|
670
|
+
}
|
|
671
|
+
} else {
|
|
672
|
+
// insert new row
|
|
673
|
+
var newRow = {};
|
|
674
|
+
newRow[nameColumnKey] = name;
|
|
675
|
+
if (totalColumn) {
|
|
676
|
+
newRow[totalColumn.key] = getValidValueForColumn(totalColumn, name);
|
|
677
|
+
}
|
|
678
|
+
Object.keys(cells).forEach(function (key) {
|
|
679
|
+
var columnName = isEmptyName(key) ? intl.get(EMPTY_NAME) : key;
|
|
680
|
+
var column = columnMap[columnName];
|
|
681
|
+
if (column) {
|
|
682
|
+
newRow[column.key] = getValidValueForColumn(column, cells[key].total);
|
|
683
|
+
}
|
|
684
|
+
});
|
|
685
|
+
if (Object.keys(newRow).length > 0) {
|
|
686
|
+
newRows.push(newRow);
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
};
|
|
690
|
+
for (var i = 0; i < pivot_rows.length; i++) {
|
|
691
|
+
_loop(i);
|
|
692
|
+
}
|
|
693
|
+
return {
|
|
694
|
+
newRows: newRows,
|
|
695
|
+
updatedRows: updatedRows,
|
|
696
|
+
oldRows: oldRows,
|
|
697
|
+
rowIds: rowIds
|
|
698
|
+
};
|
|
699
|
+
};
|
|
700
|
+
var updateTwoDimensionWithSummaryColumnsToTable = function updateTwoDimensionWithSummaryColumnsToTable(_ref15) {
|
|
701
|
+
var updateTable = _ref15.updateTable,
|
|
702
|
+
statisticalResult = _ref15.statisticalResult;
|
|
703
|
+
var groupbyColumn = statisticalResult.groupbyColumn;
|
|
704
|
+
var nameColumn = groupbyColumn && TableUtils.getTableColumnByName(updateTable, groupbyColumn.name);
|
|
705
|
+
if (!nameColumn) return {};
|
|
706
|
+
var _getTwoDimensionWithS = getTwoDimensionWithSummaryColumns({
|
|
707
|
+
statisticalResult: statisticalResult
|
|
708
|
+
}),
|
|
709
|
+
exportingColumns = _getTwoDimensionWithS.columns,
|
|
710
|
+
exportingRows = _getTwoDimensionWithS.rows;
|
|
711
|
+
if (!Array.isArray(exportingColumns) || exportingColumns.length === 0 || !Array.isArray(exportingRows) || exportingRows.length === 0) {
|
|
712
|
+
return {};
|
|
713
|
+
}
|
|
714
|
+
var tableRows = updateTable.rows,
|
|
715
|
+
tableColumns = updateTable.columns;
|
|
716
|
+
var nameColumnKey = nameColumn.key;
|
|
717
|
+
var groupbyColumnName = groupbyColumn.name;
|
|
718
|
+
var newRows = [];
|
|
719
|
+
var updatedRows = {};
|
|
720
|
+
var rowIds = [];
|
|
721
|
+
var oldRows = {};
|
|
722
|
+
var nameCellValueExistRowMap = {};
|
|
723
|
+
tableRows.forEach(function (row) {
|
|
724
|
+
var nameCellValue = row[nameColumnKey];
|
|
725
|
+
if (!nameCellValueExistRowMap[nameCellValue]) {
|
|
726
|
+
nameCellValueExistRowMap[nameCellValue] = row;
|
|
727
|
+
}
|
|
728
|
+
});
|
|
729
|
+
exportingRows.forEach(function (exportingRow) {
|
|
730
|
+
var nameCellValue = exportingRow[groupbyColumnName];
|
|
731
|
+
var existRow = nameCellValueExistRowMap[nameCellValue];
|
|
732
|
+
if (existRow) {
|
|
733
|
+
// update the row already exist
|
|
734
|
+
var exportingRowData = {};
|
|
735
|
+
var existRowData = {};
|
|
736
|
+
tableColumns.forEach(function (tableColumn) {
|
|
737
|
+
var tableColumnKey = tableColumn.key,
|
|
738
|
+
tableColumnType = tableColumn.type,
|
|
739
|
+
tableColumnName = tableColumn.name;
|
|
740
|
+
var existCellValue = existRow[tableColumnKey];
|
|
741
|
+
var exportingCellValue = exportingRow[tableColumnName];
|
|
742
|
+
if (tableColumn && isCellValueChanged(existCellValue, exportingCellValue, tableColumnType)) {
|
|
743
|
+
exportingRowData[tableColumnKey] = exportingCellValue;
|
|
744
|
+
existRowData[tableColumnKey] = existCellValue;
|
|
745
|
+
}
|
|
746
|
+
});
|
|
747
|
+
if (Object.keys(exportingRowData).length > 0) {
|
|
748
|
+
var rowId = existRow._id;
|
|
749
|
+
rowIds.push(rowId);
|
|
750
|
+
updatedRows[rowId] = exportingRowData;
|
|
751
|
+
oldRows[rowId] = existRowData;
|
|
752
|
+
}
|
|
753
|
+
} else {
|
|
754
|
+
// create new row which not exist
|
|
755
|
+
newRows.push(exportingRow);
|
|
756
|
+
}
|
|
757
|
+
});
|
|
758
|
+
return {
|
|
759
|
+
newRows: newRows,
|
|
760
|
+
updatedRows: updatedRows,
|
|
761
|
+
oldRows: oldRows,
|
|
762
|
+
rowIds: rowIds
|
|
763
|
+
};
|
|
764
|
+
};
|
|
765
|
+
|
|
766
|
+
/**
|
|
767
|
+
* statisticalResult: {
|
|
768
|
+
* columnGroupbyColumn: null,
|
|
769
|
+
* groupbyColumn: null,
|
|
770
|
+
* pivotResult: {
|
|
771
|
+
* pivot_columns: [],
|
|
772
|
+
* pivot_rows: [
|
|
773
|
+
* { name: 'xxx', original_name: 'xxx', total }
|
|
774
|
+
* ]
|
|
775
|
+
* },
|
|
776
|
+
* statisticTableColumns: null,
|
|
777
|
+
* summaryColumn: null,
|
|
778
|
+
* }
|
|
779
|
+
*
|
|
780
|
+
* @return {
|
|
781
|
+
* columns: [
|
|
782
|
+
* {
|
|
783
|
+
* name: xxx,
|
|
784
|
+
* type: CellType.DATE
|
|
785
|
+
* data: { format }
|
|
786
|
+
* }, {
|
|
787
|
+
* name: xxx,
|
|
788
|
+
* type: CellType.NUMBER
|
|
789
|
+
* data: { decimal, thousands, precision, enable_precision, format }
|
|
790
|
+
* },
|
|
791
|
+
* ],
|
|
792
|
+
* rows: [
|
|
793
|
+
* { columnName: value, xxx },
|
|
794
|
+
* ]
|
|
795
|
+
* }
|
|
796
|
+
*/
|
|
797
|
+
export var exportStatisticToTable = function exportStatisticToTable(_ref16) {
|
|
798
|
+
var statisticalResult = _ref16.statisticalResult;
|
|
799
|
+
var pivotResult = statisticalResult.pivotResult,
|
|
800
|
+
groupbyColumn = statisticalResult.groupbyColumn,
|
|
801
|
+
columnGroupbyColumn = statisticalResult.columnGroupbyColumn;
|
|
802
|
+
var pivot_columns = pivotResult.pivot_columns,
|
|
803
|
+
pivot_summary_multiple_columns = pivotResult.pivot_summary_multiple_columns;
|
|
804
|
+
if (!groupbyColumn) return {};
|
|
805
|
+
|
|
806
|
+
// two dimension table
|
|
639
807
|
if (columnGroupbyColumn) {
|
|
640
|
-
|
|
808
|
+
if (Array.isArray(pivot_summary_multiple_columns) && pivot_summary_multiple_columns.length > 0) {
|
|
809
|
+
return exportTwoDimensionWithSummaryColumnsToTable({
|
|
810
|
+
statisticalResult: statisticalResult
|
|
811
|
+
});
|
|
812
|
+
}
|
|
813
|
+
return exportTwoDimensionToTable({
|
|
814
|
+
statisticalResult: statisticalResult
|
|
815
|
+
});
|
|
816
|
+
}
|
|
817
|
+
if (!Array.isArray(pivot_columns)) return {};
|
|
818
|
+
return exportOneDimensionToTable({
|
|
819
|
+
statisticalResult: statisticalResult
|
|
820
|
+
});
|
|
821
|
+
};
|
|
822
|
+
export var updateStatisticToTable = function updateStatisticToTable(_ref17) {
|
|
823
|
+
var updateTable = _ref17.updateTable,
|
|
824
|
+
statisticalResult = _ref17.statisticalResult;
|
|
825
|
+
var groupbyColumn = statisticalResult.groupbyColumn,
|
|
826
|
+
columnGroupbyColumn = statisticalResult.columnGroupbyColumn,
|
|
827
|
+
pivotResult = statisticalResult.pivotResult;
|
|
828
|
+
var pivot_summary_multiple_columns = pivotResult.pivot_summary_multiple_columns;
|
|
829
|
+
if (!groupbyColumn) return {};
|
|
830
|
+
|
|
831
|
+
// two dimension table
|
|
832
|
+
if (columnGroupbyColumn) {
|
|
833
|
+
if (Array.isArray(pivot_summary_multiple_columns) && pivot_summary_multiple_columns.length > 0) {
|
|
834
|
+
return updateTwoDimensionWithSummaryColumnsToTable({
|
|
835
|
+
updateTable: updateTable,
|
|
836
|
+
statisticalResult: statisticalResult
|
|
837
|
+
});
|
|
838
|
+
}
|
|
839
|
+
return updateTwoDimensionToTable({
|
|
641
840
|
updateTable: updateTable,
|
|
642
841
|
statisticalResult: statisticalResult
|
|
643
842
|
});
|
|
644
843
|
}
|
|
645
844
|
|
|
646
845
|
// one dimension table
|
|
647
|
-
return
|
|
846
|
+
return updatedOneDimensionToTable({
|
|
648
847
|
updateTable: updateTable,
|
|
649
848
|
statisticalResult: statisticalResult
|
|
650
849
|
});
|
|
@@ -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
|
+
};
|
package/es/utils/sql-utils.js
CHANGED
|
@@ -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.
|
|
3
|
+
"version": "4.0.13",
|
|
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.
|
|
16
|
-
"dtable-web-api": "4.0.
|
|
15
|
+
"dtable-store": "4.0.12",
|
|
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",
|