2017-09-22 4 views
0

Je construis une série de graphiques en anneau et je voudrais supprimer le second élément de la légende, donc quand je génère la légende avec la méthode generateLegend() je veux juste pour obtenir la première valeur.Filtrer une légende Article avec Chartjs.org V2.7

Dans le documentation il y a une option qui lit

Filtres éléments de la légende de la légende. Reçoit 2 paramètres, un élément de légende et les données de graphique

Mais je ne trouve pas d'exemple comment l'utiliser. Dans ce Pen vous pouvez voir les 2 étiquettes au milieu, je veux juste montrer la première étiquette. J'ai essayé différentes approches sans succès. Juste la suppression de l'article ne fonctionne pas pour moi parce que l'article <li> toujours là. Voici le code que j'utilise.

$id = function(id) { 
    return document.getElementById(id); 
}; 

var langDataEs = { 
    type: "doughnut", 
    data: { 
    datasets: [ 
     { 
     data: [75, 25], 
     backgroundColor: ["#8dc63f", "#1d1d1d"] 
     } 
    ], 
    labels: ["es", "learning"] 
    }, 
    options: { 
    legend: { 
     display: false, 
     /* I would like to remove the item "learning" */ 
     filter: function() { 

     }, 
    }, 
    responsive: true 
    } 
}; 

langChartEs = new Chart($id("langEs").getContext("2d"), langDataEs); 
$id("es").innerHTML = langChartEs.generateLegend(); 

Merci d'avance pour les pointeurs.

+0

OMG, je suis tellement concentré sur le faire Vïa JavaScript que je ne pensais jamais à CSS, je vais cacher le deuxième enfant pour l'instant, je ne vais pas accepter votre réponse pour l'instant pour voir si quelqu'un est venu peut avec une solution JavaScript juste pour apprendre, merci beaucoup. – ryangus

Répondre

1

La fonction de filtre fonctionne exactement comme le Array.prototype.filter natif de Javascript. Il suffit donc de retourner true si vous voulez montrer la légende à un index particulier.

EDIT: La fonction de filtre entrerait dans le champ labels.

legend: { 
     display: true, 
     labels: { 
      filter: function(legendItem, data) { 
       return legendItem.index != 1 
      } 
     } 
} 
+0

J'ai essayé [ici] (https://codepen.io/ryansegus/pen/VMKqdN) comme vous avez sugested mais il ne semble pas fonctionner pour moi ou je le fais mal ... – ryangus

+0

Désolé ... mon mauvais . Vérifiez ma version éditée! Esperons que ça marche. – dsaket

+1

Aussi c'est 'legendItem.index' au lieu de' legendItem.datasetIndex' – dsaket