remplacement de frappe-charts par Chartkick + Chart.js #937
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Le point de départ de cette PR est que frappe-charts est un des derniers obstacles pour activer les règles CSP strictes pour empecher les inline styles. En effet ce package JS ne gère pas ça bien et a priori ça ne va pas être corrigé bientôt cf frappe/charts#378
J’avais pour l’instant mis des exceptions avec les hashes des fichiers de frappe-charts dans les regles CSP. C’est sous optimal car ça n’avait pas l’air de fonctionner dans tous les cas : il reste ces erreurs Sentry. Cela demandait aussi de penser à mettre à jour ces hashes de fichiers à chaque MaJ de la lib.
Pour que ça fonctionne en prod je pense qu’il aurait fallu générer le hash du fichier bundlé application.js , càd le mettre à jour à chaque changement de quoi que ce soit dans le JS ou nos dépendences.
Cette PR contourne ce problème en se passant complètement de frappe-charts et en le remplaçant par Chart.js qui semble plus populaire et (j’espère) mieux se comporter avec les CSP.
Tant qu’à faire j’ai ajouté la gem chartkick qui est un wrapper coté vues Rails pour simplifier l’utilisation de la lib JS. Ce n’est pas indispensable, mais elle n’a pas de dépendences et elle réduit quand même un peu le boilerplate (en contrepartie de rajouter un niveau d’indirection).
Frappe-charts était utilisé à deux endroits, et uniquement sur l’interface conservateurs :
La visualisation change un peu, j’ai essayé de limiter au max les changements.
C’est plutot plus lisible qu’avant avec les légendes écrites en entier. En revanche c’est un peu moche avec les différentes couleurs de polices, mais j’ai passé un moment à essayer de le configurer sans succès.