Skip to content

Commit 59c2ecf

Browse files
committed
fix: groupBars improvements
1 parent 2277cd3 commit 59c2ecf

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/ui-chart/data/BarData.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export class BarData extends BarLineScatterCandleBubbleData<BarEntry, BarDataSet
2727
* @param groupSpace the space between groups of bars in values (not pixels) e.g. 0.8f for bar width 1
2828
* @param barSpace the space between individual bars in values (not pixels) e.g. 0.1 for bar width 1
2929
* @param centered whether to group bar around x values or between (default is false)
30+
* @param groupCondensed whether to condensed grouped bar (no space for "0" bars)
3031
*/
3132
public groupBars(fromX, groupSpace, barSpace, centered = false, groupCondensed = false) {
3233
const setCount = this.mDataSets.length;
@@ -41,6 +42,7 @@ export class BarData extends BarLineScatterCandleBubbleData<BarEntry, BarDataSet
4142
const barWidthHalf = this.barWidth / 2;
4243

4344
const interval = this.getGroupWidth(groupSpace, barSpace);
45+
4446
if (!groupCondensed && centered) {
4547
fromX -= interval / 2;
4648
}
@@ -50,6 +52,7 @@ export class BarData extends BarLineScatterCandleBubbleData<BarEntry, BarDataSet
5052
fromX += groupSpaceWidthHalf;
5153
}
5254
if (groupCondensed) {
55+
// we need to get entries filtered removing "empty" y entries
5356
const entries = this.mDataSets.reduce(
5457
(acc, set) => {
5558
if (i < set.entryCount) {
@@ -109,9 +112,8 @@ export class BarData extends BarLineScatterCandleBubbleData<BarEntry, BarDataSet
109112
const end = fromX;
110113
const innerInterval = end - start;
111114
const diff = interval - innerInterval;
112-
113115
// correct rounding errors
114-
if (diff > 0 || diff < 0) {
116+
if (diff !== 0) {
115117
fromX += diff;
116118
}
117119
}
@@ -127,6 +129,7 @@ export class BarData extends BarLineScatterCandleBubbleData<BarEntry, BarDataSet
127129
* @return
128130
*/
129131
public getGroupWidth(groupSpace, barSpace) {
130-
return this.mDataSets.length * (this.barWidth + barSpace) + groupSpace;
132+
const dataSetCount = this.dataSetCount;
133+
return dataSetCount * this.barWidth + (dataSetCount > 1 ? Math.ceil(dataSetCount / 2) : 0) * barSpace + groupSpace;
131134
}
132135
}

0 commit comments

Comments
 (0)