sea-chart 2.0.37 → 2.0.38

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 (304) hide show
  1. package/dist/api/index.js +20 -69
  2. package/dist/assets/css/sea-chart-d3-tooltip.css +0 -1
  3. package/dist/components/cell-factory/FormatterConfig.js +55 -62
  4. package/dist/components/cell-factory/SimpleCellFormatter.js +5 -12
  5. package/dist/components/cell-factory/SingleSelectOption.js +11 -18
  6. package/dist/components/cell-factory/cell-editor-factory.js +5 -12
  7. package/dist/components/cell-factory/cell-formatter-factory.js +4 -11
  8. package/dist/components/cell-factory/link-content.js +30 -38
  9. package/dist/components/chart-color-selector/color-selector.js +11 -18
  10. package/dist/components/collaborator/index.js +7 -14
  11. package/dist/components/color-picker/index.js +12 -19
  12. package/dist/components/color-popover/color-rules/color-rule.js +26 -34
  13. package/dist/components/color-popover/color-rules/index.js +7 -15
  14. package/dist/components/color-popover/color-rules/rule-filters/filter.js +27 -34
  15. package/dist/components/color-popover/color-rules/rule-filters/index.js +17 -25
  16. package/dist/components/color-popover/color-rules/rule-filters/number-input.js +9 -17
  17. package/dist/components/color-popover/color-rules-popover.js +31 -37
  18. package/dist/components/color-popover/color-selector-popover.js +12 -20
  19. package/dist/components/color-setting/color-group-selector.js +13 -21
  20. package/dist/components/common-add-tool/index.js +8 -15
  21. package/dist/components/data-process-setter/data-setting-header.js +7 -14
  22. package/dist/components/data-process-setter/hide-column-setter.js +13 -20
  23. package/dist/components/data-process-setter/index.js +4 -27
  24. package/dist/components/data-process-setter/sort-setter.js +18 -26
  25. package/dist/components/draggable/Draggable.js +7 -13
  26. package/dist/components/drill-down-settings/drill-down-fields-popover/index.js +41 -48
  27. package/dist/components/drill-down-settings/drill-down-fields-settings/index.js +10 -18
  28. package/dist/components/drill-down-settings/index.js +11 -18
  29. package/dist/components/dtable-popover/index.js +13 -20
  30. package/dist/components/dtable-search-input/index.js +13 -21
  31. package/dist/components/font-settings/index.js +14 -22
  32. package/dist/components/goal-line-setting/goal-setting-item.js +6 -14
  33. package/dist/components/goal-line-setting/index.js +12 -19
  34. package/dist/components/highlighter/highlighter.js +7 -14
  35. package/dist/components/icon/index.js +12 -23
  36. package/dist/components/index.js +7 -48
  37. package/dist/components/loading/index.js +6 -13
  38. package/dist/components/number-input/index.js +11 -24
  39. package/dist/components/pixel-editor/index.js +15 -23
  40. package/dist/components/popover/hide-column-popover/hide-column-popover-widgets/hide-column-item.js +13 -16
  41. package/dist/components/popover/hide-column-popover/hide-column-popover.css +5 -1
  42. package/dist/components/popover/hide-column-popover/hide-column-popover.js +28 -38
  43. package/dist/components/popover/sort-popover/sort-popover-widgets/sort-utils.js +9 -18
  44. package/dist/components/popover/sort-popover/sort-popover.js +58 -69
  45. package/dist/components/resize-handle/ResizeHandle.js +6 -13
  46. package/dist/components/row-card/row-card-header-cell.js +17 -24
  47. package/dist/components/row-card/row-card-header.js +15 -22
  48. package/dist/components/row-card/row-card-item.js +35 -43
  49. package/dist/components/row-card/row-card.js +17 -25
  50. package/dist/components/statistic-record-dialog/index.js +61 -68
  51. package/dist/components/tooltip/index.js +39 -28
  52. package/dist/components/types-dialog/index.js +62 -70
  53. package/dist/components/types-dialog/use-force-update.js +4 -10
  54. package/dist/constants/color-rules.js +8 -14
  55. package/dist/constants/common-constants.js +8 -14
  56. package/dist/constants/error.js +2 -8
  57. package/dist/constants/geolocation.js +9 -15
  58. package/dist/constants/index.js +142 -271
  59. package/dist/constants/key-codes.js +0 -2
  60. package/dist/constants/model.js +3 -9
  61. package/dist/constants/regions.js +3 -8
  62. package/dist/constants/style.js +6 -12
  63. package/dist/constants/table.js +1 -7
  64. package/dist/constants/type-image.js +33 -39
  65. package/dist/constants/type.js +3 -9
  66. package/dist/context.js +13 -20
  67. package/dist/editor/index.js +13 -16
  68. package/dist/index.js +13 -104
  69. package/dist/intl.js +10 -17
  70. package/dist/locale/index.js +16 -23
  71. package/dist/locale/lang/de.js +2 -7
  72. package/dist/locale/lang/en.js +2 -7
  73. package/dist/locale/lang/es.js +2 -7
  74. package/dist/locale/lang/fr.js +2 -7
  75. package/dist/locale/lang/pt.js +2 -7
  76. package/dist/locale/lang/ru.js +2 -7
  77. package/dist/locale/lang/zh_CN.js +2 -7
  78. package/dist/model/area-group.js +12 -19
  79. package/dist/model/area.js +12 -19
  80. package/dist/model/bar-custom.js +11 -18
  81. package/dist/model/bar-group.js +12 -19
  82. package/dist/model/bar-stack.js +10 -17
  83. package/dist/model/bar.js +11 -18
  84. package/dist/model/base-model.js +4 -11
  85. package/dist/model/basic-number-card.js +13 -20
  86. package/dist/model/chart.js +7 -13
  87. package/dist/model/combination.js +15 -22
  88. package/dist/model/compare-bar.js +14 -21
  89. package/dist/model/completeness-group.js +11 -18
  90. package/dist/model/completeness.js +10 -17
  91. package/dist/model/dashboard.js +7 -14
  92. package/dist/model/funnel.js +14 -21
  93. package/dist/model/generic-model.js +135 -143
  94. package/dist/model/heat-map.js +9 -16
  95. package/dist/model/horizontal-bar.js +11 -18
  96. package/dist/model/horizontal-group-bar.js +10 -17
  97. package/dist/model/index.js +69 -93
  98. package/dist/model/line-group.js +13 -20
  99. package/dist/model/line.js +12 -19
  100. package/dist/model/map-bubble.js +14 -17
  101. package/dist/model/map.js +12 -19
  102. package/dist/model/mirror.js +13 -20
  103. package/dist/model/pie.js +12 -19
  104. package/dist/model/ring.js +12 -19
  105. package/dist/model/scatter.js +10 -17
  106. package/dist/model/stacked-horizontal-bar.js +11 -18
  107. package/dist/model/table-element.js +5 -12
  108. package/dist/model/table.js +7 -14
  109. package/dist/model/tree-map.js +7 -14
  110. package/dist/model/trend.js +11 -18
  111. package/dist/model/user.js +1 -7
  112. package/dist/model/world-map-bubble.js +12 -19
  113. package/dist/model/world-map.js +12 -19
  114. package/dist/services/map-json.js +14 -17
  115. package/dist/settings/advance-bar-settings/data-settings.js +36 -44
  116. package/dist/settings/advance-bar-settings/index.js +3 -20
  117. package/dist/settings/advance-bar-settings/style-settings.js +66 -73
  118. package/dist/settings/bar-settings/data-settings.js +39 -47
  119. package/dist/settings/bar-settings/index.js +3 -20
  120. package/dist/settings/bar-settings/style-settings.js +51 -59
  121. package/dist/settings/basic-number-card/data-settings.js +50 -57
  122. package/dist/settings/basic-number-card/index.js +3 -20
  123. package/dist/settings/basic-number-card/style-settings.js +19 -27
  124. package/dist/settings/combination-settings/data-settings.js +55 -64
  125. package/dist/settings/combination-settings/index.js +3 -20
  126. package/dist/settings/combination-settings/style-settings.js +67 -75
  127. package/dist/settings/completeness-settings/callbacks/callbacks.js +16 -27
  128. package/dist/settings/completeness-settings/data-settings/completion-settings.js +21 -28
  129. package/dist/settings/completeness-settings/data-settings/data-settings.js +25 -32
  130. package/dist/settings/completeness-settings/index.js +3 -20
  131. package/dist/settings/completeness-settings/style-settings.js +19 -26
  132. package/dist/settings/dashboard-settings/data-settings.js +44 -51
  133. package/dist/settings/dashboard-settings/index.js +2 -13
  134. package/dist/settings/data-settings.js +72 -79
  135. package/dist/settings/funnel-settings/components/dnd-item/dnd-item.js +12 -19
  136. package/dist/settings/funnel-settings/components/dnd-list.js +15 -23
  137. package/dist/settings/funnel-settings/components/funnel-label-setting.js +32 -40
  138. package/dist/settings/funnel-settings/components/funnel-layer-setting.js +22 -30
  139. package/dist/settings/funnel-settings/data-settings.js +23 -31
  140. package/dist/settings/funnel-settings/index.js +3 -20
  141. package/dist/settings/funnel-settings/style-settings.js +11 -19
  142. package/dist/settings/heat-map-settings/data-settings.js +18 -26
  143. package/dist/settings/heat-map-settings/index.js +3 -20
  144. package/dist/settings/heat-map-settings/style-settings.js +18 -26
  145. package/dist/settings/horizontal-bar-settings/data-settings.js +12 -19
  146. package/dist/settings/horizontal-bar-settings/index.js +3 -20
  147. package/dist/settings/horizontal-bar-settings/style-settings.js +12 -19
  148. package/dist/settings/index.js +57 -70
  149. package/dist/settings/map-settings/components/location-field-selector.js +10 -17
  150. package/dist/settings/map-settings/components/map-level-selector.js +11 -18
  151. package/dist/settings/map-settings/components/map-province-city-selector.js +19 -26
  152. package/dist/settings/map-settings/index.js +3 -20
  153. package/dist/settings/map-settings/map-data-settings.js +23 -30
  154. package/dist/settings/map-settings/map-style-settings.js +27 -35
  155. package/dist/settings/mirror-settings/data-settings.js +26 -34
  156. package/dist/settings/mirror-settings/index.js +2 -13
  157. package/dist/settings/pie-settings/data-settings.js +33 -41
  158. package/dist/settings/pie-settings/index.js +3 -20
  159. package/dist/settings/pie-settings/style-settings.js +47 -55
  160. package/dist/settings/scatter/data-settings.js +27 -34
  161. package/dist/settings/scatter/index.js +3 -12
  162. package/dist/settings/stacks-settings/index.js +19 -27
  163. package/dist/settings/stacks-settings/stack-item-settings.js +19 -27
  164. package/dist/settings/style-settings.js +65 -73
  165. package/dist/settings/table-element-settings/components/data-filter.js +49 -58
  166. package/dist/settings/table-element-settings/data-settings.js +21 -29
  167. package/dist/settings/table-element-settings/index.css +1 -31
  168. package/dist/settings/table-element-settings/index.js +2 -13
  169. package/dist/settings/table-settings/data-settings.js +113 -120
  170. package/dist/settings/table-settings/index.js +2 -13
  171. package/dist/settings/time-comparison-settings/data-settings.js +43 -51
  172. package/dist/settings/time-comparison-settings/index.js +3 -20
  173. package/dist/settings/time-comparison-settings/style-settings.js +44 -52
  174. package/dist/settings/trend-settings/data-settings.js +24 -32
  175. package/dist/settings/trend-settings/index.js +3 -20
  176. package/dist/settings/trend-settings/style-setting.js +19 -27
  177. package/dist/settings/widgets/basic-summary/index.js +59 -66
  178. package/dist/settings/widgets/chart-type/index.js +18 -26
  179. package/dist/settings/widgets/color-settings/index.js +72 -80
  180. package/dist/settings/widgets/common-data-settings.js +27 -34
  181. package/dist/settings/widgets/data-filter/index.js +59 -59
  182. package/dist/settings/widgets/data-sort.js +16 -24
  183. package/dist/settings/widgets/date-summary-item.js +26 -34
  184. package/dist/settings/widgets/display-values-settings/index.js +14 -22
  185. package/dist/settings/widgets/divider/index.js +8 -16
  186. package/dist/settings/widgets/font-settings/font-color-settings.js +11 -19
  187. package/dist/settings/widgets/font-settings/font-size-settings.js +14 -22
  188. package/dist/settings/widgets/font-settings/font-weight-settings.js +17 -25
  189. package/dist/settings/widgets/font-settings/index.js +4 -27
  190. package/dist/settings/widgets/group-by.js +52 -59
  191. package/dist/settings/widgets/min-max-setting.js +10 -18
  192. package/dist/settings/widgets/mininum-slice-percent.js +10 -18
  193. package/dist/settings/widgets/numeric-summary-item.js +25 -33
  194. package/dist/settings/widgets/select-line-type/index.js +10 -17
  195. package/dist/settings/widgets/select-table/index.js +9 -16
  196. package/dist/settings/widgets/select-view/index.js +20 -28
  197. package/dist/settings/widgets/stack.js +14 -22
  198. package/dist/settings/widgets/summary-method-setting.js +17 -25
  199. package/dist/settings/widgets/summary-settings.js +75 -82
  200. package/dist/settings/widgets/switch/index.js +9 -16
  201. package/dist/settings/widgets/text-horizontal-settings.js +15 -23
  202. package/dist/settings/widgets/time-picker.js +29 -37
  203. package/dist/settings/widgets/title-settings/index.js +29 -37
  204. package/dist/settings/widgets/title-settings/title-text.js +5 -12
  205. package/dist/settings/widgets/x-axios.js +0 -1
  206. package/dist/settings/widgets/y-axis-group-settings.js +65 -72
  207. package/dist/utils/cell-format-utils.js +25 -33
  208. package/dist/utils/cell-value-utils.js +4 -11
  209. package/dist/utils/chart-utils/base-utils.js +467 -367
  210. package/dist/utils/chart-utils/index.js +29 -40
  211. package/dist/utils/chart-utils/original-data-utils/basic-chart-calculator.js +78 -85
  212. package/dist/utils/chart-utils/original-data-utils/card-calculator.js +20 -21
  213. package/dist/utils/chart-utils/original-data-utils/combination-calculator.js +45 -52
  214. package/dist/utils/chart-utils/original-data-utils/compare-bar-chart-calculator.js +21 -28
  215. package/dist/utils/chart-utils/original-data-utils/completeness-calculator.js +33 -40
  216. package/dist/utils/chart-utils/original-data-utils/dashboard-calculator.js +28 -26
  217. package/dist/utils/chart-utils/original-data-utils/index.js +50 -57
  218. package/dist/utils/chart-utils/original-data-utils/mirror-calculator.js +19 -26
  219. package/dist/utils/chart-utils/original-data-utils/pivot-table-calculator.js +94 -97
  220. package/dist/utils/chart-utils/original-data-utils/scatter-calculator.js +19 -25
  221. package/dist/utils/chart-utils/original-data-utils/trend-calculator.js +50 -36
  222. package/dist/utils/chart-utils/sql-statistics-utils.js +385 -388
  223. package/dist/utils/chart.js +9 -17
  224. package/dist/utils/collaborator-manager.js +3 -9
  225. package/dist/utils/collaborator-utils.js +19 -31
  226. package/dist/utils/collaborator.js +6 -15
  227. package/dist/utils/color-utils.js +18 -29
  228. package/dist/utils/column-utils.js +88 -102
  229. package/dist/utils/common-utils.js +28 -53
  230. package/dist/utils/concurrency-manager.js +1 -7
  231. package/dist/utils/contexts.js +7 -11
  232. package/dist/utils/date-translate.js +12 -20
  233. package/dist/utils/digital-sign-utils.js +7 -14
  234. package/dist/utils/event-bus.js +1 -7
  235. package/dist/utils/hotkey.js +5 -11
  236. package/dist/utils/index.js +73 -219
  237. package/dist/utils/key-generator.js +2 -9
  238. package/dist/utils/map.js +22 -31
  239. package/dist/utils/object-utils.js +2 -8
  240. package/dist/utils/options-utils.js +10 -18
  241. package/dist/utils/row-record-utils.js +251 -183
  242. package/dist/utils/row-utils.js +27 -38
  243. package/dist/utils/search.js +24 -32
  244. package/dist/utils/sql/chart-data-sql.js +106 -112
  245. package/dist/utils/sql/column-2-sql-column.js +162 -172
  246. package/dist/utils/sql/index.js +3 -27
  247. package/dist/utils/trend-utils.js +50 -45
  248. package/dist/view/index.css +2 -8
  249. package/dist/view/index.js +102 -103
  250. package/dist/view/title/index.js +16 -24
  251. package/dist/view/wrapper/area-group.js +57 -57
  252. package/dist/view/wrapper/area.js +43 -51
  253. package/dist/view/wrapper/bar-compare.js +56 -48
  254. package/dist/view/wrapper/bar-custom-stack.js +73 -55
  255. package/dist/view/wrapper/bar-group.js +94 -73
  256. package/dist/view/wrapper/bar-stack.js +49 -57
  257. package/dist/view/wrapper/bar.js +40 -48
  258. package/dist/view/wrapper/basic-number-card.js +50 -34
  259. package/dist/view/wrapper/chart-component.js +164 -569
  260. package/dist/view/wrapper/combination.js +55 -63
  261. package/dist/view/wrapper/completeness-group.js +140 -93
  262. package/dist/view/wrapper/completeness.js +36 -44
  263. package/dist/view/wrapper/dashboard.js +104 -59
  264. package/dist/view/wrapper/funnel.js +40 -43
  265. package/dist/view/wrapper/heat-map.js +62 -70
  266. package/dist/view/wrapper/horizontal-bar-group.js +70 -58
  267. package/dist/view/wrapper/horizontal-bar-stack.js +48 -56
  268. package/dist/view/wrapper/horizontal-bar.js +41 -49
  269. package/dist/view/wrapper/index.js +107 -115
  270. package/dist/view/wrapper/line-group.js +49 -52
  271. package/dist/view/wrapper/line.js +42 -50
  272. package/dist/view/wrapper/map-bubble.js +40 -48
  273. package/dist/view/wrapper/map-world-bubble.js +40 -47
  274. package/dist/view/wrapper/map-world.js +42 -49
  275. package/dist/view/wrapper/map.js +42 -50
  276. package/dist/view/wrapper/mirror.js +41 -49
  277. package/dist/view/wrapper/pie.js +45 -53
  278. package/dist/view/wrapper/ring.js +50 -58
  279. package/dist/view/wrapper/scatter.js +50 -56
  280. package/dist/view/wrapper/table/index.js +14 -22
  281. package/dist/view/wrapper/table/one-dimension-table-no-numeric-columns.js +49 -57
  282. package/dist/view/wrapper/table/one-dimension-table-with-numeric-columns.js +53 -61
  283. package/dist/view/wrapper/table/pivot-table-display-name.js +82 -90
  284. package/dist/view/wrapper/table/two-dimension-table.js +85 -92
  285. package/dist/view/wrapper/table-element/components/dataset-utils.js +23 -36
  286. package/dist/view/wrapper/table-element/components/formatter.js +90 -99
  287. package/dist/view/wrapper/table-element/components/formatters/FileFormatter/index.js +23 -32
  288. package/dist/view/wrapper/table-element/components/formatters/formula-formatter.js +9 -16
  289. package/dist/view/wrapper/table-element/components/formatters/link-formatter.js +90 -97
  290. package/dist/view/wrapper/table-element/components/formula-formatter.js +9 -16
  291. package/dist/view/wrapper/table-element/components/link-formatter.js +90 -97
  292. package/dist/view/wrapper/table-element/components/record.js +13 -20
  293. package/dist/view/wrapper/table-element/components/records-body.js +9 -17
  294. package/dist/view/wrapper/table-element/components/records-header/index.js +7 -16
  295. package/dist/view/wrapper/table-element/components/records-header/records-header-cell.js +8 -16
  296. package/dist/view/wrapper/table-element/components/records.js +25 -33
  297. package/dist/view/wrapper/table-element/components/resize-column-handle/resize-column-handle.js +8 -13
  298. package/dist/view/wrapper/table-element/components/utils.js +6 -16
  299. package/dist/view/wrapper/table-element/components/value-display-utils.js +4 -11
  300. package/dist/view/wrapper/table-element/components/vertical-scrollbar/index.js +6 -13
  301. package/dist/view/wrapper/table-element/index.js +30 -43
  302. package/dist/view/wrapper/treemap.js +38 -46
  303. package/dist/view/wrapper/trend.js +80 -65
  304. package/package.json +15 -12
@@ -1,109 +1,99 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
- var _dayjs = _interopRequireDefault(require("dayjs"));
10
- var _dtableUtils = require("dtable-utils");
11
- var _lodash = require("lodash");
12
- var _lodashEs = require("lodash-es");
13
- var _constants = require("../../constants");
14
- var _sql = require("../sql");
15
- var _cellFormatUtils = require("../cell-format-utils");
16
- var _column2SqlColumn = require("../sql/column-2-sql-column");
17
- var _columnUtils = require("../column-utils");
18
- var _trendUtils = require("../trend-utils");
19
- var _intl = _interopRequireDefault(require("../../intl"));
20
- var _dateTranslate = require("../date-translate");
21
- var _baseUtils = _interopRequireWildcard(require("./base-utils"));
22
1
  var _SQLStatisticsUtils;
2
+ import dayjs from 'dayjs';
3
+ import { CellType, MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP, getFormulaDisplayString, getPrecisionNumber, getTableById, getTableColumnByKey, isNumber } from 'dtable-utils';
4
+ import { isObject } from 'lodash';
5
+ import { cloneDeep } from 'lodash-es';
6
+ import { CHART_SUMMARY_TYPE, CHART_TYPE, SUPPORT_DATA_SORT_CHART_TYPES, TABLE_DIMENSIONS, Y_AXIS_TYPE_PREFIX, STYLE_COLORS, TREND_TYPES, CHART_STYLE_COLORS, MAP_CHART_TYPES } from '../../constants';
7
+ import { chartColumn2SqlColumn, summaryMethodColumn2SqlColumn } from '../sql';
8
+ import { getClientLinkDisplayString } from '../cell-format-utils';
9
+ import { column2SqlColumn } from '../sql/column-2-sql-column';
10
+ import { formatNumericValue, getFormattedValue, getSummaryResult } from '../column-utils';
11
+ import { getCompareDate } from '../trend-utils';
12
+ import intl from '../../intl';
13
+ import { convertQuarterToDate } from '../date-translate';
14
+ import BaseUtils, { findIfColumnDataIsArray } from './base-utils';
23
15
  class SQLStatisticsUtils {}
24
16
  _SQLStatisticsUtils = SQLStatisticsUtils;
25
17
  SQLStatisticsUtils.DATA_SOURCE = 'sql_statistics';
26
18
  SQLStatisticsUtils.getGroupLabelFromDB = async (cellValue, column, chart, isPivot) => {
27
- const dateGranularity = _baseUtils.default.getDateGranularityByType(chart);
28
19
  const {
29
20
  type,
30
21
  data
31
22
  } = column;
32
23
  switch (type) {
33
- case _dtableUtils.CellType.TEXT:
24
+ case CellType.TEXT:
34
25
  {
35
26
  return cellValue || null;
36
27
  }
37
- case _dtableUtils.CellType.DATE:
38
- case _dtableUtils.CellType.CTIME:
39
- case _dtableUtils.CellType.MTIME:
28
+ case CellType.DATE:
29
+ case CellType.CTIME:
30
+ case CellType.MTIME:
40
31
  {
41
- // handled in sql query result
42
32
  return cellValue;
43
33
  }
44
- case _dtableUtils.CellType.NUMBER:
34
+ case CellType.NUMBER:
45
35
  {
46
36
  if (!cellValue && cellValue !== 0) return null;
47
- return (0, _dtableUtils.getPrecisionNumber)(cellValue, data);
37
+ return getPrecisionNumber(cellValue, data);
48
38
  }
49
- case _dtableUtils.CellType.SINGLE_SELECT:
39
+ case CellType.SINGLE_SELECT:
50
40
  {
51
41
  let isInvalidValue = data && data.options && data.options.findIndex(opt => opt.id === cellValue) < 0;
52
42
  return isInvalidValue ? null : cellValue;
53
43
  }
54
- case _dtableUtils.CellType.MULTIPLE_SELECT:
44
+ case CellType.MULTIPLE_SELECT:
55
45
  {
56
46
  let options = data && data.options;
57
47
  if (!Array.isArray(options) || options.length === 0) return [];
58
48
  if (!Array.isArray(cellValue) || cellValue.length === 0) return [];
59
49
  return cellValue.filter(optionId => options.find(option => option.id === optionId));
60
50
  }
61
- case _dtableUtils.CellType.COLLABORATOR:
51
+ case CellType.COLLABORATOR:
62
52
  {
63
53
  if (!Array.isArray(cellValue) || cellValue.length === 0) return [];
64
54
  return cellValue;
65
55
  }
66
- case _dtableUtils.CellType.CREATOR:
67
- case _dtableUtils.CellType.LAST_MODIFIER:
56
+ case CellType.CREATOR:
57
+ case CellType.LAST_MODIFIER:
68
58
  {
69
59
  return cellValue ? cellValue : null;
70
60
  }
71
- case _dtableUtils.CellType.GEOLOCATION:
61
+ case CellType.GEOLOCATION:
62
+ {
63
+ return cellValue || null;
64
+ }
65
+ case CellType.FORMULA:
72
66
  {
67
+ if (Array.isArray(cellValue)) {
68
+ const validValue = getFormulaDisplayString(cellValue, data) || [];
69
+ return validValue;
70
+ }
73
71
  return cellValue || null;
74
72
  }
75
- case _dtableUtils.CellType.FORMULA:
76
- case _dtableUtils.CellType.LINK_FORMULA:
73
+ case CellType.LINK_FORMULA:
77
74
  {
78
75
  const {
79
- array_type,
80
76
  result_type
81
77
  } = data || {};
82
- const validValue = (0, _dtableUtils.getFormulaDisplayString)(cellValue, data) || [];
83
- if (array_type === 'date' && (cellValue === null || cellValue === void 0 ? void 0 : cellValue.length) === 1) {
84
- if (!dateGranularity) return validValue;
85
- if (dateGranularity.toUpperCase() === 'QUARTER') return _dtableUtils.DateUtils.getDateByGranularity(validValue, 'QUARTAR');
86
- return _dtableUtils.DateUtils.getDateByGranularity(validValue, dateGranularity);
87
- }
88
-
89
78
  // handles mutiple select
90
79
  if (result_type === 'array') {
91
80
  return cellValue;
92
81
  }
82
+ const validValue = getFormulaDisplayString(cellValue, data) || [];
93
83
  if (!validValue && validValue !== 0) {
94
84
  return null;
95
85
  }
96
86
  return validValue;
97
87
  }
98
- case _dtableUtils.CellType.LINK:
88
+ case CellType.LINK:
99
89
  {
100
- return Array.isArray(cellValue) ? cellValue.map(linked => (0, _cellFormatUtils.getClientLinkDisplayString)([linked], data, {})) : [];
90
+ return Array.isArray(cellValue) ? cellValue.map(linked => getClientLinkDisplayString([linked], data, {})) : [];
101
91
  }
102
- case _dtableUtils.CellType.CHECKBOX:
92
+ case CellType.CHECKBOX:
103
93
  {
104
94
  return String(cellValue) === 'true' ? 'Checked' : 'Unchecked';
105
95
  }
106
- case _dtableUtils.CellType.RATE:
96
+ case CellType.RATE:
107
97
  {
108
98
  return cellValue ? String(cellValue) : null;
109
99
  }
@@ -178,7 +168,7 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
178
168
  const {
179
169
  summary_type
180
170
  } = chart.config;
181
- const isCount = summary_type === _constants.CHART_SUMMARY_TYPE.COUNT;
171
+ const isCount = summary_type === CHART_SUMMARY_TYPE.COUNT;
182
172
  const {
183
173
  sqlSummaryColumnKey,
184
174
  summarySQLColumnName2ColumnKey = {}
@@ -198,11 +188,11 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
198
188
  let {
199
189
  key
200
190
  } = c;
201
- if (_baseUtils.default.isSameGroup(isColumnDataAsAnArray, cellValue, key)) {
191
+ if (BaseUtils.isSameGroup(isColumnDataAsAnArray, cellValue, key)) {
202
192
  if (cells[key]) {
203
193
  cells[key].rows.push(row);
204
194
  if (isCount) {
205
- if (_baseUtils.default.isCollaboratorColumnOrMultipleColumn(columnMap)) {
195
+ if (BaseUtils.isCollaboratorColumnOrMultipleColumn(columnMap)) {
206
196
  cells[key].total = total + row[sqlSummaryColumnKey];
207
197
  } else {
208
198
  cells[key].total = row[sqlSummaryColumnKey];
@@ -214,10 +204,10 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
214
204
  const nextValue = row[currentSqlName];
215
205
  // use columnKey to find current value
216
206
  const currentValue = Object.values(cells[key].total).find(item => item[2] === columnKey)[1];
217
- const computedValue = _baseUtils.default.getSummaryValue({
207
+ const computedValue = BaseUtils.getSummaryValue({
218
208
  summaryMethod: current.summary_method.toUpperCase(),
219
209
  summaryColumn: current.column
220
- }, currentValue, nextValue, _baseUtils.default.isCollaboratorColumnOrMultipleColumn(columnMap));
210
+ }, currentValue, nextValue, BaseUtils.isCollaboratorColumnOrMultipleColumn(columnMap));
221
211
  const columnName = current.column.name;
222
212
 
223
213
  // keep column key to find currentValue on updating
@@ -255,7 +245,7 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
255
245
  } else {
256
246
  updatedPivotRow.total = Object.values(cells).reduce((acc, item) => {
257
247
  item.total.forEach(t => {
258
- (0, _dtableUtils.isNumber)(t[1]) && (acc += t[1]);
248
+ isNumber(t[1]) && (acc += t[1]);
259
249
  });
260
250
  return acc;
261
251
  }, 0);
@@ -271,7 +261,7 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
271
261
  let {
272
262
  key
273
263
  } = c;
274
- if (_baseUtils.default.isSameGroup(isColumnDataAsAnArray, cellValue, key)) {
264
+ if (BaseUtils.isSameGroup(isColumnDataAsAnArray, cellValue, key)) {
275
265
  let total;
276
266
  if (isCount) {
277
267
  total = row[sqlSummaryColumnKey];
@@ -296,9 +286,9 @@ SQLStatisticsUtils.updateTwoDimensionRows = (chart, pivot_rows, pivot_columns, i
296
286
  const cellList = Object.values(cells);
297
287
  total = cellList.reduce((acc, item) => {
298
288
  let num;
299
- if ((0, _lodash.isObject)(item.total)) {
289
+ if (isObject(item.total)) {
300
290
  num = item.total.reduce((acc, item) => {
301
- (0, _dtableUtils.isNumber)(item[1]) && (acc += item[1]);
291
+ isNumber(item[1]) && (acc += item[1]);
302
292
  return acc;
303
293
  }, 0);
304
294
  } else {
@@ -328,7 +318,7 @@ SQLStatisticsUtils.getAndUpdateTwoDimensionTotal = (pivot_columns_total, pivot_c
328
318
  if (cell) {
329
319
  let pivot_column_total = pivot_columns_total && pivot_columns_total[key] ? pivot_columns_total[key] : 0;
330
320
  const currentCellTotal = Array.isArray(cell.total) ? cell.total.reduce((acc, item) => {
331
- (0, _dtableUtils.isNumber)(item[1]) && (acc += item[1]);
321
+ isNumber(item[1]) && (acc += item[1]);
332
322
  return acc;
333
323
  }, 0) : parseInt(cell.total);
334
324
  pivot_columns_total[key] = pivot_column_total + currentCellTotal;
@@ -350,22 +340,22 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
350
340
  } = chartSQLMap;
351
341
  let pivot_columns = [];
352
342
  let pivot_rows = [];
353
- const isCount = summary_type === _constants.CHART_SUMMARY_TYPE.COUNT;
343
+ const isCount = summary_type === CHART_SUMMARY_TYPE.COUNT;
354
344
 
355
345
  // if key is an array, handle it here ,currently only handle collaborator and multiple select
356
346
  // MULTIPLE_CELL_VALUE_COLUMN_TYPE = [CellType.COLLABORATOR, CellType.MULTIPLE_SELECT, CellType.LINK]
357
- const isGroupByColumnLinkFormula = groupbyColumn.type === _dtableUtils.CellType.LINK_FORMULA;
347
+ const isGroupByColumnLinkFormula = groupbyColumn.type === CellType.LINK_FORMULA;
358
348
  let newSqlRows = sqlRows;
359
349
  if (isGroupByColumnLinkFormula) {
360
350
  const {
361
351
  array_type
362
352
  } = groupbyColumn.data;
363
- if ([_dtableUtils.CellType.COLLABORATOR, _dtableUtils.CellType.MULTIPLE_SELECT].includes(array_type)) {
364
- newSqlRows = _baseUtils.default.formatedTableSqlRowsByCollaboratorAndMultiple(chart, sqlRows, chartSQLMap, columnMap);
353
+ if ([CellType.COLLABORATOR, CellType.MULTIPLE_SELECT].includes(array_type)) {
354
+ newSqlRows = BaseUtils.formatedTableSqlRowsByCollaboratorAndMultiple(chart, sqlRows, chartSQLMap, columnMap);
365
355
  }
366
356
  }
367
- if ([_dtableUtils.CellType.COLLABORATOR, _dtableUtils.CellType.MULTIPLE_SELECT].includes(groupbyColumn.type)) {
368
- newSqlRows = _baseUtils.default.formatedTableSqlRowsByCollaboratorAndMultiple(chart, sqlRows, chartSQLMap, columnMap);
357
+ if ([CellType.COLLABORATOR, CellType.MULTIPLE_SELECT].includes(groupbyColumn.type)) {
358
+ newSqlRows = BaseUtils.formatedTableSqlRowsByCollaboratorAndMultiple(chart, sqlRows, chartSQLMap, columnMap);
369
359
  }
370
360
  if (isCount) {
371
361
  let allTotal = 0;
@@ -381,7 +371,7 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
381
371
  }
382
372
  });
383
373
  }
384
- if (groupbyColumn.type === _dtableUtils.CellType.LINK_FORMULA && groupbyColumn.data.array_type === 'date') {
374
+ if (groupbyColumn.type === CellType.LINK_FORMULA && groupbyColumn.data.array_type === 'date') {
385
375
  pivot_rows = pivot_rows.reduce((acc, item) => {
386
376
  const {
387
377
  name,
@@ -398,7 +388,7 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
398
388
  return acc;
399
389
  }, []);
400
390
  }
401
- _baseUtils.default.sortCharts(pivot_rows, groupbyColumn, 'name', true);
391
+ BaseUtils.sortCharts(pivot_rows, groupbyColumn, 'name', true);
402
392
  return {
403
393
  pivot_columns,
404
394
  pivot_rows: pivot_rows,
@@ -417,7 +407,7 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
417
407
  let totalTemplate = {};
418
408
  Object.values(summaryColumnKeys).forEach(key => {
419
409
  const summaryMethod = summaryTableColumnKey2Method[key];
420
- totalTemplate[key] = _baseUtils.default.initTotal(summaryMethod);
410
+ totalTemplate[key] = BaseUtils.initTotal(summaryMethod);
421
411
  pivot_columns.push({
422
412
  key
423
413
  });
@@ -434,14 +424,14 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
434
424
  let columnKey = summarySQLColumnName2ColumnKey[key];
435
425
  let summaryColumn = summaryTableColumnKey2Column[columnKey];
436
426
  const summaryMethod = summaryTableColumnKey2Method[columnKey];
437
- let value = row[key] || _baseUtils.default.initTotal(summaryMethod);
438
- allTotal[columnKey] = _baseUtils.default.getSummaryValue({
427
+ let value = row[key] || BaseUtils.initTotal(summaryMethod);
428
+ allTotal[columnKey] = BaseUtils.getSummaryValue({
439
429
  summaryColumn,
440
430
  summaryMethod
441
431
  }, allTotal[columnKey], value);
442
- if (_baseUtils.default.isDateSummaryColumn(summaryColumn)) {
432
+ if (BaseUtils.isDateSummaryColumn(summaryColumn)) {
443
433
  rowTotal[columnKey] = value;
444
- } else if (_baseUtils.default.isNumericSummaryColumn(summaryColumn)) {
434
+ } else if (BaseUtils.isNumericSummaryColumn(summaryColumn)) {
445
435
  rowTotal[columnKey] = rowTotal[columnKey] + value;
446
436
  }
447
437
  });
@@ -451,7 +441,7 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
451
441
  total: rowTotal
452
442
  });
453
443
  }
454
- if (groupbyColumn.type === _dtableUtils.CellType.LINK_FORMULA && groupbyColumn.data.array_type === 'date') {
444
+ if (groupbyColumn.type === CellType.LINK_FORMULA && groupbyColumn.data.array_type === 'date') {
455
445
  pivot_rows = pivot_rows.reduce((acc, item) => {
456
446
  const {
457
447
  name,
@@ -484,12 +474,12 @@ SQLStatisticsUtils.oneDimensionTableSQLResult2JavaScript = async (chart, sqlRows
484
474
  total: allTotal[key]
485
475
  };
486
476
  }
487
- _baseUtils.default.sortCharts(pivot_rows, groupbyColumn, 'name', true);
477
+ BaseUtils.sortCharts(pivot_rows, groupbyColumn, 'name', true);
488
478
  return {
489
479
  pivot_columns,
490
480
  pivot_rows,
491
481
  pivot_columns_total: allTotal,
492
- dimensions: _constants.TABLE_DIMENSIONS.ONE
482
+ dimensions: TABLE_DIMENSIONS.ONE
493
483
  };
494
484
  };
495
485
  SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows, chartSQLMap, columnMap, tables) => {
@@ -517,8 +507,8 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
517
507
  let newSqlRows = sqlRows;
518
508
 
519
509
  // handle LINK_FORMULA
520
- const isGroupByColumnLinkFormula = groupbyColumn.type === _dtableUtils.CellType.LINK_FORMULA;
521
- const isColumnGroupByColumnLinkFormula = columnGroupbyColumn.type === _dtableUtils.CellType.LINK_FORMULA;
510
+ const isGroupByColumnLinkFormula = groupbyColumn.type === CellType.LINK_FORMULA;
511
+ const isColumnGroupByColumnLinkFormula = columnGroupbyColumn.type === CellType.LINK_FORMULA;
522
512
  let isRowGroupbyColumnDataAsAnArray, isGroupbyColumnDataAsAnArray;
523
513
 
524
514
  // Group by column
@@ -526,14 +516,14 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
526
516
  if (isGroupByColumnLinkFormula && groupbyColumn.data.array_type !== 'date') {
527
517
  isGroupbyColumnDataAsAnArray = true;
528
518
  } else {
529
- isGroupbyColumnDataAsAnArray = !!_dtableUtils.MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[groupbyColumn.type];
519
+ isGroupbyColumnDataAsAnArray = !!MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[groupbyColumn.type];
530
520
  }
531
521
 
532
522
  // column group by column
533
523
  if (isColumnGroupByColumnLinkFormula && groupbyColumn.data.array_type !== 'date') {
534
524
  isRowGroupbyColumnDataAsAnArray = true;
535
525
  } else {
536
- isRowGroupbyColumnDataAsAnArray = !!_dtableUtils.MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[columnGroupbyColumn.type];
526
+ isRowGroupbyColumnDataAsAnArray = !!MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP[columnGroupbyColumn.type];
537
527
  }
538
528
 
539
529
  // if key is an array, handle it here ,currently only handle collaborator and multiple select
@@ -542,12 +532,12 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
542
532
  const {
543
533
  array_type
544
534
  } = groupbyColumn.data;
545
- if ([_dtableUtils.CellType.COLLABORATOR, _dtableUtils.CellType.MULTIPLE_SELECT].includes(array_type)) {
546
- newSqlRows = _baseUtils.default.formatedTableSqlRowsByCollaboratorAndMultiple(chart, sqlRows, chartSQLMap, columnMap);
535
+ if ([CellType.COLLABORATOR, CellType.MULTIPLE_SELECT].includes(array_type)) {
536
+ newSqlRows = BaseUtils.formatedTableSqlRowsByCollaboratorAndMultiple(chart, sqlRows, chartSQLMap, columnMap);
547
537
  }
548
538
  }
549
- if ([_dtableUtils.CellType.COLLABORATOR, _dtableUtils.CellType.MULTIPLE_SELECT].includes(groupbyColumn.type)) {
550
- newSqlRows = _baseUtils.default.formatedTableSqlRowsByCollaboratorAndMultiple(chart, sqlRows, chartSQLMap, columnMap);
539
+ if ([CellType.COLLABORATOR, CellType.MULTIPLE_SELECT].includes(groupbyColumn.type)) {
540
+ newSqlRows = BaseUtils.formatedTableSqlRowsByCollaboratorAndMultiple(chart, sqlRows, chartSQLMap, columnMap);
551
541
  }
552
542
  let pivot_columns = [];
553
543
  let pivot_rows = [];
@@ -558,12 +548,12 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
558
548
  for (const row of newSqlRows) {
559
549
  const columnGroupbyColumnCellValue = row[sqlColumnGroupbyColumnKey];
560
550
  let columnGroupbyColumnCellValueKey;
561
- if (_baseUtils.default.isCollaborator(columnGroupbyColumn)) {
551
+ if (BaseUtils.isCollaborator(columnGroupbyColumn)) {
562
552
  columnGroupbyColumnCellValueKey = columnGroupbyColumnCellValue || [];
563
553
  } else {
564
554
  columnGroupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(columnGroupbyColumnCellValue, columnGroupbyColumn, chart.config, true);
565
555
  }
566
- if (_baseUtils.default.isValidCellValue(columnGroupbyColumnCellValue, groupby_include_empty_cells)) {
556
+ if (BaseUtils.isValidCellValue(columnGroupbyColumnCellValue, groupby_include_empty_cells)) {
567
557
  _SQLStatisticsUtils.updateTwoDimensionColumns(pivot_columns, columnGroupbyColumnCellValueKey, {
568
558
  isIncludeEmpty: groupby_include_empty_cells,
569
559
  isCellValueAsAnArray: isRowGroupbyColumnDataAsAnArray
@@ -573,19 +563,19 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
573
563
  for (const row of newSqlRows) {
574
564
  const groupbyColumnCellValue = row[sqlGroupbyColumnKey];
575
565
  let groupbyColumnCellValueKey;
576
- if (_baseUtils.default.isCollaborator(groupbyColumn)) {
566
+ if (BaseUtils.isCollaborator(groupbyColumn)) {
577
567
  groupbyColumnCellValueKey = groupbyColumnCellValue || [];
578
568
  } else {
579
569
  groupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(groupbyColumnCellValue, groupbyColumn, chart.config, true);
580
570
  }
581
571
  const columnGroupbyColumnCellValue = row[sqlColumnGroupbyColumnKey];
582
572
  let columnGroupbyColumnCellValueKey;
583
- if (_baseUtils.default.isCollaborator(columnGroupbyColumn)) {
573
+ if (BaseUtils.isCollaborator(columnGroupbyColumn)) {
584
574
  columnGroupbyColumnCellValueKey = columnGroupbyColumnCellValue || [];
585
575
  } else {
586
576
  columnGroupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(columnGroupbyColumnCellValue, columnGroupbyColumn, chart.config, true);
587
577
  }
588
- if (_baseUtils.default.isValidCellValue(groupbyColumnCellValue, groupby_include_empty_cells)) {
578
+ if (BaseUtils.isValidCellValue(groupbyColumnCellValue, groupby_include_empty_cells)) {
589
579
  // data is an array is handled previously, but to keep capability, still use old code
590
580
  if (isGroupbyColumnDataAsAnArray) {
591
581
  if ((!Array.isArray(groupbyColumnCellValueKey) || groupbyColumnCellValueKey.length === 0) && groupby_include_empty_cells) {
@@ -622,15 +612,15 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
622
612
  }
623
613
 
624
614
  // update Collaborator and Multiple mean value
625
- if (_baseUtils.default.isCollaboratorColumnOrMultipleColumn(columnMap)) {
626
- const new_pivot_rows = _baseUtils.default.updateCollaboratorAndMultipleAvg(pivot_rows, [singleNumeriColumnWithMethod, ...multipleNumericColumnsWithMethod]);
615
+ if (BaseUtils.isCollaboratorColumnOrMultipleColumn(columnMap)) {
616
+ const new_pivot_rows = BaseUtils.updateCollaboratorAndMultipleAvg(pivot_rows, [singleNumeriColumnWithMethod, ...multipleNumericColumnsWithMethod]);
627
617
  pivot_rows = new_pivot_rows;
628
618
  }
629
619
  [pivot_columns_total, pivot_table_total] = _SQLStatisticsUtils.getAndUpdateTwoDimensionTotal(pivot_columns_total, pivot_columns, pivot_rows, pivot_table_total, chart);
630
- _baseUtils.default.sortCharts(pivot_rows, groupbyColumn, 'name', true);
631
- _baseUtils.default.sortCharts(pivot_columns, columnGroupbyColumn, 'key', true);
632
- if ((groupbyColumn === null || groupbyColumn === void 0 ? void 0 : groupbyColumn.type) === _dtableUtils.CellType.COLLABORATOR) {
633
- pivot_rows = _baseUtils.default.mergePivotTableSameCollaborator(pivot_rows);
620
+ BaseUtils.sortCharts(pivot_rows, groupbyColumn, 'name', true);
621
+ BaseUtils.sortCharts(pivot_columns, columnGroupbyColumn, 'key', true);
622
+ if ((groupbyColumn === null || groupbyColumn === void 0 ? void 0 : groupbyColumn.type) === CellType.COLLABORATOR) {
623
+ pivot_rows = BaseUtils.mergePivotTableSameCollaborator(pivot_rows);
634
624
  }
635
625
  const summary_columns = [summaryColumn, ...summaryColumnsWithMethod.map(item => item.column)];
636
626
  return {
@@ -639,7 +629,7 @@ SQLStatisticsUtils.twoDimensionTableSQLResult2JavaScript = async (chart, sqlRows
639
629
  pivot_rows,
640
630
  pivot_columns_total,
641
631
  pivot_table_total,
642
- dimensions: _constants.TABLE_DIMENSIONS.TWO,
632
+ dimensions: TABLE_DIMENSIONS.TWO,
643
633
  isSingleNumericColumn
644
634
  };
645
635
  };
@@ -660,7 +650,7 @@ SQLStatisticsUtils.basicChartSQLResult2JavaScript = async (chart, sqlRows, chart
660
650
  groupbyColumn,
661
651
  summaryColumn
662
652
  } = columnMap;
663
- const isGroupbyColumnDataAsAnArray = (0, _baseUtils.findIfColumnDataIsArray)(groupbyColumn);
653
+ const isGroupbyColumnDataAsAnArray = findIfColumnDataIsArray(groupbyColumn);
664
654
  const {
665
655
  sqlGroupbyColumnKey,
666
656
  sqlSummaryColumnKey
@@ -670,10 +660,10 @@ SQLStatisticsUtils.basicChartSQLResult2JavaScript = async (chart, sqlRows, chart
670
660
  const cellValue = row[sqlGroupbyColumnKey];
671
661
  const summaryValue = row[sqlSummaryColumnKey];
672
662
  let formatted_value = cellValue;
673
- if (y_axis_summary_type === _constants.CHART_SUMMARY_TYPE.ADVANCED) {
674
- formatted_value = (0, _columnUtils.getFormattedValue)(cellValue, y_axis_summary_column_key, y_axis_summary_method);
663
+ if (y_axis_summary_type === CHART_SUMMARY_TYPE.ADVANCED) {
664
+ formatted_value = getFormattedValue(cellValue, y_axis_summary_column_key, y_axis_summary_method);
675
665
  }
676
- if (_baseUtils.default.isValidCellValue(cellValue, x_axis_include_empty_cells || groupby_include_empty_cells)) {
666
+ if (BaseUtils.isValidCellValue(cellValue, x_axis_include_empty_cells || groupby_include_empty_cells)) {
677
667
  const key = await _SQLStatisticsUtils.getGroupLabelFromDB(cellValue, groupbyColumn, chart.config);
678
668
  if (isGroupbyColumnDataAsAnArray) {
679
669
  if (!Array.isArray(key) || key.length === 0) {
@@ -731,11 +721,11 @@ SQLStatisticsUtils.basicChartSQLResult2JavaScript = async (chart, sqlRows, chart
731
721
  }
732
722
  }
733
723
  }
734
- _baseUtils.default.sortCharts(result, groupbyColumn, 'name');
735
- _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
736
- _baseUtils.default.updateSummaryValuePrecision(result, summaryColumn, 'value');
737
- if (_constants.SUPPORT_DATA_SORT_CHART_TYPES.includes(type) && sort_type) {
738
- _baseUtils.default.sortChartData(result, sort_type);
724
+ BaseUtils.sortCharts(result, groupbyColumn, 'name');
725
+ await BaseUtils.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
726
+ BaseUtils.updateSummaryValuePrecision(result, summaryColumn, 'value');
727
+ if (SUPPORT_DATA_SORT_CHART_TYPES.includes(type) && sort_type) {
728
+ BaseUtils.sortChartData(result, sort_type);
739
729
  return result;
740
730
  }
741
731
  return result;
@@ -764,28 +754,28 @@ SQLStatisticsUtils.customChartSQLResult2JavaScript = async (chart, sqlRows, char
764
754
  groupbyColumn,
765
755
  summaryColumn
766
756
  } = columnMap;
767
- const table = (0, _dtableUtils.getTableById)(tables, table_id);
757
+ const table = getTableById(tables, table_id);
768
758
  const stack = y_axises[index];
769
759
  if (!stack) return [];
770
760
  const {
771
761
  column_groupby_numeric_columns
772
762
  } = stack;
773
- const y_axis_type = "".concat(_constants.Y_AXIS_TYPE_PREFIX).concat(index);
763
+ const y_axis_type = `${Y_AXIS_TYPE_PREFIX}${index}`;
774
764
  let summaryMethods = [];
775
765
  let originalMethods = [];
776
766
  let groupColumnNames = [];
777
767
  let numericColumns = [];
778
768
  column_groupby_numeric_columns.forEach(item => {
779
- const numericColumn = (0, _dtableUtils.getTableColumnByKey)(table, item.column_key);
769
+ const numericColumn = getTableColumnByKey(table, item.column_key);
780
770
  const groupColumnName = numericColumn.name;
781
771
  numericColumns.push(numericColumn);
782
772
  groupColumnNames.push(groupColumnName);
783
- summaryMethods.push((0, _sql.summaryMethodColumn2SqlColumn)(item.summary_method.toUpperCase(), numericColumn).key);
773
+ summaryMethods.push(summaryMethodColumn2SqlColumn(item.summary_method.toUpperCase(), numericColumn).key);
784
774
  originalMethods.push(item.summary_method);
785
775
  });
786
776
  const {
787
777
  key: sqlGroupbyColumnKey
788
- } = (0, _column2SqlColumn.column2SqlColumn)(groupbyColumn, {
778
+ } = column2SqlColumn(groupbyColumn, {
789
779
  dateGranularity: x_axis_date_granularity,
790
780
  geolocationGranularity: x_axis_geolocation_granularity
791
781
  });
@@ -799,8 +789,8 @@ SQLStatisticsUtils.customChartSQLResult2JavaScript = async (chart, sqlRows, char
799
789
  if (!(x_axis_include_empty_cells || x_axis_include_empty) && isEmpty) return;
800
790
  let value = row[summaryMethod] || 0;
801
791
  let formatted_value = value;
802
- value = (0, _columnUtils.formatNumericValue)(value, numericColumns[index]);
803
- formatted_value = (0, _columnUtils.getFormattedValue)(value, numericColumns[index], originalMethods[index]);
792
+ value = formatNumericValue(value, numericColumns[index]);
793
+ formatted_value = getFormattedValue(value, numericColumns[index], originalMethods[index]);
804
794
  groupItems.push({
805
795
  name: label,
806
796
  value,
@@ -812,7 +802,7 @@ SQLStatisticsUtils.customChartSQLResult2JavaScript = async (chart, sqlRows, char
812
802
  });
813
803
  result = result.concat(groupItems);
814
804
  }
815
- const isCellValueAsAnArray = (0, _baseUtils.findIfColumnDataIsArray)(groupbyColumn);
805
+ const isCellValueAsAnArray = findIfColumnDataIsArray(groupbyColumn);
816
806
  if (isCellValueAsAnArray) {
817
807
  const takenApart = [];
818
808
  const assembled = [];
@@ -822,7 +812,7 @@ SQLStatisticsUtils.customChartSQLResult2JavaScript = async (chart, sqlRows, char
822
812
  name: names
823
813
  } = item;
824
814
  if (!Array.isArray(names)) return;
825
- if (!(names !== null && names !== void 0 && names.length)) {
815
+ if (!(names === null || names === void 0 ? void 0 : names.length)) {
826
816
  takenApart.push({
827
817
  ...item,
828
818
  name: null
@@ -853,9 +843,9 @@ SQLStatisticsUtils.customChartSQLResult2JavaScript = async (chart, sqlRows, char
853
843
  });
854
844
  result = assembled;
855
845
  }
856
- _baseUtils.default.sortCharts(result, groupbyColumn, 'name');
857
- _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', '', false, true);
858
- _baseUtils.default.updateSummaryValuePrecision(result, summaryColumn, 'value');
846
+ BaseUtils.sortCharts(result, groupbyColumn, 'name');
847
+ await BaseUtils.updateTableViewList(result, groupbyColumn, 'name', '', false, true);
848
+ BaseUtils.updateSummaryValuePrecision(result, summaryColumn, 'value');
859
849
  return result;
860
850
  };
861
851
  SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQLMap, columnMap, tables) => {
@@ -880,20 +870,21 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
880
870
  y_axis_summary_method,
881
871
  display_increase
882
872
  } = config;
883
- const groupName1 = "".concat(x_axis_date_range_start, " - ").concat(x_axis_date_range_end);
884
- const groupName2 = "".concat(x_axis_compared_date_range_start, " - ").concat(x_axis_compared_date_range_end);
873
+ const groupName1 = `${x_axis_date_range_start} - ${x_axis_date_range_end}`;
874
+ const groupName2 = `${x_axis_compared_date_range_start} - ${x_axis_compared_date_range_end}`;
885
875
  const dateRangeResult = new Map();
886
876
  let dateComparedResult = new Map();
887
- const isAdvanced = y_axis_summary_type === _constants.CHART_SUMMARY_TYPE.ADVANCED;
877
+ const isAdvanced = y_axis_summary_type === CHART_SUMMARY_TYPE.ADVANCED;
888
878
  const startDate = new Date(x_axis_date_range_start);
889
879
  const endDate = new Date(x_axis_date_range_end);
890
880
  const comparedStartDate = new Date(x_axis_compared_date_range_start);
891
881
  const comparedEndDate = new Date(x_axis_compared_date_range_end);
892
882
  for (const item of sqlRows) {
893
883
  let name = item[sqlGroupbyColumnKey];
884
+ if (!name) continue;
894
885
  const label = await _SQLStatisticsUtils.getGroupLabelFromDB(name, groupbyColumn, chart.config);
895
886
  if (x_axis_date_granularity === 'quarter') {
896
- name = (0, _dateTranslate.convertQuarterToDate)(name);
887
+ name = convertQuarterToDate(name);
897
888
  } else if (x_axis_date_granularity === 'year') {
898
889
  // set the date to the first day of the year, and set the time to 8:05, cause the time zone is UTC+8,
899
890
  // need to ensure time is at the range of user's slected time
@@ -906,30 +897,50 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
906
897
  const currentValue = dateRangeResult.get(label);
907
898
  if (!currentValue) {
908
899
  if (isAdvanced) {
909
- dateRangeResult.set(label, [value]);
900
+ dateRangeResult.set(label, {
901
+ value: [value],
902
+ date: name,
903
+ rows: [item]
904
+ });
910
905
  } else {
911
- dateRangeResult.set(label, value);
906
+ dateRangeResult.set(label, {
907
+ value,
908
+ date: name,
909
+ rows: [item]
910
+ });
912
911
  }
913
912
  } else {
914
913
  if (isAdvanced) {
915
- currentValue.push(value);
914
+ currentValue.value.push(value);
915
+ currentValue.rows.push(item);
916
916
  } else {
917
- dateRangeResult.set(label, value + currentValue);
917
+ currentValue.value = value + currentValue.value;
918
+ currentValue.rows.push(item);
918
919
  }
919
920
  }
920
921
  } else if (name >= comparedStartDate && name <= comparedEndDate) {
921
922
  const currentValue = dateComparedResult.get(label);
922
923
  if (!currentValue) {
923
924
  if (isAdvanced) {
924
- dateComparedResult.set(label, [value]);
925
+ dateComparedResult.set(label, {
926
+ value: [value],
927
+ date: name,
928
+ rows: [item]
929
+ });
925
930
  } else {
926
- dateComparedResult.set(label, value);
931
+ dateComparedResult.set(label, {
932
+ value,
933
+ date: name,
934
+ rows: [item]
935
+ });
927
936
  }
928
937
  } else {
929
938
  if (isAdvanced) {
930
- dateComparedResult.push(value);
939
+ currentValue.value.push(value);
940
+ currentValue.rows.push(item);
931
941
  } else {
932
- dateComparedResult.set(label, value + currentValue);
942
+ currentValue.value = value + currentValue.value;
943
+ currentValue.rows.push(item);
933
944
  }
934
945
  }
935
946
  }
@@ -937,38 +948,53 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
937
948
  let comparedResult = [];
938
949
  let rangeResult = [];
939
950
  const data = (summaryColumn === null || summaryColumn === void 0 ? void 0 : summaryColumn.data) || {};
940
- for (let item of dateRangeResult) {
941
- let value = item[1];
951
+
952
+ // convert Map to array and sort by date
953
+ const sortedDateRangeEntries = Array.from(dateRangeResult.entries()).sort((a, b) => {
954
+ return a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0;
955
+ });
956
+ const sortedDateComparedEntries = Array.from(dateComparedResult.entries()).sort((a, b) => {
957
+ return a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0;
958
+ });
959
+ for (let item of sortedDateRangeEntries) {
960
+ const {
961
+ value: rawValue,
962
+ rows
963
+ } = item[1] || {};
964
+ let value = rawValue;
942
965
  let formatted_value = value;
943
966
  if (isAdvanced) {
944
- value = (0, _columnUtils.getSummaryResult)(item[1], y_axis_summary_method, data.precision);
945
- formatted_value = (0, _columnUtils.getFormattedValue)(value, summaryColumn, y_axis_summary_method);
967
+ value = getSummaryResult(rawValue, y_axis_summary_method, data.precision);
968
+ formatted_value = getFormattedValue(value, summaryColumn, y_axis_summary_method);
946
969
  }
947
970
  rangeResult.push({
948
971
  name: item[0],
949
972
  group_name: groupName1,
950
973
  raw_name: item[0],
951
974
  value,
975
+ rows: rows || [],
952
976
  formatted_value
953
977
  });
954
978
  }
955
979
  let index = 0;
956
- for (let item of dateComparedResult) {
980
+ for (let item of sortedDateComparedEntries) {
957
981
  let dateRangeItem = rangeResult[index];
958
982
  if (!dateRangeItem) {
959
983
  break;
960
984
  }
961
- let value = item[1];
985
+ let value = item[1].value;
986
+ const rows = item[1].rows;
962
987
  let formatted_value = value;
963
988
  if (isAdvanced) {
964
- value = (0, _columnUtils.getSummaryResult)(item[1], y_axis_summary_method, data.precision);
965
- formatted_value = (0, _columnUtils.getFormattedValue)(value, summaryColumn, y_axis_summary_method);
989
+ value = getSummaryResult(item[1].value, y_axis_summary_method, data.precision);
990
+ formatted_value = getFormattedValue(value, summaryColumn, y_axis_summary_method);
966
991
  }
967
992
  const newItem = {
968
993
  name: dateRangeItem.name,
969
994
  group_name: groupName2,
970
995
  raw_name: item[0],
971
996
  value,
997
+ rows,
972
998
  formatted_value
973
999
  };
974
1000
  if (display_increase) {
@@ -985,8 +1011,10 @@ SQLStatisticsUtils.compareSQLResult2Javascript = async (chart, sqlRows, chartSQL
985
1011
  if (comparedResult.length > rangeResult.length) {
986
1012
  comparedResult = comparedResult.slice(0, rangeResult.length);
987
1013
  }
988
- _baseUtils.default.updateSummaryValuePrecision(comparedResult, summaryColumn, 'value');
989
- _baseUtils.default.updateSummaryValuePrecision(rangeResult, summaryColumn, 'value');
1014
+ BaseUtils.updateSummaryValuePrecision(comparedResult, summaryColumn, 'value');
1015
+ BaseUtils.updateSummaryValuePrecision(rangeResult, summaryColumn, 'value');
1016
+ BaseUtils.sortCharts(rangeResult, groupbyColumn, 'name');
1017
+ BaseUtils.sortCharts(comparedResult, groupbyColumn, 'name');
990
1018
  return [...comparedResult, ...rangeResult];
991
1019
  };
992
1020
  SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, chartSQLMap, columnMap, tables) => {
@@ -1003,7 +1031,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
1003
1031
  table_id,
1004
1032
  y_axis_left_group_by_numeric_columns
1005
1033
  } = config;
1006
- const table = (0, _dtableUtils.getTableById)(tables, table_id);
1034
+ const table = getTableById(tables, table_id);
1007
1035
  const {
1008
1036
  groupbyColumn,
1009
1037
  summaryColumn
@@ -1017,7 +1045,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
1017
1045
  sqlRightSummaryColumnKey,
1018
1046
  sqlLeftSummaryColumnKey
1019
1047
  } = chartSQLMap;
1020
- const isGroupbyColumnDataAsAnArray = (0, _baseUtils.findIfColumnDataIsArray)(groupbyColumn);
1048
+ const isGroupbyColumnDataAsAnArray = findIfColumnDataIsArray(groupbyColumn);
1021
1049
  let result = [];
1022
1050
  if (!y_axis_left_group_by_multiple_numeric_column) {
1023
1051
  // let leftSummaryColumn, rightSummaryColumn;
@@ -1044,7 +1072,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
1044
1072
  if (itemIdx < 0) {
1045
1073
  result.push({
1046
1074
  // color is defined by index of the name
1047
- color: _constants.STYLE_COLORS[0].colors[index % 12],
1075
+ color: STYLE_COLORS[0].colors[index % 12],
1048
1076
  name: null,
1049
1077
  rows: [row],
1050
1078
  value_left: valueLeft,
@@ -1061,7 +1089,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
1061
1089
  let itemIdx = result.findIndex(v => v.name === item);
1062
1090
  if (itemIdx < 0) {
1063
1091
  result.push({
1064
- color: _constants.STYLE_COLORS[0].colors[index % 12],
1092
+ color: STYLE_COLORS[0].colors[index % 12],
1065
1093
  name: item,
1066
1094
  rows: [row],
1067
1095
  value_left: valueLeft,
@@ -1079,7 +1107,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
1079
1107
  let itemIdx = result.findIndex(v => v.name === key);
1080
1108
  if (itemIdx < 0) {
1081
1109
  result.push({
1082
- color: _constants.STYLE_COLORS[0].colors[index % 12],
1110
+ color: STYLE_COLORS[0].colors[index % 12],
1083
1111
  name: key,
1084
1112
  rows: [row],
1085
1113
  value_left: valueLeft,
@@ -1099,11 +1127,11 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
1099
1127
  // rightSummaryColumn = getTableColumnByKey(table, y_axis_right_summary_column);
1100
1128
  // }
1101
1129
  const groupItems = [];
1102
- let leftSummaryColumn = (0, _dtableUtils.getTableColumnByKey)(table, y_axis_left_summary_column);
1130
+ let leftSummaryColumn = getTableColumnByKey(table, y_axis_left_summary_column);
1103
1131
  const summaryMethod = y_axis_left_summary_method.toUpperCase();
1104
1132
  const {
1105
1133
  key
1106
- } = (0, _sql.summaryMethodColumn2SqlColumn)(summaryMethod, leftSummaryColumn || {});
1134
+ } = summaryMethodColumn2SqlColumn(summaryMethod, leftSummaryColumn || {});
1107
1135
  const groupItem = {
1108
1136
  sqlName: key,
1109
1137
  column: leftSummaryColumn
@@ -1113,12 +1141,12 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
1113
1141
  groupItems.push(groupItem);
1114
1142
  }
1115
1143
  y_axis_left_group_by_numeric_columns.forEach((item, index) => {
1116
- const column = (0, _dtableUtils.getTableColumnByKey)(table, item.column_key);
1144
+ const column = getTableColumnByKey(table, item.column_key);
1117
1145
  if (column) {
1118
1146
  const itemSummaryMethod = item.summary_method.toUpperCase();
1119
1147
  const {
1120
1148
  key
1121
- } = (0, _sql.summaryMethodColumn2SqlColumn)(itemSummaryMethod, column || {});
1149
+ } = summaryMethodColumn2SqlColumn(itemSummaryMethod, column || {});
1122
1150
  const groupItem = {
1123
1151
  sqlName: key,
1124
1152
  column
@@ -1159,7 +1187,7 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
1159
1187
  rows: [item],
1160
1188
  group_name: groupName,
1161
1189
  // for multiple numeric_columns, color is defined by group_name
1162
- color: _constants.STYLE_COLORS[0].colors[index % 12]
1190
+ color: STYLE_COLORS[0].colors[index % 12]
1163
1191
  });
1164
1192
  } else {
1165
1193
  const itemRow = result[itemIdx];
@@ -1184,16 +1212,16 @@ SQLStatisticsUtils.combinationSQLResult2Javascript = async (chart, sqlRows, char
1184
1212
  value_right: valueRight,
1185
1213
  rows: [item],
1186
1214
  group_name: groupName,
1187
- color: _constants.STYLE_COLORS[0].colors[index % 12]
1215
+ color: STYLE_COLORS[0].colors[index % 12]
1188
1216
  });
1189
1217
  });
1190
1218
  }
1191
1219
  }
1192
1220
  }
1193
- _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', '', false, true);
1194
- _baseUtils.default.sortCharts(result, groupbyColumn, 'name');
1195
- _baseUtils.default.updateSummaryValuePrecision(result, summaryColumnLeft, 'value_left');
1196
- _baseUtils.default.updateSummaryValuePrecision(result, summaryColumnRight, 'value_right');
1221
+ await BaseUtils.updateTableViewList(result, groupbyColumn, 'name', '', false, true);
1222
+ BaseUtils.sortCharts(result, groupbyColumn, 'name');
1223
+ BaseUtils.updateSummaryValuePrecision(result, summaryColumnLeft, 'value_left');
1224
+ BaseUtils.updateSummaryValuePrecision(result, summaryColumnRight, 'value_right');
1197
1225
  return result;
1198
1226
  };
1199
1227
  SQLStatisticsUtils.dashboardSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, columnMap, tables) => {
@@ -1209,17 +1237,17 @@ SQLStatisticsUtils.dashboardSQLResult2JavaScript = (chart, sqlRows, chartSQLMap,
1209
1237
  total_value_column_key,
1210
1238
  table_id
1211
1239
  } = config;
1212
- const table = (0, _dtableUtils.getTableById)(tables, table_id);
1213
- const targetColumn = (0, _dtableUtils.getTableColumnByKey)(table, target_value_column_key);
1214
- const totalColumn = (0, _dtableUtils.getTableColumnByKey)(table, total_value_column_key);
1240
+ const table = getTableById(tables, table_id);
1241
+ const targetColumn = getTableColumnByKey(table, target_value_column_key);
1242
+ const totalColumn = getTableColumnByKey(table, total_value_column_key);
1215
1243
  const targetSummaryMethod = target_value_column_summary_method.toUpperCase();
1216
1244
  const totalSummaryMethod = total_value_column_summary_method.toUpperCase();
1217
1245
  const {
1218
1246
  key: targetResultKey
1219
- } = (0, _sql.summaryMethodColumn2SqlColumn)(targetSummaryMethod, targetColumn);
1247
+ } = summaryMethodColumn2SqlColumn(targetSummaryMethod, targetColumn);
1220
1248
  const {
1221
1249
  key: totalResultKey
1222
- } = (0, _sql.summaryMethodColumn2SqlColumn)(totalSummaryMethod, totalColumn);
1250
+ } = summaryMethodColumn2SqlColumn(totalSummaryMethod, totalColumn);
1223
1251
  const targetResult = summaryResult[targetResultKey];
1224
1252
  const totalResult = summaryResult[totalResultKey];
1225
1253
  if (totalResult === 0) {
@@ -1274,12 +1302,12 @@ SQLStatisticsUtils.groupingTwoDimensionChartSQLResult2JavaScript = async (chart,
1274
1302
  sqlSummaryColumnKey
1275
1303
  } = chartSQLMap;
1276
1304
  let result = [];
1277
- const isGroupbyColumnDataAsAnArray = (0, _baseUtils.findIfColumnDataIsArray)(groupbyColumn);
1278
- const isColumnGroupbyColumnDataAsAnArray = (0, _baseUtils.findIfColumnDataIsArray)(columnGroupbyColumn);
1305
+ const isGroupbyColumnDataAsAnArray = findIfColumnDataIsArray(groupbyColumn);
1306
+ const isColumnGroupbyColumnDataAsAnArray = findIfColumnDataIsArray(columnGroupbyColumn);
1279
1307
  for (const row of sqlRows) {
1280
1308
  const groupbyColumnCellValue = row[sqlGroupbyColumnKey];
1281
1309
  const groupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(groupbyColumnCellValue, groupbyColumn, chart.config);
1282
- if (_baseUtils.default.isValidCellValue(groupbyColumnCellValueKey, includeEmpty)) {
1310
+ if (BaseUtils.isValidCellValue(groupbyColumnCellValueKey, includeEmpty)) {
1283
1311
  const columnGroupbyColumnCellValue = row[sqlColumnGroupbyColumnKey];
1284
1312
  const columnGroupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(columnGroupbyColumnCellValue, columnGroupbyColumn, chart.config);
1285
1313
  const count = row[sqlSummaryColumnKey];
@@ -1296,10 +1324,73 @@ SQLStatisticsUtils.groupingTwoDimensionChartSQLResult2JavaScript = async (chart,
1296
1324
  }
1297
1325
  }
1298
1326
  }
1299
- _baseUtils.default.sortCharts(result, groupbyColumn, 'name');
1300
- _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
1301
- _baseUtils.default.updateTableViewList(result, columnGroupbyColumn, 'group_name', 'group_color', false, false);
1302
- _baseUtils.default.updateSummaryValuePrecision(result, summaryColumn, 'value');
1327
+
1328
+ // fill empty group name with value 0
1329
+ const allGroupNames = new Set();
1330
+ const nameGroupMap = new Map();
1331
+ result.forEach(item => {
1332
+ const {
1333
+ name,
1334
+ group_name: groupName
1335
+ } = item;
1336
+ allGroupNames.add(groupName);
1337
+ if (!nameGroupMap.has(name)) {
1338
+ nameGroupMap.set(name, new Set());
1339
+ }
1340
+ nameGroupMap.get(name).add(groupName);
1341
+ });
1342
+ const isEmptyGroupName = groupName => groupName === undefined || groupName === null || groupName === '';
1343
+ const groupNameList = Array.from(allGroupNames).sort((a, b) => {
1344
+ const aEmpty = isEmptyGroupName(a);
1345
+ const bEmpty = isEmptyGroupName(b);
1346
+ if (aEmpty && !bEmpty) return 1;
1347
+ if (!aEmpty && bEmpty) return -1;
1348
+ return `${a !== null && a !== void 0 ? a : ''}`.localeCompare(`${b !== null && b !== void 0 ? b : ''}`);
1349
+ });
1350
+ nameGroupMap.forEach((groupSet, name) => {
1351
+ groupNameList.forEach(groupName => {
1352
+ if (!groupSet.has(groupName)) {
1353
+ result.push({
1354
+ name,
1355
+ rows: [],
1356
+ group_name: groupName,
1357
+ value: 0
1358
+ });
1359
+ }
1360
+ });
1361
+ });
1362
+
1363
+ // ensure each name keeps original order while its group_name entries follow the normalized group order
1364
+ const groupOrder = new Map(groupNameList.map((groupName, index) => [groupName, index]));
1365
+ const nameOrder = [];
1366
+ const seenNames = new Set();
1367
+ const nameBuckets = new Map();
1368
+ result.forEach(item => {
1369
+ if (!seenNames.has(item.name)) {
1370
+ seenNames.add(item.name);
1371
+ nameOrder.push(item.name);
1372
+ }
1373
+ if (!nameBuckets.has(item.name)) {
1374
+ nameBuckets.set(item.name, []);
1375
+ }
1376
+ nameBuckets.get(item.name).push(item);
1377
+ });
1378
+ const orderedResult = [];
1379
+ nameOrder.forEach(name => {
1380
+ const items = nameBuckets.get(name).sort((a, b) => {
1381
+ var _a$group_name, _b$group_name;
1382
+ const aOrder = groupOrder.has(a.group_name) ? groupOrder.get(a.group_name) : Number.MAX_SAFE_INTEGER;
1383
+ const bOrder = groupOrder.has(b.group_name) ? groupOrder.get(b.group_name) : Number.MAX_SAFE_INTEGER;
1384
+ if (aOrder !== bOrder) return aOrder - bOrder;
1385
+ return `${(_a$group_name = a.group_name) !== null && _a$group_name !== void 0 ? _a$group_name : ''}`.localeCompare(`${(_b$group_name = b.group_name) !== null && _b$group_name !== void 0 ? _b$group_name : ''}`);
1386
+ });
1387
+ orderedResult.push(...items);
1388
+ });
1389
+ result.splice(0, result.length, ...orderedResult);
1390
+ BaseUtils.sortCharts(result, groupbyColumn, 'name');
1391
+ await BaseUtils.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
1392
+ await BaseUtils.updateTableViewList(result, columnGroupbyColumn, 'group_name', 'group_color', false, false);
1393
+ BaseUtils.updateSummaryValuePrecision(result, summaryColumn, 'value');
1303
1394
  return result;
1304
1395
  };
1305
1396
  SQLStatisticsUtils.groupingChartSQLResult2JavaScript = async (chart, sqlRows, chartSQLMap, columnMap, tables) => {
@@ -1318,7 +1409,7 @@ SQLStatisticsUtils.groupingChartSQLResult2JavaScript = async (chart, sqlRows, ch
1318
1409
  summaryColumn,
1319
1410
  summaryColumnsWithMethod
1320
1411
  } = columnMap;
1321
- if (y_axis_summary_type === _constants.CHART_SUMMARY_TYPE.COUNT) {
1412
+ if (y_axis_summary_type === CHART_SUMMARY_TYPE.COUNT) {
1322
1413
  if (!columnGroupbyColumn) return await _SQLStatisticsUtils.basicChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables);
1323
1414
  return await _SQLStatisticsUtils.groupingTwoDimensionChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables);
1324
1415
  }
@@ -1330,11 +1421,11 @@ SQLStatisticsUtils.groupingChartSQLResult2JavaScript = async (chart, sqlRows, ch
1330
1421
  summaryColumns
1331
1422
  } = chartSQLMap;
1332
1423
  let result = [];
1333
- const isGroupbyColumnDataAsAnArray = (0, _baseUtils.findIfColumnDataIsArray)(groupbyColumn);
1424
+ const isGroupbyColumnDataAsAnArray = findIfColumnDataIsArray(groupbyColumn);
1334
1425
  for (const row of sqlRows) {
1335
1426
  const groupbyColumnCellValue = row[sqlGroupbyColumnKey];
1336
1427
  const groupbyColumnCellValueKey = await _SQLStatisticsUtils.getGroupLabelFromDB(groupbyColumnCellValue, groupbyColumn, chart.config);
1337
- if (_baseUtils.default.isValidCellValue(groupbyColumnCellValueKey, includeEmpty)) {
1428
+ if (BaseUtils.isValidCellValue(groupbyColumnCellValueKey, includeEmpty)) {
1338
1429
  Object.keys(summaryColumns).forEach(sqlSummaryColumnName => {
1339
1430
  const {
1340
1431
  sqlSummaryColumnKey,
@@ -1355,8 +1446,8 @@ SQLStatisticsUtils.groupingChartSQLResult2JavaScript = async (chart, sqlRows, ch
1355
1446
  });
1356
1447
  }
1357
1448
  }
1358
- _baseUtils.default.sortCharts(result, groupbyColumn, 'name');
1359
- _baseUtils.default.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
1449
+ BaseUtils.sortCharts(result, groupbyColumn, 'name');
1450
+ await BaseUtils.updateTableViewList(result, groupbyColumn, 'name', 'color', false, true);
1360
1451
  const allSummaryColumns = [summaryColumn].concat(summaryColumnsWithMethod.map(item => item.column));
1361
1452
 
1362
1453
  // format precision of enabled precision columns
@@ -1369,7 +1460,7 @@ SQLStatisticsUtils.groupingChartSQLResult2JavaScript = async (chart, sqlRows, ch
1369
1460
  });
1370
1461
  Object.values(columnNameResultMap).forEach(items => {
1371
1462
  const targetColumn = allSummaryColumns.find(column => column.name === items[0].group_name);
1372
- _baseUtils.default.updateSummaryValuePrecision(items, targetColumn, 'value');
1463
+ BaseUtils.updateSummaryValuePrecision(items, targetColumn, 'value');
1373
1464
  });
1374
1465
  return result;
1375
1466
  }
@@ -1392,11 +1483,11 @@ SQLStatisticsUtils.heatMapChartSQLResult2JavaScript = (chart, sqlRows, chartSQLM
1392
1483
  if (currentValue || currentValue === 0) {
1393
1484
  let value = item[sqlSummaryColumnKey];
1394
1485
  if (summaryColumn) {
1395
- value = (0, _columnUtils.formatNumericValue)(value, summaryColumn);
1486
+ value = formatNumericValue(value, summaryColumn);
1396
1487
  }
1397
1488
  const name = typeof currentValue === 'string' ? currentValue : currentValue.country_region;
1398
1489
  result.push({
1399
- name: (0, _dayjs.default)(name).format('YYYY-MM-DD'),
1490
+ name: dayjs(name).format('YYYY-MM-DD'),
1400
1491
  value
1401
1492
  });
1402
1493
  }
@@ -1408,7 +1499,7 @@ SQLStatisticsUtils.heatMapChartSQLResult2JavaScript = (chart, sqlRows, chartSQLM
1408
1499
  data.push(item);
1409
1500
  return;
1410
1501
  }
1411
- const year = (0, _dayjs.default)(item.name).year();
1502
+ const year = dayjs(item.name).year();
1412
1503
  data.push({
1413
1504
  ...item,
1414
1505
  year
@@ -1446,7 +1537,7 @@ SQLStatisticsUtils.mirrorMapChartSQLResult2JavaScript = async (chart, sqlRows, c
1446
1537
  const {
1447
1538
  sqlSummaryColumnKey
1448
1539
  } = chartSQLMap;
1449
- const isAdvanced = summary_type === _constants.CHART_SUMMARY_TYPE.ADVANCED;
1540
+ const isAdvanced = summary_type === CHART_SUMMARY_TYPE.ADVANCED;
1450
1541
  const newResult = [];
1451
1542
  const groupData = _SQLStatisticsUtils.getGroupData(sqlRows, columnGroupbyColumn);
1452
1543
  if (groupData.length > 0) {
@@ -1462,8 +1553,8 @@ SQLStatisticsUtils.mirrorMapChartSQLResult2JavaScript = async (chart, sqlRows, c
1462
1553
  let value = item[sqlSummaryColumnKey];
1463
1554
  let formattedValue = value;
1464
1555
  if (isAdvanced) {
1465
- value = (0, _columnUtils.formatNumericValue)(value, summaryColumn);
1466
- formattedValue = (0, _columnUtils.getFormattedValue)(value, summary_column_key, summary_method);
1556
+ value = formatNumericValue(value, summaryColumn);
1557
+ formattedValue = getFormattedValue(value, summary_column_key, summary_method);
1467
1558
  }
1468
1559
  newResult.push({
1469
1560
  name: label,
@@ -1471,7 +1562,7 @@ SQLStatisticsUtils.mirrorMapChartSQLResult2JavaScript = async (chart, sqlRows, c
1471
1562
  value: equal2GroupData0 ? value : 0,
1472
1563
  formatted_value: equal2GroupData0 ? formattedValue : 0,
1473
1564
  group_name: ((_groupData$ = groupData[0]) === null || _groupData$ === void 0 ? void 0 : _groupData$.name) || '',
1474
- color: ((_groupData$2 = groupData[0]) === null || _groupData$2 === void 0 ? void 0 : _groupData$2.color) || _constants.STYLE_COLORS[0].colors[0],
1565
+ color: ((_groupData$2 = groupData[0]) === null || _groupData$2 === void 0 ? void 0 : _groupData$2.color) || STYLE_COLORS[0].colors[0],
1475
1566
  rows: [item]
1476
1567
  });
1477
1568
  groupData[1] && newResult.push({
@@ -1480,7 +1571,7 @@ SQLStatisticsUtils.mirrorMapChartSQLResult2JavaScript = async (chart, sqlRows, c
1480
1571
  value: equal2GroupData1 ? value : 0,
1481
1572
  formatted_value: equal2GroupData1 ? formattedValue : 0,
1482
1573
  group_name: ((_groupData$3 = groupData[1]) === null || _groupData$3 === void 0 ? void 0 : _groupData$3.name) || '',
1483
- color: ((_groupData$4 = groupData[1]) === null || _groupData$4 === void 0 ? void 0 : _groupData$4.color) || _constants.STYLE_COLORS[0].colors[0],
1574
+ color: ((_groupData$4 = groupData[1]) === null || _groupData$4 === void 0 ? void 0 : _groupData$4.color) || STYLE_COLORS[0].colors[0],
1484
1575
  rows: [item]
1485
1576
  });
1486
1577
  }
@@ -1511,14 +1602,14 @@ SQLStatisticsUtils.trendMapChartSQLResult2JavaScript = (chart, sqlRows, chartSQL
1511
1602
  const {
1512
1603
  compareValue: value1,
1513
1604
  comparedValue: value2
1514
- } = _baseUtils.default.summaryDurationResult(sqlRows, date_granularity, summary_type, summary_method, true, sqlGroupbyColumnKey, sqlSummaryColumnKey);
1605
+ } = BaseUtils.summaryDurationResult(sqlRows, date_granularity, summary_type, summary_method, true, sqlGroupbyColumnKey, sqlSummaryColumnKey);
1515
1606
  compareValue = value1;
1516
1607
  comparedValue = value2;
1517
1608
  } else {
1518
1609
  const {
1519
1610
  compareDate,
1520
1611
  comparedDate
1521
- } = (0, _trendUtils.getCompareDate)(date_granularity);
1612
+ } = getCompareDate(date_granularity, 'app');
1522
1613
  for (const item of sqlRows) {
1523
1614
  if (!item[sqlGroupbyColumnKey]) continue;
1524
1615
  const currentDate = item[sqlGroupbyColumnKey] + '';
@@ -1548,11 +1639,11 @@ SQLStatisticsUtils.trendMapChartSQLResult2JavaScript = (chart, sqlRows, chartSQL
1548
1639
  }
1549
1640
  let type;
1550
1641
  if (compareValue > comparedValue) {
1551
- type = _constants.TREND_TYPES.UP;
1642
+ type = TREND_TYPES.UP;
1552
1643
  } else if (compareValue < comparedValue) {
1553
- type = _constants.TREND_TYPES.DOWN;
1644
+ type = TREND_TYPES.DOWN;
1554
1645
  } else if (compareValue === comparedValue) {
1555
- type = _constants.TREND_TYPES.EQUAL;
1646
+ type = TREND_TYPES.EQUAL;
1556
1647
  }
1557
1648
  if (compareValue === 0 && comparedValue === 0) {
1558
1649
  result = '0%';
@@ -1569,15 +1660,15 @@ SQLStatisticsUtils.sqlResult2JavaScript = async (chart, sqlRows, chartSQLMap, co
1569
1660
  type
1570
1661
  } = chart.config;
1571
1662
  switch (type) {
1572
- case _constants.CHART_TYPE.TABLE_ELEMENT:
1663
+ case CHART_TYPE.TABLE_ELEMENT:
1573
1664
  {
1574
1665
  return {
1575
1666
  result: sqlRows
1576
1667
  };
1577
1668
  }
1578
- case _constants.CHART_TYPE.TABLE:
1669
+ case CHART_TYPE.TABLE:
1579
1670
  {
1580
- sqlRows = _baseUtils.default.recalculateAvg(sqlRows);
1671
+ sqlRows = BaseUtils.recalculateAvg(sqlRows);
1581
1672
  const {
1582
1673
  column_groupby_column_key
1583
1674
  } = chart.config;
@@ -1593,106 +1684,106 @@ SQLStatisticsUtils.sqlResult2JavaScript = async (chart, sqlRows, chartSQLMap, co
1593
1684
  }
1594
1685
  return result;
1595
1686
  }
1596
- case _constants.CHART_TYPE.PIE:
1597
- case _constants.CHART_TYPE.RING:
1598
- case _constants.CHART_TYPE.TREE_MAP:
1687
+ case CHART_TYPE.PIE:
1688
+ case CHART_TYPE.RING:
1689
+ case CHART_TYPE.TREE_MAP:
1599
1690
  {
1600
1691
  return {
1601
1692
  result: await _SQLStatisticsUtils.basicChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
1602
1693
  };
1603
1694
  }
1604
- case _constants.CHART_TYPE.BASIC_NUMBER_CARD:
1695
+ case CHART_TYPE.BASIC_NUMBER_CARD:
1605
1696
  {
1606
1697
  return {
1607
1698
  result: _SQLStatisticsUtils.basicNumberCardSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
1608
1699
  };
1609
1700
  }
1610
- case _constants.CHART_TYPE.DASHBOARD:
1701
+ case CHART_TYPE.DASHBOARD:
1611
1702
  {
1612
1703
  return {
1613
1704
  result: _SQLStatisticsUtils.dashboardSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
1614
1705
  };
1615
1706
  }
1616
- case _constants.CHART_TYPE.BAR:
1617
- case _constants.CHART_TYPE.LINE:
1618
- case _constants.CHART_TYPE.HORIZONTAL_BAR:
1619
- case _constants.CHART_TYPE.AREA:
1620
- case _constants.CHART_TYPE.FUNNEL:
1707
+ case CHART_TYPE.BAR:
1708
+ case CHART_TYPE.LINE:
1709
+ case CHART_TYPE.HORIZONTAL_BAR:
1710
+ case CHART_TYPE.AREA:
1711
+ case CHART_TYPE.FUNNEL:
1621
1712
  {
1622
1713
  return {
1623
1714
  result: await _SQLStatisticsUtils.basicChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
1624
1715
  };
1625
1716
  }
1626
- case _constants.CHART_TYPE.COMPLETENESS:
1627
- case _constants.CHART_TYPE.COMPLETENESS_GROUP:
1717
+ case CHART_TYPE.COMPLETENESS:
1718
+ case CHART_TYPE.COMPLETENESS_GROUP:
1628
1719
  {
1629
- const result = _SQLStatisticsUtils.completenessSQlResult(chart, sqlRows, chartSQLMap, tables);
1720
+ const result = await _SQLStatisticsUtils.completenessSQlResult(chart, sqlRows, chartSQLMap, tables);
1630
1721
  return {
1631
1722
  result
1632
1723
  };
1633
1724
  }
1634
- case _constants.CHART_TYPE.COMBINATION:
1725
+ case CHART_TYPE.COMBINATION:
1635
1726
  {
1636
1727
  return {
1637
1728
  result: await _SQLStatisticsUtils.combinationSQLResult2Javascript(chart, sqlRows, chartSQLMap, columnMap, tables)
1638
1729
  };
1639
1730
  }
1640
- case _constants.CHART_TYPE.COMPARE_BAR:
1731
+ case CHART_TYPE.COMPARE_BAR:
1641
1732
  {
1642
1733
  return {
1643
1734
  result: await _SQLStatisticsUtils.compareSQLResult2Javascript(chart, sqlRows, chartSQLMap, columnMap, tables)
1644
1735
  };
1645
1736
  }
1646
- case _constants.CHART_TYPE.BAR_GROUP:
1647
- case _constants.CHART_TYPE.BAR_STACK:
1648
- case _constants.CHART_TYPE.LINE_GROUP:
1649
- case _constants.CHART_TYPE.AREA_GROUP:
1650
- case _constants.CHART_TYPE.HORIZONTAL_GROUP_BAR:
1651
- case _constants.CHART_TYPE.STACKED_HORIZONTAL_BAR:
1737
+ case CHART_TYPE.BAR_GROUP:
1738
+ case CHART_TYPE.BAR_STACK:
1739
+ case CHART_TYPE.LINE_GROUP:
1740
+ case CHART_TYPE.AREA_GROUP:
1741
+ case CHART_TYPE.HORIZONTAL_GROUP_BAR:
1742
+ case CHART_TYPE.STACKED_HORIZONTAL_BAR:
1652
1743
  {
1653
1744
  return {
1654
1745
  result: await _SQLStatisticsUtils.groupingChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
1655
1746
  };
1656
1747
  }
1657
- case _constants.CHART_TYPE.SCATTER:
1748
+ case CHART_TYPE.SCATTER:
1658
1749
  {
1659
1750
  return {
1660
- result: _SQLStatisticsUtils.scatterSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
1751
+ result: await _SQLStatisticsUtils.scatterSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
1661
1752
  };
1662
1753
  }
1663
- case _constants.CHART_TYPE.BAR_CUSTOM:
1754
+ case CHART_TYPE.BAR_CUSTOM:
1664
1755
  {
1665
1756
  return {
1666
1757
  result: await _SQLStatisticsUtils.customChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables, params)
1667
1758
  };
1668
1759
  }
1669
- case _constants.CHART_TYPE.MAP:
1670
- case _constants.CHART_TYPE.MAP_BUBBLE:
1760
+ case CHART_TYPE.MAP:
1761
+ case CHART_TYPE.MAP_BUBBLE:
1671
1762
  {
1672
1763
  return {
1673
1764
  result: _SQLStatisticsUtils.mapSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
1674
1765
  };
1675
1766
  }
1676
- case _constants.CHART_TYPE.WORLD_MAP:
1677
- case _constants.CHART_TYPE.WORLD_MAP_BUBBLE:
1767
+ case CHART_TYPE.WORLD_MAP:
1768
+ case CHART_TYPE.WORLD_MAP_BUBBLE:
1678
1769
  {
1679
1770
  return {
1680
1771
  result: _SQLStatisticsUtils.worldMapSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
1681
1772
  };
1682
1773
  }
1683
- case _constants.CHART_TYPE.HEAT_MAP:
1774
+ case CHART_TYPE.HEAT_MAP:
1684
1775
  {
1685
1776
  return {
1686
1777
  result: _SQLStatisticsUtils.heatMapChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
1687
1778
  };
1688
1779
  }
1689
- case _constants.CHART_TYPE.MIRROR:
1780
+ case CHART_TYPE.MIRROR:
1690
1781
  {
1691
1782
  return {
1692
1783
  result: await _SQLStatisticsUtils.mirrorMapChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
1693
1784
  };
1694
1785
  }
1695
- case _constants.CHART_TYPE.TREND:
1786
+ case CHART_TYPE.TREND:
1696
1787
  {
1697
1788
  return {
1698
1789
  result: _SQLStatisticsUtils.trendMapChartSQLResult2JavaScript(chart, sqlRows, chartSQLMap, columnMap, tables)
@@ -1711,16 +1802,10 @@ SQLStatisticsUtils._get_completeness_name = (row, column) => {
1711
1802
  }
1712
1803
  return value;
1713
1804
  };
1714
- SQLStatisticsUtils.completenessSQlResult = (chart, sqlRows, chartSQLMap, tables) => {
1715
- const {
1716
- config: {
1717
- type
1718
- }
1719
- } = chart;
1720
- const isGroup = type === _constants.CHART_TYPE.COMPLETENESS_GROUP;
1805
+ SQLStatisticsUtils.completenessSQlResult = async (chart, sqlRows, chartSQLMap, tables) => {
1721
1806
  const {
1722
1807
  sqlColumns,
1723
- sqlColumnGroupByColumnKey
1808
+ sqlColumnGroupbyColumnKey
1724
1809
  } = chartSQLMap;
1725
1810
  const {
1726
1811
  name_column,
@@ -1728,134 +1813,23 @@ SQLStatisticsUtils.completenessSQlResult = (chart, sqlRows, chartSQLMap, tables)
1728
1813
  target_column,
1729
1814
  column_groupby_column
1730
1815
  } = sqlColumns;
1731
- const res = [];
1732
- let summedSqlRows;
1733
- const nameColumnDataAsAnArray = (0, _baseUtils.findIfColumnDataIsArray)(name_column);
1734
- if (!isGroup) {
1735
- if (nameColumnDataAsAnArray) {
1736
- const sumSqlRows = sqlRows.reduce((acc, row) => {
1737
- const names = row[name_column.key];
1738
- if (!names) {
1739
- row[name_column.key] = _intl.default.get('Empty');
1740
- acc[_intl.default.get('Empty')] = row;
1741
- return acc;
1742
- }
1743
- names.forEach(name => {
1744
- if (!acc[name]) {
1745
- row[name_column.key] = name;
1746
- acc[name] = row;
1747
- } else {
1748
- const accRow = acc[name];
1749
- Object.keys(row).forEach(key => {
1750
- if (key === completed_column.key || key === target_column.key) {
1751
- // in case of null
1752
- if (!row[key]) {
1753
- row[key] = 0;
1754
- }
1755
- if (!accRow[key]) {
1756
- accRow[key] = 0;
1757
- }
1758
- accRow[key] = accRow[key] + row[key];
1759
- }
1760
- });
1761
- }
1762
- });
1763
- return acc;
1764
- }, {});
1765
- summedSqlRows = Object.values(sumSqlRows);
1766
- } else {
1767
- const sumSqlRows = sqlRows.reduce((acc, row) => {
1768
- const nameValue = row[name_column.key];
1769
- if (!nameValue) {
1770
- row[name_column.key] = _intl.default.get('Empty');
1771
- acc[_intl.default.get('Empty')] = row;
1772
- return acc;
1773
- }
1774
- if (!acc[nameValue]) {
1775
- acc[nameValue] = row;
1776
- } else {
1777
- const accRow = acc[nameValue];
1778
- Object.keys(row).forEach(key => {
1779
- if (key === completed_column.key || key === target_column.key) {
1780
- accRow[key] = accRow[key] + row[key];
1781
- }
1782
- });
1783
- }
1784
- return acc;
1785
- }, {});
1786
- summedSqlRows = Object.values(sumSqlRows);
1787
- }
1788
- } else {
1789
- if (nameColumnDataAsAnArray) {
1790
- const sumSqlRows = sqlRows.reduce((acc, row) => {
1791
- const groupby = row[sqlColumnGroupByColumnKey];
1792
- const names = row[name_column.key];
1793
- if (!names) {
1794
- const key = "empty_".concat(groupby);
1795
- row[name_column.key] = _intl.default.get('Empty');
1796
- acc[key] = row;
1797
- return acc;
1798
- }
1799
- names.forEach(name => {
1800
- const key = "".concat(name, "_").concat(groupby);
1801
- if (!acc[key]) {
1802
- row[name_column.key] = name;
1803
- acc[key] = row;
1804
- } else {
1805
- const accRow = acc[key];
1806
- Object.keys(row).forEach(k => {
1807
- if (key === completed_column.key || key === target_column.key) {
1808
- accRow[key] = accRow[key] + row[key];
1809
- }
1810
- });
1811
- }
1812
- });
1813
- return acc;
1814
- }, {});
1815
- summedSqlRows = Object.values(sumSqlRows);
1816
- } else {
1817
- const sumSqlRows = sqlRows.reduce((acc, row) => {
1818
- const nameValue = row[name_column.key];
1819
- const groupby = row[sqlColumnGroupByColumnKey];
1820
- if (!nameValue) {
1821
- const key = "empty_".concat(groupby);
1822
- row[name_column.key] = _intl.default.get('Empty');
1823
- acc[key] = row;
1824
- return acc;
1825
- }
1826
- const key = "".concat(nameValue, "_").concat(groupby);
1827
- if (!acc[key]) {
1828
- acc[key] = row;
1829
- } else {
1830
- const accRow = acc[key];
1831
- Object.keys(row).forEach(key => {
1832
- if (key === completed_column.key || key === target_column.key) {
1833
- accRow[key] = accRow[key] + row[key];
1834
- }
1835
- });
1836
- }
1837
- return acc;
1838
- }, {});
1839
- summedSqlRows = Object.values(sumSqlRows);
1840
- }
1816
+ const nameColumnDataAsAnArray = findIfColumnDataIsArray(name_column);
1817
+ // group by name_column, so it can only have one value
1818
+ let originalSqlRows = cloneDeep(sqlRows);
1819
+ if (nameColumnDataAsAnArray) {
1820
+ sqlRows.forEach(row => {
1821
+ var _row$name_column$key;
1822
+ row[name_column.key] = (_row$name_column$key = row[name_column.key]) === null || _row$name_column$key === void 0 ? void 0 : _row$name_column$key[0];
1823
+ });
1841
1824
  }
1842
-
1843
- // format the fetched value
1844
- _baseUtils.default.updateTableViewList(sqlRows, name_column, name_column.key, 'color', false, true);
1845
- if (sqlColumnGroupByColumnKey) _baseUtils.default.updateTableViewList(sqlRows, column_groupby_column, sqlColumnGroupByColumnKey, 'color', false, false);
1846
- summedSqlRows.forEach(row => {
1825
+ await BaseUtils.updateTableViewList(sqlRows, name_column, name_column.key, 'color', false, true);
1826
+ if (sqlColumnGroupbyColumnKey) await BaseUtils.updateTableViewList(sqlRows, column_groupby_column, sqlColumnGroupbyColumnKey, 'color', false, false);
1827
+ const res = [];
1828
+ sqlRows.forEach((row, index) => {
1847
1829
  const nameValue = row[name_column.key];
1848
- let targetValue;
1849
- let completedValue;
1850
- let groupby;
1851
- if (sqlColumnGroupByColumnKey) {
1852
- targetValue = row["SUM(".concat(target_column.name, ")")];
1853
- completedValue = row["SUM(".concat(completed_column.name, ")")];
1854
- groupby = row[sqlColumnGroupByColumnKey] || _intl.default.get('Empty');
1855
- } else {
1856
- completedValue = _SQLStatisticsUtils._get_completeness_name(row, completed_column);
1857
- targetValue = _SQLStatisticsUtils._get_completeness_name(row, target_column);
1858
- }
1830
+ const targetValue = row[`SUM(${target_column.name})`];
1831
+ const completedValue = row[`SUM(${completed_column.name})`];
1832
+ const groupby = row[sqlColumnGroupbyColumnKey] || intl.get('Empty');
1859
1833
  let completedRate;
1860
1834
  if (!targetValue && completedValue) {
1861
1835
  completedRate = 100;
@@ -1872,8 +1846,9 @@ SQLStatisticsUtils.completenessSQlResult = (chart, sqlRows, chartSQLMap, tables)
1872
1846
  original_name,
1873
1847
  group_name: 'completed',
1874
1848
  groupby,
1875
- color: row.color || _constants.CHART_STYLE_COLORS[0],
1876
- value: completedValue
1849
+ color: row.color || CHART_STYLE_COLORS[0],
1850
+ value: completedValue,
1851
+ rows: [originalSqlRows[index]]
1877
1852
  });
1878
1853
  res.push({
1879
1854
  name: nameValue,
@@ -1882,7 +1857,8 @@ SQLStatisticsUtils.completenessSQlResult = (chart, sqlRows, chartSQLMap, tables)
1882
1857
  value: Math.max(targetValue - completedValue, 0),
1883
1858
  groupby,
1884
1859
  color: '#bdbdbd',
1885
- completedRate
1860
+ completedRate,
1861
+ rows: [originalSqlRows[index]]
1886
1862
  });
1887
1863
  });
1888
1864
 
@@ -1894,9 +1870,29 @@ SQLStatisticsUtils.completenessSQlResult = (chart, sqlRows, chartSQLMap, tables)
1894
1870
  return 1;
1895
1871
  }
1896
1872
  });
1897
- return res;
1873
+
1874
+ // deduplicate by (name, group_name)
1875
+ const deduplicatedRes = [];
1876
+ const keyMap = {};
1877
+ res.forEach(item => {
1878
+ const key = `${item.name}_${item.group_name}`;
1879
+ if (!keyMap[key]) {
1880
+ keyMap[key] = item;
1881
+ deduplicatedRes.push(item);
1882
+ } else {
1883
+ const existingItem = keyMap[key];
1884
+ existingItem.value = (existingItem.value || 0) + (item.value || 0);
1885
+ if (item.rows) {
1886
+ existingItem.rows = (existingItem.rows || []).concat(item.rows);
1887
+ }
1888
+ if (item.group_name === 'rest' && item.completedRate !== undefined) {
1889
+ existingItem.completedRate = item.completedRate;
1890
+ }
1891
+ }
1892
+ });
1893
+ return deduplicatedRes;
1898
1894
  };
1899
- SQLStatisticsUtils.scatterSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, columnMap, tables) => {
1895
+ SQLStatisticsUtils.scatterSQLResult2JavaScript = async (chart, sqlRows, chartSQLMap, columnMap, tables) => {
1900
1896
  const {
1901
1897
  sqlXColumnKey,
1902
1898
  sqlYColumnKey,
@@ -1908,15 +1904,15 @@ SQLStatisticsUtils.scatterSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, c
1908
1904
  summaryColumn
1909
1905
  } = columnMap;
1910
1906
  // format sql rows
1911
- const originalSqlRows = (0, _lodashEs.cloneDeep)(sqlRows);
1907
+ const originalSqlRows = cloneDeep(sqlRows);
1912
1908
  const isScatter = true;
1913
- _baseUtils.default.updateTableViewList(sqlRows, groupbyColumn, groupbyColumn.key, 'color', isScatter, true);
1914
- _baseUtils.default.updateTableViewList(sqlRows, summaryColumn, summaryColumn.key, 'color', isScatter, true);
1915
- if (sqlColumnGroupbyColumnKey) _baseUtils.default.updateTableViewList(sqlRows, columnGroupbyColumn, sqlColumnGroupbyColumnKey, 'color', isScatter, false);
1909
+ await BaseUtils.updateTableViewList(sqlRows, groupbyColumn, groupbyColumn.key, 'color', isScatter, true);
1910
+ await BaseUtils.updateTableViewList(sqlRows, summaryColumn, summaryColumn.key, 'color', isScatter, true);
1911
+ if (sqlColumnGroupbyColumnKey) await BaseUtils.updateTableViewList(sqlRows, columnGroupbyColumn, sqlColumnGroupbyColumnKey, 'color', isScatter, false);
1916
1912
  const res = [];
1917
1913
  sqlRows.forEach((row, index) => {
1918
- const xValue = row[sqlXColumnKey] ? '' + row[sqlXColumnKey] : _intl.default.get('Empty');
1919
- const yValue = row[sqlYColumnKey] ? '' + row[sqlYColumnKey] : _intl.default.get('Empty');
1914
+ const xValue = row[sqlXColumnKey];
1915
+ const yValue = row[sqlYColumnKey];
1920
1916
  const groupby = row[sqlColumnGroupbyColumnKey] ? '' + row[sqlColumnGroupbyColumnKey] : null;
1921
1917
  const originalSqlRow = originalSqlRows[index];
1922
1918
  const originalXValue = originalSqlRow[sqlXColumnKey];
@@ -1924,16 +1920,17 @@ SQLStatisticsUtils.scatterSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, c
1924
1920
  const originalGroupby = originalSqlRow[sqlColumnGroupbyColumnKey];
1925
1921
  res.push({
1926
1922
  name: xValue,
1927
- value: yValue,
1923
+ value: yValue !== null ? Number(yValue) : yValue,
1928
1924
  groupby,
1925
+ rows: [originalSqlRow],
1929
1926
  original_value: {
1930
- rows: [originalSqlRow],
1931
1927
  name: originalXValue,
1932
1928
  value: originalYValue,
1933
1929
  groupby: originalGroupby
1934
1930
  }
1935
1931
  });
1936
1932
  });
1933
+ BaseUtils.sortCharts(res, groupbyColumn, 'name');
1937
1934
  return res;
1938
1935
  };
1939
1936
  SQLStatisticsUtils.mapSQLResult2JavaScript = (chart, sqlRows, chartSQLMap, columnMap, tables) => {
@@ -2031,8 +2028,8 @@ SQLStatisticsUtils.worldMapSQLResult2JavaScript = (chart, sqlRows, chartSQLMap,
2031
2028
  let value = nameValueMap[name];
2032
2029
  let formatted_value = value;
2033
2030
  if (summary_type === 'advanced') {
2034
- value = (0, _columnUtils.formatNumericValue)(value, summaryColumn);
2035
- formatted_value = (0, _columnUtils.getFormattedValue)(value, summaryColumn, summary_method);
2031
+ value = formatNumericValue(value, summaryColumn);
2032
+ formatted_value = getFormattedValue(value, summaryColumn, summary_method);
2036
2033
  }
2037
2034
  acc.push({
2038
2035
  name,
@@ -2048,8 +2045,8 @@ SQLStatisticsUtils.worldMapSQLResult2JavaScript = (chart, sqlRows, chartSQLMap,
2048
2045
  let value = item[sqlSummaryColumnKey];
2049
2046
  let formatted_value = value;
2050
2047
  if (summary_type === 'advanced') {
2051
- value = (0, _columnUtils.formatNumericValue)(value, summaryColumn);
2052
- formatted_value = (0, _columnUtils.getFormattedValue)(value, summaryColumn, summary_method);
2048
+ value = formatNumericValue(value, summaryColumn);
2049
+ formatted_value = getFormattedValue(value, summaryColumn, summary_method);
2053
2050
  }
2054
2051
  if (currentValue) {
2055
2052
  const name = typeof currentValue === 'string' ? currentValue : currentValue.country_region;
@@ -2067,7 +2064,7 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
2067
2064
  const {
2068
2065
  tables
2069
2066
  } = value;
2070
- if (!_baseUtils.default.isValidExistChart(tables, chart)) {
2067
+ if (!BaseUtils.isValidExistChart(tables, chart)) {
2071
2068
  const tip_message = 'Please_complete_the_chart_configuration_first';
2072
2069
  return callback && callback('', tip_message, null);
2073
2070
  }
@@ -2077,7 +2074,7 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
2077
2074
  type
2078
2075
  } = chart;
2079
2076
  const chartType = config.type;
2080
- const newConfig = _baseUtils.default.convertConfig(config);
2077
+ const newConfig = BaseUtils.convertConfig(config);
2081
2078
  const newChart = {
2082
2079
  id,
2083
2080
  config: newConfig,
@@ -2086,11 +2083,11 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
2086
2083
  const {
2087
2084
  table_id
2088
2085
  } = config;
2089
- const table = (0, _dtableUtils.getTableById)(tables, table_id);
2090
- const groupbyColumn = _baseUtils.default.getGroupColumn(table, newChart);
2091
- const columnGroupbyColumn = _baseUtils.default.getColumnGroupColumn(table, newChart);
2092
- const summaryColumn = _baseUtils.default.getSummaryColumn(table, newChart);
2093
- const summaryColumnsWithMethod = _baseUtils.default.getSummaryColumnsWithMethod(table, newChart);
2086
+ const table = getTableById(tables, table_id);
2087
+ const groupbyColumn = BaseUtils.getGroupColumn(table, newChart);
2088
+ const columnGroupbyColumn = BaseUtils.getColumnGroupColumn(table, newChart);
2089
+ const summaryColumn = BaseUtils.getSummaryColumn(table, newChart);
2090
+ const summaryColumnsWithMethod = BaseUtils.getSummaryColumnsWithMethod(table, newChart);
2094
2091
  // summary column is referring to single_numeric_column, but summaryColumns is referring to multiple_numeric_column
2095
2092
  // single_numeric_column is used as the first setting option when switched to multiple_numeric_column
2096
2093
  const columnMap = {
@@ -2102,7 +2099,7 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
2102
2099
  const chartTableColumns = table.columns;
2103
2100
  let chartSQLMap = null;
2104
2101
  try {
2105
- chartSQLMap = (0, _sql.chartColumn2SqlColumn)(newChart, table);
2102
+ chartSQLMap = chartColumn2SqlColumn(newChart, table);
2106
2103
  } catch (error) {
2107
2104
  let error_message = 'There_are_some_problems_with_the_filters';
2108
2105
  if (error.message) error_message = error.message;
@@ -2111,7 +2108,7 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
2111
2108
  const tipMessage = 'There_are_no_statistic_results_yet';
2112
2109
 
2113
2110
  // Custom Bar
2114
- if (chartType === _constants.CHART_TYPE.BAR_CUSTOM) {
2111
+ if (chartType === CHART_TYPE.BAR_CUSTOM) {
2115
2112
  const result = [];
2116
2113
  for (const [index, item] of sqlRows.entries()) {
2117
2114
  if (item.length !== 0) {
@@ -2138,14 +2135,14 @@ SQLStatisticsUtils.calculateChart = async (chart, value, callback, sqlRows) => {
2138
2135
  }
2139
2136
 
2140
2137
  // map is special, still need to show map even data is empty
2141
- if (!Array.isArray(sqlRows) || sqlRows.length === 0 && !_constants.MAP_CHART_TYPES.includes(chartType)) {
2138
+ if (!Array.isArray(sqlRows) || sqlRows.length === 0 && !MAP_CHART_TYPES.includes(chartType)) {
2142
2139
  callback && callback('', tipMessage, null);
2143
2140
  return;
2144
2141
  }
2145
2142
  const chartResult = await _SQLStatisticsUtils.sqlResult2JavaScript(newChart, sqlRows, chartSQLMap, columnMap, tables);
2146
2143
 
2147
2144
  // map is special
2148
- if (_baseUtils.default.imEmptyChartResult(chartResult) && !chartType.includes('map')) {
2145
+ if (BaseUtils.imEmptyChartResult(chartResult) && !chartType.includes('map')) {
2149
2146
  callback && callback('', tipMessage, null);
2150
2147
  return;
2151
2148
  }
@@ -2165,7 +2162,7 @@ SQLStatisticsUtils.calculateStaticChart = (chart, value, statisticalResult, call
2165
2162
  config
2166
2163
  } = chart;
2167
2164
  const tables = value.tables;
2168
- const newConfig = _baseUtils.default.convertConfig(config);
2165
+ const newConfig = BaseUtils.convertConfig(config);
2169
2166
  const newChart = {
2170
2167
  id,
2171
2168
  config: newConfig
@@ -2173,31 +2170,31 @@ SQLStatisticsUtils.calculateStaticChart = (chart, value, statisticalResult, call
2173
2170
  const {
2174
2171
  type
2175
2172
  } = config;
2176
- if ([_constants.CHART_TYPE.TABLE, _constants.CHART_TYPE.TABLE_ELEMENT].includes(type)) return callback && callback('', '', statisticalResult);
2173
+ if ([CHART_TYPE.TABLE, CHART_TYPE.TABLE_ELEMENT].includes(type)) return callback && callback('', '', statisticalResult);
2177
2174
  const {
2178
2175
  table_id,
2179
2176
  sort_type
2180
2177
  } = config;
2181
- const table = (0, _dtableUtils.getTableById)(tables, table_id);
2182
- const groupbyColumn = _baseUtils.default.getGroupColumn(table, newChart);
2178
+ const table = getTableById(tables, table_id);
2179
+ const groupbyColumn = BaseUtils.getGroupColumn(table, newChart);
2183
2180
  let result = statisticalResult.result;
2184
2181
  if (!result) {
2185
2182
  const tip_message = 'There_are_no_statistic_results_yet';
2186
2183
  return callback && callback('', tip_message, null);
2187
2184
  }
2188
- if (_constants.SUPPORT_DATA_SORT_CHART_TYPES.includes(type) && sort_type) {
2189
- _baseUtils.default.sortChartData(result, sort_type);
2185
+ if (SUPPORT_DATA_SORT_CHART_TYPES.includes(type) && sort_type) {
2186
+ BaseUtils.sortChartData(result, sort_type);
2190
2187
  const newStatisticalResult = {
2191
2188
  ...statisticalResult,
2192
2189
  result
2193
2190
  };
2194
2191
  return callback && callback('', '', newStatisticalResult);
2195
2192
  }
2196
- _baseUtils.default.sortCharts(result, groupbyColumn, 'name');
2193
+ BaseUtils.sortCharts(result, groupbyColumn, 'name');
2197
2194
  const newStatisticalResult = {
2198
2195
  ...statisticalResult,
2199
2196
  result
2200
2197
  };
2201
2198
  return callback && callback('', '', newStatisticalResult);
2202
2199
  };
2203
- var _default = exports.default = SQLStatisticsUtils;
2200
+ export default SQLStatisticsUtils;