Add "beforeTooltipDraw" and "afterTooltipDraw" plugin hooks (#4793)

This commit is contained in:
JewelsJLF 2017-10-14 15:29:35 -06:00 committed by Simon Brunel
parent c83b03f668
commit 8ac0257f8d
3 changed files with 46 additions and 3 deletions

View File

@ -528,9 +528,7 @@ module.exports = function(Chart) {
}
me.drawDatasets(easingValue);
// Finally draw the tooltip
me.tooltip.draw();
me._drawTooltip(easingValue);
plugins.notify(me, 'afterDraw', [easingValue]);
},
@ -595,6 +593,28 @@ module.exports = function(Chart) {
plugins.notify(me, 'afterDatasetDraw', [args]);
},
/**
* Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`
* hook, in which case, plugins will not be called on `afterTooltipDraw`.
* @private
*/
_drawTooltip: function(easingValue) {
var me = this;
var tooltip = me.tooltip;
var args = {
tooltip: tooltip,
easingValue: easingValue
};
if (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {
return;
}
tooltip.draw();
plugins.notify(me, 'afterTooltipDraw', [args]);
},
// Get the single element that was clicked on
// @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw
getElementAtEvent: function(e) {

View File

@ -323,6 +323,27 @@ module.exports = function(Chart) {
* @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.
* @param {Object} options - The plugin options.
*/
/**
* @method IPlugin#beforeTooltipDraw
* @desc Called before drawing the `tooltip`. If any plugin returns `false`,
* the tooltip drawing is cancelled until another `render` is triggered.
* @param {Chart} chart - The chart instance.
* @param {Object} args - The call arguments.
* @param {Object} args.tooltip - The tooltip.
* @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.
* @param {Object} options - The plugin options.
* @returns {Boolean} `false` to cancel the chart tooltip drawing.
*/
/**
* @method IPlugin#afterTooltipDraw
* @desc Called after drawing the `tooltip`. Note that this hook will not
* be called if the tooltip drawing has been previously cancelled.
* @param {Chart} chart - The chart instance.
* @param {Object} args - The call arguments.
* @param {Object} args.tooltip - The tooltip.
* @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.
* @param {Object} options - The plugin options.
*/
/**
* @method IPlugin#beforeEvent
* @desc Called before processing the specified `event`. If any plugin returns `false`,

View File

@ -884,6 +884,8 @@ describe('Chart', function() {
'beforeDatasetDraw',
'afterDatasetDraw',
'afterDatasetsDraw',
'beforeTooltipDraw',
'afterTooltipDraw',
'afterDraw',
'afterRender',
],