mirror of
https://github.com/chartjs/Chart.js.git
synced 2026-03-14 20:26:50 +01:00
Return correct label for value type axis (#5920)
This commit is contained in:
committed by
Simon Brunel
parent
69b4a4c003
commit
7bbf3cab5b
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
},
|
||||
|
||||
@@ -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];
|
||||
},
|
||||
|
||||
|
||||
@@ -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: {
|
||||
|
||||
Reference in New Issue
Block a user