
La librairie Chart.js est installĂ©e sur votre ordinateur, mais vous ne savez pas encore comment lâutiliser. Câest ce que nous allons voir dans ce chapitre en nous aidant de la documentation officielle. Alors câest parti !
Lorsque vous utilisez une librairie que vous ne connaissez pas, le premier rĂ©flexe Ă adopter est de vous documenter sur cette librairie. Pas de chance pour vous, le site de NPM ne propose pas de page de description pour la librairie Chart.js. đ©
Pas dâinquiĂ©tude cependant, vous trouverez toujours des informations utiles sur la droite de la page de description sur le site NPM.

En cliquant sur lâURL âRepositoryâ, vous arriverez sur le dĂ©pĂŽt de code source, le plus souvent hĂ©bergĂ© sur GitHub. Vous devriez aussi avoir une URL intitulĂ©e âHomepageâ en dessous de lâURL âRepositoryâ. Cliquez dessus pour vous rendre sur la page dâaccueil de la librairie.

Une fois arrivĂ© sur la page dâaccueil, cliquez sur le bouton âGet Startedâ pour accĂ©der Ă la documentation.

La documentation est composĂ©e de plusieurs Ă©lĂ©ments. La page dâaccueil contient les liens Ă suivre pour installer la librairie selon sa situation. En dessous, vous trouverez un exemple dâutilisation de la librairie sous la forme dâextrait de code.
Le menu Ă gauche organise le contenu de la documentation grĂące Ă un sommaire. On y retrouve le âGetting Startedâ, des informations gĂ©nĂ©rales, et des informations spĂ©cifiques aux types de graphiques et Ă la documentation de lâAPI. Ă vous dâexplorer le site Ă la recherche de ce dont vous avez besoin. đ
La documentation nous indique quâil faut ajouter une balise script dans notre fichier HTML pour importer la librairie dans notre page. Comme nous lâavons vu au chapitre prĂ©cĂ©dent, les paquets tĂ©lĂ©chargĂ©s avec la commande NPM sâinstallent dans le rĂ©pertoire node_modules. En explorant ce rĂ©pertoire, on peut trouver lâemplacement du fichier Ă importer : node_modules/chart.js/dist/chart.umd.js.
Nous ajoutons donc la balise script avec le bon chemin, dans le fichier index.html :
<head>
...
<script src="node_modules/chart.js/dist/chart.umd.js" defer></script>
</head>Continuons de suivre la documentation. Sur la page Get Started, on nous indique quâil faut ajouter une balise canvas. Cette balise permet de dessiner librement Ă lâĂ©cran, en utilisant des lignes et des formes gĂ©omĂ©triques.
Ajoutons la balise canvas dans la balise section, aprÚs le bouton de mise à jour des piÚces :
<h3>Aperçu des avis</h3>
<canvas id="graphique-avis" width="300" height="300"></canvas>Il faut maintenant trouver un type de graphique adaptĂ© Ă notre besoin. La documentation de Chart.js en propose dĂ©jĂ plusieurs sous le titre âChart Typesâ. Parmi les liens proposĂ©s, lâoption âBar Chartâ est probablement celle qui nous correspond.

Cependant, les barres sont verticales, alors que nous les voudrions Ă lâhorizontale. Heureusement, en bas de la page, la documentation nous explique quelle option utiliser pour passer en mode horizontal. Câest parfait ! Nous avons trouvĂ© le graphique adaptĂ©, et nous avons des exemples pour nous aider.
Avant dâafficher le graphique Ă lâĂ©cran, nous avons besoin de calculer les donnĂ©es qui seront affichĂ©es. La rĂ©ponse de lâAPI HTTP Ă la requĂȘte GET /avis contient tous les avis, avec le nombre dâĂ©toiles attribuĂ©es par chaque commentaire. Nous utilisons donc les donnĂ©es des avis pour calculer une liste de nombres correspondant Ă la quantitĂ© de commentaires avec une Ă©toile, avec deux Ă©toiles, et ainsi de suite.
On rajoute ce code de calcul Ă la fin du fichier avis.js dans une fonction asynchrone afficherGraphiqueAvis()Â :
export async function afficherGraphiqueAvis(){
// Votre code ici
}
// Calcul du nombre total de commentaires par quantité d'étoiles attribuées
const avis = await fetch("http://localhost:8081/avis").then(avis => avis.json());
const nb_commentaires = [0, 0, 0, 0, 0];
for (let commentaire of avis) {
nb_commentaires[commentaire.nbEtoiles - 1]++;
}AprĂšs la boucle, on se retrouve avec la constante nb_commentaires qui contient une liste de nombres, [1, 1, 3, 6, 9]. Câest-Ă -dire quâil y a neuf commentaires qui ont attribuĂ© 5 étoiles, six commentaires qui ont attribuĂ© 4 étoiles, et ainsi de suite.
Nous avons calculĂ© les donnĂ©es Ă afficher, intĂ©ressons-nous maintenant Ă lâutilisation de la librairie Ă proprement parler. đ
Dans un premier temps, on configure une liste qui servira de légende aux barres horizontales. Le premier élément de la liste sera la barre la plus haute sur le graphique.
// Légende qui s'affichera sur la gauche à cÎté de la barre horizontale
const labels = ["5", "4", "3", "2", "1"];Dans un deuxiĂšme temps, on rassemble toutes les donnĂ©es visibles sur le graphique dans un objet data. On y retrouve deux propriĂ©tĂ©s : labels et datasets. La premiĂšre a comme valeur la liste labels que lâon a dĂ©finie juste avant, et la deuxiĂšme est une liste dâobjets.
// Données et personnalisation du graphique
const data = {
labels: labels,
datasets: [{
label: "Ătoiles attribuĂ©es",
data: nb_commentaires.reverse(),
backgroundColor: "rgba(255, 230, 0, 1)", // couleur jaune
}],
};Revenons ensemble sur la propriété datasets. Un objet de cette liste peut contenir, à son tour, plusieurs propriétés :
label : le nom de la série de données. Elle s'affiche en haut du graphique avec la couleur correspondante utilisée pour les barres ;
data : les données à mettre en forme ;
backgroundColor : une chaßne de caractÚres spécifiant le code couleur pour la série de données.
Pour le moment, la liste nb_commentaires prĂ©sente le nombre de commentaires par ordre croissant dâĂ©toiles (de 1 Ă 5 Ă©toiles). Nous devons donc inverser lâordre de la liste, de maniĂšre Ă afficher les donnĂ©es par ordre dĂ©croissant, de 5 Ă 1 étoiles.
La couleur choisie correspond à un jaune doré. La valeur de la propriété backgroundColor est une chaßne de caractÚres qui reprend le format de la fonction CSS  rgba(rouge, vert, bleu, transparence) .
Dans un troisiÚme temps, on crée un objet de configuration qui indique le type de graphique, les données et une option pour rendre les barres horizontales.
// Objet de configuration final
const config = {
type: "bar",
data: data,
options: {
indexAxis: "y",
},
};Et enfin, il ne nous reste plus quâĂ dĂ©clencher le rendu du graphique dans lâĂ©lĂ©ment canvas.
// Rendu du graphique dans l'élément canvas
const graphiqueAvis = new Chart(
document.querySelector("#graphique-avis"),
config,
);Il ne nous reste plus quâĂ importer la fonction afficherGraphique avis dans pieces.js et Ă lâappeler Ă la fin du fichier.
Et voilĂ đ„ł ! Notre joli graphique sâaffiche sur notre page web !

Vous pouvez revoir les différentes étapes de cette démonstration dans la vidéo ci-dessous :
Retrouvez le code développé dans ce chapitre sur la branche P4C3-Exercice.
Rajoutez un deuxiÚme graphique sur votre site web. Ce graphique devra afficher deux barres verticales représentant chacune la quantité de commentaires déposés sur :
les piĂšces disponibles ;
les piĂšces non disponibles.
Vous pouvez vérifier votre travail en consultant la branche P4C3-Solution, et en regardant la vidéo ci-dessous :
Pour utiliser votre librairie et enrichir votre page web :
Intégrez la librairie à votre page en ajoutant une balise script.
Utilisez les fonctionnalités de la librairie en vous appuyant sur de la documentation.
Toutes mes fĂ©licitations, vous avez terminĂ© ce cours ! đ Le site web des Bonnes PiĂšces est dĂ©sormais interactif, dynamique, et il intĂšgre des fonctionnalitĂ©s avancĂ©es Ă partir dâune librairie. Nâoubliez pas de tester vos connaissances avec le dernier quiz. Et si vous voulez aller encore plus loin, dĂ©couvrez comment rendre votre code plus lisible, dans notre chapitre bonus !