From 1c496e45c863d42f73ae1dd29751c160948dc539 Mon Sep 17 00:00:00 2001 From: "alec.schmidt" <alec.schmidt@etu.hesge.ch> Date: Mon, 19 Jun 2023 19:48:06 +0200 Subject: [PATCH] frontend doc --- Documentation/Documentation.md | 70 +++++++++++++++++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/Documentation/Documentation.md b/Documentation/Documentation.md index ef42635..9546697 100644 --- a/Documentation/Documentation.md +++ b/Documentation/Documentation.md @@ -75,11 +75,79 @@ Les catégories ne possèdent pas d'update car nous n'avons pas considéré cett `Login - /API/v1/login` <br> La connexion des utilisateurs ne possède qu'une méthode post de par sa nature. En effet, elle ne peut guère faire plus (car tout ce qui concerne les utilisateurs est dans la route user). Cette route prend dans le body un json type User avec le username et le mot de passe et renvoie le token JWT. -### Problèmes rencontrés +#### Problèmes rencontrés Au début du projet, nous avions décidé de gérer les données sous forme de liste in-memory. Cette méthode nous a causé bien des problèmes et nous avons donc décidé d'utiliser SQLite, ce qui nous a largement simplifié la tâche. Nous n'avons malheureusement que peu géré les erreures de la base de données. Là où elles ne sont pas nécéssairement utile au projet, on en perd en propreté de code et on risque plus les comportements indéterminés. +### Frontend + +Le frontend utilise Angular avec Tailwindcss. + +#### Arborescence + +Notre arborescence de projet est comme suit : + +``` +frontend/src/app +├── admin + └── deletion-confirmation +├── gameroom +├── interceptors +├── login-systems +│ ├── login +│ └── signup +├── question-systems +│ ├── create-answer +│ ├── create-category +│ ├── create-question +│ ├── remove-category +│ ├── update-answer +│ └── update-question +├── services +├── Types +├── user-dropdown +└── user-systems + ├── create-user + └── update-user +``` + +**admin** +Notre composant qui gère la page de gestion du site, réservée aux administrateurs. + +**gameroom** +Composant qui s'occupe de la logique du jeu (cf. Chapitre sur les Sockets) + +**interceptors** +Une espèce de middleman qui va intercepter un appel HTTP. Ici, c'est utilisé pour passer automatiquement le token JWT à tous les appels HTTP. + +**login-systems** +Pages de login et de création de compte. + +**services** +Nos différents services utilisés par notre projet. Ici, un service d'authentification accessibles à tous, un services lié aux questions et un service lié aux utilisateurs accessibles uniquement par les administrateurs et un service lié aux Sockets. + +**Types** +Simple recueil de types de données. + +**user-dropdown** +Petite modale à fonction décorative. + +**user-systems** +modales de création et mise à jour d'utilisateurs. Celle de création est uniquement accessible par un administrateur, car légèrement différente. + +#### Aspects importants + +Pour permettre un affichage toujours à jour sans avoir à rafraîchir la page entière, nous utilisons les "Behaviors Subjects". Ils sont utilisables en tant qu'observable, afin de permettre le rafraîchissement du composant parent lors d'un changement de valeurs. + +Les modales sont in fine de simples ```<div>``` avec un z-index élevé. + +#### Problèmes rencontrés + +En raison d'un manque de temps, nous n'avons pas implémenté de système de vérification des codes HTTP. Par exemple, si un utilisateur qui cherche à se connecter se trompe de mot de passe, au lieu d'avoir l'information qu'il a rentré de mauvaises informations, il se fait rediriger vers la page principale, sans être connecté. +C'est selon nous un aspect secondaire du projet, et nous avons préféré nous concentrer sur les aspects primaires. + +### Sockets IO Il y a un bug dans notre site que nous n'avons pas réussi à régler, même avec de l'aide. À la fin d'une partie, le tableau des scores s'affiche correctement et est détruit si l'on quitte la page. Cependant, si l'admin revient, l'affichage affichera toujours le dit tableau. \ No newline at end of file -- GitLab