Skip to content

Commit

Permalink
Return correct label for value type axis
Browse files Browse the repository at this point in the history
  • Loading branch information
kurkle committed Jan 5, 2019
1 parent 87e44fa commit 2e6abac
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 29 deletions.
14 changes: 12 additions & 2 deletions src/scales/scale.category.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,20 @@ module.exports = Scale.extend({

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

if (data.yLabels && !isHorizontal) {
var ds = chart.getDatasetMeta(datasetIndex).controller;

// Do we have a getValuesScaleId function? (eg. bar chart)
var isValueScale = ds.getValueScaleId
? ds.getValueScaleId() === me.id
: !isHorizontal;

// FIXME For non-bar charts we assume vertical axis is a value scale
// and thus should return getRightValue
if (isValueScale) {
return me.getRightValue(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
Original file line number Diff line number Diff line change
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 2e6abac

Please sign in to comment.