D3js est une bibliothèque permettant de créer des graphiques et diagrammes interactifs, mais pour l'instant, l'utilisateur n'a qu'un rôle d'observateur, il est temps de rajouter un peu d'interactivité.
D3js propose une méthode permettant à l'utilisateur d'interagir avec le graphique ou le diagramme : la méthode on. Cette méthode on est associée à un élément créé par D3js
L méthode on prend 2 paramètres :
Voici les principales "actions" :
script.js
var tab=[30,150,27,85,3,12];
var body=d3.select("body");
var para=body.selectAll("p").data(tab);
para.enter()
.append("p")
.text(function(d,i){
return ("La valeur n°"+i+" du tableau est : "+d)
});
para.on("click",function(){
d3.select(this)
.style("color","red")
});
Analysez et testez ce code
Vérifiez que si vous cliquez sur une phrase, elle devient rouge
Seule petite difficulté, le this du d3.select(this). Ce this désigne l'élément courant, dans notre cas this désigne le paragraphe sur lequel l'utilisateur a cliqué. Cela permet de différencier chaque paragraphe.
Complétez le code ci-dessous afin d'obtenir ceci (passez avec le curseur de la souris sur les disques) :
var tab=[20,15,22,25,30,12];
var body=d3.select("body");
var svg=body.append("svg");
svg.attr({"width":"500px","height":"200px"});
var disque=svg.selectAll("circle").data(tab);
disque.enter()
.append("circle")
.attr("cx",function(d,i){
return (30+60*i)
})
.attr("cy",function(d,i){
return 100
})
.attr("r",function(d,i){
return (d)
});
..............
..............
..............
..............
..............