From: Jukka Kurkela Date: Mon, 28 Oct 2019 22:11:38 +0000 (+0200) Subject: Remove deprecated interaction modes (#6625) X-Git-Tag: v3.0.0-alpha~288 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0228776e6649c18000876e43e4d44a2317a693a5;p=thirdparty%2FChart.js.git Remove deprecated interaction modes (#6625) * Remove deprecated interaction modes * Use default modes --- diff --git a/docs/general/interactions/modes.md b/docs/general/interactions/modes.md index 239890835..1c6b16d03 100644 --- a/docs/general/interactions/modes.md +++ b/docs/general/interactions/modes.md @@ -34,12 +34,6 @@ var chart = new Chart(ctx, { }); ``` -## single (deprecated) -Finds the first item that intersects the point and returns it. Behaves like `'nearest'` mode with `intersect = true`. - -## label (deprecated) -See `'index'` mode. - ## index Finds item at the same index. If the `intersect` setting is true, the first intersecting item is used to determine the index in the data. If `intersect` false the nearest item, in the x direction, is used to determine the index. @@ -70,9 +64,6 @@ var chart = new Chart(ctx, { }); ``` -## x-axis (deprecated) -Behaves like `'index'` mode with `intersect = false`. - ## dataset Finds items in the same dataset. If the `intersect` setting is true, the first intersecting item is used to determine the index in the data. If `intersect` false the nearest item is used to determine the index. diff --git a/src/controllers/controller.bar.js b/src/controllers/controller.bar.js index eadbc41bf..f7a4b2216 100644 --- a/src/controllers/controller.bar.js +++ b/src/controllers/controller.bar.js @@ -9,7 +9,7 @@ var valueOrDefault = helpers.valueOrDefault; defaults._set('bar', { hover: { - mode: 'label' + mode: 'index' }, scales: { diff --git a/src/controllers/controller.bubble.js b/src/controllers/controller.bubble.js index 5549097b7..87db319a8 100644 --- a/src/controllers/controller.bubble.js +++ b/src/controllers/controller.bubble.js @@ -9,10 +9,6 @@ var valueOrDefault = helpers.valueOrDefault; var resolve = helpers.options.resolve; defaults._set('bubble', { - hover: { - mode: 'single' - }, - scales: { xAxes: [{ type: 'linear', // bubble should probably use a linear scale by default diff --git a/src/controllers/controller.doughnut.js b/src/controllers/controller.doughnut.js index 72cbe2413..7495d15fa 100644 --- a/src/controllers/controller.doughnut.js +++ b/src/controllers/controller.doughnut.js @@ -18,9 +18,6 @@ defaults._set('doughnut', { // Boolean - Whether we animate scaling the Doughnut from the centre animateScale: false }, - hover: { - mode: 'single' - }, legendCallback: function(chart) { var list = document.createElement('ul'); var data = chart.data; diff --git a/src/controllers/controller.line.js b/src/controllers/controller.line.js index de689941e..a8e242d34 100644 --- a/src/controllers/controller.line.js +++ b/src/controllers/controller.line.js @@ -14,7 +14,7 @@ defaults._set('line', { spanGaps: false, hover: { - mode: 'label' + mode: 'index' }, scales: { diff --git a/src/controllers/controller.scatter.js b/src/controllers/controller.scatter.js index 1b2061b4a..c7b107d46 100644 --- a/src/controllers/controller.scatter.js +++ b/src/controllers/controller.scatter.js @@ -4,10 +4,6 @@ var LineController = require('./controller.line'); var defaults = require('../core/core.defaults'); defaults._set('scatter', { - hover: { - mode: 'single' - }, - scales: { xAxes: [{ id: 'x-axis-1', // need an ID so datasets can reference the scale diff --git a/src/core/core.controller.js b/src/core/core.controller.js index 8827c78df..c2ef85e80 100644 --- a/src/core/core.controller.js +++ b/src/core/core.controller.js @@ -800,15 +800,15 @@ helpers.extend(Chart.prototype, /** @lends Chart */ { * @return An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw */ getElementAtEvent: function(e) { - return Interaction.modes.single(this, e); + return Interaction.modes.nearest(this, e, {intersect: true}); }, getElementsAtEvent: function(e) { - return Interaction.modes.label(this, e, {intersect: true}); + return Interaction.modes.index(this, e, {intersect: true}); }, getElementsAtXAxis: function(e) { - return Interaction.modes['x-axis'](this, e, {intersect: true}); + return Interaction.modes.index(this, e, {intersect: false}); }, getElementsAtEventForMode: function(e, mode, options) { diff --git a/src/core/core.interaction.js b/src/core/core.interaction.js index f5051fbff..a11f0ae54 100644 --- a/src/core/core.interaction.js +++ b/src/core/core.interaction.js @@ -144,28 +144,6 @@ function indexMode(chart, e, options) { module.exports = { // Helper function for different modes modes: { - single: function(chart, e) { - var position = getRelativePosition(e, chart); - var elements = []; - - parseVisibleItems(chart, function(element) { - if (element.inRange(position.x, position.y)) { - elements.push(element); - return elements; - } - }); - - return elements.slice(0, 1); - }, - - /** - * @function Chart.Interaction.modes.label - * @deprecated since version 2.4.0 - * @todo remove at version 3 - * @private - */ - label: indexMode, - /** * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item @@ -200,16 +178,6 @@ module.exports = { return items; }, - /** - * @function Chart.Interaction.modes.x-axis - * @deprecated since version 2.4.0. Use index mode and intersect == true - * @todo remove at version 3 - * @private - */ - 'x-axis': function(chart, e) { - return indexMode(chart, e, {intersect: false}); - }, - /** * Point mode returns all elements that hit test based on the event position * of the event diff --git a/test/specs/controller.line.tests.js b/test/specs/controller.line.tests.js index 6d3e861f8..2216753c4 100644 --- a/test/specs/controller.line.tests.js +++ b/test/specs/controller.line.tests.js @@ -244,7 +244,8 @@ describe('Chart.controllers.line', function() { legend: false, title: false, hover: { - mode: 'single' + mode: 'nearest', + intersect: true }, scales: { xAxes: [{ diff --git a/test/specs/core.controller.tests.js b/test/specs/core.controller.tests.js index 010235f47..e41f24a4d 100644 --- a/test/specs/core.controller.tests.js +++ b/test/specs/core.controller.tests.js @@ -87,7 +87,7 @@ describe('Chart', function() { defaults.global.responsiveAnimationDuration = 0; defaults.global.hover.onHover = null; defaults.line.spanGaps = false; - defaults.line.hover.mode = 'label'; + defaults.line.hover.mode = 'index'; }); it('should override default options', function() { @@ -122,7 +122,7 @@ describe('Chart', function() { defaults.global.responsiveAnimationDuration = 0; defaults.global.hover.onHover = null; - defaults.line.hover.mode = 'label'; + defaults.line.hover.mode = 'index'; defaults.line.spanGaps = false; }); diff --git a/test/specs/core.tooltip.tests.js b/test/specs/core.tooltip.tests.js index bda878f85..741c4944d 100755 --- a/test/specs/core.tooltip.tests.js +++ b/test/specs/core.tooltip.tests.js @@ -257,7 +257,8 @@ describe('Core.Tooltip', function() { }, options: { tooltips: { - mode: 'single' + mode: 'nearest', + intersect: true } } }); @@ -366,7 +367,7 @@ describe('Core.Tooltip', function() { }, options: { tooltips: { - mode: 'label', + mode: 'index', callbacks: { beforeTitle: function() { return 'beforeTitle'; @@ -519,7 +520,7 @@ describe('Core.Tooltip', function() { }, options: { tooltips: { - mode: 'label', + mode: 'index', itemSort: function(a, b) { return a.datasetIndex > b.datasetIndex ? -1 : 1; } @@ -600,7 +601,7 @@ describe('Core.Tooltip', function() { }, options: { tooltips: { - mode: 'label', + mode: 'index', reverse: true } } @@ -681,7 +682,7 @@ describe('Core.Tooltip', function() { }, options: { tooltips: { - mode: 'label' + mode: 'index' } } }); @@ -760,7 +761,7 @@ describe('Core.Tooltip', function() { }, options: { tooltips: { - mode: 'label', + mode: 'index', filter: function(tooltipItem, data) { // For testing purposes remove the first dataset that has a tooltipHidden property return !data.datasets[tooltipItem.datasetIndex].tooltipHidden; @@ -885,7 +886,8 @@ describe('Core.Tooltip', function() { }, options: { tooltips: { - mode: 'single' + mode: 'nearest', + intersect: true } } }); @@ -935,7 +937,8 @@ describe('Core.Tooltip', function() { }, options: { tooltips: { - mode: 'single', + mode: 'nearest', + intersect: true, callbacks: { title: function() { return 'registering callback...'; @@ -1123,7 +1126,7 @@ describe('Core.Tooltip', function() { }, options: { tooltips: { - mode: 'label', + mode: 'index', callbacks: { beforeTitle: function() { return 'beforeTitle\nnewline';