diff --git a/src/controllers/controller.bar.js b/src/controllers/controller.bar.js index cd611657275..aef53b68afe 100644 --- a/src/controllers/controller.bar.js +++ b/src/controllers/controller.bar.js @@ -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; diff --git a/src/controllers/controller.horizontalBar.js b/src/controllers/controller.horizontalBar.js index b761c344403..85d31ba515e 100644 --- a/src/controllers/controller.horizontalBar.js +++ b/src/controllers/controller.horizontalBar.js @@ -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; } }); diff --git a/src/core/core.datasetController.js b/src/core/core.datasetController.js index ab7ca1282c8..303549849ae 100644 --- a/src/core/core.datasetController.js +++ b/src/core/core.datasetController.js @@ -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); }, diff --git a/src/scales/scale.category.js b/src/scales/scale.category.js index 3a4d20645b3..d837a7365da 100644 --- a/src/scales/scale.category.js +++ b/src/scales/scale.category.js @@ -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]; }, diff --git a/test/specs/scale.category.tests.js b/test/specs/scale.category.tests.js index 7bc6a8a57ad..d6529324ec3 100644 --- a/test/specs/scale.category.tests.js +++ b/test/specs/scale.category.tests.js @@ -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: {