sea-chart 0.0.1

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 (214) hide show
  1. package/README.md +4 -0
  2. package/lib/assets/icons/area-chart.svg +10 -0
  3. package/lib/assets/icons/bar-chart.svg +12 -0
  4. package/lib/assets/icons/card.svg +22 -0
  5. package/lib/assets/icons/combination-chart.svg +17 -0
  6. package/lib/assets/icons/dtable-logo.svg +16 -0
  7. package/lib/assets/icons/facet-chart.svg +12 -0
  8. package/lib/assets/icons/gauge.svg +18 -0
  9. package/lib/assets/icons/heat-map.svg +14 -0
  10. package/lib/assets/icons/histogram.svg +12 -0
  11. package/lib/assets/icons/line-chart.svg +12 -0
  12. package/lib/assets/icons/map.svg +20 -0
  13. package/lib/assets/icons/pie-chart.svg +11 -0
  14. package/lib/assets/icons/rectangular-tree-diagram.svg +10 -0
  15. package/lib/assets/icons/scatter-chart.svg +15 -0
  16. package/lib/assets/icons/type-change.svg +17 -0
  17. package/lib/assets/img/area-chart.png +0 -0
  18. package/lib/assets/img/area-group-chart.png +0 -0
  19. package/lib/assets/img/bar-group.png +0 -0
  20. package/lib/assets/img/bar-stack.png +0 -0
  21. package/lib/assets/img/bar.png +0 -0
  22. package/lib/assets/img/combination-chart.png +0 -0
  23. package/lib/assets/img/compared-chart.png +0 -0
  24. package/lib/assets/img/completeness-chart.png +0 -0
  25. package/lib/assets/img/custom-bar.png +0 -0
  26. package/lib/assets/img/dashboard-chart.png +0 -0
  27. package/lib/assets/img/group-completeness-chart.png +0 -0
  28. package/lib/assets/img/group_line.png +0 -0
  29. package/lib/assets/img/heat-map.png +0 -0
  30. package/lib/assets/img/horizontal-bar.png +0 -0
  31. package/lib/assets/img/horizontal-group-bar.png +0 -0
  32. package/lib/assets/img/line.png +0 -0
  33. package/lib/assets/img/map-bubble.png +0 -0
  34. package/lib/assets/img/map.png +0 -0
  35. package/lib/assets/img/mirror.png +0 -0
  36. package/lib/assets/img/number-card.png +0 -0
  37. package/lib/assets/img/pie.png +0 -0
  38. package/lib/assets/img/pivot-table.png +0 -0
  39. package/lib/assets/img/ring.png +0 -0
  40. package/lib/assets/img/scatter.png +0 -0
  41. package/lib/assets/img/stacked-horizontal-bar.png +0 -0
  42. package/lib/assets/img/treemap.png +0 -0
  43. package/lib/assets/img/trend-chart.png +0 -0
  44. package/lib/assets/img/world-map-bubble.png +0 -0
  45. package/lib/assets/img/world-map.png +0 -0
  46. package/lib/components/collaborator/index.js +24 -0
  47. package/lib/components/formatter/area.js +162 -0
  48. package/lib/components/formatter/bar-group.js +160 -0
  49. package/lib/components/formatter/bar.js +150 -0
  50. package/lib/components/formatter/basic-number-card.js +138 -0
  51. package/lib/components/formatter/chart-component.js +266 -0
  52. package/lib/components/formatter/combination.js +407 -0
  53. package/lib/components/formatter/dashboard.js +182 -0
  54. package/lib/components/formatter/horizontal-bar-group.js +161 -0
  55. package/lib/components/formatter/horizontal-bar.js +152 -0
  56. package/lib/components/formatter/horizontal-component.js +91 -0
  57. package/lib/components/formatter/index.js +181 -0
  58. package/lib/components/formatter/line-group.js +157 -0
  59. package/lib/components/formatter/line.js +170 -0
  60. package/lib/components/formatter/pie.js +201 -0
  61. package/lib/components/formatter/ring.js +277 -0
  62. package/lib/components/formatter/table/index.css +103 -0
  63. package/lib/components/formatter/table/index.js +42 -0
  64. package/lib/components/formatter/table/one-dimension-table-no-numeric-columns.js +145 -0
  65. package/lib/components/formatter/table/one-dimension-table-with-numeric-columns.js +193 -0
  66. package/lib/components/formatter/table/pivot-table-display-name.js +249 -0
  67. package/lib/components/formatter/table/two-dimension-table.js +241 -0
  68. package/lib/components/formatter/treemap.js +213 -0
  69. package/lib/components/icon/index.css +5 -0
  70. package/lib/components/icon/index.js +22 -0
  71. package/lib/components/index.js +5 -0
  72. package/lib/components/loading/index.css +54 -0
  73. package/lib/components/loading/index.js +10 -0
  74. package/lib/components/number-input/index.js +31 -0
  75. package/lib/components/pixel-editor/index.css +29 -0
  76. package/lib/components/pixel-editor/index.js +42 -0
  77. package/lib/components/select-group/index.css +67 -0
  78. package/lib/components/select-group/index.js +63 -0
  79. package/lib/components/settings/advance-bar-settings/data-settings.js +120 -0
  80. package/lib/components/settings/advance-bar-settings/index.js +3 -0
  81. package/lib/components/settings/advance-bar-settings/style-settings.js +149 -0
  82. package/lib/components/settings/bar-settings/data-settings.js +137 -0
  83. package/lib/components/settings/bar-settings/index.js +3 -0
  84. package/lib/components/settings/bar-settings/style-settings.js +163 -0
  85. package/lib/components/settings/basic-number-card/data-settings.js +121 -0
  86. package/lib/components/settings/basic-number-card/index.js +3 -0
  87. package/lib/components/settings/basic-number-card/style-settings.js +42 -0
  88. package/lib/components/settings/combination-settings/data-settings.js +256 -0
  89. package/lib/components/settings/combination-settings/index.js +3 -0
  90. package/lib/components/settings/combination-settings/style-settings.js +183 -0
  91. package/lib/components/settings/dashboard-settings/data-settings.js +167 -0
  92. package/lib/components/settings/dashboard-settings/index.js +2 -0
  93. package/lib/components/settings/data-settings.js +67 -0
  94. package/lib/components/settings/horizontal-bar-settings/data-settings.js +45 -0
  95. package/lib/components/settings/horizontal-bar-settings/index.js +3 -0
  96. package/lib/components/settings/horizontal-bar-settings/style-settings.js +38 -0
  97. package/lib/components/settings/index.css +73 -0
  98. package/lib/components/settings/index.js +74 -0
  99. package/lib/components/settings/pie-settings/data-settings.js +123 -0
  100. package/lib/components/settings/pie-settings/index.js +3 -0
  101. package/lib/components/settings/pie-settings/style-settings.js +123 -0
  102. package/lib/components/settings/style-settings.js +100 -0
  103. package/lib/components/settings/table-settings/data-settings.js +488 -0
  104. package/lib/components/settings/table-settings/index.js +2 -0
  105. package/lib/components/settings/time-comparison-settings/data-settings.js +157 -0
  106. package/lib/components/settings/time-comparison-settings/index.js +3 -0
  107. package/lib/components/settings/time-comparison-settings/style-settings.js +191 -0
  108. package/lib/components/settings/widgets/basic-summary/index.css +12 -0
  109. package/lib/components/settings/widgets/basic-summary/index.js +173 -0
  110. package/lib/components/settings/widgets/common-data-settings.js +42 -0
  111. package/lib/components/settings/widgets/data-filter/index.css +17 -0
  112. package/lib/components/settings/widgets/data-filter/index.js +76 -0
  113. package/lib/components/settings/widgets/data-sort.js +38 -0
  114. package/lib/components/settings/widgets/date-summary-item.js +126 -0
  115. package/lib/components/settings/widgets/display-values-settings/index.css +13 -0
  116. package/lib/components/settings/widgets/display-values-settings/index.js +37 -0
  117. package/lib/components/settings/widgets/divider/index.css +4 -0
  118. package/lib/components/settings/widgets/divider/index.js +10 -0
  119. package/lib/components/settings/widgets/font-settings/font-size-settings.js +31 -0
  120. package/lib/components/settings/widgets/font-settings/font-weight-settings.js +46 -0
  121. package/lib/components/settings/widgets/font-settings/index.js +3 -0
  122. package/lib/components/settings/widgets/group-by.js +168 -0
  123. package/lib/components/settings/widgets/label-color.js +30 -0
  124. package/lib/components/settings/widgets/min-max-setting.js +64 -0
  125. package/lib/components/settings/widgets/mininum-slice-percent.js +72 -0
  126. package/lib/components/settings/widgets/numeric-summary-item.js +109 -0
  127. package/lib/components/settings/widgets/select-table/index.css +0 -0
  128. package/lib/components/settings/widgets/select-table/index.js +49 -0
  129. package/lib/components/settings/widgets/stack.js +58 -0
  130. package/lib/components/settings/widgets/statistic-type/index.css +31 -0
  131. package/lib/components/settings/widgets/statistic-type/index.js +54 -0
  132. package/lib/components/settings/widgets/summary-method-setting.js +80 -0
  133. package/lib/components/settings/widgets/summary-settings.js +394 -0
  134. package/lib/components/settings/widgets/switch/index.css +37 -0
  135. package/lib/components/settings/widgets/switch/index.js +21 -0
  136. package/lib/components/settings/widgets/text-horizontal-settings.js +23 -0
  137. package/lib/components/settings/widgets/time-picker.js +182 -0
  138. package/lib/components/settings/widgets/title-settings/index.js +58 -0
  139. package/lib/components/settings/widgets/title-settings/title-text.js +31 -0
  140. package/lib/components/settings/widgets/x-axios.js +0 -0
  141. package/lib/components/settings/widgets/y-axis-group-settings.js +399 -0
  142. package/lib/components/types-dialog/index.css +97 -0
  143. package/lib/components/types-dialog/index.js +127 -0
  144. package/lib/constants/geolocation.js +11 -0
  145. package/lib/constants/index.js +164 -0
  146. package/lib/constants/model.js +167 -0
  147. package/lib/constants/style.js +13 -0
  148. package/lib/constants/type-image.js +32 -0
  149. package/lib/constants/type.js +97 -0
  150. package/lib/context.js +49 -0
  151. package/lib/index.js +6 -0
  152. package/lib/intl.js +37 -0
  153. package/lib/layout/index.js +4 -0
  154. package/lib/layout/statistic/index.css +53 -0
  155. package/lib/layout/statistic/index.js +190 -0
  156. package/lib/layout/title/index.css +3 -0
  157. package/lib/layout/title/index.js +41 -0
  158. package/lib/locale/index.js +11 -0
  159. package/lib/locale/lang/de.js +141 -0
  160. package/lib/locale/lang/en.js +143 -0
  161. package/lib/locale/lang/es.js +141 -0
  162. package/lib/locale/lang/fr.js +141 -0
  163. package/lib/locale/lang/pt.js +141 -0
  164. package/lib/locale/lang/ru.js +141 -0
  165. package/lib/locale/lang/zh_CN.js +143 -0
  166. package/lib/model/area-group.js +51 -0
  167. package/lib/model/area.js +42 -0
  168. package/lib/model/bar-group.js +54 -0
  169. package/lib/model/bar-stack.js +51 -0
  170. package/lib/model/bar.js +48 -0
  171. package/lib/model/base-model.js +11 -0
  172. package/lib/model/basic-number-card.js +32 -0
  173. package/lib/model/combination.js +48 -0
  174. package/lib/model/compare-bar.js +49 -0
  175. package/lib/model/completeness-group.js +34 -0
  176. package/lib/model/completeness.js +28 -0
  177. package/lib/model/dashboard.js +26 -0
  178. package/lib/model/generic-model.js +235 -0
  179. package/lib/model/heat-map.js +33 -0
  180. package/lib/model/horizontal-bar.js +48 -0
  181. package/lib/model/horizontal-group-bar.js +53 -0
  182. package/lib/model/index.js +36 -0
  183. package/lib/model/line-group.js +54 -0
  184. package/lib/model/line.js +48 -0
  185. package/lib/model/map-bubble.js +37 -0
  186. package/lib/model/map.js +37 -0
  187. package/lib/model/mirror.js +36 -0
  188. package/lib/model/pie.js +36 -0
  189. package/lib/model/ring.js +36 -0
  190. package/lib/model/scatter.js +29 -0
  191. package/lib/model/stacked-horizontal-bar.js +42 -0
  192. package/lib/model/statistic.js +22 -0
  193. package/lib/model/table.js +33 -0
  194. package/lib/model/tree-map.js +30 -0
  195. package/lib/model/trend.js +34 -0
  196. package/lib/model/user.js +22 -0
  197. package/lib/model/world-map-bubble.js +36 -0
  198. package/lib/model/world-map.js +36 -0
  199. package/lib/utils/cell-format-utils.js +41 -0
  200. package/lib/utils/chart.js +6 -0
  201. package/lib/utils/collaborator-utils.js +40 -0
  202. package/lib/utils/column-utils.js +247 -0
  203. package/lib/utils/custom-g2.js +612 -0
  204. package/lib/utils/data-filter/filter-item-utils.js +80 -0
  205. package/lib/utils/data-filter/filters-utils.js +406 -0
  206. package/lib/utils/data-filter/index.js +3 -0
  207. package/lib/utils/date-translate.js +66 -0
  208. package/lib/utils/index.js +50 -0
  209. package/lib/utils/key-generator.js +13 -0
  210. package/lib/utils/object-utils.js +61 -0
  211. package/lib/utils/options-utils.js +61 -0
  212. package/lib/utils/statistic-column-2-sql-column-utils.js +499 -0
  213. package/lib/utils/statistic-utils.js +1685 -0
  214. package/package.json +160 -0
@@ -0,0 +1,1685 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
4
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
5
+ var _class;
6
+ import shallowEqual from 'shallowequal';
7
+ import dayjs from 'dayjs';
8
+ import { CellType, COLLABORATOR_COLUMN_TYPES, FORMULA_COLUMN_TYPES_MAP, FORMULA_RESULT_TYPE, MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP, getDateDisplayString, getFormulaDisplayString, getNumberDisplayString, getOption, getPrecisionNumber, getTableById, getTableColumnByKey, isNumber, isNumericColumn, isDateColumn, sortText, sortNumber, sortDate, sortSingleSelect, sortFormula, getColumnOptions } from 'dtable-utils';
9
+ import { PIE_CHART_COLORS, STATISTIC_SUMMARY_TYPE, STATISTIC_SUPPORT_SORT_COLUMNS, STATISTIC_TYPE, STATISTIC_STYLE_SETTING_KEYS, DEFAULT_LABEL_FONT_SIZE, DEFAULT_NUMBER_FORMAT_OBJECT, SUPPORT_DATA_SORT_STATISTIC_TYPES, X_AXIS_IS_GROUPBY_COLUMN_KEY_STATISTIC_TYPES, STYLE_COLORS, LABEL_COLORS } from '../constants';
10
+ import statisticColumn2SqlColumn, { summaryMethodColumn2SqlColumn } from './statistic-column-2-sql-column-utils';
11
+ import { getClientFormulaDisplayString, getClientLinkDisplayString } from './cell-format-utils';
12
+ import { getKnownCollaboratorByEmail, generateDefaultUser } from './collaborator-utils';
13
+ import { getDateColumnFormat, getColumnByKey } from './column-utils';
14
+ import ObjectUtils from './object-utils';
15
+ import intl from '../intl';
16
+ var StatisticsUtils = /*#__PURE__*/function () {
17
+ function StatisticsUtils() {
18
+ _classCallCheck(this, StatisticsUtils);
19
+ }
20
+ _createClass(StatisticsUtils, null, [{
21
+ key: "formatGroupsLabel",
22
+ value: function formatGroupsLabel(results, statistic, tables) {
23
+ var _this = this;
24
+ if (!results) return;
25
+ var groupby_column_key, column_groupby_column_key;
26
+ var type = statistic.type,
27
+ config = statistic.config;
28
+ if (X_AXIS_IS_GROUPBY_COLUMN_KEY_STATISTIC_TYPES.includes(type)) {
29
+ groupby_column_key = config.groupby_column_key;
30
+ } else {
31
+ groupby_column_key = config.x_axis_column_key;
32
+ column_groupby_column_key = config.column_groupby_column_key;
33
+ }
34
+ var table_id = config.table_id;
35
+ var table = getTableById(tables, table_id);
36
+ var groupbyColumn = getTableColumnByKey(table, groupby_column_key);
37
+ var columnGroupbyColumn = getTableColumnByKey(table, column_groupby_column_key);
38
+ results.forEach(function (item) {
39
+ var name = item.name,
40
+ group_name = item.group_name;
41
+ if (groupbyColumn) {
42
+ _this.convertResultName(item, groupbyColumn, name, 'name', 'color');
43
+ }
44
+ if (columnGroupbyColumn) {
45
+ _this.convertResultName(item, columnGroupbyColumn, group_name, 'group_name', 'group_color');
46
+ }
47
+ });
48
+ }
49
+ }, {
50
+ key: "convertResultName",
51
+ value: function convertResultName(result, column, name, nameKey, colorKey) {
52
+ var columnType = column.type,
53
+ columnData = column.data;
54
+ if (columnType === CellType.SINGLE_SELECT || columnType === CellType.MULTIPLE_SELECT) {
55
+ var options = getColumnOptions(column);
56
+ var selectedOption = getOption(options, name);
57
+ if (selectedOption) {
58
+ result[nameKey] = selectedOption.name;
59
+ result[colorKey] = selectedOption.color;
60
+ } else {
61
+ result[colorKey] = '#dbdbdb';
62
+ }
63
+ } else if (columnType === CellType.COLLABORATOR) {
64
+ var collaborator = getKnownCollaboratorByEmail(name);
65
+ if (collaborator) {
66
+ result[nameKey] = collaborator.name;
67
+ }
68
+ } else if (columnType === CellType.CREATOR || columnType === CellType.LAST_MODIFIER) {
69
+ if (name === 'anonymous') {
70
+ result[nameKey] = name;
71
+ } else {
72
+ var _collaborator = getKnownCollaboratorByEmail(name);
73
+ var collaboratorTemplate = {
74
+ loaded: false,
75
+ email: name,
76
+ name: name
77
+ };
78
+ window.seaStatistic.context.updateCollaboratorsCache(name, collaboratorTemplate);
79
+ if (!_collaborator) {
80
+ window.seaStatistic.queryUsers([name], function (emailUserMap) {
81
+ var collaborator = emailUserMap && emailUserMap[name] || generateDefaultUser(name);
82
+ var loadedCollaborator = _objectSpread(_objectSpread({}, collaborator), {}, {
83
+ loaded: true
84
+ });
85
+ window.seaStatistic.context.updateCollaboratorsCache(name, loadedCollaborator);
86
+ result[nameKey] = name;
87
+ });
88
+ } else {
89
+ result[nameKey] = _collaborator.name;
90
+ }
91
+ }
92
+ } else if (columnType === CellType.NUMBER) {
93
+ var valueNumber = parseFloat(name);
94
+ result[nameKey] = isNumber(valueNumber) ? getNumberDisplayString(valueNumber, columnData) : name;
95
+ } else if (columnType === CellType.DATE) {
96
+ if (name && name.split('-').length === 3) {
97
+ var format = getDateColumnFormat(column);
98
+ var spaceIndex = format.indexOf(' ');
99
+ if (spaceIndex > -1) {
100
+ format = format.slice(0, spaceIndex);
101
+ }
102
+ result[nameKey] = dayjs(name).format(format);
103
+ }
104
+ } else if (FORMULA_COLUMN_TYPES_MAP[columnType]) {
105
+ var _ref = columnData || {},
106
+ result_type = _ref.result_type,
107
+ array_type = _ref.array_type;
108
+ if (result_type === FORMULA_RESULT_TYPE.NUMBER) {
109
+ var _valueNumber = parseFloat(name);
110
+ result[nameKey] = isNumber(_valueNumber) ? getNumberDisplayString(_valueNumber, columnData) : name;
111
+ } else if (result_type === FORMULA_RESULT_TYPE.ARRAY) {
112
+ if (COLLABORATOR_COLUMN_TYPES.includes(array_type) && Array.isArray(name)) {
113
+ result[nameKey] = name.map(function (email) {
114
+ var user = array_type === CellType.COLLABORATOR ? getKnownCollaboratorByEmail(email) : getKnownCollaboratorByEmail(email);
115
+ return (user || {}).name;
116
+ });
117
+ }
118
+ }
119
+ } else if (columnType === CellType.LINK) {
120
+ result[nameKey] = getClientFormulaDisplayString([name], columnData) || null;
121
+ }
122
+ }
123
+ }, {
124
+ key: "shouldChartComponentUpdate",
125
+ value: function shouldChartComponentUpdate(prevProps, currentProps) {
126
+ return !this.isStatisticEqual(prevProps.statistic, currentProps.statistic) ||
127
+ // statistic attributes changed
128
+ !shallowEqual(prevProps.canvasStyle, currentProps.canvasStyle) ||
129
+ // canvasStyle
130
+ !shallowEqual(prevProps.groupbyColumn, currentProps.groupbyColumn) ||
131
+ // groupbyColumn's data、type changed or not exist
132
+ !shallowEqual(prevProps.columnGroupbyColumn, currentProps.columnGroupbyColumn) ||
133
+ // columnGroupbyColumn's data、type changed or not exist
134
+ !shallowEqual(prevProps.summaryColumn, currentProps.summaryColumn) ||
135
+ // summaryColumn's data、type changed or not exist
136
+ this._isChartDataChange(prevProps, currentProps) || this.isChartStyleChanged(prevProps.statistic, currentProps.statistic);
137
+ }
138
+ }, {
139
+ key: "_isCombinationDataChange",
140
+ value: function _isCombinationDataChange(prevResult, currentResult) {
141
+ if (prevResult.value_left !== currentResult.value_left) return true;
142
+ if (prevResult.value_right !== currentResult.value_right) return true;
143
+ return false;
144
+ }
145
+ }]);
146
+ return StatisticsUtils;
147
+ }();
148
+ _class = StatisticsUtils;
149
+ StatisticsUtils.sortStatistics = function (statistics, column, sortKey) {
150
+ var columnType = column.type,
151
+ data = column.data;
152
+ var sortType = 'up';
153
+ var optionIdIndexMap = {};
154
+ if (columnType === CellType.SINGLE_SELECT) {
155
+ var _ref2 = data || {},
156
+ options = _ref2.options;
157
+ Array.isArray(options) && options.forEach(function (option, index) {
158
+ optionIdIndexMap[option.id] = index;
159
+ });
160
+ }
161
+ statistics.sort(function (currResult, nextResult) {
162
+ var current = currResult[sortKey];
163
+ var next = nextResult[sortKey];
164
+ if (!current && current !== 0) {
165
+ return -1;
166
+ }
167
+ if (!next && next !== 0) {
168
+ return 1;
169
+ }
170
+ if (STATISTIC_SUPPORT_SORT_COLUMNS.includes(columnType)) {
171
+ switch (columnType) {
172
+ case CellType.NUMBER:
173
+ case CellType.RATE:
174
+ {
175
+ if (current) {
176
+ current = current - 0;
177
+ }
178
+ if (next) {
179
+ next = next - 0;
180
+ }
181
+ return sortNumber(current, next, sortType);
182
+ }
183
+ case CellType.DATE:
184
+ case CellType.CTIME:
185
+ case CellType.MTIME:
186
+ {
187
+ return sortDate(current, next, sortType);
188
+ }
189
+ case CellType.SINGLE_SELECT:
190
+ case CellType.MULTIPLE_SELECT:
191
+ {
192
+ return sortSingleSelect(current, next, {
193
+ sort_type: sortType,
194
+ option_id_index_map: optionIdIndexMap
195
+ });
196
+ }
197
+ case CellType.FORMULA:
198
+ case CellType.LINK_FORMULA:
199
+ {
200
+ return sortFormula(current, next, sortType, {
201
+ columnData: data,
202
+ value: {}
203
+ });
204
+ }
205
+ default:
206
+ {
207
+ return sortText(current, next, sortType);
208
+ }
209
+ }
210
+ }
211
+ return 0;
212
+ });
213
+ };
214
+ StatisticsUtils.sortStatisticData = function (statistics, sort_key) {
215
+ statistics.sort(function (currResult, nextResult) {
216
+ var current = currResult.value;
217
+ var next = nextResult.value;
218
+ if (!current && current !== 0) return -1;
219
+ if (!next && next !== 0) return 1;
220
+ if (sort_key === 'ascending') {
221
+ return current > next ? 1 : -1;
222
+ }
223
+ return current > next ? -1 : 1;
224
+ });
225
+ };
226
+ StatisticsUtils.sortByDate = function (currentDate, nextDate) {
227
+ if (currentDate.name === 'undefined') return -1;
228
+ if (nextDate.name === 'undefined') return 1;
229
+ if (currentDate.name > nextDate.name) return 1;
230
+ if (currentDate.name < nextDate.name) return -1;
231
+ return 0;
232
+ };
233
+ StatisticsUtils.moveNullDataToEnd = function (arr) {
234
+ var nullData;
235
+ var nullDataIndex = arr.findIndex(function (item) {
236
+ return item.name === 'undefined';
237
+ });
238
+ if (nullDataIndex > -1) {
239
+ nullData = arr.splice(nullDataIndex, 1);
240
+ arr.push.apply(arr, _toConsumableArray(nullData));
241
+ }
242
+ return arr;
243
+ };
244
+ StatisticsUtils.getGroupColumn = function (table, statistic) {
245
+ var config = statistic.config;
246
+ var type = config.type;
247
+ if (X_AXIS_IS_GROUPBY_COLUMN_KEY_STATISTIC_TYPES.includes(type)) {
248
+ return getTableColumnByKey(table, config.groupby_column_key);
249
+ }
250
+ if (type === STATISTIC_TYPE.BASIC_NUMBER_CARD) {
251
+ return getTableColumnByKey(table, config.numeric_column_key);
252
+ }
253
+ return getTableColumnByKey(table, config.x_axis_column_key);
254
+ };
255
+ StatisticsUtils.getColumnGroupColumn = function (table, statistic) {
256
+ var config = statistic.config;
257
+ var type = config.type;
258
+ if (X_AXIS_IS_GROUPBY_COLUMN_KEY_STATISTIC_TYPES.includes(type)) {
259
+ return getTableColumnByKey(table, config.column_groupby_column_key);
260
+ }
261
+ if ([STATISTIC_TYPE.BAR_GROUP, STATISTIC_TYPE.LINE_GROUP, STATISTIC_TYPE.HORIZONTAL_GROUP_BAR].includes(type)) {
262
+ return getTableColumnByKey(table, config.column_groupby_column_key);
263
+ }
264
+ return getTableColumnByKey(table, config.y_axis_summary_column_key);
265
+ };
266
+ StatisticsUtils.getSummaryColumn = function (table, statistic) {
267
+ var config = statistic.config;
268
+ var summary_column_key = config.summary_column_key,
269
+ y_axis_summary_column_key = config.y_axis_summary_column_key,
270
+ type = config.type,
271
+ numeric_column_key = config.numeric_column_key;
272
+ switch (type) {
273
+ case STATISTIC_TYPE.BAR:
274
+ case STATISTIC_TYPE.BAR_GROUP:
275
+ case STATISTIC_TYPE.LINE:
276
+ case STATISTIC_TYPE.LINE_GROUP:
277
+ case STATISTIC_TYPE.AREA:
278
+ case STATISTIC_TYPE.HORIZONTAL_BAR:
279
+ case STATISTIC_TYPE.HORIZONTAL_GROUP_BAR:
280
+ {
281
+ return getTableColumnByKey(table, y_axis_summary_column_key);
282
+ }
283
+ case STATISTIC_TYPE.BASIC_NUMBER_CARD:
284
+ {
285
+ return getTableColumnByKey(table, numeric_column_key);
286
+ }
287
+ default:
288
+ {
289
+ return getTableColumnByKey(table, summary_column_key);
290
+ }
291
+ }
292
+ };
293
+ StatisticsUtils.getGroupName = function (tables, statistic) {
294
+ var config = statistic.config;
295
+ var table = getTableById(tables, config.table_id);
296
+ var column = _class.getGroupColumn(table, statistic);
297
+ return column.name;
298
+ };
299
+ StatisticsUtils.getChartGroups = function (statistics) {
300
+ var chartGroups = [];
301
+ Array.isArray(statistics) && statistics.forEach(function (item) {
302
+ if (!chartGroups.find(function (g) {
303
+ return g.name === item.name;
304
+ })) {
305
+ chartGroups.push(item);
306
+ }
307
+ });
308
+ return chartGroups;
309
+ };
310
+ StatisticsUtils.isValidExistStatistic = function (tables, statistic) {
311
+ if (!statistic) return false;
312
+ var config = statistic.config;
313
+ var table_id = config.table_id,
314
+ type = config.type;
315
+ var table = getTableById(tables, table_id);
316
+ if (!table) return false;
317
+ if (config.type === STATISTIC_TYPE.BASIC_NUMBER_CARD) {
318
+ var numericColumnKey = config.numeric_column_key;
319
+ if (!numericColumnKey) return false;
320
+ return getTableColumnByKey(table, numericColumnKey);
321
+ }
322
+ if (config.type === STATISTIC_TYPE.DASHBOARD) {
323
+ var targetColumnKey = config.target_value_column_key;
324
+ if (!targetColumnKey) return false;
325
+ var totalColumnKey = config.total_value_column_key;
326
+ if (!totalColumnKey) return false;
327
+ if (!getTableColumnByKey(table, targetColumnKey)) return false;
328
+ return getTableColumnByKey(table, totalColumnKey);
329
+ }
330
+ var groupByColumnKey = config.groupby_column_key || config.x_axis_column_key || config.vertical_axis_column_key;
331
+ if (!groupByColumnKey) return false;
332
+ if (!getTableColumnByKey(table, groupByColumnKey)) return false;
333
+ if (type === STATISTIC_TYPE.COMBINATION) {
334
+ var isExist = _class.isValidCombinationStatistic(config, table);
335
+ if (!isExist) return false;
336
+ } else {
337
+ var summaryColumnKey = config.summary_column_key || config.y_axis_summary_column_key || config.horizontal_axis_column_key;
338
+ var summaryType = config.summary_type || config.y_axis_summary_type || config.horizontal_axis_summary_type;
339
+ if (summaryType === STATISTIC_SUMMARY_TYPE.ADVANCED && !summaryColumnKey) return false;
340
+ if (summaryColumnKey) {
341
+ return getTableColumnByKey(table, summaryColumnKey);
342
+ }
343
+ }
344
+ return true;
345
+ };
346
+ StatisticsUtils.isValidCombinationStatistic = function (config, table) {
347
+ var summaryLeftColumnKey = config.y_axis_left_summary_column;
348
+ var summaryLeftType = config.y_axis_left_summary_type;
349
+ if (summaryLeftType === STATISTIC_SUMMARY_TYPE.ADVANCED && !summaryLeftColumnKey) return false;
350
+ if (summaryLeftColumnKey) {
351
+ if (!getTableColumnByKey(table, summaryLeftColumnKey)) return false;
352
+ }
353
+ var summaryRightColumnKey = config.y_axis_right_summary_column;
354
+ var summaryRightType = config.y_axis_right_summary_type;
355
+ if (summaryRightType === STATISTIC_SUMMARY_TYPE.ADVANCED && !summaryRightColumnKey) return false;
356
+ if (summaryRightColumnKey) {
357
+ return getTableColumnByKey(table, summaryRightColumnKey);
358
+ }
359
+ return true;
360
+ };
361
+ StatisticsUtils.getGroupLabelFromDB = function (cellValue, column, tables) {
362
+ var collaborators = window.seaStatistic.context.getCollaboratorsFromCache();
363
+ var type = column.type,
364
+ data = column.data;
365
+ switch (type) {
366
+ case CellType.TEXT:
367
+ case CellType.DATE:
368
+ case CellType.CTIME:
369
+ case CellType.MTIME:
370
+ {
371
+ return cellValue || null;
372
+ }
373
+ case CellType.NUMBER:
374
+ {
375
+ if (!cellValue && cellValue !== 0) return null;
376
+ return getPrecisionNumber(cellValue, data);
377
+ }
378
+ case CellType.SINGLE_SELECT:
379
+ {
380
+ var isInvalidValue = data && data.options && data.options.findIndex(function (opt) {
381
+ return opt.id === cellValue;
382
+ }) < 0;
383
+ return isInvalidValue ? null : cellValue;
384
+ }
385
+ case CellType.MULTIPLE_SELECT:
386
+ {
387
+ var options = data && data.options;
388
+ if (!Array.isArray(options) || options.length === 0) return [];
389
+ if (!Array.isArray(cellValue) || cellValue.length === 0) return [];
390
+ return cellValue.filter(function (optionId) {
391
+ return options.find(function (option) {
392
+ return option.id === optionId;
393
+ });
394
+ });
395
+ }
396
+ case CellType.COLLABORATOR:
397
+ {
398
+ if (!Array.isArray(collaborators) || collaborators.length === 0) return [];
399
+ if (!Array.isArray(cellValue) || cellValue.length === 0) return [];
400
+ return cellValue.filter(function (email) {
401
+ return collaborators.find(function (option) {
402
+ return option.email === email;
403
+ });
404
+ });
405
+ }
406
+ case CellType.CREATOR:
407
+ case CellType.LAST_MODIFIER:
408
+ {
409
+ return cellValue ? cellValue : null;
410
+ }
411
+ case CellType.GEOLOCATION:
412
+ {
413
+ return cellValue || null;
414
+ }
415
+ case CellType.FORMULA:
416
+ case CellType.LINK_FORMULA:
417
+ {
418
+ var validValue = getFormulaDisplayString(cellValue, data, {
419
+ tables: tables
420
+ });
421
+ if (!validValue && validValue !== 0) return null;
422
+ return validValue;
423
+ }
424
+ case CellType.LINK:
425
+ {
426
+ return Array.isArray(cellValue) ? cellValue.map(function (linked) {
427
+ return getClientLinkDisplayString([linked], data, {});
428
+ }) : [];
429
+ }
430
+ case CellType.CHECKBOX:
431
+ {
432
+ return String(cellValue) === 'true' ? 'Checked' : 'Unchecked';
433
+ }
434
+ case CellType.RATE:
435
+ {
436
+ return cellValue ? String(cellValue) : null;
437
+ }
438
+ default:
439
+ {
440
+ return null;
441
+ }
442
+ }
443
+ };
444
+ StatisticsUtils.oneDimensionStatisticTableSQLResult2JavaScript = function (statistic, sqlRows, statisticSQLMap, columnMap, tables) {
445
+ var groupbyColumn = columnMap.groupbyColumn;
446
+ var summary_type = statistic.config.summary_type;
447
+ var pivot_columns = [];
448
+ var pivot_rows = [];
449
+ var isCount = summary_type === STATISTIC_SUMMARY_TYPE.COUNT;
450
+ if (isCount) {
451
+ var _sqlGroupbyColumnKey = statisticSQLMap.sqlGroupbyColumnKey,
452
+ sqlSummaryColumnKey = statisticSQLMap.sqlSummaryColumnKey;
453
+ var _allTotal = 0;
454
+ sqlRows.forEach(function (row) {
455
+ var total = row[sqlSummaryColumnKey] || 0;
456
+ _allTotal += total;
457
+ pivot_rows.push({
458
+ name: _class.getGroupLabelFromDB(row[_sqlGroupbyColumnKey], groupbyColumn, tables),
459
+ rows: [],
460
+ total: {
461
+ total: total
462
+ }
463
+ });
464
+ });
465
+ return {
466
+ pivot_columns: pivot_columns,
467
+ pivot_rows: pivot_rows,
468
+ pivot_columns_total: {
469
+ total: _allTotal
470
+ }
471
+ };
472
+ }
473
+ var sqlGroupbyColumnKey = statisticSQLMap.sqlGroupbyColumnKey,
474
+ summarySQLColumnName2ColumnKey = statisticSQLMap.summarySQLColumnName2ColumnKey,
475
+ summaryTableColumnKey2Column = statisticSQLMap.summaryTableColumnKey2Column,
476
+ summaryTableColumnKey2Method = statisticSQLMap.summaryTableColumnKey2Method;
477
+ var summaryColumnKeys = Object.values(summarySQLColumnName2ColumnKey);
478
+ var sqlSummaryColumnKeys = Object.keys(summarySQLColumnName2ColumnKey);
479
+ var totalTemplate = {};
480
+ Object.values(summaryColumnKeys).forEach(function (key) {
481
+ var summaryMethod = summaryTableColumnKey2Method[key];
482
+ totalTemplate[key] = _class.initTotal(summaryMethod);
483
+ pivot_columns.push({
484
+ key: key
485
+ });
486
+ });
487
+ var allTotal = _objectSpread({}, totalTemplate);
488
+ sqlRows.forEach(function (row) {
489
+ var rowTotal = _objectSpread({}, totalTemplate);
490
+ sqlSummaryColumnKeys.forEach(function (key) {
491
+ var columnKey = summarySQLColumnName2ColumnKey[key];
492
+ var summaryColumn = summaryTableColumnKey2Column[columnKey];
493
+ var summaryMethod = summaryTableColumnKey2Method[columnKey];
494
+ var value = row[key] || _class.initTotal(summaryMethod);
495
+ allTotal[columnKey] = _class.getSummaryValue({
496
+ summaryColumn: summaryColumn,
497
+ summaryMethod: summaryMethod
498
+ }, allTotal[columnKey], value);
499
+ if (_class.isDateSummaryColumn(summaryColumn)) {
500
+ rowTotal[columnKey] = value;
501
+ } else if (_class.isNumericSummaryColumn(summaryColumn)) {
502
+ rowTotal[columnKey] = rowTotal[columnKey] + value;
503
+ }
504
+ });
505
+ pivot_rows.push({
506
+ name: _class.getGroupLabelFromDB(row[sqlGroupbyColumnKey], groupbyColumn, tables),
507
+ rows: [row],
508
+ total: rowTotal
509
+ });
510
+ });
511
+ if (pivot_columns.length < 2) {
512
+ var pivot_column = pivot_columns[0];
513
+ var key = pivot_column.key;
514
+ pivot_rows.forEach(function (row) {
515
+ row.total = _objectSpread(_objectSpread({}, row.total), {}, {
516
+ total: row.total[key]
517
+ });
518
+ });
519
+ allTotal = _objectSpread(_objectSpread({}, allTotal), {}, {
520
+ total: allTotal[key]
521
+ });
522
+ }
523
+ _class.sortStatistics(pivot_rows, groupbyColumn, 'name');
524
+ return {
525
+ pivot_columns: pivot_columns,
526
+ pivot_rows: pivot_rows,
527
+ pivot_columns_total: allTotal
528
+ };
529
+ };
530
+ StatisticsUtils.updateTwoDimensionColumns = function (pivot_columns, key, _ref3) {
531
+ var isIncludeEmpty = _ref3.isIncludeEmpty,
532
+ isCellValueAsAnArray = _ref3.isCellValueAsAnArray;
533
+ if (isCellValueAsAnArray) {
534
+ if ((!Array.isArray(key) || key.length === 0) && isIncludeEmpty) {
535
+ var _pivotColumnIndex = pivot_columns.findIndex(function (r) {
536
+ return !r.key;
537
+ });
538
+ if (_pivotColumnIndex < 0) {
539
+ pivot_columns.unshift({
540
+ key: null
541
+ });
542
+ }
543
+ return;
544
+ }
545
+ key.forEach(function (k) {
546
+ var pivotColumnIndex = pivot_columns.findIndex(function (r) {
547
+ return r.key === k;
548
+ });
549
+ if (pivotColumnIndex < 0) {
550
+ pivot_columns.push({
551
+ key: k
552
+ });
553
+ }
554
+ });
555
+ return;
556
+ }
557
+ var pivotColumnIndex = pivot_columns.findIndex(function (r) {
558
+ var resKey = r.key;
559
+ return resKey === null && key === null || resKey === undefined && key === undefined || resKey === 0 && key === 0 || resKey === key;
560
+ });
561
+ if (pivotColumnIndex < 0) {
562
+ pivot_columns.push({
563
+ key: key
564
+ });
565
+ }
566
+ };
567
+ StatisticsUtils.isSameGroup = function (isColumnDataAsAnArray, source, target) {
568
+ if (isColumnDataAsAnArray) {
569
+ return (!Array.isArray(source) || source.length === 0) && !target || source.includes(target);
570
+ }
571
+ return source === null && target === null || source === undefined && target === undefined || source === target;
572
+ };
573
+ StatisticsUtils.updateTwoDimensionRows = function (pivot_rows, pivot_columns, index, name, count, row, isColumnDataAsAnArray, cellValue, _ref4) {
574
+ var summaryMethod = _ref4.summaryMethod,
575
+ summaryColumn = _ref4.summaryColumn;
576
+ if (index > -1) {
577
+ var updatedPivotRow = pivot_rows[index];
578
+ var _cells = updatedPivotRow.cells,
579
+ _total = updatedPivotRow.total;
580
+ pivot_columns.forEach(function (c) {
581
+ var key = c.key;
582
+ if (_class.isSameGroup(isColumnDataAsAnArray, cellValue, key)) {
583
+ if (_cells[key]) {
584
+ _cells[key].rows.push(row);
585
+ _cells[key].total = _class.getSummaryValue({
586
+ summaryMethod: summaryMethod,
587
+ summaryColumn: summaryColumn
588
+ }, _cells[key].total, count);
589
+ } else {
590
+ _cells[key] = {
591
+ rows: [row],
592
+ total: count
593
+ };
594
+ }
595
+ }
596
+ });
597
+ updatedPivotRow.cells = _cells;
598
+ updatedPivotRow.total = _class.getSummaryValue({
599
+ summaryMethod: summaryMethod,
600
+ summaryColumn: summaryColumn
601
+ }, _total, count);
602
+ pivot_rows[index] = updatedPivotRow;
603
+ return;
604
+ }
605
+ var cells = {};
606
+ var total = _class.initTotal(summaryMethod);
607
+ pivot_columns.forEach(function (c) {
608
+ var key = c.key;
609
+ if (_class.isSameGroup(isColumnDataAsAnArray, cellValue, key)) {
610
+ cells[key] = {
611
+ rows: [row],
612
+ total: count
613
+ };
614
+ total = _class.getSummaryValue({
615
+ summaryMethod: summaryMethod,
616
+ summaryColumn: summaryColumn
617
+ }, total, count);
618
+ }
619
+ });
620
+ pivot_rows.push({
621
+ name: name,
622
+ cells: cells,
623
+ total: total
624
+ });
625
+ };
626
+ StatisticsUtils.getSummaryValue = function (_ref5, currentValue, nextValue) {
627
+ var summaryMethod = _ref5.summaryMethod,
628
+ summaryColumn = _ref5.summaryColumn;
629
+ if (_class.isDateSummaryColumn(summaryColumn)) {
630
+ if (summaryMethod === 'MAX') {
631
+ if (currentValue && nextValue) {
632
+ return dayjs(currentValue).isBefore(nextValue) ? nextValue : currentValue;
633
+ }
634
+ if (!currentValue && nextValue) return nextValue;
635
+ return currentValue;
636
+ }
637
+ if (summaryMethod === 'MIN') {
638
+ if (currentValue && nextValue) {
639
+ return dayjs(currentValue).isBefore(nextValue) ? currentValue : nextValue;
640
+ }
641
+ if (!currentValue && nextValue) return nextValue;
642
+ return currentValue;
643
+ }
644
+ return currentValue;
645
+ }
646
+ if (summaryMethod === 'MAX' || summaryMethod === 'MIN') {
647
+ if (currentValue === null && nextValue === null) return null;
648
+ if (currentValue === null) return nextValue;
649
+ if (nextValue === null) return currentValue;
650
+ }
651
+ return (currentValue - 0 || 0) + (nextValue - 0 || 0);
652
+ };
653
+ StatisticsUtils.getAndUpdateTwoDimensionTotal = function (pivot_columns_total, pivot_columns, pivot_rows, _ref6) {
654
+ var summaryMethod = _ref6.summaryMethod,
655
+ summaryColumn = _ref6.summaryColumn;
656
+ var pivot_table_total = _class.initTotal(summaryMethod);
657
+ pivot_rows.forEach(function (row) {
658
+ var cells = row.cells,
659
+ total = row.total;
660
+ pivot_table_total = _class.getSummaryValue({
661
+ summaryMethod: summaryMethod,
662
+ summaryColumn: summaryColumn
663
+ }, pivot_table_total, total);
664
+ pivot_columns.forEach(function (column) {
665
+ var key = column.key;
666
+ var cell = cells[key];
667
+ if (cell) {
668
+ var pivot_column_total = pivot_columns_total && pivot_columns_total[key] ? pivot_columns_total[key] : _class.initTotal(summaryMethod);
669
+ pivot_columns_total[key] = _class.getSummaryValue({
670
+ summaryMethod: summaryMethod,
671
+ summaryColumn: summaryColumn
672
+ }, pivot_column_total, cell.total);
673
+ }
674
+ });
675
+ });
676
+ return pivot_table_total;
677
+ };
678
+ StatisticsUtils.isValidCellValue = function (cellValue) {
679
+ var includeEmpty = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
680
+ if (includeEmpty) return true;
681
+ if (typeof cellValue === 'boolean') return true;
682
+ return cellValue || cellValue === 0;
683
+ };
684
+ StatisticsUtils.twoDimensionStatisticTableSQLResult2JavaScript = function (statistic, sqlRows, statisticSQLMap, columnMap, tables) {
685
+ var _ref7 = columnMap || {},
686
+ groupbyColumn = _ref7.groupbyColumn,
687
+ columnGroupbyColumn = _ref7.columnGroupbyColumn,
688
+ summaryColumn = _ref7.summaryColumn;
689
+ var _statistic$config = statistic.config,
690
+ groupby_include_empty_cells = _statistic$config.groupby_include_empty_cells,
691
+ summary_method = _statistic$config.summary_method;
692
+ var sqlGroupbyColumnKey = statisticSQLMap.sqlGroupbyColumnKey,
693
+ sqlColumnGroupbyColumnKey = statisticSQLMap.sqlColumnGroupbyColumnKey,
694
+ sqlSummaryColumnKey = statisticSQLMap.sqlSummaryColumnKey;
695
+ if (!sqlColumnGroupbyColumnKey) return _class.oneDimensionStatisticTableSQLResult2JavaScript(statistic, sqlRows, statisticSQLMap, columnMap, tables);
696
+ var summaryMethod = (summary_method || 'sum').toUpperCase();
697
+ var pivot_columns = [];
698
+ var pivot_rows = [];
699
+ var pivot_columns_total = {};
700
+ var isRowGroupbyColumnDataAsAnArray = !!MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[columnGroupbyColumn.type];
701
+ sqlRows.forEach(function (row) {
702
+ var groupbyColumnCellValue = row[sqlGroupbyColumnKey];
703
+ var groupbyColumnCellValueKey = _class.getGroupLabelFromDB(groupbyColumnCellValue, groupbyColumn, tables);
704
+ var columnGroupbyColumnCellValue = row[sqlColumnGroupbyColumnKey];
705
+ var columnGroupbyColumnCellValueKey = _class.getGroupLabelFromDB(columnGroupbyColumnCellValue, columnGroupbyColumn, tables);
706
+ var count = !row[sqlSummaryColumnKey] && row[sqlSummaryColumnKey] !== 0 ? null : row[sqlSummaryColumnKey];
707
+ if (_class.isValidCellValue(columnGroupbyColumnCellValue, groupby_include_empty_cells)) {
708
+ _class.updateTwoDimensionColumns(pivot_columns, columnGroupbyColumnCellValueKey, {
709
+ isIncludeEmpty: groupby_include_empty_cells,
710
+ isCellValueAsAnArray: isRowGroupbyColumnDataAsAnArray
711
+ });
712
+ }
713
+ if (_class.isValidCellValue(groupbyColumnCellValue, groupby_include_empty_cells)) {
714
+ if (MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[groupbyColumn]) {
715
+ if ((!Array.isArray(groupbyColumnCellValueKey) || groupbyColumnCellValueKey.length === 0) && groupby_include_empty_cells) {
716
+ var pivotRowIndex = pivot_rows.findIndex(function (r) {
717
+ return !r.name;
718
+ });
719
+ _class.updateTwoDimensionRows(pivot_rows, pivot_columns, pivotRowIndex, null, count, row, isRowGroupbyColumnDataAsAnArray, columnGroupbyColumnCellValueKey, {
720
+ summaryMethod: summaryMethod,
721
+ summaryColumn: summaryColumn
722
+ });
723
+ } else {
724
+ groupbyColumnCellValueKey.forEach(function (n) {
725
+ var pivotRowIndex = pivot_rows.findIndex(function (r) {
726
+ return n === r.name;
727
+ });
728
+ _class.updateTwoDimensionRows(pivot_rows, pivot_columns, pivotRowIndex, n, count, row, isRowGroupbyColumnDataAsAnArray, columnGroupbyColumnCellValueKey, {
729
+ summaryMethod: summaryMethod,
730
+ summaryColumn: summaryColumn
731
+ });
732
+ });
733
+ }
734
+ } else {
735
+ var _pivotRowIndex = pivot_rows.findIndex(function (r) {
736
+ var resName = r.name;
737
+ return resName === null && groupbyColumnCellValueKey === null || resName === undefined && groupbyColumnCellValueKey === undefined || resName === 0 && groupbyColumnCellValueKey === 0 || resName === groupbyColumnCellValueKey;
738
+ });
739
+ _class.updateTwoDimensionRows(pivot_rows, pivot_columns, _pivotRowIndex, groupbyColumnCellValueKey, count, row, isRowGroupbyColumnDataAsAnArray, columnGroupbyColumnCellValueKey, {
740
+ summaryMethod: summaryMethod,
741
+ summaryColumn: summaryColumn
742
+ });
743
+ }
744
+ }
745
+ });
746
+ var pivot_table_total = _class.getAndUpdateTwoDimensionTotal(pivot_columns_total, pivot_columns, pivot_rows, {
747
+ summaryMethod: summaryMethod,
748
+ summaryColumn: summaryColumn
749
+ });
750
+ _class.sortStatistics(pivot_rows, groupbyColumn, 'name');
751
+ _class.sortStatistics(pivot_columns, columnGroupbyColumn, 'key');
752
+ return {
753
+ pivot_columns: pivot_columns,
754
+ pivot_rows: pivot_rows,
755
+ pivot_columns_total: pivot_columns_total,
756
+ pivot_table_total: pivot_table_total
757
+ };
758
+ };
759
+ StatisticsUtils.basicChartStatisticSQLResult2JavaScript = function (statistic, sqlRows, statisticSQLMap, columnMap, tables) {
760
+ var config = statistic.config;
761
+ var type = config.type,
762
+ sort_type = config.sort_type;
763
+ var groupbyColumn = columnMap.groupbyColumn;
764
+ var isGroupbyColumnDataAsAnArray = MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[groupbyColumn.type];
765
+ var sqlGroupbyColumnKey = statisticSQLMap.sqlGroupbyColumnKey,
766
+ sqlSummaryColumnKey = statisticSQLMap.sqlSummaryColumnKey;
767
+ var result = [];
768
+ sqlRows.forEach(function (row) {
769
+ var cellValue = row[sqlGroupbyColumnKey];
770
+ var summaryValue = row[sqlSummaryColumnKey];
771
+ if (_class.isValidCellValue(cellValue)) {
772
+ var key = _class.getGroupLabelFromDB(cellValue, groupbyColumn, tables);
773
+ if (isGroupbyColumnDataAsAnArray) {
774
+ if (!Array.isArray(key) || key.length === 0) {
775
+ var itemIdx = result.findIndex(function (v) {
776
+ return v.name === null;
777
+ });
778
+ if (itemIdx < 0) {
779
+ result.push({
780
+ color: '',
781
+ name: null,
782
+ rows: [row],
783
+ value: summaryValue
784
+ });
785
+ } else {
786
+ var itemRow = result[itemIdx];
787
+ itemRow.rows.push(row);
788
+ itemRow.value = itemRow.value + summaryValue;
789
+ }
790
+ } else {
791
+ key.forEach(function (item) {
792
+ var itemIdx = result.findIndex(function (v) {
793
+ return v.name === item;
794
+ });
795
+ if (itemIdx < 0) {
796
+ result.push({
797
+ color: '',
798
+ name: item,
799
+ rows: [row],
800
+ value: summaryValue
801
+ });
802
+ } else {
803
+ var _itemRow = result[itemIdx];
804
+ _itemRow.rows.push(row);
805
+ _itemRow.value = _itemRow.value + summaryValue;
806
+ }
807
+ });
808
+ }
809
+ } else {
810
+ var _itemIdx = result.findIndex(function (v) {
811
+ return v.name === key;
812
+ });
813
+ if (_itemIdx < 0) {
814
+ result.push({
815
+ color: '',
816
+ name: key,
817
+ rows: [row],
818
+ value: summaryValue
819
+ });
820
+ } else {
821
+ var _itemRow2 = result[_itemIdx];
822
+ _itemRow2.rows.push(row);
823
+ _itemRow2.value = _itemRow2.value + summaryValue;
824
+ }
825
+ }
826
+ }
827
+ });
828
+ _class.updateTableViewList(result, groupbyColumn, 'name', 'color');
829
+ if (SUPPORT_DATA_SORT_STATISTIC_TYPES.includes(type) && sort_type) {
830
+ _class.sortStatisticData(result, sort_type);
831
+ return result;
832
+ }
833
+ _class.sortStatistics(result, groupbyColumn, 'name');
834
+ return result;
835
+ };
836
+ StatisticsUtils.basicNumberCardStatisticSQLResult2JavaScript = function (statistic, sqlRows, statisticSQLMap, columnMap, tables) {
837
+ if (sqlRows.length > 0) {
838
+ var summaryResult = sqlRows[0];
839
+ var key = Object.keys(summaryResult)[0];
840
+ return summaryResult[key];
841
+ }
842
+ return 0;
843
+ };
844
+ StatisticsUtils.combinationStatisticSQLResult2Javascript = function (statistic, sqlRows, statisticSQLMap, columnMap, tables) {
845
+ var config = statistic.config;
846
+ var y_axis_left_group_by_multiple_numeric_column = config.y_axis_left_group_by_multiple_numeric_column,
847
+ y_axis_left_summary_type = config.y_axis_left_summary_type,
848
+ y_axis_left_summary_column = config.y_axis_left_summary_column,
849
+ y_axis_left_summary_method = config.y_axis_left_summary_method,
850
+ y_axis_right_summary_type = config.y_axis_right_summary_type,
851
+ y_axis_right_summary_column = config.y_axis_right_summary_column,
852
+ table_id = config.table_id,
853
+ y_axis_left_group_by_numeric_columns = config.y_axis_left_group_by_numeric_columns;
854
+ var table = getTableById(tables, table_id);
855
+ var groupbyColumn = columnMap.groupbyColumn;
856
+ var sqlGroupbyColumnKey = statisticSQLMap.sqlGroupbyColumnKey,
857
+ sqlSummaryColumnKey = statisticSQLMap.sqlSummaryColumnKey,
858
+ sqlRightSummaryColumnKey = statisticSQLMap.sqlRightSummaryColumnKey,
859
+ sqlLeftSummaryColumnKey = statisticSQLMap.sqlLeftSummaryColumnKey;
860
+ var isGroupbyColumnDataAsAnArray = MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[groupbyColumn.type];
861
+ var result = [];
862
+ if (!y_axis_left_group_by_multiple_numeric_column) {
863
+ var leftSummaryColumn, rightSummaryColumn;
864
+ if (y_axis_left_summary_type === STATISTIC_SUMMARY_TYPE.ADVANCED) {
865
+ leftSummaryColumn = getTableColumnByKey(table, y_axis_left_summary_column);
866
+ }
867
+ if (y_axis_right_summary_type === STATISTIC_SUMMARY_TYPE.ADVANCED) {
868
+ rightSummaryColumn = getTableColumnByKey(table, y_axis_right_summary_column);
869
+ }
870
+ sqlRows.forEach(function (row) {
871
+ var cellValue = row[sqlGroupbyColumnKey];
872
+ var summaryValue = row[sqlSummaryColumnKey];
873
+ var key = _class.getGroupLabelFromDB(cellValue, groupbyColumn, tables);
874
+ var valueLeft = row[sqlLeftSummaryColumnKey] || 0;
875
+ var valueRight = row[sqlRightSummaryColumnKey] || 0;
876
+ if (y_axis_left_summary_type === STATISTIC_SUMMARY_TYPE.ADVANCED) {
877
+ valueLeft = _class.getPrecisionNumber(valueLeft, leftSummaryColumn.data);
878
+ }
879
+ if (y_axis_right_summary_type === STATISTIC_SUMMARY_TYPE.ADVANCED) {
880
+ valueRight = _class.getPrecisionNumber(valueRight, rightSummaryColumn.data);
881
+ }
882
+ if (isGroupbyColumnDataAsAnArray) {
883
+ if (!Array.isArray(key) || key.length === 0) {
884
+ var itemIdx = result.findIndex(function (v) {
885
+ return v.name === null;
886
+ });
887
+ if (itemIdx < 0) {
888
+ result.push({
889
+ color: '',
890
+ name: null,
891
+ rows: [row],
892
+ value_left: valueLeft,
893
+ value_right: valueRight
894
+ });
895
+ } else {
896
+ var itemRow = result[itemIdx];
897
+ itemRow.rows.push(row);
898
+ itemRow.value_left = itemRow.value_left + summaryValue;
899
+ itemRow.value_right = itemRow.value_right + summaryValue;
900
+ }
901
+ } else {
902
+ key.forEach(function (item) {
903
+ var itemIdx = result.findIndex(function (v) {
904
+ return v.name === item;
905
+ });
906
+ if (itemIdx < 0) {
907
+ result.push({
908
+ color: '',
909
+ name: item,
910
+ rows: [row],
911
+ value_left: valueLeft,
912
+ value_right: valueRight
913
+ });
914
+ } else {
915
+ var _itemRow3 = result[itemIdx];
916
+ _itemRow3.rows.push(row);
917
+ _itemRow3.value_left = _itemRow3.value_left + summaryValue;
918
+ _itemRow3.value_right = _itemRow3.value_right + summaryValue;
919
+ }
920
+ });
921
+ }
922
+ } else {
923
+ var _itemIdx2 = result.findIndex(function (v) {
924
+ return v.name === key;
925
+ });
926
+ if (_itemIdx2 < 0) {
927
+ result.push({
928
+ color: '',
929
+ name: key,
930
+ rows: [row],
931
+ value_left: valueLeft,
932
+ value_right: valueRight
933
+ });
934
+ } else {
935
+ var _itemRow4 = result[_itemIdx2];
936
+ _itemRow4.rows.push(row);
937
+ _itemRow4.value_left = _itemRow4.value_left + summaryValue;
938
+ _itemRow4.value_right = _itemRow4.value_right + summaryValue;
939
+ }
940
+ }
941
+ });
942
+ } else {
943
+ var _rightSummaryColumn;
944
+ if (y_axis_right_summary_type === STATISTIC_SUMMARY_TYPE.ADVANCED) {
945
+ _rightSummaryColumn = getTableColumnByKey(table, y_axis_right_summary_column);
946
+ }
947
+ var groupItems = [];
948
+ var _leftSummaryColumn = getTableColumnByKey(table, y_axis_left_summary_column);
949
+ var summaryMethod = y_axis_left_summary_method.toUpperCase();
950
+ var _summaryMethodColumn = summaryMethodColumn2SqlColumn(summaryMethod, _leftSummaryColumn || {}),
951
+ groupItem = _summaryMethodColumn.key;
952
+ _leftSummaryColumn && !groupItems.includes(groupItem) && groupItems.push(groupItem);
953
+ y_axis_left_group_by_numeric_columns.forEach(function (item, index) {
954
+ var column = getTableColumnByKey(table, item.column_key);
955
+ if (column) {
956
+ var itemSummaryMethod = item.summary_method.toUpperCase();
957
+ var _summaryMethodColumn2 = summaryMethodColumn2SqlColumn(itemSummaryMethod, column || {}),
958
+ _groupItem = _summaryMethodColumn2.key;
959
+ !groupItems.includes(_groupItem) && groupItems.push(_groupItem);
960
+ }
961
+ });
962
+ sqlRows.forEach(function (item, index) {
963
+ var cellValue = item[sqlGroupbyColumnKey];
964
+ var key = _class.getGroupLabelFromDB(cellValue, groupbyColumn, tables);
965
+ var valueRight = item[sqlRightSummaryColumnKey] || 0;
966
+ if (y_axis_right_summary_type === STATISTIC_SUMMARY_TYPE.ADVANCED) {
967
+ valueRight = _class.getPrecisionNumber(valueRight, _rightSummaryColumn.data);
968
+ }
969
+ groupItems.forEach(function (groupItem, index) {
970
+ var value = item[groupItem] || 0;
971
+ if (y_axis_right_summary_type === STATISTIC_SUMMARY_TYPE.ADVANCED) {
972
+ value = _class.getPrecisionNumber(value, _leftSummaryColumn.data);
973
+ }
974
+ result.push({
975
+ name: key,
976
+ value_left: value,
977
+ value_right: valueRight,
978
+ color: LABEL_COLORS[index % 12]
979
+ });
980
+ });
981
+ });
982
+ }
983
+ return result;
984
+ };
985
+ StatisticsUtils.getPrecisionNumber = function (value, data) {
986
+ var valueString = getPrecisionNumber(value, data);
987
+ var valueNumber = parseFloat(valueString);
988
+ return isNumber(valueNumber) ? valueNumber : 0;
989
+ };
990
+ StatisticsUtils.dashboardStatisticSQLResult2JavaScript = function (statistic, sqlRows, statisticSQLMap, columnMap, tables) {
991
+ if (sqlRows.length > 0) {
992
+ var summaryResult = sqlRows[0];
993
+ var config = statistic.config;
994
+ var target_value_column_summary_method = config.target_value_column_summary_method,
995
+ total_value_column_summary_method = config.total_value_column_summary_method,
996
+ target_value_column_key = config.target_value_column_key,
997
+ total_value_column_key = config.total_value_column_key,
998
+ table_id = config.table_id;
999
+ var table = getTableById(tables, table_id);
1000
+ var targetColumn = getTableColumnByKey(table, target_value_column_key);
1001
+ var totalColumn = getTableColumnByKey(table, total_value_column_key);
1002
+ var targetSummaryMethod = target_value_column_summary_method.toUpperCase();
1003
+ var totalSummaryMethod = total_value_column_summary_method.toUpperCase();
1004
+ var _summaryMethodColumn3 = summaryMethodColumn2SqlColumn(targetSummaryMethod, targetColumn),
1005
+ targetResultKey = _summaryMethodColumn3.key;
1006
+ var _summaryMethodColumn4 = summaryMethodColumn2SqlColumn(totalSummaryMethod, totalColumn),
1007
+ totalResultKey = _summaryMethodColumn4.key;
1008
+ var targetResult = summaryResult[targetResultKey];
1009
+ var totalResult = summaryResult[totalResultKey];
1010
+ if (totalResult === 0) {
1011
+ return 0;
1012
+ }
1013
+ return targetResult / totalResult;
1014
+ }
1015
+ return 0;
1016
+ };
1017
+ StatisticsUtils.updateTableViewListItemNameAndColor = function (result, column, nameKey, colorKey) {
1018
+ var columnType = column.type,
1019
+ columnData = column.data;
1020
+ var name = result[nameKey];
1021
+ if (columnType === CellType.SINGLE_SELECT || columnType === CellType.MULTIPLE_SELECT) {
1022
+ var options = getColumnOptions(column);
1023
+ var selectedOption = getOption(options, name);
1024
+ var _ref8 = selectedOption || {},
1025
+ optionName = _ref8.name,
1026
+ optionColor = _ref8.color;
1027
+ if (selectedOption) {
1028
+ result[nameKey] = optionName;
1029
+ result[colorKey] = optionColor;
1030
+ } else {
1031
+ result[colorKey] = '#dbdbdb';
1032
+ }
1033
+ } else if (columnType === CellType.COLLABORATOR) {
1034
+ var collaborator = getKnownCollaboratorByEmail(name);
1035
+ if (collaborator) {
1036
+ result[nameKey] = collaborator.name;
1037
+ }
1038
+ } else if (columnType === CellType.CREATOR || columnType === CellType.LAST_MODIFIER) {
1039
+ if (name === 'anonymous') {
1040
+ result[nameKey] = name;
1041
+ } else {
1042
+ var _collaborator2 = getKnownCollaboratorByEmail(name);
1043
+ var collaboratorTemplate = {
1044
+ loaded: false,
1045
+ email: name,
1046
+ name: name
1047
+ };
1048
+ window.seaStatistic.context.updateCollaboratorsCache(name, collaboratorTemplate);
1049
+ if (!_collaborator2) {
1050
+ window.seaStatistic.queryUsers([name], function (emailUserMap) {
1051
+ var collaborator = emailUserMap && emailUserMap[name] || generateDefaultUser(name);
1052
+ var loadedCollaborator = _objectSpread(_objectSpread({}, collaborator), {}, {
1053
+ loaded: true
1054
+ });
1055
+ window.seaStatistic.context.updateCollaboratorsCache(name, loadedCollaborator);
1056
+ result[nameKey] = name;
1057
+ });
1058
+ } else {
1059
+ result[nameKey] = _collaborator2.name;
1060
+ }
1061
+ }
1062
+ } else if (columnType === CellType.NUMBER) {
1063
+ var valueNumber = parseFloat(name);
1064
+ result[nameKey] = isNumber(valueNumber) ? getNumberDisplayString(valueNumber, columnData) : name;
1065
+ } else if (columnType === CellType.DATE) {
1066
+ name = name + '';
1067
+ if (name && name.split('-').length === 3) {
1068
+ var format = getDateColumnFormat(column);
1069
+ var spaceIndex = format.indexOf(' ');
1070
+ if (spaceIndex > -1) {
1071
+ format = format.slice(0, spaceIndex);
1072
+ }
1073
+ result[nameKey] = dayjs(name).format(format);
1074
+ }
1075
+ }
1076
+ };
1077
+ StatisticsUtils.updateTableViewList = function (result, column, nameKey, colorKey) {
1078
+ result.forEach(function (result) {
1079
+ _class.updateTableViewListItemNameAndColor(result, column, nameKey, colorKey);
1080
+ });
1081
+ };
1082
+ StatisticsUtils.updateGroupingChartRow = function (results, name, groupName, row, count) {
1083
+ var updatedIndex = results.findIndex(function (result) {
1084
+ return result.name === name && result.group_name === groupName;
1085
+ });
1086
+ if (updatedIndex > -1) {
1087
+ var updatedResult = results[updatedIndex];
1088
+ updatedResult.rows.push(row);
1089
+ updatedResult.value = updatedResult.value + count;
1090
+ results[updatedIndex] = updatedResult;
1091
+ } else {
1092
+ results.push({
1093
+ name: name,
1094
+ rows: [row],
1095
+ group_name: groupName,
1096
+ value: count
1097
+ });
1098
+ }
1099
+ };
1100
+ StatisticsUtils.updateGroupingChartRows = function (results, name, row, count, isColumnGroupbyColumnDataAsAnArray, groupName) {
1101
+ if (isColumnGroupbyColumnDataAsAnArray) {
1102
+ if (!Array.isArray(groupName) || groupName.length === 0) {
1103
+ _class.updateGroupingChartRow(results, name, null, row, count);
1104
+ return;
1105
+ }
1106
+ groupName.forEach(function (v) {
1107
+ _class.updateGroupingChartRow(results, name, v, row, count);
1108
+ });
1109
+ return;
1110
+ }
1111
+ _class.updateGroupingChartRow(results, name, groupName, row, count);
1112
+ };
1113
+ StatisticsUtils.groupingTwoDimensionChartStatisticSQLResult2JavaScript = function (statistic, sqlRows, statisticSQLMap, columnMap, tables) {
1114
+ var groupbyColumn = columnMap.groupbyColumn,
1115
+ columnGroupbyColumn = columnMap.columnGroupbyColumn;
1116
+ var includeEmpty = statistic.config.x_axis_include_empty_cells;
1117
+ var sqlGroupbyColumnKey = statisticSQLMap.sqlGroupbyColumnKey,
1118
+ sqlColumnGroupbyColumnKey = statisticSQLMap.sqlColumnGroupbyColumnKey,
1119
+ sqlSummaryColumnKey = statisticSQLMap.sqlSummaryColumnKey;
1120
+ var result = [];
1121
+ var isGroupbyColumnDataAsAnArray = !!MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[groupbyColumn.type];
1122
+ var isColumnGroupbyColumnDataAsAnArray = !!MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[columnGroupbyColumn.type];
1123
+ sqlRows.forEach(function (row) {
1124
+ var groupbyColumnCellValue = row[sqlGroupbyColumnKey];
1125
+ var groupbyColumnCellValueKey = _class.getGroupLabelFromDB(groupbyColumnCellValue, groupbyColumn, tables);
1126
+ if (_class.isValidCellValue(groupbyColumnCellValueKey, includeEmpty)) {
1127
+ var columnGroupbyColumnCellValue = row[sqlColumnGroupbyColumnKey];
1128
+ var columnGroupbyColumnCellValueKey = _class.getGroupLabelFromDB(columnGroupbyColumnCellValue, columnGroupbyColumn, tables);
1129
+ var count = row[sqlSummaryColumnKey];
1130
+ if (isGroupbyColumnDataAsAnArray) {
1131
+ if (!Array.isArray(groupbyColumnCellValueKey) || groupbyColumnCellValueKey.length === 0) {
1132
+ _class.updateGroupingChartRows(result, null, row, count, isColumnGroupbyColumnDataAsAnArray, columnGroupbyColumnCellValueKey);
1133
+ } else {
1134
+ groupbyColumnCellValueKey.forEach(function (n) {
1135
+ _class.updateGroupingChartRows(result, n, row, count, isColumnGroupbyColumnDataAsAnArray, columnGroupbyColumnCellValueKey);
1136
+ });
1137
+ }
1138
+ } else {
1139
+ _class.updateGroupingChartRows(result, groupbyColumnCellValueKey, row, count, isColumnGroupbyColumnDataAsAnArray, columnGroupbyColumnCellValueKey);
1140
+ }
1141
+ }
1142
+ });
1143
+ _class.updateTableViewList(result, groupbyColumn, 'name', 'color');
1144
+ _class.updateTableViewList(result, columnGroupbyColumn, 'group_name', 'group_color');
1145
+ _class.sortStatistics(result, groupbyColumn, 'name');
1146
+ return result;
1147
+ };
1148
+ StatisticsUtils.groupingChartStatisticSQLResult2JavaScript = function (statistic, sqlRows, statisticSQLMap, columnMap, tables) {
1149
+ var _statistic$config2 = statistic.config,
1150
+ column_groupby_column_key = _statistic$config2.column_groupby_column_key,
1151
+ column_groupby_multiple_numeric_column = _statistic$config2.column_groupby_multiple_numeric_column,
1152
+ y_axis_summary_type = _statistic$config2.y_axis_summary_type,
1153
+ includeEmpty = _statistic$config2.x_axis_include_empty_cells;
1154
+ if (!column_groupby_column_key && !column_groupby_multiple_numeric_column) {
1155
+ return _class.basicChartStatisticSQLResult2JavaScript(statistic, sqlRows, statisticSQLMap, columnMap, tables);
1156
+ }
1157
+ var groupbyColumn = columnMap.groupbyColumn,
1158
+ columnGroupbyColumn = columnMap.columnGroupbyColumn;
1159
+ if (y_axis_summary_type === STATISTIC_SUMMARY_TYPE.COUNT) {
1160
+ if (!columnGroupbyColumn) return _class.basicChartStatisticSQLResult2JavaScript(statistic, sqlRows, statisticSQLMap, columnMap, tables);
1161
+ return _class.groupingTwoDimensionChartStatisticSQLResult2JavaScript(statistic, sqlRows, statisticSQLMap, columnMap, tables);
1162
+ }
1163
+ var sqlGroupbyColumnKey = statisticSQLMap.sqlGroupbyColumnKey;
1164
+ if (column_groupby_multiple_numeric_column) {
1165
+ var summaryColumns = statisticSQLMap.summaryColumns;
1166
+ var result = [];
1167
+ var isGroupbyColumnDataAsAnArray = !!MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[groupbyColumn.type];
1168
+ sqlRows.forEach(function (row) {
1169
+ var groupbyColumnCellValue = row[sqlGroupbyColumnKey];
1170
+ var groupbyColumnCellValueKey = _class.getGroupLabelFromDB(groupbyColumnCellValue, groupbyColumn, tables);
1171
+ if (_class.isValidCellValue(groupbyColumnCellValueKey, includeEmpty)) {
1172
+ Object.keys(summaryColumns).forEach(function (sqlSummaryColumnName) {
1173
+ var _summaryColumns$sqlSu = summaryColumns[sqlSummaryColumnName],
1174
+ sqlSummaryColumnKey = _summaryColumns$sqlSu.sqlSummaryColumnKey,
1175
+ columnName = _summaryColumns$sqlSu.columnName;
1176
+ var numberColumnCellValue = row[sqlSummaryColumnKey];
1177
+ if (isGroupbyColumnDataAsAnArray) {
1178
+ if (!Array.isArray(groupbyColumnCellValueKey) || groupbyColumnCellValueKey.length === 0) {
1179
+ _class.updateGroupingChartRows(result, null, row, numberColumnCellValue, false, columnName);
1180
+ } else {
1181
+ groupbyColumnCellValueKey.forEach(function (n) {
1182
+ _class.updateGroupingChartRows(result, n, row, numberColumnCellValue, false, columnName);
1183
+ });
1184
+ }
1185
+ } else {
1186
+ _class.updateGroupingChartRows(result, groupbyColumnCellValueKey, row, numberColumnCellValue, false, columnName);
1187
+ }
1188
+ });
1189
+ }
1190
+ });
1191
+ _class.updateTableViewList(result, groupbyColumn, 'name', 'color');
1192
+ _class.sortStatistics(result, groupbyColumn, 'name');
1193
+ return result;
1194
+ }
1195
+ if (!columnGroupbyColumn) {
1196
+ return _class.basicChartStatisticSQLResult2JavaScript(statistic, sqlRows, statisticSQLMap, columnMap, tables);
1197
+ }
1198
+ return _class.groupingTwoDimensionChartStatisticSQLResult2JavaScript(statistic, sqlRows, statisticSQLMap, columnMap, tables);
1199
+ };
1200
+ StatisticsUtils.sqlResult2JavaScript = function (statistic, sqlRows, statisticSQLMap, columnMap, tables) {
1201
+ var type = statistic.config.type;
1202
+ switch (type) {
1203
+ case STATISTIC_TYPE.TABLE:
1204
+ {
1205
+ var column_groupby_column_key = statistic.config.column_groupby_column_key;
1206
+ if (!column_groupby_column_key) {
1207
+ return {
1208
+ result: _class.oneDimensionStatisticTableSQLResult2JavaScript(statistic, sqlRows, statisticSQLMap, columnMap, tables)
1209
+ };
1210
+ }
1211
+ return {
1212
+ result: _class.twoDimensionStatisticTableSQLResult2JavaScript(statistic, sqlRows, statisticSQLMap, columnMap, tables)
1213
+ };
1214
+ }
1215
+ case STATISTIC_TYPE.PIE:
1216
+ case STATISTIC_TYPE.RING:
1217
+ case STATISTIC_TYPE.TREE_MAP:
1218
+ {
1219
+ return {
1220
+ result: _class.basicChartStatisticSQLResult2JavaScript(statistic, sqlRows, statisticSQLMap, columnMap, tables)
1221
+ };
1222
+ }
1223
+ case STATISTIC_TYPE.BASIC_NUMBER_CARD:
1224
+ {
1225
+ return {
1226
+ result: _class.basicNumberCardStatisticSQLResult2JavaScript(statistic, sqlRows, statisticSQLMap, columnMap, tables)
1227
+ };
1228
+ }
1229
+ case STATISTIC_TYPE.DASHBOARD:
1230
+ {
1231
+ return {
1232
+ result: _class.dashboardStatisticSQLResult2JavaScript(statistic, sqlRows, statisticSQLMap, columnMap, tables)
1233
+ };
1234
+ }
1235
+ case STATISTIC_TYPE.BAR:
1236
+ case STATISTIC_TYPE.LINE:
1237
+ case STATISTIC_TYPE.HORIZONTAL_BAR:
1238
+ case STATISTIC_TYPE.AREA:
1239
+ {
1240
+ return {
1241
+ result: _class.basicChartStatisticSQLResult2JavaScript(statistic, sqlRows, statisticSQLMap, columnMap, tables)
1242
+ };
1243
+ }
1244
+ case STATISTIC_TYPE.COMBINATION:
1245
+ {
1246
+ return {
1247
+ result: _class.combinationStatisticSQLResult2Javascript(statistic, sqlRows, statisticSQLMap, columnMap, tables)
1248
+ };
1249
+ }
1250
+ case STATISTIC_TYPE.BAR_GROUP:
1251
+ case STATISTIC_TYPE.LINE_GROUP:
1252
+ case STATISTIC_TYPE.HORIZONTAL_GROUP_BAR:
1253
+ {
1254
+ return {
1255
+ result: _class.groupingChartStatisticSQLResult2JavaScript(statistic, sqlRows, statisticSQLMap, columnMap, tables)
1256
+ };
1257
+ }
1258
+ default:
1259
+ {
1260
+ return;
1261
+ }
1262
+ }
1263
+ };
1264
+ StatisticsUtils.convertStatisticConfig = function (config) {
1265
+ var type = config.type;
1266
+ if (type === STATISTIC_TYPE.HORIZONTAL_BAR || type === STATISTIC_TYPE.HORIZONTAL_GROUP_BAR) {
1267
+ var vertical_axis_column_key = config.vertical_axis_column_key,
1268
+ vertical_axis_date_granularity = config.vertical_axis_date_granularity,
1269
+ vertical_axis_geolocation_granularity = config.vertical_axis_geolocation_granularity,
1270
+ vertical_axis_include_empty = config.vertical_axis_include_empty,
1271
+ horizontal_axis_summary_type = config.horizontal_axis_summary_type,
1272
+ horizontal_axis_summary_method = config.horizontal_axis_summary_method,
1273
+ horizontal_axis_column_key = config.horizontal_axis_column_key,
1274
+ show_vertical_axis_label = config.show_vertical_axis_label,
1275
+ vertical_axis_label_position = config.vertical_axis_label_position,
1276
+ show_horizontal_axis_label = config.show_horizontal_axis_label,
1277
+ horizontal_axis_label_position = config.horizontal_axis_label_position,
1278
+ horizontal_axis_label_color = config.horizontal_axis_label_color;
1279
+ var newConfig = {
1280
+ x_axis_column_key: vertical_axis_column_key,
1281
+ x_axis_date_granularity: vertical_axis_date_granularity,
1282
+ x_axis_geolocation_granularity: vertical_axis_geolocation_granularity,
1283
+ x_axis_include_empty_cells: vertical_axis_include_empty,
1284
+ y_axis_summary_type: horizontal_axis_summary_type,
1285
+ y_axis_summary_method: horizontal_axis_summary_method,
1286
+ y_axis_summary_column_key: horizontal_axis_column_key,
1287
+ x_axis_show_label: show_vertical_axis_label,
1288
+ x_axis_label_position: vertical_axis_label_position,
1289
+ y_axis_show_label: show_horizontal_axis_label,
1290
+ y_axis_label_position: horizontal_axis_label_position,
1291
+ y_axis_label_color: horizontal_axis_label_color,
1292
+ y_axis_auto_range: config.horizontal_axis_auto_range,
1293
+ y_axis_max: config.horizontal_axis_max,
1294
+ y_axis_mix: config.horizontal_axis_min
1295
+ };
1296
+ return Object.assign({}, config, newConfig);
1297
+ }
1298
+ return config;
1299
+ };
1300
+ StatisticsUtils.imEmptyStatistic = function (statisticResult) {
1301
+ return !statisticResult || !statisticResult.result && statisticResult.result !== 0 || Array.isArray(statisticResult.result) && statisticResult.result.length === 0;
1302
+ };
1303
+ StatisticsUtils.calculateStatistic = function (statistic, queryDataAPI, tables, callback, isStatisticalData) {
1304
+ if (!_class.isValidExistStatistic(tables, statistic)) {
1305
+ var tip_message = 'Please_complete_the_chart_configuration_first';
1306
+ return callback && callback('', tip_message, null);
1307
+ }
1308
+ var id = statistic.id,
1309
+ config = statistic.config,
1310
+ type = statistic.type;
1311
+ var newConfig = _class.convertStatisticConfig(config);
1312
+ var newStatistic = {
1313
+ id: id,
1314
+ config: newConfig,
1315
+ type: type
1316
+ };
1317
+ var table_id = config.table_id;
1318
+ var table = getTableById(tables, table_id);
1319
+ var groupbyColumn = _class.getGroupColumn(table, newStatistic);
1320
+ var columnGroupbyColumn = _class.getColumnGroupColumn(table, newStatistic);
1321
+ var summaryColumn = _class.getSummaryColumn(table, newStatistic);
1322
+ var columnMap = {
1323
+ groupbyColumn: groupbyColumn,
1324
+ columnGroupbyColumn: columnGroupbyColumn,
1325
+ summaryColumn: summaryColumn
1326
+ };
1327
+ var statisticTableColumns = table.columns;
1328
+ var statisticSQLMap = null;
1329
+ try {
1330
+ statisticSQLMap = statisticColumn2SqlColumn(newStatistic, table);
1331
+ } catch (error) {
1332
+ var error_message = 'There_are_some_problems_with_the_filters';
1333
+ return callback && callback(error_message, '', null);
1334
+ }
1335
+ queryDataAPI({
1336
+ onSuccess: function onSuccess(res) {
1337
+ var _res$data = res.data,
1338
+ success = _res$data.success,
1339
+ sqlRows = _res$data.results,
1340
+ error_message = _res$data.error_message;
1341
+ if (success) {
1342
+ if (isStatisticalData) {
1343
+ var tipMessage = 'There_are_no_statistic_results_yet';
1344
+ if (!Array.isArray(sqlRows) || sqlRows.length === 0) {
1345
+ callback && callback('', tipMessage, null);
1346
+ return;
1347
+ }
1348
+ var statisticResult = _class.sqlResult2JavaScript(newStatistic, sqlRows, statisticSQLMap, columnMap, tables);
1349
+ if (_class.imEmptyStatistic(statisticResult)) {
1350
+ callback && callback('', tipMessage, null);
1351
+ return;
1352
+ }
1353
+ callback && callback('', '', _objectSpread(_objectSpread({}, statisticResult), {}, {
1354
+ groupbyColumn: groupbyColumn,
1355
+ columnGroupbyColumn: columnGroupbyColumn,
1356
+ summaryColumn: summaryColumn,
1357
+ statisticTableColumns: statisticTableColumns
1358
+ }));
1359
+ return;
1360
+ }
1361
+ }
1362
+ callback && callback(error_message, '', null);
1363
+ },
1364
+ onFail: function onFail(err) {
1365
+ var errorMessage = 'Network_error';
1366
+ if (err.response) {
1367
+ var status = err.response.status;
1368
+ if (status === 500) {
1369
+ errorMessage = 'Internal_server_error';
1370
+ }
1371
+ }
1372
+ callback && callback(errorMessage, '', null);
1373
+ }
1374
+ });
1375
+ };
1376
+ StatisticsUtils.calculateStaticStatistic = function (tables, statistic, statisticalResult, callback) {
1377
+ if (!_class.isValidExistStatistic(tables, statistic)) {
1378
+ var tip_message = 'Please_complete_the_chart_configuration_first';
1379
+ return callback && callback('', tip_message, null);
1380
+ }
1381
+ if (!statisticalResult) {
1382
+ var _tip_message = 'There_are_no_statistic_results_yet';
1383
+ return callback && callback('', _tip_message, null);
1384
+ }
1385
+ var id = statistic.id,
1386
+ config = statistic.config;
1387
+ var newConfig = _class.convertStatisticConfig(config);
1388
+ var newStatistic = {
1389
+ id: id,
1390
+ config: newConfig
1391
+ };
1392
+ var type = config.type;
1393
+ if (type === STATISTIC_TYPE.TABLE) return callback && callback('', '', statisticalResult);
1394
+ var table_id = config.table_id,
1395
+ sort_type = config.sort_type;
1396
+ var table = getTableById(tables, table_id);
1397
+ var groupbyColumn = _class.getGroupColumn(table, newStatistic);
1398
+ var result = statisticalResult.result;
1399
+ if (!result) {
1400
+ var _tip_message2 = 'There_are_no_statistic_results_yet';
1401
+ return callback && callback('', _tip_message2, null);
1402
+ }
1403
+ if (SUPPORT_DATA_SORT_STATISTIC_TYPES.includes(type) && sort_type) {
1404
+ _class.sortStatisticData(result, sort_type);
1405
+ var _newStatisticalResult = _objectSpread(_objectSpread({}, statisticalResult), {}, {
1406
+ result: result
1407
+ });
1408
+ return callback && callback('', '', _newStatisticalResult);
1409
+ }
1410
+ _class.sortStatistics(result, groupbyColumn, 'name');
1411
+ var newStatisticalResult = _objectSpread(_objectSpread({}, statisticalResult), {}, {
1412
+ result: result
1413
+ });
1414
+ return callback && callback('', '', newStatisticalResult);
1415
+ };
1416
+ StatisticsUtils.getPieColorSet = function (tables, statistic, result) {
1417
+ if (!Array.isArray(result)) return [];
1418
+ var _statistic$config3 = statistic.config,
1419
+ table_id = _statistic$config3.table_id,
1420
+ column_id = _statistic$config3.groupby_column_key;
1421
+ var column = _class.getColumn(tables, table_id, column_id);
1422
+ var _ref9 = column || {},
1423
+ columnType = _ref9.type;
1424
+ var pieChartColorsLength = PIE_CHART_COLORS.length - 1;
1425
+ var backgroundColor = [];
1426
+ result.forEach(function (item, index) {
1427
+ if (columnType === CellType.SINGLE_SELECT || columnType === CellType.MULTIPLE_SELECT) {
1428
+ var color = item.color;
1429
+ backgroundColor.push(color);
1430
+ } else {
1431
+ if (index > pieChartColorsLength) {
1432
+ index = index % pieChartColorsLength;
1433
+ }
1434
+ backgroundColor.push(PIE_CHART_COLORS[index]);
1435
+ }
1436
+ });
1437
+ return backgroundColor;
1438
+ };
1439
+ StatisticsUtils.getColumn = function (tables, tableId, columnKey) {
1440
+ var table = getTableById(tables, tableId);
1441
+ return getTableColumnByKey(table, columnKey);
1442
+ };
1443
+ StatisticsUtils.formatEmptyName = function (dataList, column_groupby_column_key, emptyName) {
1444
+ if (!Array.isArray(dataList)) return [];
1445
+ var updatedStatistics = [];
1446
+ dataList.forEach(function (item) {
1447
+ var updated = {};
1448
+ if (!item.name) {
1449
+ updated.name = emptyName;
1450
+ }
1451
+ if (column_groupby_column_key && !item.group_name) {
1452
+ updated.group_name = emptyName;
1453
+ }
1454
+ updatedStatistics.push(Object.assign({}, item, updated));
1455
+ });
1456
+ return updatedStatistics;
1457
+ };
1458
+ StatisticsUtils.getStatisticColumns = function (table) {
1459
+ var columns = table.columns;
1460
+ var unStatisticalColumns = [CellType.LONG_TEXT, CellType.IMAGE, CellType.FILE, CellType.CHECKBOX];
1461
+ return columns.filter(function (column) {
1462
+ return unStatisticalColumns.indexOf(column.type) === -1;
1463
+ });
1464
+ };
1465
+ StatisticsUtils.isStatisticEqual = function (preStatisticElement, curStatisticElement) {
1466
+ var elementType = preStatisticElement.config.type;
1467
+ if (elementType !== curStatisticElement.config.type) return false;
1468
+ return shallowEqual(preStatisticElement.config, curStatisticElement.config);
1469
+ };
1470
+ StatisticsUtils.isStatisticStyleChange = function (preStatisticElement, curStatisticElement) {
1471
+ var elementType = preStatisticElement.config.type;
1472
+ if (elementType !== curStatisticElement.config.type) return false;
1473
+ if (preStatisticElement.height.value !== curStatisticElement.height.value) return true;
1474
+ if (preStatisticElement.left_in_unit !== curStatisticElement.left_in_unit) return true;
1475
+ if (preStatisticElement.width_in_unit !== curStatisticElement.width_in_unit) return true;
1476
+ if (!ObjectUtils.isSameObject(preStatisticElement.style_config, curStatisticElement.style_config)) return true;
1477
+ return !STATISTIC_STYLE_SETTING_KEYS.every(function (key) {
1478
+ return preStatisticElement.config[key] === curStatisticElement.config[key];
1479
+ });
1480
+ };
1481
+ StatisticsUtils.isStatisticTypeChange = function (preStatisticElement, curStatisticElement) {
1482
+ var elementType = preStatisticElement.config.type;
1483
+ if (elementType !== curStatisticElement.config.type) return true;
1484
+ return false;
1485
+ };
1486
+ StatisticsUtils.isStatisticSortChange = function (preStatisticElement, curStatisticElement) {
1487
+ return preStatisticElement.config.sort_type !== curStatisticElement.config.sort_type;
1488
+ };
1489
+ StatisticsUtils.isChartStyleChanged = function (prevElement, currElement) {
1490
+ var prevStyleConfig = prevElement && prevElement.style_config;
1491
+ var currStyleConfig = currElement && currElement.style_config;
1492
+ if (!prevStyleConfig && !currStyleConfig) {
1493
+ return false;
1494
+ }
1495
+ if (!prevStyleConfig || !currStyleConfig) {
1496
+ return true;
1497
+ }
1498
+ var prevBorder = prevStyleConfig.border,
1499
+ prevTitle = prevStyleConfig.title;
1500
+ var currBorder = currStyleConfig.border,
1501
+ currTitle = currStyleConfig.title;
1502
+ return !shallowEqual(prevBorder, currBorder) || !shallowEqual(prevTitle, currTitle);
1503
+ };
1504
+ StatisticsUtils._isChartDataChange = function (prevProps, currentProps) {
1505
+ var newData = prevProps.result,
1506
+ statistic = prevProps.statistic;
1507
+ var oldData = currentProps.result;
1508
+ if (statistic.config.type === STATISTIC_TYPE.COMBINATION) {
1509
+ return _class._isCombinationDataChange(newData, oldData);
1510
+ }
1511
+ if (!newData && !oldData) return false;
1512
+ if (!newData && oldData || newData && !oldData) return true;
1513
+ var dataLength = newData === null || newData === void 0 ? void 0 : newData.length;
1514
+ if (dataLength !== (oldData === null || oldData === void 0 ? void 0 : oldData.length)) return true;
1515
+ for (var i = 0; i < dataLength; i++) {
1516
+ var newDataItem = newData[i];
1517
+ var oldDataItem = oldData[i];
1518
+ if (newDataItem.value !== oldDataItem.value) return true; // row's length
1519
+ if (newDataItem.name !== oldDataItem.name) return true;
1520
+ }
1521
+ for (var _i = 0; _i < dataLength; _i++) {
1522
+ var newDataItemRows = newData[_i].rows;
1523
+ var oldDataItemRows = oldData[_i].rows;
1524
+ for (var j = 0; j < (newDataItemRows === null || newDataItemRows === void 0 ? void 0 : newDataItemRows.length) || 0; j++) {
1525
+ var newDataItemRow = newDataItemRows[j];
1526
+ var oldDataItemRow = oldDataItemRows[j];
1527
+ if (!shallowEqual(newDataItemRow, oldDataItemRow)) return true;
1528
+ }
1529
+ }
1530
+ return false;
1531
+ };
1532
+ StatisticsUtils.isValidValue = function (value) {
1533
+ if (value === 0) return true;
1534
+ return Boolean(value);
1535
+ };
1536
+ StatisticsUtils.getSummaryValueDisplayString = function (summaryColumn, summaryValue) {
1537
+ var summaryMethod = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'count';
1538
+ if (!summaryColumn) return summaryValue;
1539
+ if (!summaryValue && summaryValue !== 0) return summaryValue;
1540
+ if (summaryMethod.toUpperCase() === 'DISTINCT_VALUES') return summaryValue;
1541
+ var data = summaryColumn.data;
1542
+ if (_class.isDateSummaryColumn(summaryColumn)) {
1543
+ if (typeof summaryValue !== 'string') return summaryValue;
1544
+
1545
+ // Compatible with previous data
1546
+ var _ref10 = data || {
1547
+ format: 'YYYY-HH-MM'
1548
+ },
1549
+ format = _ref10.format;
1550
+
1551
+ // The date returned by db carries T and Z, so that there is a time difference in data formatting
1552
+ return getDateDisplayString(summaryValue.replace(/[T|Z]/g, ' '), format);
1553
+ }
1554
+ if (typeof summaryValue !== 'number') return summaryValue;
1555
+ return getNumberDisplayString(summaryValue, data || DEFAULT_NUMBER_FORMAT_OBJECT);
1556
+ };
1557
+ StatisticsUtils.isNumericSummaryColumn = function (summaryColumn) {
1558
+ if (!summaryColumn) return false;
1559
+ var type = summaryColumn.type;
1560
+ return type !== CellType.LINK && isNumericColumn(summaryColumn);
1561
+ };
1562
+ StatisticsUtils.isDateSummaryColumn = function (summaryColumn) {
1563
+ if (!summaryColumn) return false;
1564
+ var type = summaryColumn.type;
1565
+ return type !== CellType.LINK && isDateColumn(summaryColumn);
1566
+ };
1567
+ StatisticsUtils.getSummaryExplanation = function (statistic) {
1568
+ var config = statistic.config;
1569
+ var type = config.type;
1570
+ switch (type) {
1571
+ case STATISTIC_TYPE.PIE:
1572
+ case STATISTIC_TYPE.LINE:
1573
+ case STATISTIC_TYPE.LINE_GROUP:
1574
+ case STATISTIC_TYPE.RING:
1575
+ {
1576
+ return {
1577
+ count: intl.get('Count_the_number_of_records_in_each_group'),
1578
+ advanced: intl.get('Compute_the_sum_maximum_or_minimum_value_of_records_in_each_group_by_a_field')
1579
+ };
1580
+ }
1581
+ case STATISTIC_TYPE.BAR:
1582
+ case STATISTIC_TYPE.BAR_GROUP:
1583
+ {
1584
+ return {
1585
+ count: intl.get('Group_the_records_according_to_the_vertical_axis_and_count_the_records_in_each_group'),
1586
+ advanced: intl.get('Group_the_records_according_to_the_vertical_axis_and_compute_the_sum_maximum_or_minimum_of_records_in_each_group_by_a_field')
1587
+ };
1588
+ }
1589
+ default:
1590
+ {
1591
+ return {
1592
+ count: intl.get('Count_the_records'),
1593
+ advanced: intl.get('Compute_sum_max_min')
1594
+ };
1595
+ }
1596
+ }
1597
+ };
1598
+ StatisticsUtils.getLabelFontSize = function (labelFontSize) {
1599
+ return isNumber(labelFontSize) ? labelFontSize : DEFAULT_LABEL_FONT_SIZE;
1600
+ };
1601
+ StatisticsUtils.getPieColor = function (column, index, data) {
1602
+ var columnType = column.type,
1603
+ columnData = column.data;
1604
+ if (columnType === 'single-select' || columnType === 'multiple-select') {
1605
+ if (columnData && columnData.options) {
1606
+ var selectedItem = columnData.options.find(function (item) {
1607
+ return item.name === data.name;
1608
+ }) || {};
1609
+ return selectedItem.color || '#dbdbdb';
1610
+ }
1611
+ } else {
1612
+ var pieChartColorsLength = PIE_CHART_COLORS.length - 1;
1613
+ var newIndex = index > pieChartColorsLength ? index % pieChartColorsLength : index;
1614
+ return PIE_CHART_COLORS[newIndex];
1615
+ }
1616
+ };
1617
+ StatisticsUtils.formatPieChartData = function (data, statistic, tables) {
1618
+ if (!Array.isArray(data) || data.length === 0 || !statistic) {
1619
+ return {
1620
+ data: [],
1621
+ total: 0,
1622
+ colorSet: []
1623
+ };
1624
+ }
1625
+ var _statistic$config4 = statistic.config,
1626
+ table_id = _statistic$config4.table_id,
1627
+ groupby_column_key = _statistic$config4.groupby_column_key,
1628
+ minimum_slice_percent = _statistic$config4.minimum_slice_percent;
1629
+ var table = getTableById(tables, table_id);
1630
+ var column = getColumnByKey(groupby_column_key, table ? table.columns : []);
1631
+ var sum = data.reduce(function (total, currentValue) {
1632
+ return total += currentValue.value;
1633
+ }, 0);
1634
+ var minimumSlicePercentage = typeof minimum_slice_percent === 'number' ? minimum_slice_percent : 1.5;
1635
+ var threshold = sum * (minimumSlicePercentage / 100 || 0);
1636
+ var filteredItems = [];
1637
+ var colorSet = [];
1638
+ var filteredData = [];
1639
+ var rows = [];
1640
+ data.forEach(function (item, index) {
1641
+ var value = item.value;
1642
+ if (value >= threshold) {
1643
+ item.percent = String(Number.parseFloat(value / sum * 100).toFixed(1)) + '%';
1644
+ var color = _class.getPieColor(column, index, item);
1645
+ item.color = color;
1646
+ colorSet.push(color);
1647
+ filteredData.push(item);
1648
+ } else {
1649
+ rows.push.apply(rows, _toConsumableArray(item.rows));
1650
+ filteredItems.push(item);
1651
+ }
1652
+ });
1653
+ if (filteredItems.length > 0) {
1654
+ var filteredSum = filteredItems.reduce(function (total, currentValue) {
1655
+ return total += currentValue.value;
1656
+ }, 0);
1657
+ filteredData.push({
1658
+ name: '_Others',
1659
+ value: filteredSum,
1660
+ color: '#dbdbdb',
1661
+ percent: String(Number.parseFloat(filteredSum / sum * 100).toFixed(1)) + '%',
1662
+ rows: rows
1663
+ });
1664
+ colorSet.push('#dbdbdb');
1665
+ }
1666
+ return {
1667
+ data: filteredData,
1668
+ total: sum,
1669
+ colorSet: colorSet
1670
+ };
1671
+ };
1672
+ StatisticsUtils.initTotal = function (summaryMethod) {
1673
+ if (summaryMethod === 'SUM' || summaryMethod === 'DISTINCT_VALUES') return 0;
1674
+ return null;
1675
+ };
1676
+ StatisticsUtils.getCurrentTheme = function (themeName) {
1677
+ if (themeName) {
1678
+ var currentColorTheme = STYLE_COLORS.find(function (item) {
1679
+ return item.name === themeName;
1680
+ });
1681
+ return currentColorTheme;
1682
+ }
1683
+ return STYLE_COLORS[0];
1684
+ };
1685
+ export default StatisticsUtils;