Skip to content

Commit

Permalink
Return correct label for value type axis (chartjs#5920)
Browse files Browse the repository at this point in the history
  • Loading branch information
kurkle authored and simonbrunel committed Jan 17, 2019
1 parent 3bd3fe5 commit c1b2281
Show file tree
Hide file tree
Showing 5 changed files with 70 additions and 67 deletions.
40 changes: 6 additions & 34 deletions src/controllers/controller.bar.js
Expand Up @@ -173,7 +173,7 @@ module.exports = DatasetController.extend({
_updateElementGeometry: function(rectangle, index, reset) {
var me = this;
var model = rectangle._model;
var vscale = me.getValueScale();
var vscale = me._getValueScale();
var base = vscale.getBasePixel();
var horizontal = vscale.isHorizontal();
var ruler = me._ruler || me.getRuler();
Expand All @@ -188,34 +188,6 @@ module.exports = DatasetController.extend({
model.width = horizontal ? undefined : ipixels.size;
},

/**
* @private
*/
getValueScaleId: function() {
return this.getMeta().yAxisID;
},

/**
* @private
*/
getIndexScaleId: function() {
return this.getMeta().xAxisID;
},

/**
* @private
*/
getValueScale: function() {
return this.getScaleForId(this.getValueScaleId());
},

/**
* @private
*/
getIndexScale: function() {
return this.getScaleForId(this.getIndexScaleId());
},

/**
* Returns the stacks based on groups and bar visibility.
* @param {Number} [last] - The dataset index
Expand All @@ -225,7 +197,7 @@ module.exports = DatasetController.extend({
_getStacks: function(last) {
var me = this;
var chart = me.chart;
var scale = me.getIndexScale();
var scale = me._getIndexScale();
var stacked = scale.options.stacked;
var ilen = last === undefined ? chart.data.datasets.length : last + 1;
var stacks = [];
Expand Down Expand Up @@ -275,7 +247,7 @@ module.exports = DatasetController.extend({
*/
getRuler: function() {
var me = this;
var scale = me.getIndexScale();
var scale = me._getIndexScale();
var stackCount = me.getStackCount();
var datasetIndex = me.index;
var isHorizontal = scale.isHorizontal();
Expand Down Expand Up @@ -310,7 +282,7 @@ module.exports = DatasetController.extend({
var me = this;
var chart = me.chart;
var meta = me.getMeta();
var scale = me.getValueScale();
var scale = me._getValueScale();
var isHorizontal = scale.isHorizontal();
var datasets = chart.data.datasets;
var value = +scale.getRightValue(datasets[datasetIndex].data[index]);
Expand All @@ -326,7 +298,7 @@ module.exports = DatasetController.extend({

if (imeta.bar &&
imeta.stack === stack &&
imeta.controller.getValueScaleId() === scale.id &&
imeta.controller._getValueScaleId() === scale.id &&
chart.isDatasetVisible(i)) {

ivalue = +scale.getRightValue(datasets[i].data[index]);
Expand Down Expand Up @@ -385,7 +357,7 @@ module.exports = DatasetController.extend({
draw: function() {
var me = this;
var chart = me.chart;
var scale = me.getValueScale();
var scale = me._getValueScale();
var rects = me.getMeta().data;
var dataset = me.getDataset();
var ilen = rects.length;
Expand Down
4 changes: 2 additions & 2 deletions src/controllers/controller.horizontalBar.js
Expand Up @@ -65,14 +65,14 @@ module.exports = BarController.extend({
/**
* @private
*/
getValueScaleId: function() {
_getValueScaleId: function() {
return this.getMeta().xAxisID;
},

/**
* @private
*/
getIndexScaleId: function() {
_getIndexScaleId: function() {
return this.getMeta().yAxisID;
}
});
Expand Down
28 changes: 28 additions & 0 deletions src/core/core.datasetController.js
Expand Up @@ -131,6 +131,34 @@ helpers.extend(DatasetController.prototype, {
return this.chart.scales[scaleID];
},

/**
* @private
*/
_getValueScaleId: function() {
return this.getMeta().yAxisID;
},

/**
* @private
*/
_getIndexScaleId: function() {
return this.getMeta().xAxisID;
},

/**
* @private
*/
_getValueScale: function() {
return this.getScaleForId(this._getValueScaleId());
},

/**
* @private
*/
_getIndexScale: function() {
return this.getScaleForId(this._getIndexScaleId());
},

reset: function() {
this.update(true);
},
Expand Down
8 changes: 4 additions & 4 deletions src/scales/scale.category.js
Expand Up @@ -49,12 +49,12 @@ module.exports = Scale.extend({

getLabelForIndex: function(index, datasetIndex) {
var me = this;
var data = me.chart.data;
var isHorizontal = me.isHorizontal();
var chart = me.chart;

if (data.yLabels && !isHorizontal) {
return me.getRightValue(data.datasets[datasetIndex].data[index]);
if (chart.getDatasetMeta(datasetIndex).controller._getValueScaleId() === me.id) {
return me.getRightValue(chart.data.datasets[datasetIndex].data[index]);
}

return me.ticks[index - me.minIndex];
},

Expand Down
57 changes: 30 additions & 27 deletions test/specs/scale.category.tests.js
Expand Up @@ -156,35 +156,38 @@ describe('Category scale tests', function() {
expect(scale.ticks).toEqual(labels);
});

it ('should get the correct label for the index', function() {
var scaleID = 'myScale';

var mockData = {
datasets: [{
yAxisID: scaleID,
data: [10, 5, 0, 25, 78]
}],
labels: ['tick1', 'tick2', 'tick3', 'tick4', 'tick5']
};

var config = Chart.helpers.clone(Chart.scaleService.getScaleDefaults('category'));
var Constructor = Chart.scaleService.getScaleConstructor('category');
var scale = new Constructor({
ctx: {},
options: config,
chart: {
data: mockData
it('should get the correct label for the index', function() {
var chart = window.acquireChart({
type: 'line',
data: {
datasets: [{
xAxisID: 'xScale0',
yAxisID: 'yScale0',
data: [10, 5, 0, 25, 78]
}],
labels: ['tick1', 'tick2', 'tick3', 'tick4', 'tick5']
},
id: scaleID
options: {
scales: {
xAxes: [{
id: 'xScale0',
type: 'category',
position: 'bottom'
}],
yAxes: [{
id: 'yScale0',
type: 'linear'
}]
}
}
});

scale.determineDataLimits();
scale.buildTicks();
var scale = chart.scales.xScale0;

expect(scale.getLabelForIndex(1)).toBe('tick2');
expect(scale.getLabelForIndex(1, 0)).toBe('tick2');
});

it ('Should get the correct pixel for a value when horizontal', function() {
it('Should get the correct pixel for a value when horizontal', function() {
var chart = window.acquireChart({
type: 'line',
data: {
Expand Down Expand Up @@ -227,7 +230,7 @@ describe('Category scale tests', function() {
expect(xScale.getValueForPixel(417)).toBe(4);
});

it ('Should get the correct pixel for a value when there are repeated labels', function() {
it('Should get the correct pixel for a value when there are repeated labels', function() {
var chart = window.acquireChart({
type: 'line',
data: {
Expand Down Expand Up @@ -258,7 +261,7 @@ describe('Category scale tests', function() {
expect(xScale.getPixelForValue('tick_1', 1, 0)).toBeCloseToPixel(143);
});

it ('Should get the correct pixel for a value when horizontal and zoomed', function() {
it('Should get the correct pixel for a value when horizontal and zoomed', function() {
var chart = window.acquireChart({
type: 'line',
data: {
Expand Down Expand Up @@ -299,7 +302,7 @@ describe('Category scale tests', function() {
expect(xScale.getPixelForValue(0, 3, 0)).toBeCloseToPixel(429);
});

it ('should get the correct pixel for a value when vertical', function() {
it('should get the correct pixel for a value when vertical', function() {
var chart = window.acquireChart({
type: 'line',
data: {
Expand Down Expand Up @@ -344,7 +347,7 @@ describe('Category scale tests', function() {
expect(yScale.getValueForPixel(437)).toBe(4);
});

it ('should get the correct pixel for a value when vertical and zoomed', function() {
it('should get the correct pixel for a value when vertical and zoomed', function() {
var chart = window.acquireChart({
type: 'line',
data: {
Expand Down

0 comments on commit c1b2281

Please sign in to comment.