J'essaie de comprendre comment utiliser la fonction attrTween dans D3. J'essaie d'implémenter un camembert à partir de l'exemple suivant : http://bl.ocks.org/mbostock/5100636 .
J'ai cependant des problèmes lorsque j'arrive à la partie de la transition.
private populateGauge(): void {
const innerRadius = this.radius - 50;
const outerRadius = this.radius - 10;
const arc = d3
.arc()
.innerRadius(innerRadius)
.outerRadius(outerRadius)
.startAngle(0);
const background = this.svg
.append('path')
.datum({ endAngle: this.tau })
.style('fill', '#ddd')
.attr('d', arc);
this.myEndAngle = { endAngle: (this.gaugeData.value / 100) * this.tau };
const foreground = this.svg
.append('path')
.datum(this.myEndAngle)
.style('fill', 'orange')
.attr('d', arc);
foreground
.transition()
.duration(1500)
.attrTween('d', function(newAngle) {
return function(d) {
const interpolate = d3.interpolate(d.endAngle, newAngle);
return function(t) {
d.endAngle = interpolate(t);
return arc(d);
};
};
});
}
J'ai essayé d'utiliser des cas de base simples et d'utiliser des 0 dans la fonction d'interpolation, mais je n'arrive pas à me débarrasser d'une erreur finale, que la dernière instruction de retour provoque (return arc(d)) ;
L'argument de type 'nombre' n'est pas assignable à un paramètre de type 'DefaultArcObject'.
Comment contourner ces problèmes ? Faites-moi savoir si vous avez besoin de plus d'informations.