Code source du fichier pages-doc/bargraph2.html

<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&nbsp;:<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....&nbsp;()</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&nbsp;()</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&nbsp;()</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&nbsp;()</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&nbsp;()</tt> est appelée avant
      <tt>testmaj_totgen_fra&nbsp;()</tt> .<br>
      <br>
      Si ces données redeviennent disponibles, une fonction
      <tt>testmaj_tot_dom&nbsp;()</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&nbsp;:<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 &lt;body&gt; 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>
      &lt;div id="contenu" align="center"&gt;</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&nbsp;:<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&nbsp;:<br>
!vsource exemples-code/compte-doses-l1.php
      Puis pour chacune des lignes du fichier csv local, on va&nbsp;:<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&nbsp;:
      le champ $args&nbsp;[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&nbsp;:<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>