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,7 +1,3 @@
1
- import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
- import _createClass from "@babel/runtime/helpers/esm/createClass";
3
- import _inherits from "@babel/runtime/helpers/esm/inherits";
4
- import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
1
  import React from 'react';
6
2
  import PropTypes from 'prop-types';
7
3
  import DataSet from '@antv/data-set/lib/index';
@@ -12,50 +8,52 @@ import { COLOR_OPTIONS, DEFAULT_NUMBER_FORMAT_OBJECT, SUMMARY_TYPE } from '../co
12
8
  import { MAP_LEVEL } from '../constants/map';
13
9
  import { shallowEqual } from '../utils/common-utils';
14
10
  import { getRegionScaleOffsets } from '../utils/map';
15
- var Map = /*#__PURE__*/function (_BaseChart) {
16
- _inherits(Map, _BaseChart);
17
- var _super = _createSuper(Map);
18
- function Map(props) {
19
- var _this;
20
- _classCallCheck(this, Map);
21
- _this = _super.call(this, props);
22
- _this.hasMapChanged = function (preStatItem, statItem) {
23
- var preMapLevel = preStatItem.map_level,
24
- prevMapLocation = preStatItem.map_location;
25
- var map_level = statItem.map_level,
26
- map_location = statItem.map_location;
11
+ class Map extends BaseChart {
12
+ constructor(props) {
13
+ super(props);
14
+ this.hasMapChanged = (preStatItem, statItem) => {
15
+ const {
16
+ map_level: preMapLevel,
17
+ map_location: prevMapLocation
18
+ } = preStatItem;
19
+ const {
20
+ map_level,
21
+ map_location
22
+ } = statItem;
27
23
  return map_level !== preMapLevel || !shallowEqual(map_location, prevMapLocation);
28
24
  };
29
- _this.reCalculateChart = function (statItem) {
30
- _this.rerenderChart();
31
- _this.props.chartCalculator.calculate(statItem).then(function (statData) {
32
- _this.calculateData = statData;
33
- _this.setState({
25
+ this.reCalculateChart = statItem => {
26
+ this.rerenderChart();
27
+ this.props.chartCalculator.calculate(statItem).then(statData => {
28
+ this.calculateData = statData;
29
+ this.setState({
34
30
  isCalculatingData: false
35
31
  });
36
- _this.updateStatisticData(_this.fixData(statData));
32
+ this.updateStatisticData(this.fixData(statData));
37
33
  });
38
34
  };
39
- _this.rerenderChart = function () {
40
- if (!_this.chart) return;
41
- _this.chart.destroy();
42
- _this.initStatisticContext(_this.geoData);
35
+ this.rerenderChart = () => {
36
+ if (!this.chart) return;
37
+ this.chart.destroy();
38
+ this.initStatisticContext(this.geoData);
43
39
  };
44
- _this.getMapLevel = function (statItem) {
45
- var map_level = statItem.map_level;
40
+ this.getMapLevel = statItem => {
41
+ const {
42
+ map_level
43
+ } = statItem;
46
44
  return map_level || MAP_LEVEL.COUNTRY;
47
45
  };
48
- _this.fixData = function (statisticData) {
46
+ this.fixData = statisticData => {
49
47
  if (!statisticData) return [];
50
- var statisticNewData = [];
51
- var sum = 0;
52
- var statItem = _this.props.statItem;
53
- var type = statItem.type;
54
- statisticData.forEach(function (item, index) {
48
+ let statisticNewData = [];
49
+ let sum = 0;
50
+ const {
51
+ statItem
52
+ } = this.props;
53
+ const type = statItem.type;
54
+ statisticData.forEach((item, index) => {
55
55
  if (item && item.name) {
56
- var matchFeature = _this.mapData.features.find(function (feature) {
57
- return feature.properties.name.indexOf(item.name) > -1;
58
- });
56
+ let matchFeature = this.mapData.features.find(feature => feature.properties.name.indexOf(item.name) > -1);
59
57
  if (matchFeature) {
60
58
  statisticNewData.push({
61
59
  name: matchFeature.properties.name,
@@ -73,36 +71,38 @@ var Map = /*#__PURE__*/function (_BaseChart) {
73
71
  }
74
72
  return statisticNewData;
75
73
  };
76
- _this.renderCommonMap = function (data) {
77
- var _this$props = _this.props,
78
- getTableById = _this$props.getTableById,
79
- statItem = _this$props.statItem;
80
- var userDataView = _this.dataSet.getView('statisticViewModel').source(data).transform({
81
- geoDataView: _this.dataSet.getView('mapDataModel'),
74
+ this.renderCommonMap = data => {
75
+ const {
76
+ getTableById,
77
+ statItem
78
+ } = this.props;
79
+ const userDataView = this.dataSet.getView('statisticViewModel').source(data).transform({
80
+ geoDataView: this.dataSet.getView('mapDataModel'),
82
81
  field: 'name',
83
82
  type: 'geo.region',
84
83
  as: ['longitude', 'latitude']
85
84
  });
86
- var _this$props$statItem = _this.props.statItem,
87
- table_id = _this$props$statItem.table_id,
88
- data_color = _this$props$statItem.data_color,
89
- summary_type = _this$props$statItem.summary_type,
90
- summary_method = _this$props$statItem.summary_method,
91
- summary_column = _this$props$statItem.summary_column;
92
- var currentColorOption = COLOR_OPTIONS.filter(function (item) {
93
- return item.name == data_color;
94
- })[0] || COLOR_OPTIONS[0];
95
- var exampleColors = currentColorOption.exampleColors,
96
- highlightedBorderColor = currentColorOption.highlightedBorderColor;
97
- var columnData = DEFAULT_NUMBER_FORMAT_OBJECT;
85
+ const {
86
+ table_id,
87
+ data_color,
88
+ summary_type,
89
+ summary_method,
90
+ summary_column
91
+ } = this.props.statItem;
92
+ const currentColorOption = COLOR_OPTIONS.filter(item => item.name == data_color)[0] || COLOR_OPTIONS[0];
93
+ const {
94
+ exampleColors,
95
+ highlightedBorderColor
96
+ } = currentColorOption;
97
+ let columnData = DEFAULT_NUMBER_FORMAT_OBJECT;
98
98
  if (summary_type === SUMMARY_TYPE.ADVANCED) {
99
- var table = getTableById(table_id);
100
- var summaryColumn = TableUtils.getTableColumnByKey(table, summary_column) || {};
99
+ const table = getTableById(table_id);
100
+ const summaryColumn = TableUtils.getTableColumnByKey(table, summary_column) || {};
101
101
  columnData = summaryColumn.data || DEFAULT_NUMBER_FORMAT_OBJECT;
102
102
  }
103
- _this.statisticView = _this.chart.createView();
104
- _this.statisticView.data(userDataView.rows);
105
- _this.statisticView.polygon().position('longitude*latitude').color('value', "".concat(exampleColors[0], "-").concat(exampleColors[4], "-").concat(exampleColors[8])).style({
103
+ this.statisticView = this.chart.createView();
104
+ this.statisticView.data(userDataView.rows);
105
+ this.statisticView.polygon().position('longitude*latitude').color('value', "".concat(exampleColors[0], "-").concat(exampleColors[4], "-").concat(exampleColors[8])).style({
106
106
  lineWidth: 1,
107
107
  stroke: '#bdbdbd',
108
108
  strokeOpacity: 0.5
@@ -113,17 +113,17 @@ var Map = /*#__PURE__*/function (_BaseChart) {
113
113
  stroke: highlightedBorderColor
114
114
  }
115
115
  }
116
- }).tooltip('name*formatted_value*color', function (name, value, color) {
116
+ }).tooltip('name*formatted_value*color', (name, value, color) => {
117
117
  return {
118
- name: name,
119
- color: color,
120
- value: value
118
+ name,
119
+ color,
120
+ value
121
121
  };
122
122
  });
123
- var themeColors = _this.getThemeColors();
124
- var legendDirection = statItem.legend_direction || 'vertical';
125
- var size = statItem.legend_size || 1;
126
- _this.chart.legend({
123
+ const themeColors = this.getThemeColors();
124
+ const legendDirection = statItem.legend_direction || 'vertical';
125
+ const size = statItem.legend_size || 1;
126
+ this.chart.legend({
127
127
  layout: legendDirection,
128
128
  position: legendDirection === 'vertical' ? 'left-bottom' : 'bottom-left',
129
129
  rail: {
@@ -136,75 +136,79 @@ var Map = /*#__PURE__*/function (_BaseChart) {
136
136
  fill: themeColors.textColor
137
137
  },
138
138
  align: legendDirection === 'vertical' ? 'right' : 'bottom',
139
- formatter: function formatter(value) {
140
- return _this.getNumberDisplayString(value, columnData, summary_method);
139
+ formatter: value => {
140
+ return this.getNumberDisplayString(value, columnData, summary_method);
141
141
  }
142
142
  },
143
143
  slidable: false
144
144
  });
145
- _this.statisticView.interaction('element-active');
146
- _this.statisticView.render();
145
+ this.statisticView.interaction('element-active');
146
+ this.statisticView.render();
147
147
  };
148
- _this.updateStatisticData = function (data) {
149
- _this.rerenderChart();
148
+ this.updateStatisticData = data => {
149
+ this.rerenderChart();
150
150
 
151
151
  // re-render statistic data view;
152
- if (_this.statisticView) {
153
- _this.statisticView.destroy();
152
+ if (this.statisticView) {
153
+ this.statisticView.destroy();
154
154
  }
155
155
  if (data.length === 0) {
156
- _this.chart.legend(false);
157
- _this.chart.render();
156
+ this.chart.legend(false);
157
+ this.chart.render();
158
158
  return;
159
159
  }
160
- var statItem = _this.props.statItem;
161
- var mapType = statItem.type;
160
+ const {
161
+ statItem
162
+ } = this.props;
163
+ const mapType = statItem.type;
162
164
  if (!mapType.includes('bubble')) {
163
- _this.renderCommonMap(data);
165
+ this.renderCommonMap(data);
164
166
  } else {
165
- _this.renderBubbleMap(data);
167
+ this.renderBubbleMap(data);
166
168
  }
167
- _this.chart.render();
169
+ this.chart.render();
168
170
  };
169
- _this.renderBubbleMap = function (data) {
170
- var _this$props2 = _this.props,
171
- getTableById = _this$props2.getTableById,
172
- statItem = _this$props2.statItem,
173
- isPreview = _this$props2.isPreview;
174
- var userDv = _this.dataSet.createView().source(data).transform({
175
- geoDataView: _this.dataSet.getView('mapDataModel'),
171
+ this.renderBubbleMap = data => {
172
+ const {
173
+ getTableById,
174
+ statItem,
175
+ isPreview
176
+ } = this.props;
177
+ const userDv = this.dataSet.createView().source(data).transform({
178
+ geoDataView: this.dataSet.getView('mapDataModel'),
176
179
  field: 'name',
177
180
  type: 'geo.centroid',
178
181
  as: ['longitude', 'latitude']
179
182
  });
180
- var _this$props$statItem2 = _this.props.statItem,
181
- table_id = _this$props$statItem2.table_id,
182
- summary_type = _this$props$statItem2.summary_type,
183
- summary_method = _this$props$statItem2.summary_method,
184
- summary_column = _this$props$statItem2.summary_column;
185
- var columnData = DEFAULT_NUMBER_FORMAT_OBJECT;
183
+ const {
184
+ table_id,
185
+ summary_type,
186
+ summary_method,
187
+ summary_column
188
+ } = this.props.statItem;
189
+ let columnData = DEFAULT_NUMBER_FORMAT_OBJECT;
186
190
  if (summary_type === SUMMARY_TYPE.ADVANCED) {
187
- var table = getTableById(table_id);
188
- var summaryColumn = TableUtils.getTableColumnByKey(table, summary_column) || {};
191
+ const table = getTableById(table_id);
192
+ const summaryColumn = TableUtils.getTableColumnByKey(table, summary_column) || {};
189
193
  columnData = summaryColumn.data || DEFAULT_NUMBER_FORMAT_OBJECT;
190
194
  }
191
- _this.statisticView = _this.chart.createView();
192
- _this.statisticView.data(userDv.rows);
193
- _this.chart.theme({
195
+ this.statisticView = this.chart.createView();
196
+ this.statisticView.data(userDv.rows);
197
+ this.chart.theme({
194
198
  defaultColor: statItem.bubble_color || '#2a67d1'
195
199
  });
196
- _this.statisticView.point().position('longitude*latitude').size('value', function (value) {
197
- var percent = value / data.sum;
198
- var size = percent * 100;
200
+ this.statisticView.point().position('longitude*latitude').size('value', value => {
201
+ const percent = value / data.sum;
202
+ let size = percent * 100;
199
203
  if (isPreview && size > 60) {
200
204
  size = 60;
201
205
  }
202
206
  return size;
203
- }).shape('circle').color(statItem.bubble_color || '#2a67d1').tooltip('name*formatted_value*color', function (name, value, color) {
207
+ }).shape('circle').color(statItem.bubble_color || '#2a67d1').tooltip('name*formatted_value*color', (name, value, color) => {
204
208
  return {
205
- name: name,
206
- color: color,
207
- value: value
209
+ name,
210
+ color,
211
+ value
208
212
  };
209
213
  }).style({
210
214
  fillOpacity: 0.6,
@@ -218,10 +222,10 @@ var Map = /*#__PURE__*/function (_BaseChart) {
218
222
  }
219
223
  }
220
224
  });
221
- var themeColors = _this.getThemeColors();
222
- var legendDirection = statItem.legend_direction || 'vertical';
223
- var size = statItem.legend_size || 1;
224
- _this.chart.legend({
225
+ const themeColors = this.getThemeColors();
226
+ const legendDirection = statItem.legend_direction || 'vertical';
227
+ const size = statItem.legend_size || 1;
228
+ this.chart.legend({
225
229
  layout: legendDirection,
226
230
  position: legendDirection === 'vertical' ? 'left-bottom' : 'bottom-left',
227
231
  rail: {
@@ -233,76 +237,82 @@ var Map = /*#__PURE__*/function (_BaseChart) {
233
237
  fill: themeColors.textColor
234
238
  },
235
239
  align: legendDirection === 'vertical' ? 'right' : 'bottom',
236
- formatter: function formatter(value) {
237
- return _this.getNumberDisplayString(value, columnData, summary_method);
240
+ formatter: value => {
241
+ return this.getNumberDisplayString(value, columnData, summary_method);
238
242
  }
239
243
  },
240
244
  slidable: false
241
245
  });
242
- _this.statisticView.interaction('element-active');
243
- _this.statisticView.render();
246
+ this.statisticView.interaction('element-active');
247
+ this.statisticView.render();
244
248
  };
245
- _this.getSize = function () {
246
- var statItem = _this.props.statItem;
247
- var map_level = statItem.map_level,
248
- map_location = statItem.map_location;
249
- var containerWidth = _this.container.clientWidth - 40; // 40: padding
250
- var containerHeight = _this.container.clientHeight - 40;
251
- var _getRegionScaleOffset = getRegionScaleOffsets(map_level, map_location),
252
- scale_w = _getRegionScaleOffset.scale_w,
253
- scale_h = _getRegionScaleOffset.scale_h;
254
- var h = containerHeight;
255
- var w = h * (scale_w / scale_h);
249
+ this.getSize = () => {
250
+ const {
251
+ statItem
252
+ } = this.props;
253
+ const {
254
+ map_level,
255
+ map_location
256
+ } = statItem;
257
+ const containerWidth = this.container.clientWidth - 40; // 40: padding
258
+ const containerHeight = this.container.clientHeight - 40;
259
+ const {
260
+ scale_w,
261
+ scale_h
262
+ } = getRegionScaleOffsets(map_level, map_location);
263
+ let h = containerHeight;
264
+ let w = h * (scale_w / scale_h);
256
265
  if (w > containerWidth) {
257
266
  w = containerWidth;
258
267
  h = w * (scale_h / scale_w);
259
268
  }
260
269
  return {
261
- containerWidth: containerWidth,
262
- containerHeight: containerHeight,
263
- w: w,
264
- h: h
270
+ containerWidth,
271
+ containerHeight,
272
+ w,
273
+ h
265
274
  };
266
275
  };
267
- _this.initStatisticContext = function (geolocation) {
268
- _this.mapData = geolocation;
269
- if (!_this.container) return;
276
+ this.initStatisticContext = geolocation => {
277
+ this.mapData = geolocation;
278
+ if (!this.container) return;
270
279
 
271
280
  // create chart
272
- var _this$getSize = _this.getSize(),
273
- containerWidth = _this$getSize.containerWidth,
274
- containerHeight = _this$getSize.containerHeight,
275
- mapWidth = _this$getSize.w;
276
- var horizontalPadding = (containerWidth - mapWidth) / 4;
277
- var leftPadding = horizontalPadding < 20 ? 20 : horizontalPadding;
278
- _this.chart = new Chart({
279
- container: _this.container,
281
+ const {
282
+ containerWidth,
283
+ containerHeight,
284
+ w: mapWidth
285
+ } = this.getSize();
286
+ const horizontalPadding = (containerWidth - mapWidth) / 4;
287
+ const leftPadding = horizontalPadding < 20 ? 20 : horizontalPadding;
288
+ this.chart = new Chart({
289
+ container: this.container,
280
290
  width: containerWidth,
281
291
  height: containerHeight,
282
292
  padding: [0, horizontalPadding, 0, leftPadding]
283
293
  });
284
- _this.chart.on('element:click', function (e) {
285
- var statItem = _this.props.statItem;
286
- var data = e.data.data;
287
- var clickData = _this.calculateData.find(function (i) {
288
- return i.name === data.name;
289
- });
294
+ this.chart.on('element:click', e => {
295
+ const {
296
+ statItem
297
+ } = this.props;
298
+ const data = e.data.data;
299
+ const clickData = this.calculateData.find(i => i.name === data.name);
290
300
  if (clickData) {
291
- _this.props.toggleStatisticRecordsDialog(clickData, statItem);
301
+ this.props.toggleStatisticRecordsDialog(clickData, statItem);
292
302
  }
293
303
  });
294
- _this.chart.tooltip({
304
+ this.chart.tooltip({
295
305
  showTitle: false,
296
306
  showMarkers: false,
297
307
  shared: true,
298
308
  containerTpl: '<div class="g2-tooltip"><div class="g2-tooltip-list"></div></div>',
299
309
  itemTpl: '<div class="g2-tooltip-content"><div class="tooltip-name">{name}<div><div class="tooltip-item">数量: {value}<div></div>',
300
310
  domStyles: {
301
- 'g2-tooltip': _this.getDefaultChartStyleByKey('g2-tooltip'),
302
- 'tooltip-item': _this.getDefaultChartStyleByKey('tooltip-item')
311
+ 'g2-tooltip': this.getDefaultChartStyleByKey('g2-tooltip'),
312
+ 'tooltip-item': this.getDefaultChartStyleByKey('tooltip-item')
303
313
  }
304
314
  });
305
- _this.chart.scale({
315
+ this.chart.scale({
306
316
  longitude: {
307
317
  sync: true
308
318
  },
@@ -310,14 +320,14 @@ var Map = /*#__PURE__*/function (_BaseChart) {
310
320
  sync: true
311
321
  }
312
322
  });
313
- _this.chart.axis(false);
314
- _this.dataSet = new DataSet();
323
+ this.chart.axis(false);
324
+ this.dataSet = new DataSet();
315
325
 
316
326
  // transform map data
317
- var mapData = _this.dataSet.createView('mapDataModel').source(geolocation, {
327
+ const mapData = this.dataSet.createView('mapDataModel').source(geolocation, {
318
328
  type: 'GeoJSON'
319
329
  });
320
- var mapView = _this.chart.createView();
330
+ const mapView = this.chart.createView();
321
331
 
322
332
  // draw background map
323
333
  mapView.data(mapData.rows);
@@ -327,109 +337,99 @@ var Map = /*#__PURE__*/function (_BaseChart) {
327
337
  stroke: '#bdbdbd',
328
338
  lineWidth: 1
329
339
  });
330
- _this.dataSet.createView('statisticViewModel');
340
+ this.dataSet.createView('statisticViewModel');
331
341
  mapView.render();
332
342
  };
333
- _this.state = {
343
+ this.state = {
334
344
  isDataLoaded: false,
335
345
  isCalculatingData: true
336
346
  };
337
- _this.calculateData = null;
338
- return _this;
347
+ this.calculateData = null;
339
348
  }
340
- _createClass(Map, [{
341
- key: "componentDidMount",
342
- value: function componentDidMount() {
343
- var _this2 = this;
344
- var _this$props3 = this.props,
345
- statItem = _this$props3.statItem,
346
- chartCalculator = _this$props3.chartCalculator;
347
- var map_location = statItem.map_location;
348
- var mapLevel = this.getMapLevel(statItem);
349
- this.props.queryMapJson({
350
- map_level: mapLevel,
351
- map_location: map_location
352
- }, function (mapJson) {
353
- _this2.setState({
354
- isDataLoaded: true
355
- }, function () {
356
- if (!mapJson) return;
357
- _this2.geoData = mapJson;
358
- _this2.initStatisticContext(mapJson);
359
- if (_this2.container) {
360
- chartCalculator.calculate(statItem).then(function (data) {
361
- _this2.calculateData = data;
362
- _this2.updateStatisticData(_this2.fixData(data));
363
- _this2.setState({
364
- isCalculatingData: false
365
- });
349
+ componentDidMount() {
350
+ const {
351
+ statItem,
352
+ chartCalculator
353
+ } = this.props;
354
+ const {
355
+ map_location
356
+ } = statItem;
357
+ const mapLevel = this.getMapLevel(statItem);
358
+ this.props.queryMapJson({
359
+ map_level: mapLevel,
360
+ map_location
361
+ }, mapJson => {
362
+ this.setState({
363
+ isDataLoaded: true
364
+ }, () => {
365
+ if (!mapJson) return;
366
+ this.geoData = mapJson;
367
+ this.initStatisticContext(mapJson);
368
+ if (this.container) {
369
+ chartCalculator.calculate(statItem).then(data => {
370
+ this.calculateData = data;
371
+ this.updateStatisticData(this.fixData(data));
372
+ this.setState({
373
+ isCalculatingData: false
366
374
  });
367
- }
368
- });
375
+ });
376
+ }
369
377
  });
378
+ });
379
+ }
380
+ shouldComponentUpdate(nextProps, nextState) {
381
+ if (this.canUpdate(this.props, nextProps) && nextState.isDataLoaded === this.state.isDataLoaded) {
382
+ return true;
370
383
  }
371
- }, {
372
- key: "shouldComponentUpdate",
373
- value: function shouldComponentUpdate(nextProps, nextState) {
374
- if (this.canUpdate(this.props, nextProps) && nextState.isDataLoaded === this.state.isDataLoaded) {
375
- return true;
376
- }
377
- if (nextState.isCalculatingData !== this.state.isCalculatingData) {
378
- return true;
379
- }
380
- return false;
384
+ if (nextState.isCalculatingData !== this.state.isCalculatingData) {
385
+ return true;
381
386
  }
382
- }, {
383
- key: "componentDidUpdate",
384
- value: function componentDidUpdate(preProps, preState) {
385
- var _this3 = this;
386
- if (!this.chart || !this.dataSet) return;
387
- var statItem = this.props.statItem;
388
- var isCalculatingData = this.state.isCalculatingData;
389
- if (isCalculatingData !== preState.isCalculatingData) return;
390
- if (this.shouldCalculateStatItem(preProps, this.props)) {
391
- this.setState({
392
- isCalculatingData: true
387
+ return false;
388
+ }
389
+ componentDidUpdate(preProps, preState) {
390
+ if (!this.chart || !this.dataSet) return;
391
+ const {
392
+ statItem
393
+ } = this.props;
394
+ const {
395
+ isCalculatingData
396
+ } = this.state;
397
+ if (isCalculatingData !== preState.isCalculatingData) return;
398
+ if (this.shouldCalculateStatItem(preProps, this.props)) {
399
+ this.setState({
400
+ isCalculatingData: true
401
+ });
402
+ if (this.hasMapChanged(preProps.statItem, statItem)) {
403
+ this.props.queryMapJson({
404
+ map_level: this.getMapLevel(statItem),
405
+ map_location: statItem.map_location
406
+ }, mapJson => {
407
+ if (!mapJson) return;
408
+ this.geoData = mapJson;
409
+ this.reCalculateChart(statItem);
393
410
  });
394
- if (this.hasMapChanged(preProps.statItem, statItem)) {
395
- this.props.queryMapJson({
396
- map_level: this.getMapLevel(statItem),
397
- map_location: statItem.map_location
398
- }, function (mapJson) {
399
- if (!mapJson) return;
400
- _this3.geoData = mapJson;
401
- _this3.reCalculateChart(statItem);
402
- });
403
- } else {
404
- this.container && this.reCalculateChart(statItem);
405
- }
406
411
  } else {
407
- this.updateStatisticData(this.fixData(this.calculateData));
412
+ this.container && this.reCalculateChart(statItem);
408
413
  }
414
+ } else {
415
+ this.updateStatisticData(this.fixData(this.calculateData));
409
416
  }
410
- }, {
411
- key: "componentWillUnmount",
412
- value: function componentWillUnmount() {
413
- this.container = null;
414
- this.setState = function () {};
415
- }
416
- }, {
417
- key: "render",
418
- value: function render() {
419
- var _this4 = this;
420
- var _this$state = this.state,
421
- isDataLoaded = _this$state.isDataLoaded,
422
- isCalculatingData = _this$state.isCalculatingData;
423
- return /*#__PURE__*/React.createElement(React.Fragment, null, (!isDataLoaded || isCalculatingData) && this.renderLoading(), /*#__PURE__*/React.createElement("div", {
424
- ref: function ref(_ref) {
425
- return _this4.container = _ref;
426
- },
427
- className: "statistic-chart-container map d-flex justify-content-around align-items-center w-100 h-100"
428
- }));
429
- }
430
- }]);
431
- return Map;
432
- }(BaseChart);
417
+ }
418
+ componentWillUnmount() {
419
+ this.container = null;
420
+ this.setState = () => {};
421
+ }
422
+ render() {
423
+ const {
424
+ isDataLoaded,
425
+ isCalculatingData
426
+ } = this.state;
427
+ return /*#__PURE__*/React.createElement(React.Fragment, null, (!isDataLoaded || isCalculatingData) && this.renderLoading(), /*#__PURE__*/React.createElement("div", {
428
+ ref: ref => this.container = ref,
429
+ className: "statistic-chart-container map d-flex justify-content-around align-items-center w-100 h-100"
430
+ }));
431
+ }
432
+ }
433
433
  Map.propTypes = {
434
434
  isPreview: PropTypes.bool,
435
435
  statItem: PropTypes.object,