]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Remove xLabel and yLabel from tooltip and chart and scales from element (#6606)
authorBen McCann <322311+benmccann@users.noreply.github.com>
Sun, 27 Oct 2019 20:35:15 +0000 (13:35 -0700)
committerEvert Timberg <evert.timberg+github@gmail.com>
Sun, 27 Oct 2019 20:35:15 +0000 (16:35 -0400)
* Element should not have reference to chart
* Remove scales from element
* Remove deprecated xLabel and yLabel

20 files changed:
docs/configuration/tooltip.md
src/controllers/controller.bar.js
src/controllers/controller.bubble.js
src/controllers/controller.line.js
src/controllers/controller.polarArea.js
src/controllers/controller.radar.js
src/controllers/controller.scatter.js
src/core/core.controller.js
src/core/core.datasetController.js
src/core/core.tooltip.js
src/elements/element.arc.js
src/elements/element.line.js
src/elements/element.point.js
src/elements/element.rectangle.js
src/plugins/plugin.filler.js
test/specs/controller.bar.tests.js
test/specs/controller.line.tests.js
test/specs/core.tooltip.tests.js
test/specs/element.line.tests.js
test/specs/element.point.tests.js

index 213f5c4b89123b5d29d0aab92076e08f71e5ae9c..8ef57bbd68b26b5c8a6bebbdea8258639742d683 100644 (file)
@@ -183,14 +183,6 @@ The tooltip items passed to the tooltip callbacks implement the following interf
     // Value for the tooltip
     value: string,
 
-    // X Value of the tooltip
-    // (deprecated) use `value` or `label` instead
-    xLabel: number | string,
-
-    // Y value of the tooltip
-    // (deprecated) use `value` or `label` instead
-    yLabel: number | string,
-
     // Index of the dataset the item comes from
     datasetIndex: number,
 
index fa59c9465fcb74350d9e93c7cea04a05ba05b792..398cdd9cdaee908a6eaf8be86516f700f1a8f229 100644 (file)
@@ -177,12 +177,9 @@ module.exports = DatasetController.extend({
 
        updateElement: function(rectangle, index, reset) {
                var me = this;
-               var meta = me.getMeta();
                var dataset = me.getDataset();
                var options = me._resolveDataElementOptions(index);
 
-               rectangle._xScale = me.getScaleForId(meta.xAxisID);
-               rectangle._yScale = me.getScaleForId(meta.yAxisID);
                rectangle._datasetIndex = me.index;
                rectangle._index = index;
                rectangle._model = {
index 35a92992a375eca6dfbdb8a3a69aa255c57b6e8c..5549097b7b61c16cbb6af2ab6c27b54eb3c7b965 100644 (file)
@@ -35,7 +35,7 @@ defaults._set('bubble', {
                        label: function(item, data) {
                                var datasetLabel = data.datasets[item.datasetIndex].label || '';
                                var dataPoint = data.datasets[item.datasetIndex].data[item.index];
-                               return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';
+                               return datasetLabel + ': (' + item.label + ', ' + item.value + ', ' + dataPoint.r + ')';
                        }
                }
        }
@@ -92,8 +92,6 @@ module.exports = DatasetController.extend({
                var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);
                var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);
 
-               point._xScale = xScale;
-               point._yScale = yScale;
                point._options = options;
                point._datasetIndex = dsIndex;
                point._index = index;
index f8f415ef9fdad6a040181343c088141eb7a3fb63..de689941eff7c7de8e8536020d20821335c469a9 100644 (file)
@@ -88,7 +88,6 @@ module.exports = DatasetController.extend({
                        }
 
                        // Utility
-                       line._scale = me._yScale;
                        line._datasetIndex = me.index;
                        // Data
                        line._children = points;
@@ -119,19 +118,15 @@ module.exports = DatasetController.extend({
                var dataset = me.getDataset();
                var datasetIndex = me.index;
                var value = dataset.data[index];
-               var xScale = me._xScale;
-               var yScale = me._yScale;
                var lineModel = meta.dataset._model;
                var x, y;
 
                var options = me._resolveDataElementOptions(index);
 
-               x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);
-               y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);
+               x = me._xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);
+               y = reset ? me._yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);
 
                // Utility
-               point._xScale = xScale;
-               point._yScale = yScale;
                point._options = options;
                point._datasetIndex = datasetIndex;
                point._index = index;
index 9178860b679d36233bd791a3d6a27c9cadff0656..b73a938bb4101b9f990d47a53fc9e68aa157b512 100644 (file)
@@ -98,7 +98,7 @@ defaults._set('polarArea', {
                                return '';
                        },
                        label: function(item, data) {
-                               return data.labels[item.index] + ': ' + item.yLabel;
+                               return data.labels[item.index] + ': ' + item.value;
                        }
                }
        }
@@ -207,7 +207,6 @@ module.exports = DatasetController.extend({
                        // Utility
                        _datasetIndex: me.index,
                        _index: index,
-                       _scale: scale,
 
                        // Desired view properties
                        _model: {
index d2a0d955122084b885095979d054c58cead04524..a690c75d05d3595483d4d252aae51486bec31233 100644 (file)
@@ -76,7 +76,6 @@ module.exports = DatasetController.extend({
                var meta = me.getMeta();
                var line = meta.dataset;
                var points = meta.data || [];
-               var scale = me.chart.scale;
                var config = me._config;
                var i, ilen;
 
@@ -86,7 +85,6 @@ module.exports = DatasetController.extend({
                }
 
                // Utility
-               line._scale = scale;
                line._datasetIndex = me.index;
                // Data
                line._children = points;
@@ -121,7 +119,6 @@ module.exports = DatasetController.extend({
                var y = reset ? scale.yCenter : pointPosition.y;
 
                // Utility
-               point._scale = scale;
                point._options = options;
                point._datasetIndex = me.index;
                point._index = index;
index 177e563203f6cfea389b214ffeac1c71ec13fddb..1b2061b4a2e35a0b4bc4858292b6d55dab1e50f3 100644 (file)
@@ -27,7 +27,7 @@ defaults._set('scatter', {
                                return '';     // doesn't make sense for scatter since data are formatted as a point
                        },
                        label: function(item) {
-                               return '(' + item.xLabel + ', ' + item.yLabel + ')';
+                               return '(' + item.label + ', ' + item.value + ')';
                        }
                }
        }
index f56b049018317760c3f672659447122e94e753e7..849d31d35e6a682582de7088b1a73f623253bb64 100644 (file)
@@ -939,7 +939,6 @@ helpers.extend(Chart.prototype, /** @lends Chart */ {
                var me = this;
                me.tooltip = new Tooltip({
                        _chart: me,
-                       _chartInstance: me, // deprecated, backward compatibility
                        _data: me.data,
                        _options: me.options.tooltips
                }, me);
index d8adf9fd526c9a0364c0aa8b171bc4a95a4c1af6..d885c53c536f73ae069e56891f4e3115a48e6afb 100644 (file)
@@ -209,7 +209,7 @@ helpers.extend(DatasetController.prototype, {
                var me = this;
                var type = me.datasetElementType;
                return type && new type({
-                       _chart: me.chart,
+                       _ctx: me.chart.ctx,
                        _datasetIndex: me.index
                });
        },
@@ -218,7 +218,7 @@ helpers.extend(DatasetController.prototype, {
                var me = this;
                var type = me.dataElementType;
                return type && new type({
-                       _chart: me.chart,
+                       _ctx: me.chart.ctx,
                        _datasetIndex: me.index,
                        _index: index
                });
index f42ede285a02cdf90981affa2e30a3d1253d6795..d4a892e2e53970e951680401eae78f4105539c97 100644 (file)
@@ -49,8 +49,6 @@ defaults._set('global', {
                                        var item = tooltipItems[0];
                                        if (item.label) {
                                                title = item.label;
-                                       } else if (item.xLabel) {
-                                               title = item.xLabel;
                                        } else if (labelCount > 0 && item.index < labelCount) {
                                                title = labels[item.index];
                                        }
@@ -73,8 +71,6 @@ defaults._set('global', {
                                }
                                if (!helpers.isNullOrUndef(tooltipItem.value)) {
                                        label += tooltipItem.value;
-                               } else {
-                                       label += tooltipItem.yLabel;
                                }
                                return label;
                        },
@@ -208,18 +204,14 @@ function splitNewlines(str) {
  * @param element - the chart element (point, arc, bar) to create the tooltip item for
  * @return new tooltip item
  */
-function createTooltipItem(element) {
-       var xScale = element._xScale;
-       var yScale = element._yScale || element._scale; // handle radar || polarArea charts
-       var index = element._index;
+function createTooltipItem(chart, element) {
        var datasetIndex = element._datasetIndex;
-       var controller = element._chart.getDatasetMeta(datasetIndex).controller;
+       var index = element._index;
+       var controller = chart.getDatasetMeta(datasetIndex).controller;
        var indexScale = controller._getIndexScale();
        var valueScale = controller._getValueScale();
 
        return {
-               xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',
-               yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',
                label: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex) : '',
                value: valueScale ? '' + valueScale.getLabelForIndex(index, datasetIndex) : '',
                index: index,
@@ -359,7 +351,7 @@ function getTooltipSize(tooltip, model) {
 function determineAlignment(tooltip, size) {
        var model = tooltip._model;
        var chart = tooltip._chart;
-       var chartArea = tooltip._chart.chartArea;
+       var chartArea = chart.chartArea;
        var xAlign = 'center';
        var yAlign = 'center';
 
@@ -612,7 +604,7 @@ var exports = Element.extend({
 
                        var tooltipItems = [];
                        for (i = 0, len = active.length; i < len; ++i) {
-                               tooltipItems.push(createTooltipItem(active[i]));
+                               tooltipItems.push(createTooltipItem(me._chart, active[i]));
                        }
 
                        // If the user provided a filter function, use it to modify the tooltip items
index 3dab9ad6277a670285a965b233487ae9ce7580cb..84b5e633541beb0bdf590b8c9fb2bd2f5f727148 100644 (file)
@@ -160,7 +160,7 @@ module.exports = Element.extend({
        },
 
        draw: function() {
-               var ctx = this._chart.ctx;
+               var ctx = this._ctx;
                var vm = this._view;
                var pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0;
                var arc = {
index 782772bfbdc6234b8e3424316674375254dbc153..98bb48c40f1ca42625e32afd6fb9b7e60ee5f97e 100644 (file)
@@ -31,7 +31,7 @@ module.exports = Element.extend({
        draw: function() {
                var me = this;
                var vm = me._view;
-               var ctx = me._chart.ctx;
+               var ctx = me._ctx;
                var spanGaps = vm.spanGaps;
                var points = me._children.slice(); // clone array
                var globalDefaults = defaults.global;
index 9e1456a2d642446aaaac4c740af5a14774d53499..dc020c86a064451e40ac23b277ce0b62194ac35c 100644 (file)
@@ -69,7 +69,7 @@ module.exports = Element.extend({
 
        draw: function(chartArea) {
                var vm = this._view;
-               var ctx = this._chart.ctx;
+               var ctx = this._ctx;
                var pointStyle = vm.pointStyle;
                var rotation = vm.rotation;
                var radius = vm.radius;
index d1ef58c13c33440c190206fe5659ad8fe248b09b..254d77514cb59e5e355a878727f81681638c4534 100644 (file)
@@ -134,7 +134,7 @@ module.exports = Element.extend({
        _type: 'rectangle',
 
        draw: function() {
-               var ctx = this._chart.ctx;
+               var ctx = this._ctx;
                var vm = this._view;
                var rects = boundingRects(vm);
                var outer = rects.outer;
index 8fed6d9057e9079d1e80e5186ee61bca189da9b3..00000e4fd6b77b32b595d191872c58c677704634 100644 (file)
@@ -104,7 +104,7 @@ function decodeFill(el, index, count) {
 
 function computeLinearBoundary(source) {
        var model = source.el._model || {};
-       var scale = source.el._scale || {};
+       var scale = source.scale || {};
        var fill = source.fill;
        var target = null;
        var horizontal;
@@ -145,7 +145,7 @@ function computeLinearBoundary(source) {
 }
 
 function computeCircularBoundary(source) {
-       var scale = source.el._scale;
+       var scale = source.scale;
        var options = scale.options;
        var length = scale.chart.data.labels.length;
        var fill = source.fill;
@@ -174,7 +174,7 @@ function computeCircularBoundary(source) {
 }
 
 function computeBoundary(source) {
-       var scale = source.el._scale || {};
+       var scale = source.scale || {};
 
        if (scale.getPointPositionForValue) {
                return computeCircularBoundary(source);
@@ -333,6 +333,7 @@ module.exports = {
                                        visible: chart.isDatasetVisible(i),
                                        fill: decodeFill(el, i, count),
                                        chart: chart,
+                                       scale: meta.controller.getScaleForId(meta.yAxisID) || chart.scale,
                                        el: el
                                };
                        }
index dffb668ba51fd67c2a1ef37996391be808e32e11..8d864af2190120abd70821d584844fcaa917f675 100644 (file)
@@ -741,8 +741,6 @@ describe('Chart.controllers.bar', function() {
                ].forEach(function(expected, i) {
                        expect(meta.data[i]._datasetIndex).toBe(1);
                        expect(meta.data[i]._index).toBe(i);
-                       expect(meta.data[i]._xScale).toBe(chart.scales.firstXScaleID);
-                       expect(meta.data[i]._yScale).toBe(chart.scales.firstYScaleID);
                        expect(meta.data[i]._model.x).toBeCloseToPixel(expected.x);
                        expect(meta.data[i]._model.y).toBeCloseToPixel(expected.y);
                        expect(meta.data[i]._model.base).toBeCloseToPixel(1024);
index ac17061e293d47993fb3952b14a506e8c9c093d2..6d3e861f8e3251da0832bd6502c0bde9641f8219 100644 (file)
@@ -217,8 +217,6 @@ describe('Chart.controllers.line', function() {
                ].forEach(function(expected, i) {
                        expect(meta.data[i]._datasetIndex).toBe(0);
                        expect(meta.data[i]._index).toBe(i);
-                       expect(meta.data[i]._xScale).toBe(chart.scales.firstXScaleID);
-                       expect(meta.data[i]._yScale).toBe(chart.scales.firstYScaleID);
                        expect(meta.data[i]._model.x).toBeCloseToPixel(expected.x);
                        expect(meta.data[i]._model.y).toBeCloseToPixel(expected.y);
                        expect(meta.data[i]._model).toEqual(jasmine.objectContaining({
index 89898677ad7528cb5bc0ee157a2c0b0f8d1100d3..737b50c782fed60e1c7dd5a1a4a2a48eb92d81f4 100755 (executable)
@@ -15,8 +15,8 @@ describe('Core.Tooltip', function() {
                        var tooltipItem = {
                                index: 1,
                                datasetIndex: 0,
-                               xLabel: 'Point 2',
-                               yLabel: '20'
+                               label: 'Point 2',
+                               value: '20'
                        };
 
                        var label = Chart.defaults.global.tooltips.callbacks.label(tooltipItem, data);
@@ -907,12 +907,6 @@ describe('Core.Tooltip', function() {
 
                        expect(tooltipItem.index).toBe(pointIndex);
                        expect(tooltipItem.datasetIndex).toBe(datasetIndex);
-                       var indexLabel = type !== 'horizontalBar' ? 'xLabel' : 'yLabel';
-                       expect(typeof tooltipItem[indexLabel]).toBe('string');
-                       expect(tooltipItem[indexLabel]).toBe(chart.data.labels[pointIndex]);
-                       var valueLabel = type !== 'horizontalBar' ? 'yLabel' : 'xLabel';
-                       expect(typeof tooltipItem[valueLabel]).toBe('number');
-                       expect(tooltipItem[valueLabel]).toBe(chart.data.datasets[datasetIndex].data[pointIndex]);
                        expect(typeof tooltipItem.label).toBe('string');
                        expect(tooltipItem.label).toBe(chart.data.labels[pointIndex]);
                        expect(typeof tooltipItem.value).toBe('string');
index 5b423ce0dad8ee0db6b94b73054821ca0e89724f..e509bbfc96dcfcf11ff2dddd1087b0081b25b5ed 100644 (file)
@@ -65,9 +65,7 @@ describe('Chart.elements.Line', function() {
 
                var line = new Chart.elements.Line({
                        _datasetindex: 2,
-                       _chart: {
-                               ctx: mockContext,
-                       },
+                       _ctx: mockContext,
                        _children: points,
                        // Need to provide some settings
                        _view: {
@@ -183,9 +181,7 @@ describe('Chart.elements.Line', function() {
 
                var line = new Chart.elements.Line({
                        _datasetindex: 2,
-                       _chart: {
-                               ctx: mockContext,
-                       },
+                       _ctx: mockContext,
                        _children: points,
                        // Need to provide some settings
                        _view: {
@@ -306,9 +302,7 @@ describe('Chart.elements.Line', function() {
 
                        var line = new Chart.elements.Line({
                                _datasetindex: 2,
-                               _chart: {
-                                       ctx: mockContext,
-                               },
+                               _ctx: mockContext,
                                _children: points,
                                // Need to provide some settings
                                _view: {
@@ -435,9 +429,7 @@ describe('Chart.elements.Line', function() {
 
                var line = new Chart.elements.Line({
                        _datasetindex: 2,
-                       _chart: {
-                               ctx: mockContext,
-                       },
+                       _ctx: mockContext,
                        _children: points,
                        // Need to provide some settings
                        _view: {
@@ -572,9 +564,7 @@ describe('Chart.elements.Line', function() {
 
                var line = new Chart.elements.Line({
                        _datasetindex: 2,
-                       _chart: {
-                               ctx: mockContext,
-                       },
+                       _ctx: mockContext,
                        _children: points,
                        // Need to provide some settings
                        _view: {
@@ -695,9 +685,7 @@ describe('Chart.elements.Line', function() {
 
                var line = new Chart.elements.Line({
                        _datasetindex: 2,
-                       _chart: {
-                               ctx: mockContext,
-                       },
+                       _ctx: mockContext,
                        _children: points,
                        // Need to provide some settings
                        _view: {
@@ -819,9 +807,7 @@ describe('Chart.elements.Line', function() {
 
                var line = new Chart.elements.Line({
                        _datasetindex: 2,
-                       _chart: {
-                               ctx: mockContext,
-                       },
+                       _ctx: mockContext,
                        _children: points,
                        // Need to provide some settings
                        _view: {
@@ -932,9 +918,7 @@ describe('Chart.elements.Line', function() {
 
                var line = new Chart.elements.Line({
                        _datasetindex: 2,
-                       _chart: {
-                               ctx: mockContext,
-                       },
+                       _ctx: mockContext,
                        _children: points,
                        // Need to provide some settings
                        _view: {
@@ -1049,9 +1033,7 @@ describe('Chart.elements.Line', function() {
 
                var line = new Chart.elements.Line({
                        _datasetindex: 2,
-                       _chart: {
-                               ctx: mockContext,
-                       },
+                       _ctx: mockContext,
                        _children: points,
                        // Need to provide some settings
                        _view: {
@@ -1154,9 +1136,7 @@ describe('Chart.elements.Line', function() {
 
                var line = new Chart.elements.Line({
                        _datasetindex: 2,
-                       _chart: {
-                               ctx: mockContext,
-                       },
+                       _ctx: mockContext,
                        _children: points,
                        // Need to provide some settings
                        _view: {
@@ -1267,9 +1247,7 @@ describe('Chart.elements.Line', function() {
 
                var line = new Chart.elements.Line({
                        _datasetindex: 2,
-                       _chart: {
-                               ctx: mockContext,
-                       },
+                       _ctx: mockContext,
                        _children: points,
                        // Need to provide some settings
                        _view: {
@@ -1381,9 +1359,7 @@ describe('Chart.elements.Line', function() {
 
                var line = new Chart.elements.Line({
                        _datasetindex: 2,
-                       _chart: {
-                               ctx: mockContext,
-                       },
+                       _ctx: mockContext,
                        _children: points,
                        // Need to provide some settings
                        _view: {
@@ -1494,9 +1470,7 @@ describe('Chart.elements.Line', function() {
 
                var line = new Chart.elements.Line({
                        _datasetindex: 2,
-                       _chart: {
-                               ctx: mockContext,
-                       },
+                       _ctx: mockContext,
                        _children: points,
                        // Need to provide some settings
                        _view: {
index 887250acd8de4b0392a5cc763c2b3043496ea230..f6700e34713338e16308ae8625433964771dd2d4 100644 (file)
@@ -99,9 +99,7 @@ describe('Chart.elements.Point', function() {
                var point = new Chart.elements.Point({
                        _datasetIndex: 2,
                        _index: 1,
-                       _chart: {
-                               ctx: mockContext,
-                       }
+                       _ctx: mockContext
                });
 
                // Attach a view object as if we were the controller
@@ -147,9 +145,7 @@ describe('Chart.elements.Point', function() {
                var point = new Chart.elements.Point({
                        _datasetIndex: 2,
                        _index: 1,
-                       _chart: {
-                               ctx: mockContext,
-                       }
+                       _ctx: mockContext
                });
 
                // Attach a view object as if we were the controller