Skip to content

Commit

Permalink
Cast getRightValue to number in the bar controller (chartjs#5947)
Browse files Browse the repository at this point in the history
  • Loading branch information
kurkle authored and simonbrunel committed Jan 2, 2019
1 parent ee7b93b commit de6074d
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 3 deletions.
6 changes: 3 additions & 3 deletions src/controllers/controller.bar.js
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ module.exports = DatasetController.extend({
var scale = me.getValueScale();
var isHorizontal = scale.isHorizontal();
var datasets = chart.data.datasets;
var value = scale.getRightValue(datasets[datasetIndex].data[index]);
var value = +scale.getRightValue(datasets[datasetIndex].data[index]);
var minBarLength = scale.options.minBarLength;
var stacked = scale.options.stacked;
var stack = meta.stack;
Expand All @@ -327,7 +327,7 @@ module.exports = DatasetController.extend({
imeta.controller.getValueScaleId() === scale.id &&
chart.isDatasetVisible(i)) {

ivalue = scale.getRightValue(datasets[i].data[index]);
ivalue = +scale.getRightValue(datasets[i].data[index]);
if ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {
start += ivalue;
}
Expand All @@ -337,7 +337,7 @@ module.exports = DatasetController.extend({

base = scale.getPixelForValue(start);
head = scale.getPixelForValue(start + value);
size = (head - base) / 2;
size = head - base;

if (minBarLength !== undefined && Math.abs(size) < minBarLength) {
size = minBarLength;
Expand Down
61 changes: 61 additions & 0 deletions test/specs/controller.bar.tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -1259,6 +1259,67 @@ describe('Chart.controllers.bar', function() {
});
});

it('should update elements when the scales are stacked and the y axis is logarithmic and data is strings', function() {
var chart = window.acquireChart({
type: 'bar',
data: {
datasets: [{
data: ['10', '100', '10', '100'],
label: 'dataset1'
}, {
data: ['100', '10', '0', '100'],
label: 'dataset2'
}],
labels: ['label1', 'label2', 'label3', 'label4']
},
options: {
legend: false,
title: false,
scales: {
xAxes: [{
type: 'category',
display: false,
stacked: true,
barPercentage: 1,
}],
yAxes: [{
type: 'logarithmic',
display: false,
stacked: true
}]
}
}
});

var meta0 = chart.getDatasetMeta(0);

[
{b: 512, w: 102, x: 64, y: 512},
{b: 512, w: 102, x: 192, y: 118},
{b: 512, w: 102, x: 320, y: 512},
{b: 512, w: 102, x: 449, y: 118}
].forEach(function(values, i) {
expect(meta0.data[i]._model.base).toBeCloseToPixel(values.b);
expect(meta0.data[i]._model.width).toBeCloseToPixel(values.w);
expect(meta0.data[i]._model.x).toBeCloseToPixel(values.x);
expect(meta0.data[i]._model.y).toBeCloseToPixel(values.y);
});

var meta1 = chart.getDatasetMeta(1);

[
{b: 512, w: 102, x: 64, y: 102},
{b: 118, w: 102, x: 192, y: 102},
{b: 512, w: 102, x: 320, y: 512},
{b: 118, w: 102, x: 449, y: 0}
].forEach(function(values, i) {
expect(meta1.data[i]._model.base).toBeCloseToPixel(values.b);
expect(meta1.data[i]._model.width).toBeCloseToPixel(values.w);
expect(meta1.data[i]._model.x).toBeCloseToPixel(values.x);
expect(meta1.data[i]._model.y).toBeCloseToPixel(values.y);
});
});

it('should draw all bars', function() {
var chart = window.acquireChart({
type: 'bar',
Expand Down

0 comments on commit de6074d

Please sign in to comment.