Je souhaite désactiver chart.js Cliquez sur la légende du graphique Spider car lorsque je clique sur la légende, la série de données masque l’ensemble de valeurs associé, comme indiqué dans les images ci-dessous.
Mon exigence est que je ne veux pas désactiver l’dataset. J’ai essayé le preventDefault (); sur la carte cliquez mais cela ne fonctionne pas.
Mon exemple de code est joint ci-dessous. Vérifiez s’il vous plaît..
Radar Chart var randomScalingFactor = function() { return Math.round(Math.random() * 100); }; var randomColorFactor = function() { return Math.round(Math.random() * 255); }; var randomColor = function(opacity) { return 'rgba(' + randomColorFactor() + ',' + randomColorFactor() + ',' + randomColorFactor() + ',' + (opacity || '.3') + ')'; }; var config = { type: 'radar', data: { labels: ["Eating", "Drinking", "Sleeping", "Designing", "Coding", "Cycling", "Running"], datasets: [{ label: "My First dataset", backgroundColor: "rgba(0,0,0,0.5)", pointBackgroundColor: "rgba(220,220,220,1)", data: [randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor()] }, { label: "My Second dataset", backgroundColor: "rgba(0,120,0,0.5)", pointBackgroundColor: "rgba(151,187,205,1)", hoverPointBackgroundColor: "#fff", pointHighlightStroke: "rgba(151,187,205,1)", data: [randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor(), randomScalingFactor()] },] }, options: { legend: { position: 'top', onClick: (e) => e.stopPropagation() }, title: { display: true, text: '' }, scale: { reverse: false, gridLines: { color: ['black'] }, ticks: { beginAtZero: true } } } }; window.onload = function() { window.myRadar = new Chart(document.getElementById("canvas"), config); };
Selon la documentation, il existe un gestionnaire onClick
pour la légende qui expose l’object événement. Si vous stopPropagation
, la série de données sera masquée:
let chart = new Chart(elem.find('canvas')[0], { type: 'line', data: { labels: [], datasets: [] }, options: { responsive: true, maintainAspectRatio: false, legend: { onClick: (e) => e.stopPropagation() } } });
Ce qui précède est ES6, si vous n’utilisez pas de navigateur pris en charge, c’est le plus ancien équivalent de ES5.
legend: { onClick: function (e) { e.stopPropagation(); } }
Chartjs doit enregistrer son propre événement de clic après le legend.onClick
raison pour laquelle il arrête son exécution.
docs
Pour remplacer le comportement par défaut consistant à cliquer sur un élément de légende, qui affiche / masque le jeu de données associé dans le graphique, vous pouvez utiliser l’option suivante (affichée dans les options
pour plus de clarté):
options: { legend: { onClick: function(event, legendItem) {} } }
C’est le moyen de remplacer le comportement par défaut, c’est-à-dire en fournissant une fonction avec les mêmes arguments. Selon vos besoins, cette fonction devrait avoir un corps vide (et donc revenir immédiatement), car rien ne devrait se passer lorsque vous cliquez sur un élément de légende. Recherchez legend.onClick
dans la documentation . Bien qu’elle n’apparaisse actuellement que dans deux types de graphique, cette option devrait fonctionner pour tous les types de graphique.
En outre, vous pouvez utiliser la valeur null
ou une valeur évaluée à false
pour désactiver l’événement de clic sur toutes les légendes.
options: { legend: { onClick: null } }
Remarque: Ignorez l’événement click de onClick
sur le code suivant dans Chart.js ( https://github.com/chartjs/Chart.js/blob/6bea15e7cf89003e3a59cf1d2cc5096728e/src/plugins/plugin.legend.legend.js#L481 ).