PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.8.8
Independent Analytics – WordPress Analytics Plugin v2.8.8
2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / javascript-source / chart_plugins / html_legend_plugin.js
independent-analytics / javascript-source / chart_plugins Last commit date
corsair_plugin.js 2 years ago html_legend_plugin.js 2 years ago
html_legend_plugin.js
70 lines
1 module.exports = {
2 id: 'htmlLegend',
3 getLegendContainer(options) {
4 if (options.container instanceof HTMLElement) {
5 return options.container
6 } else {
7 return document.getElementById(options.containerID);
8 }
9 },
10 afterUpdate(chart, args, options) {
11 const legendContainer = this.getLegendContainer(options)
12 let legendList = legendContainer.querySelector('ul');
13
14 // Create a list as needed
15 if (!legendList) {
16 legendList = document.createElement('ul');
17 legendList.classList.add('legend-list');
18 legendContainer.appendChild(legendList);
19 }
20
21 // Remove old legend items
22 while (legendList.firstChild) {
23 legendList.firstChild.remove();
24 }
25
26 // Reuse the built-in legendItems generator
27 const items = chart.options.plugins.legend.labels.generateLabels(chart);
28
29 items.forEach((legendData) => {
30 const id = chart.data.datasets.find((dataset) => dataset.label === legendData.text).id
31 const li = document.createElement('li');
32
33 li.onclick = () => {
34 const {type} = chart.config;
35 if (type === 'pie' || type === 'doughnut') {
36 // Pie and doughnut charts only have a single dataset and visibility is per item
37 chart.toggleDataVisibility(legendData.index);
38 } else {
39 chart.setDatasetVisibility(legendData.datasetIndex, !chart.isDatasetVisible(legendData.datasetIndex));
40 }
41 chart.update();
42 if (typeof options.callback === 'function') {
43 const visibleDatasets = chart.data.datasets.filter((dataset, index) => {
44 return chart.isDatasetVisible(index);
45 }).map((dataset) => {
46 return dataset.id
47 })
48 options.callback(visibleDatasets)
49 }
50 };
51
52 li.classList.add('legend-item', `legend-item-for-${id}`)
53
54 if (legendData.hidden) {
55 li.classList.add('hidden')
56 }
57
58 // Color box
59 const boxSpan = document.createElement('span');
60
61 // Text
62 const textContainer = document.createElement('p');
63 textContainer.textContent = legendData.text
64
65 li.appendChild(boxSpan);
66 li.appendChild(textContainer);
67 legendList.appendChild(li);
68 });
69 }
70 };