Merge pull request #2680 from chartjs/fix/clipping

Remove clipping and add plugin hooks.
This commit is contained in:
Evert Timberg 2016-06-02 20:35:39 -04:00
commit 829c2be2bc
2 changed files with 6 additions and 9 deletions

View File

@ -399,7 +399,10 @@ Plugins should derive from Chart.PluginBase and implement the following interfac
// Easing is for animation // Easing is for animation
beforeDraw: function(chartInstance, easing) { }, beforeDraw: function(chartInstance, easing) { },
afterDraw: function(chartInstance, easing) { } afterDraw: function(chartInstance, easing) { },
// Before the datasets are drawn but after scales are drawn
beforeDatasetDraw: function(chartInstance, easing) { },
afterDatasetDraw: function(chartInstance, easing) { },
destroy: function(chartInstance) { } destroy: function(chartInstance) { }
} }

View File

@ -288,12 +288,7 @@ module.exports = function(Chart) {
this.scale.draw(); this.scale.draw();
} }
// Clip out the chart area so that anything outside does not draw. This is necessary for zoom and pan to function Chart.pluginService.notifyPlugins('beforeDatasetDraw', [this, easingDecimal]);
var context = this.chart.ctx;
context.save();
context.beginPath();
context.rect(this.chartArea.left, this.chartArea.top, this.chartArea.right - this.chartArea.left, this.chartArea.bottom - this.chartArea.top);
context.clip();
// Draw each dataset via its respective controller (reversed to support proper line stacking) // Draw each dataset via its respective controller (reversed to support proper line stacking)
helpers.each(this.data.datasets, function(dataset, datasetIndex) { helpers.each(this.data.datasets, function(dataset, datasetIndex) {
@ -302,8 +297,7 @@ module.exports = function(Chart) {
} }
}, this, true); }, this, true);
// Restore from the clipping operation Chart.pluginService.notifyPlugins('afterDatasetDraw', [this, easingDecimal]);
context.restore();
// Finally draw the tooltip // Finally draw the tooltip
this.tooltip.transition(easingDecimal).draw(); this.tooltip.transition(easingDecimal).draw();