dtable-statistic 4.2.2 → 4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/es/api/dtable-db-api.js +31 -37
  2. package/es/calculator/base-calculator.js +49 -99
  3. package/es/calculator/basic-chart-calculator.js +335 -559
  4. package/es/calculator/combination-calculator.js +231 -299
  5. package/es/calculator/compare-bar-calculator.js +184 -281
  6. package/es/calculator/completeness-calculator.js +203 -288
  7. package/es/calculator/copy-value.js +18 -18
  8. package/es/calculator/dashboard-calculator.js +68 -137
  9. package/es/calculator/heat-map-calculator.js +139 -220
  10. package/es/calculator/horizontal-bar-calculator.js +64 -93
  11. package/es/calculator/index.js +53 -69
  12. package/es/calculator/map-calculator.js +98 -174
  13. package/es/calculator/mirror-calculator.js +137 -216
  14. package/es/calculator/number-card-calculator.js +58 -126
  15. package/es/calculator/pivot-table-calculator.js +750 -792
  16. package/es/calculator/scatter-calculator.js +72 -140
  17. package/es/calculator/thread-manager.js +48 -67
  18. package/es/calculator/trend-calculator.js +107 -191
  19. package/es/calculator/workers/basic-chart-calculator-worker.js +194 -165
  20. package/es/calculator/workers/calculator.worker.js +22 -6
  21. package/es/calculator/workers/card-calculator-worker.js +16 -14
  22. package/es/calculator/workers/combination-calculator-worker.js +128 -135
  23. package/es/calculator/workers/compare-bar-chart-calculator-worker.js +80 -96
  24. package/es/calculator/workers/completeness-calculator-worker.js +56 -49
  25. package/es/calculator/workers/dashboard-calculator-worker.js +24 -22
  26. package/es/calculator/workers/mirror-calculator-worker.js +52 -52
  27. package/es/calculator/workers/pivot-table-calculator-worker.js +247 -230
  28. package/es/calculator/workers/scatter-calculator-worker.js +34 -32
  29. package/es/calculator/workers/trend-calculator-worker.js +33 -29
  30. package/es/calculator/world-map-calculator.js +120 -197
  31. package/es/components/common-add-tool.js +7 -5
  32. package/es/components/dialog/chart-addition-edit-dialog.js +67 -77
  33. package/es/components/dialog/chart-addition-widgets/chart-selector.js +57 -67
  34. package/es/components/dialog/color-theme-dialog.js +34 -47
  35. package/es/components/dialog/delete-confirmation-dialog.js +7 -5
  36. package/es/components/dialog/enlarged-chart-dialog.js +68 -81
  37. package/es/components/dialog/new-table-dialog.js +62 -80
  38. package/es/components/dialog/new-view-dialog.js +50 -62
  39. package/es/components/dialog/rename-view-dialog.js +49 -58
  40. package/es/components/dialog/statistic-record-dialog/index.js +233 -231
  41. package/es/components/dialog/statistic-types-dialog/index.js +40 -49
  42. package/es/components/dialog/table-select-dialog.js +61 -70
  43. package/es/components/dropdown-menu/statistic-dropdown-menu.js +129 -142
  44. package/es/components/dtable-popover.js +62 -81
  45. package/es/components/dtable-search-input.js +89 -99
  46. package/es/components/dtable-select.js +55 -74
  47. package/es/components/icon.js +5 -3
  48. package/es/components/loading.js +1 -1
  49. package/es/components/modal-portal.js +15 -32
  50. package/es/components/popover/color-rules/color-rule.js +137 -141
  51. package/es/components/popover/color-rules/index.js +58 -66
  52. package/es/components/popover/color-rules/rule-filters/filter.js +124 -124
  53. package/es/components/popover/color-rules/rule-filters/index.js +50 -58
  54. package/es/components/popover/color-rules/rule-filters/number-input.js +42 -57
  55. package/es/components/popover/color-rules-popover.js +117 -121
  56. package/es/components/popover/color-selector-popover.js +60 -70
  57. package/es/components/seatable-radio/index.js +2 -2
  58. package/es/components/select/option-group.js +139 -157
  59. package/es/components/select/option.js +26 -40
  60. package/es/components/select/select.js +97 -112
  61. package/es/components/toast/alert.js +65 -80
  62. package/es/components/toast/index.js +1 -1
  63. package/es/components/toast/toast.js +76 -103
  64. package/es/components/toast/toastManager.js +57 -93
  65. package/es/components/toast/toaster.js +58 -56
  66. package/es/constants/color-rules.js +8 -5
  67. package/es/constants/dtable-select-style.js +44 -48
  68. package/es/constants/event-types.js +4 -4
  69. package/es/constants/index.js +328 -242
  70. package/es/constants/map.js +2 -2
  71. package/es/constants/model.js +20 -20
  72. package/es/constants/regions.js +1 -1
  73. package/es/constants/zIndexes.js +1 -1
  74. package/es/custom-g2.js +11 -11
  75. package/es/dashboard.js +343 -333
  76. package/es/desktop-dashboard.js +217 -224
  77. package/es/index.js +45 -58
  78. package/es/locale/index.js +3 -3
  79. package/es/locale/lang/de.js +1 -1
  80. package/es/locale/lang/en.js +7 -7
  81. package/es/locale/lang/fr.js +1 -1
  82. package/es/locale/lang/zh_CN.js +1 -1
  83. package/es/mobile-dashboard.js +76 -89
  84. package/es/model/bar-group.js +34 -44
  85. package/es/model/bar.js +26 -36
  86. package/es/model/base-model.js +11 -12
  87. package/es/model/basic-number-card.js +10 -20
  88. package/es/model/collaborators.js +10 -11
  89. package/es/model/combination.js +32 -42
  90. package/es/model/compare-bar.js +30 -40
  91. package/es/model/completeness-group.js +19 -29
  92. package/es/model/completeness.js +14 -24
  93. package/es/model/custom-bar.js +14 -24
  94. package/es/model/dashboard.js +9 -19
  95. package/es/model/generic-model.js +187 -197
  96. package/es/model/heat-map.js +16 -26
  97. package/es/model/horizontal-bar-group.js +32 -42
  98. package/es/model/horizontal-bar.js +26 -36
  99. package/es/model/index.js +31 -3
  100. package/es/model/map.js +20 -30
  101. package/es/model/mirror.js +15 -25
  102. package/es/model/pie.js +21 -31
  103. package/es/model/ring.js +23 -33
  104. package/es/model/scatter.js +11 -21
  105. package/es/model/statistic-dashboard.js +7 -8
  106. package/es/model/table.js +19 -29
  107. package/es/model/trend.js +15 -25
  108. package/es/model/world-map.js +17 -27
  109. package/es/service/chart-service.js +69 -65
  110. package/es/service/dashboard-service.js +421 -419
  111. package/es/service/map-json.js +112 -132
  112. package/es/stat-editor/chart-name-editor.js +44 -58
  113. package/es/stat-editor/index.js +59 -70
  114. package/es/stat-editor/stat-settings/advance-chart-settings/basic-number-card-settings.js +93 -98
  115. package/es/stat-editor/stat-settings/advance-chart-settings/combination-settings.js +246 -248
  116. package/es/stat-editor/stat-settings/advance-chart-settings/dashboard-chart-settings.js +127 -126
  117. package/es/stat-editor/stat-settings/advance-chart-settings/geo-granularity-settings.js +5 -3
  118. package/es/stat-editor/stat-settings/advance-chart-settings/heat-map-settings.js +78 -90
  119. package/es/stat-editor/stat-settings/advance-chart-settings/index.js +146 -150
  120. package/es/stat-editor/stat-settings/advance-chart-settings/map-settings.js +88 -98
  121. package/es/stat-editor/stat-settings/advance-chart-settings/mirror-settings.js +100 -118
  122. package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/combination-style-setting.js +161 -148
  123. package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/heat-map-settings.js +58 -66
  124. package/es/stat-editor/stat-settings/advance-chart-settings/style-setting/map-setting.js +58 -60
  125. package/es/stat-editor/stat-settings/advance-chart-settings/summary-settings.js +152 -148
  126. package/es/stat-editor/stat-settings/advance-chart-settings/trend-chart-settings.js +101 -105
  127. package/es/stat-editor/stat-settings/advance-chart-settings/world-map-settings.js +81 -91
  128. package/es/stat-editor/stat-settings/basic-chart-settings/advance-bar-chart-settings.js +110 -122
  129. package/es/stat-editor/stat-settings/basic-chart-settings/bar-settings.js +101 -113
  130. package/es/stat-editor/stat-settings/basic-chart-settings/completeness-chart-settings.js +130 -120
  131. package/es/stat-editor/stat-settings/basic-chart-settings/custom-bar-settings.js +88 -102
  132. package/es/stat-editor/stat-settings/basic-chart-settings/groupby-settings.js +88 -102
  133. package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-axis-group-settings.js +200 -194
  134. package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-bar-settings.js +98 -110
  135. package/es/stat-editor/stat-settings/basic-chart-settings/horizontal-group-chart-settings.js +106 -118
  136. package/es/stat-editor/stat-settings/basic-chart-settings/index.js +212 -223
  137. package/es/stat-editor/stat-settings/basic-chart-settings/pie-settings.js +109 -119
  138. package/es/stat-editor/stat-settings/basic-chart-settings/pivot-table-settings.js +329 -319
  139. package/es/stat-editor/stat-settings/basic-chart-settings/scatter-settings.js +82 -90
  140. package/es/stat-editor/stat-settings/basic-chart-settings/stack-item-settings.js +58 -65
  141. package/es/stat-editor/stat-settings/basic-chart-settings/stacks-settings.js +126 -116
  142. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/bar-chart-style-setting.js +201 -182
  143. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/completeness-style.js +79 -79
  144. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/horizontal-bar-chart-style.js +196 -175
  145. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/label-font-size-editor.js +35 -50
  146. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/pie-chart-style-settings.js +180 -147
  147. package/es/stat-editor/stat-settings/basic-chart-settings/style-setting/time-compare-style.js +31 -40
  148. package/es/stat-editor/stat-settings/basic-chart-settings/summary-method-setting.js +56 -67
  149. package/es/stat-editor/stat-settings/basic-chart-settings/summary-settings.js +60 -69
  150. package/es/stat-editor/stat-settings/basic-chart-settings/time-comparison-settings.js +165 -158
  151. package/es/stat-editor/stat-settings/basic-chart-settings/timer-picker.js +61 -74
  152. package/es/stat-editor/stat-settings/basic-chart-settings/y-axis-group-settings.js +199 -193
  153. package/es/stat-editor/stat-settings/color-setting/color-group-selector.js +25 -38
  154. package/es/stat-editor/stat-settings/color-setting/color-picker.js +79 -86
  155. package/es/stat-editor/stat-settings/color-setting/color-use-type-selector.js +138 -120
  156. package/es/stat-editor/stat-settings/map/map-level.js +31 -43
  157. package/es/stat-editor/stat-settings/map/map-province-city.js +82 -83
  158. package/es/stat-editor/stat-settings/public-setting/axis-label-position-setting.js +48 -50
  159. package/es/stat-editor/stat-settings/public-setting/base-settings.js +96 -96
  160. package/es/stat-editor/stat-settings/public-setting/calender.js +69 -75
  161. package/es/stat-editor/stat-settings/public-setting/column-settings.js +5 -3
  162. package/es/stat-editor/stat-settings/public-setting/custom-title-setting.js +36 -41
  163. package/es/stat-editor/stat-settings/public-setting/data-sort-setting.js +37 -41
  164. package/es/stat-editor/stat-settings/public-setting/ind-toggle-setting.js +25 -38
  165. package/es/stat-editor/stat-settings/public-setting/min-max-setting.js +40 -52
  166. package/es/stat-editor/stat-settings/public-setting/numeric-summary-item.js +90 -93
  167. package/es/stat-editor/stat-settings/public-setting/toggle-setting.js +23 -36
  168. package/es/stat-editor/stat-settings/public-setting/type-settings/index.js +39 -44
  169. package/es/stat-list/chart-preview.js +85 -98
  170. package/es/stat-list/index.js +170 -178
  171. package/es/stat-view/area-chart.js +282 -274
  172. package/es/stat-view/bar-chart.js +300 -292
  173. package/es/stat-view/base-chart.js +58 -52
  174. package/es/stat-view/basic-number-card.js +115 -168
  175. package/es/stat-view/combination-chart.js +298 -334
  176. package/es/stat-view/compare-chart.js +256 -254
  177. package/es/stat-view/completeness-chart.js +194 -206
  178. package/es/stat-view/custom-bar.js +221 -223
  179. package/es/stat-view/dashboard-chart.js +122 -180
  180. package/es/stat-view/heat-map.js +268 -294
  181. package/es/stat-view/horizontal-bar-chart.js +291 -281
  182. package/es/stat-view/index.js +136 -152
  183. package/es/stat-view/line-chart.js +267 -265
  184. package/es/stat-view/map.js +246 -246
  185. package/es/stat-view/mirror.js +141 -152
  186. package/es/stat-view/pie-chart.js +143 -156
  187. package/es/stat-view/pivot-table/index.js +113 -118
  188. package/es/stat-view/pivot-table/one-dimension-table-no-numeric-columns.js +104 -102
  189. package/es/stat-view/pivot-table/one-dimension-table-with-numeric-columns.js +116 -118
  190. package/es/stat-view/pivot-table/pivot-table-display-name.js +96 -95
  191. package/es/stat-view/pivot-table/two-dimension-table.js +238 -229
  192. package/es/stat-view/ring-chart.js +189 -200
  193. package/es/stat-view/scatter-chart.js +162 -213
  194. package/es/stat-view/treemap-chart.js +136 -200
  195. package/es/stat-view/trend-chart.js +137 -183
  196. package/es/stat-view/world-map.js +233 -243
  197. package/es/tabs/index.js +164 -169
  198. package/es/tabs/tab.js +101 -116
  199. package/es/utils/basic-chart-utils.js +7 -9
  200. package/es/utils/cell-format.js +48 -51
  201. package/es/utils/cell-value.js +1 -1
  202. package/es/utils/collaborator.js +15 -14
  203. package/es/utils/color-utils.js +48 -37
  204. package/es/utils/column-utils.js +47 -33
  205. package/es/utils/column.js +1 -1
  206. package/es/utils/common-utils.js +111 -117
  207. package/es/utils/date-format.js +17 -17
  208. package/es/utils/export-table-utils.js +507 -396
  209. package/es/utils/index.js +6 -6
  210. package/es/utils/map.js +30 -34
  211. package/es/utils/model.js +3 -5
  212. package/es/utils/object.js +4 -4
  213. package/es/utils/pivot-table.js +20 -20
  214. package/es/utils/row-utils.js +41 -33
  215. package/es/utils/search.js +18 -20
  216. package/es/utils/sql-utils.js +132 -98
  217. package/es/utils/stat-utils.js +303 -320
  218. package/es/utils/trend-utils.js +57 -67
  219. package/package.json +2 -2
@@ -1,165 +1,184 @@
1
- import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
- import _createClass from "@babel/runtime/helpers/esm/createClass";
3
1
  import { DateUtils, isNumber, isNumericColumn, CellType, FORMULA_COLUMN_TYPES_MAP, FORMULA_RESULT_TYPE, sortText, sortNumber, sortDate, sortSingleSelect, getPrecisionNumber, getFormulaDisplayString, getGeolocationDisplayString, getDateDisplayString, getNumberDisplayString } from 'dtable-store';
4
2
  import { getClientFormulaDisplayString } from '../utils';
5
3
  import { DATA_SORT_TYPE, STATISTICS_COUNT_TYPE, SUMMARY_METHOD_MAP } from '../constants';
6
- var SUPPORT_SORT_COLUMNS = [CellType.TEXT, CellType.NUMBER, CellType.DATE, CellType.SINGLE_SELECT, CellType.FORMULA, CellType.LINK_FORMULA, CellType.CTIME, CellType.MTIME, CellType.RATE];
7
- var getValidCollaborators = function getValidCollaborators(collaborators, emails) {
4
+ const SUPPORT_SORT_COLUMNS = [CellType.TEXT, CellType.NUMBER, CellType.DATE, CellType.SINGLE_SELECT, CellType.FORMULA, CellType.LINK_FORMULA, CellType.CTIME, CellType.MTIME, CellType.RATE];
5
+ const getValidCollaborators = (collaborators, emails) => {
8
6
  if (!Array.isArray(emails)) {
9
7
  return [];
10
8
  }
11
- return emails.filter(function (e) {
12
- return collaborators.findIndex(function (c) {
13
- return c.email === e;
14
- }) > -1;
15
- });
9
+ return emails.filter(e => collaborators.findIndex(c => c.email === e) > -1);
16
10
  };
17
- var StatUtils = /*#__PURE__*/function () {
18
- function StatUtils() {
19
- _classCallCheck(this, StatUtils);
20
- }
21
- _createClass(StatUtils, null, [{
22
- key: "getGroupLabel",
23
- value: function getGroupLabel(cellValue, formulaRow, column, dateGranularity, geoGranularity, value) {
24
- var type = column.type,
25
- key = column.key,
26
- data = column.data;
27
- switch (type) {
28
- case CellType.TEXT:
29
- {
30
- return cellValue || null;
31
- }
32
- case CellType.NUMBER:
33
- {
34
- if (!cellValue && cellValue !== 0) {
35
- return null;
36
- }
37
- var number = getPrecisionNumber(cellValue, data);
38
- var valueNumber = parseFloat(number);
39
- return isNumber(valueNumber) ? getNumberDisplayString(valueNumber, column.data) : valueNumber;
40
- }
41
- case CellType.SINGLE_SELECT:
42
- {
43
- var isInvalidValue = data && data.options.findIndex(function (opt) {
44
- return opt.id === cellValue;
45
- }) < 0;
46
- if (isInvalidValue) {
47
- return null;
48
- }
49
- return cellValue;
50
- }
51
- case CellType.DATE:
52
- case CellType.CTIME:
53
- case CellType.MTIME:
54
- {
55
- if (!dateGranularity) {
56
- return getDateDisplayString(cellValue);
57
- }
58
- if (dateGranularity.toUpperCase() === 'QUARTER') {
59
- // TODO: fix the unknown word 'QUARTAR'
60
- return DateUtils.getDateByGranularity(cellValue, 'QUARTAR');
61
- }
62
- return DateUtils.getDateByGranularity(cellValue, dateGranularity);
63
- }
64
- case CellType.MULTIPLE_SELECT:
65
- {
66
- var options = data && data.options;
67
- if (!Array.isArray(cellValue)) {
68
- return [];
69
- }
70
- return cellValue.filter(function (id) {
71
- return options.findIndex(function (o) {
72
- return o.id === id;
73
- }) > -1;
74
- });
11
+ class StatUtils {
12
+ static getGroupLabel(cellValue, formulaRow, column, dateGranularity, geoGranularity, value) {
13
+ let {
14
+ type,
15
+ key,
16
+ data
17
+ } = column;
18
+ switch (type) {
19
+ case CellType.TEXT:
20
+ {
21
+ return cellValue || null;
22
+ }
23
+ case CellType.NUMBER:
24
+ {
25
+ if (!cellValue && cellValue !== 0) {
26
+ return null;
75
27
  }
76
- case CellType.COLLABORATOR:
77
- {
78
- return getValidCollaborators(value.collaborators, cellValue);
28
+ const number = getPrecisionNumber(cellValue, data);
29
+ let valueNumber = parseFloat(number);
30
+ return isNumber(valueNumber) ? getNumberDisplayString(valueNumber, column.data) : valueNumber;
31
+ }
32
+ case CellType.SINGLE_SELECT:
33
+ {
34
+ let isInvalidValue = data && data.options.findIndex(opt => opt.id === cellValue) < 0;
35
+ if (isInvalidValue) {
36
+ return null;
79
37
  }
80
- case CellType.CREATOR:
81
- case CellType.LAST_MODIFIER:
82
- {
83
- return cellValue ? cellValue : null;
38
+ return cellValue;
39
+ }
40
+ case CellType.DATE:
41
+ case CellType.CTIME:
42
+ case CellType.MTIME:
43
+ {
44
+ if (!dateGranularity) {
45
+ return getDateDisplayString(cellValue);
84
46
  }
85
- case CellType.LINK_FORMULA:
86
- case CellType.FORMULA:
87
- {
88
- if (!formulaRow) return '';
89
- var formulaCellValue = formulaRow[key];
90
- var _ref = data || {},
91
- result_type = _ref.result_type;
92
- if (result_type === FORMULA_RESULT_TYPE.ARRAY) {
93
- return getFormulaDisplayString(formulaCellValue, data, {
94
- tables: value.tables
95
- }) || null;
96
- }
97
- if (result_type === FORMULA_RESULT_TYPE.NUMBER) {
98
- return getPrecisionNumber(formulaCellValue, data);
99
- }
100
- return formulaCellValue ? formulaCellValue + '' : null;
47
+ if (dateGranularity.toUpperCase() === 'QUARTER') {
48
+ // TODO: fix the unknown word 'QUARTAR'
49
+ return DateUtils.getDateByGranularity(cellValue, 'QUARTAR');
101
50
  }
102
- case CellType.GEOLOCATION:
103
- {
104
- var _ref2 = data || {},
105
- geo_format = _ref2.geo_format;
106
- if (geo_format === 'country_region' || geo_format === 'lng_lat' || !geoGranularity) {
107
- return getGeolocationDisplayString(cellValue, data);
108
- }
109
- return cellValue ? cellValue[geoGranularity] : null;
51
+ return DateUtils.getDateByGranularity(cellValue, dateGranularity);
52
+ }
53
+ case CellType.MULTIPLE_SELECT:
54
+ {
55
+ let options = data && data.options;
56
+ if (!Array.isArray(cellValue)) {
57
+ return [];
110
58
  }
111
- case CellType.LINK:
112
- {
113
- var linkCellValue = formulaRow && formulaRow[key];
114
- if (!Array.isArray(linkCellValue)) {
115
- return [];
116
- }
117
- return linkCellValue.map(function (linkVal) {
118
- return linkVal.display_value;
119
- });
59
+ return cellValue.filter(id => options.findIndex(o => o.id === id) > -1);
60
+ }
61
+ case CellType.COLLABORATOR:
62
+ {
63
+ return getValidCollaborators(value.collaborators, cellValue);
64
+ }
65
+ case CellType.CREATOR:
66
+ case CellType.LAST_MODIFIER:
67
+ {
68
+ return cellValue ? cellValue : null;
69
+ }
70
+ case CellType.LINK_FORMULA:
71
+ case CellType.FORMULA:
72
+ {
73
+ if (!formulaRow) return '';
74
+ let formulaCellValue = formulaRow[key];
75
+ let {
76
+ result_type
77
+ } = data || {};
78
+ if (result_type === FORMULA_RESULT_TYPE.ARRAY) {
79
+ return getFormulaDisplayString(formulaCellValue, data, {
80
+ tables: value.tables
81
+ }) || null;
120
82
  }
121
- case CellType.CHECKBOX:
122
- {
123
- return String(!!cellValue);
83
+ if (result_type === FORMULA_RESULT_TYPE.NUMBER) {
84
+ return getPrecisionNumber(formulaCellValue, data);
124
85
  }
125
- case CellType.RATE:
126
- {
127
- if (!cellValue) return null;
128
- return cellValue + '';
86
+ return formulaCellValue ? formulaCellValue + '' : null;
87
+ }
88
+ case CellType.GEOLOCATION:
89
+ {
90
+ const {
91
+ geo_format
92
+ } = data || {};
93
+ if (geo_format === 'country_region' || geo_format === 'lng_lat' || !geoGranularity) {
94
+ return getGeolocationDisplayString(cellValue, data);
129
95
  }
130
- default:
131
- {
132
- return null;
96
+ return cellValue ? cellValue[geoGranularity] : null;
97
+ }
98
+ case CellType.LINK:
99
+ {
100
+ const linkCellValue = formulaRow && formulaRow[key];
101
+ if (!Array.isArray(linkCellValue)) {
102
+ return [];
133
103
  }
134
- }
135
- }
136
- }, {
137
- key: "sortStatistics",
138
- value: function sortStatistics(statistics, column, sort_key) {
139
- var column_type = column.type,
140
- data = column.data;
141
- var sortType = 'up';
142
- var option_id_index_map = {};
143
- if (column_type === CellType.SINGLE_SELECT) {
144
- var _ref3 = data || {},
145
- options = _ref3.options;
146
- Array.isArray(options) && options.forEach(function (option, index) {
147
- option_id_index_map[option.id] = index;
148
- });
149
- }
150
- statistics.sort(function (currResult, nextResult) {
151
- var current = currResult[sort_key];
152
- var next = nextResult[sort_key];
153
- if (!current && current !== 0) {
154
- return -1;
104
+ return linkCellValue.map(linkVal => linkVal.display_value);
105
+ }
106
+ case CellType.CHECKBOX:
107
+ {
108
+ return String(!!cellValue);
155
109
  }
156
- if (!next && next !== 0) {
157
- return 1;
110
+ case CellType.RATE:
111
+ {
112
+ if (!cellValue) return null;
113
+ return cellValue + '';
158
114
  }
159
- if (SUPPORT_SORT_COLUMNS.includes(column_type)) {
160
- switch (column_type) {
161
- case CellType.NUMBER:
162
- {
115
+ default:
116
+ {
117
+ return null;
118
+ }
119
+ }
120
+ }
121
+ static sortStatistics(statistics, column, sort_key) {
122
+ let {
123
+ type: column_type,
124
+ data
125
+ } = column;
126
+ let sortType = 'up';
127
+ let option_id_index_map = {};
128
+ if (column_type === CellType.SINGLE_SELECT) {
129
+ const {
130
+ options
131
+ } = data || {};
132
+ Array.isArray(options) && options.forEach((option, index) => {
133
+ option_id_index_map[option.id] = index;
134
+ });
135
+ }
136
+ statistics.sort((currResult, nextResult) => {
137
+ let {
138
+ [sort_key]: current
139
+ } = currResult;
140
+ let {
141
+ [sort_key]: next
142
+ } = nextResult;
143
+ if (!current && current !== 0) {
144
+ return -1;
145
+ }
146
+ if (!next && next !== 0) {
147
+ return 1;
148
+ }
149
+ if (SUPPORT_SORT_COLUMNS.includes(column_type)) {
150
+ switch (column_type) {
151
+ case CellType.NUMBER:
152
+ {
153
+ if (current) {
154
+ current = current - 0;
155
+ }
156
+ if (next) {
157
+ next = next - 0;
158
+ }
159
+ return sortNumber(current, next, sortType);
160
+ }
161
+ case CellType.DATE:
162
+ case CellType.CTIME:
163
+ case CellType.MTIME:
164
+ {
165
+ return sortDate(current, next, sortType);
166
+ }
167
+ case CellType.SINGLE_SELECT:
168
+ case CellType.MULTIPLE_SELECT:
169
+ {
170
+ return sortSingleSelect(current, next, {
171
+ sort_type: sortType,
172
+ option_id_index_map
173
+ });
174
+ }
175
+ case CellType.FORMULA:
176
+ case CellType.LINK_FORMULA:
177
+ {
178
+ let {
179
+ result_type
180
+ } = data || {};
181
+ if (result_type === FORMULA_RESULT_TYPE.NUMBER) {
163
182
  if (current) {
164
183
  current = current - 0;
165
184
  }
@@ -168,198 +187,162 @@ var StatUtils = /*#__PURE__*/function () {
168
187
  }
169
188
  return sortNumber(current, next, sortType);
170
189
  }
171
- case CellType.DATE:
172
- case CellType.CTIME:
173
- case CellType.MTIME:
174
- {
175
- return sortDate(current, next, sortType);
176
- }
177
- case CellType.SINGLE_SELECT:
178
- case CellType.MULTIPLE_SELECT:
179
- {
180
- return sortSingleSelect(current, next, {
181
- sort_type: sortType,
182
- option_id_index_map: option_id_index_map
183
- });
190
+ return sortText(result_type, current, next, sortType);
191
+ }
192
+ default:
193
+ {
194
+ return sortText(current, next, sortType);
195
+ }
196
+ }
197
+ }
198
+ });
199
+ }
200
+ static sortDataByKey(data, key, sortType) {
201
+ data.sort((curr, next) => {
202
+ const currentVal = curr[key];
203
+ const nextVal = next[key];
204
+ if (!currentVal && currentVal !== 0) {
205
+ return -1;
206
+ }
207
+ if (!nextVal && nextVal !== 0) {
208
+ return 1;
209
+ }
210
+ if (sortType === DATA_SORT_TYPE.ASCENDING) {
211
+ return currentVal > nextVal ? 1 : -1;
212
+ } else {
213
+ return currentVal > nextVal ? -1 : 1;
214
+ }
215
+ });
216
+ }
217
+ static sortStatisticData(statistics, sort_type) {
218
+ this.sortDataByKey(statistics, 'value', sort_type);
219
+ }
220
+ static getTotal(summary_column_key, summary_column_type, summary_type, summary_method) {
221
+ let rows = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
222
+ let formula_rows = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
223
+ let rowsLength = rows.length;
224
+ let total;
225
+ if (summary_type === STATISTICS_COUNT_TYPE.COUNT) {
226
+ total = rowsLength;
227
+ } else if (summary_type === STATISTICS_COUNT_TYPE.ADVANCED) {
228
+ switch (summary_method) {
229
+ case 'Distinct_values':
230
+ {
231
+ let count = 0;
232
+ let existMap = {};
233
+ rows.forEach(r => {
234
+ let num;
235
+ if (FORMULA_COLUMN_TYPES_MAP[summary_column_type]) {
236
+ const formulaRow = formula_rows[r._id] || {};
237
+ num = formulaRow[summary_column_key];
238
+ num = Array.isArray(num) ? num[0] : num;
239
+ } else {
240
+ num = r[summary_column_key];
184
241
  }
185
- case CellType.FORMULA:
186
- case CellType.LINK_FORMULA:
187
- {
188
- var _ref4 = data || {},
189
- result_type = _ref4.result_type;
190
- if (result_type === FORMULA_RESULT_TYPE.NUMBER) {
191
- if (current) {
192
- current = current - 0;
193
- }
194
- if (next) {
195
- next = next - 0;
196
- }
197
- return sortNumber(current, next, sortType);
242
+ if (!num) {
243
+ if (num === 0) {
244
+ num = '0';
245
+ } else {
246
+ num = !!num;
198
247
  }
199
- return sortText(result_type, current, next, sortType);
200
248
  }
201
- default:
202
- {
203
- return sortText(current, next, sortType);
249
+ if (!existMap[num]) {
250
+ existMap[num] = true;
251
+ count++;
204
252
  }
253
+ });
254
+ total = count;
255
+ break;
205
256
  }
206
- }
207
- });
208
- }
209
- }, {
210
- key: "sortDataByKey",
211
- value: function sortDataByKey(data, key, sortType) {
212
- data.sort(function (curr, next) {
213
- var currentVal = curr[key];
214
- var nextVal = next[key];
215
- if (!currentVal && currentVal !== 0) {
216
- return -1;
217
- }
218
- if (!nextVal && nextVal !== 0) {
219
- return 1;
220
- }
221
- if (sortType === DATA_SORT_TYPE.ASCENDING) {
222
- return currentVal > nextVal ? 1 : -1;
223
- } else {
224
- return currentVal > nextVal ? -1 : 1;
225
- }
226
- });
227
- }
228
- }, {
229
- key: "sortStatisticData",
230
- value: function sortStatisticData(statistics, sort_type) {
231
- this.sortDataByKey(statistics, 'value', sort_type);
232
- }
233
- }, {
234
- key: "getTotal",
235
- value: function getTotal(summary_column_key, summary_column_type, summary_type, summary_method) {
236
- var rows = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
237
- var formula_rows = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
238
- var rowsLength = rows.length;
239
- var total;
240
- if (summary_type === STATISTICS_COUNT_TYPE.COUNT) {
241
- total = rowsLength;
242
- } else if (summary_type === STATISTICS_COUNT_TYPE.ADVANCED) {
243
- switch (summary_method) {
244
- case 'Distinct_values':
245
- {
246
- var count = 0;
247
- var existMap = {};
248
- rows.forEach(function (r) {
249
- var num;
250
- if (FORMULA_COLUMN_TYPES_MAP[summary_column_type]) {
251
- var formulaRow = formula_rows[r._id] || {};
252
- num = formulaRow[summary_column_key];
253
- num = Array.isArray(num) ? num[0] : num;
254
- } else {
255
- num = r[summary_column_key];
256
- }
257
- if (!num) {
258
- if (num === 0) {
259
- num = '0';
260
- } else {
261
- num = !!num;
262
- }
263
- }
264
- if (!existMap[num]) {
265
- existMap[num] = true;
266
- count++;
267
- }
268
- });
269
- total = count;
270
- break;
257
+ case 'Sum':
258
+ case 'Mean':
259
+ {
260
+ let sum = 0;
261
+ let validNumbersCount = 0;
262
+ rows.forEach(r => {
263
+ let num;
264
+ if (FORMULA_COLUMN_TYPES_MAP[summary_column_type]) {
265
+ let formulaRow = formula_rows[r._id] || {};
266
+ num = formulaRow[summary_column_key];
267
+ num = Array.isArray(num) ? num[0] : num;
268
+ } else {
269
+ num = r[summary_column_key];
270
+ }
271
+ if (isNumber(num)) {
272
+ validNumbersCount++;
273
+ sum += num;
274
+ }
275
+ });
276
+ if (summary_method === 'Sum') {
277
+ total = Number.parseFloat(sum.toFixed(8));
278
+ } else if (summary_method === 'Mean') {
279
+ total = validNumbersCount === 0 ? 0 : Number.parseFloat((sum / validNumbersCount).toFixed(8));
271
280
  }
272
- case 'Sum':
273
- case 'Mean':
274
- {
275
- var sum = 0;
276
- var validNumbersCount = 0;
277
- rows.forEach(function (r) {
278
- var num;
281
+ break;
282
+ }
283
+ case 'Max':
284
+ case 'Min':
285
+ {
286
+ if (rowsLength > 0) {
287
+ let result = rows.reduce((current, next) => {
288
+ let currentValue, nextValue;
279
289
  if (FORMULA_COLUMN_TYPES_MAP[summary_column_type]) {
280
- var formulaRow = formula_rows[r._id] || {};
281
- num = formulaRow[summary_column_key];
282
- num = Array.isArray(num) ? num[0] : num;
290
+ let currentFormulaRow = formula_rows[current._id];
291
+ let nextFormulaRow = formula_rows[next._id];
292
+ currentValue = currentFormulaRow && currentFormulaRow[summary_column_key];
293
+ nextValue = nextFormulaRow && nextFormulaRow[summary_column_key];
294
+ currentValue = Array.isArray(currentValue) ? currentValue[0] : currentValue;
295
+ nextValue = Array.isArray(nextValue) ? nextValue[0] : nextValue;
283
296
  } else {
284
- num = r[summary_column_key];
297
+ currentValue = current[summary_column_key];
298
+ nextValue = next[summary_column_key];
285
299
  }
286
- if (isNumber(num)) {
287
- validNumbersCount++;
288
- sum += num;
300
+ if (!nextValue && nextValue !== 0) {
301
+ return current;
289
302
  }
290
- });
291
- if (summary_method === 'Sum') {
292
- total = Number.parseFloat(sum.toFixed(8));
293
- } else if (summary_method === 'Mean') {
294
- total = validNumbersCount === 0 ? 0 : Number.parseFloat((sum / validNumbersCount).toFixed(8));
295
- }
296
- break;
297
- }
298
- case 'Max':
299
- case 'Min':
300
- {
301
- if (rowsLength > 0) {
302
- var result = rows.reduce(function (current, next) {
303
- var currentValue, nextValue;
304
- if (FORMULA_COLUMN_TYPES_MAP[summary_column_type]) {
305
- var currentFormulaRow = formula_rows[current._id];
306
- var nextFormulaRow = formula_rows[next._id];
307
- currentValue = currentFormulaRow && currentFormulaRow[summary_column_key];
308
- nextValue = nextFormulaRow && nextFormulaRow[summary_column_key];
309
- currentValue = Array.isArray(currentValue) ? currentValue[0] : currentValue;
310
- nextValue = Array.isArray(nextValue) ? nextValue[0] : nextValue;
311
- } else {
312
- currentValue = current[summary_column_key];
313
- nextValue = next[summary_column_key];
314
- }
315
- if (!nextValue && nextValue !== 0) {
316
- return current;
317
- }
318
- var isNextGreater = currentValue < nextValue;
319
- if (summary_method === 'Min') {
320
- return isNextGreater ? current : next;
321
- } else {
322
- return isNextGreater ? next : current;
323
- }
324
- });
325
- if (FORMULA_COLUMN_TYPES_MAP[summary_column_type]) {
326
- var formulaRow = formula_rows[result._id];
327
- total = formulaRow && formulaRow[summary_column_key];
328
- total = Array.isArray(total) ? total[0] : total;
303
+ let isNextGreater = currentValue < nextValue;
304
+ if (summary_method === 'Min') {
305
+ return isNextGreater ? current : next;
329
306
  } else {
330
- total = result[summary_column_key];
307
+ return isNextGreater ? next : current;
331
308
  }
309
+ });
310
+ if (FORMULA_COLUMN_TYPES_MAP[summary_column_type]) {
311
+ let formulaRow = formula_rows[result._id];
312
+ total = formulaRow && formulaRow[summary_column_key];
313
+ total = Array.isArray(total) ? total[0] : total;
314
+ } else {
315
+ total = result[summary_column_key];
332
316
  }
333
- break;
334
- }
335
- default:
336
- {
337
- break;
338
317
  }
339
- }
318
+ break;
319
+ }
320
+ default:
321
+ {
322
+ break;
323
+ }
340
324
  }
341
- return total || 0;
342
325
  }
343
- }, {
344
- key: "getFormattedValue",
345
- value: function getFormattedValue(value, column, summaryMethod) {
346
- if (!column) {
347
- return value;
348
- }
349
- if (summaryMethod === SUMMARY_METHOD_MAP.Distinct_values) {
350
- return value;
351
- }
352
- var type = column.type,
353
- data = column.data;
354
- if (isNumericColumn(column)) {
355
- return getNumberDisplayString(value, data);
356
- }
357
- if (FORMULA_COLUMN_TYPES_MAP[type]) {
358
- return getClientFormulaDisplayString(value, data);
359
- }
326
+ return total || 0;
327
+ }
328
+ static getFormattedValue(value, column, summaryMethod) {
329
+ if (!column) {
330
+ return value;
331
+ }
332
+ if (summaryMethod === SUMMARY_METHOD_MAP.Distinct_values) {
360
333
  return value;
361
334
  }
362
- }]);
363
- return StatUtils;
364
- }();
335
+ const {
336
+ type,
337
+ data
338
+ } = column;
339
+ if (isNumericColumn(column)) {
340
+ return getNumberDisplayString(value, data);
341
+ }
342
+ if (FORMULA_COLUMN_TYPES_MAP[type]) {
343
+ return getClientFormulaDisplayString(value, data);
344
+ }
345
+ return value;
346
+ }
347
+ }
365
348
  export default StatUtils;