mirror of
https://github.com/chartjs/Chart.js.git
synced 2025-12-08 20:36:08 +00:00
Add "beforeTooltipDraw" and "afterTooltipDraw" plugin hooks (#4793)
This commit is contained in:
parent
c83b03f668
commit
8ac0257f8d
@ -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) {
|
||||
|
||||
@ -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`,
|
||||
|
||||
@ -884,6 +884,8 @@ describe('Chart', function() {
|
||||
'beforeDatasetDraw',
|
||||
'afterDatasetDraw',
|
||||
'afterDatasetsDraw',
|
||||
'beforeTooltipDraw',
|
||||
'afterTooltipDraw',
|
||||
'afterDraw',
|
||||
'afterRender',
|
||||
],
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user