From ac0a86b95d7c53d6743d5f48fa895edca1ccd483 Mon Sep 17 00:00:00 2001 From: Evert Timberg Date: Sun, 4 Apr 2021 23:48:59 -0400 Subject: [PATCH] Document plugin event handling (#8828) --- docs/developers/event_flowchart.png | Bin 0 -> 38182 bytes docs/developers/plugin_flowcharts.drawio | 2 +- docs/developers/plugins.md | 6 ++++++ 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 docs/developers/event_flowchart.png diff --git a/docs/developers/event_flowchart.png b/docs/developers/event_flowchart.png new file mode 100644 index 0000000000000000000000000000000000000000..08ee5ed4ca89b920926d72820e885eaaa0ddda02 GIT binary patch literal 38182 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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs/developers/plugins.md b/docs/developers/plugins.md index 95beb1453..2fe6eb4b6 100644 --- a/docs/developers/plugins.md +++ b/docs/developers/plugins.md @@ -141,3 +141,9 @@ Plugins are notified during throughout the update process. Plugins can interact with the chart throughout the render process. The rendering process is documented in the flowchart below. Each of the green processes is a plugin notification. The red lines indicate how cancelling part of the render process can occur when a plugin returns `false` from a hook. Not all hooks are cancelable, however, in general most `before*` hooks can be cancelled. ![Chart.js render pipeline flowchart](./render_flowchart.png) + +### Event Handling + +Plugins can interact with the chart during the event handling process. The event handling flow is documented in the flowchart below. Each of the green processes is a plugin notification. If a plugin makes changes that require a re-render, the plugin can set `args.changed` to `true` to indicate that a render is needed. The built-in tooltip plugin uses this method to indicate when the tooltip has changed. + +![Chart.js event handling flowchart](./event_flowchart.png) -- 2.47.3