From b2c7baf10dbd6ed89015a4f3be48e8625b39d79a Mon Sep 17 00:00:00 2001 From: Jukka Kurkela Date: Sat, 27 Mar 2021 12:11:51 +0200 Subject: [PATCH] Avoid recursive event replay loops (#8738) * chart._lastEvent = null while processing onHover * Pass replay flag to external tooltip * Add test for replay * cc --- src/core/core.controller.js | 15 +++--- src/plugins/plugin.tooltip.js | 6 +-- .../controller.doughnut/event-replay.js | 50 ++++++++++++++++++ .../controller.doughnut/event-replay.png | Bin 0 -> 40367 bytes test/specs/plugin.tooltip.tests.js | 6 +-- 5 files changed, 65 insertions(+), 12 deletions(-) create mode 100644 test/fixtures/controller.doughnut/event-replay.js create mode 100644 test/fixtures/controller.doughnut/event-replay.png diff --git a/src/core/core.controller.js b/src/core/core.controller.js index 8a8e6984e..a0458616f 100644 --- a/src/core/core.controller.js +++ b/src/core/core.controller.js @@ -1075,8 +1075,7 @@ class Chart { */ _handleEvent(e, replay) { const me = this; - const lastActive = me._active || []; - const options = me.options; + const {_active: lastActive = [], options} = me; const hoverOptions = options.hover; // If the event is replayed from `update`, we should evaluate with the final positions. @@ -1096,14 +1095,16 @@ class Chart { let active = []; let changed = false; + let lastEvent = null; // Find Active Elements for hover and tooltips - if (e.type === 'mouseout') { - me._lastEvent = null; - } else { + if (e.type !== 'mouseout') { active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition); - me._lastEvent = e.type === 'click' ? me._lastEvent : e; + lastEvent = e.type === 'click' ? me._lastEvent : e; } + // Set _lastEvent to null while we are processing the event handlers. + // This prevents recursion if the handler calls chart.update() + me._lastEvent = null; // Invoke onHover hook callCallback(options.onHover || hoverOptions.onHover, [e, active, me], me); @@ -1120,6 +1121,8 @@ class Chart { me._updateHoverStyles(active, lastActive, replay); } + me._lastEvent = lastEvent; + return changed; } } diff --git a/src/plugins/plugin.tooltip.js b/src/plugins/plugin.tooltip.js index 6a488f01c..7b59d9493 100644 --- a/src/plugins/plugin.tooltip.js +++ b/src/plugins/plugin.tooltip.js @@ -524,7 +524,7 @@ export class Tooltip extends Element { return tooltipItems; } - update(changed) { + update(changed, replay) { const me = this; const options = me.options.setContext(me.getContext()); const active = me._active; @@ -574,7 +574,7 @@ export class Tooltip extends Element { } if (changed && options.external) { - options.external.call(me, {chart: me._chart, tooltip: me}); + options.external.call(me, {chart: me._chart, tooltip: me, replay}); } } @@ -1023,7 +1023,7 @@ export class Tooltip extends Element { y: e.y }; - me.update(true); + me.update(true, replay); } } diff --git a/test/fixtures/controller.doughnut/event-replay.js b/test/fixtures/controller.doughnut/event-replay.js new file mode 100644 index 000000000..fc367c358 --- /dev/null +++ b/test/fixtures/controller.doughnut/event-replay.js @@ -0,0 +1,50 @@ +function drawMousePoint(ctx, center) { + ctx.beginPath(); + ctx.arc(center.x, center.y, 8, 0, Math.PI * 2); + ctx.fillStyle = 'yellow'; + ctx.fill(); +} + +const canvas = document.createElement('canvas'); +canvas.width = 512; +canvas.height = 512; +const ctx = canvas.getContext('2d'); + +module.exports = { + config: { + type: 'pie', + data: { + datasets: [{ + backgroundColor: ['red', 'green', 'blue'], + hoverBackgroundColor: 'black', + data: [1, 1, 1] + }] + } + }, + options: { + canvas: { + width: 512, + height: 512 + }, + async run(chart) { + ctx.drawImage(chart.canvas, 0, 0, 256, 256); + + const arc = chart.getDatasetMeta(0).data[0]; + const center = arc.getCenterPoint(); + await jasmine.triggerMouseEvent(chart, 'mousemove', arc); + drawMousePoint(chart.ctx, center); + ctx.drawImage(chart.canvas, 256, 0, 256, 256); + + chart.toggleDataVisibility(0); + chart.update(); + drawMousePoint(chart.ctx, center); + ctx.drawImage(chart.canvas, 0, 256, 256, 256); + + await jasmine.triggerMouseEvent(chart, 'mouseout', arc); + ctx.drawImage(chart.canvas, 256, 256, 256, 256); + + Chart.helpers.clearCanvas(chart.canvas); + chart.ctx.drawImage(canvas, 0, 0); + } + } +}; diff --git a/test/fixtures/controller.doughnut/event-replay.png b/test/fixtures/controller.doughnut/event-replay.png new file mode 100644 index 0000000000000000000000000000000000000000..5d14360699b3546a3202105769cc7c0b7f32ff5d GIT binary patch literal 40367 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 literal 0 HcmV?d00001 diff --git a/test/specs/plugin.tooltip.tests.js b/test/specs/plugin.tooltip.tests.js index 2a1fe22fe..20ca9428b 100644 --- a/test/specs/plugin.tooltip.tests.js +++ b/test/specs/plugin.tooltip.tests.js @@ -917,7 +917,7 @@ describe('Plugin.Tooltip', function() { // First dispatch change event, should update tooltip await jasmine.triggerMouseEvent(chart, 'mousemove', firstPoint); - expect(tooltip.update).toHaveBeenCalledWith(true); + expect(tooltip.update).toHaveBeenCalledWith(true, undefined); // Reset calls tooltip.update.calls.reset(); @@ -980,7 +980,7 @@ describe('Plugin.Tooltip', function() { // First dispatch change event, should update tooltip await jasmine.triggerMouseEvent(chart, 'mousemove', firstPoint); - expect(tooltip.update).toHaveBeenCalledWith(true); + expect(tooltip.update).toHaveBeenCalledWith(true, undefined); // Reset calls tooltip.update.calls.reset(); @@ -988,7 +988,7 @@ describe('Plugin.Tooltip', function() { // Second dispatch change event (same event), should update tooltip // because position mode is 'nearest' await jasmine.triggerMouseEvent(chart, 'mousemove', secondPoint); - expect(tooltip.update).toHaveBeenCalledWith(true); + expect(tooltip.update).toHaveBeenCalledWith(true, undefined); }); describe('positioners', function() {