Fonctionnement du backend

Sélection des données

Pour cette page, le code html de frontend est écrit dans le code backend, qui le renvoie sur la forme d'une string. Pour commencer il est agréable pour l'utilisateur de connaître la plage de durée couverte par les données. Pour cela le backend fait deux requêtes sur la base de données, afin de connaître les bornes minimales et maximales des données. Ces valeurs sont ensuite affichées par le frontend. Le reste de la fonction n'est que du code frontend. Le contenu du formulaire est renvoyé sous la forme d'une requête GET (c'est-à-dire que les réponses sont transmises dans l'url).

Sélection des données

Affichage des données

Pour débuter, le code commence par récupérer le contenu du formulaire et à en séparer le contenu. Ensuite, on calcule les Timestamps associés aux dates sélectionnées par l'utilisateur. Puis, le code se connecte à la base de données et commence par récupérer les bornes minimales maximales de la table. Cela permet de vérifier que l'utilisateur a bien demandé une plage de durée appartenant à la table, autrement on ferme la connexion avec la base de données et on redirige vers une page indiquant un message d'erreur. Si le test est valide, on poursuit avec la sélection des données comprises entre les bornes demandées. Enfin, avant de fermer la connexion, on récupère les bornes de la sélection afin de les afficher (pour cela un arrondi est nécessaire car ces bornes ne sont pas forcément celles demandées par l'utilisateur).

Récupération des arguments Récupération des bornes Test Logique

Ensuite, le code continue par classer les données récupérées en liste et par calculer une échelle linéaire de temps (afin de pouvoir créer l'axe x du plot). Puis, la structure du code change en fonction de la demande de l'utilisateur, si l'affichage est sous la forme d'un tableau ou d'un graphique. Cette séparation est effectuée à l'aide d'un test logique sur un argument renvoyé par le GET.

Affichage en tableau

Si l'utilisateur demande un tableau, il suffit de générer le code html à l'aide d'une boucle for puis de tout renvoyer sous la forme d'une string.

Affichage en graphique

Dans ce cas, le backend utilise la librairie MatplotLib afin de générer le graphique. Puis afin de pouvoir l'afficher, il est impossible de renvoyer le code html sous la forme d'une string (car le graphique qui est une image ne peut pas être renvoyé sous forme de texte). Pour cela le code html a été écrit à part (la fonction renvoie donc un render_template avec des paramètres) et le graphique est sauvegardé en temps que fichier png dans les fichiers du serveur. Le render_template renvoie comme paramètres les dates de début et de fin, afin qu'elles soient affichables par le frontend comme pour le tableau.

Retour d'une 404

Enfin comme la sélection entre les modes d'affichage se fait avec un if/elif, afin d'être sûr d'avoir un backend robuste, il a été rajouté un else afin de renvoyer vers une page erreur 404 si l'utilisateur parvient à demander un autre type d'affichage.