]> git.ipfire.org Git - thirdparty/Chart.js.git/commitdiff
Add legend events sample (#8795)
authorJukka Kurkela <jukka.kurkela@gmail.com>
Sat, 3 Apr 2021 12:13:38 +0000 (15:13 +0300)
committerGitHub <noreply@github.com>
Sat, 3 Apr 2021 12:13:38 +0000 (08:13 -0400)
* Add legend events sample
* review update

docs/.vuepress/config.js
docs/samples/legend/events.md [new file with mode: 0644]

index b23375e1aa5030d907089fc21ff9a4d4f15ed4ef..679ac299a6732bf5ba51c1abe63eff93ea245548 100644 (file)
@@ -165,6 +165,7 @@ module.exports = {
             'legend/position',
             'legend/title',
             'legend/point-style',
+            'legend/events',
           ]
         },
         {
diff --git a/docs/samples/legend/events.md b/docs/samples/legend/events.md
new file mode 100644 (file)
index 0000000..01a3bd0
--- /dev/null
@@ -0,0 +1,57 @@
+# Events
+
+This sample demonstrates how to use the event hooks to highlight chart elements.
+
+```js chart-editor
+
+// <block:data:3>
+const data = {
+  labels: ['Red', 'Blue', 'Yellow', 'Green', 'Purple', 'Orange'],
+  datasets: [{
+    label: '# of Votes',
+    data: [12, 19, 3, 5, 2, 3],
+    borderWidth: 1,
+    backgroundColor: ['#CB4335', '#1F618D', '#F1C40F', '#27AE60', '#884EA0', '#D35400'],
+  }]
+};
+// </block:data>
+
+// <block:handleHover:1>
+// Append '4d' to the colors (alpha channel), except for the hovered index
+function handleHover(evt, item, legend) {
+  legend.chart.data.datasets[0].backgroundColor.forEach((color, index, colors) => {
+    colors[index] = index === item.index || color.length === 9 ? color : color + '4D';
+  });
+  legend.chart.update();
+}
+// </block:handleHover>
+
+// <block:handleLeave:2>
+// Removes the alpha channel from background colors
+function handleLeave(evt, item, legend) {
+  legend.chart.data.datasets[0].backgroundColor.forEach((color, index, colors) => {
+    colors[index] = color.length === 9 ? color.slice(0, -2) : color;
+  });
+  legend.chart.update();
+}
+// </block:handleLeave>
+
+// <block:config:0>
+const config = {
+  type: 'pie',
+  data: data,
+  options: {
+    plugins: {
+      legend: {
+        onHover: handleHover,
+        onLeave: handleLeave
+      }
+    }
+  }
+};
+// </block:config>
+
+module.exports = {
+  config
+};
+```