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,10 +1,3 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
- import _regeneratorRuntime from "@babel/runtime/regenerator";
3
- import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
4
- import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
5
- import _createClass from "@babel/runtime/helpers/esm/createClass";
6
- import _inherits from "@babel/runtime/helpers/esm/inherits";
7
- import _createSuper from "@babel/runtime/helpers/esm/createSuper";
8
1
  import { filter2SqlCondition, TableUtils } from 'dtable-store';
9
2
  import BaseCalculator from './base-calculator';
10
3
  import { getSqlGroup, getSqlOrder } from '../utils/sql-utils';
@@ -12,296 +5,218 @@ import { PIE_CHART_COLORS, STAT_TYPE, TIME_COLUMN_LIST } from '../constants';
12
5
  import { isArrayCellValue } from '../utils/common-utils';
13
6
  import StatUtils from '../utils/stat-utils';
14
7
  import { getFormattedLabel } from '../utils/row-utils';
15
- var CompletenessCalculator = /*#__PURE__*/function (_BaseCalculator) {
16
- _inherits(CompletenessCalculator, _BaseCalculator);
17
- var _super = _createSuper(CompletenessCalculator);
18
- function CompletenessCalculator(_ref) {
19
- var value = _ref.value,
20
- statisticThreadManager = _ref.statisticThreadManager,
21
- username = _ref.username,
22
- userId = _ref.userId;
23
- _classCallCheck(this, CompletenessCalculator);
24
- return _super.call(this, {
25
- value: value,
26
- statisticThreadManager: statisticThreadManager,
27
- username: username,
28
- userId: userId
8
+ class CompletenessCalculator 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
22
  }
31
- _createClass(CompletenessCalculator, [{
32
- key: "isValidChart",
33
- value: function isValidChart(chart) {
34
- if (!this.validateBaseConfigs(chart)) {
35
- return false;
36
- }
37
- var type = chart.type,
38
- table_id = chart.table_id,
39
- name_column = chart.name_column,
40
- completed_column = chart.completed_column,
41
- target_column = chart.target_column,
42
- group_column = chart.group_column;
43
- var table = this.getTableById(table_id);
44
- if (!TableUtils.getTableColumnByKey(table, name_column)) {
45
- return false;
46
- }
47
- if (!TableUtils.getTableColumnByKey(table, completed_column)) {
48
- return false;
49
- }
50
- if (!TableUtils.getTableColumnByKey(table, target_column)) {
51
- return false;
52
- }
53
- if (type === STAT_TYPE.GROUP_COMPLETENESS_CHART && (!group_column || !TableUtils.getTableColumnByKey(table, group_column))) {
54
- return false;
55
- }
56
- return true;
23
+ isValidChart(chart) {
24
+ if (!this.validateBaseConfigs(chart)) {
25
+ return false;
26
+ }
27
+ const {
28
+ type,
29
+ table_id,
30
+ name_column,
31
+ completed_column,
32
+ target_column,
33
+ group_column
34
+ } = chart;
35
+ const table = this.getTableById(table_id);
36
+ if (!TableUtils.getTableColumnByKey(table, name_column)) {
37
+ return false;
38
+ }
39
+ if (!TableUtils.getTableColumnByKey(table, completed_column)) {
40
+ return false;
41
+ }
42
+ if (!TableUtils.getTableColumnByKey(table, target_column)) {
43
+ return false;
44
+ }
45
+ if (type === STAT_TYPE.GROUP_COMPLETENESS_CHART && (!group_column || !TableUtils.getTableColumnByKey(table, group_column))) {
46
+ return false;
47
+ }
48
+ return true;
49
+ }
50
+ async calculate(chart) {
51
+ if (!this.isValidChart(chart)) return [];
52
+ if (this.isCalcByQueryDB(chart)) {
53
+ return await this.queryDb(chart);
54
+ }
55
+ return await this.calculateWithWorker(chart);
56
+ }
57
+ async queryDb(chart) {
58
+ const {
59
+ table_id,
60
+ view_id,
61
+ name_column,
62
+ completed_column,
63
+ target_column,
64
+ group_column,
65
+ date_granularity
66
+ } = chart;
67
+ const selectedTable = this.getTableById(table_id);
68
+ const selectedView = this.getViewById(view_id, selectedTable);
69
+ if (!selectedView) {
70
+ return [];
57
71
  }
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();
72
+ const selectedColumn = TableUtils.getTableColumnByKey(selectedTable, name_column);
73
+ const groupName = "`".concat(selectedColumn.name, "`");
74
+ const sqlCondition = filter2SqlCondition(selectedTable, selectedView);
75
+ const completedColumn = TableUtils.getTableColumnByKey(selectedTable, completed_column);
76
+ const targetColumn = TableUtils.getTableColumnByKey(selectedTable, target_column);
77
+ const groupColumn = TableUtils.getTableColumnByKey(selectedTable, group_column);
78
+ const sqlOrder = getSqlOrder(null, groupName);
79
+ const isColumnDataAsAnArray = isArrayCellValue(selectedColumn);
80
+ const memo = new Map();
81
+ const resultList = [];
82
+ if (!groupColumn) {
83
+ const completedColumnName = "`".concat(completedColumn.name, "`"),
84
+ targetColumnName = "`".concat(targetColumn.name, "`");
85
+ const sqlString = "select ".concat(groupName, ", ").concat(completedColumnName, ", ").concat(targetColumnName, " from `").concat(selectedTable.name, "` ").concat(sqlCondition, " group by ").concat(groupName, ", ").concat(completedColumnName, ", ").concat(targetColumnName, " ").concat(sqlOrder, " desc limit 5000");
86
+ const result = await this.sqlQuery(sqlString);
87
+ if (!result.status === 200 || !result.data.success) return [];
88
+ const data = result.data;
89
+ if (!data.results) return [];
90
+ data.results.forEach(item => {
91
+ const name = item[selectedColumn.key];
92
+ let label;
93
+ if (name || Number.isFinite(name)) {
94
+ label = StatUtils.getGroupLabel(name, item, selectedColumn, '', '', this.value);
95
+ if (isColumnDataAsAnArray) {
96
+ label = label[0];
97
+ }
98
+ label = getFormattedLabel(selectedColumn, label, this.value.collaborators);
99
+ if (!memo.get(label)) {
100
+ const completedValue = item[completedColumn.key] || 0;
101
+ const targetValue = item[targetColumn.key] || 0;
102
+ if (completedValue >= targetValue) {
103
+ resultList.push({
104
+ name: label,
105
+ original_name: name,
106
+ value: completedValue,
107
+ type: 'completed',
108
+ current_value: completedValue,
109
+ target_value: targetValue
110
+ });
111
+ } else {
112
+ resultList.push({
113
+ name: label,
114
+ original_name: name,
115
+ value: completedValue,
116
+ type: 'completed',
117
+ current_value: completedValue,
118
+ target_value: targetValue
119
+ }, {
120
+ name: label,
121
+ original_name: name,
122
+ value: targetValue - completedValue,
123
+ type: 'uncompleted',
124
+ current_value: completedValue,
125
+ target_value: targetValue
126
+ });
88
127
  }
128
+ memo.set(label, 1);
89
129
  }
90
- }, _callee, this);
91
- }));
92
- function calculate(_x) {
93
- return _calculate.apply(this, arguments);
130
+ }
131
+ });
132
+ } else {
133
+ const isTimeGroupColumn = TIME_COLUMN_LIST.includes(groupColumn.type);
134
+ const isGroupColumnDataAsAnArray = isArrayCellValue(groupColumn);
135
+ const completedColumnName = "`".concat(completedColumn.name, "`");
136
+ const targetColumnName = "`".concat(targetColumn.name, "`");
137
+ let groupColumnName = "`".concat(groupColumn.name, "`");
138
+ if (isTimeGroupColumn) {
139
+ groupColumnName = getSqlGroup(date_granularity, groupColumn);
94
140
  }
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, name_column, completed_column, target_column, group_column, date_granularity, selectedTable, selectedView, selectedColumn, groupName, sqlCondition, completedColumn, targetColumn, groupColumn, sqlOrder, isColumnDataAsAnArray, memo, resultList, completedColumnName, targetColumnName, sqlString, result, data, isTimeGroupColumn, isGroupColumnDataAsAnArray, _completedColumnName, _targetColumnName, groupColumnName, _sqlString, _result, colorMap, _data, colorIndex;
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, name_column = chart.name_column, completed_column = chart.completed_column, target_column = chart.target_column, group_column = chart.group_column, date_granularity = chart.date_granularity;
108
- selectedTable = this.getTableById(table_id);
109
- selectedView = this.getViewById(view_id, selectedTable);
110
- if (selectedView) {
111
- _context2.next = 5;
112
- break;
113
- }
114
- return _context2.abrupt("return", []);
115
- case 5:
116
- selectedColumn = TableUtils.getTableColumnByKey(selectedTable, name_column);
117
- groupName = "`".concat(selectedColumn.name, "`");
118
- sqlCondition = filter2SqlCondition(selectedTable, selectedView);
119
- completedColumn = TableUtils.getTableColumnByKey(selectedTable, completed_column);
120
- targetColumn = TableUtils.getTableColumnByKey(selectedTable, target_column);
121
- groupColumn = TableUtils.getTableColumnByKey(selectedTable, group_column);
122
- sqlOrder = getSqlOrder(null, groupName);
123
- isColumnDataAsAnArray = isArrayCellValue(selectedColumn);
124
- memo = new Map();
125
- resultList = [];
126
- if (groupColumn) {
127
- _context2.next = 29;
128
- break;
129
- }
130
- completedColumnName = "`".concat(completedColumn.name, "`"), targetColumnName = "`".concat(targetColumn.name, "`");
131
- sqlString = "select ".concat(groupName, ", ").concat(completedColumnName, ", ").concat(targetColumnName, " from `").concat(selectedTable.name, "` ").concat(sqlCondition, " group by ").concat(groupName, ", ").concat(completedColumnName, ", ").concat(targetColumnName, " ").concat(sqlOrder, " desc limit 5000");
132
- _context2.next = 20;
133
- return this.sqlQuery(sqlString);
134
- case 20:
135
- result = _context2.sent;
136
- if (!(!result.status === 200 || !result.data.success)) {
137
- _context2.next = 23;
138
- break;
139
- }
140
- return _context2.abrupt("return", []);
141
- case 23:
142
- data = result.data;
143
- if (data.results) {
144
- _context2.next = 26;
145
- break;
146
- }
147
- return _context2.abrupt("return", []);
148
- case 26:
149
- data.results.forEach(function (item) {
150
- var name = item[selectedColumn.key];
151
- var label;
152
- if (name || Number.isFinite(name)) {
153
- label = StatUtils.getGroupLabel(name, item, selectedColumn, '', '', _this.value);
154
- if (isColumnDataAsAnArray) {
155
- label = label[0];
156
- }
157
- label = getFormattedLabel(selectedColumn, label, _this.value.collaborators);
158
- if (!memo.get(label)) {
159
- var completedValue = item[completedColumn.key] || 0;
160
- var targetValue = item[targetColumn.key] || 0;
161
- if (completedValue >= targetValue) {
162
- resultList.push({
163
- name: label,
164
- original_name: name,
165
- value: completedValue,
166
- type: 'completed',
167
- current_value: completedValue,
168
- target_value: targetValue
169
- });
170
- } else {
171
- resultList.push({
172
- name: label,
173
- original_name: name,
174
- value: completedValue,
175
- type: 'completed',
176
- current_value: completedValue,
177
- target_value: targetValue
178
- }, {
179
- name: label,
180
- original_name: name,
181
- value: targetValue - completedValue,
182
- type: 'uncompleted',
183
- current_value: completedValue,
184
- target_value: targetValue
185
- });
186
- }
187
- memo.set(label, 1);
188
- }
189
- }
190
- });
191
- _context2.next = 48;
192
- break;
193
- case 29:
194
- isTimeGroupColumn = TIME_COLUMN_LIST.includes(groupColumn.type);
195
- isGroupColumnDataAsAnArray = isArrayCellValue(groupColumn);
196
- _completedColumnName = "`".concat(completedColumn.name, "`");
197
- _targetColumnName = "`".concat(targetColumn.name, "`");
198
- groupColumnName = "`".concat(groupColumn.name, "`");
199
- if (isTimeGroupColumn) {
200
- groupColumnName = getSqlGroup(date_granularity, groupColumn);
201
- }
202
- _sqlString = "select ".concat(groupName, ", ").concat(_completedColumnName, ", ").concat(_targetColumnName, ", ").concat(groupColumnName, " from `").concat(selectedTable.name, "` ").concat(sqlCondition, " group by ").concat(groupName, ", ").concat(_completedColumnName, ", ").concat(_targetColumnName, ", ").concat(groupColumnName, " ").concat(sqlOrder, " desc limit 5000");
203
- _context2.next = 38;
204
- return this.sqlQuery(_sqlString);
205
- case 38:
206
- _result = _context2.sent;
207
- colorMap = {};
208
- if (!(!_result.status === 200 || !_result.data.success)) {
209
- _context2.next = 42;
210
- break;
211
- }
212
- return _context2.abrupt("return", []);
213
- case 42:
214
- _data = _result.data;
215
- if (_data.results) {
216
- _context2.next = 45;
217
- break;
218
- }
219
- return _context2.abrupt("return", []);
220
- case 45:
221
- colorIndex = 0;
222
- _data.results.forEach(function (item) {
223
- var name = item[selectedColumn.key];
224
- var label;
225
- var groupLabel;
141
+ const sqlString = "select ".concat(groupName, ", ").concat(completedColumnName, ", ").concat(targetColumnName, ", ").concat(groupColumnName, " from `").concat(selectedTable.name, "` ").concat(sqlCondition, " group by ").concat(groupName, ", ").concat(completedColumnName, ", ").concat(targetColumnName, ", ").concat(groupColumnName, " ").concat(sqlOrder, " desc limit 5000");
142
+ const result = await this.sqlQuery(sqlString);
143
+ let colorMap = {};
144
+ if (!result.status === 200 || !result.data.success) return [];
145
+ const data = result.data;
146
+ if (!data.results) return [];
147
+ let colorIndex = 0;
148
+ data.results.forEach(item => {
149
+ const name = item[selectedColumn.key];
150
+ let label;
151
+ let groupLabel;
226
152
 
227
- // get and format name
228
- if (name || Number.isFinite(name)) {
229
- label = StatUtils.getGroupLabel(name, item, selectedColumn, '', '', _this.value);
230
- if (isColumnDataAsAnArray) {
231
- label = label[0];
232
- }
233
- label = getFormattedLabel(selectedColumn, label, _this.value.collaborators);
234
- }
153
+ // get and format name
154
+ if (name || Number.isFinite(name)) {
155
+ label = StatUtils.getGroupLabel(name, item, selectedColumn, '', '', this.value);
156
+ if (isColumnDataAsAnArray) {
157
+ label = label[0];
158
+ }
159
+ label = getFormattedLabel(selectedColumn, label, this.value.collaborators);
160
+ }
235
161
 
236
- // get and format group name
237
- if (!isTimeGroupColumn) {
238
- groupLabel = item[groupColumn.key];
239
- groupLabel = StatUtils.getGroupLabel(groupLabel, item, groupColumn, '', '', _this.value);
240
- if (groupLabel && isGroupColumnDataAsAnArray) {
241
- groupLabel = groupLabel[0];
242
- }
243
- groupLabel = getFormattedLabel(groupColumn, groupLabel, _this.value.collaborators);
244
- } else {
245
- groupLabel = item[groupColumnName] + '';
246
- }
162
+ // get and format group name
163
+ if (!isTimeGroupColumn) {
164
+ groupLabel = item[groupColumn.key];
165
+ groupLabel = StatUtils.getGroupLabel(groupLabel, item, groupColumn, '', '', this.value);
166
+ if (groupLabel && isGroupColumnDataAsAnArray) {
167
+ groupLabel = groupLabel[0];
168
+ }
169
+ groupLabel = getFormattedLabel(groupColumn, groupLabel, this.value.collaborators);
170
+ } else {
171
+ groupLabel = item[groupColumnName] + '';
172
+ }
247
173
 
248
- // get group color
249
- var color = colorMap[groupLabel];
250
- if (!color) {
251
- color = PIE_CHART_COLORS[colorIndex % 12];
252
- colorMap[groupLabel] = color;
253
- colorIndex++;
254
- }
255
- var cache = memo.get(label);
256
- if (!cache || !cache[groupLabel]) {
257
- var completedValue = item[completedColumn.key] || 0;
258
- var targetValue = item[targetColumn.key] || 0;
259
- if (label && groupLabel) {
260
- resultList.push({
261
- name: label,
262
- original_name: name,
263
- group_label: groupLabel,
264
- value: completedValue,
265
- type: 'completed',
266
- current_value: completedValue,
267
- target_value: targetValue
268
- });
269
- if (completedValue < targetValue) {
270
- resultList.push({
271
- name: label,
272
- original_name: name,
273
- group_label: groupLabel,
274
- value: targetValue - completedValue,
275
- type: 'uncompleted',
276
- current_value: completedValue,
277
- target_value: targetValue
278
- });
279
- }
280
- if (cache) {
281
- cache[groupLabel] = 1;
282
- memo.set(label, cache);
283
- } else {
284
- memo.set(label, _defineProperty({}, groupLabel, 1));
285
- }
286
- }
287
- }
288
- });
289
- resultList.colorMap = colorMap;
290
- case 48:
291
- return _context2.abrupt("return", resultList);
292
- case 49:
293
- case "end":
294
- return _context2.stop();
174
+ // get group color
175
+ let color = colorMap[groupLabel];
176
+ if (!color) {
177
+ color = PIE_CHART_COLORS[colorIndex % 12];
178
+ colorMap[groupLabel] = color;
179
+ colorIndex++;
180
+ }
181
+ const cache = memo.get(label);
182
+ if (!cache || !cache[groupLabel]) {
183
+ const completedValue = item[completedColumn.key] || 0;
184
+ const targetValue = item[targetColumn.key] || 0;
185
+ if (label && groupLabel) {
186
+ resultList.push({
187
+ name: label,
188
+ original_name: name,
189
+ group_label: groupLabel,
190
+ value: completedValue,
191
+ type: 'completed',
192
+ current_value: completedValue,
193
+ target_value: targetValue
194
+ });
195
+ if (completedValue < targetValue) {
196
+ resultList.push({
197
+ name: label,
198
+ original_name: name,
199
+ group_label: groupLabel,
200
+ value: targetValue - completedValue,
201
+ type: 'uncompleted',
202
+ current_value: completedValue,
203
+ target_value: targetValue
204
+ });
205
+ }
206
+ if (cache) {
207
+ cache[groupLabel] = 1;
208
+ memo.set(label, cache);
209
+ } else {
210
+ memo.set(label, {
211
+ [groupLabel]: 1
212
+ });
295
213
  }
296
214
  }
297
- }, _callee2, this);
298
- }));
299
- function queryDb(_x2) {
300
- return _queryDb.apply(this, arguments);
301
- }
302
- return queryDb;
303
- }()
304
- }]);
305
- return CompletenessCalculator;
306
- }(BaseCalculator);
215
+ }
216
+ });
217
+ resultList.colorMap = colorMap;
218
+ }
219
+ return resultList;
220
+ }
221
+ }
307
222
  export default CompletenessCalculator;
@@ -1,22 +1,22 @@
1
- var IGNORE_KEYS = ['description', 'format_version', 'plugin_settings', 'plugins', 'statistics', 'version', 'scripts', 'settings'];
2
- var TABLE_IGNORE_KEYS = ['summary_configs', 'is_header_locked'];
3
- var copyValue = function copyValue(value) {
4
- var newValue = {};
5
- Object.keys(value).forEach(function (key) {
1
+ const IGNORE_KEYS = ['description', 'format_version', 'plugin_settings', 'plugins', 'statistics', 'version', 'scripts', 'settings'];
2
+ const TABLE_IGNORE_KEYS = ['summary_configs', 'is_header_locked'];
3
+ const copyValue = value => {
4
+ const newValue = {};
5
+ Object.keys(value).forEach(key => {
6
6
  if (key !== 'tables' && !IGNORE_KEYS.includes(key)) {
7
7
  newValue[key] = value[key];
8
8
  }
9
9
  });
10
- var tables = value.tables;
11
- var newTables = [];
12
- tables.forEach(function (table) {
13
- var newTable = {};
14
- Object.keys(table).forEach(function (key) {
10
+ const tables = value.tables;
11
+ const newTables = [];
12
+ tables.forEach(table => {
13
+ const newTable = {};
14
+ Object.keys(table).forEach(key => {
15
15
  if (key === 'columns') {
16
- var columns = table.columns;
17
- var newColumns = [];
18
- columns.forEach(function (column) {
19
- var newColumn = Object.assign({}, column, {
16
+ const columns = table.columns;
17
+ const newColumns = [];
18
+ columns.forEach(column => {
19
+ const newColumn = Object.assign({}, column, {
20
20
  editor: null,
21
21
  formatter: null
22
22
  });
@@ -24,10 +24,10 @@ var copyValue = function copyValue(value) {
24
24
  });
25
25
  newTable.columns = newColumns;
26
26
  } else if (key === 'views') {
27
- var views = table['views'];
28
- var newViews = [];
29
- views.forEach(function (view) {
30
- var newView = Object.assign({}, view, {
27
+ const views = table['views'];
28
+ const newViews = [];
29
+ views.forEach(view => {
30
+ const newView = Object.assign({}, view, {
31
31
  colorbys: null,
32
32
  archived_columns: null,
33
33
  archived_rows: null