Skip to content

Commit 56d0778

Browse files
committed
fixes #4937; data label issue when hideZeroBarsWhenGrouped
1 parent 9c1be3c commit 56d0778

File tree

3 files changed

+25
-31
lines changed

3 files changed

+25
-31
lines changed

src/charts/Bar.js

+2-11
Original file line numberDiff line numberDiff line change
@@ -470,17 +470,8 @@ class Bar {
470470
barYPosition = y + barHeight * this.visibleI
471471
} else {
472472
if (w.config.plotOptions.bar.hideZeroBarsWhenGrouped) {
473-
let nonZeroColumns = 0
474-
let zeroEncounters = 0
475-
w.globals.seriesPercent.forEach((_s, _si) => {
476-
if (_s[j]) {
477-
nonZeroColumns++
478-
}
479-
480-
if (_si < i && _s[j] === 0) {
481-
zeroEncounters++
482-
}
483-
})
473+
const { nonZeroColumns, zeroEncounters } =
474+
this.barHelpers.getZeroValueEncounters({ i, j })
484475

485476
if (nonZeroColumns > 0) {
486477
barHeight = (this.seriesLen * barHeight) / nonZeroColumns

src/charts/common/bar/DataLabels.js

+12
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@ export default class BarDataLabels {
240240
dataLabelsX = bcx - dataPointsDividedWidth + barWidth / 2 + offX
241241
}
242242
if (
243+
!w.config.chart.stacked &&
243244
zeroEncounters > 0 &&
244245
w.config.plotOptions.bar.hideZeroBarsWhenGrouped
245246
) {
@@ -402,6 +403,10 @@ export default class BarDataLabels {
402403
} = opts
403404

404405
let dataPointsDividedHeight = w.globals.gridHeight / w.globals.dataPoints
406+
const { zeroEncounters } = this.barCtx.barHelpers.getZeroValueEncounters({
407+
i,
408+
j,
409+
})
405410

406411
barWidth = Math.abs(barWidth)
407412

@@ -413,6 +418,13 @@ export default class BarDataLabels {
413418
offY -
414419
3
415420

421+
if (
422+
!w.config.chart.stacked &&
423+
zeroEncounters > 0 &&
424+
w.config.plotOptions.bar.hideZeroBarsWhenGrouped
425+
) {
426+
dataLabelsY -= barHeight * zeroEncounters
427+
}
416428
let totalDataLabelsX
417429
let totalDataLabelsY
418430
let totalDataLabelsAnchor = 'start'

src/modules/Core.js

+11-20
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ export default class Core {
128128
area: { series: [], i: [] },
129129
scatter: { series: [], i: [] },
130130
bubble: { series: [], i: [] },
131-
column: { series: [], i: [] },
131+
bar: { series: [], i: [] },
132132
candlestick: { series: [], i: [] },
133133
boxPlot: { series: [], i: [] },
134134
rangeBar: { series: [], i: [] },
@@ -141,9 +141,9 @@ export default class Core {
141141

142142
gl.series.forEach((serie, st) => {
143143
const seriesType =
144-
ser[st].type === 'bar'
145-
? 'column'
146-
: ser[st].type || (chartType === 'bar' ? 'column' : chartType)
144+
ser[st].type === 'column'
145+
? 'bar'
146+
: ser[st].type || (chartType === 'column' ? 'bar' : chartType)
147147

148148
if (seriesTypes[seriesType]) {
149149
if (seriesType === 'rangeArea') {
@@ -154,8 +154,7 @@ export default class Core {
154154
}
155155
seriesTypes[seriesType].i.push(st)
156156

157-
if (seriesType === 'column' || seriesType === 'bar')
158-
w.globals.columnSeries = seriesTypes.column
157+
if (seriesType === 'bar') w.globals.columnSeries = seriesTypes.bar
159158
} else if (
160159
[
161160
'heatmap',
@@ -168,9 +167,6 @@ export default class Core {
168167
].includes(seriesType)
169168
) {
170169
nonComboType = seriesType
171-
} else if (seriesType === 'bar') {
172-
seriesTypes['column'].series.push(serie)
173-
seriesTypes['column'].i.push(st)
174170
} else {
175171
console.warn(
176172
`You have specified an unrecognized series type (${seriesType}).`
@@ -185,12 +181,9 @@ export default class Core {
185181
`Chart or series type ${nonComboType} cannot appear with other chart or series types.`
186182
)
187183
}
188-
if (
189-
seriesTypes.column.series.length > 0 &&
190-
cnf.plotOptions.bar.horizontal
191-
) {
192-
comboCount -= seriesTypes.column.series.length
193-
seriesTypes.column = { series: [], i: [] }
184+
if (seriesTypes.bar.series.length > 0 && cnf.plotOptions.bar.horizontal) {
185+
comboCount -= seriesTypes.bar.series.length
186+
seriesTypes.bar = { series: [], i: [] }
194187
w.globals.columnSeries = { series: [], i: [] }
195188
console.warn(
196189
'Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`'
@@ -219,17 +212,15 @@ export default class Core {
219212
)
220213
)
221214
}
222-
if (seriesTypes.column.series.length > 0) {
215+
if (seriesTypes.bar.series.length > 0) {
223216
if (cnf.chart.stacked) {
224217
const barStacked = new BarStacked(ctx, xyRatios)
225218
elGraph.push(
226-
barStacked.draw(seriesTypes.column.series, seriesTypes.column.i)
219+
barStacked.draw(seriesTypes.bar.series, seriesTypes.bar.i)
227220
)
228221
} else {
229222
ctx.bar = new Bar(ctx, xyRatios)
230-
elGraph.push(
231-
ctx.bar.draw(seriesTypes.column.series, seriesTypes.column.i)
232-
)
223+
elGraph.push(ctx.bar.draw(seriesTypes.bar.series, seriesTypes.bar.i))
233224
}
234225
}
235226
if (seriesTypes.rangeArea.series.length > 0) {

0 commit comments

Comments
 (0)