Code source du fichier pages-doc/graphevol.html

<html>

<head>
    <title>Phpcovid : Graphiques d'évolution générale</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>Graphiques d'évolution générale</h1>
      Les 4 séries de graphiques du menu&nbsp;:<br>
      <ul>
          <li>Évolution générale</li>
          <li>Évolution par classe d'âge</li>
          <li>Évolution par région</li>
          <li>Évolution 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_....&nbsp;()</tt><br>
      <br>
      Les données étant présentées sous la forme de graphiques (qui sont des
      images au format BMP), ces graphiques 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 graphiques 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 graphiques</td>
          </tr>
          <tr>
              <td>Général</td>
              <td><tt>vacsi-a-fra.csv</tt></td>
              <td><tt>testmaj_a_fra&nbsp;()</tt></td>
              <td><tt>graph-age-ta.bmp</tt></td>
          </tr>
          <tr>
              <td>Par classe d'âge</td>
              <td><tt>vacsi-a-fra.csv</tt></td>
              <td><tt>testmaj_a_fra&nbsp;()</tt></td>
              <td><tt>graph-age-??.bmp</tt></td>
          </tr>
          <tr>
              <td>Par région</td>
              <td><tt>vacsi-reg.csv</tt></td>
              <td><tt>testmaj_regdom&nbsp;()</tt></td>
              <td><tt>graph-reg-???.bmp</tt></td>
          </tr>
          <tr>
              <td>Par DOM</td>
              <td><tt>vacsi-dom.csv</tt></td>
              <td>Voir explication</td>
              <td><tt>graph-dom-???.bmp</tt></td>
          </tr>
      </table>
      <br>
      Comme le fichier de référence <tt>vacsi-a-fra.csv</tt> indique
      l'évolution de la vaccination tous âges confondus, en plus de
      l'évolution par classe d'âge, c'est ce même fichier qui est utilisé
      dans les deux cas.<br>
      <br>
      Pour les départements d'outre-mer, les données ayant cessé d'être
      fournies, le fichier <tt>vacsi-dom.csv</tt> est à présent vide si on
      tente de le générer et on utilise les graphiques qui représentent
      l'évolution de la vaccination jusqu'au 30 novembre 2021.<br>
      <br>
      Si les données pour les DOM redeviennent disponibles, une fonction
      <tt>testmaj_dom&nbsp;()</tt> sera rajoutée.<br>
      <br>
      Comme dans le cas des bargraphes, plusieurs graphiques sont nécessaires
      pour représenter l'évolution de la vaccination dans&nbsp;:<br>
      <ul>
          <li>les différentes classe d'âge</li>
          <li>les différentes région</li>
          <li>les différents départements d'outre-mer</li>
      </ul>
      Un code de 2 ou 3 caractères remplace les ? dans les noms des graphiques
      mentionnés ci-dessus.<br>
      <h2>Les pages HTML</h2>
      Voici à titre d'exemple la structure de la partie &lt;body&gt; de la
      page qui montre les graphiques d'évolution de la vaccination par
      région.<br>
!vsource exemples-code/body-graph-evol-reg.html
      Contrairement à ce qui se passe pour les pages du site donnant l'état
      de la vaccination à ce jour et pour les pages du site qui montrent des
      tables d'évolution de la vaccination, la partie "contenu" de la page
      HTML ne contient pas de zone marquée <tt>XXX...</tt><br>
      <br>
      Sa structure et le texte qu'elle contient ne varie pas au fil du temps.
      La seule chose qui évolue dans le temps est les graphiques, mais comme
      ils gardent le même nom, ça ne change rien à la page HTML.<br>
      <h2>Les scripts PHP</h2>
      En prenant toujours comme exemple les graphiques d'évolution par région,
      le script PHP commence par recopier le début de la page HTML jusqu'à la
      zone "contenu"<br>
!vsource exemples-code/copdeb-graph-evol.php
      On vérifie alors si le fichier csv local qui sert à générer les
      graphiques est à jour et si nécessaire, on l'actualise.<br>
      <br>
      Si le fichier csv local a été mis à jour, il faut le faire aussi pour
      tous les graphiques. Pour cela, on compare la date de mise à jour d'un
      graphique parmi ceux concernés (dans l'exemple ci dessous, le graphique
      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-graphiques</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. Il est affiché en rouge.<br>
!vsource exemples-code/maj-graph-evol.php
      Comme indiqué plus haut, il n'y a rien à modifier dans la partie
      "contenu" du fichier HTML. Elle est donc recopiée sans changement
      et le script PHP se contente de rajouter le menu vers la fin de la
      page HTML.<br>
!vsource exemples-code/fin-graph-evol.php
      <h2>Le programme C pour générer les graphiques</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>