sea-chart 2.0.36 → 2.0.37

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 (84) hide show
  1. package/dist/api/index.js +59 -17
  2. package/dist/assets/css/sea-chart-d3-tooltip.css +1 -0
  3. package/dist/components/color-popover/color-rules-popover.js +2 -4
  4. package/dist/components/drill-down-settings/drill-down-fields-popover/index.js +4 -5
  5. package/dist/components/icon/index.js +13 -9
  6. package/dist/components/number-input/index.js +13 -7
  7. package/dist/components/popover/hide-column-popover/hide-column-popover-widgets/hide-column-item.js +3 -7
  8. package/dist/components/popover/hide-column-popover/hide-column-popover.css +1 -5
  9. package/dist/components/popover/hide-column-popover/hide-column-popover.js +4 -2
  10. package/dist/components/popover/sort-popover/sort-popover.js +7 -6
  11. package/dist/components/statistic-record-dialog/index.js +8 -9
  12. package/dist/components/tooltip/index.js +8 -26
  13. package/dist/editor/index.js +1 -5
  14. package/dist/locale/lang/de.js +0 -1
  15. package/dist/locale/lang/en.js +0 -1
  16. package/dist/locale/lang/es.js +0 -1
  17. package/dist/locale/lang/fr.js +0 -1
  18. package/dist/locale/lang/pt.js +0 -1
  19. package/dist/locale/lang/ru.js +0 -1
  20. package/dist/locale/lang/zh_CN.js +0 -1
  21. package/dist/model/funnel.js +2 -2
  22. package/dist/model/map-bubble.js +0 -4
  23. package/dist/services/map-json.js +0 -3
  24. package/dist/settings/advance-bar-settings/data-settings.js +1 -1
  25. package/dist/settings/advance-bar-settings/style-settings.js +3 -4
  26. package/dist/settings/bar-settings/data-settings.js +1 -1
  27. package/dist/settings/bar-settings/style-settings.js +2 -2
  28. package/dist/settings/basic-number-card/data-settings.js +2 -3
  29. package/dist/settings/combination-settings/data-settings.js +1 -0
  30. package/dist/settings/combination-settings/style-settings.js +2 -2
  31. package/dist/settings/dashboard-settings/data-settings.js +2 -3
  32. package/dist/settings/funnel-settings/components/funnel-layer-setting.js +7 -7
  33. package/dist/settings/index.js +3 -8
  34. package/dist/settings/table-element-settings/components/data-filter.js +25 -24
  35. package/dist/settings/table-element-settings/index.css +31 -1
  36. package/dist/settings/table-settings/data-settings.js +2 -3
  37. package/dist/settings/time-comparison-settings/style-settings.js +2 -2
  38. package/dist/settings/widgets/basic-summary/index.js +7 -8
  39. package/dist/settings/widgets/common-data-settings.js +6 -7
  40. package/dist/settings/widgets/data-filter/index.js +22 -30
  41. package/dist/settings/widgets/group-by.js +3 -4
  42. package/dist/settings/widgets/summary-settings.js +2 -3
  43. package/dist/settings/widgets/y-axis-group-settings.js +2 -3
  44. package/dist/utils/cell-format-utils.js +7 -9
  45. package/dist/utils/chart-utils/base-utils.js +86 -194
  46. package/dist/utils/chart-utils/index.js +3 -5
  47. package/dist/utils/chart-utils/original-data-utils/basic-chart-calculator.js +5 -5
  48. package/dist/utils/chart-utils/original-data-utils/card-calculator.js +2 -8
  49. package/dist/utils/chart-utils/original-data-utils/dashboard-calculator.js +3 -12
  50. package/dist/utils/chart-utils/original-data-utils/pivot-table-calculator.js +1 -4
  51. package/dist/utils/chart-utils/original-data-utils/scatter-calculator.js +0 -1
  52. package/dist/utils/chart-utils/original-data-utils/trend-calculator.js +3 -24
  53. package/dist/utils/chart-utils/sql-statistics-utils.js +177 -182
  54. package/dist/utils/column-utils.js +7 -20
  55. package/dist/utils/contexts.js +2 -5
  56. package/dist/utils/index.js +4 -25
  57. package/dist/utils/row-record-utils.js +20 -100
  58. package/dist/utils/sql/column-2-sql-column.js +10 -10
  59. package/dist/utils/trend-utils.js +2 -15
  60. package/dist/view/index.css +8 -2
  61. package/dist/view/index.js +9 -14
  62. package/dist/view/wrapper/area-group.js +7 -15
  63. package/dist/view/wrapper/bar-compare.js +2 -18
  64. package/dist/view/wrapper/bar-custom-stack.js +9 -35
  65. package/dist/view/wrapper/bar-group.js +26 -55
  66. package/dist/view/wrapper/bar-stack.js +2 -2
  67. package/dist/view/wrapper/basic-number-card.js +3 -27
  68. package/dist/view/wrapper/chart-component.js +440 -43
  69. package/dist/view/wrapper/completeness-group.js +49 -104
  70. package/dist/view/wrapper/dashboard.js +18 -68
  71. package/dist/view/wrapper/horizontal-bar-group.js +6 -26
  72. package/dist/view/wrapper/horizontal-bar-stack.js +2 -2
  73. package/dist/view/wrapper/line-group.js +3 -8
  74. package/dist/view/wrapper/map-world-bubble.js +0 -1
  75. package/dist/view/wrapper/map-world.js +0 -1
  76. package/dist/view/wrapper/pie.js +1 -1
  77. package/dist/view/wrapper/ring.js +1 -1
  78. package/dist/view/wrapper/scatter.js +6 -8
  79. package/dist/view/wrapper/table/two-dimension-table.js +2 -3
  80. package/dist/view/wrapper/table-element/components/records-header/index.js +1 -0
  81. package/dist/view/wrapper/table-element/components/resize-column-handle/resize-column-handle.js +1 -3
  82. package/dist/view/wrapper/table-element/index.js +21 -16
  83. package/dist/view/wrapper/trend.js +1 -24
  84. package/package.json +14 -17
@@ -39,11 +39,10 @@ class Completeness extends _chartComponent.default {
39
39
  this.initChart(this.container, chart === null || chart === void 0 ? void 0 : chart.id, initConfig);
40
40
  };
41
41
  this.drawChart = () => {
42
- var _this$props$chart, _this$props$chart$con;
43
42
  let {
44
43
  result: data
45
44
  } = this.props;
46
- data = _utils.BaseUtils.formatEmptyName(data, (_this$props$chart = this.props.chart) === null || _this$props$chart === void 0 ? void 0 : (_this$props$chart$con = _this$props$chart.config) === null || _this$props$chart$con === void 0 ? void 0 : _this$props$chart$con.column_groupby_column_key, _intl.default.get('Empty'));
45
+ data = _utils.BaseUtils.formatEmptyName(data, '', _intl.default.get('Empty'));
47
46
  if (!Array.isArray(data)) return;
48
47
  this.draw(data);
49
48
  };
@@ -71,20 +70,12 @@ class Completeness extends _chartComponent.default {
71
70
  } = this.chartBoundingClientRect;
72
71
  this.markLastForCompleteness(data);
73
72
  const colors = _utils.BaseUtils.getCurrentTheme(chartColorTheme).colors;
74
- // Normalize groupby to string before setColorMap to ensure consistent keys
75
- data.forEach(item => {
76
- if (Array.isArray(item.groupby)) {
77
- item.groupby = item.groupby.join(', ');
78
- }
79
- });
80
73
  this.setColorMap(data, chartColorTheme, 'groupby', columnGroupbyColumn, chart);
81
74
  const newSeries = this.getGroupSeries(data, columnGroupbyColumn, chart);
82
75
 
83
76
  // Y axis
84
77
  const fy = d3.scaleBand().domain(newSeries.map(item => item[0])).range([chartHeight - insertPadding, insertPadding]).paddingInner(0.5).paddingOuter(0.1);
85
-
86
- // y scale will be created per main group (local) to avoid overlap
87
-
78
+ const y = d3.scaleBand().domain(new Set(data.map(d => d.groupby))).range([0, fy.bandwidth()]).paddingInner(0).paddingOuter(0);
88
79
  const yAxis = this.chart.append('g').attr('class', 'y-axis-wrapper').call(d3.axisLeft(fy).tickSizeOuter(0).tickPadding(0).tickSizeInner(5)).call(g => {
89
80
  g.selectAll('.domain').attr('stroke', theme.XAxisColor);
90
81
  g.selectAll('.tick line').attr('stroke', theme.XAxisColor);
@@ -112,64 +103,38 @@ class Completeness extends _chartComponent.default {
112
103
 
113
104
  // Rect group
114
105
  const contentWrapper = this.chart.append('g').attr('class', 'content-wrapper').attr('transform', "translate(".concat(Number(yAxis.node().getAttribute('data-axisWidth')), ", 0)"));
115
- const mainGroups = contentWrapper.selectAll().data(newSeries).join('g').attr('transform', _ref => {
116
- let [name] = _ref;
117
- return "translate(0, ".concat(fy(name), ")");
106
+ contentWrapper.selectAll().data(newSeries).join('g').attr('transform', _ref => {
107
+ let [name, dum] = _ref;
108
+ const offset = (fy.bandwidth() - dum.length * y.bandwidth()) / 2;
109
+ return "translate(0, ".concat(fy(name) + offset, ")");
118
110
  }).attr('data-transform', _ref2 => {
119
- let [name] = _ref2;
120
- return "".concat(fy(name));
121
- });
122
- const colorMap = this.colorMap;
123
- const self = this;
124
-
125
- // Calculate max sub group count across all main groups for uniform bar height
126
- const maxSubGroupCount = Math.max(...newSeries.map(_ref3 => {
127
- let [_, subGroups] = _ref3;
128
- return subGroups.length;
129
- }));
130
- const uniformBandwidth = fy.bandwidth() / maxSubGroupCount;
131
- mainGroups.each(function (_ref4) {
132
- let [mainGroupName, subGroups] = _ref4;
133
- const mainGroupNode = d3.select(this);
134
-
135
- // Create local y scale for this main group, using uniform bandwidth
136
- const localY = d3.scaleBand().domain(subGroups.map(sg => sg[0])).range([0, uniformBandwidth * subGroups.length]).paddingInner(0).paddingOuter(0);
137
- mainGroupNode.selectAll().data(subGroups).join('g').attr('data-completedRate', _ref5 => {
138
- var _restItem$rawData, _completedItem$rawDat;
139
- let [_, d] = _ref5;
140
- const restItem = d.find(item => item.key === 'rest');
141
- const completedItem = d.find(item => item.key === 'completed');
142
- const restValue = restItem ? Number(((_restItem$rawData = restItem.rawData) === null || _restItem$rawData === void 0 ? void 0 : _restItem$rawData.value) || 0) : 0;
143
- const completedValue = completedItem ? Number(((_completedItem$rawDat = completedItem.rawData) === null || _completedItem$rawDat === void 0 ? void 0 : _completedItem$rawDat.value) || 0) : 0;
144
- const targetValue = restValue + completedValue;
145
- if (!targetValue) return '';
146
- return "".concat(Math.round(completedValue / targetValue * 100), "%");
147
- }).selectAll().data(_ref6 => {
148
- let [_, d] = _ref6;
149
- return d;
150
- }).join('rect').attr('class', 'rect').attr('opacity', 1).attr('x', d => x(d[0]) - Number(yAxis.node().getAttribute('data-axisWidth'))).attr('y', d => localY(d.groupby)).attr('data-y', d => localY(d.groupby)).attr('width', d => x(d[1]) - x(d[0])).attr('height', localY.bandwidth()).attr('fill', d => {
151
- const key = d.key;
152
- const groupby = d.groupby;
153
- if (key === 'rest') {
154
- return '#bdbdbd';
155
- }
156
- if (column_groupby_column_key) {
157
- return colorMap[groupby];
158
- }
159
- return colors[0];
160
- }).attr('data-value', d => d.rawData.value).attr('data-groupName', d => d.rawData.slugId).attr('data-tooltipTitle', d => d.rawData.name).attr('data-tooltipName', d => d.key).attr('data-groupBy', d => d.groupby).on('click', (event, data) => {
161
- self.props.toggleRecords(data);
162
- }).on('mouseover', event => {
163
- self.showTooltip(event);
164
- self.handleAcitveAndInActiveState('inActive', event);
165
- }).on('mousemove', event => {
166
- self.moveTooltip(event);
167
- }).on('mouseleave', event => {
168
- self.hiddenTooltip();
169
- self.handleAcitveAndInActiveState('active', event);
170
- });
171
- });
172
- mainGroups.call(g => {
111
+ let [name, dum] = _ref2;
112
+ const offset = (fy.bandwidth() - dum.length * y.bandwidth()) / 2;
113
+ return "".concat(fy(name) + offset);
114
+ }).selectAll().data(_ref3 => {
115
+ let [groupKey] = _ref3;
116
+ const curSeriesData = newSeries.find(item => item[0] === groupKey);
117
+ return curSeriesData[1];
118
+ }).join('g').attr('data-completedRate', _ref4 => {
119
+ let [_, d] = _ref4;
120
+ const restData = d.find(item => item.rawData.group_name === 'rest');
121
+ const completedRate = restData.rawData.completedRate;
122
+ if (completedRate === 'empty') return '';
123
+ return completedRate + '%';
124
+ }).selectAll().data(_ref5 => {
125
+ let [_, d] = _ref5;
126
+ return d;
127
+ }).join('rect').attr('class', 'rect').attr('opacity', 1).attr('x', d => x(d[0]) - Number(yAxis.node().getAttribute('data-axisWidth'))).attr('y', d => y.bandwidth() * d.serieIndex).attr('data-y', d => y.bandwidth() * d.serieIndex).attr('width', d => x(d[1]) - x(d[0])).attr('height', y.bandwidth()).attr('fill', d => {
128
+ const key = d.key;
129
+ const groupby = d.rawData.groupby;
130
+ if (key === 'rest') {
131
+ return '#bdbdbd';
132
+ }
133
+ if (column_groupby_column_key) {
134
+ return this.colorMap[groupby];
135
+ }
136
+ return colors[0];
137
+ }).attr('data-value', d => d.rawData.value).attr('data-groupName', d => d.rawData.slugId).attr('data-tooltipTitle', d => d.rawData.name).attr('data-tooltipName', d => d.key).attr('data-groupBy', d => d.rawData.groupby).call(g => {
173
138
  // add rect borderRadius
174
139
  const allGroup = this.getAllGroup(contentWrapper);
175
140
  allGroup.forEach(group => {
@@ -198,6 +163,16 @@ class Completeness extends _chartComponent.default {
198
163
  });
199
164
  });
200
165
  }
166
+ }).on('click', (event, data) => {
167
+ this.props.toggleRecords(data);
168
+ }).on('mouseover', event => {
169
+ this.showTooltip(event);
170
+ this.handleAcitveAndInActiveState('inActive', event);
171
+ }).on('mousemove', event => {
172
+ this.moveTooltip(event);
173
+ }).on('mouseleave', (event, data) => {
174
+ this.hiddenTooltip();
175
+ this.handleAcitveAndInActiveState('active', event);
201
176
  });
202
177
  this.setLegend({
203
178
  legendName: 'groupby',
@@ -280,64 +255,34 @@ class Completeness extends _chartComponent.default {
280
255
  };
281
256
  this.getGroupSeries = (data, columnGroupbyColumn, chart) => {
282
257
  const sortedData = _utils.BaseUtils.sortDataByGroupName((0, _lodashEs.cloneDeep)(data), 'groupby', columnGroupbyColumn, chart);
283
- sortedData.forEach(item => {
284
- if (Array.isArray(item.groupby)) {
285
- item.groupby = item.groupby.join(', ');
286
- }
287
- });
288
258
  const groups = d3.groups(sortedData, d => d.name);
289
- // Sort main groups by name for stable order
290
- groups.sort((a, b) => String(a[0]).localeCompare(String(b[0])));
291
259
  groups.forEach((item, index) => {
292
260
  const itemData = (0, _lodashEs.cloneDeep)(item[1]);
293
- const valueMap = d3.rollup(itemData, v => d3.sum(v, d => d.value), d => d.groupby, d => d.group_name);
294
- const rawDataMap = d3.rollup(itemData, v => v[0], d => d.groupby, d => d.group_name);
295
261
 
296
262
  // get series
297
- const series = d3.stack().keys(d3.union(itemData.map(d => d.group_name))).value((_ref7, key) => {
298
- let [_, group] = _ref7;
299
- return group.get(key) || 0;
300
- })(valueMap);
263
+ const series = d3.stack().keys(d3.union(itemData.map(d => d.group_name))).value((_ref6, key) => {
264
+ var _group$get;
265
+ let [_, group] = _ref6;
266
+ return ((_group$get = group.get(String(key))) === null || _group$get === void 0 ? void 0 : _group$get.value) || 0;
267
+ })(d3.index(itemData, d => d.groupby, d => d.group_name));
301
268
  item[1] = d3.groups(itemData, d => d.groupby);
302
- // Sort sub groups by groupby for stable order
303
- item[1].sort((a, b) => String(a[0]).localeCompare(String(b[0])));
304
269
  item[1].forEach((group, index) => {
305
- var _completedItem$rawDat2, _restItem$rawData2;
306
270
  const groupKey = group[0];
307
271
  group[1] = [];
308
272
  series.forEach(serie => {
309
273
  const serieKey = serie.key;
310
274
  serie.forEach(item => {
311
275
  if (item.data[0] === groupKey) {
312
- var _valueMap$get, _rawDataMap$get;
313
- const aggregatedValue = ((_valueMap$get = valueMap.get(groupKey)) === null || _valueMap$get === void 0 ? void 0 : _valueMap$get.get(serieKey)) || 0;
314
- const rawData = (_rawDataMap$get = rawDataMap.get(groupKey)) === null || _rawDataMap$get === void 0 ? void 0 : _rawDataMap$get.get(serieKey);
315
276
  const newItem = {
316
277
  ...item,
317
278
  key: serieKey,
318
279
  serieIndex: index,
319
- groupby: groupKey,
320
- rawData: {
321
- ...(rawData || {}),
322
- value: aggregatedValue,
323
- groupby: groupKey,
324
- group_name: serieKey
325
- }
280
+ rawData: item.data[1].get(serieKey)
326
281
  };
327
282
  group[1].push(newItem);
328
283
  }
329
284
  });
330
285
  });
331
- const completedItem = group[1].find(d => d.key === 'completed');
332
- const restItem = group[1].find(d => d.key === 'rest');
333
- const completedValue = completedItem ? Number(((_completedItem$rawDat2 = completedItem.rawData) === null || _completedItem$rawDat2 === void 0 ? void 0 : _completedItem$rawDat2.value) || 0) : 0;
334
- const restValue = restItem ? Number(((_restItem$rawData2 = restItem.rawData) === null || _restItem$rawData2 === void 0 ? void 0 : _restItem$rawData2.value) || 0) : 0;
335
- const targetValue = completedValue + restValue;
336
- if (!targetValue) {
337
- restItem && (restItem.rawData.completedRate = 'empty');
338
- } else {
339
- restItem && (restItem.rawData.completedRate = Math.round(completedValue / targetValue * 100));
340
- }
341
286
  let sumValue = 0;
342
287
  group[1].forEach(g => {
343
288
  sumValue = sumValue + g[1];
@@ -17,28 +17,6 @@ var _chartComponent = _interopRequireDefault(require("./chart-component"));
17
17
  class Dashboard extends _chartComponent.default {
18
18
  constructor(props) {
19
19
  super(props);
20
- this.handleClickNumber = () => {
21
- const {
22
- toggleRecords,
23
- result
24
- } = this.props;
25
- if (!toggleRecords) return;
26
- if (typeof result === 'object' && result !== null && result.rows) {
27
- toggleRecords({
28
- rows: result.rows
29
- });
30
- } else {
31
- toggleRecords({
32
- isQueryBySql: true
33
- });
34
- }
35
- };
36
- this.componentDidMount = () => {
37
- this.createChart();
38
- this.drawChart();
39
- this.debouncedHandleResize = (0, _lodashEs.debounce)(this.handleResize, 300);
40
- window.addEventListener('resize', this.debouncedHandleResize);
41
- };
42
20
  this.handleResize = () => {
43
21
  this.destroyChart();
44
22
  this.createChart();
@@ -174,55 +152,21 @@ class Dashboard extends _chartComponent.default {
174
152
  const {
175
153
  height: chartHeight
176
154
  } = this.chartBoundingClientRect;
177
- const {
178
- toggleRecords
179
- } = this.props;
180
- const {
181
- font_size,
182
- font_color,
183
- font_weight,
184
- text_align,
185
- card_label_font_size,
186
- label_font_color,
187
- label_text_align,
188
- label_font_weight
189
- } = chart.config;
190
- const {
191
- width: chartWidth,
192
- height: fullChartHeight
193
- } = this.chartBoundingClientRect;
194
- const radius = Math.min(chartWidth, fullChartHeight) / 2 * 0.75;
195
- const alignOffset = radius * 0.25;
196
- const getTextAnchorAndX = align => {
197
- const v = (align || '').toLowerCase();
198
- if (v === 'left') {
199
- return {
200
- textAnchor: 'end',
201
- x: -alignOffset
202
- };
203
- }
204
- if (v === 'right') {
205
- return {
206
- textAnchor: 'start',
207
- x: alignOffset
208
- };
209
- }
210
- return {
211
- textAnchor: 'middle',
212
- x: 0
213
- };
214
- };
215
- const titleAlign = getTextAnchorAndX(label_text_align);
216
- const numberAlign = getTextAnchorAndX(text_align);
217
155
  const totalWrapper = d3.select(wrapper).append('g').attr('class', 'total-wrapper');
218
156
  // title
219
- totalWrapper.append('text').attr('fill', label_font_color || theme.textColor).attr('font-size', card_label_font_size || (chartHeight > 240 ? 20 : 12)).attr('font-weight', label_font_weight).attr('text-anchor', titleAlign.textAnchor).attr('x', titleAlign.x).text(name).attr('dy', 50);
157
+ totalWrapper.append('text').attr('fill', '#545454').attr('font-size', chartHeight > 240 ? 20 : 12).text(name).attr('dy', 50).call(g => {
158
+ const {
159
+ width
160
+ } = g.node().getBoundingClientRect();
161
+ g.attr('dx', "".concat(-(width / 2)));
162
+ });
220
163
 
221
164
  // total
222
- totalWrapper.append('text').attr('fill', font_color || theme.textColor).attr('font-size', font_size || (chartHeight > 240 ? 36 : 16)).attr('font-weight', font_weight).attr('text-anchor', numberAlign.textAnchor).attr('x', numberAlign.x).text("".concat(formatValue, "%")).attr('dy', 90).style('cursor', toggleRecords ? 'pointer' : 'default').on('click', () => {
223
- if (toggleRecords) {
224
- this.handleClickNumber();
225
- }
165
+ totalWrapper.append('text').attr('fill', theme.textColor).attr('font-size', chartHeight > 240 ? 36 : 16).text("".concat(formatValue, "%")).attr('dx', -10).attr('dy', 90).call(g => {
166
+ const {
167
+ width
168
+ } = g.node().getBoundingClientRect();
169
+ g.attr('dx', "".concat(-(width / 2)));
226
170
  });
227
171
  };
228
172
  this.chart = null;
@@ -231,6 +175,12 @@ class Dashboard extends _chartComponent.default {
231
175
  toolTipPosition: null
232
176
  };
233
177
  }
178
+ componentDidMount() {
179
+ this.createChart();
180
+ this.drawChart();
181
+ this.debouncedHandleResize = (0, _lodashEs.debounce)(this.handleResize, 300);
182
+ window.addEventListener('resize', this.debouncedHandleResize);
183
+ }
234
184
  componentDidUpdate(prevProps) {
235
185
  super.componentDidUpdate(prevProps);
236
186
  if (_utils.BaseUtils.shouldChartComponentUpdate(prevProps, this.props)) {
@@ -263,7 +213,7 @@ Dashboard.propTypes = {
263
213
  chart: _propTypes.default.object,
264
214
  groupbyColumn: _propTypes.default.object,
265
215
  summaryColumn: _propTypes.default.object,
266
- result: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.object]),
216
+ result: _propTypes.default.number,
267
217
  tables: _propTypes.default.array,
268
218
  globalTheme: _propTypes.default.string,
269
219
  chartColorTheme: _propTypes.default.string,
@@ -12,7 +12,6 @@ var _lodashEs = require("lodash-es");
12
12
  var _classnames = _interopRequireDefault(require("classnames"));
13
13
  var d3 = _interopRequireWildcard(require("d3"));
14
14
  var _dtableUtils = require("dtable-utils");
15
- var _dayjs = _interopRequireDefault(require("dayjs"));
16
15
  var _constants = require("../../constants");
17
16
  var _utils = require("../../utils");
18
17
  var _intl = _interopRequireDefault(require("../../intl"));
@@ -52,10 +51,7 @@ class HorizontalBarGroup extends _chartComponent.default {
52
51
  customRender,
53
52
  chart
54
53
  } = this.props;
55
- const {
56
- column_groupby_column_key
57
- } = chart.config || {};
58
- data = _utils.BaseUtils.formatEmptyName(data, column_groupby_column_key, _intl.default.get(_constants.EMPTY_NAME));
54
+ data = _utils.BaseUtils.formatEmptyName(data, '', _intl.default.get('Empty'));
59
55
  if (!Array.isArray(data)) return;
60
56
  const {
61
57
  sort_type,
@@ -96,24 +92,9 @@ class HorizontalBarGroup extends _chartComponent.default {
96
92
  marginRight
97
93
  } = this.chartBoundingClientRect;
98
94
  const groupByColumn = this.getColumn(tables, table_id, column_groupby_column_key);
99
- const isGroupByDate = [_dtableUtils.CellType.DATE, _dtableUtils.CellType.CTIME, _dtableUtils.CellType.MTIME].includes(groupByColumn === null || groupByColumn === void 0 ? void 0 : groupByColumn.type);
100
- if (isGroupByDate) {
101
- const emptyName = _intl.default.get(_constants.EMPTY_NAME);
102
- data = data.map(item => {
103
- const rawGroupName = item.group_name;
104
- if (rawGroupName === null || rawGroupName === undefined || rawGroupName === '') return item;
105
- if (rawGroupName === emptyName) return item;
106
- const dateValue = (0, _dayjs.default)(rawGroupName);
107
- if (!dateValue.isValid()) return item;
108
- return {
109
- ...item,
110
- group_name: dateValue.format('YYYY-MM-DD')
111
- };
112
- });
113
- }
114
95
  const useSingleSelectColumnColor = (groupByColumn === null || groupByColumn === void 0 ? void 0 : groupByColumn.type) === _dtableUtils.CellType.SINGLE_SELECT && color_theme === _colorRules.SUPPORT_SINGLE_SELECT_THEMES_OPTIONS.SINGLE_SELECT_COLUMN_COLORS;
115
96
  useSingleSelectColumnColor ? this.setSingleSelectColorMap(data) : this.setColorMap(data, chartColorTheme);
116
- const fy = d3.scaleBand().domain(new Set(data.map(d => d.name))).range([chartHeight - insertPadding, insertPadding]).paddingInner(0.3).paddingOuter(0.1);
97
+ const fy = d3.scaleBand().domain(new Set(data.map(d => d.name))).range([chartHeight - insertPadding, insertPadding]).paddingInner(0.5).paddingOuter(0.1);
117
98
  const sortedData = _utils.BaseUtils.sortDataByGroupName((0, _lodashEs.cloneDeep)(data), 'group_name', columnGroupbyColumn, chart);
118
99
  const y = d3.scaleBand().domain(new Set(sortedData.map(d => d.group_name))).range([0, fy.bandwidth()]).paddingInner(0).paddingOuter(0);
119
100
 
@@ -195,7 +176,7 @@ class HorizontalBarGroup extends _chartComponent.default {
195
176
  this.setLegend({
196
177
  legendName: 'group_name',
197
178
  theme,
198
- legendPosition: 'top-right',
179
+ legendPosition: 'top-left',
199
180
  data,
200
181
  groupColumn: this.props.columnGroupbyColumn,
201
182
  chart
@@ -224,11 +205,10 @@ class HorizontalBarGroup extends _chartComponent.default {
224
205
  title: !title && typeof title !== 'number' ? _intl.default.get(_constants.EMPTY_NAME) : title,
225
206
  items: children.map(child => {
226
207
  const data = child.__data__;
227
- const groupName = data.group_name === null || data.group_name === undefined || data.group_name === '' ? _intl.default.get(_constants.EMPTY_NAME) : data.group_name;
228
208
  return {
229
- color: this.colorMap[groupName] || _constants.CHART_STYLE_COLORS[0],
230
- name: groupName,
231
- value: _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(child.getAttribute('value')), horizontal_axis_summary_method)
209
+ color: this.colorMap[data.group_name] || _constants.CHART_STYLE_COLORS[0],
210
+ name: data.group_name,
211
+ value: _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(data.value), horizontal_axis_summary_method)
232
212
  };
233
213
  })
234
214
  };
@@ -49,7 +49,7 @@ class HorizontalBarStack extends _chartComponent.default {
49
49
  customRender,
50
50
  chart
51
51
  } = this.props;
52
- data = _utils.BaseUtils.formatEmptyName(data, chart.config.column_groupby_column_key, _intl.default.get('Empty'));
52
+ data = _utils.BaseUtils.formatEmptyName(data, '', _intl.default.get('Empty'));
53
53
  if (!Array.isArray(data)) return;
54
54
  const {
55
55
  sort_type,
@@ -95,7 +95,7 @@ class HorizontalBarStack extends _chartComponent.default {
95
95
  const series = d3.stack().keys(d3.union(sortedData.map(d => d.group_name))).value((_ref, key) => {
96
96
  var _group$get;
97
97
  let [_, group] = _ref;
98
- return ((_group$get = group.get(key)) === null || _group$get === void 0 ? void 0 : _group$get.value) || 0;
98
+ return ((_group$get = group.get(String(key))) === null || _group$get === void 0 ? void 0 : _group$get.value) || 0;
99
99
  })(d3.index(sortedData, d => d.name, d => d.group_name));
100
100
  const newSeries = this.handleSeries(series, sortedData);
101
101
  const y = d3.scaleBand().domain(new Set(data.map(d => d.name))).range([chartHeight - insertPadding, insertPadding]).paddingInner(0.5).paddingOuter(0.1);
@@ -50,7 +50,7 @@ class LineGroup extends _chartComponent.default {
50
50
  let {
51
51
  result: data
52
52
  } = this.props;
53
- data = _utils.BaseUtils.formatEmptyName(data, 'group_name', _intl.default.get('Empty'));
53
+ data = _utils.BaseUtils.formatEmptyName(data, '', _intl.default.get('Empty'));
54
54
  if (!Array.isArray(data)) return;
55
55
  this.draw(data);
56
56
  this.renderAxisLabel(this.props.chart, this.props.tables, this.container);
@@ -119,17 +119,12 @@ class LineGroup extends _chartComponent.default {
119
119
  const title = !data.name && typeof data.name !== 'number' ? _intl.default.get(_constants.EMPTY_NAME) : data.name;
120
120
  const circleList = (_contentWrapper$selec = contentWrapper.selectAll('circle')) === null || _contentWrapper$selec === void 0 ? void 0 : _contentWrapper$selec.nodes();
121
121
  const items = circleList.filter(circle => circle.getAttribute('data-name') === title).map(circle => {
122
- const groupName = circle.getAttribute('data-groupName') || _intl.default.get(_constants.EMPTY_NAME);
123
122
  return {
124
- color: this.colorMap[groupName],
125
- name: groupName,
123
+ color: this.colorMap[circle.getAttribute('data-groupName')],
124
+ name: circle.getAttribute('data-groupName'),
126
125
  value: _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, Number(circle.getAttribute('data-text')), y_axis_summary_method)
127
126
  };
128
127
  });
129
- items.sort((a, b) => String(a.name).localeCompare(String(b.name), undefined, {
130
- numeric: true,
131
- sensitivity: 'base'
132
- }));
133
128
  return {
134
129
  title,
135
130
  items
@@ -53,7 +53,6 @@ class MapBubble extends _chartComponent.default {
53
53
  };
54
54
  this.showTooltip = (event, data) => {
55
55
  const curData = data.find(item => item.name.includes(event.currentTarget.getAttribute('data-name')));
56
- if (!curData) return;
57
56
  const title = curData.nameType === 'en' ? curData.name : curData.name_cn;
58
57
  const value = Number(event.currentTarget.getAttribute('data-value'));
59
58
  const {
@@ -54,7 +54,6 @@ class Map extends _chartComponent.default {
54
54
  };
55
55
  this.showTooltip = (event, data) => {
56
56
  const curData = data.find(item => item.name.includes(event.target.parentNode.getAttribute('data-name')));
57
- if (!curData) return;
58
57
  const title = curData.nameType === 'en' ? curData.name : curData.name_cn;
59
58
  const value = Number(event.target.parentNode.getAttribute('data-value'));
60
59
  const {
@@ -33,7 +33,7 @@ class Pie extends _chartComponent.default {
33
33
  } = chart.config;
34
34
  const initConfig = {
35
35
  insertPadding: 30,
36
- rightLegendSpace: show_legend ? 50 : 0
36
+ rightLegendSpace: show_legend ? 150 : 0
37
37
  };
38
38
  this.initChart(this.container, chart === null || chart === void 0 ? void 0 : chart.id, initConfig);
39
39
  };
@@ -33,7 +33,7 @@ class Ring extends _chartComponent.default {
33
33
  } = chart.config;
34
34
  const initConfig = {
35
35
  insertPadding: 30,
36
- rightLegendSpace: show_legend ? 50 : 0
36
+ rightLegendSpace: show_legend ? 150 : 0
37
37
  };
38
38
  this.initChart(this.container, chart === null || chart === void 0 ? void 0 : chart.id, initConfig);
39
39
  };
@@ -27,7 +27,8 @@ class Scatter extends _chartComponent.default {
27
27
  };
28
28
  this.createChart = () => {
29
29
  const {
30
- chart
30
+ chart,
31
+ columnGroupbyColumn
31
32
  } = this.props;
32
33
  const {
33
34
  y_axis_show_label,
@@ -39,7 +40,7 @@ class Scatter extends _chartComponent.default {
39
40
  marginLeft: y_axis_show_label ? 20 : 0,
40
41
  marginBottom: x_axis_show_label ? 20 : 0,
41
42
  marginTop: y_axis_show_value ? 15 : 0,
42
- bottomLegendSpace: 0
43
+ bottomLegendSpace: columnGroupbyColumn ? 20 : 0
43
44
  };
44
45
  this.initChart(this.container, chart === null || chart === void 0 ? void 0 : chart.id, initConfig);
45
46
  };
@@ -60,11 +61,8 @@ class Scatter extends _chartComponent.default {
60
61
  this.transformStringToNumber = data => {
61
62
  const newData = (0, _lodashEs.cloneDeep)(data);
62
63
  newData.forEach(item => {
63
- if (item.original_value) {
64
- var _item$original_value, _item$original_value2;
65
- item.name = ((_item$original_value = item.original_value) === null || _item$original_value === void 0 ? void 0 : _item$original_value.name) || '';
66
- item.value = ((_item$original_value2 = item.original_value) === null || _item$original_value2 === void 0 ? void 0 : _item$original_value2.value) || 0;
67
- }
64
+ item.name = item.original_value.name;
65
+ item.value = item.original_value.value;
68
66
  });
69
67
  return newData;
70
68
  };
@@ -270,7 +268,7 @@ class Scatter extends _chartComponent.default {
270
268
  this.setLegend({
271
269
  legendName: 'groupby',
272
270
  theme,
273
- legendPosition: 'top-right',
271
+ legendPosition: 'top-left',
274
272
  data,
275
273
  groupColumn: this.props.columnGroupbyColumn,
276
274
  chart,
@@ -98,14 +98,13 @@ class TwoDimensionTable extends _react.PureComponent {
98
98
  className: "pivot-table-header"
99
99
  }), Array.isArray(pivot_columns) && pivot_columns.map((item, index) => {
100
100
  return /*#__PURE__*/_react.default.createElement("th", {
101
- key: "pivot-column-".concat(index),
102
101
  className: "pivot-table-header summary-columns-header"
103
102
  }, /*#__PURE__*/_react.default.createElement("div", {
104
103
  className: "pivot-table-header-summary-columns-container"
105
104
  }, summary_columns.map((column, idx) => {
106
105
  return /*#__PURE__*/_react.default.createElement("div", {
107
106
  className: (0, _classnames.default)('pivot-table-header'),
108
- key: "pivot-summary-column-".concat(idx)
107
+ key: "pivot-column-".concat(idx)
109
108
  }, /*#__PURE__*/_react.default.createElement(_pivotTableDisplayName.default, {
110
109
  value: column.name,
111
110
  column: column || {},
@@ -307,7 +306,7 @@ class TwoDimensionTable extends _react.PureComponent {
307
306
  cellIdx: cells.length
308
307
  }),
309
308
  title: rowTotal
310
- }, _utils.BaseUtils.isValidValue(rowTotal, display_empty) ? _utils.BaseUtils.getSummaryValueDisplayString(summaryColumn, rowTotal, summaryMethod) : /*#__PURE__*/_react.default.createElement("i", null), /*#__PURE__*/_react.default.createElement("span", {
309
+ }, _utils.BaseUtils.isValidValue(rowTotal, display_empty) ? (0, _utils.formatRowTotal)(rowTotal) : /*#__PURE__*/_react.default.createElement("i", null), /*#__PURE__*/_react.default.createElement("span", {
311
310
  className: (0, _classnames.default)({
312
311
  'selected-pivot-cell-border': isSelectedTotalCell
313
312
  })
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
+ var _contexts = require("../../../../../utils/contexts");
10
11
  var _recordsHeaderCell = _interopRequireDefault(require("./records-header-cell"));
11
12
  class RecordsHeader extends _react.Component {
12
13
  constructor() {
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
+ var _lodashEs = require("lodash-es");
9
10
  require("./index.css");
10
11
  class ResizeColumnHandle extends _react.Component {
11
12
  constructor() {
@@ -17,7 +18,6 @@ class ResizeColumnHandle extends _react.Component {
17
18
  window.removeEventListener('touchmove', this.onMouseMove);
18
19
  };
19
20
  this.onMouseDown = e => {
20
- e.stopPropagation();
21
21
  if (e.preventDefault) {
22
22
  e.preventDefault();
23
23
  }
@@ -27,14 +27,12 @@ class ResizeColumnHandle extends _react.Component {
27
27
  window.addEventListener('touchmove', this.onMouseMove);
28
28
  };
29
29
  this.onMouseUp = e => {
30
- e.stopPropagation();
31
30
  if (this.props.onDragEnd) {
32
31
  this.props.onDragEnd(e);
33
32
  }
34
33
  this.cleanUp();
35
34
  };
36
35
  this.onMouseMove = e => {
37
- e.stopPropagation();
38
36
  if (e.preventDefault) {
39
37
  e.preventDefault();
40
38
  }