<html> <head> <title>Phpcovid : Bargraphes de plusieurs couleurs</title> <meta name=author content="Bernard Chardonneau"> <meta name=copyleft content="Logiciel et données publiés dans le domaine public"> <meta name=robots content="noindex,follow"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link href="css/misenpage.css" rel="stylesheet" type="text/css"> <link href="css/styles.css" rel="stylesheet" type="text/css"> </head> <body> <div id="contenu"> <h1>Bargraphes de plusieurs couleurs</h1> <h2>Principe général</h2> Les 4 séries de bargraphes du menu autres que celle décrite précédemment :<br> <ul> <li>Général</li> <li>Par classe d'âge (2)</li> <li>Par région</li> <li>Par département d'outre-mer</li> </ul> sont générées selon le même principe.<br> <br> Tout d'abord, comme pour la présentation des données sous forme de tableaux, il est nécessaire de mettre à jour périodiquement le fichier csv local à partir du fichier csv de référence. Pour cela, on fait appel à la même fonction <tt>testmaj-tot.... ()</tt><br> <br> Les données étant présentées sous la forme de bargraphes (qui sont des images au format BMP), ces bargraphes devront être mis à jour chaque fois que le fichier csv local qui a permit de les générer est actualisé.<br> <br> Ce tableau indique pour chaque série de bargraphes quels fichiers sont utilisés.<br> <br> <table border="1" cellpadding="10"> <tr align="center"> <td>Critère de tri</td><td>Fichier csv local</td> <td>Fonction de mise à jour</td><td>Nom des bargraphes</td> </tr> <tr> <td>Général</td> <td><tt>vacsi-totgen-fra.csv</tt></td> <td><tt>testmaj_totgen_fra ()</tt></td> <td><tt>barre-gen-??.bmp</tt></td> </tr> <tr> <td>Par classe d'âge</td> <td><tt>vacsi-tot-a-fra.csv</tt></td> <td><tt>testmaj_tot_a_fra ()</tt></td> <td><tt>barre-age-??.bmp</tt></td> </tr> <tr> <td>Par région</td> <td><tt>vacsi-tot-reg.csv</tt></td> <td><tt>testmaj_tot_reg ()</tt></td> <td><tt>barre-reg-???.bmp</tt></td> </tr> <tr> <td>Par DOM</td> <td><tt>vacsi-tot-dom.csv</tt></td> <td>Voir explication</td> <td><tt>barre-dom-???.bmp</tt></td> </tr> </table> <br> Comme dans le cas de la présentation des données sous forme de tables, le fichier <tt>vacsi-totgen-fra.csv</tt> utilise le fichier csv local <tt>vacsi-tot-a-fra.csv</tt> pour être réactualisé. En conséquence, la fonction <tt>testmaj_tot_a_fra ()</tt> est appelée avant <tt>testmaj_totgen_fra ()</tt> .<br> <br> Si ces données redeviennent disponibles, une fonction <tt>testmaj_tot_dom ()</tt> sera rajoutée.<br> <br> Chaque page web affichant plusieurs bargraphes, il faut plusieurs images bmp dont chacune a un nom différent. C'est au niveau des ? que diffèrent les noms des différents bargraphes d'une catégorie.<br> <br> À la place de ces ? on trouve :<br> <ul> <li>Pour les bargraphes généraux et pour ceux par classe d'âge, un nombre à 2 chiffres qui correspond au premier champ de la ligne du fichier csv local;</li> <br> <li>Pour les bargraphes par région, les 3 premières lettres du nom de la région en minuscules;</li> <br> <li>Pour les bargraphes par département d'outre-mer, également un code de 3 lettres minuscules.</li> </ul> Les différents bargraphes dont on aura besoin sont générés par un programme C appelé depuis le script php.<br> <br> <h2>Le modèle de fichier html</h2> Pour les 4 séries de bargraphes, le modèle de page html utilisé est similaire.<br> <br> Voici le partie <body> de celui qui permet d'afficher les bargraphes par région.<br> !vsource exemples-code/body-bargraphe-reg.html On peut remarquer que le contenu de la partie droite de la page web est centré.<br> <pre> <div id="contenu" align="center"></pre> Comme les bargraphes ont tous la même largeur, il n'est pas nécessaire de recourir à une table pour les aligner d'un coté, comme c'est le cas pour les bargraphes "Par classe d'âge (1)".<br> <br> Le script PHP va devoir mettre la date de l'état de vaccination à la place de <tt>XXXDATE</tt> puis générer une série de bargraphes à la place de la ligne contenant <tt>XXXLISTE</tt> .<br> <h2>Le script php qui génère la page</h2> Le début du traitement effectué par ce script est le même que pour l'affichage des données sous la forme d'une table.<br> <ul> <li>on sélectionne le modèle de page html;</li> <li>on recopie l'entête de ce fichier en remplaçant <tt>noindex</tt> par <tt>index</tt>;</li> <li>on continue de recopier le modèle de fichier HTML jusqu'à l'endroit où sera le contenu de la partie droite de la page.</li> <li>on vérifie si le fichier csv local dont on a besoin est à jour et si nécessaire, on l'actualise.</li> </ul> Dans le cas du script qui affiche les bargraphes relatifs à la vaccination par région, on commence par le code suivant :<br> !vsource exemples-code/debut-bargraphe-reg.php Si le fichier csv local a été mis à jour, il faut le faire aussi pour tous les bargraphes. Pour cela, on compare la date de mise à jour de l'un des bargraphes concernés (dans l'exemple ci dessous, le bargraphe pour la région Occitanie) avec celle du fichier csv local.<br> <br> Si le fichier csv local est plus récent, on utilise la commande <tt>exec</tt> du PHP pour lancer l'exécution du programme C <tt>gen-serie-bargraphes</tt> auquel on passe comme paramètre le nom du fichier csv local et le début du nom des images bmp à générer.<br> <br> Si l'exécution du programme C se passe mal, un affichage d'erreur est prévu.<br> !vsource exemples-code/gen-bargraphe-reg.php Ensuite, on accède au fichier csv local, on récupère la date dans sa première ligne, on la met au format jj/mm/aaaa, on l'affiche au bon endroit et on recopie la suite du fichier HTML jusqu'à la ligne où on rajoutera les différents bargraphes.<br> !vsource exemples-code/recup-date.php On est prêt pour traiter les lignes du fichier csv local qui suivent.<br> <br> Comme on le fait pour générer les bargraphes similaires au site officiel, on commence par lire la première ligne du fichier csv et en extraire le nombre de doses de vaccin :<br> !vsource exemples-code/compte-doses-l1.php Puis pour chacune des lignes du fichier csv local, on va :<br> <ul> <li>afficher le titre du bargraphe,</li> <li>afficher les taux de vaccination pour chaque dose,</li> <li>calculer et afficher le taux de non vaccinés.</li> </ul> Pour le titre du bargraphe, dans le cas des régions ou des DOM, c'est directement le champ 0 de la ligne lue. Dans le cas des bargraphes par classe d'âge ou à partir d'un certain âge, il y a une petite transformation à faire qui similaire à celle réalisée pour la colonne 1 des tableaux (voir 2 lignes plus haut dans le menu de gauche).<br> <br> Pour les taux de vaccination, on remplacera les points décimaux par des virgules et on ajoutera <tt>%</tt> après la valeur numérique.<br> !vsource exemples-code/titre-et-taux-barg.php Il ne reste plus qu'à afficher le bon bargraphe. Le cas des bargraphes généraux et des bargraphes par classe d'âge est le plus simple : le champ $args [0] contient directement le code de 2 chiffres qui apparaît dans le nom de l'image bmp à afficher.<br> <br> Pour les bargraphes par région, la partie variable de leur nom est constituée pas les 3 premières lettres du nom de la région écrites en minuscules :<br> !vsource exemples-code/choix-bargraphe-reg.php C'est pour les DOM que c'est le plus compliqué. <ul> <li>si le nom du DOM commence par "Saint" (en abrégé "ST") le code utilisé pour le bargraphe est la lettre "s" suivie des 2 premiers caractère du 2ème mot écrits en minuscules.</li> <br> <li>dans les autres cas, comme pour les régions, on prend les 3 premiers caractères du nom, qu'on met en minuscules, mais si on y trouve un "é" (Réunion), il perd son accent.</li> </ul> !vsource exemples-code/choix-bargraphe-dom.php On est en mesure d'afficher le bargraphe. Le code qui suit est celui pour les bargraphes concernant une région.<br> !vsource exemples-code/affiche-bargraphe.php On peut passer à la ligne suivante du fichier csv local et recommencer le même traitement jusqu'à ce que ce fichier ait été traité en entier.<br> <br> Il ne reste plus alors qu'à terminer le fichier HTML en rajoutant le menu qui doit apparaître du coté gauche. Ce traitement est réalisé à l'identique pour toutes les pages du site qui donnent des statistiques de vaccination.<br> !vsource exemples-code/ajout-menu.php <h2>Le programme C pour générer les bargraphes</h2> Ce point est détaillé <a href="voir.php?page=progc-gen">ici</a>.<br> <br> </div> <div id="menu"> XXXMENU </div> </body> </html>