dtable-statistic 4.0.2-test-2

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 (210) hide show
  1. package/README.md +3 -0
  2. package/es/api/dtable-db-api.js +43 -0
  3. package/es/assets/css/color-picker.css +53 -0
  4. package/es/assets/css/color-rules-popover.css +144 -0
  5. package/es/assets/css/color-theme-dialog.css +40 -0
  6. package/es/assets/css/dashboard.css +562 -0
  7. package/es/assets/css/dialog.css +415 -0
  8. package/es/assets/css/mobile-dashboard.module.css +91 -0
  9. package/es/assets/css/slider.css +77 -0
  10. package/es/assets/css/statistic-chart.module.css +11 -0
  11. package/es/assets/css/statistic-custom-title.module.css +3 -0
  12. package/es/assets/css/statistic-custom.module.css +4 -0
  13. package/es/assets/css/statistic-numeric-column-item.module.css +43 -0
  14. package/es/assets/css/statistic-time-picker.module.css +21 -0
  15. package/es/assets/css/theme.css +61 -0
  16. package/es/assets/images/icon.png +0 -0
  17. package/es/calculator/base-calculator.js +111 -0
  18. package/es/calculator/basic-chart-calculator.js +571 -0
  19. package/es/calculator/combination-calculator.js +296 -0
  20. package/es/calculator/compare-bar-calculator.js +291 -0
  21. package/es/calculator/completeness-calculator.js +307 -0
  22. package/es/calculator/copy-value.js +47 -0
  23. package/es/calculator/dashboard-calculator.js +146 -0
  24. package/es/calculator/heat-map-calculator.js +225 -0
  25. package/es/calculator/horizontal-bar-calculator.js +100 -0
  26. package/es/calculator/index.js +88 -0
  27. package/es/calculator/map-calculator.js +169 -0
  28. package/es/calculator/mirror-calculator.js +217 -0
  29. package/es/calculator/number-card-calculator.js +135 -0
  30. package/es/calculator/pivot-table-calculator.js +810 -0
  31. package/es/calculator/scatter-calculator.js +150 -0
  32. package/es/calculator/thread-manager.js +70 -0
  33. package/es/calculator/trend-calculator.js +204 -0
  34. package/es/calculator/workers/basic-chart-calculator-worker.js +410 -0
  35. package/es/calculator/workers/calculator.worker.js +22 -0
  36. package/es/calculator/workers/card-calculator-worker.js +28 -0
  37. package/es/calculator/workers/combination-calculator-worker.js +257 -0
  38. package/es/calculator/workers/compare-bar-chart-calculator-worker.js +149 -0
  39. package/es/calculator/workers/completeness-calculator-worker.js +153 -0
  40. package/es/calculator/workers/dashboard-calculator-worker.js +56 -0
  41. package/es/calculator/workers/mirror-calculator-worker.js +132 -0
  42. package/es/calculator/workers/pivot-table-calculator-worker.js +615 -0
  43. package/es/calculator/workers/scatter-calculator-worker.js +67 -0
  44. package/es/calculator/workers/trend-calculator-worker.js +93 -0
  45. package/es/calculator/world-map-calculator.js +193 -0
  46. package/es/components/common-add-tool.js +19 -0
  47. package/es/components/dialog/chart-addition-edit-dialog.js +89 -0
  48. package/es/components/dialog/chart-addition-widgets/chart-selector.js +261 -0
  49. package/es/components/dialog/chart-addition-widgets/statistic-chart-selector.module.css +74 -0
  50. package/es/components/dialog/color-theme-dialog.js +71 -0
  51. package/es/components/dialog/enlarged-chart-dialog.js +73 -0
  52. package/es/components/dialog/new-table-dialog.js +113 -0
  53. package/es/components/dialog/new-view-dialog.js +87 -0
  54. package/es/components/dialog/rename-view-dialog.js +87 -0
  55. package/es/components/dialog/statistic-record-dialog/index.css +114 -0
  56. package/es/components/dialog/statistic-record-dialog/index.js +174 -0
  57. package/es/components/dialog/table-select-dialog.js +93 -0
  58. package/es/components/dropdown-menu/statistic-dropdown-menu.js +94 -0
  59. package/es/components/dtable-popover.js +109 -0
  60. package/es/components/dtable-search-input.js +137 -0
  61. package/es/components/dtable-select.js +104 -0
  62. package/es/components/index.js +11 -0
  63. package/es/components/loading.js +8 -0
  64. package/es/components/modal-portal.js +36 -0
  65. package/es/components/popover/color-rules/color-rule.js +179 -0
  66. package/es/components/popover/color-rules/index.js +87 -0
  67. package/es/components/popover/color-rules/rule-filters/filter.js +214 -0
  68. package/es/components/popover/color-rules/rule-filters/index.css +214 -0
  69. package/es/components/popover/color-rules/rule-filters/index.js +97 -0
  70. package/es/components/popover/color-rules/rule-filters/number-input.js +85 -0
  71. package/es/components/popover/color-rules-popover.js +213 -0
  72. package/es/components/popover/color-selector-popover.js +85 -0
  73. package/es/components/seatable-radio/index.css +51 -0
  74. package/es/components/seatable-radio/index.js +28 -0
  75. package/es/components/select/index.js +2 -0
  76. package/es/components/select/option-group.css +104 -0
  77. package/es/components/select/option-group.js +225 -0
  78. package/es/components/select/option.js +51 -0
  79. package/es/components/select/select.css +211 -0
  80. package/es/components/select/select.js +157 -0
  81. package/es/components/toast/alert.js +130 -0
  82. package/es/components/toast/index.js +3 -0
  83. package/es/components/toast/toast.js +164 -0
  84. package/es/components/toast/toastManager.js +150 -0
  85. package/es/components/toast/toaster.js +64 -0
  86. package/es/constants/color-rules.js +8 -0
  87. package/es/constants/dtable-select-style.js +61 -0
  88. package/es/constants/event-types.js +1 -0
  89. package/es/constants/index.js +501 -0
  90. package/es/constants/key-codes.js +102 -0
  91. package/es/constants/zIndexes.js +1 -0
  92. package/es/custom-g2.js +614 -0
  93. package/es/dashboard.js +408 -0
  94. package/es/desktop-dashboard.js +299 -0
  95. package/es/index.js +33 -0
  96. package/es/locale/index.js +17 -0
  97. package/es/locale/lang/de.js +237 -0
  98. package/es/locale/lang/en.js +237 -0
  99. package/es/locale/lang/fr.js +237 -0
  100. package/es/locale/lang/zh_CN.js +237 -0
  101. package/es/mobile-dashboard.js +103 -0
  102. package/es/model/collaborators.js +11 -0
  103. package/es/model/stat-item.js +340 -0
  104. package/es/model/statistic-dashboard.js +8 -0
  105. package/es/service/chart-service.js +192 -0
  106. package/es/service/dashboard-service.js +415 -0
  107. package/es/stat-editor/chart-name-editor.js +75 -0
  108. package/es/stat-editor/index.js +74 -0
  109. package/es/stat-editor/stat-settings/advance-chart-settings/basic-number-card-settings.js +149 -0
  110. package/es/stat-editor/stat-settings/advance-chart-settings/combination-settings.js +415 -0
  111. package/es/stat-editor/stat-settings/advance-chart-settings/dashboard-chart-settings.js +193 -0
  112. package/es/stat-editor/stat-settings/advance-chart-settings/geo-granularity-settings.js +13 -0
  113. package/es/stat-editor/stat-settings/advance-chart-settings/heat-map-settings.js +107 -0
  114. package/es/stat-editor/stat-settings/advance-chart-settings/index.js +332 -0
  115. package/es/stat-editor/stat-settings/advance-chart-settings/map-settings.js +170 -0
  116. package/es/stat-editor/stat-settings/advance-chart-settings/mirror-settings.js +141 -0
  117. package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/combination-style-setting.js +219 -0
  118. package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/heat-map-settings.js +89 -0
  119. package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/map-setting.js +132 -0
  120. package/es/stat-editor/stat-settings/advance-chart-settings/summary-settings.js +319 -0
  121. package/es/stat-editor/stat-settings/advance-chart-settings/trend-chart-settings.js +138 -0
  122. package/es/stat-editor/stat-settings/advance-chart-settings/world-map-settings.js +135 -0
  123. package/es/stat-editor/stat-settings/basic-chart-settings/advance-bar-chart-settings.js +156 -0
  124. package/es/stat-editor/stat-settings/basic-chart-settings/bar-settings.js +147 -0
  125. package/es/stat-editor/stat-settings/basic-chart-settings/completeness-chart-settings.js +195 -0
  126. package/es/stat-editor/stat-settings/basic-chart-settings/custom-bar-settings.js +126 -0
  127. package/es/stat-editor/stat-settings/basic-chart-settings/groupby-settings.js +169 -0
  128. package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-axis-group-settings.js +352 -0
  129. package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-bar-settings.js +145 -0
  130. package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-group-chart-settings.js +153 -0
  131. package/es/stat-editor/stat-settings/basic-chart-settings/index.js +466 -0
  132. package/es/stat-editor/stat-settings/basic-chart-settings/pie-settings.js +183 -0
  133. package/es/stat-editor/stat-settings/basic-chart-settings/pivot-table-settings.js +542 -0
  134. package/es/stat-editor/stat-settings/basic-chart-settings/scatter-settings.js +111 -0
  135. package/es/stat-editor/stat-settings/basic-chart-settings/stack-item-settings.js +86 -0
  136. package/es/stat-editor/stat-settings/basic-chart-settings/stacks-settings.js +169 -0
  137. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/bar-chart-style-setting.js +273 -0
  138. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/completeness-style.js +105 -0
  139. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/horizontal-bar-chart-style.js +243 -0
  140. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/label-font-size-editor.js +65 -0
  141. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/pie-chart-style-settings.js +318 -0
  142. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/time-compare-style.js +49 -0
  143. package/es/stat-editor/stat-settings/basic-chart-settings/summary-method-setting.js +124 -0
  144. package/es/stat-editor/stat-settings/basic-chart-settings/summary-settings.js +150 -0
  145. package/es/stat-editor/stat-settings/basic-chart-settings/time-comparison-settings.js +267 -0
  146. package/es/stat-editor/stat-settings/basic-chart-settings/timer-picker.js +109 -0
  147. package/es/stat-editor/stat-settings/basic-chart-settings/y-axis-group-settings.js +351 -0
  148. package/es/stat-editor/stat-settings/color-setting/color-group-selector.js +60 -0
  149. package/es/stat-editor/stat-settings/color-setting/color-picker.js +129 -0
  150. package/es/stat-editor/stat-settings/color-setting/color-use-type-selector.js +348 -0
  151. package/es/stat-editor/stat-settings/public-setting/axis-label-position-setting.js +102 -0
  152. package/es/stat-editor/stat-settings/public-setting/base-settings.js +124 -0
  153. package/es/stat-editor/stat-settings/public-setting/calender.js +124 -0
  154. package/es/stat-editor/stat-settings/public-setting/column-settings.js +15 -0
  155. package/es/stat-editor/stat-settings/public-setting/custom-title-setting.js +60 -0
  156. package/es/stat-editor/stat-settings/public-setting/data-sort-setting.js +57 -0
  157. package/es/stat-editor/stat-settings/public-setting/ind-toggle-setting.js +41 -0
  158. package/es/stat-editor/stat-settings/public-setting/min-max-setting.js +64 -0
  159. package/es/stat-editor/stat-settings/public-setting/numeric-summary-item.js +118 -0
  160. package/es/stat-editor/stat-settings/public-setting/toggle-setting.js +39 -0
  161. package/es/stat-list/chart-preview.js +139 -0
  162. package/es/stat-list/index.js +275 -0
  163. package/es/stat-view/area-chart.js +521 -0
  164. package/es/stat-view/bar-chart.js +568 -0
  165. package/es/stat-view/base-chart.js +44 -0
  166. package/es/stat-view/basic-number-card.js +255 -0
  167. package/es/stat-view/combination-chart.js +558 -0
  168. package/es/stat-view/compare-chart.js +485 -0
  169. package/es/stat-view/completeness-chart.js +389 -0
  170. package/es/stat-view/custom-bar.js +433 -0
  171. package/es/stat-view/dashboard-chart.js +317 -0
  172. package/es/stat-view/heat-map.js +501 -0
  173. package/es/stat-view/horizontal-bar-chart.js +569 -0
  174. package/es/stat-view/index.js +183 -0
  175. package/es/stat-view/line-chart.js +505 -0
  176. package/es/stat-view/map.js +428 -0
  177. package/es/stat-view/mirror.js +285 -0
  178. package/es/stat-view/pie-chart.js +326 -0
  179. package/es/stat-view/pivot-table/index.js +206 -0
  180. package/es/stat-view/pivot-table/one-dimension-table-no-numeric-columns.js +133 -0
  181. package/es/stat-view/pivot-table/one-dimension-table-with-numeric-columns.js +164 -0
  182. package/es/stat-view/pivot-table/statistic-pivot-table.module.css +132 -0
  183. package/es/stat-view/pivot-table/two-dimension-table.js +344 -0
  184. package/es/stat-view/ring-chart.js +416 -0
  185. package/es/stat-view/scatter-chart.js +367 -0
  186. package/es/stat-view/treemap-chart.js +318 -0
  187. package/es/stat-view/trend-chart.js +299 -0
  188. package/es/stat-view/world-map.js +443 -0
  189. package/es/tabs/index.js +252 -0
  190. package/es/tabs/statistic-tabs.module.css +154 -0
  191. package/es/tabs/tab.js +167 -0
  192. package/es/utils/basic-chart-utils.js +24 -0
  193. package/es/utils/cell-format.js +110 -0
  194. package/es/utils/cell-value.js +27 -0
  195. package/es/utils/collaborator.js +31 -0
  196. package/es/utils/color-utils.js +112 -0
  197. package/es/utils/column-utils.js +18 -0
  198. package/es/utils/column.js +13 -0
  199. package/es/utils/common-utils.js +303 -0
  200. package/es/utils/date-format.js +65 -0
  201. package/es/utils/export-table-utils.js +632 -0
  202. package/es/utils/index.js +26 -0
  203. package/es/utils/object.js +26 -0
  204. package/es/utils/row-utils.js +115 -0
  205. package/es/utils/search.js +67 -0
  206. package/es/utils/sql-utils.js +293 -0
  207. package/es/utils/stat-utils.js +353 -0
  208. package/es/utils/trend-utils.js +136 -0
  209. package/index.js +1 -0
  210. package/package.json +188 -0
@@ -0,0 +1,296 @@
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
+ import { CellType, filter2SqlCondition, TableUtils } from 'dtable-store';
8
+ import BaseCalculator from './base-calculator';
9
+ import StatUtils from '../utils/stat-utils';
10
+ import { getSummaryColumnMethod, formatNumericValue } from '../utils/common-utils';
11
+ import { getFormattedLabel } from '../utils/row-utils';
12
+ import { getSqlGroup } from '../utils/sql-utils';
13
+ 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
29
+ });
30
+ _this.isEmptyLabel = function (label) {
31
+ return !label;
32
+ };
33
+ return _this;
34
+ }
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;
61
+ }
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
+ }
93
+ }
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, _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
+ if (y_axis_left_summary_type === SUMMARY_TYPE.ADVANCED) {
165
+ value1 = formatNumericValue(value1, leftSummaryColumn);
166
+ }
167
+ var value2 = item[value2Key] || 0;
168
+ if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED) {
169
+ value2 = formatNumericValue(value2, rightSummaryColumn);
170
+ }
171
+ if (!_this2.isEmptyLabel(label) || x_axis_include_empty) {
172
+ newResult.push({
173
+ name: label,
174
+ value_left: value1,
175
+ value_right: value2,
176
+ original_name: item[selectedColumn.key]
177
+ });
178
+ }
179
+ });
180
+ } else {
181
+ _value2Key = "COUNT(".concat(selectedColumn.name, ")");
182
+ if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED) {
183
+ _rightSummaryColumn = TableUtils.getTableColumnByKey(selectedTable, y_axis_right_summary_column);
184
+ _value2Key = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[y_axis_right_summary_method], _rightSummaryColumn.name);
185
+ }
186
+ groupItems = [];
187
+ _leftSummaryColumn = TableUtils.getTableColumnByKey(selectedTable, y_axis_left_summary_column);
188
+ groupItem = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[y_axis_left_summary_method], _leftSummaryColumn.name);
189
+ _leftSummaryColumn && !groupItems.includes(groupItem) && groupItems.push(groupItem);
190
+ y_axis_left_group_by_numeric_columns.forEach(function (item, index) {
191
+ var column = TableUtils.getTableColumnByKey(selectedTable, item.column_key);
192
+ if (column) {
193
+ var _groupItem = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[item.summary_method], column.name);
194
+ !groupItems.includes(_groupItem) && groupItems.push(_groupItem);
195
+ }
196
+ });
197
+ data.forEach(function (item, index) {
198
+ var label = _this2.getLabel(selectedColumn, groupName, item, groupby_date_granularity, groupby_geolocation_granularity);
199
+ var value2 = item[_value2Key] || 0;
200
+ if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED) {
201
+ value2 = formatNumericValue(value2, _rightSummaryColumn);
202
+ }
203
+ groupItems.forEach(function (groupItem, index) {
204
+ if (!_this2.isEmptyLabel(label) || x_axis_include_empty) {
205
+ var value = item[groupItems[index]] || 0;
206
+ if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED) {
207
+ value = formatNumericValue(value, _leftSummaryColumn);
208
+ }
209
+ newResult.push({
210
+ name: label,
211
+ value_left: value,
212
+ value_right: value2,
213
+ color: LABEL_COLORS[index % 12],
214
+ original_name: item[selectedColumn.key]
215
+ });
216
+ }
217
+ });
218
+ });
219
+ }
220
+ case 20:
221
+ return _context2.abrupt("return", newResult);
222
+ case 21:
223
+ case "end":
224
+ return _context2.stop();
225
+ }
226
+ }
227
+ }, _callee2, this);
228
+ }));
229
+ function queryDb(_x2) {
230
+ return _queryDb.apply(this, arguments);
231
+ }
232
+ return queryDb;
233
+ }()
234
+ }, {
235
+ key: "getSqlString",
236
+ value: function getSqlString(chart, groupName) {
237
+ var table_id = chart.table_id,
238
+ view_id = chart.view_id,
239
+ x_axis_column_key = chart.x_axis_column_key,
240
+ y_axis_left_summary_type = chart.y_axis_left_summary_type,
241
+ y_axis_right_summary_type = chart.y_axis_right_summary_type,
242
+ y_axis_right_summary_method = chart.y_axis_right_summary_method,
243
+ y_axis_left_summary_method = chart.y_axis_left_summary_method,
244
+ y_axis_left_summary_column = chart.y_axis_left_summary_column,
245
+ y_axis_right_summary_column = chart.y_axis_right_summary_column,
246
+ y_axis_left_group_by_multiple_numeric_column = chart.y_axis_left_group_by_multiple_numeric_column,
247
+ y_axis_left_group_by_numeric_columns = chart.y_axis_left_group_by_numeric_columns;
248
+ var selectedTable = this.getTableById(table_id);
249
+ var selectedView = this.getViewById(view_id, selectedTable);
250
+ var selectedColumn = TableUtils.getTableColumnByKey(selectedTable, x_axis_column_key);
251
+ var column1 = TableUtils.getTableColumnByKey(selectedTable, y_axis_left_summary_column);
252
+ var column2 = TableUtils.getTableColumnByKey(selectedTable, y_axis_right_summary_column);
253
+ if (!selectedColumn) return [];
254
+ var sqlCondition = filter2SqlCondition(selectedTable, selectedView);
255
+ var sqlItems = [];
256
+ if (y_axis_left_summary_type === SUMMARY_TYPE.COUNT || y_axis_right_summary_type === SUMMARY_TYPE.COUNT) {
257
+ sqlItems.push("COUNT(`".concat(selectedColumn.name, "`)"));
258
+ }
259
+ if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED && column2) {
260
+ var rightSummaryColumnMethod = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[y_axis_right_summary_method], column2.name);
261
+ sqlItems.push("".concat(rightSummaryColumnMethod));
262
+ }
263
+ if (y_axis_left_summary_type === SUMMARY_TYPE.ADVANCED && column1) {
264
+ var groupItem = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[y_axis_left_summary_method], column1.name);
265
+ !sqlItems.includes(groupItem) && sqlItems.push(groupItem);
266
+ if (y_axis_left_group_by_multiple_numeric_column) {
267
+ y_axis_left_group_by_numeric_columns.forEach(function (item, index) {
268
+ var column = TableUtils.getTableColumnByKey(selectedTable, item.column_key);
269
+ if (column) {
270
+ groupItem = getSummaryColumnMethod(DTABLE_DB_SUMMARY_METHOD[item.summary_method], column.name);
271
+ !sqlItems.includes(groupItem) && sqlItems.push(groupItem);
272
+ }
273
+ });
274
+ }
275
+ }
276
+ var sqlColumn = sqlItems.join(',');
277
+ return "select ".concat(groupName, ", ").concat(sqlColumn, " from `").concat(selectedTable.name, "` ").concat(sqlCondition, " group by ").concat(groupName, " order by ").concat(groupName, " limit 5000");
278
+ }
279
+ }, {
280
+ key: "getLabel",
281
+ value: function getLabel(groupColumn, groupName, item, groupby_date_granularity, groupby_geolocation_granularity) {
282
+ var isTimeColumn = TIME_COLUMN_LIST.includes(groupColumn.type);
283
+ var label;
284
+ if (isTimeColumn || groupColumn.type === CellType.GEOLOCATION) {
285
+ label = item[groupName];
286
+ } else {
287
+ var currentGroupLabel = item[groupColumn.key];
288
+ label = StatUtils.getGroupLabel(currentGroupLabel, {}, groupColumn, groupby_date_granularity, groupby_geolocation_granularity, this.value);
289
+ label = getFormattedLabel(groupColumn, label);
290
+ }
291
+ return label;
292
+ }
293
+ }]);
294
+ return CombinationCalculator;
295
+ }(BaseCalculator);
296
+ export default CombinationCalculator;
@@ -0,0 +1,291 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
3
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
4
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
5
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
6
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
7
+ import _inherits from "@babel/runtime/helpers/esm/inherits";
8
+ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
9
+ import dayjs from 'dayjs';
10
+ import { filter2SqlCondition, TableUtils } from 'dtable-store';
11
+ import BaseCalculator from './base-calculator';
12
+ import { getSqlGroup, getSqlOrder } from '../utils/sql-utils';
13
+ import StatUtils from '../utils/stat-utils';
14
+ import { getSummaryResult } from '../utils/common-utils';
15
+ import { DTABLE_DB_SUMMARY_METHOD, SUMMARY_TYPE } from '../constants';
16
+ var CompareBarCalculator = /*#__PURE__*/function (_BaseCalculator) {
17
+ _inherits(CompareBarCalculator, _BaseCalculator);
18
+ var _super = _createSuper(CompareBarCalculator);
19
+ function CompareBarCalculator(_ref) {
20
+ var value = _ref.value,
21
+ statisticThreadManager = _ref.statisticThreadManager,
22
+ username = _ref.username,
23
+ userId = _ref.userId;
24
+ _classCallCheck(this, CompareBarCalculator);
25
+ return _super.call(this, {
26
+ value: value,
27
+ statisticThreadManager: statisticThreadManager,
28
+ username: username,
29
+ userId: userId
30
+ });
31
+ }
32
+ _createClass(CompareBarCalculator, [{
33
+ key: "isValidChart",
34
+ value: function isValidChart(chart) {
35
+ if (!this.validateBaseConfigs(chart)) {
36
+ return false;
37
+ }
38
+ var table_id = chart.table_id,
39
+ x_axis_column_key = chart.x_axis_column_key,
40
+ summary_column_key = chart.summary_column_key,
41
+ y_axis_column_key = chart.y_axis_column_key,
42
+ x_axis_date_range_start = chart.x_axis_date_range_start,
43
+ x_axis_date_range_end = chart.x_axis_date_range_end,
44
+ x_axis_compared_date_range_start = chart.x_axis_compared_date_range_start,
45
+ x_axis_compared_date_range_end = chart.x_axis_compared_date_range_end;
46
+ var table = this.getTableById(table_id);
47
+ if (!TableUtils.getTableColumnByKey(table, x_axis_column_key)) return false;
48
+ var summaryColumnKey = summary_column_key || y_axis_column_key;
49
+ if (summaryColumnKey && !TableUtils.getTableColumnByKey(table, summaryColumnKey)) return false;
50
+ if (!x_axis_date_range_start || !x_axis_date_range_end || !x_axis_compared_date_range_start || !x_axis_compared_date_range_end) {
51
+ return false;
52
+ }
53
+ if (x_axis_date_range_start > x_axis_date_range_end || x_axis_compared_date_range_start > x_axis_compared_date_range_end) {
54
+ return false;
55
+ }
56
+ return true;
57
+ }
58
+ }, {
59
+ key: "calculate",
60
+ value: function () {
61
+ var _calculate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(chart) {
62
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
63
+ while (1) {
64
+ switch (_context.prev = _context.next) {
65
+ case 0:
66
+ if (this.isValidChart(chart)) {
67
+ _context.next = 2;
68
+ break;
69
+ }
70
+ return _context.abrupt("return", []);
71
+ case 2:
72
+ if (!this.isCalcByQueryDB(chart)) {
73
+ _context.next = 6;
74
+ break;
75
+ }
76
+ _context.next = 5;
77
+ return this.queryDb(chart);
78
+ case 5:
79
+ return _context.abrupt("return", _context.sent);
80
+ case 6:
81
+ _context.next = 8;
82
+ return this.calculateWithWorker(chart);
83
+ case 8:
84
+ return _context.abrupt("return", _context.sent);
85
+ case 9:
86
+ case "end":
87
+ return _context.stop();
88
+ }
89
+ }
90
+ }, _callee, this);
91
+ }));
92
+ function calculate(_x) {
93
+ return _calculate.apply(this, arguments);
94
+ }
95
+ return calculate;
96
+ }()
97
+ }, {
98
+ key: "queryDb",
99
+ value: function () {
100
+ var _queryDb = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(chart) {
101
+ var _this = this;
102
+ var table_id, view_id, x_axis_column_key, x_axis_date_granularity, y_axis_summary_type, y_axis_summary_method, y_axis_column_key, x_axis_date_range_start, x_axis_date_range_end, x_axis_compared_date_range_start, x_axis_compared_date_range_end, display_increase, selectedTable, selectedView, selectedColumn, isAdvanced, method, sqlString, groupName, sqlOrder, summaryColumnName, selectedSummaryColumn, sqlCondition, result, groupName1, groupName2, dateRangeResult, dateComparedResult, valueKey, comparedResult, rangeResult, data, _iterator, _step, item, value, index, _iterator2, _step2, _item, dateRangeItem, _value, newItem, value1, increaseValue;
103
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
104
+ while (1) {
105
+ switch (_context2.prev = _context2.next) {
106
+ case 0:
107
+ table_id = chart.table_id, view_id = chart.view_id, x_axis_column_key = chart.x_axis_column_key, x_axis_date_granularity = chart.x_axis_date_granularity, y_axis_summary_type = chart.y_axis_summary_type, y_axis_summary_method = chart.y_axis_summary_method, y_axis_column_key = chart.y_axis_column_key, x_axis_date_range_start = chart.x_axis_date_range_start, x_axis_date_range_end = chart.x_axis_date_range_end, x_axis_compared_date_range_start = chart.x_axis_compared_date_range_start, x_axis_compared_date_range_end = chart.x_axis_compared_date_range_end, display_increase = chart.display_increase;
108
+ selectedTable = this.getTableById(table_id);
109
+ selectedView = this.getViewById(view_id, selectedTable);
110
+ selectedColumn = TableUtils.getTableColumnByKey(selectedTable, x_axis_column_key);
111
+ isAdvanced = y_axis_summary_type === SUMMARY_TYPE.ADVANCED;
112
+ method = isAdvanced ? DTABLE_DB_SUMMARY_METHOD[y_axis_summary_method] : 'COUNT';
113
+ sqlString = '';
114
+ groupName = getSqlGroup('day', selectedColumn);
115
+ sqlOrder = getSqlOrder(null, groupName);
116
+ summaryColumnName = "".concat(selectedColumn.name);
117
+ selectedSummaryColumn = {};
118
+ if (!isAdvanced) {
119
+ _context2.next = 16;
120
+ break;
121
+ }
122
+ selectedSummaryColumn = TableUtils.getTableColumnByKey(selectedTable, y_axis_column_key);
123
+ if (selectedSummaryColumn) {
124
+ _context2.next = 15;
125
+ break;
126
+ }
127
+ return _context2.abrupt("return", []);
128
+ case 15:
129
+ summaryColumnName = "".concat(selectedSummaryColumn.name);
130
+ case 16:
131
+ sqlCondition = filter2SqlCondition(selectedTable, selectedView);
132
+ sqlCondition = this.getStatItemSqlCondition(chart, sqlCondition, "`".concat(selectedColumn.name, "`"));
133
+ sqlString = "select ".concat(groupName, ", ").concat(method, "(").concat(summaryColumnName, ") from `").concat(selectedTable.name, "` ").concat(sqlCondition, " group by ").concat(groupName, " ").concat(sqlOrder, " limit 5000");
134
+ _context2.next = 21;
135
+ return this.sqlQuery(sqlString);
136
+ case 21:
137
+ result = _context2.sent;
138
+ groupName1 = "".concat(x_axis_date_range_start, " - ").concat(x_axis_date_range_end);
139
+ groupName2 = "".concat(x_axis_compared_date_range_start, " - ").concat(x_axis_compared_date_range_end);
140
+ if (!(result.status === 200 && result.data.success)) {
141
+ _context2.next = 61;
142
+ break;
143
+ }
144
+ dateRangeResult = new Map();
145
+ dateComparedResult = new Map();
146
+ valueKey = isAdvanced ? "".concat(method, "(").concat(summaryColumnName, ")") : "".concat(method, "(").concat(selectedColumn.name, ")");
147
+ result.data.results.forEach(function (item) {
148
+ var name = item[groupName];
149
+ var label = StatUtils.getGroupLabel(name, {}, selectedColumn, x_axis_date_granularity, '', _this.value);
150
+ var value = item[valueKey];
151
+ if (name >= x_axis_date_range_start && name <= x_axis_date_range_end) {
152
+ var currentValue = dateRangeResult.get(label);
153
+ if (!currentValue) {
154
+ if (isAdvanced) {
155
+ dateRangeResult.set(label, [value]);
156
+ } else {
157
+ dateRangeResult.set(label, value);
158
+ }
159
+ } else {
160
+ if (isAdvanced) {
161
+ currentValue.push(value);
162
+ } else {
163
+ dateRangeResult.set(label, value + currentValue);
164
+ }
165
+ }
166
+ } else if (name >= x_axis_compared_date_range_start && name <= x_axis_compared_date_range_end) {
167
+ var _currentValue = dateComparedResult.get(label);
168
+ if (!_currentValue) {
169
+ if (isAdvanced) {
170
+ dateComparedResult.set(label, [value]);
171
+ } else {
172
+ dateComparedResult.set(label, value);
173
+ }
174
+ } else {
175
+ if (isAdvanced) {
176
+ dateComparedResult.push(value);
177
+ } else {
178
+ dateComparedResult.set(label, value + _currentValue);
179
+ }
180
+ }
181
+ }
182
+ });
183
+ comparedResult = [];
184
+ rangeResult = [];
185
+ data = selectedSummaryColumn.data || {};
186
+ _iterator = _createForOfIteratorHelper(dateRangeResult);
187
+ try {
188
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
189
+ item = _step.value;
190
+ value = item[1];
191
+ if (isAdvanced) {
192
+ value = getSummaryResult(item[1], y_axis_summary_method, data.precision);
193
+ }
194
+ rangeResult.push({
195
+ name: item[0],
196
+ value: value,
197
+ group_name: groupName1,
198
+ raw_name: item[0]
199
+ });
200
+ }
201
+ } catch (err) {
202
+ _iterator.e(err);
203
+ } finally {
204
+ _iterator.f();
205
+ }
206
+ index = 0;
207
+ _iterator2 = _createForOfIteratorHelper(dateComparedResult);
208
+ _context2.prev = 36;
209
+ _iterator2.s();
210
+ case 38:
211
+ if ((_step2 = _iterator2.n()).done) {
212
+ _context2.next = 51;
213
+ break;
214
+ }
215
+ _item = _step2.value;
216
+ dateRangeItem = rangeResult[index];
217
+ if (dateRangeItem) {
218
+ _context2.next = 43;
219
+ break;
220
+ }
221
+ return _context2.abrupt("break", 51);
222
+ case 43:
223
+ _value = _item[1];
224
+ if (isAdvanced) {
225
+ _value = getSummaryResult(_item[1], y_axis_summary_method, data.precision);
226
+ }
227
+ newItem = {
228
+ name: dateRangeItem.name,
229
+ value: _value,
230
+ group_name: groupName2,
231
+ raw_name: _item[0]
232
+ };
233
+ if (display_increase) {
234
+ value1 = dateRangeItem.value;
235
+ increaseValue = Number(((value1 - _value) / _value).toFixed(2));
236
+ if (!_value) {
237
+ increaseValue = 1;
238
+ }
239
+ newItem.increase_value = increaseValue;
240
+ }
241
+ comparedResult.push(newItem);
242
+ index++;
243
+ case 49:
244
+ _context2.next = 38;
245
+ break;
246
+ case 51:
247
+ _context2.next = 56;
248
+ break;
249
+ case 53:
250
+ _context2.prev = 53;
251
+ _context2.t0 = _context2["catch"](36);
252
+ _iterator2.e(_context2.t0);
253
+ case 56:
254
+ _context2.prev = 56;
255
+ _iterator2.f();
256
+ return _context2.finish(56);
257
+ case 59:
258
+ if (comparedResult.length > rangeResult.length) {
259
+ comparedResult = comparedResult.slice(0, rangeResult.length);
260
+ }
261
+ return _context2.abrupt("return", [].concat(_toConsumableArray(comparedResult), rangeResult));
262
+ case 61:
263
+ return _context2.abrupt("return", []);
264
+ case 62:
265
+ case "end":
266
+ return _context2.stop();
267
+ }
268
+ }
269
+ }, _callee2, this, [[36, 53, 56, 59]]);
270
+ }));
271
+ function queryDb(_x2) {
272
+ return _queryDb.apply(this, arguments);
273
+ }
274
+ return queryDb;
275
+ }()
276
+ }, {
277
+ key: "getStatItemSqlCondition",
278
+ value: function getStatItemSqlCondition(chart, sqlCondition, name) {
279
+ var x_axis_date_range_start = chart.x_axis_date_range_start,
280
+ x_axis_date_range_end = chart.x_axis_date_range_end,
281
+ x_axis_compared_date_range_start = chart.x_axis_compared_date_range_start,
282
+ x_axis_compared_date_range_end = chart.x_axis_compared_date_range_end;
283
+ var newSqlCondition = sqlCondition.length === 0 ? 'where ' : sqlCondition + ' AND';
284
+ var formattedXAxisDateRangeEnd = dayjs(x_axis_date_range_end).add(1, 'days').format('YYYY-MM-DD');
285
+ var formattedXAxisComparedDateRangeEnd = dayjs(x_axis_compared_date_range_end).add(1, 'days').format('YYYY-MM-DD');
286
+ return newSqlCondition + " ((".concat(name, " >= '").concat(x_axis_date_range_start, "' AND ").concat(name, " < '").concat(formattedXAxisDateRangeEnd, "') Or (").concat(name, " >= '").concat(x_axis_compared_date_range_start, "' AND ").concat(name, " < '").concat(formattedXAxisComparedDateRangeEnd, "'))");
287
+ }
288
+ }]);
289
+ return CompareBarCalculator;
290
+ }(BaseCalculator);
291
+ export default CompareBarCalculator;