Graphiques d'évolution générale

Les 4 séries de graphiques du menu :
sont générées selon le même principe.

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 testmaj_.... ()

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é.

Ce tableau indique pour chaque série de graphiques quels fichiers sont utilisés.

Critère de triFichier csv local Fonction de mise à jourNom des graphiques
Général vacsi-a-fra.csv testmaj_a_fra () graph-age-ta.bmp
Par classe d'âge vacsi-a-fra.csv testmaj_a_fra () graph-age-??.bmp
Par région vacsi-reg.csv testmaj_regdom () graph-reg-???.bmp
Par DOM vacsi-dom.csv Voir explication graph-dom-???.bmp

Comme le fichier de référence vacsi-a-fra.csv 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.

Pour les départements d'outre-mer, les données ayant cessé d'être fournies, le fichier vacsi-dom.csv 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.

Si les données pour les DOM redeviennent disponibles, une fonction testmaj_dom () sera rajoutée.

Comme dans le cas des bargraphes, plusieurs graphiques sont nécessaires pour représenter l'évolution de la vaccination dans :
Un code de 2 ou 3 caractères remplace les ? dans les noms des graphiques mentionnés ci-dessus.

Les pages HTML

Voici à titre d'exemple la structure de la partie <body> de la page qui montre les graphiques d'évolution de la vaccination par région.
<body>
  <div id="contenu" align="center">
      <h1>Evolution vaccination COVID 19<br>
          en France par région</h1>
      <table border="0" align="center">
          <tr>
              <td width="120px">Légende :</td>
              <td bgcolor="#E08000" width="20px">&nbsp;</td>
              <td width="100px">1 dose</td>
              <td bgcolor="#00B000" width="20px">&nbsp;</td>
              <td width="100px">Complet</td>
              <td bgcolor="#0060E0" width="20px">&nbsp;</td>
              <td>Rappel</td>
          </tr>
      </table>
      <br>
      <h2>Auvergne-Rhône-Alpes</h2>
      <img src="images/graph-reg-auv.bmp"><br>
      <br>
      <h2>Bourgogne-Franche-Comté</h2>
      <img src="images/graph-reg-bou.bmp"><br>
      <br>
      <h2>Bretagne</h2>
      <img src="images/graph-reg-bre.bmp"><br>
      <br>
      (...)
      <br>
      <h2>Provence-Alpes-Côte d’Azur</h2>
      <img src="images/graph-reg-pro.bmp"><br>
      <br>
  </div>

  <div id="menu">
      XXXMENU
  </div>
</body>
      
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 XXX...

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.

Les scripts PHP

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"
    // recopier le début de l'entête html en remplaçant noindex par index
    copmaj ($descfic, "noindex,", "index,");

    // recopier le début du fichier html jusqu'à la zone contenu
    copie_jusque_chaine ($descfic, "contenu", 1);
      
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.

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.

Si le fichier csv local est plus récent, on utilise la commande exec du PHP pour lancer l'exécution du programme C gen-serie-graphiques auquel on passe comme paramètre le nom du fichier csv local et le début du nom des images bmp à générer.

Si l'exécution du programme C se passe mal, un affichage d'erreur est prévu. Il est affiché en rouge.
    // vérifier si le fichier csv à utiliser est à jour
    // l'actualiser si nécessaire
    testmaj_regdom ();

    // construire le nom du fichier csv
    $ficcsv = DIR_CSV."/vacsi-reg.csv";

    // si les graphiques sont trop anciens (ou inexistants)
    if (filemtime (DIR_IMAGES."/graph-reg-occ.bmp") < filemtime ($ficcsv))
        // les créer ou les actualiser
        exec ("bin/gen-serie-graphiques ".$ficcsv." images/graph-reg 2>&1", $erreur);

    // si erreur pour fabriquer les images
    if (count ($erreur))
        // l'afficher
        echo '        <font color = "#FF0000">'.$erreur [0]."</font><br>\n";
      
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.
    // copie la suite du fichier html jusqu'à la section du menu
    copie_jusque_chaine ($descfic, "XXXMENU");

    // générer le menu
    genmenu ("menu-vaccin", basename ($_SERVER ['SCRIPT_NAME']));

    // copier la fin de la page html
    copie_jusque_fin ($descfic);

    // terminé avec le fichier html
    fclose ($descfic);
      

Le programme C pour générer les graphiques

Ce point est détaillé ici.