* fix issue #11717

Signed-off-by: Hu, Vince <Qingkun.Hu@fmr.com>

* unit test for issue #11717

* fixing test lint style issue

* update codes according review comments

---------

Signed-off-by: Hu, Vince <Qingkun.Hu@fmr.com>
This commit is contained in:
huqingkun 2024-08-06 23:32:26 +08:00 committed by GitHub
parent 0ca1b6ef85
commit 147ee593ba
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 89 additions and 1 deletions

View File

@ -437,9 +437,11 @@ export default class BarController extends DatasetController {
.filter(meta => meta.controller.options.grouped);
const stacked = iScale.options.stacked;
const stacks = [];
const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);
const iScaleValue = currentParsed && currentParsed[iScale.axis];
const skipNull = (meta) => {
const parsed = meta.controller.getParsed(dataIndex);
const parsed = meta._parsed.find(item => item[iScale.axis] === iScaleValue);
const val = parsed && parsed[meta.vScale.axis];
if (isNullOrUndef(val) || isNaN(val)) {

View File

@ -1676,6 +1676,92 @@ describe('Chart.controllers.bar', function() {
expect(unevenChart).not.toThrow();
});
it('should correctly count the number of stacks when skipNull and different order datasets', function() {
const chart = window.acquireChart({
type: 'bar',
data: {
datasets: [
{
id: '1',
label: 'USA',
data: [
{
xScale: 'First',
Country: 'USA',
yScale: 524
},
{
xScale: 'Second',
Country: 'USA',
yScale: 325
}
],
yAxisID: 'yScale',
xAxisID: 'xScale',
parsing: {
yAxisKey: 'yScale',
xAxisKey: 'xScale'
}
},
{
id: '2',
label: 'BRA',
data: [
{
xScale: 'Second',
Country: 'BRA',
yScale: 183
},
{
xScale: 'First',
Country: 'BRA',
yScale: 177
}
],
yAxisID: 'yScale',
xAxisID: 'xScale',
parsing: {
yAxisKey: 'yScale',
xAxisKey: 'xScale'
}
},
{
id: '3',
label: 'DEU',
data: [
{
xScale: 'First',
Country: 'DEU',
yScale: 162
}
],
yAxisID: 'yScale',
xAxisID: 'xScale',
parsing: {
yAxisKey: 'yScale',
xAxisKey: 'xScale'
}
}
]
},
options: {
skipNull: true
}
});
var meta = chart.getDatasetMeta(0);
expect(meta.controller._getStackCount(0)).toBe(3);
expect(meta.controller._getStackCount(1)).toBe(2);
});
it('should not override tooltip title and label callbacks', async() => {
const chart = window.acquireChart({
type: 'bar',