Return correct label for value type axis (#5920)

This commit is contained in:
Jukka Kurkela
2019-01-17 17:04:08 +02:00
committed by Simon Brunel
parent 69b4a4c003
commit 7bbf3cab5b
5 changed files with 70 additions and 67 deletions

View File

@@ -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();
@@ -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
@@ -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 = [];
@@ -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();
@@ -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]);
@@ -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]);
@@ -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;

View File

@@ -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;
}
});

View File

@@ -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);
},

View File

@@ -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];
},

View File

@@ -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: {
@@ -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: {
@@ -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: {
@@ -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: {
@@ -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: {