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,257 @@
1
+ import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
2
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
+ import { isNumber, TableUtils, Views } from 'dtable-store';
4
+ import StatUtils from '../../utils/stat-utils';
5
+ import { getSummaryResult, isArrayCellValue } from '../../utils/common-utils';
6
+ import { LABEL_COLORS, SUMMARY_TYPE } from '../../constants';
7
+ import { getCellValue, getFormattedLabel } from '../../utils/row-utils';
8
+ export default function calculateResult(chart, value, username, userId) {
9
+ var table_id = chart.table_id,
10
+ view_id = chart.view_id,
11
+ x_axis_column_key = chart.x_axis_column_key,
12
+ x_axis_include_empty = chart.x_axis_include_empty,
13
+ groupby_date_granularity = chart.x_axis_date_granularity,
14
+ groupby_geolocation_granularity = chart.x_axis_geolocation_granularity,
15
+ y_axis_left_summary_column = chart.y_axis_left_summary_column,
16
+ y_axis_right_summary_column = chart.y_axis_right_summary_column,
17
+ y_axis_left_summary_type = chart.y_axis_left_summary_type,
18
+ y_axis_right_summary_type = chart.y_axis_right_summary_type,
19
+ y_axis_left_summary_method = chart.y_axis_left_summary_method,
20
+ y_axis_right_summary_method = chart.y_axis_right_summary_method,
21
+ y_axis_left_group_by_multiple_numeric_column = chart.y_axis_left_group_by_multiple_numeric_column,
22
+ y_axis_left_group_by_numeric_columns = chart.y_axis_left_group_by_numeric_columns;
23
+ var table = TableUtils.getTableById(value.tables, table_id);
24
+ var view = table && Views.getViewById(table.views, view_id);
25
+ if (!view) {
26
+ return [];
27
+ }
28
+ var xAxisColumn = TableUtils.getTableColumnByKey(table, x_axis_column_key);
29
+ if (!xAxisColumn) return [];
30
+ var statRows = Views.getViewRows(view, table, value, username, userId);
31
+ var formulaRows = Views.getTableFormulaResults(table, statRows, value);
32
+ var column1 = TableUtils.getTableColumnByKey(table, y_axis_left_summary_column);
33
+ var column2 = TableUtils.getTableColumnByKey(table, y_axis_right_summary_column);
34
+ var leftResultMap = new Map();
35
+ var rightResultMap = new Map();
36
+ var isColumnDataAsAnArray = isArrayCellValue(xAxisColumn);
37
+ var leftSummaryColumn = {};
38
+ var leftSummaryColumnKeys = [];
39
+ if (y_axis_left_summary_type === SUMMARY_TYPE.ADVANCED) {
40
+ if (column1) {
41
+ leftSummaryColumn[y_axis_left_summary_column] = {
42
+ method: y_axis_left_summary_method,
43
+ column_name: column1.name,
44
+ type: column1.type,
45
+ color: LABEL_COLORS[0]
46
+ };
47
+ }
48
+ if (y_axis_left_group_by_multiple_numeric_column) {
49
+ y_axis_left_group_by_numeric_columns.forEach(function (item, index) {
50
+ var summaryColumn = TableUtils.getTableColumnByKey(table, item.column_key);
51
+ if (summaryColumn) {
52
+ leftSummaryColumn[item.column_key] = {
53
+ method: item.summary_method,
54
+ column_name: summaryColumn.name,
55
+ type: summaryColumn.type,
56
+ color: LABEL_COLORS[(index + 1) % 12]
57
+ };
58
+ }
59
+ });
60
+ }
61
+ leftSummaryColumnKeys = Object.keys(leftSummaryColumn);
62
+ }
63
+ statRows.forEach(function (row) {
64
+ var rowId = row._id;
65
+ var formulaRow = formulaRows[rowId];
66
+ var currentValue = row[xAxisColumn.key];
67
+ var label = StatUtils.getGroupLabel(currentValue, formulaRow, xAxisColumn, groupby_date_granularity, groupby_geolocation_granularity, value);
68
+
69
+ // collect left y axis data
70
+ if (y_axis_left_summary_type === SUMMARY_TYPE.COUNT) {
71
+ if (isColumnDataAsAnArray) {
72
+ if (label.length > 0) {
73
+ label.forEach(function (name) {
74
+ var currentValue = leftResultMap.get(name) || 0;
75
+ currentValue = currentValue + 1;
76
+ leftResultMap.set(name, currentValue);
77
+ });
78
+ }
79
+ if (label.length === 0 && x_axis_include_empty) {
80
+ var _currentValue = leftResultMap.get(null) || 0;
81
+ _currentValue += 1;
82
+ leftResultMap.set(null, _currentValue);
83
+ }
84
+ } else {
85
+ if (x_axis_include_empty || label) {
86
+ var currentLabelCount = leftResultMap.get(label) || 0;
87
+ currentLabelCount = currentLabelCount + 1;
88
+ leftResultMap.set(label, currentLabelCount);
89
+ }
90
+ }
91
+ }
92
+ if (y_axis_left_summary_type === SUMMARY_TYPE.ADVANCED) {
93
+ if (isColumnDataAsAnArray) {
94
+ if (label.length > 0) {
95
+ label.forEach(function (name) {
96
+ var currentLabelMap = leftResultMap.get(name) || {};
97
+ leftSummaryColumnKeys.forEach(function (key) {
98
+ var cellValue = getCellValue(row, formulaRow, _objectSpread(_objectSpread({}, leftSummaryColumn[key]), {}, {
99
+ key: key
100
+ }));
101
+ var currentLabelList = currentLabelMap[key] || [];
102
+ if (isNumber(cellValue)) {
103
+ currentLabelList.push(cellValue);
104
+ }
105
+ currentLabelMap[key] = currentLabelList;
106
+ });
107
+ leftResultMap.set(name, currentLabelMap);
108
+ });
109
+ }
110
+ if (label.length === 0 && x_axis_include_empty) {
111
+ var _currentValue2 = leftResultMap.get(null) || {};
112
+ leftSummaryColumnKeys.forEach(function (key) {
113
+ var cellValue = getCellValue(row, formulaRow, _objectSpread(_objectSpread({}, leftSummaryColumn[key]), {}, {
114
+ key: key
115
+ }));
116
+ var currentLabelList = _currentValue2[key] || [];
117
+ if (isNumber(cellValue)) {
118
+ currentLabelList.push(cellValue);
119
+ }
120
+ _currentValue2[key] = currentLabelList;
121
+ });
122
+ leftResultMap.set(null, _currentValue2);
123
+ }
124
+ } else {
125
+ if (x_axis_include_empty || label) {
126
+ var _currentValue3 = leftResultMap.get(label) || {};
127
+ leftSummaryColumnKeys.forEach(function (key) {
128
+ var cellValue = getCellValue(row, formulaRow, _objectSpread(_objectSpread({}, leftSummaryColumn[key]), {}, {
129
+ key: key
130
+ }));
131
+ var currentList = _currentValue3[key] || [];
132
+ if (isNumber(cellValue)) {
133
+ currentList.push(cellValue);
134
+ }
135
+ _currentValue3[key] = currentList;
136
+ });
137
+ leftResultMap.set(label, _currentValue3);
138
+ }
139
+ }
140
+ }
141
+
142
+ // collect right y axis data
143
+ if (y_axis_right_summary_type === SUMMARY_TYPE.COUNT) {
144
+ if (isColumnDataAsAnArray) {
145
+ if (label.length > 0) {
146
+ label.forEach(function (name) {
147
+ var currentValue = rightResultMap.get(name) || 0;
148
+ currentValue = currentValue + 1;
149
+ rightResultMap.set(name, currentValue);
150
+ });
151
+ }
152
+ if (label.length === 0 && x_axis_include_empty) {
153
+ var _currentValue4 = rightResultMap.get(null) || 0;
154
+ _currentValue4 += 1;
155
+ rightResultMap.set(null, _currentValue4);
156
+ }
157
+ } else {
158
+ if (x_axis_include_empty || label) {
159
+ var _currentLabelCount = rightResultMap.get(label) || 0;
160
+ _currentLabelCount = _currentLabelCount + 1;
161
+ rightResultMap.set(label, _currentLabelCount);
162
+ }
163
+ }
164
+ }
165
+ if (y_axis_right_summary_column && y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED) {
166
+ var cellValue = getCellValue(row, formulaRow, column2);
167
+ if (isColumnDataAsAnArray) {
168
+ if (label.length > 0) {
169
+ label.forEach(function (name) {
170
+ var currentLabelList = rightResultMap.get(name) || [];
171
+ if (isNumber(cellValue)) {
172
+ currentLabelList.push(cellValue);
173
+ }
174
+ rightResultMap.set(name, currentLabelList);
175
+ });
176
+ }
177
+ if (label.length === 0 && x_axis_include_empty) {
178
+ var _currentValue5 = rightResultMap.get(null) || [];
179
+ if (isNumber(cellValue)) {
180
+ _currentValue5.push(cellValue);
181
+ }
182
+ rightResultMap.set(null, _currentValue5);
183
+ }
184
+ } else {
185
+ if (x_axis_include_empty || label) {
186
+ var currentLabelList = rightResultMap.get(label) || [];
187
+ if (isNumber(cellValue)) {
188
+ currentLabelList.push(cellValue);
189
+ }
190
+ rightResultMap.set(label, currentLabelList);
191
+ }
192
+ }
193
+ }
194
+ });
195
+
196
+ // Summary collect data
197
+ var results = [];
198
+ var targetMap = leftResultMap;
199
+ if (leftSummaryColumnKeys.length === 0 && y_axis_left_summary_type === SUMMARY_TYPE.ADVANCED) {
200
+ targetMap = rightResultMap;
201
+ }
202
+ var _iterator = _createForOfIteratorHelper(targetMap),
203
+ _step;
204
+ try {
205
+ var _loop = function _loop() {
206
+ var item = _step.value;
207
+ var key = item[0];
208
+ var leftValue = item[1];
209
+ var value1 = 0,
210
+ value2 = 0;
211
+ var rightValue = rightResultMap.get(key);
212
+ if (y_axis_right_summary_type === SUMMARY_TYPE.COUNT) {
213
+ value2 = rightValue;
214
+ }
215
+ if (y_axis_right_summary_type === SUMMARY_TYPE.ADVANCED) {
216
+ value2 = getSummaryResult(rightValue, y_axis_right_summary_method);
217
+ }
218
+ if (!y_axis_left_group_by_multiple_numeric_column) {
219
+ if (y_axis_left_summary_type === SUMMARY_TYPE.COUNT) {
220
+ value1 = leftValue;
221
+ }
222
+ if (y_axis_left_summary_type === SUMMARY_TYPE.ADVANCED) {
223
+ var list = leftValue[column1.key];
224
+ value1 = getSummaryResult(list, y_axis_left_summary_method);
225
+ }
226
+ results.push({
227
+ name: key,
228
+ value_left: value1,
229
+ value_right: value2
230
+ });
231
+ } else {
232
+ leftSummaryColumnKeys.forEach(function (columnKey) {
233
+ var list = leftValue[columnKey];
234
+ var value = getSummaryResult(list, leftSummaryColumn[columnKey].method);
235
+ results.push({
236
+ name: key,
237
+ value_left: value,
238
+ color: leftSummaryColumn[columnKey].color,
239
+ value_right: value2
240
+ });
241
+ });
242
+ }
243
+ };
244
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
245
+ _loop();
246
+ }
247
+ } catch (err) {
248
+ _iterator.e(err);
249
+ } finally {
250
+ _iterator.f();
251
+ }
252
+ StatUtils.sortStatistics(results, xAxisColumn, 'name');
253
+ results.forEach(function (item) {
254
+ item.name = getFormattedLabel(xAxisColumn, item.name, value.collaborators);
255
+ });
256
+ return results;
257
+ }
@@ -0,0 +1,149 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper";
3
+ import { TableUtils, Views } from 'dtable-store';
4
+ import StatUtils from '../../utils/stat-utils';
5
+ import { getSummaryResult } from '../../utils/common-utils';
6
+ import { getCellValue } from '../../utils/row-utils';
7
+ import { SUMMARY_TYPE } from '../../constants';
8
+ function calculateChart(chart, value, username, userId) {
9
+ var table_id = chart.table_id,
10
+ view_id = chart.view_id,
11
+ x_axis_column_key = chart.x_axis_column_key,
12
+ y_axis_summary_type = chart.y_axis_summary_type,
13
+ y_axis_summary_method = chart.y_axis_summary_method,
14
+ y_axis_column_key = chart.y_axis_column_key,
15
+ x_axis_date_granularity = chart.x_axis_date_granularity,
16
+ x_axis_date_range_start = chart.x_axis_date_range_start,
17
+ x_axis_date_range_end = chart.x_axis_date_range_end,
18
+ x_axis_compared_date_range_start = chart.x_axis_compared_date_range_start,
19
+ x_axis_compared_date_range_end = chart.x_axis_compared_date_range_end,
20
+ display_increase = chart.display_increase;
21
+ var groupName1 = "".concat(x_axis_date_range_start, " - ").concat(x_axis_date_range_end);
22
+ var groupName2 = "".concat(x_axis_compared_date_range_start, " - ").concat(x_axis_compared_date_range_end);
23
+ var table = TableUtils.getTableById(value.tables, table_id);
24
+ var view = table && Views.getViewById(table.views, view_id);
25
+ if (!view || !x_axis_column_key) {
26
+ return [];
27
+ }
28
+ var groupbyColumn = TableUtils.getTableColumnByKey(table, x_axis_column_key);
29
+ if (!groupbyColumn) {
30
+ return [];
31
+ }
32
+ var summaryColumn = TableUtils.getTableColumnByKey(table, y_axis_column_key) || {};
33
+ var statRows = Views.getViewRows(view, table, value, username, userId);
34
+ var formulaRows = Views.getTableFormulaResults(table, statRows, value);
35
+ var dateRangeResultMap = new Map();
36
+ var comparedDateRangeResultMap = new Map();
37
+ var isAdvance = y_axis_summary_type === SUMMARY_TYPE.ADVANCED;
38
+ statRows.forEach(function (row) {
39
+ var rowId = row._id;
40
+ var cellValue = row[groupbyColumn.key];
41
+ var formulaRow = formulaRows[rowId];
42
+ if (!cellValue) return;
43
+ if (cellValue >= x_axis_date_range_start && cellValue <= x_axis_date_range_end || cellValue >= x_axis_compared_date_range_start && cellValue <= x_axis_compared_date_range_end) {
44
+ var name = StatUtils.getGroupLabel(cellValue, formulaRow, groupbyColumn, x_axis_date_granularity, '', value);
45
+ if (cellValue >= x_axis_date_range_start && cellValue <= x_axis_date_range_end) {
46
+ if (isAdvance) {
47
+ var currentValue = dateRangeResultMap.get(name);
48
+ var _cellValue = getCellValue(row, formulaRow, summaryColumn);
49
+ if (!currentValue) {
50
+ dateRangeResultMap.set(name, [_cellValue]);
51
+ } else {
52
+ currentValue.push(_cellValue);
53
+ }
54
+ } else {
55
+ var _currentValue = dateRangeResultMap.get(name);
56
+ if (!_currentValue) {
57
+ dateRangeResultMap.set(name, 1);
58
+ } else {
59
+ dateRangeResultMap.set(name, _currentValue + 1);
60
+ }
61
+ }
62
+ } else {
63
+ if (isAdvance) {
64
+ var _currentValue2 = comparedDateRangeResultMap.get(name);
65
+ var _cellValue2 = getCellValue(row, formulaRow, summaryColumn);
66
+ if (!_currentValue2 && summaryColumn) {
67
+ comparedDateRangeResultMap.set(name, [_cellValue2]);
68
+ } else {
69
+ _currentValue2.push(_cellValue2);
70
+ }
71
+ } else {
72
+ var _currentValue3 = comparedDateRangeResultMap.get(name);
73
+ if (!_currentValue3) {
74
+ comparedDateRangeResultMap.set(name, 1);
75
+ } else {
76
+ comparedDateRangeResultMap.set(name, _currentValue3 + 1);
77
+ }
78
+ }
79
+ }
80
+ }
81
+ });
82
+ var dateRangeResult = [];
83
+ var comparedDateRangeResult = [];
84
+ var data = summaryColumn.data || {};
85
+ var _iterator = _createForOfIteratorHelper(dateRangeResultMap),
86
+ _step;
87
+ try {
88
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
89
+ var item = _step.value;
90
+ var key = item[0];
91
+ var _value = item[1];
92
+ if (isAdvance) {
93
+ _value = getSummaryResult(_value, y_axis_summary_method, data.precision);
94
+ }
95
+ dateRangeResult.push({
96
+ name: key,
97
+ value: _value,
98
+ group_name: groupName1,
99
+ raw_name: key
100
+ });
101
+ }
102
+ } catch (err) {
103
+ _iterator.e(err);
104
+ } finally {
105
+ _iterator.f();
106
+ }
107
+ StatUtils.sortStatistics(dateRangeResult, groupbyColumn, 'name');
108
+ var _iterator2 = _createForOfIteratorHelper(comparedDateRangeResultMap),
109
+ _step2;
110
+ try {
111
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
112
+ var _item = _step2.value;
113
+ var _key = _item[0];
114
+ var _value2 = _item[1];
115
+ if (isAdvance) {
116
+ _value2 = getSummaryResult(_value2, y_axis_summary_method, data.precision);
117
+ }
118
+ comparedDateRangeResult.push({
119
+ name: _key,
120
+ value: _value2,
121
+ group_name: groupName2,
122
+ raw_name: _key
123
+ });
124
+ }
125
+ } catch (err) {
126
+ _iterator2.e(err);
127
+ } finally {
128
+ _iterator2.f();
129
+ }
130
+ StatUtils.sortStatistics(comparedDateRangeResult, groupbyColumn, 'name');
131
+ for (var i = 0; i < dateRangeResult.length; i++) {
132
+ if (!comparedDateRangeResult[i]) break;
133
+ comparedDateRangeResult[i].name = dateRangeResult[i].name;
134
+ if (display_increase) {
135
+ var value1 = dateRangeResult[i].value,
136
+ value2 = comparedDateRangeResult[i].value || 0.001;
137
+ if (!value2) {
138
+ comparedDateRangeResult[i].increase_value = 1;
139
+ } else {
140
+ comparedDateRangeResult[i].increase_value = Number(((value1 - value2) / value2).toFixed(2));
141
+ }
142
+ }
143
+ }
144
+ if (comparedDateRangeResult.length > dateRangeResult.length) {
145
+ comparedDateRangeResult = comparedDateRangeResult.slice(0, dateRangeResult.length);
146
+ }
147
+ return [].concat(_toConsumableArray(comparedDateRangeResult), dateRangeResult);
148
+ }
149
+ export default calculateChart;
@@ -0,0 +1,153 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import { FORMULA_COLUMN_TYPES_MAP, isNumber, TableUtils, Views } from 'dtable-store';
3
+ import { isArrayCellValue } from '../../utils/common-utils';
4
+ import { getCellValue, getFormattedLabel } from '../../utils/row-utils';
5
+ import StatUtils from '../../utils/stat-utils';
6
+ import { PIE_CHART_COLORS } from '../../constants';
7
+ function calculateResult(chart, value, username, userId) {
8
+ var table_id = chart.table_id,
9
+ view_id = chart.view_id,
10
+ name_column = chart.name_column,
11
+ completed_column = chart.completed_column,
12
+ target_column = chart.target_column,
13
+ group_column = chart.group_column,
14
+ date_granularity = chart.date_granularity,
15
+ geolocation_granularity = chart.geolocation_granularity;
16
+ var table = TableUtils.getTableById(value.tables, table_id);
17
+ var view = table && Views.getViewById(table.views, view_id);
18
+ if (!view) {
19
+ return [];
20
+ }
21
+ var nameColumn = TableUtils.getTableColumnByKey(table, name_column);
22
+ if (!nameColumn) return [];
23
+ var statRows = Views.getViewRows(view, table, value, username, userId);
24
+ var formulaRows = Views.getTableFormulaResults(table, statRows, value);
25
+ var groupColumn = TableUtils.getTableColumnByKey(table, group_column);
26
+ var isColumnDataAsAnArray = isArrayCellValue(nameColumn);
27
+ var isGroupChart = !!groupColumn;
28
+ var result = [];
29
+ if (!isGroupChart) {
30
+ var memo = new Map();
31
+ statRows.forEach(function (row) {
32
+ var rowId = row._id;
33
+ var formulaRow = formulaRows[rowId] || {};
34
+ var name = row[nameColumn.key];
35
+ if (name || Number.isFinite(name)) {
36
+ var label = StatUtils.getGroupLabel(name, formulaRow, nameColumn, '', '', value);
37
+ if (isColumnDataAsAnArray) {
38
+ label = label[0];
39
+ }
40
+ label = getFormattedLabel(nameColumn, label, value.collaborators);
41
+ if (!memo.get(label)) {
42
+ var completedColumn = TableUtils.getTableColumnByKey(table, completed_column);
43
+ var targetColumn = TableUtils.getTableColumnByKey(table, target_column);
44
+ var currentValue = getCellValue(row, formulaRow, completedColumn);
45
+ var targetValue = getCellValue(row, formulaRow, targetColumn);
46
+ currentValue = isNumber(currentValue) ? currentValue : 0;
47
+ targetValue = isNumber(targetValue) ? targetValue : 0;
48
+ if (currentValue >= targetValue) {
49
+ result.unshift({
50
+ name: label,
51
+ value: currentValue,
52
+ type: 'completed',
53
+ current_value: currentValue,
54
+ target_value: targetValue
55
+ });
56
+ } else {
57
+ result.unshift({
58
+ name: label,
59
+ value: currentValue,
60
+ type: 'completed',
61
+ current_value: currentValue,
62
+ target_value: targetValue
63
+ }, {
64
+ name: label,
65
+ value: targetValue - currentValue,
66
+ type: 'uncompleted',
67
+ current_value: currentValue,
68
+ target_value: targetValue
69
+ });
70
+ }
71
+ memo.set(label, 1);
72
+ }
73
+ }
74
+ });
75
+ } else {
76
+ var _memo = new Map();
77
+ var colorMap = {};
78
+ var colorIndex = 0;
79
+ var isFormulaType = FORMULA_COLUMN_TYPES_MAP[groupColumn.type];
80
+ var isGroupColumnDataAsAnArray = isArrayCellValue(groupColumn);
81
+ statRows.forEach(function (row) {
82
+ var rowId = row._id;
83
+ var formulaRow = formulaRows[rowId] || {};
84
+ var name = row[nameColumn.key],
85
+ groupLabelName = !isFormulaType ? row[groupColumn.key] : formulaRow[rowId][groupColumn.key];
86
+ if ((name || Number.isFinite(name)) && (groupLabelName || Number.isFinite(groupLabelName))) {
87
+ var label = StatUtils.getGroupLabel(name, formulaRow, nameColumn, '', '', value),
88
+ groupLabel = StatUtils.getGroupLabel(groupLabelName, formulaRow, groupColumn, date_granularity, geolocation_granularity, value);
89
+ if (isColumnDataAsAnArray) {
90
+ label = label[0];
91
+ }
92
+ if (isGroupColumnDataAsAnArray) {
93
+ groupLabel = groupLabel[0];
94
+ }
95
+ label = getFormattedLabel(nameColumn, label, value.collaborators);
96
+ groupLabel = getFormattedLabel(groupColumn, groupLabel, value.collaborators);
97
+ var color = colorMap[groupLabel];
98
+ if (!color) {
99
+ color = PIE_CHART_COLORS[colorIndex % 12];
100
+ colorMap[groupLabel] = color;
101
+ colorIndex++;
102
+ }
103
+ var cache = _memo.get(label);
104
+ if (groupLabel && (!cache || !cache[groupLabel])) {
105
+ var completedColumn = TableUtils.getTableColumnByKey(table, completed_column);
106
+ var targetColumn = TableUtils.getTableColumnByKey(table, target_column);
107
+ var currentValue = getCellValue(row, formulaRow, completedColumn);
108
+ var targetValue = getCellValue(row, formulaRow, targetColumn);
109
+ currentValue = isNumber(currentValue) ? currentValue : 0;
110
+ targetValue = isNumber(targetValue) ? targetValue : 0;
111
+ if (currentValue >= targetValue) {
112
+ result.unshift({
113
+ name: label,
114
+ group_label: groupLabel,
115
+ value: currentValue,
116
+ color: color,
117
+ type: 'completed',
118
+ current_value: currentValue,
119
+ target_value: targetValue
120
+ });
121
+ } else {
122
+ result.unshift({
123
+ name: label,
124
+ group_label: groupLabel,
125
+ value: currentValue,
126
+ color: color,
127
+ type: 'completed',
128
+ current_value: currentValue,
129
+ target_value: targetValue
130
+ }, {
131
+ name: label,
132
+ group_label: groupLabel,
133
+ value: targetValue - currentValue,
134
+ color: color,
135
+ type: 'uncompleted',
136
+ current_value: currentValue,
137
+ target_value: targetValue
138
+ });
139
+ }
140
+ if (cache) {
141
+ cache[groupLabel] = 1;
142
+ _memo.set(label, cache);
143
+ } else {
144
+ _memo.set(label, _defineProperty({}, groupLabel, 1));
145
+ }
146
+ }
147
+ }
148
+ });
149
+ result.colorMap = colorMap;
150
+ }
151
+ return result;
152
+ }
153
+ export default calculateResult;
@@ -0,0 +1,56 @@
1
+ import { isNumber, isNumericColumn, TableUtils, Views } from 'dtable-store';
2
+ import { getSummaryResult } from '../../utils/common-utils';
3
+ import { getCellValue } from '../../utils/row-utils';
4
+ function calculateResult(chart, value, username, userId) {
5
+ var table_id = chart.table_id,
6
+ view_id = chart.view_id,
7
+ target_value_column = chart.target_value_column,
8
+ target_value_column_summary_method = chart.target_value_column_summary_method,
9
+ total_value_column = chart.total_value_column,
10
+ total_value_column_summary_method = chart.total_value_column_summary_method;
11
+ var selectedTable = TableUtils.getTableById(value.tables, table_id);
12
+ var selectedView = selectedTable && Views.getViewById(selectedTable.views, view_id);
13
+ var selectedColumn1 = TableUtils.getTableColumnByKey(selectedTable, target_value_column);
14
+ var selectedColumn2 = TableUtils.getTableColumnByKey(selectedTable, total_value_column);
15
+ var statRows = Views.getViewRows(selectedView, selectedTable, value, username, userId);
16
+ if (statRows.length === 0) {
17
+ return 0;
18
+ }
19
+ var isNumericColumn1 = selectedColumn1 && isNumericColumn(selectedColumn1);
20
+ var isNumericColumn2 = selectedColumn2 && isNumericColumn(selectedColumn2);
21
+ var formulaRows = isNumericColumn1 || isNumericColumn2 ? Views.getTableFormulaResults(selectedTable, statRows, value) : {};
22
+ var result1;
23
+ var result2;
24
+ var numberList1 = [];
25
+ var numberList2 = [];
26
+ statRows.forEach(function (row) {
27
+ var formulaRow = formulaRows[row._id];
28
+ if (isNumericColumn1) {
29
+ var cellValue1 = getCellValue(row, formulaRow, selectedColumn1);
30
+ if (isNumber(cellValue1)) {
31
+ numberList1.push(cellValue1);
32
+ }
33
+ }
34
+ if (isNumericColumn2) {
35
+ var cellValue2 = getCellValue(row, formulaRow, selectedColumn2);
36
+ if (isNumber(cellValue2)) {
37
+ numberList2.push(cellValue2);
38
+ }
39
+ }
40
+ });
41
+ if (target_value_column_summary_method === 'Row_count') {
42
+ result1 = statRows.length;
43
+ } else {
44
+ result1 = getSummaryResult(numberList1, target_value_column_summary_method);
45
+ }
46
+ if (total_value_column_summary_method === 'Row_count') {
47
+ result2 = statRows.length;
48
+ } else {
49
+ result2 = getSummaryResult(numberList2, total_value_column_summary_method);
50
+ }
51
+ if (result2 === 0) {
52
+ return 0;
53
+ }
54
+ return result1 / result2;
55
+ }
56
+ export default calculateResult;