dtable-statistic 4.3.3 → 4.3.4
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/api/dtable-db-api.js +3 -10
- package/es/calculator/base-calculator.js +12 -20
- package/es/calculator/basic-chart-calculator.js +65 -72
- package/es/calculator/combination-calculator.js +57 -64
- package/es/calculator/compare-bar-calculator.js +26 -33
- package/es/calculator/completeness-calculator.js +30 -37
- package/es/calculator/copy-value.js +1 -7
- package/es/calculator/dashboard-calculator.js +13 -20
- package/es/calculator/heat-map-calculator.js +18 -25
- package/es/calculator/horizontal-bar-calculator.js +8 -15
- package/es/calculator/index.js +35 -42
- package/es/calculator/map-calculator.js +22 -29
- package/es/calculator/mirror-calculator.js +20 -27
- package/es/calculator/number-card-calculator.js +10 -17
- package/es/calculator/pivot-table-calculator.js +58 -65
- package/es/calculator/scatter-calculator.js +14 -21
- package/es/calculator/thread-manager.js +1 -7
- package/es/calculator/trend-calculator.js +22 -29
- package/es/calculator/workers/basic-chart-calculator-worker.js +76 -83
- package/es/calculator/workers/calculator.worker.js +30 -33
- package/es/calculator/workers/card-calculator-worker.js +13 -19
- package/es/calculator/workers/combination-calculator-worker.js +46 -53
- package/es/calculator/workers/compare-bar-chart-calculator-worker.js +22 -29
- package/es/calculator/workers/completeness-calculator-worker.js +34 -41
- package/es/calculator/workers/dashboard-calculator-worker.js +18 -24
- package/es/calculator/workers/mirror-calculator-worker.js +22 -29
- package/es/calculator/workers/pivot-table-calculator-worker.js +77 -84
- package/es/calculator/workers/scatter-calculator-worker.js +20 -27
- package/es/calculator/workers/trend-calculator-worker.js +27 -34
- package/es/calculator/world-map-calculator.js +17 -24
- package/es/components/common-add-tool.js +5 -12
- package/es/components/dialog/chart-addition-edit-dialog.js +12 -20
- package/es/components/dialog/chart-addition-widgets/chart-selector.js +101 -108
- package/es/components/dialog/color-theme-dialog.js +15 -22
- package/es/components/dialog/delete-confirmation-dialog.js +11 -18
- package/es/components/dialog/enlarged-chart-dialog.js +20 -28
- package/es/components/dialog/new-table-dialog.js +16 -23
- package/es/components/dialog/new-view-dialog.js +14 -21
- package/es/components/dialog/rename-view-dialog.js +14 -22
- package/es/components/dialog/statistic-record-dialog/index.js +37 -45
- package/es/components/dialog/statistic-types-dialog/index.js +14 -22
- package/es/components/dialog/table-select-dialog.js +15 -23
- package/es/components/dropdown-menu/statistic-dropdown-menu.js +41 -49
- package/es/components/dtable-popover.js +12 -19
- package/es/components/dtable-search-input.js +13 -21
- package/es/components/dtable-select.js +15 -21
- package/es/components/icon.js +4 -11
- package/es/components/index.js +11 -76
- package/es/components/loading.js +3 -10
- package/es/components/modal-portal.js +5 -12
- package/es/components/popover/color-rules/color-rule.js +25 -33
- package/es/components/popover/color-rules/index.js +6 -14
- package/es/components/popover/color-rules/rule-filters/filter.js +27 -34
- package/es/components/popover/color-rules/rule-filters/index.js +17 -25
- package/es/components/popover/color-rules/rule-filters/number-input.js +9 -17
- package/es/components/popover/color-rules-popover.js +24 -32
- package/es/components/popover/color-selector-popover.js +10 -17
- package/es/components/seatable-radio/index.js +9 -16
- package/es/components/select/index.js +2 -9
- package/es/components/select/option-group.js +19 -27
- package/es/components/select/option.js +6 -14
- package/es/components/select/select.js +17 -25
- package/es/components/toast/alert.js +24 -31
- package/es/components/toast/index.js +3 -10
- package/es/components/toast/toast.js +12 -20
- package/es/components/toast/toastManager.js +9 -17
- package/es/components/toast/toaster.js +6 -14
- package/es/constants/color-rules.js +6 -12
- package/es/constants/dtable-select-style.js +4 -9
- package/es/constants/event-types.js +4 -10
- package/es/constants/index.js +67 -96
- package/es/constants/key-codes.js +0 -2
- package/es/constants/map.js +2 -8
- package/es/constants/model.js +20 -26
- package/es/constants/regions.js +3 -8
- package/es/constants/zIndexes.js +1 -7
- package/es/custom-g2.js +208 -236
- package/es/dashboard.js +50 -58
- package/es/desktop-dashboard.js +47 -55
- package/es/index.js +3 -6
- package/es/locale/index.js +10 -13
- package/es/locale/lang/de.js +1 -7
- package/es/locale/lang/en.js +1 -7
- package/es/locale/lang/fr.js +1 -7
- package/es/locale/lang/zh_CN.js +1 -7
- package/es/mobile-dashboard.js +38 -46
- package/es/model/bar-group.js +11 -19
- package/es/model/bar.js +10 -18
- package/es/model/base-model.js +2 -9
- package/es/model/basic-number-card.js +8 -16
- package/es/model/collaborators.js +2 -9
- package/es/model/combination.js +12 -20
- package/es/model/compare-bar.js +16 -24
- package/es/model/completeness-group.js +8 -16
- package/es/model/completeness.js +5 -13
- package/es/model/custom-bar.js +6 -14
- package/es/model/dashboard.js +6 -14
- package/es/model/generic-model.js +133 -141
- package/es/model/heat-map.js +11 -19
- package/es/model/horizontal-bar-group.js +10 -18
- package/es/model/horizontal-bar.js +10 -18
- package/es/model/index.js +53 -185
- package/es/model/map.js +15 -23
- package/es/model/mirror.js +13 -21
- package/es/model/pie.js +10 -18
- package/es/model/ring.js +11 -19
- package/es/model/scatter.js +6 -14
- package/es/model/statistic-dashboard.js +2 -9
- package/es/model/table.js +10 -18
- package/es/model/trend.js +12 -20
- package/es/model/world-map.js +13 -21
- package/es/service/chart-service.js +7 -14
- package/es/service/dashboard-service.js +34 -41
- package/es/service/map-json.js +8 -14
- package/es/stat-editor/chart-name-editor.js +8 -15
- package/es/stat-editor/index.js +16 -24
- package/es/stat-editor/stat-settings/advance-chart-settings/basic-number-card-settings.js +21 -29
- package/es/stat-editor/stat-settings/advance-chart-settings/combination-settings.js +49 -57
- package/es/stat-editor/stat-settings/advance-chart-settings/dashboard-chart-settings.js +23 -31
- package/es/stat-editor/stat-settings/advance-chart-settings/geo-granularity-settings.js +4 -11
- package/es/stat-editor/stat-settings/advance-chart-settings/heat-map-settings.js +19 -27
- package/es/stat-editor/stat-settings/advance-chart-settings/index.js +43 -51
- package/es/stat-editor/stat-settings/advance-chart-settings/map-settings.js +23 -31
- package/es/stat-editor/stat-settings/advance-chart-settings/mirror-settings.js +23 -31
- package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/combination-style-setting.js +37 -45
- package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/heat-map-settings.js +19 -27
- package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/map-setting.js +26 -34
- package/es/stat-editor/stat-settings/advance-chart-settings/summary-settings.js +47 -55
- package/es/stat-editor/stat-settings/advance-chart-settings/trend-chart-settings.js +22 -30
- package/es/stat-editor/stat-settings/advance-chart-settings/world-map-settings.js +18 -26
- package/es/stat-editor/stat-settings/basic-chart-settings/advance-bar-chart-settings.js +27 -35
- package/es/stat-editor/stat-settings/basic-chart-settings/bar-settings.js +24 -32
- package/es/stat-editor/stat-settings/basic-chart-settings/completeness-chart-settings.js +33 -41
- package/es/stat-editor/stat-settings/basic-chart-settings/custom-bar-settings.js +22 -30
- package/es/stat-editor/stat-settings/basic-chart-settings/groupby-settings.js +27 -26
- package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-axis-group-settings.js +46 -54
- package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-bar-settings.js +23 -31
- package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-group-chart-settings.js +26 -34
- package/es/stat-editor/stat-settings/basic-chart-settings/index.js +77 -85
- package/es/stat-editor/stat-settings/basic-chart-settings/pie-settings.js +21 -29
- package/es/stat-editor/stat-settings/basic-chart-settings/pivot-table-settings.js +73 -81
- package/es/stat-editor/stat-settings/basic-chart-settings/scatter-settings.js +16 -24
- package/es/stat-editor/stat-settings/basic-chart-settings/stack-item-settings.js +19 -27
- package/es/stat-editor/stat-settings/basic-chart-settings/stacks-settings.js +18 -26
- package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/bar-chart-style-setting.js +49 -57
- package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/completeness-style.js +17 -25
- package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/horizontal-bar-chart-style.js +47 -55
- package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/label-font-size-editor.js +11 -19
- package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/pie-chart-style-settings.js +45 -53
- package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/time-compare-style.js +9 -17
- package/es/stat-editor/stat-settings/basic-chart-settings/summary-method-setting.js +20 -28
- package/es/stat-editor/stat-settings/basic-chart-settings/summary-settings.js +30 -38
- package/es/stat-editor/stat-settings/basic-chart-settings/time-comparison-settings.js +50 -58
- package/es/stat-editor/stat-settings/basic-chart-settings/timer-picker.js +17 -25
- package/es/stat-editor/stat-settings/basic-chart-settings/y-axis-group-settings.js +47 -55
- package/es/stat-editor/stat-settings/color-setting/color-group-selector.js +11 -19
- package/es/stat-editor/stat-settings/color-setting/color-picker.js +12 -19
- package/es/stat-editor/stat-settings/color-setting/color-use-type-selector.js +62 -70
- package/es/stat-editor/stat-settings/map/map-level.js +13 -20
- package/es/stat-editor/stat-settings/map/map-province-city.js +20 -27
- package/es/stat-editor/stat-settings/public-setting/axis-label-position-setting.js +11 -19
- package/es/stat-editor/stat-settings/public-setting/base-settings.js +20 -28
- package/es/stat-editor/stat-settings/public-setting/calender.js +22 -29
- package/es/stat-editor/stat-settings/public-setting/column-settings.js +6 -13
- package/es/stat-editor/stat-settings/public-setting/custom-title-setting.js +9 -16
- package/es/stat-editor/stat-settings/public-setting/data-sort-setting.js +13 -21
- package/es/stat-editor/stat-settings/public-setting/ind-toggle-setting.js +8 -15
- package/es/stat-editor/stat-settings/public-setting/min-max-setting.js +11 -19
- package/es/stat-editor/stat-settings/public-setting/numeric-summary-item.js +27 -35
- package/es/stat-editor/stat-settings/public-setting/toggle-setting.js +8 -15
- package/es/stat-editor/stat-settings/public-setting/type-settings/index.js +18 -26
- package/es/stat-list/chart-preview.js +20 -28
- package/es/stat-list/index.js +27 -35
- package/es/stat-view/area-chart.js +43 -50
- package/es/stat-view/bar-chart.js +47 -54
- package/es/stat-view/base-chart.js +24 -32
- package/es/stat-view/basic-number-card.js +19 -26
- package/es/stat-view/combination-chart.js +49 -56
- package/es/stat-view/compare-chart.js +39 -46
- package/es/stat-view/completeness-chart.js +28 -35
- package/es/stat-view/custom-bar.js +31 -38
- package/es/stat-view/dashboard-chart.js +15 -22
- package/es/stat-view/heat-map.js +43 -50
- package/es/stat-view/horizontal-bar-chart.js +51 -58
- package/es/stat-view/index.js +73 -80
- package/es/stat-view/line-chart.js +39 -46
- package/es/stat-view/map.js +33 -40
- package/es/stat-view/mirror.js +21 -28
- package/es/stat-view/pie-chart.js +29 -36
- package/es/stat-view/pivot-table/index.js +32 -39
- package/es/stat-view/pivot-table/one-dimension-table-no-numeric-columns.js +31 -39
- package/es/stat-view/pivot-table/one-dimension-table-with-numeric-columns.js +29 -37
- package/es/stat-view/pivot-table/pivot-table-display-name.js +46 -54
- package/es/stat-view/pivot-table/two-dimension-table.js +62 -70
- package/es/stat-view/ring-chart.js +38 -45
- package/es/stat-view/scatter-chart.js +30 -37
- package/es/stat-view/treemap-chart.js +37 -44
- package/es/stat-view/trend-chart.js +32 -39
- package/es/stat-view/world-map.js +33 -40
- package/es/tabs/index.js +32 -40
- package/es/tabs/tab.js +26 -34
- package/es/utils/basic-chart-utils.js +2 -9
- package/es/utils/cell-format.js +14 -22
- package/es/utils/cell-value.js +7 -14
- package/es/utils/collaborator.js +4 -13
- package/es/utils/color-utils.js +18 -29
- package/es/utils/column-utils.js +18 -29
- package/es/utils/column.js +4 -11
- package/es/utils/common-utils.js +41 -65
- package/es/utils/date-format.js +2 -8
- package/es/utils/export-table-utils.js +82 -91
- package/es/utils/index.js +11 -100
- package/es/utils/map.js +26 -36
- package/es/utils/model.js +6 -14
- package/es/utils/object.js +6 -15
- package/es/utils/pivot-table.js +16 -23
- package/es/utils/row-utils.js +23 -33
- package/es/utils/search.js +21 -29
- package/es/utils/sql-utils.js +65 -75
- package/es/utils/stat-utils.js +60 -66
- package/es/utils/trend-utils.js +32 -40
- package/package.json +1 -1
|
@@ -1,18 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var _baseCalculator = _interopRequireDefault(require("./base-calculator"));
|
|
10
|
-
var _commonUtils = require("../utils/common-utils");
|
|
11
|
-
var _sqlUtils = require("../utils/sql-utils");
|
|
12
|
-
var _constants = require("../constants");
|
|
13
|
-
var _map = require("../utils/map");
|
|
14
|
-
var _statUtils = _interopRequireDefault(require("../utils/stat-utils"));
|
|
15
|
-
class MapCalculator extends _baseCalculator.default {
|
|
1
|
+
import { CellType, filter2SqlCondition, TableUtils } from 'dtable-store';
|
|
2
|
+
import BaseCalculator from './base-calculator';
|
|
3
|
+
import { formatNumericValue, getSummaryColumnMethod } from '../utils/common-utils';
|
|
4
|
+
import { getSqlGroup } from '../utils/sql-utils';
|
|
5
|
+
import { DTABLE_DB_SUMMARY_METHOD } from '../constants';
|
|
6
|
+
import { fixMapGeoGranularity } from '../utils/map';
|
|
7
|
+
import StatUtils from '../utils/stat-utils';
|
|
8
|
+
class MapCalculator extends BaseCalculator {
|
|
16
9
|
constructor(_ref) {
|
|
17
10
|
let {
|
|
18
11
|
value,
|
|
@@ -37,11 +30,11 @@ class MapCalculator extends _baseCalculator.default {
|
|
|
37
30
|
summary_column
|
|
38
31
|
} = chart;
|
|
39
32
|
const table = this.getTableById(table_id);
|
|
40
|
-
const selectedColumn = geo_column &&
|
|
41
|
-
if (geo_column && (!selectedColumn || selectedColumn.type !==
|
|
33
|
+
const selectedColumn = geo_column && TableUtils.getTableColumnByKey(table, geo_column);
|
|
34
|
+
if (geo_column && (!selectedColumn || selectedColumn.type !== CellType.GEOLOCATION)) {
|
|
42
35
|
return false;
|
|
43
36
|
}
|
|
44
|
-
if (summary_column && !
|
|
37
|
+
if (summary_column && !TableUtils.getTableColumnByKey(table, summary_column)) {
|
|
45
38
|
return false;
|
|
46
39
|
}
|
|
47
40
|
return true;
|
|
@@ -64,24 +57,24 @@ class MapCalculator extends _baseCalculator.default {
|
|
|
64
57
|
} = chart;
|
|
65
58
|
const selectedTable = this.getTableById(table_id);
|
|
66
59
|
const selectedView = this.getViewById(view_id, selectedTable);
|
|
67
|
-
const column =
|
|
60
|
+
const column = TableUtils.getTableColumnByKey(selectedTable, geo_column);
|
|
68
61
|
if (!column) return [];
|
|
69
62
|
const columnName = column.name;
|
|
70
63
|
const isAdvanced = summary_type === 'advanced';
|
|
71
|
-
const geoGranularity =
|
|
72
|
-
const method = isAdvanced ?
|
|
73
|
-
const sqlCondition =
|
|
74
|
-
const groupName =
|
|
64
|
+
const geoGranularity = fixMapGeoGranularity(chart);
|
|
65
|
+
const method = isAdvanced ? DTABLE_DB_SUMMARY_METHOD[summary_method] : 'COUNT';
|
|
66
|
+
const sqlCondition = filter2SqlCondition(selectedTable, selectedView);
|
|
67
|
+
const groupName = getSqlGroup(geoGranularity, column);
|
|
75
68
|
let sqlString = '';
|
|
76
69
|
let summaryColumn;
|
|
77
70
|
let summaryColumnName = '';
|
|
78
71
|
if (isAdvanced) {
|
|
79
|
-
summaryColumn =
|
|
72
|
+
summaryColumn = TableUtils.getTableColumnByKey(selectedTable, summary_column);
|
|
80
73
|
if (!summaryColumn) {
|
|
81
74
|
return [];
|
|
82
75
|
}
|
|
83
76
|
summaryColumnName = summaryColumn.name;
|
|
84
|
-
const summaryColumnMethod =
|
|
77
|
+
const summaryColumnMethod = getSummaryColumnMethod(method, summaryColumnName);
|
|
85
78
|
sqlString = "select ".concat(groupName, ", ").concat(summaryColumnMethod, " from `").concat(selectedTable.name, "` ").concat(sqlCondition, " group by ").concat(groupName, " limit 5000");
|
|
86
79
|
} else {
|
|
87
80
|
sqlString = "select ".concat(groupName, ", ").concat(method, "(`").concat(columnName, "`) from `").concat(selectedTable.name, "` ").concat(sqlCondition, " group by ").concat(groupName, " limit 5000");
|
|
@@ -91,15 +84,15 @@ class MapCalculator extends _baseCalculator.default {
|
|
|
91
84
|
const data = result.data;
|
|
92
85
|
if (!data.results) return [];
|
|
93
86
|
const newResult = [];
|
|
94
|
-
const summaryColumnMethod =
|
|
87
|
+
const summaryColumnMethod = getSummaryColumnMethod(method, summaryColumnName);
|
|
95
88
|
const valueKey = isAdvanced ? "".concat(summaryColumnMethod) : "".concat(method, "(").concat(columnName, ")");
|
|
96
89
|
data.results.forEach(item => {
|
|
97
90
|
const currentValue = item[groupName];
|
|
98
91
|
let value = item[valueKey];
|
|
99
92
|
let formatted_value = value;
|
|
100
93
|
if (isAdvanced) {
|
|
101
|
-
value =
|
|
102
|
-
formatted_value =
|
|
94
|
+
value = formatNumericValue(value, summaryColumn);
|
|
95
|
+
formatted_value = StatUtils.getFormattedValue(value, summaryColumn, method);
|
|
103
96
|
}
|
|
104
97
|
if (currentValue) {
|
|
105
98
|
newResult.push({
|
|
@@ -114,4 +107,4 @@ class MapCalculator extends _baseCalculator.default {
|
|
|
114
107
|
return [];
|
|
115
108
|
}
|
|
116
109
|
}
|
|
117
|
-
|
|
110
|
+
export default MapCalculator;
|
|
@@ -1,16 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _dtableStore = require("dtable-store");
|
|
9
|
-
var _baseCalculator = _interopRequireDefault(require("./base-calculator"));
|
|
10
|
-
var _commonUtils = require("../utils/common-utils");
|
|
11
|
-
var _statUtils = _interopRequireDefault(require("../utils/stat-utils"));
|
|
12
|
-
var _constants = require("../constants");
|
|
13
|
-
class MirrorCalculator extends _baseCalculator.default {
|
|
1
|
+
import { filter2SqlCondition, TableUtils } from 'dtable-store';
|
|
2
|
+
import BaseCalculator from './base-calculator';
|
|
3
|
+
import { formatNumericValue, getSummaryColumnMethod } from '../utils/common-utils';
|
|
4
|
+
import StatUtils from '../utils/stat-utils';
|
|
5
|
+
import { DTABLE_DB_SUMMARY_METHOD } from '../constants';
|
|
6
|
+
class MirrorCalculator extends BaseCalculator {
|
|
14
7
|
constructor(_ref) {
|
|
15
8
|
let {
|
|
16
9
|
value,
|
|
@@ -36,13 +29,13 @@ class MirrorCalculator extends _baseCalculator.default {
|
|
|
36
29
|
group_column
|
|
37
30
|
} = chart;
|
|
38
31
|
const table = this.getTableById(table_id);
|
|
39
|
-
if (!
|
|
32
|
+
if (!TableUtils.getTableColumnByKey(table, column)) {
|
|
40
33
|
return false;
|
|
41
34
|
}
|
|
42
|
-
if (summary_column && !
|
|
35
|
+
if (summary_column && !TableUtils.getTableColumnByKey(table, summary_column)) {
|
|
43
36
|
return false;
|
|
44
37
|
}
|
|
45
|
-
const selectedGroupColumn =
|
|
38
|
+
const selectedGroupColumn = TableUtils.getTableColumnByKey(table, group_column);
|
|
46
39
|
if (!selectedGroupColumn) return false;
|
|
47
40
|
const data = selectedGroupColumn.data || {};
|
|
48
41
|
const options = data.options || [];
|
|
@@ -69,22 +62,22 @@ class MirrorCalculator extends _baseCalculator.default {
|
|
|
69
62
|
const selectedTable = this.getTableById(table_id);
|
|
70
63
|
const selectedView = this.getViewById(view_id, selectedTable);
|
|
71
64
|
let sqlString = '';
|
|
72
|
-
const selectedColumn =
|
|
65
|
+
const selectedColumn = TableUtils.getTableColumnByKey(selectedTable, column);
|
|
73
66
|
const columnName = selectedColumn.name;
|
|
74
|
-
const selectedGroupColumn =
|
|
67
|
+
const selectedGroupColumn = TableUtils.getTableColumnByKey(selectedTable, group_column);
|
|
75
68
|
const groupColumnName = selectedGroupColumn.name;
|
|
76
69
|
const isAdvanced = summary_type === 'advanced';
|
|
77
|
-
const method = isAdvanced ?
|
|
78
|
-
const sqlCondition =
|
|
70
|
+
const method = isAdvanced ? DTABLE_DB_SUMMARY_METHOD[summary_method] : 'COUNT';
|
|
71
|
+
const sqlCondition = filter2SqlCondition(selectedTable, selectedView);
|
|
79
72
|
let summaryColumnName = '',
|
|
80
73
|
summaryColumn;
|
|
81
74
|
if (isAdvanced) {
|
|
82
|
-
summaryColumn =
|
|
75
|
+
summaryColumn = TableUtils.getTableColumnByKey(selectedTable, summary_column);
|
|
83
76
|
if (!summaryColumn) {
|
|
84
77
|
return [];
|
|
85
78
|
}
|
|
86
79
|
summaryColumnName = summaryColumn.name;
|
|
87
|
-
const summaryColumnMethod =
|
|
80
|
+
const summaryColumnMethod = getSummaryColumnMethod(method, summaryColumnName);
|
|
88
81
|
sqlString = "select `".concat(columnName, "`, `").concat(groupColumnName, "`, ").concat(summaryColumnMethod, " from `").concat(selectedTable.name, "` ").concat(sqlCondition, " group by `").concat(columnName, "`, `").concat(groupColumnName, "` limit 5000");
|
|
89
82
|
} else {
|
|
90
83
|
sqlString = "select `".concat(columnName, "`, `").concat(groupColumnName, "`, ").concat(method, "(`").concat(columnName, "`) from `").concat(selectedTable.name, "` ").concat(sqlCondition, " group by `").concat(columnName, "`, `").concat(groupColumnName, "` limit 5000");
|
|
@@ -94,14 +87,14 @@ class MirrorCalculator extends _baseCalculator.default {
|
|
|
94
87
|
const data = result.data;
|
|
95
88
|
if (!data.results) return [];
|
|
96
89
|
const newResult = [];
|
|
97
|
-
const summaryColumnMethod =
|
|
90
|
+
const summaryColumnMethod = getSummaryColumnMethod(method, summaryColumnName);
|
|
98
91
|
const valueKey = isAdvanced ? "".concat(summaryColumnMethod) : "".concat(method, "(").concat(columnName, ")");
|
|
99
92
|
const groupData = this.getGroupData(data.results, selectedGroupColumn);
|
|
100
93
|
if (groupData.length > 0) {
|
|
101
94
|
const groupData0 = groupData[0] || {};
|
|
102
95
|
const groupData1 = groupData[1] || {};
|
|
103
96
|
data.results.forEach(item => {
|
|
104
|
-
const label =
|
|
97
|
+
const label = StatUtils.getGroupLabel(item[column], item, selectedColumn, '', '', this.value);
|
|
105
98
|
const groupValue = item[group_column];
|
|
106
99
|
const equal2GroupData0 = groupData0.id === groupValue;
|
|
107
100
|
const equal2GroupData1 = groupData1.id === groupValue;
|
|
@@ -109,8 +102,8 @@ class MirrorCalculator extends _baseCalculator.default {
|
|
|
109
102
|
let value = item[valueKey];
|
|
110
103
|
let formattedValue = value;
|
|
111
104
|
if (isAdvanced) {
|
|
112
|
-
value =
|
|
113
|
-
formattedValue =
|
|
105
|
+
value = formatNumericValue(value, summaryColumn);
|
|
106
|
+
formattedValue = StatUtils.getFormattedValue(value, summaryColumn, summary_method);
|
|
114
107
|
}
|
|
115
108
|
newResult.push({
|
|
116
109
|
name: label,
|
|
@@ -157,4 +150,4 @@ class MirrorCalculator extends _baseCalculator.default {
|
|
|
157
150
|
return groupList;
|
|
158
151
|
}
|
|
159
152
|
}
|
|
160
|
-
|
|
153
|
+
export default MirrorCalculator;
|
|
@@ -1,15 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _dtableStore = require("dtable-store");
|
|
9
|
-
var _constants = require("../constants");
|
|
10
|
-
var _commonUtils = require("../utils/common-utils");
|
|
11
|
-
var _baseCalculator = _interopRequireDefault(require("./base-calculator"));
|
|
12
|
-
class NumberCardCalculator extends _baseCalculator.default {
|
|
1
|
+
import { filter2SqlCondition, TableUtils } from 'dtable-store';
|
|
2
|
+
import { DTABLE_DB_SUMMARY_METHOD } from '../constants';
|
|
3
|
+
import { getSummaryColumnMethod } from '../utils/common-utils';
|
|
4
|
+
import BaseCalculator from './base-calculator';
|
|
5
|
+
class NumberCardCalculator extends BaseCalculator {
|
|
13
6
|
constructor(_ref) {
|
|
14
7
|
let {
|
|
15
8
|
value,
|
|
@@ -33,7 +26,7 @@ class NumberCardCalculator extends _baseCalculator.default {
|
|
|
33
26
|
numeric_column
|
|
34
27
|
} = chart;
|
|
35
28
|
const table = this.getTableById(table_id);
|
|
36
|
-
if (!
|
|
29
|
+
if (!TableUtils.getTableColumnByKey(table, numeric_column)) {
|
|
37
30
|
return false;
|
|
38
31
|
}
|
|
39
32
|
return true;
|
|
@@ -54,9 +47,9 @@ class NumberCardCalculator extends _baseCalculator.default {
|
|
|
54
47
|
} = chart;
|
|
55
48
|
const selectedTable = this.getTableById(table_id);
|
|
56
49
|
const selectedView = this.getViewById(view_id, selectedTable);
|
|
57
|
-
const selectedColumn =
|
|
58
|
-
const sqlCondition =
|
|
59
|
-
const summaryColumnMethod =
|
|
50
|
+
const selectedColumn = TableUtils.getTableColumnByKey(selectedTable, numeric_column);
|
|
51
|
+
const sqlCondition = filter2SqlCondition(selectedTable, selectedView);
|
|
52
|
+
const summaryColumnMethod = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[summary_method], selectedColumn.name);
|
|
60
53
|
const sqlString = "select ".concat(summaryColumnMethod, " from `").concat(selectedTable.name, "` ").concat(sqlCondition, " limit 5000");
|
|
61
54
|
const result = await this.sqlQuery(sqlString);
|
|
62
55
|
if (result.status === 200 && result.data.success) {
|
|
@@ -71,4 +64,4 @@ class NumberCardCalculator extends _baseCalculator.default {
|
|
|
71
64
|
return 0;
|
|
72
65
|
}
|
|
73
66
|
}
|
|
74
|
-
|
|
67
|
+
export default NumberCardCalculator;
|
|
@@ -1,18 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var _dtableStore = require("dtable-store");
|
|
10
|
-
var _baseCalculator = _interopRequireDefault(require("./base-calculator"));
|
|
11
|
-
var _constants = require("../constants");
|
|
12
|
-
var _commonUtils = require("../utils/common-utils");
|
|
13
|
-
var _statUtils = _interopRequireDefault(require("../utils/stat-utils"));
|
|
14
|
-
var _rowUtils = require("../utils/row-utils");
|
|
15
|
-
class PivotTableCalculator extends _baseCalculator.default {
|
|
1
|
+
import dayjs from 'dayjs';
|
|
2
|
+
import { CellType, filter2SqlCondition, isDateColumn, isNumericColumn, TableUtils } from 'dtable-store';
|
|
3
|
+
import BaseCalculator from './base-calculator';
|
|
4
|
+
import { DTABLE_DB_SUMMARY_METHOD, MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP, SUMMARY_METHOD_MAP, SUMMARY_TYPE, TIME_COLUMN_LIST } from '../constants';
|
|
5
|
+
import { getSummaryColumnMethod } from '../utils/common-utils';
|
|
6
|
+
import StatUtils from '../utils/stat-utils';
|
|
7
|
+
import { getFormattedLabel } from '../utils/row-utils';
|
|
8
|
+
class PivotTableCalculator extends BaseCalculator {
|
|
16
9
|
constructor(_ref) {
|
|
17
10
|
let {
|
|
18
11
|
value,
|
|
@@ -40,13 +33,13 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
40
33
|
summary_columns_option
|
|
41
34
|
} = chart;
|
|
42
35
|
const table = this.getTableById(table_id);
|
|
43
|
-
if (!groupby_column_key || !
|
|
36
|
+
if (!groupby_column_key || !TableUtils.getTableColumnByKey(table, groupby_column_key)) {
|
|
44
37
|
return false;
|
|
45
38
|
}
|
|
46
|
-
if (column_groupby_column_key && !
|
|
39
|
+
if (column_groupby_column_key && !TableUtils.getTableColumnByKey(table, column_groupby_column_key)) {
|
|
47
40
|
return false;
|
|
48
41
|
}
|
|
49
|
-
if (summary_type ===
|
|
42
|
+
if (summary_type === SUMMARY_TYPE.ADVANCED) {
|
|
50
43
|
const summaryColumnsKeys = summary_columns_option ? summary_columns_option.map(item => item.key) : [];
|
|
51
44
|
if (!table.columns.find(column => column.key === summary_column_key || summaryColumnsKeys.includes(column.key))) {
|
|
52
45
|
return false;
|
|
@@ -71,9 +64,9 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
71
64
|
} = chart;
|
|
72
65
|
const table = this.getTableById(table_id);
|
|
73
66
|
const view = this.getViewById(view_id, table);
|
|
74
|
-
const groupbyColumn =
|
|
75
|
-
const columnGroupbyColumn =
|
|
76
|
-
const summaryColumn =
|
|
67
|
+
const groupbyColumn = TableUtils.getTableColumnByKey(table, groupby_column_key);
|
|
68
|
+
const columnGroupbyColumn = TableUtils.getTableColumnByKey(table, column_groupby_column_key);
|
|
69
|
+
const summaryColumn = TableUtils.getTableColumnByKey(table, summary_column_key);
|
|
77
70
|
const sqlMap = this.generateSqlFromChart(chart, table, view);
|
|
78
71
|
const columnMap = {
|
|
79
72
|
groupbyColumn,
|
|
@@ -101,7 +94,7 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
101
94
|
groupby_column_key
|
|
102
95
|
} = chart;
|
|
103
96
|
if (!groupby_column_key) return '';
|
|
104
|
-
const condition =
|
|
97
|
+
const condition = filter2SqlCondition(table, view);
|
|
105
98
|
if (!column_groupby_column_key) {
|
|
106
99
|
return this.oneDimensionStatisticTable2sql(chart, condition);
|
|
107
100
|
}
|
|
@@ -120,7 +113,7 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
120
113
|
summary_columns_option
|
|
121
114
|
} = chart;
|
|
122
115
|
const table = this.getTableById(table_id);
|
|
123
|
-
const groupbyColumn =
|
|
116
|
+
const groupbyColumn = TableUtils.getTableColumnByKey(table, groupby_column_key);
|
|
124
117
|
if (!groupbyColumn) return '';
|
|
125
118
|
const {
|
|
126
119
|
name: sqlGroupbyColumnName,
|
|
@@ -130,7 +123,7 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
130
123
|
geolocationGranularity: groupby_geolocation_granularity
|
|
131
124
|
});
|
|
132
125
|
let tableName = "`".concat(table.name, "`");
|
|
133
|
-
if (summary_type ===
|
|
126
|
+
if (summary_type === SUMMARY_TYPE.COUNT) {
|
|
134
127
|
const {
|
|
135
128
|
name: sqlSummaryColumnName,
|
|
136
129
|
key: sqlSummaryColumnKey
|
|
@@ -146,8 +139,8 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
146
139
|
let summaries = [];
|
|
147
140
|
let summaryColumnOptions = [];
|
|
148
141
|
const summaryMethod = summary_method;
|
|
149
|
-
const summaryColumn =
|
|
150
|
-
if (summaryColumn && (
|
|
142
|
+
const summaryColumn = TableUtils.getTableColumnByKey(table, summary_column_key);
|
|
143
|
+
if (summaryColumn && (isNumericColumn(summaryColumn) || isDateColumn(summaryColumn))) {
|
|
151
144
|
const {
|
|
152
145
|
name: sqlSummaryMethodColumnName,
|
|
153
146
|
key: sqlSummaryMethodColumnKey
|
|
@@ -164,9 +157,9 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
164
157
|
key,
|
|
165
158
|
method
|
|
166
159
|
} = option;
|
|
167
|
-
const summaryColumn =
|
|
160
|
+
const summaryColumn = TableUtils.getTableColumnByKey(table, key);
|
|
168
161
|
const summaryMethod = method;
|
|
169
|
-
if (summaryColumn && (
|
|
162
|
+
if (summaryColumn && (isNumericColumn(summaryColumn) || isDateColumn(summaryColumn))) {
|
|
170
163
|
const {
|
|
171
164
|
name: sqlSummaryMethodColumnName,
|
|
172
165
|
key: sqlSummaryMethodColumnKey
|
|
@@ -192,7 +185,7 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
192
185
|
const validStatisticNumericColumnKeys = [...new Set(statisticNumericColumnKeys)];
|
|
193
186
|
let sqlNumericColumns = [];
|
|
194
187
|
let summaries = [];
|
|
195
|
-
validStatisticNumericColumnKeys.map(key =>
|
|
188
|
+
validStatisticNumericColumnKeys.map(key => TableUtils.getTableColumnByKey(table, key)).filter(column => column && (isDateColumn(column) || isNumericColumn(column))).forEach(column => {
|
|
196
189
|
const {
|
|
197
190
|
name: sqlNumericColumn,
|
|
198
191
|
key: sqlNumericColumnKey
|
|
@@ -229,9 +222,9 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
229
222
|
} = chart;
|
|
230
223
|
const table = this.getTableById(table_id);
|
|
231
224
|
let tableName = "`".concat(table.name, "`");
|
|
232
|
-
const columnGroupbyColumn =
|
|
225
|
+
const columnGroupbyColumn = TableUtils.getTableColumnByKey(table, column_groupby_column_key);
|
|
233
226
|
if (!columnGroupbyColumn) return this.oneDimensionStatisticTable2sql(chart, table, tableName, condition);
|
|
234
|
-
const groupbyColumn =
|
|
227
|
+
const groupbyColumn = TableUtils.getTableColumnByKey(table, groupby_column_key);
|
|
235
228
|
if (!groupbyColumn) return '';
|
|
236
229
|
const {
|
|
237
230
|
name: sqlGroupbyColumnName,
|
|
@@ -249,7 +242,7 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
249
242
|
});
|
|
250
243
|
let sqlSummaryColumnName;
|
|
251
244
|
let sqlSummaryColumnKey;
|
|
252
|
-
if (summary_type ===
|
|
245
|
+
if (summary_type === SUMMARY_TYPE.COUNT) {
|
|
253
246
|
const {
|
|
254
247
|
name,
|
|
255
248
|
key
|
|
@@ -258,7 +251,7 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
258
251
|
sqlSummaryColumnKey = key;
|
|
259
252
|
} else {
|
|
260
253
|
const summaryMethod = summary_method;
|
|
261
|
-
const summaryColumn =
|
|
254
|
+
const summaryColumn = TableUtils.getTableColumnByKey(table, summary_column_key) || {};
|
|
262
255
|
const {
|
|
263
256
|
name,
|
|
264
257
|
key
|
|
@@ -267,7 +260,7 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
267
260
|
sqlSummaryColumnKey = key;
|
|
268
261
|
if (column_groupby_multiple_numeric_column && column_groupby_column_key) {
|
|
269
262
|
const sqlSummaryMultipleNumericColumnName = Array.isArray(summary_columns_option) ? summary_columns_option.forEach(item => {
|
|
270
|
-
const summaryColumn =
|
|
263
|
+
const summaryColumn = TableUtils.getTableColumnByKey(table, item.key) || {};
|
|
271
264
|
const {
|
|
272
265
|
name
|
|
273
266
|
} = this.summaryMethodColumn2SqlColumn(item.method, summaryColumn);
|
|
@@ -282,9 +275,9 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
282
275
|
key,
|
|
283
276
|
method
|
|
284
277
|
} = option;
|
|
285
|
-
const summaryColumn =
|
|
278
|
+
const summaryColumn = TableUtils.getTableColumnByKey(table, key);
|
|
286
279
|
const summaryMethod = method;
|
|
287
|
-
if (summaryColumn && (
|
|
280
|
+
if (summaryColumn && (isNumericColumn(summaryColumn) || isDateColumn(summaryColumn))) {
|
|
288
281
|
const {
|
|
289
282
|
name: sqlSummaryMethodColumnName
|
|
290
283
|
} = this.summaryMethodColumn2SqlColumn(summaryMethod, summaryColumn);
|
|
@@ -326,7 +319,7 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
326
319
|
} = chart;
|
|
327
320
|
let pivot_columns = [];
|
|
328
321
|
let pivot_rows = [];
|
|
329
|
-
const isCount = summary_type ===
|
|
322
|
+
const isCount = summary_type === SUMMARY_TYPE.COUNT;
|
|
330
323
|
if (isCount) {
|
|
331
324
|
const {
|
|
332
325
|
sqlGroupbyColumnKey,
|
|
@@ -396,9 +389,9 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
396
389
|
summaryColumn,
|
|
397
390
|
summaryMethod
|
|
398
391
|
}, allTotal[totalKey], value);
|
|
399
|
-
if (summaryColumn &&
|
|
392
|
+
if (summaryColumn && isDateColumn(summaryColumn)) {
|
|
400
393
|
rowTotal[totalKey] = value;
|
|
401
|
-
} else if (summaryColumn &&
|
|
394
|
+
} else if (summaryColumn && isNumericColumn(summaryColumn)) {
|
|
402
395
|
rowTotal[totalKey] = rowTotal[totalKey] + value;
|
|
403
396
|
}
|
|
404
397
|
});
|
|
@@ -461,7 +454,7 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
461
454
|
let pivot_columns = [];
|
|
462
455
|
let pivot_rows = [];
|
|
463
456
|
let pivot_columns_total = {};
|
|
464
|
-
const isRowGroupbyColumnDataAsAnArray = !!
|
|
457
|
+
const isRowGroupbyColumnDataAsAnArray = !!MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[columnGroupbyColumn.type];
|
|
465
458
|
sqlRows.forEach(row => {
|
|
466
459
|
const groupbyColumnCellValue = row[sqlGroupbyColumnKey];
|
|
467
460
|
const groupbyColumnOriginalLabel = this.getOriginalLabel(groupbyColumn, sqlGroupbyColumnKey, row, groupby_geolocation_granularity, groupby_date_granularity);
|
|
@@ -500,11 +493,11 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
500
493
|
key,
|
|
501
494
|
method
|
|
502
495
|
} = columnOption;
|
|
503
|
-
const column =
|
|
496
|
+
const column = TableUtils.getTableColumnByKey(selectedTable, columnOption.key);
|
|
504
497
|
const {
|
|
505
498
|
name
|
|
506
499
|
} = this.summaryMethodColumn2SqlColumn(columnOption.method, column, true);
|
|
507
|
-
if (column &&
|
|
500
|
+
if (column && isNumericColumn(column)) {
|
|
508
501
|
pivot_summary_multiple_columns.push({
|
|
509
502
|
key,
|
|
510
503
|
method,
|
|
@@ -535,9 +528,9 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
535
528
|
} = column;
|
|
536
529
|
const validColumnName = "`".concat(name, "`");
|
|
537
530
|
switch (type) {
|
|
538
|
-
case
|
|
539
|
-
case
|
|
540
|
-
case
|
|
531
|
+
case CellType.DATE:
|
|
532
|
+
case CellType.MTIME:
|
|
533
|
+
case CellType.CTIME:
|
|
541
534
|
{
|
|
542
535
|
const validDateGranularity = dateGranularity && dateGranularity.toUpperCase();
|
|
543
536
|
if (validDateGranularity === 'DAY') {
|
|
@@ -588,7 +581,7 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
588
581
|
key: sqlColumnName
|
|
589
582
|
};
|
|
590
583
|
}
|
|
591
|
-
case
|
|
584
|
+
case CellType.GEOLOCATION:
|
|
592
585
|
{
|
|
593
586
|
let sqlColumnName;
|
|
594
587
|
if (geolocationGranularity === 'province') {
|
|
@@ -618,37 +611,37 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
618
611
|
const columnName = column.name;
|
|
619
612
|
const isUseSingleQuote = useSingleQuote ? false : true;
|
|
620
613
|
return {
|
|
621
|
-
name:
|
|
622
|
-
key:
|
|
614
|
+
name: getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[summaryMethod], columnName, isUseSingleQuote),
|
|
615
|
+
key: getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[summaryMethod], columnName)
|
|
623
616
|
};
|
|
624
617
|
}
|
|
625
618
|
getOriginalLabel(groupColumn, groupName, statRow, groupby_date_granularity, groupby_geolocation_granularity) {
|
|
626
|
-
const isTimeColumn =
|
|
627
|
-
if (isTimeColumn || groupColumn.type ===
|
|
619
|
+
const isTimeColumn = TIME_COLUMN_LIST.includes(groupColumn.type);
|
|
620
|
+
if (isTimeColumn || groupColumn.type === CellType.GEOLOCATION) {
|
|
628
621
|
return statRow[groupName];
|
|
629
622
|
}
|
|
630
623
|
const currentGroupLabel = statRow[groupColumn.key];
|
|
631
|
-
return
|
|
624
|
+
return StatUtils.getGroupLabel(currentGroupLabel, statRow, groupColumn, groupby_date_granularity, groupby_geolocation_granularity, this.value);
|
|
632
625
|
}
|
|
633
626
|
getOriginalName(groupColumn, originalLabel) {
|
|
634
|
-
const isTimeColumn =
|
|
635
|
-
if (isTimeColumn || groupColumn.type ===
|
|
627
|
+
const isTimeColumn = TIME_COLUMN_LIST.includes(groupColumn.type);
|
|
628
|
+
if (isTimeColumn || groupColumn.type === CellType.GEOLOCATION) {
|
|
636
629
|
return originalLabel;
|
|
637
630
|
}
|
|
638
631
|
let {
|
|
639
632
|
type: columnType
|
|
640
633
|
} = groupColumn;
|
|
641
|
-
if (columnType ===
|
|
634
|
+
if (columnType === CellType.MULTIPLE_SELECT || columnType === CellType.COLLABORATOR) {
|
|
642
635
|
return Array.isArray(originalLabel) ? originalLabel[0] : null;
|
|
643
636
|
}
|
|
644
637
|
return originalLabel;
|
|
645
638
|
}
|
|
646
639
|
getLabel(groupColumn, originalLabel) {
|
|
647
|
-
const isTimeColumn =
|
|
648
|
-
if (isTimeColumn || groupColumn.type ===
|
|
640
|
+
const isTimeColumn = TIME_COLUMN_LIST.includes(groupColumn.type);
|
|
641
|
+
if (isTimeColumn || groupColumn.type === CellType.GEOLOCATION) {
|
|
649
642
|
return originalLabel;
|
|
650
643
|
}
|
|
651
|
-
return
|
|
644
|
+
return getFormattedLabel(groupColumn, originalLabel, this.value.collaborators);
|
|
652
645
|
}
|
|
653
646
|
initTotal(summaryMethod) {
|
|
654
647
|
if (summaryMethod === 'SUM' || summaryMethod === 'DISTINCT_VALUES') return 0;
|
|
@@ -659,31 +652,31 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
659
652
|
summaryMethod,
|
|
660
653
|
summaryColumn
|
|
661
654
|
} = _ref2;
|
|
662
|
-
if (summaryColumn &&
|
|
663
|
-
if (summaryMethod ===
|
|
655
|
+
if (summaryColumn && isDateColumn(summaryColumn)) {
|
|
656
|
+
if (summaryMethod === SUMMARY_METHOD_MAP.Max) {
|
|
664
657
|
if (currentValue && nextValue) {
|
|
665
|
-
return (
|
|
658
|
+
return dayjs(currentValue).isBefore(nextValue) ? nextValue : currentValue;
|
|
666
659
|
}
|
|
667
660
|
if (!currentValue && nextValue) {
|
|
668
661
|
return nextValue;
|
|
669
662
|
}
|
|
670
663
|
return currentValue;
|
|
671
664
|
}
|
|
672
|
-
if (summaryMethod ===
|
|
665
|
+
if (summaryMethod === SUMMARY_METHOD_MAP.Min) {
|
|
673
666
|
if (currentValue && nextValue) {
|
|
674
|
-
return (
|
|
667
|
+
return dayjs(currentValue).isBefore(nextValue) ? currentValue : nextValue;
|
|
675
668
|
}
|
|
676
669
|
if (!currentValue && nextValue) {
|
|
677
670
|
return nextValue;
|
|
678
671
|
}
|
|
679
672
|
return currentValue;
|
|
680
673
|
}
|
|
681
|
-
if (summaryMethod ===
|
|
674
|
+
if (summaryMethod === SUMMARY_METHOD_MAP.Distinct_values) {
|
|
682
675
|
return (currentValue - 0 || 0) + (nextValue - 0 || 0);
|
|
683
676
|
}
|
|
684
677
|
return currentValue;
|
|
685
678
|
}
|
|
686
|
-
if (summaryMethod ===
|
|
679
|
+
if (summaryMethod === SUMMARY_METHOD_MAP.Max || SUMMARY_METHOD_MAP.Min) {
|
|
687
680
|
if (currentValue === null && nextValue === null) return null;
|
|
688
681
|
if (currentValue === null) return nextValue;
|
|
689
682
|
if (nextValue === null) return currentValue;
|
|
@@ -832,4 +825,4 @@ class PivotTableCalculator extends _baseCalculator.default {
|
|
|
832
825
|
return pivot_table_total;
|
|
833
826
|
}
|
|
834
827
|
}
|
|
835
|
-
|
|
828
|
+
export default PivotTableCalculator;
|
|
@@ -1,16 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _dtableStore = require("dtable-store");
|
|
9
|
-
var _baseCalculator = _interopRequireDefault(require("./base-calculator"));
|
|
10
|
-
var _rowUtils = require("../utils/row-utils");
|
|
11
|
-
var _statUtils = _interopRequireDefault(require("../utils/stat-utils"));
|
|
12
|
-
var _constants = require("../constants");
|
|
13
|
-
class ScatterCalculator extends _baseCalculator.default {
|
|
1
|
+
import { filter2SqlCondition, TableUtils } from 'dtable-store';
|
|
2
|
+
import BaseCalculator from './base-calculator';
|
|
3
|
+
import { getFormattedLabel } from '../utils/row-utils';
|
|
4
|
+
import StatUtils from '../utils/stat-utils';
|
|
5
|
+
import { DATE_GRANULARITY } from '../constants';
|
|
6
|
+
class ScatterCalculator extends BaseCalculator {
|
|
14
7
|
constructor(_ref) {
|
|
15
8
|
let {
|
|
16
9
|
value,
|
|
@@ -36,7 +29,7 @@ class ScatterCalculator extends _baseCalculator.default {
|
|
|
36
29
|
group_column
|
|
37
30
|
} = chart;
|
|
38
31
|
const table = this.getTableById(table_id);
|
|
39
|
-
if (!
|
|
32
|
+
if (!TableUtils.getTableColumnByKey(table, x_axis_column) || !TableUtils.getTableColumnByKey(table, y_axis_column) || !TableUtils.getTableColumnByKey(table, group_column)) {
|
|
40
33
|
return false;
|
|
41
34
|
}
|
|
42
35
|
return true;
|
|
@@ -58,10 +51,10 @@ class ScatterCalculator extends _baseCalculator.default {
|
|
|
58
51
|
} = chart;
|
|
59
52
|
const selectedTable = this.getTableById(table_id);
|
|
60
53
|
const selectedView = this.getViewById(view_id, selectedTable);
|
|
61
|
-
const selectedXAxisColumn =
|
|
62
|
-
const selectedYAxisColumn =
|
|
63
|
-
const selectedGroupColumn =
|
|
64
|
-
const sqlCondition =
|
|
54
|
+
const selectedXAxisColumn = TableUtils.getTableColumnByKey(selectedTable, x_axis_column);
|
|
55
|
+
const selectedYAxisColumn = TableUtils.getTableColumnByKey(selectedTable, y_axis_column);
|
|
56
|
+
const selectedGroupColumn = TableUtils.getTableColumnByKey(selectedTable, group_column);
|
|
57
|
+
const sqlCondition = filter2SqlCondition(selectedTable, selectedView);
|
|
65
58
|
const sqlString = "select `".concat(selectedXAxisColumn.name, "`, `").concat(selectedYAxisColumn.name, "`, `").concat(selectedGroupColumn.name, "` from `").concat(selectedTable.name, "` ").concat(sqlCondition, " limit 5000");
|
|
66
59
|
const result = await this.sqlQuery(sqlString);
|
|
67
60
|
if (result.status === 200 && result.data.success) {
|
|
@@ -82,8 +75,8 @@ class ScatterCalculator extends _baseCalculator.default {
|
|
|
82
75
|
}
|
|
83
76
|
getColumnValue(data, column) {
|
|
84
77
|
const tempValue = data[column.key];
|
|
85
|
-
const value =
|
|
86
|
-
return
|
|
78
|
+
const value = StatUtils.getGroupLabel(tempValue, data, column, DATE_GRANULARITY.DAY, '', this.value);
|
|
79
|
+
return getFormattedLabel(column, value, this.value.collaborators);
|
|
87
80
|
}
|
|
88
81
|
}
|
|
89
|
-
|
|
82
|
+
export default ScatterCalculator;
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
1
|
class ThreadManager {
|
|
8
2
|
constructor(threadCount) {
|
|
9
3
|
this.applyThread = async (id, workerConstructor) => {
|
|
@@ -54,4 +48,4 @@ class ThreadManager {
|
|
|
54
48
|
this.queue = [];
|
|
55
49
|
}
|
|
56
50
|
}
|
|
57
|
-
|
|
51
|
+
export default ThreadManager;
|