sea-chart 2.0.10 → 2.0.11

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.
package/dist/api/index.js CHANGED
@@ -59,7 +59,7 @@ class SeaChartAPI {
59
59
  dtableUuid,
60
60
  accessToken
61
61
  } = _this;
62
- const url = dtableDB + 'api/v1/query/' + dtableUuid;
62
+ const url = dtableDB + '/api/v2/dtables/' + dtableUuid + '/sql/';
63
63
  const data = {
64
64
  sql,
65
65
  convert_keys,
@@ -324,6 +324,7 @@ class ChartDataSQL {
324
324
  const {
325
325
  x_axis_column_key,
326
326
  x_axis_geolocation_granularity,
327
+ x_axis_date_granularity,
327
328
  y_axis_summary_type,
328
329
  y_axis_summary_column_key,
329
330
  y_axis_summary_method,
@@ -339,7 +340,7 @@ class ChartDataSQL {
339
340
  }
340
341
  this._update_filter_sql(true, groupby_column);
341
342
  const groupby_column_name = this._chart_column_name_to_sql(groupby_column, {
342
- 'date_granularity': 'day',
343
+ 'date_granularity': x_axis_date_granularity,
343
344
  'geolocation_granularity': x_axis_geolocation_granularity
344
345
  });
345
346
  let summary_column_name = this._summary_column_2_sql('COUNT', groupby_column);
@@ -53,7 +53,7 @@ class BarCompare extends _chartComponent.default {
53
53
  const theme = _constants.CHART_THEME_COLOR[globalTheme];
54
54
  const {
55
55
  display_increase,
56
- y_axis_auto_range,
56
+ y_axis_auto_range = true,
57
57
  y_axis_min,
58
58
  y_axis_max
59
59
  } = chart.config;
@@ -63,10 +63,13 @@ class BarCompare extends _chartComponent.default {
63
63
  insertPadding
64
64
  } = this.chartBoundingClientRect;
65
65
  data = data.sort((a, b) => d3.ascending(a.name, b.name));
66
- const fx = d3.scaleBand().domain(d3.group(data, d => d.name).keys()).range([insertPadding, chartWidth - insertPadding]).paddingInner(0.1).paddingOuter(0.1);
66
+ const y = d3.scaleLinear().domain(y_axis_auto_range ? [0, d3.max(data, d => d.value)] : [y_axis_min, y_axis_max]).range([chartHeight - insertPadding, insertPadding]);
67
+
68
+ // Y axis
69
+ this.chart.append('g').attr('transform', "translate(".concat(insertPadding, ",0)")).call(d3.axisLeft(y).tickSizeInner(0).ticks(5).tickFormat(d => d)).call(g => this.drawYaxis(g, theme));
70
+ const fx = d3.scaleBand().domain(d3.group(data, d => d.name).keys()).range([insertPadding + this.horizontalOverflowOffset, chartWidth - insertPadding]).paddingInner(0.1).paddingOuter(0.1);
67
71
  const color = d3.scaleOrdinal().domain(d3.group(data, d => d.group_name).keys()).range(_chartUtils.BaseUtils.getCurrentTheme(chartColorTheme).colors).unknown('#ccc');
68
72
  const x = d3.scaleBand().domain(d3.group(data, d => d.group_name).keys()).range([0, fx.bandwidth()]);
69
- const y = d3.scaleLinear().domain(y_axis_auto_range ? [0, d3.max(data, d => d.value)] : [y_axis_min, y_axis_max]).range([chartHeight - insertPadding, insertPadding]);
70
73
 
71
74
  // X axis
72
75
  this.chart.append('g').attr('transform', "translate(0,".concat(chartHeight - insertPadding, ")")).call(d3.axisBottom(fx).tickSizeOuter(0).tickSizeInner(5)).call(g => {
@@ -76,15 +79,6 @@ class BarCompare extends _chartComponent.default {
76
79
  g.selectAll('text').attr('fill', theme.textColor);
77
80
  });
78
81
 
79
- // Y axis
80
- this.chart.append('g').attr('transform', "translate(".concat(insertPadding, ",0)")).call(d3.axisLeft(y).tickSizeInner(0).ticks(5).tickFormat(d => d)).call(g => {
81
- g.select('.domain').remove();
82
- g.selectAll('line').node() && g.selectAll('line').node().remove(); // delete the first line
83
- g.selectAll('.tick line').clone().attr('x2', chartWidth - insertPadding * 2).attr('stroke', theme.gridColor).attr('stroke-dasharray', '8,3');
84
- g.selectAll('text').attr('font-size', theme.fontSize);
85
- g.selectAll('text').attr('fill', theme.textColor);
86
- });
87
-
88
82
  // Rect group
89
83
  this.chart.append('g').attr('class', "rects-wrapper-".concat(chart === null || chart === void 0 ? void 0 : chart.id)).selectAll().data(() => d3.group(data, d => d.name)).join('g').attr('transform', _ref => {
90
84
  let [name, dum] = _ref;
@@ -141,12 +141,15 @@ class BarCustom extends _chartComponent.default {
141
141
  } = this.chartBoundingClientRect;
142
142
  const organizedData = this.organizeData(data);
143
143
  const color = d3.scaleOrdinal().domain(d3.group(data, d => d.group_name).keys()).range(_chartUtils.BaseUtils.getCurrentTheme(chartColorTheme).colors).unknown('#ccc');
144
- const fx = d3.scaleBand().domain(new Set(organizedData.map(d => d.name))).range([insertPadding, chartWidth - insertPadding]).paddingInner(0.1).paddingOuter(0.1);
145
- const x = d3.scaleBand().domain(new Set(data.map(d => d.y_axis_type))).range([0, fx.bandwidth()]);
146
144
  const allSeries = this.getAllSeries(organizedData);
147
145
  const niceEnd = d3.nice(0, d3.max(allSeries, d => d[1]), 5)[1];
148
146
  const y = d3.scaleLinear().domain([0, niceEnd]).range([chartHeight - insertPadding, insertPadding]);
149
147
 
148
+ // Y axis
149
+ this.chart.append('g').attr('transform', "translate(".concat(insertPadding, ",0)")).call(d3.axisLeft(y).tickSizeInner(0).ticks(5).tickFormat(d => d)).call(g => this.drawYaxis(g, theme));
150
+ const fx = d3.scaleBand().domain(new Set(organizedData.map(d => d.name))).range([insertPadding + this.horizontalOverflowOffset, chartWidth - insertPadding]).paddingInner(0.1).paddingOuter(0.1);
151
+ const x = d3.scaleBand().domain(new Set(data.map(d => d.y_axis_type))).range([0, fx.bandwidth()]);
152
+
150
153
  // X axis
151
154
  this.chart.append('g').attr('transform', "translate(0,".concat(chartHeight - insertPadding, ")")).call(d3.axisBottom(fx).tickSizeOuter(0).tickSizeInner(5)).call(g => {
152
155
  g.selectAll('.domain').attr('stroke', theme.XAxisColor);
@@ -155,15 +158,6 @@ class BarCustom extends _chartComponent.default {
155
158
  g.selectAll('text').attr('fill', theme.textColor);
156
159
  });
157
160
 
158
- // Y axis
159
- this.chart.append('g').attr('transform', "translate(".concat(insertPadding, ",0)")).call(d3.axisLeft(y).tickSizeInner(0).ticks(5).tickFormat(d => d)).call(g => {
160
- g.select('.domain').remove();
161
- g.selectAll('line').node() && g.selectAll('line').node().remove(); // delete the first line
162
- g.selectAll('.tick line').clone().attr('x2', chartWidth - insertPadding * 2).attr('stroke', theme.gridColor).attr('stroke-dasharray', '8,3');
163
- g.selectAll('text').attr('font-size', theme.fontSize);
164
- g.selectAll('text').attr('fill', theme.textColor);
165
- });
166
-
167
161
  // Rect group
168
162
  this.chart.append('g').attr('class', "rects-wrapper-".concat(chart === null || chart === void 0 ? void 0 : chart.id)).selectAll().data(organizedData).join('g').attr('transform', d => {
169
163
  const {
@@ -175,15 +169,13 @@ class BarCustom extends _chartComponent.default {
175
169
  name
176
170
  } = d;
177
171
  return fx(name);
178
- }).selectAll().data(d => d.stacks).join('g').attr('class', 'stackGroup').attr('data-slugid', d => d.slugid).selectAll().data(d => d.series).join('rect').attr('class', 'stack').attr('data-isTop', (_, index, arr) => {
179
- return index === arr.length - 1;
180
- }).attr('x', d => x(d.stackKey)).attr('y', d => y(d[0][1])).attr('width', x.bandwidth()).attr('height', d => {
172
+ }).selectAll().data(d => d.stacks).join('g').attr('class', 'stackGroup').attr('data-slugid', d => d.slugid).selectAll().data(d => d.series).join('rect').attr('class', 'stack').attr('x', d => x(d.stackKey)).attr('y', d => y(d[0][1])).attr('width', x.bandwidth()).attr('height', d => {
181
173
  const height = y(d[0][0]) - y(d[0][1]);
182
174
  return isNaN(height) ? 0 : height;
183
175
  }).attr('fill', d => color(d.key)).attr('data-value', d => d.stackData.value).attr('data-rectId', d => d.stackData.slugId).attr('data-groupName', d => d.stackData.group_name).attr('data-title', d => d.stackData.name).call(g => {
184
176
  // add rect borderRadius
185
177
  Array.from(g._parents).forEach(group => {
186
- const topRect = Array.from(group.children).find(rect => rect.getAttribute('data-isTop') === 'true');
178
+ const topRect = Array.from(group.children).reverse().find(rect => Number(rect.getAttribute('height')) !== 0);
187
179
  // Add mask rect
188
180
  if (topRect) {
189
181
  this.addMaskRect(group, topRect, x.bandwidth(), color);
@@ -225,6 +217,8 @@ class BarCustom extends _chartComponent.default {
225
217
  const theme = _constants.CHART_THEME_COLOR[globalTheme];
226
218
  Array.from(g._parents).forEach(group => {
227
219
  Array.from(group.children).forEach(rect => {
220
+ // The height is 0, and the label is not displayed.
221
+ if (Number(rect.getAttribute('height')) === 0) return;
228
222
  this.addLabelToRectCenter({
229
223
  container: rect.parentNode,
230
224
  x: Number(rect.getAttribute('x')),
@@ -105,10 +105,13 @@ class BarGroup extends _chartComponent.default {
105
105
  const useSingleSelectColumnColor = (column_groupby_column === null || column_groupby_column === void 0 ? void 0 : column_groupby_column.type) === _dtableUtils.CellType.SINGLE_SELECT && color_theme === _colorRules.SUPPORT_SINGLE_SELECT_THEMES_OPTIONS.SINGLE_SELECT_COLUMN_COLORS;
106
106
  useSingleSelectColumnColor ? this.setSingleSelectColorMap(data) : this.setColorMap(data, chartColorTheme); // use single select column color
107
107
 
108
- const fx = d3.scaleBand().domain(new Set(data.map(d => d.name))).range([insertPadding, chartWidth - insertPadding]).paddingInner(0.1);
109
- const x = d3.scaleBand().domain(new Set(data.map(d => d.group_name))).range([0, fx.bandwidth()]);
110
108
  const y = d3.scaleLinear().domain(y_axis_auto_range ? [0, d3.max(data, d => d.value)] : [y_axis_min, y_axis_max]).range([chartHeight - insertPadding, insertPadding + marginTop]);
111
109
 
110
+ // Y axis
111
+ this.chart.append('g').attr('transform', "translate(".concat(insertPadding, ",0)")).call(d3.axisLeft(y).tickSizeInner(0).ticks(5).tickFormat(d => d)).call(g => this.drawYaxis(g, theme));
112
+ const fx = d3.scaleBand().domain(new Set(data.map(d => d.name))).range([insertPadding + this.horizontalOverflowOffset, chartWidth - insertPadding]).paddingInner(0.1);
113
+ const x = d3.scaleBand().domain(new Set(data.map(d => d.group_name))).range([0, fx.bandwidth()]);
114
+
112
115
  // X axis
113
116
  this.chart.append('g').attr('transform', "translate(0,".concat(chartHeight - insertPadding, ")")).call(d3.axisBottom(fx).tickSizeOuter(0).tickSizeInner(5)).call(g => {
114
117
  g.selectAll('.domain').attr('stroke', theme.XAxisColor);
@@ -117,15 +120,6 @@ class BarGroup extends _chartComponent.default {
117
120
  g.selectAll('text').attr('fill', theme.textColor);
118
121
  });
119
122
 
120
- // Y axis
121
- this.chart.append('g').attr('transform', "translate(".concat(insertPadding, ",0)")).call(d3.axisLeft(y).tickSizeInner(0).ticks(5).tickFormat(d => d)).call(g => {
122
- g.select('.domain').remove();
123
- g.selectAll('line').node() && g.selectAll('line').node().remove(); // delete the first line
124
- g.selectAll('.tick line').clone().attr('x2', chartWidth - insertPadding * 2).attr('stroke', theme.gridColor).attr('stroke-dasharray', '8,3');
125
- g.selectAll('text').attr('font-size', theme.fontSize);
126
- g.selectAll('text').attr('fill', theme.textColor);
127
- });
128
-
129
123
  // Rect group
130
124
  this.chart.append('g').selectAll().data(d3.group(data, d => d.name)).join('g').attr('transform', _ref => {
131
125
  let [name, dum] = _ref;
@@ -106,10 +106,13 @@ class BarStack extends _chartComponent.default {
106
106
  let [_, group] = _ref;
107
107
  return (_group$get = group.get(String(key))) === null || _group$get === void 0 ? void 0 : _group$get.value;
108
108
  })(d3.index(data, d => d.name, d => d.group_name));
109
- const x = d3.scaleBand().domain(d3.group(data, d => d.name).keys()).range([insertPadding, chartWidth - insertPadding]).paddingInner(0.1).paddingOuter(0.1);
110
109
  const niceEnd = d3.nice(0, d3.max(series, d => d3.max(d, d => d[1])), 5)[1];
111
110
  const y = d3.scaleLinear().domain(y_axis_auto_range ? [0, niceEnd] : [y_axis_min, y_axis_max]).range([chartHeight - insertPadding, insertPadding + marginTop]);
112
111
 
112
+ // Y axis
113
+ this.chart.append('g').attr('transform', "translate(".concat(insertPadding, ",0)")).call(d3.axisLeft(y).tickSizeInner(0).ticks(5).tickFormat(d => d)).call(g => this.drawYaxis(g, theme));
114
+ const x = d3.scaleBand().domain(d3.group(data, d => d.name).keys()).range([insertPadding + this.horizontalOverflowOffset, chartWidth - insertPadding]).paddingInner(0.1).paddingOuter(0.1);
115
+
113
116
  // X axis
114
117
  this.chart.append('g').attr('transform', "translate(0,".concat(chartHeight - insertPadding, ")")).call(d3.axisBottom(x).tickSizeOuter(0).tickSizeInner(5)).call(g => {
115
118
  g.selectAll('.domain').attr('stroke', theme.XAxisColor);
@@ -118,15 +121,6 @@ class BarStack extends _chartComponent.default {
118
121
  g.selectAll('text').attr('fill', theme.textColor);
119
122
  });
120
123
 
121
- // Y axis
122
- this.chart.append('g').attr('transform', "translate(".concat(insertPadding, ",0)")).call(d3.axisLeft(y).tickSizeInner(0).ticks(5).tickFormat(d => d)).call(g => {
123
- g.select('.domain').remove();
124
- g.selectAll('line').node() && g.selectAll('line').node().remove(); // delete the first line
125
- g.selectAll('.tick line').clone().attr('x2', chartWidth - insertPadding * 2).attr('stroke', theme.gridColor).attr('stroke-dasharray', '8,3');
126
- g.selectAll('text').attr('font-size', theme.fontSize);
127
- g.selectAll('text').attr('fill', theme.textColor);
128
- });
129
-
130
124
  // Rect group
131
125
  this.rectsWrapper = this.chart.append('g').attr('class', "rects-wrapper-".concat(chart === null || chart === void 0 ? void 0 : chart.id));
132
126
  this.rectsWrapper.selectAll().data(series).join('g').attr('data-key', d => d.key).selectAll('rect').data(D => {
@@ -151,14 +145,23 @@ class BarStack extends _chartComponent.default {
151
145
  } = d;
152
146
  return data[0];
153
147
  }).call(g => {
148
+ const groupRects = this.handleGroupRects(series, g._parents);
149
+ groupRects.forEach(group => {
150
+ var _firstEl;
151
+ const reverseGroup = group.reverse();
152
+ let firstEl = reverseGroup[0]; // firstEl is top level rect
153
+ if (Number(firstEl.getAttribute('height')) === 0) {
154
+ firstEl = reverseGroup.slice(1).find(item => Number(item.getAttribute('height')) !== 0);
155
+ }
156
+ // Add mask rect
157
+ firstEl && this.addMaskRect((_firstEl = firstEl) === null || _firstEl === void 0 ? void 0 : _firstEl.parentNode, firstEl, x.bandwidth());
158
+ });
154
159
  const [topG] = g._parents.slice(-1);
155
- Array.from(topG.children).forEach(rect => {
160
+ Array.from(topG.children).forEach((rect, index) => {
156
161
  // Add label (get the total value of each stack)
157
162
  if (display_each_block_data) {
158
163
  this.addLabelByEachStack(data, topG, rect, x);
159
164
  }
160
- // Add mask rect
161
- this.addMaskRect(topG, rect, x.bandwidth());
162
165
  });
163
166
  // Add label
164
167
  if (y_axis_show_value) {
@@ -186,6 +189,19 @@ class BarStack extends _chartComponent.default {
186
189
  groupColumn: this.props.columnGroupbyColumn
187
190
  });
188
191
  };
192
+ // Horizontal stacking processing position vertical stacking
193
+ this.handleGroupRects = (series, gParents) => {
194
+ const groupRects = [];
195
+ const len = series[0].length;
196
+ for (let i = 0; i < len; i++) {
197
+ const rects = [];
198
+ gParents.forEach(item => {
199
+ rects.push(item.children[i]);
200
+ });
201
+ groupRects.push(rects);
202
+ }
203
+ return groupRects;
204
+ };
189
205
  this.showTooltip = event => {
190
206
  const offsetX = d3.pointer(event)[0];
191
207
  const offsetY = d3.pointer(event)[1];
@@ -284,6 +300,8 @@ class BarStack extends _chartComponent.default {
284
300
  const theme = _constants.CHART_THEME_COLOR[globalTheme];
285
301
  g._parents.forEach(group => {
286
302
  Array.from(group.children).forEach(rect => {
303
+ // The height is 0, and the label is not displayed.
304
+ if (Number(rect.getAttribute('height')) === 0) return;
287
305
  this.addLabelToRectCenter({
288
306
  container: group,
289
307
  x: Number(rect.getAttribute('x')),
@@ -153,21 +153,15 @@ class Bar extends _chartComponent.default {
153
153
  insertPadding,
154
154
  marginTop
155
155
  } = this.chartBoundingClientRect;
156
- const x = d3.scaleBand().domain(data.map(item => item.name)).range([insertPadding, chartWidth - insertPadding]).paddingInner(0.4).paddingOuter(0.1);
157
156
  const y = d3.scaleLinear().domain(y_axis_auto_range ? [0, d3.max(data, d => d.value)] : [y_axis_min, y_axis_max]).range([chartHeight - insertPadding, insertPadding + marginTop]);
157
+ this.chart.append('g').attr('transform', "translate(".concat(insertPadding, ", 0)")).call(d3.axisLeft(y).tickSizeInner(0).ticks(5).tickFormat(d => d)).call(g => this.drawYaxis(g, theme));
158
+ const x = d3.scaleBand().domain(data.map(item => item.name)).range([insertPadding + this.horizontalOverflowOffset, chartWidth - insertPadding]).paddingInner(0.4).paddingOuter(0.1);
158
159
  this.chart.append('g').attr('transform', "translate(0, ".concat(chartHeight - insertPadding, ")")).call(d3.axisBottom(x).tickSizeOuter(0).tickSizeInner(5)).call(g => {
159
160
  g.selectAll('.domain').attr('stroke', theme.XAxisColor);
160
161
  g.selectAll('.tick line').attr('stroke', theme.XAxisColor);
161
162
  g.selectAll('text').attr('font-size', theme.fontSize);
162
163
  g.selectAll('text').attr('fill', theme.textColor);
163
164
  });
164
- this.chart.append('g').attr('transform', "translate(".concat(insertPadding, ", 0)")).call(d3.axisLeft(y).tickSizeInner(0).ticks(5).tickFormat(d => d)).call(g => {
165
- g.select('.domain').remove();
166
- g.selectAll('line').node() && g.selectAll('line').node().remove(); // delete the first line
167
- g.selectAll('.tick line').clone().attr('x2', chartWidth - insertPadding * 2).attr('stroke', theme.gridColor).attr('stroke-dasharray', '8,3');
168
- g.selectAll('text').attr('font-size', theme.fontSize);
169
- g.selectAll('text').attr('fill', theme.textColor);
170
- });
171
165
  const rectsWrapper = this.chart.append('g').attr('class', "rects-wrapper-".concat(chart === null || chart === void 0 ? void 0 : chart.id));
172
166
  rectsWrapper.selectAll().data(data).join('rect').attr('fill', d => d3.color(this.getFillColor(d))).attr('data-x', d => x(d.name)).attr('data-y', d => y(d.value)).attr('data-width', x.bandwidth()).attr('data-value', d => d.value).attr('data-groupName', d => d.name).attr('data-slugid', d => d.slugId).attr('x', d => x(d.name)).attr('y', d => y(d.value)).attr('width', x.bandwidth()).attr('height', d => y(0) - y(d.value)).call(g => {
173
167
  g.nodes().forEach(path => {
@@ -783,6 +783,7 @@ class ChartComponent extends _react.Component {
783
783
  let allWidth = start;
784
784
  const groupsData = [];
785
785
  const newLegendData = (0, _lodashEs.cloneDeep)(legendData);
786
+ let lastIndex = 0;
786
787
  legendData.forEach((item, index) => {
787
788
  const virtualLegend = this.chart.append('g').attr('opacity', 0);
788
789
  virtualLegend.append('rect').attr('width', legendRectWidth).attr('height', legendRectHeight).attr('rx', r);
@@ -792,15 +793,16 @@ class ChartComponent extends _react.Component {
792
793
  } = virtualLegend.node().getBoundingClientRect();
793
794
  const itemWidth = index === legendData.length - 1 ? width : width + legendItemMargin; // last item no used margin
794
795
  allWidth = allWidth + itemWidth;
795
- if (allWidth >= end) {
796
- groupsData.push(newLegendData.slice(0, index));
797
- newLegendData.splice(0, index);
798
- allWidth = 0;
796
+ if (allWidth > end) {
797
+ groupsData.push(newLegendData.slice(0, index - lastIndex));
798
+ newLegendData.splice(0, index - lastIndex);
799
+ lastIndex = index;
800
+ allWidth = start + itemWidth;
799
801
  }
800
802
  virtualLegend.remove();
801
803
  });
802
804
  const restLegendItems = newLegendData.slice(0);
803
- groupsData.push(restLegendItems);
805
+ restLegendItems.length !== 0 && groupsData.push(restLegendItems);
804
806
  return groupsData;
805
807
  };
806
808
  this.getLegendBoundary = legendPosition => {
@@ -1162,6 +1164,44 @@ class ChartComponent extends _react.Component {
1162
1164
  clipPath.node().appendChild(clipRect.node());
1163
1165
  d3.select(rect).attr('clip-path', "url(#".concat(rectId, ")"));
1164
1166
  };
1167
+ this.drawYaxis = (g, theme) => {
1168
+ const {
1169
+ width: chartWidth,
1170
+ insertPadding
1171
+ } = this.chartBoundingClientRect;
1172
+ // remove domain
1173
+ g.select('.domain').remove();
1174
+
1175
+ // add text
1176
+ g.selectAll('text').attr('font-size', theme.fontSize);
1177
+ g.selectAll('text').attr('fill', theme.textColor);
1178
+ this.checkTextOverflow(g.selectAll('text').nodes());
1179
+
1180
+ // line
1181
+ g.selectAll('line').node() && g.selectAll('line').node().remove(); // delete the first line
1182
+ g.selectAll('.tick line').clone().attr('x2', chartWidth - insertPadding * 2 - this.horizontalOverflowOffset).attr('stroke', theme.gridColor).attr('stroke-dasharray', '8,3');
1183
+
1184
+ // update g translateX
1185
+ g.attr('transform', "translate(".concat(insertPadding + this.horizontalOverflowOffset, ", 0)"));
1186
+ };
1187
+ this.checkTextOverflow = allTextEl => {
1188
+ const {
1189
+ insertPadding
1190
+ } = this.chartBoundingClientRect;
1191
+ const allTextWidth = allTextEl.map(item => {
1192
+ const {
1193
+ width
1194
+ } = item.getBoundingClientRect();
1195
+ return width;
1196
+ });
1197
+ const maxTextWidth = Math.max(...allTextWidth);
1198
+ this.horizontalOverflowOffset = 0;
1199
+ if (maxTextWidth > insertPadding) {
1200
+ // horizontal overflow
1201
+ const offset = maxTextWidth + 3 - insertPadding; // 3 is text and line default spacing
1202
+ this.horizontalOverflowOffset = offset;
1203
+ }
1204
+ };
1165
1205
  this.initLabelStroke(props === null || props === void 0 ? void 0 : props.globalTheme);
1166
1206
  this.chartBoundingClientRect = {};
1167
1207
  }
@@ -113,9 +113,10 @@ const Wrapper = _ref => {
113
113
  config
114
114
  } = chart;
115
115
  const {
116
- column_groupby_multiple_numeric_column
116
+ column_groupby_multiple_numeric_column,
117
+ column_groupby_column_key
117
118
  } = config;
118
- const BarGroupComponent = column_groupby_multiple_numeric_column ? _barStack.default : _barGroup.default;
119
+ const BarGroupComponent = column_groupby_column_key || column_groupby_multiple_numeric_column ? _barStack.default : _bar.default;
119
120
  return /*#__PURE__*/_react.default.createElement(BarGroupComponent, Object.assign({}, baseProps, {
120
121
  canvasStyle: canvasStyle
121
122
  }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sea-chart",
3
- "version": "2.0.10",
3
+ "version": "2.0.11",
4
4
  "main": "./dist/index.js",
5
5
  "dependencies": {
6
6
  "@dnd-kit/core": "^6.1.0",