J'ai un graphique en forme d'anneau ChartJS que j'aimerais cliquer sur un segment et il affiche des informations sur le segment au centre du graphique. Cela fonctionne, mais chaque fois que la souris quitte le segment de graphique, les informations disparaissent, je veux qu'il reste jusqu'à ce qu'un autre segment de graphique soit cliqué.Dessiner sur du canevas permet d'effacer du texte lorsque la souris quitte le graphique
Je mets un exemple de base de cette situation sur JSFIDDLE
canvas.onclick = function(evt) {
var activePoints = donut.getElementsAtEvent(evt);
if(activePoints[0]) {
var chartData = activePoints[0]['_chart'].config.data;
var idx = activePoints[0]['_index'];
var label = chartData.labels[idx].toUpperCase();
ctx.font = "bold 18px Verdana, Arial, sans-serif";
var textWidth = ctx.measureText(label).width;
ctx.fillStyle = "#000";
ctx.fillText(label, (250/2) - (textWidth/2), (250/2));
}
};
Comment puis-je maintenir le texte dans le centre de la carte?
Pouvez-vous obtenir que travailler dans le jsFiddle? J'ai essayé et rien n'est différent (https://jsfiddle.net/fa7s5q30/7/). Déplacer tout le code à 'afterDraw' donne https://jsfiddle.net/fa7s5q30/8/. – anothershrubery
Bien sûr, j'ai mis à jour ma réponse. 'afterDraw' est appelé à chaque fois que le graphique est repeint (ce qui est également le cas lors du déplacement de la souris). Vous devez donc stocker l'étiquette sélectionnée quelque part, sinon elle sera effacée. J'ai choisi de l'attacher à l'instance de graphique. –
Cela fonctionne très bien dans Chrome, mais il n'affiche pas le graphique dans IE11. Ne signale aucun problème dans le débogueur non plus. En tout cas ça? – anothershrubery