dtable-statistic 4.2.2 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/es/api/dtable-db-api.js +31 -37
  2. package/es/calculator/base-calculator.js +49 -99
  3. package/es/calculator/basic-chart-calculator.js +335 -559
  4. package/es/calculator/combination-calculator.js +231 -299
  5. package/es/calculator/compare-bar-calculator.js +184 -281
  6. package/es/calculator/completeness-calculator.js +203 -288
  7. package/es/calculator/copy-value.js +18 -18
  8. package/es/calculator/dashboard-calculator.js +68 -137
  9. package/es/calculator/heat-map-calculator.js +139 -220
  10. package/es/calculator/horizontal-bar-calculator.js +64 -93
  11. package/es/calculator/index.js +53 -69
  12. package/es/calculator/map-calculator.js +98 -174
  13. package/es/calculator/mirror-calculator.js +137 -216
  14. package/es/calculator/number-card-calculator.js +58 -126
  15. package/es/calculator/pivot-table-calculator.js +750 -792
  16. package/es/calculator/scatter-calculator.js +72 -140
  17. package/es/calculator/thread-manager.js +48 -67
  18. package/es/calculator/trend-calculator.js +107 -191
  19. package/es/calculator/workers/basic-chart-calculator-worker.js +194 -165
  20. package/es/calculator/workers/calculator.worker.js +22 -6
  21. package/es/calculator/workers/card-calculator-worker.js +16 -14
  22. package/es/calculator/workers/combination-calculator-worker.js +128 -135
  23. package/es/calculator/workers/compare-bar-chart-calculator-worker.js +80 -96
  24. package/es/calculator/workers/completeness-calculator-worker.js +56 -49
  25. package/es/calculator/workers/dashboard-calculator-worker.js +24 -22
  26. package/es/calculator/workers/mirror-calculator-worker.js +52 -52
  27. package/es/calculator/workers/pivot-table-calculator-worker.js +247 -230
  28. package/es/calculator/workers/scatter-calculator-worker.js +34 -32
  29. package/es/calculator/workers/trend-calculator-worker.js +33 -29
  30. package/es/calculator/world-map-calculator.js +120 -197
  31. package/es/components/common-add-tool.js +7 -5
  32. package/es/components/dialog/chart-addition-edit-dialog.js +67 -77
  33. package/es/components/dialog/chart-addition-widgets/chart-selector.js +57 -67
  34. package/es/components/dialog/color-theme-dialog.js +34 -47
  35. package/es/components/dialog/delete-confirmation-dialog.js +7 -5
  36. package/es/components/dialog/enlarged-chart-dialog.js +68 -81
  37. package/es/components/dialog/new-table-dialog.js +62 -80
  38. package/es/components/dialog/new-view-dialog.js +50 -62
  39. package/es/components/dialog/rename-view-dialog.js +49 -58
  40. package/es/components/dialog/statistic-record-dialog/index.js +233 -231
  41. package/es/components/dialog/statistic-types-dialog/index.js +40 -49
  42. package/es/components/dialog/table-select-dialog.js +61 -70
  43. package/es/components/dropdown-menu/statistic-dropdown-menu.js +129 -142
  44. package/es/components/dtable-popover.js +62 -81
  45. package/es/components/dtable-search-input.js +89 -99
  46. package/es/components/dtable-select.js +55 -74
  47. package/es/components/icon.js +5 -3
  48. package/es/components/loading.js +1 -1
  49. package/es/components/modal-portal.js +15 -32
  50. package/es/components/popover/color-rules/color-rule.js +137 -141
  51. package/es/components/popover/color-rules/index.js +58 -66
  52. package/es/components/popover/color-rules/rule-filters/filter.js +124 -124
  53. package/es/components/popover/color-rules/rule-filters/index.js +50 -58
  54. package/es/components/popover/color-rules/rule-filters/number-input.js +42 -57
  55. package/es/components/popover/color-rules-popover.js +117 -121
  56. package/es/components/popover/color-selector-popover.js +60 -70
  57. package/es/components/seatable-radio/index.js +2 -2
  58. package/es/components/select/option-group.js +139 -157
  59. package/es/components/select/option.js +26 -40
  60. package/es/components/select/select.js +97 -112
  61. package/es/components/toast/alert.js +65 -80
  62. package/es/components/toast/index.js +1 -1
  63. package/es/components/toast/toast.js +76 -103
  64. package/es/components/toast/toastManager.js +57 -93
  65. package/es/components/toast/toaster.js +58 -56
  66. package/es/constants/color-rules.js +8 -5
  67. package/es/constants/dtable-select-style.js +44 -48
  68. package/es/constants/event-types.js +4 -4
  69. package/es/constants/index.js +328 -242
  70. package/es/constants/map.js +2 -2
  71. package/es/constants/model.js +20 -20
  72. package/es/constants/regions.js +1 -1
  73. package/es/constants/zIndexes.js +1 -1
  74. package/es/custom-g2.js +11 -11
  75. package/es/dashboard.js +343 -333
  76. package/es/desktop-dashboard.js +217 -224
  77. package/es/index.js +45 -58
  78. package/es/locale/index.js +3 -3
  79. package/es/locale/lang/de.js +1 -1
  80. package/es/locale/lang/en.js +7 -7
  81. package/es/locale/lang/fr.js +1 -1
  82. package/es/locale/lang/zh_CN.js +1 -1
  83. package/es/mobile-dashboard.js +76 -89
  84. package/es/model/bar-group.js +34 -44
  85. package/es/model/bar.js +26 -36
  86. package/es/model/base-model.js +11 -12
  87. package/es/model/basic-number-card.js +10 -20
  88. package/es/model/collaborators.js +10 -11
  89. package/es/model/combination.js +32 -42
  90. package/es/model/compare-bar.js +30 -40
  91. package/es/model/completeness-group.js +19 -29
  92. package/es/model/completeness.js +14 -24
  93. package/es/model/custom-bar.js +14 -24
  94. package/es/model/dashboard.js +9 -19
  95. package/es/model/generic-model.js +187 -197
  96. package/es/model/heat-map.js +16 -26
  97. package/es/model/horizontal-bar-group.js +32 -42
  98. package/es/model/horizontal-bar.js +26 -36
  99. package/es/model/index.js +31 -3
  100. package/es/model/map.js +20 -30
  101. package/es/model/mirror.js +15 -25
  102. package/es/model/pie.js +21 -31
  103. package/es/model/ring.js +23 -33
  104. package/es/model/scatter.js +11 -21
  105. package/es/model/statistic-dashboard.js +7 -8
  106. package/es/model/table.js +19 -29
  107. package/es/model/trend.js +15 -25
  108. package/es/model/world-map.js +17 -27
  109. package/es/service/chart-service.js +69 -65
  110. package/es/service/dashboard-service.js +421 -419
  111. package/es/service/map-json.js +112 -132
  112. package/es/stat-editor/chart-name-editor.js +44 -58
  113. package/es/stat-editor/index.js +59 -70
  114. package/es/stat-editor/stat-settings/advance-chart-settings/basic-number-card-settings.js +93 -98
  115. package/es/stat-editor/stat-settings/advance-chart-settings/combination-settings.js +246 -248
  116. package/es/stat-editor/stat-settings/advance-chart-settings/dashboard-chart-settings.js +127 -126
  117. package/es/stat-editor/stat-settings/advance-chart-settings/geo-granularity-settings.js +5 -3
  118. package/es/stat-editor/stat-settings/advance-chart-settings/heat-map-settings.js +78 -90
  119. package/es/stat-editor/stat-settings/advance-chart-settings/index.js +146 -150
  120. package/es/stat-editor/stat-settings/advance-chart-settings/map-settings.js +88 -98
  121. package/es/stat-editor/stat-settings/advance-chart-settings/mirror-settings.js +100 -118
  122. package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/combination-style-setting.js +161 -148
  123. package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/heat-map-settings.js +58 -66
  124. package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/map-setting.js +58 -60
  125. package/es/stat-editor/stat-settings/advance-chart-settings/summary-settings.js +152 -148
  126. package/es/stat-editor/stat-settings/advance-chart-settings/trend-chart-settings.js +101 -105
  127. package/es/stat-editor/stat-settings/advance-chart-settings/world-map-settings.js +81 -91
  128. package/es/stat-editor/stat-settings/basic-chart-settings/advance-bar-chart-settings.js +110 -122
  129. package/es/stat-editor/stat-settings/basic-chart-settings/bar-settings.js +101 -113
  130. package/es/stat-editor/stat-settings/basic-chart-settings/completeness-chart-settings.js +130 -120
  131. package/es/stat-editor/stat-settings/basic-chart-settings/custom-bar-settings.js +88 -102
  132. package/es/stat-editor/stat-settings/basic-chart-settings/groupby-settings.js +88 -102
  133. package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-axis-group-settings.js +200 -194
  134. package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-bar-settings.js +98 -110
  135. package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-group-chart-settings.js +106 -118
  136. package/es/stat-editor/stat-settings/basic-chart-settings/index.js +212 -223
  137. package/es/stat-editor/stat-settings/basic-chart-settings/pie-settings.js +109 -119
  138. package/es/stat-editor/stat-settings/basic-chart-settings/pivot-table-settings.js +329 -319
  139. package/es/stat-editor/stat-settings/basic-chart-settings/scatter-settings.js +82 -90
  140. package/es/stat-editor/stat-settings/basic-chart-settings/stack-item-settings.js +58 -65
  141. package/es/stat-editor/stat-settings/basic-chart-settings/stacks-settings.js +126 -116
  142. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/bar-chart-style-setting.js +201 -182
  143. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/completeness-style.js +79 -79
  144. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/horizontal-bar-chart-style.js +196 -175
  145. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/label-font-size-editor.js +35 -50
  146. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/pie-chart-style-settings.js +180 -147
  147. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/time-compare-style.js +31 -40
  148. package/es/stat-editor/stat-settings/basic-chart-settings/summary-method-setting.js +56 -67
  149. package/es/stat-editor/stat-settings/basic-chart-settings/summary-settings.js +60 -69
  150. package/es/stat-editor/stat-settings/basic-chart-settings/time-comparison-settings.js +165 -158
  151. package/es/stat-editor/stat-settings/basic-chart-settings/timer-picker.js +61 -74
  152. package/es/stat-editor/stat-settings/basic-chart-settings/y-axis-group-settings.js +199 -193
  153. package/es/stat-editor/stat-settings/color-setting/color-group-selector.js +25 -38
  154. package/es/stat-editor/stat-settings/color-setting/color-picker.js +79 -86
  155. package/es/stat-editor/stat-settings/color-setting/color-use-type-selector.js +138 -120
  156. package/es/stat-editor/stat-settings/map/map-level.js +31 -43
  157. package/es/stat-editor/stat-settings/map/map-province-city.js +82 -83
  158. package/es/stat-editor/stat-settings/public-setting/axis-label-position-setting.js +48 -50
  159. package/es/stat-editor/stat-settings/public-setting/base-settings.js +96 -96
  160. package/es/stat-editor/stat-settings/public-setting/calender.js +69 -75
  161. package/es/stat-editor/stat-settings/public-setting/column-settings.js +5 -3
  162. package/es/stat-editor/stat-settings/public-setting/custom-title-setting.js +36 -41
  163. package/es/stat-editor/stat-settings/public-setting/data-sort-setting.js +37 -41
  164. package/es/stat-editor/stat-settings/public-setting/ind-toggle-setting.js +25 -38
  165. package/es/stat-editor/stat-settings/public-setting/min-max-setting.js +40 -52
  166. package/es/stat-editor/stat-settings/public-setting/numeric-summary-item.js +90 -93
  167. package/es/stat-editor/stat-settings/public-setting/toggle-setting.js +23 -36
  168. package/es/stat-editor/stat-settings/public-setting/type-settings/index.js +39 -44
  169. package/es/stat-list/chart-preview.js +85 -98
  170. package/es/stat-list/index.js +170 -178
  171. package/es/stat-view/area-chart.js +282 -274
  172. package/es/stat-view/bar-chart.js +300 -292
  173. package/es/stat-view/base-chart.js +58 -52
  174. package/es/stat-view/basic-number-card.js +115 -168
  175. package/es/stat-view/combination-chart.js +298 -334
  176. package/es/stat-view/compare-chart.js +256 -254
  177. package/es/stat-view/completeness-chart.js +194 -206
  178. package/es/stat-view/custom-bar.js +221 -223
  179. package/es/stat-view/dashboard-chart.js +122 -180
  180. package/es/stat-view/heat-map.js +268 -294
  181. package/es/stat-view/horizontal-bar-chart.js +291 -281
  182. package/es/stat-view/index.js +136 -152
  183. package/es/stat-view/line-chart.js +267 -265
  184. package/es/stat-view/map.js +246 -246
  185. package/es/stat-view/mirror.js +141 -152
  186. package/es/stat-view/pie-chart.js +143 -156
  187. package/es/stat-view/pivot-table/index.js +113 -118
  188. package/es/stat-view/pivot-table/one-dimension-table-no-numeric-columns.js +104 -102
  189. package/es/stat-view/pivot-table/one-dimension-table-with-numeric-columns.js +116 -118
  190. package/es/stat-view/pivot-table/pivot-table-display-name.js +96 -95
  191. package/es/stat-view/pivot-table/two-dimension-table.js +238 -229
  192. package/es/stat-view/ring-chart.js +189 -200
  193. package/es/stat-view/scatter-chart.js +162 -213
  194. package/es/stat-view/treemap-chart.js +136 -200
  195. package/es/stat-view/trend-chart.js +137 -183
  196. package/es/stat-view/world-map.js +233 -243
  197. package/es/tabs/index.js +164 -169
  198. package/es/tabs/tab.js +101 -116
  199. package/es/utils/basic-chart-utils.js +7 -9
  200. package/es/utils/cell-format.js +48 -51
  201. package/es/utils/cell-value.js +1 -1
  202. package/es/utils/collaborator.js +15 -14
  203. package/es/utils/color-utils.js +48 -37
  204. package/es/utils/column-utils.js +47 -33
  205. package/es/utils/column.js +1 -1
  206. package/es/utils/common-utils.js +111 -117
  207. package/es/utils/date-format.js +17 -17
  208. package/es/utils/export-table-utils.js +507 -396
  209. package/es/utils/index.js +6 -6
  210. package/es/utils/map.js +30 -34
  211. package/es/utils/model.js +3 -5
  212. package/es/utils/object.js +4 -4
  213. package/es/utils/pivot-table.js +20 -20
  214. package/es/utils/row-utils.js +41 -33
  215. package/es/utils/search.js +18 -20
  216. package/es/utils/sql-utils.js +132 -98
  217. package/es/utils/stat-utils.js +303 -320
  218. package/es/utils/trend-utils.js +57 -67
  219. package/package.json +2 -2
@@ -1,9 +1,3 @@
1
- import _regeneratorRuntime from "@babel/runtime/regenerator";
2
- import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
3
- import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
4
- import _createClass from "@babel/runtime/helpers/esm/createClass";
5
- import _inherits from "@babel/runtime/helpers/esm/inherits";
6
- import _createSuper from "@babel/runtime/helpers/esm/createSuper";
7
1
  import { CellType, filter2SqlCondition, TableUtils } from 'dtable-store';
8
2
  import BaseCalculator from './base-calculator';
9
3
  import StatUtils from '../utils/stat-utils';
@@ -11,311 +5,249 @@ import { getSummaryColumnMethod, formatNumericValue } from '../utils/common-util
11
5
  import { getFormattedLabel } from '../utils/row-utils';
12
6
  import { getSqlGroup } from '../utils/sql-utils';
13
7
  import { DTABLE_DB_SUMMARY_METHOD, LABEL_COLORS, SUMMARY_TYPE, TIME_COLUMN_LIST } from '../constants';
14
- var CombinationCalculator = /*#__PURE__*/function (_BaseCalculator) {
15
- _inherits(CombinationCalculator, _BaseCalculator);
16
- var _super = _createSuper(CombinationCalculator);
17
- function CombinationCalculator(_ref) {
18
- var _this;
19
- var value = _ref.value,
20
- statisticThreadManager = _ref.statisticThreadManager,
21
- username = _ref.username,
22
- userId = _ref.userId;
23
- _classCallCheck(this, CombinationCalculator);
24
- _this = _super.call(this, {
25
- value: value,
26
- statisticThreadManager: statisticThreadManager,
27
- username: username,
28
- userId: userId
8
+ class CombinationCalculator extends BaseCalculator {
9
+ constructor(_ref) {
10
+ let {
11
+ value,
12
+ statisticThreadManager,
13
+ username,
14
+ userId
15
+ } = _ref;
16
+ super({
17
+ value,
18
+ statisticThreadManager,
19
+ username,
20
+ userId
29
21
  });
30
- _this.isEmptyLabel = function (label) {
22
+ this.isEmptyLabel = label => {
31
23
  return !label;
32
24
  };
33
- return _this;
34
25
  }
35
- _createClass(CombinationCalculator, [{
36
- key: "isValidChart",
37
- value: function isValidChart(chart) {
38
- if (!this.validateBaseConfigs(chart)) {
39
- return false;
40
- }
41
- var table_id = chart.table_id,
42
- x_axis_column_key = chart.x_axis_column_key,
43
- y_axis_left_summary_column = chart.y_axis_left_summary_column,
44
- y_axis_right_summary_column = chart.y_axis_right_summary_column,
45
- y_axis_left_summary_method = chart.y_axis_left_summary_method,
46
- y_axis_right_summary_method = chart.y_axis_right_summary_method,
47
- y_axis_right_summary_type = chart.y_axis_right_summary_type,
48
- y_axis_left_summary_type = chart.y_axis_left_summary_type;
49
- var table = this.getTableById(table_id);
50
- if (x_axis_column_key && !TableUtils.getTableColumnByKey(table, x_axis_column_key)) {
51
- return false;
52
- }
53
- if (!y_axis_left_summary_type || !y_axis_right_summary_type) return false;
54
- if (y_axis_left_summary_type === SUMMARY_TYPE.ADVANCED && y_axis_left_summary_method && !TableUtils.getTableColumnByKey(table, y_axis_left_summary_column)) {
55
- return false;
56
- }
57
- if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED && y_axis_right_summary_method && !TableUtils.getTableColumnByKey(table, y_axis_right_summary_column)) {
58
- return false;
59
- }
60
- return true;
26
+ isValidChart(chart) {
27
+ if (!this.validateBaseConfigs(chart)) {
28
+ return false;
61
29
  }
62
- }, {
63
- key: "calculate",
64
- value: function () {
65
- var _calculate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(chart) {
66
- return _regeneratorRuntime.wrap(function _callee$(_context) {
67
- while (1) {
68
- switch (_context.prev = _context.next) {
69
- case 0:
70
- if (this.isValidChart(chart)) {
71
- _context.next = 2;
72
- break;
73
- }
74
- return _context.abrupt("return", []);
75
- case 2:
76
- if (!this.isCalcByQueryDB(chart)) {
77
- _context.next = 6;
78
- break;
79
- }
80
- _context.next = 5;
81
- return this.queryDb(chart);
82
- case 5:
83
- return _context.abrupt("return", _context.sent);
84
- case 6:
85
- _context.next = 8;
86
- return this.calculateWithWorker(chart);
87
- case 8:
88
- return _context.abrupt("return", _context.sent);
89
- case 9:
90
- case "end":
91
- return _context.stop();
92
- }
30
+ const {
31
+ table_id,
32
+ x_axis_column_key,
33
+ y_axis_left_summary_column,
34
+ y_axis_right_summary_column,
35
+ y_axis_left_summary_method,
36
+ y_axis_right_summary_method,
37
+ y_axis_right_summary_type,
38
+ y_axis_left_summary_type
39
+ } = chart;
40
+ const table = this.getTableById(table_id);
41
+ if (x_axis_column_key && !TableUtils.getTableColumnByKey(table, x_axis_column_key)) {
42
+ return false;
43
+ }
44
+ if (!y_axis_left_summary_type || !y_axis_right_summary_type) return false;
45
+ if (y_axis_left_summary_type === SUMMARY_TYPE.ADVANCED && y_axis_left_summary_method && !TableUtils.getTableColumnByKey(table, y_axis_left_summary_column)) {
46
+ return false;
47
+ }
48
+ if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED && y_axis_right_summary_method && !TableUtils.getTableColumnByKey(table, y_axis_right_summary_column)) {
49
+ return false;
50
+ }
51
+ return true;
52
+ }
53
+ async calculate(chart) {
54
+ if (!this.isValidChart(chart)) return [];
55
+ if (this.isCalcByQueryDB(chart)) {
56
+ return await this.queryDb(chart);
57
+ }
58
+ return await this.calculateWithWorker(chart);
59
+ }
60
+ async queryDb(chart) {
61
+ const {
62
+ table_id,
63
+ x_axis_column_key,
64
+ x_axis_include_empty,
65
+ x_axis_date_granularity: groupby_date_granularity,
66
+ x_axis_geolocation_granularity: groupby_geolocation_granularity,
67
+ y_axis_left_summary_type,
68
+ y_axis_right_summary_type,
69
+ y_axis_right_summary_method,
70
+ y_axis_left_summary_method,
71
+ y_axis_left_summary_column,
72
+ y_axis_right_summary_column,
73
+ y_axis_left_group_by_multiple_numeric_column,
74
+ y_axis_left_group_by_numeric_columns
75
+ } = chart;
76
+ const selectedTable = this.getTableById(table_id);
77
+ const selectedColumn = TableUtils.getTableColumnByKey(selectedTable, x_axis_column_key);
78
+ if (!selectedColumn) return [];
79
+ let groupName = "`".concat(selectedColumn.name, "`");
80
+ if (TIME_COLUMN_LIST.includes(selectedColumn.type)) {
81
+ groupName = getSqlGroup(groupby_date_granularity, selectedColumn);
82
+ } else if (selectedColumn.type === CellType.GEOLOCATION) {
83
+ groupName = getSqlGroup(groupby_geolocation_granularity, selectedColumn);
84
+ }
85
+ let sqlString = this.getSqlString(chart, groupName);
86
+ const result = await this.sqlQuery(sqlString);
87
+ if (result.status !== 200 || !result.data.success) return [];
88
+ const newResult = [];
89
+ if (result.status === 200 && result.data.success) {
90
+ const results = result.data || {};
91
+ const data = results.results;
92
+ if (!data) return [];
93
+ if (!y_axis_left_group_by_multiple_numeric_column) {
94
+ let value1Key = "COUNT(".concat(selectedColumn.name, ")");
95
+ let leftSummaryColumn, rightSummaryColumn;
96
+ if (y_axis_left_summary_type === SUMMARY_TYPE.ADVANCED) {
97
+ leftSummaryColumn = TableUtils.getTableColumnByKey(selectedTable, y_axis_left_summary_column);
98
+ value1Key = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[y_axis_left_summary_method], leftSummaryColumn.name);
99
+ }
100
+ let value2Key = "COUNT(".concat(selectedColumn.name, ")");
101
+ if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED) {
102
+ rightSummaryColumn = TableUtils.getTableColumnByKey(selectedTable, y_axis_right_summary_column);
103
+ value2Key = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[y_axis_right_summary_method], rightSummaryColumn.name);
104
+ }
105
+ data.forEach(item => {
106
+ let label = this.getLabel(selectedColumn, groupName, item, groupby_date_granularity, groupby_geolocation_granularity);
107
+ let value1 = item[value1Key] || 0;
108
+ let value2 = item[value2Key] || 0;
109
+ let formattedValueLeft = value1;
110
+ let formattedValueRight = value2;
111
+ if (y_axis_left_summary_type === SUMMARY_TYPE.ADVANCED) {
112
+ value1 = formatNumericValue(value1, leftSummaryColumn);
113
+ formattedValueLeft = StatUtils.getFormattedValue(value1, leftSummaryColumn, y_axis_left_summary_method);
93
114
  }
94
- }, _callee, this);
95
- }));
96
- function calculate(_x) {
97
- return _calculate.apply(this, arguments);
98
- }
99
- return calculate;
100
- }()
101
- }, {
102
- key: "queryDb",
103
- value: function () {
104
- var _queryDb = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(chart) {
105
- var _this2 = this;
106
- var table_id, x_axis_column_key, x_axis_include_empty, groupby_date_granularity, groupby_geolocation_granularity, y_axis_left_summary_type, y_axis_right_summary_type, y_axis_right_summary_method, y_axis_left_summary_method, y_axis_left_summary_column, y_axis_right_summary_column, y_axis_left_group_by_multiple_numeric_column, y_axis_left_group_by_numeric_columns, selectedTable, selectedColumn, groupName, sqlString, result, newResult, results, data, value1Key, leftSummaryColumn, rightSummaryColumn, value2Key, _rightSummaryColumn, _value2Key, groupItems, summaries, _leftSummaryColumn, groupItem;
107
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
108
- while (1) {
109
- switch (_context2.prev = _context2.next) {
110
- case 0:
111
- table_id = chart.table_id, x_axis_column_key = chart.x_axis_column_key, x_axis_include_empty = chart.x_axis_include_empty, groupby_date_granularity = chart.x_axis_date_granularity, groupby_geolocation_granularity = chart.x_axis_geolocation_granularity, y_axis_left_summary_type = chart.y_axis_left_summary_type, y_axis_right_summary_type = chart.y_axis_right_summary_type, y_axis_right_summary_method = chart.y_axis_right_summary_method, y_axis_left_summary_method = chart.y_axis_left_summary_method, y_axis_left_summary_column = chart.y_axis_left_summary_column, y_axis_right_summary_column = chart.y_axis_right_summary_column, y_axis_left_group_by_multiple_numeric_column = chart.y_axis_left_group_by_multiple_numeric_column, y_axis_left_group_by_numeric_columns = chart.y_axis_left_group_by_numeric_columns;
112
- selectedTable = this.getTableById(table_id);
113
- selectedColumn = TableUtils.getTableColumnByKey(selectedTable, x_axis_column_key);
114
- if (selectedColumn) {
115
- _context2.next = 5;
116
- break;
117
- }
118
- return _context2.abrupt("return", []);
119
- case 5:
120
- groupName = "`".concat(selectedColumn.name, "`");
121
- if (TIME_COLUMN_LIST.includes(selectedColumn.type)) {
122
- groupName = getSqlGroup(groupby_date_granularity, selectedColumn);
123
- } else if (selectedColumn.type === CellType.GEOLOCATION) {
124
- groupName = getSqlGroup(groupby_geolocation_granularity, selectedColumn);
125
- }
126
- sqlString = this.getSqlString(chart, groupName);
127
- _context2.next = 10;
128
- return this.sqlQuery(sqlString);
129
- case 10:
130
- result = _context2.sent;
131
- if (!(result.status !== 200 || !result.data.success)) {
132
- _context2.next = 13;
133
- break;
134
- }
135
- return _context2.abrupt("return", []);
136
- case 13:
137
- newResult = [];
138
- if (!(result.status === 200 && result.data.success)) {
139
- _context2.next = 20;
140
- break;
141
- }
142
- results = result.data || {};
143
- data = results.results;
144
- if (data) {
145
- _context2.next = 19;
146
- break;
147
- }
148
- return _context2.abrupt("return", []);
149
- case 19:
150
- if (!y_axis_left_group_by_multiple_numeric_column) {
151
- value1Key = "COUNT(".concat(selectedColumn.name, ")");
152
- if (y_axis_left_summary_type === SUMMARY_TYPE.ADVANCED) {
153
- leftSummaryColumn = TableUtils.getTableColumnByKey(selectedTable, y_axis_left_summary_column);
154
- value1Key = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[y_axis_left_summary_method], leftSummaryColumn.name);
155
- }
156
- value2Key = "COUNT(".concat(selectedColumn.name, ")");
157
- if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED) {
158
- rightSummaryColumn = TableUtils.getTableColumnByKey(selectedTable, y_axis_right_summary_column);
159
- value2Key = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[y_axis_right_summary_method], rightSummaryColumn.name);
160
- }
161
- data.forEach(function (item) {
162
- var label = _this2.getLabel(selectedColumn, groupName, item, groupby_date_granularity, groupby_geolocation_granularity);
163
- var value1 = item[value1Key] || 0;
164
- var value2 = item[value2Key] || 0;
165
- var formattedValueLeft = value1;
166
- var formattedValueRight = value2;
167
- if (y_axis_left_summary_type === SUMMARY_TYPE.ADVANCED) {
168
- value1 = formatNumericValue(value1, leftSummaryColumn);
169
- formattedValueLeft = StatUtils.getFormattedValue(value1, leftSummaryColumn, y_axis_left_summary_method);
170
- }
171
- if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED) {
172
- value2 = formatNumericValue(value2, rightSummaryColumn);
173
- formattedValueRight = StatUtils.getFormattedValue(value2, rightSummaryColumn, y_axis_right_summary_method);
174
- }
175
- if (!_this2.isEmptyLabel(label) || x_axis_include_empty) {
176
- newResult.push({
177
- name: label,
178
- value_left: value1,
179
- value_right: value2,
180
- formatted_value_left: formattedValueLeft,
181
- formatted_value_right: formattedValueRight,
182
- original_name: item[selectedColumn.key]
183
- });
184
- }
185
- });
186
- } else {
187
- _value2Key = "COUNT(".concat(selectedColumn.name, ")");
188
- if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED) {
189
- _rightSummaryColumn = TableUtils.getTableColumnByKey(selectedTable, y_axis_right_summary_column);
190
- _value2Key = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[y_axis_right_summary_method], _rightSummaryColumn.name);
191
- }
192
- groupItems = [];
193
- summaries = [];
194
- _leftSummaryColumn = TableUtils.getTableColumnByKey(selectedTable, y_axis_left_summary_column);
195
- groupItem = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[y_axis_left_summary_method], _leftSummaryColumn.name);
196
- if (_leftSummaryColumn && !groupItems.includes(groupItem)) {
197
- groupItems.push(groupItem);
198
- summaries.push({
199
- column: _leftSummaryColumn,
200
- method: y_axis_left_summary_method
201
- });
202
- }
203
- y_axis_left_group_by_numeric_columns.forEach(function (item, index) {
204
- var column = TableUtils.getTableColumnByKey(selectedTable, item.column_key);
205
- if (column) {
206
- var method = item.summary_method;
207
- var _groupItem = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[method], column.name);
208
- if (!groupItems.includes(_groupItem)) {
209
- groupItems.push(_groupItem);
210
- summaries.push({
211
- column: column,
212
- method: method
213
- });
214
- }
215
- }
216
- });
217
- data.forEach(function (item, index) {
218
- var label = _this2.getLabel(selectedColumn, groupName, item, groupby_date_granularity, groupby_geolocation_granularity);
219
- var value2 = item[_value2Key] || 0;
220
- var formattedValueRight = value2;
221
- if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED) {
222
- value2 = formatNumericValue(value2, _rightSummaryColumn);
223
- formattedValueRight = StatUtils.getFormattedValue(value2, _rightSummaryColumn, y_axis_right_summary_method);
224
- }
225
- groupItems.forEach(function (groupItem, index) {
226
- if (!_this2.isEmptyLabel(label) || x_axis_include_empty) {
227
- var summary = summaries[index];
228
- var method = summary.method,
229
- column = summary.column;
230
- var value = formatNumericValue(item[groupItems[index]] || 0, column);
231
- var formattedValueLeft = StatUtils.getFormattedValue(value, column, method);
232
- newResult.push({
233
- name: label,
234
- value_left: value,
235
- value_right: value2,
236
- formatted_value_left: formattedValueLeft,
237
- formatted_value_right: formattedValueRight,
238
- color: LABEL_COLORS[index % 12],
239
- original_name: item[selectedColumn.key]
240
- });
241
- }
242
- });
243
- });
244
- }
245
- case 20:
246
- return _context2.abrupt("return", newResult);
247
- case 21:
248
- case "end":
249
- return _context2.stop();
115
+ if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED) {
116
+ value2 = formatNumericValue(value2, rightSummaryColumn);
117
+ formattedValueRight = StatUtils.getFormattedValue(value2, rightSummaryColumn, y_axis_right_summary_method);
118
+ }
119
+ if (!this.isEmptyLabel(label) || x_axis_include_empty) {
120
+ newResult.push({
121
+ name: label,
122
+ value_left: value1,
123
+ value_right: value2,
124
+ formatted_value_left: formattedValueLeft,
125
+ formatted_value_right: formattedValueRight,
126
+ original_name: item[selectedColumn.key]
127
+ });
128
+ }
129
+ });
130
+ } else {
131
+ let rightSummaryColumn;
132
+ let value2Key = "COUNT(".concat(selectedColumn.name, ")");
133
+ if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED) {
134
+ rightSummaryColumn = TableUtils.getTableColumnByKey(selectedTable, y_axis_right_summary_column);
135
+ value2Key = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[y_axis_right_summary_method], rightSummaryColumn.name);
136
+ }
137
+ const groupItems = [];
138
+ let summaries = [];
139
+ let leftSummaryColumn = TableUtils.getTableColumnByKey(selectedTable, y_axis_left_summary_column);
140
+ const groupItem = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[y_axis_left_summary_method], leftSummaryColumn.name);
141
+ if (leftSummaryColumn && !groupItems.includes(groupItem)) {
142
+ groupItems.push(groupItem);
143
+ summaries.push({
144
+ column: leftSummaryColumn,
145
+ method: y_axis_left_summary_method
146
+ });
147
+ }
148
+ y_axis_left_group_by_numeric_columns.forEach((item, index) => {
149
+ const column = TableUtils.getTableColumnByKey(selectedTable, item.column_key);
150
+ if (column) {
151
+ const method = item.summary_method;
152
+ const groupItem = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[method], column.name);
153
+ if (!groupItems.includes(groupItem)) {
154
+ groupItems.push(groupItem);
155
+ summaries.push({
156
+ column,
157
+ method
158
+ });
250
159
  }
251
160
  }
252
- }, _callee2, this);
253
- }));
254
- function queryDb(_x2) {
255
- return _queryDb.apply(this, arguments);
256
- }
257
- return queryDb;
258
- }()
259
- }, {
260
- key: "getSqlString",
261
- value: function getSqlString(chart, groupName) {
262
- var table_id = chart.table_id,
263
- view_id = chart.view_id,
264
- x_axis_column_key = chart.x_axis_column_key,
265
- y_axis_left_summary_type = chart.y_axis_left_summary_type,
266
- y_axis_right_summary_type = chart.y_axis_right_summary_type,
267
- y_axis_right_summary_method = chart.y_axis_right_summary_method,
268
- y_axis_left_summary_method = chart.y_axis_left_summary_method,
269
- y_axis_left_summary_column = chart.y_axis_left_summary_column,
270
- y_axis_right_summary_column = chart.y_axis_right_summary_column,
271
- y_axis_left_group_by_multiple_numeric_column = chart.y_axis_left_group_by_multiple_numeric_column,
272
- y_axis_left_group_by_numeric_columns = chart.y_axis_left_group_by_numeric_columns;
273
- var selectedTable = this.getTableById(table_id);
274
- var selectedView = this.getViewById(view_id, selectedTable);
275
- var selectedColumn = TableUtils.getTableColumnByKey(selectedTable, x_axis_column_key);
276
- var column1 = TableUtils.getTableColumnByKey(selectedTable, y_axis_left_summary_column);
277
- var column2 = TableUtils.getTableColumnByKey(selectedTable, y_axis_right_summary_column);
278
- if (!selectedColumn) return [];
279
- var sqlCondition = filter2SqlCondition(selectedTable, selectedView);
280
- var sqlItems = [];
281
- if (y_axis_left_summary_type === SUMMARY_TYPE.COUNT || y_axis_right_summary_type === SUMMARY_TYPE.COUNT) {
282
- sqlItems.push("COUNT(`".concat(selectedColumn.name, "`)"));
283
- }
284
- if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED && column2) {
285
- var rightSummaryColumnMethod = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[y_axis_right_summary_method], column2.name);
286
- sqlItems.push("".concat(rightSummaryColumnMethod));
287
- }
288
- if (y_axis_left_summary_type === SUMMARY_TYPE.ADVANCED && column1) {
289
- var groupItem = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[y_axis_left_summary_method], column1.name);
290
- !sqlItems.includes(groupItem) && sqlItems.push(groupItem);
291
- if (y_axis_left_group_by_multiple_numeric_column) {
292
- y_axis_left_group_by_numeric_columns.forEach(function (item, index) {
293
- var column = TableUtils.getTableColumnByKey(selectedTable, item.column_key);
294
- if (column) {
295
- groupItem = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[item.summary_method], column.name);
296
- !sqlItems.includes(groupItem) && sqlItems.push(groupItem);
161
+ });
162
+ data.forEach((item, index) => {
163
+ let label = this.getLabel(selectedColumn, groupName, item, groupby_date_granularity, groupby_geolocation_granularity);
164
+ let value2 = item[value2Key] || 0;
165
+ let formattedValueRight = value2;
166
+ if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED) {
167
+ value2 = formatNumericValue(value2, rightSummaryColumn);
168
+ formattedValueRight = StatUtils.getFormattedValue(value2, rightSummaryColumn, y_axis_right_summary_method);
169
+ }
170
+ groupItems.forEach((groupItem, index) => {
171
+ if (!this.isEmptyLabel(label) || x_axis_include_empty) {
172
+ const summary = summaries[index];
173
+ const {
174
+ method,
175
+ column
176
+ } = summary;
177
+ let value = formatNumericValue(item[groupItems[index]] || 0, column);
178
+ let formattedValueLeft = StatUtils.getFormattedValue(value, column, method);
179
+ newResult.push({
180
+ name: label,
181
+ value_left: value,
182
+ value_right: value2,
183
+ formatted_value_left: formattedValueLeft,
184
+ formatted_value_right: formattedValueRight,
185
+ color: LABEL_COLORS[index % 12],
186
+ original_name: item[selectedColumn.key]
187
+ });
297
188
  }
298
189
  });
299
- }
190
+ });
300
191
  }
301
- var sqlColumn = sqlItems.join(',');
302
- return "select ".concat(groupName, ", ").concat(sqlColumn, " from `").concat(selectedTable.name, "` ").concat(sqlCondition, " group by ").concat(groupName, " order by ").concat(groupName, " limit 5000");
303
192
  }
304
- }, {
305
- key: "getLabel",
306
- value: function getLabel(groupColumn, groupName, item, groupby_date_granularity, groupby_geolocation_granularity) {
307
- var isTimeColumn = TIME_COLUMN_LIST.includes(groupColumn.type);
308
- var label;
309
- if (isTimeColumn || groupColumn.type === CellType.GEOLOCATION) {
310
- label = item[groupName];
311
- } else {
312
- var currentGroupLabel = item[groupColumn.key];
313
- label = StatUtils.getGroupLabel(currentGroupLabel, item, groupColumn, groupby_date_granularity, groupby_geolocation_granularity, this.value);
314
- label = getFormattedLabel(groupColumn, label);
193
+ return newResult;
194
+ }
195
+ getSqlString(chart, groupName) {
196
+ const {
197
+ table_id,
198
+ view_id,
199
+ x_axis_column_key,
200
+ y_axis_left_summary_type,
201
+ y_axis_right_summary_type,
202
+ y_axis_right_summary_method,
203
+ y_axis_left_summary_method,
204
+ y_axis_left_summary_column,
205
+ y_axis_right_summary_column,
206
+ y_axis_left_group_by_multiple_numeric_column,
207
+ y_axis_left_group_by_numeric_columns
208
+ } = chart;
209
+ const selectedTable = this.getTableById(table_id);
210
+ let selectedView = this.getViewById(view_id, selectedTable);
211
+ const selectedColumn = TableUtils.getTableColumnByKey(selectedTable, x_axis_column_key);
212
+ const column1 = TableUtils.getTableColumnByKey(selectedTable, y_axis_left_summary_column);
213
+ const column2 = TableUtils.getTableColumnByKey(selectedTable, y_axis_right_summary_column);
214
+ if (!selectedColumn) return [];
215
+ const sqlCondition = filter2SqlCondition(selectedTable, selectedView);
216
+ const sqlItems = [];
217
+ if (y_axis_left_summary_type === SUMMARY_TYPE.COUNT || y_axis_right_summary_type === SUMMARY_TYPE.COUNT) {
218
+ sqlItems.push("COUNT(`".concat(selectedColumn.name, "`)"));
219
+ }
220
+ if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED && column2) {
221
+ const rightSummaryColumnMethod = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[y_axis_right_summary_method], column2.name);
222
+ sqlItems.push("".concat(rightSummaryColumnMethod));
223
+ }
224
+ if (y_axis_left_summary_type === SUMMARY_TYPE.ADVANCED && column1) {
225
+ let groupItem = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[y_axis_left_summary_method], column1.name);
226
+ !sqlItems.includes(groupItem) && sqlItems.push(groupItem);
227
+ if (y_axis_left_group_by_multiple_numeric_column) {
228
+ y_axis_left_group_by_numeric_columns.forEach((item, index) => {
229
+ const column = TableUtils.getTableColumnByKey(selectedTable, item.column_key);
230
+ if (column) {
231
+ groupItem = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[item.summary_method], column.name);
232
+ !sqlItems.includes(groupItem) && sqlItems.push(groupItem);
233
+ }
234
+ });
315
235
  }
316
- return label;
317
236
  }
318
- }]);
319
- return CombinationCalculator;
320
- }(BaseCalculator);
237
+ const sqlColumn = sqlItems.join(',');
238
+ return "select ".concat(groupName, ", ").concat(sqlColumn, " from `").concat(selectedTable.name, "` ").concat(sqlCondition, " group by ").concat(groupName, " order by ").concat(groupName, " limit 5000");
239
+ }
240
+ getLabel(groupColumn, groupName, item, groupby_date_granularity, groupby_geolocation_granularity) {
241
+ const isTimeColumn = TIME_COLUMN_LIST.includes(groupColumn.type);
242
+ let label;
243
+ if (isTimeColumn || groupColumn.type === CellType.GEOLOCATION) {
244
+ label = item[groupName];
245
+ } else {
246
+ const currentGroupLabel = item[groupColumn.key];
247
+ label = StatUtils.getGroupLabel(currentGroupLabel, item, groupColumn, groupby_date_granularity, groupby_geolocation_granularity, this.value);
248
+ label = getFormattedLabel(groupColumn, label);
249
+ }
250
+ return label;
251
+ }
252
+ }
321
253
  export default CombinationCalculator;