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,410 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
+ import { CellType, DATE_COLUMN_OPTIONS, FORMULA_COLUMN_TYPES_MAP, TableUtils, Views } from 'dtable-store';
4
+ import { STATISTICS_COUNT_TYPE, STAT_TYPE, Y_AXIS_TYPE_PREFIX } from '../../constants';
5
+ import { getColorFromSingleSelectColumn } from '../../utils/column-utils';
6
+ import { isArrayCellValue } from '../../utils/common-utils';
7
+ import { getFormattedLabel, isValidRow } from '../../utils/row-utils';
8
+ import StatUtils from '../../utils/stat-utils';
9
+ var MAP_CHART_TYPES = [STAT_TYPE.MAP, STAT_TYPE.WORLD_MAP, STAT_TYPE.MAP_BUBBLE, STAT_TYPE.WORLD_MAP_BUBBLE];
10
+ function calculateChart(chart, value, username, userId) {
11
+ var type = chart.type;
12
+ if (MAP_CHART_TYPES.includes(type)) {
13
+ return calculateGeolocationBasicChart(chart, value, username, userId);
14
+ }
15
+ if (type === STAT_TYPE.CUSTOM_BAR) {
16
+ return calculateCustomBar(chart, value, username, userId);
17
+ }
18
+ var column_groupby_column_key = chart.column_groupby_column_key,
19
+ column_groupby_multiple_numeric_column = chart.column_groupby_multiple_numeric_column;
20
+ if (!column_groupby_column_key && !column_groupby_multiple_numeric_column) {
21
+ return calculateBasicChart(chart, value, username, userId);
22
+ }
23
+ return calculateGroupingChart(chart, value, username, userId);
24
+ }
25
+ function calculateBasicChart(chart, value, username, userId) {
26
+ var table_id = chart.table_id,
27
+ view_id = chart.view_id,
28
+ sort_type = chart.sort_type;
29
+ var groupby_column_key;
30
+ var summary_type;
31
+ var summary_method;
32
+ var summary_column_key;
33
+ var groupby_date_granularity;
34
+ var include_empty;
35
+ var groupby_geolocation_granularity;
36
+ if (chart.type === STAT_TYPE.PIE || chart.type === STAT_TYPE.RING || chart.type === STAT_TYPE.TREEMAP) {
37
+ groupby_column_key = chart.groupby_column_key;
38
+ summary_type = chart.summary_type;
39
+ summary_method = chart.summary_method;
40
+ summary_column_key = chart.summary_column_key;
41
+ groupby_date_granularity = chart.groupby_date_granularity;
42
+ include_empty = chart.groupby_include_empty_cells;
43
+ groupby_geolocation_granularity = chart.groupby_geolocation_granularity;
44
+ } else {
45
+ groupby_column_key = chart.x_axis_column_key;
46
+ summary_type = chart.y_axis_summary_type;
47
+ summary_method = chart.y_axis_summary_method;
48
+ summary_column_key = chart.y_axis_column_key;
49
+ groupby_date_granularity = chart.x_axis_date_granularity;
50
+ groupby_geolocation_granularity = chart.x_axis_geolocation_granularity;
51
+ include_empty = chart.x_axis_include_empty;
52
+ }
53
+ var table = TableUtils.getTableById(value.tables, table_id);
54
+ var view = table && Views.getViewById(table.views, view_id);
55
+ if (!view) {
56
+ return;
57
+ }
58
+ var groupbyColumn = groupby_column_key && TableUtils.getTableColumnByKey(table, groupby_column_key);
59
+ if (!groupbyColumn) {
60
+ return;
61
+ }
62
+ var summaryColumn = TableUtils.getTableColumnByKey(table, summary_column_key);
63
+ var groupby_column_type = groupbyColumn.type;
64
+ if (DATE_COLUMN_OPTIONS.includes(groupby_column_type) && !groupby_date_granularity) {
65
+ groupby_date_granularity = STATISTICS_COUNT_TYPE.MONTH;
66
+ }
67
+ if (groupby_column_type === CellType.GEOLOCATION && !groupby_geolocation_granularity) {
68
+ groupby_geolocation_granularity = STATISTICS_COUNT_TYPE.PROVINCE;
69
+ }
70
+ var yAxisType = null;
71
+ var statRows = Views.getViewRows(view, table, value, username, userId);
72
+ var formulaRows = Views.getTableFormulaResults(table, statRows, value);
73
+ var isGroupbyColumnDataAsAnArray = isArrayCellValue(groupbyColumn);
74
+ var results = getBasicChartResults(statRows, formulaRows, groupbyColumn, include_empty, isGroupbyColumnDataAsAnArray, groupby_date_granularity, groupby_geolocation_granularity, summaryColumn, summary_type, summary_method, yAxisType, value);
75
+ if (sort_type) {
76
+ StatUtils.sortStatisticData(results, sort_type); // sortby statistic value
77
+ } else {
78
+ StatUtils.sortStatistics(results, groupbyColumn, 'name'); // sortby statistic label
79
+ }
80
+
81
+ results.forEach(function (item) {
82
+ item.name = getFormattedLabel(groupbyColumn, item.name, value.collaborators);
83
+ });
84
+ return results;
85
+ }
86
+ function calculateGroupingChart(chart, value, username, userId) {
87
+ var table_id = chart.table_id,
88
+ view_id = chart.view_id,
89
+ x_axis_column_key = chart.x_axis_column_key,
90
+ x_axis_include_empty = chart.x_axis_include_empty,
91
+ y_axis_column_key = chart.y_axis_column_key,
92
+ y_axis_summary_type = chart.y_axis_summary_type,
93
+ y_axis_summary_method = chart.y_axis_summary_method,
94
+ column_groupby_multiple_numeric_column = chart.column_groupby_multiple_numeric_column;
95
+ var groupby_column_key = x_axis_column_key;
96
+ var column_groupby_column_key = chart.column_groupby_column_key;
97
+ var column_groupby_date_granularity = chart.column_groupby_date_granularity;
98
+ var column_groupby_geolocation_granularity = chart.column_groupby_geolocation_granularity;
99
+ var groupby_date_granularity = chart.x_axis_date_granularity;
100
+ var groupby_geolocation_granularity = chart.x_axis_geolocation_granularity;
101
+ var column_groupby_numeric_columns = chart.column_groupby_numeric_columns || [];
102
+ var table = TableUtils.getTableById(value.tables, table_id);
103
+ var view = table && Views.getViewById(table.views, view_id);
104
+ if (!view) {
105
+ return;
106
+ }
107
+ var groupbyColumn = groupby_column_key && TableUtils.getTableColumnByKey(table, groupby_column_key);
108
+ if (!groupbyColumn) {
109
+ return;
110
+ }
111
+ var groupby_column_type = groupbyColumn.type;
112
+ if (DATE_COLUMN_OPTIONS.includes(groupby_column_type) && !groupby_date_granularity) {
113
+ groupby_date_granularity = STATISTICS_COUNT_TYPE.MONTH;
114
+ }
115
+ if (groupby_column_type === CellType.GEOLOCATION && !groupby_geolocation_granularity) {
116
+ groupby_geolocation_granularity = STATISTICS_COUNT_TYPE.PROVINCE;
117
+ }
118
+ var yAxisType = null;
119
+ var statRows = Views.getViewRows(view, table, value, username, userId);
120
+ var formulaRows = Views.getTableFormulaResults(table, statRows, value);
121
+ var results = getGroupingChartResults(statRows, formulaRows, groupbyColumn, x_axis_include_empty, groupby_date_granularity, groupby_geolocation_granularity, column_groupby_column_key, column_groupby_date_granularity, column_groupby_geolocation_granularity, y_axis_column_key, y_axis_summary_type, y_axis_summary_method, column_groupby_multiple_numeric_column, column_groupby_numeric_columns, yAxisType, table, value);
122
+ StatUtils.sortStatistics(results, groupbyColumn, 'name');
123
+ results = results.map(function (result) {
124
+ return _objectSpread(_objectSpread({}, result), {}, {
125
+ name: getFormattedLabel(groupbyColumn, result.name, value.collaborators)
126
+ });
127
+ });
128
+ return results;
129
+ }
130
+ function getGroupChartStatResult(table, value, groupbyColumn, groupColumnKey, statRows, formulaRows, includeEmpty, groupbyDateGranularity, groupbyGeolocationGranularity, columnGroupbyGateGranularity, columnGroupbyGeolocationGranularity, summaryColumn, summaryType, summaryMethod, columnGroupbyMultipleNumericColumn, yAxisType) {
131
+ var columnGroupbyColumn = TableUtils.getTableColumnByKey(table, groupColumnKey);
132
+ if (!columnGroupbyColumn) {
133
+ return [];
134
+ }
135
+ var result = [];
136
+ var isGroupbyColumnDataAsAnArray = isArrayCellValue(groupbyColumn);
137
+ var isColumnGroupbyColumnDataAsAnArray = isArrayCellValue(columnGroupbyColumn);
138
+ statRows.forEach(function (row) {
139
+ var rowId = row._id;
140
+ var formulaRow = formulaRows[rowId];
141
+ if (isValidRow(row, formulaRow, groupbyColumn, includeEmpty)) {
142
+ var name = StatUtils.getGroupLabel(row[groupbyColumn.key], formulaRow, groupbyColumn, groupbyDateGranularity, groupbyGeolocationGranularity, value);
143
+ var groupName = columnGroupbyColumn.name;
144
+ if (!columnGroupbyMultipleNumericColumn) {
145
+ groupName = StatUtils.getGroupLabel(row[columnGroupbyColumn.key], formulaRow, columnGroupbyColumn, columnGroupbyGateGranularity, columnGroupbyGeolocationGranularity, value);
146
+ }
147
+ if (isGroupbyColumnDataAsAnArray) {
148
+ if (name.length === 0 && includeEmpty) {
149
+ groupChartRows(result, null, row, isColumnGroupbyColumnDataAsAnArray, groupName, includeEmpty, yAxisType);
150
+ } else {
151
+ name.forEach(function (n) {
152
+ groupChartRows(result, n, row, isColumnGroupbyColumnDataAsAnArray, groupName, includeEmpty, yAxisType);
153
+ });
154
+ }
155
+ } else {
156
+ groupChartRows(result, name, row, isColumnGroupbyColumnDataAsAnArray, groupName, includeEmpty, yAxisType);
157
+ }
158
+ }
159
+ });
160
+ updateChartValue(summaryColumn, summaryType, summaryMethod, formulaRows, result);
161
+ return result;
162
+ }
163
+ function updateBasicChartRows(results, index, name, row, yAxisType) {
164
+ var updatedResult;
165
+ if (index > -1) {
166
+ updatedResult = results[index];
167
+ updatedResult.rows.push(row);
168
+ results[index] = updatedResult;
169
+ } else {
170
+ updatedResult = {
171
+ name: name,
172
+ rows: [row]
173
+ };
174
+ if (yAxisType) {
175
+ updatedResult.y_axis_type = yAxisType;
176
+ }
177
+ results.push(updatedResult);
178
+ }
179
+ }
180
+ function groupChartRows(results, name, row, isColumnGroupbyColumnDataAsAnArray, groupName, include_empty, yAxisType) {
181
+ if (isColumnGroupbyColumnDataAsAnArray) {
182
+ if (groupName.length === 0) {
183
+ updateGroupingChartRows(results, name, null, row, yAxisType);
184
+ } else {
185
+ groupName.forEach(function (v) {
186
+ updateGroupingChartRows(results, name, v, row, yAxisType);
187
+ });
188
+ }
189
+ } else {
190
+ if (!groupName && groupName !== 0 && !include_empty) {
191
+ return;
192
+ }
193
+ updateGroupingChartRows(results, name, groupName, row, yAxisType);
194
+ }
195
+ }
196
+ function updateGroupingChartRows(results, name, groupName, row, yAxisType) {
197
+ var updatedIndex = -1;
198
+ for (var i = 0; i < results.length; i++) {
199
+ if (results[i].name === name && results[i].group_name === groupName) {
200
+ updatedIndex = i;
201
+ break;
202
+ }
203
+ }
204
+ var updatedResult;
205
+ if (updatedIndex > -1) {
206
+ updatedResult = results[updatedIndex];
207
+ updatedResult.rows.push(row);
208
+ results[updatedIndex] = updatedResult;
209
+ } else {
210
+ updatedResult = {
211
+ name: name,
212
+ rows: [row],
213
+ group_name: groupName
214
+ };
215
+ if (yAxisType) {
216
+ updatedResult.y_axis_type = yAxisType;
217
+ }
218
+ results.push(updatedResult);
219
+ }
220
+ }
221
+ function updateChartValue(summaryColumn, summary_type, summary_method, formula_rows) {
222
+ var results = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
223
+ var _ref = summaryColumn || {},
224
+ summaryColumnKey = _ref.key,
225
+ summaryColumnType = _ref.type;
226
+ Array.isArray(results) && results.forEach(function (item, index) {
227
+ var rows = item.rows;
228
+ var updated = _objectSpread({}, item);
229
+ var value = StatUtils.getTotal(summaryColumnKey, summaryColumnType, summary_type, summary_method, rows, formula_rows);
230
+ updated.value = value;
231
+ updated.formatted_value = StatUtils.getFormattedValue(value, summaryColumn);
232
+ results[index] = updated;
233
+ });
234
+ }
235
+ function getBasicChartResults(rows, formulaRows, groupbyColumn, includeEmpty, isGroupbyColumnDataAsAnArray, groupbyDateGranularity, groupbyGeolocationGranularity, summaryColumn, summaryType, summaryMethod, yAxisType, value) {
236
+ var results = [];
237
+ rows.forEach(function (row) {
238
+ var rowId = row._id;
239
+ var formulaRow = formulaRows[rowId];
240
+ if (!isValidRow(row, formulaRow, groupbyColumn, includeEmpty)) return;
241
+ var name = StatUtils.getGroupLabel(row[groupbyColumn.key], formulaRow, groupbyColumn, groupbyDateGranularity, groupbyGeolocationGranularity, value);
242
+ if (isGroupbyColumnDataAsAnArray) {
243
+ if (name.length === 0 && includeEmpty) {
244
+ var nameIndex = results.findIndex(function (result) {
245
+ return !result.name;
246
+ });
247
+ updateBasicChartRows(results, nameIndex, null, row, yAxisType);
248
+ } else {
249
+ name.forEach(function (n) {
250
+ var nameIndex = results.findIndex(function (result) {
251
+ return n === result.name;
252
+ });
253
+ updateBasicChartRows(results, nameIndex, n, row, yAxisType);
254
+ });
255
+ }
256
+ } else {
257
+ var _nameIndex = results.findIndex(function (result) {
258
+ return result.name === name;
259
+ });
260
+ updateBasicChartRows(results, _nameIndex, name, row, yAxisType);
261
+ }
262
+ });
263
+ updateChartValue(summaryColumn, summaryType, summaryMethod, formulaRows, results);
264
+ return results;
265
+ }
266
+ function getGroupingChartResults(rows, formulaRows, groupbyColumn, xAxisIncludeEmpty, groupbyDateGranularity, groupbyGeolocationGranularity, columnGroupbyColumnKey, columnGroupbyDateGranularity, columnGroupbyGeolocationGranularity, yAxisColumnKey, yAxisSummaryType, yAxisSummaryMethod, isColumnGroupbyNumericColumns, columnGroupbyNumericColumns, yAxisType, table, value) {
267
+ var results = [];
268
+ if (isColumnGroupbyNumericColumns) {
269
+ var allColumnGroupbyNumericColumns = [{
270
+ column_key: yAxisColumnKey,
271
+ summary_method: yAxisSummaryMethod
272
+ }];
273
+ if (Array.isArray(columnGroupbyNumericColumns) && columnGroupbyNumericColumns.length > 0) {
274
+ allColumnGroupbyNumericColumns.push.apply(allColumnGroupbyNumericColumns, _toConsumableArray(columnGroupbyNumericColumns));
275
+ }
276
+ allColumnGroupbyNumericColumns.forEach(function (numericSummaryColumn) {
277
+ var summary_column_key = numericSummaryColumn.column_key,
278
+ summary_method = numericSummaryColumn.summary_method;
279
+ var currentResults = getGroupbyNumericColumnsChartResults(rows, formulaRows, groupbyColumn, xAxisIncludeEmpty, groupbyDateGranularity, groupbyGeolocationGranularity, summary_column_key, columnGroupbyDateGranularity, columnGroupbyGeolocationGranularity, yAxisSummaryType, summary_method, yAxisType, table, value);
280
+ results = results.concat(currentResults);
281
+ });
282
+ } else {
283
+ results = getGroupbyOneColumnChartResults(rows, formulaRows, groupbyColumn, xAxisIncludeEmpty, groupbyDateGranularity, groupbyGeolocationGranularity, columnGroupbyColumnKey, columnGroupbyDateGranularity, columnGroupbyGeolocationGranularity, yAxisColumnKey, yAxisSummaryType, yAxisSummaryMethod, yAxisType, table, value);
284
+ }
285
+ return results;
286
+ }
287
+ function getGroupbyOneColumnChartResults(rows, formulaRows, groupbyColumn, includeEmpty, groupbyDateGranularity, groupbyGeolocationGranularity, columnGroupbyColumnKey, columnGroupbyDateGranularity, columnGroupbyGeolocationGranularity, summaryColumnKey, summaryType, summaryMethod, yAxisType, table, value) {
288
+ var summaryColumn = TableUtils.getTableColumnByKey(table, summaryColumnKey);
289
+ var columnGroupbyMultipleNumericColumn = false;
290
+ var results = getGroupChartStatResult(table, value, groupbyColumn, columnGroupbyColumnKey, rows, formulaRows, includeEmpty, groupbyDateGranularity, groupbyGeolocationGranularity, columnGroupbyDateGranularity, columnGroupbyGeolocationGranularity, summaryColumn, summaryType, summaryMethod, columnGroupbyMultipleNumericColumn, yAxisType);
291
+ var columnGroupByColumn = TableUtils.getTableColumnByKey(table, columnGroupbyColumnKey);
292
+ results = results.map(function (result) {
293
+ var groupName = result.group_name;
294
+ var formattedResult = _objectSpread({}, result);
295
+ if (columnGroupByColumn.type == CellType.SINGLE_SELECT) {
296
+ formattedResult.color = getColorFromSingleSelectColumn(columnGroupByColumn, groupName);
297
+ }
298
+ formattedResult.group_name = getFormattedLabel(columnGroupByColumn, groupName, value.collaborators);
299
+ return formattedResult;
300
+ });
301
+ return results;
302
+ }
303
+ function getGroupbyNumericColumnsChartResults(rows, formulaRows, groupbyColumn, includeEmpty, groupbyDateGranularity, groupbyGeolocationGranularity, numericSummaryColumnKey, columnGroupbyDateGranularity, columnGroupbyGeolocationGranularity, summaryType, summaryMethod, yAxisType, table, value) {
304
+ var summaryColumn = TableUtils.getTableColumnByKey(table, numericSummaryColumnKey);
305
+ var columnGroupbyMultipleNumericColumn = true;
306
+ return getGroupChartStatResult(table, value, groupbyColumn, numericSummaryColumnKey, rows, formulaRows, includeEmpty, groupbyDateGranularity, groupbyGeolocationGranularity, columnGroupbyDateGranularity, columnGroupbyGeolocationGranularity, summaryColumn, summaryType, summaryMethod, columnGroupbyMultipleNumericColumn, yAxisType);
307
+ }
308
+ function calculateGeolocationBasicChart(chart, value, username, userId) {
309
+ var table_id = chart.table_id,
310
+ view_id = chart.view_id,
311
+ geo_column = chart.geo_column,
312
+ geolocation_granularity = chart.geolocation_granularity,
313
+ summary_type = chart.summary_type,
314
+ summary_column = chart.summary_column,
315
+ summary_method = chart.summary_method;
316
+ var table = TableUtils.getTableById(value.tables, table_id);
317
+ var view = table && Views.getViewById(table.views, view_id);
318
+ if (!view) {
319
+ return;
320
+ }
321
+ var geoColumn = geo_column && TableUtils.getTableColumnByKey(table, geo_column);
322
+ if (!geoColumn) {
323
+ return;
324
+ }
325
+ var summaryColumn = TableUtils.getTableColumnByKey(table, summary_column);
326
+ var statRows = Views.getViewRows(view, table, value, username, userId);
327
+ var formulaRows = Views.getTableFormulaResults(table, statRows, value);
328
+ var geoColumnType = geoColumn.type;
329
+ var results = [];
330
+ statRows.forEach(function (row) {
331
+ var rowId = row._id;
332
+ var formulaRow = formulaRows[rowId];
333
+ if (isValidRow(row, formulaRow, geoColumn, false)) {
334
+ if (FORMULA_COLUMN_TYPES_MAP[geoColumnType]) {
335
+ var list = formulaRow[geoColumn.key];
336
+ list.forEach(function (n) {
337
+ var nameIndex = results.findIndex(function (r) {
338
+ return n[geolocation_granularity] === r.name;
339
+ });
340
+ updateBasicChartRows(results, nameIndex, n[geolocation_granularity], row);
341
+ });
342
+ } else {
343
+ var name = row[geoColumn.key] ? row[geoColumn.key][geolocation_granularity] : null;
344
+ var nameIndex = results.findIndex(function (r) {
345
+ return r.name === name;
346
+ });
347
+ updateBasicChartRows(results, nameIndex, name, row);
348
+ }
349
+ }
350
+ });
351
+ updateChartValue(summaryColumn, summary_type, summary_method, formulaRows, results);
352
+ return results;
353
+ }
354
+ function calculateCustomBar(statItem, value, username, userId) {
355
+ var table_id = statItem.table_id,
356
+ view_id = statItem.view_id,
357
+ x_axis_column_key = statItem.x_axis_column_key,
358
+ x_axis_date_granularity = statItem.x_axis_date_granularity,
359
+ x_axis_geolocation_granularity = statItem.x_axis_geolocation_granularity,
360
+ x_axis_include_empty = statItem.x_axis_include_empty,
361
+ y_axises = statItem.y_axises;
362
+ var table = TableUtils.getTableById(value.tables, table_id);
363
+ var view = table && Views.getViewById(table.views, view_id);
364
+ if (!view || !x_axis_column_key || !Array.isArray(y_axises) || y_axises.length === 0) {
365
+ return [];
366
+ }
367
+ var groupbyColumn = TableUtils.getTableColumnByKey(table, x_axis_column_key);
368
+ if (!groupbyColumn) {
369
+ return [];
370
+ }
371
+ var groupbyColumnType = groupbyColumn.type;
372
+ var groupbyDateGranularity = x_axis_date_granularity;
373
+ var groupbyGeolocationGranularity = x_axis_geolocation_granularity;
374
+ if (DATE_COLUMN_OPTIONS.includes(groupbyColumnType) && !groupbyDateGranularity) {
375
+ groupbyDateGranularity = STATISTICS_COUNT_TYPE.MONTH;
376
+ }
377
+ if (groupbyColumnType === CellType.GEOLOCATION && !groupbyGeolocationGranularity) {
378
+ groupbyGeolocationGranularity = STATISTICS_COUNT_TYPE.PROVINCE;
379
+ }
380
+ var columnGroupbyDateGranularity = null;
381
+ var columnGroupbyGeolocationGranularity = null;
382
+ var statRows = Views.getViewRows(view, table, value, username, userId);
383
+ var formulaRows = Views.getTableFormulaResults(table, statRows, value);
384
+ var results = [];
385
+ y_axises.forEach(function (yAxis, index) {
386
+ var yAxisType = yAxis.type,
387
+ column_groupby_numeric_columns = yAxis.column_groupby_numeric_columns;
388
+ if (yAxisType === STAT_TYPE.BAR_STACK) {
389
+ // just support summary numeric columns.
390
+ if (!Array.isArray(column_groupby_numeric_columns) || column_groupby_numeric_columns.length === 0) {
391
+ return;
392
+ }
393
+ var _yAxisType = "".concat(Y_AXIS_TYPE_PREFIX).concat(index);
394
+ column_groupby_numeric_columns.forEach(function (numericSummaryColumn) {
395
+ var summary_column_key = numericSummaryColumn.column_key,
396
+ summary_method = numericSummaryColumn.summary_method;
397
+ var currentResults = getGroupbyNumericColumnsChartResults(statRows, formulaRows, groupbyColumn, x_axis_include_empty, groupbyDateGranularity, groupbyGeolocationGranularity, summary_column_key, columnGroupbyDateGranularity, columnGroupbyGeolocationGranularity, STATISTICS_COUNT_TYPE.ADVANCED, summary_method, _yAxisType, table, value);
398
+ results = results.concat(currentResults);
399
+ });
400
+ }
401
+ });
402
+ StatUtils.sortStatistics(results, groupbyColumn, 'name');
403
+ results = results.map(function (result) {
404
+ return _objectSpread(_objectSpread({}, result), {}, {
405
+ name: getFormattedLabel(groupbyColumn, result.name, value.collaborators)
406
+ });
407
+ });
408
+ return results;
409
+ }
410
+ export default calculateChart;
@@ -0,0 +1,22 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ var _typeCalculatorWorker;
3
+ import { expose } from 'comlink';
4
+ import PivotTableCalculatorWorker from './pivot-table-calculator-worker';
5
+ import BasicChartCalculatorWorker from './basic-chart-calculator-worker';
6
+ import CompareBarCalculatorWorker from './compare-bar-chart-calculator-worker';
7
+ import CompletenessCalculatorWorker from './completeness-calculator-worker';
8
+ import CombinationCalculatorWorker from './combination-calculator-worker';
9
+ import ScatterCalculatorWorker from './scatter-calculator-worker';
10
+ import MirrorCalculatorWorker from './mirror-calculator-worker';
11
+ import CardCalculatorWorker from './card-calculator-worker';
12
+ import TrendCalculatorWorker from './trend-calculator-worker';
13
+ import DashboardCalculatorWorker from './dashboard-calculator-worker';
14
+ import { STAT_TYPE } from '../../constants';
15
+ var BASIC_CHART = 'basic_chart';
16
+ var typeCalculatorWorkerMap = (_typeCalculatorWorker = {}, _defineProperty(_typeCalculatorWorker, STAT_TYPE.PIVOT_TABLE, PivotTableCalculatorWorker), _defineProperty(_typeCalculatorWorker, BASIC_CHART, BasicChartCalculatorWorker), _defineProperty(_typeCalculatorWorker, STAT_TYPE.COMPARE_BAR, CompareBarCalculatorWorker), _defineProperty(_typeCalculatorWorker, STAT_TYPE.HORIZONTAL_BAR, BasicChartCalculatorWorker), _defineProperty(_typeCalculatorWorker, STAT_TYPE.HORIZONTAL_GROUP_BAR, BasicChartCalculatorWorker), _defineProperty(_typeCalculatorWorker, STAT_TYPE.STACKED_HORIZONTAL_BAR, BasicChartCalculatorWorker), _defineProperty(_typeCalculatorWorker, STAT_TYPE.COMPLETENESS_CHART, CompletenessCalculatorWorker), _defineProperty(_typeCalculatorWorker, STAT_TYPE.GROUP_COMPLETENESS_CHART, CompletenessCalculatorWorker), _defineProperty(_typeCalculatorWorker, STAT_TYPE.SCATTER, ScatterCalculatorWorker), _defineProperty(_typeCalculatorWorker, STAT_TYPE.COMBINATION_CHART, CombinationCalculatorWorker), _defineProperty(_typeCalculatorWorker, STAT_TYPE.MAP, BasicChartCalculatorWorker), _defineProperty(_typeCalculatorWorker, STAT_TYPE.WORLD_MAP, BasicChartCalculatorWorker), _defineProperty(_typeCalculatorWorker, STAT_TYPE.HEAT_MAP, BasicChartCalculatorWorker), _defineProperty(_typeCalculatorWorker, STAT_TYPE.MIRROR, MirrorCalculatorWorker), _defineProperty(_typeCalculatorWorker, STAT_TYPE.BASIC_NUMBER_CARD, CardCalculatorWorker), _defineProperty(_typeCalculatorWorker, STAT_TYPE.TREND_CHART, TrendCalculatorWorker), _defineProperty(_typeCalculatorWorker, STAT_TYPE.DASHBOARD, DashboardCalculatorWorker), _typeCalculatorWorker);
17
+ function calculator(chart, value, username, userId) {
18
+ var type = chart.type;
19
+ var calculatorWorker = typeCalculatorWorkerMap[type] || typeCalculatorWorkerMap[BASIC_CHART];
20
+ return calculatorWorker(chart, value, username, userId);
21
+ }
22
+ expose(calculator);
@@ -0,0 +1,28 @@
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, dtableValue, username, userId) {
5
+ var table_id = chart.table_id,
6
+ view_id = chart.view_id,
7
+ numeric_column = chart.numeric_column,
8
+ summary_method = chart.summary_method;
9
+ var selectedTable = TableUtils.getTableById(dtableValue.tables, table_id);
10
+ var selectedView = selectedTable && Views.getViewById(selectedTable.views, view_id);
11
+ var selectedColumn = TableUtils.getTableColumnByKey(selectedTable, numeric_column);
12
+ var _isNumericColumn = selectedColumn && isNumericColumn(selectedColumn);
13
+ var statRows = Views.getViewRows(selectedView, selectedTable, dtableValue, username, userId);
14
+ var formulaRows = _isNumericColumn ? Views.getTableFormulaResults(selectedTable, statRows, dtableValue) : {};
15
+ var numberList = [];
16
+ _isNumericColumn && statRows.forEach(function (row) {
17
+ var formulaRow = formulaRows[row._id];
18
+ var cellValue = getCellValue(row, formulaRow, selectedColumn);
19
+ if (isNumber(cellValue)) {
20
+ numberList.push(cellValue);
21
+ }
22
+ });
23
+ if (summary_method === 'Row_count') {
24
+ return statRows.length;
25
+ }
26
+ return getSummaryResult(numberList, summary_method);
27
+ }
28
+ export default calculateResult;