Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
4e3c6a7f32 | ||
|
7db9a5ea8d | ||
|
6a76cfd20c | ||
|
3182ac4f2e | ||
|
bd73613aab |
151
docs/CahierDesChargesMobile.md
Normal file
151
docs/CahierDesChargesMobile.md
Normal file
@ -0,0 +1,151 @@
|
||||
# Cahier des charges (v0) du projet d'adaptation mobile
|
||||
|
||||
|
||||
Cahier des charges rassemblant les fonctionnalités à implémenter pour la version mobile de ScoDoc.
|
||||
|
||||
|
||||
## Roadmap
|
||||
|
||||
**v0** : Lecture seule
|
||||
|
||||
**v1**: v0 + fixes + saisie absences
|
||||
|
||||
**Beta Release (scodoc-devel)**
|
||||
|
||||
**v2**: fixes (feedback beta tests) + intégration à distrib ScoDoc7.
|
||||
|
||||
**Release**
|
||||
|
||||
Documentation et tests
|
||||
|
||||
|
||||
## Fonctionnalités
|
||||
|
||||
### Login (/ScoDoc)
|
||||
|
||||
Page de login inspirée de la version web actuelle (Avertissements...)
|
||||
|
||||
Login par département.
|
||||
|
||||
### Acceuil / Choix du département (/Scodoc)
|
||||
|
||||
Page d'acceuil, liste les départements auquels l'utilisateur est membre.
|
||||
|
||||
Liens vers:
|
||||
- `Scolarité`
|
||||
|
||||
### Scolarité / Semestres (ScoDoc/DEPT/Scolarite)
|
||||
|
||||
Consultation des semestres et sessions en cours.
|
||||
|
||||
Liens vers:
|
||||
- `Gestion Semestre`
|
||||
|
||||
### Gestion Semestre (ScoDoc/DEPT/Scolarite/Notes)
|
||||
|
||||
Accès au tableau de bord des formations.
|
||||
|
||||
Depuis ce tableau de bord:
|
||||
- Affichage des infos de la formations
|
||||
- Affichage sous forme de liste des enseignants
|
||||
- Affichage des étudiants inscrits (Redirection vers `Page étudiant`) (+ SearchBar)
|
||||
- Listes et exportation
|
||||
- Photos
|
||||
|
||||
Liens vers:
|
||||
- `Profil étudiant`
|
||||
|
||||
|
||||
### Profil étudiant (ScoDoc/RT/Scolarite/ficheEtud?etudid=ETUD_ID)
|
||||
|
||||
Affichage des informations de l'étudiant.
|
||||
|
||||
Liens vers:
|
||||
- `Gestion/Saisie des absences` (Ajout, Suppression, Justification)
|
||||
- `Bulletin de notes`
|
||||
|
||||
(Joindre `Saisie des absences` et `Bulletin de notes` a cette page ?)
|
||||
|
||||
### Saisie des absences (Page a définir )
|
||||
|
||||
(Utilisation d'un dropdown pour le choix du groupe)
|
||||
|
||||
Affichage d'un tableau (Absences matin/après-midi séparées)
|
||||
- A la semaine
|
||||
- Sur un jour précis
|
||||
|
||||
### Bulletin de notes (Page a définir)
|
||||
|
||||
Affiche le bulletin de note d'un élève
|
||||
|
||||
### Paramètres (Page à définir | Probablement accessible depuis une sidebar)
|
||||
|
||||
Gestion de certains paramètres (A définir) du département
|
||||
|
||||
Potentiellement plusieurs pages (Paramètres de departement, de compte...)
|
||||
|
||||
## Besoins dans l'API (Source: [Documentation de l'API](https://scodoc.org/ScoDocAPI))
|
||||
|
||||
| Old API | New API | Remarque |
|
||||
|---------|---------|----------|
|
||||
| Login | | |
|
||||
| `doLogin` | | Connexion avec identifiants |
|
||||
| Acceuil / Choix DEPT | | |
|
||||
| `index_dept` | | ??? |
|
||||
| `list_depts` | | Liste les départements disponibles |
|
||||
| `DeptId` | | Récupère les identifiants de départements |
|
||||
| Scolarité / Semestres | | |
|
||||
| `formsemestre_list` | | Liste des semestres |
|
||||
| Gestion Semestre | | |
|
||||
| `formation_table_recap` (?) | | Affichage des infos de la formation |
|
||||
| `do_ens_list` | | Liste des enseignants |
|
||||
| `search_etud_by_name` | | Recherche d'étudiant par nom |
|
||||
| `search_etud_in_dept` | | Recherche d'étudiant dans le departement|
|
||||
| `trombino` | | Affichage des photos des étudiants|
|
||||
| Profil étudiant | | |
|
||||
| `etud_info` | | Recuperation des informations d'un étudiant |
|
||||
| Saisie des absences | | |
|
||||
| `CalAbs` | | Recuperation d'un calendrier des absences |
|
||||
| `EtatAbsences` | | Recuperation de l'état des absences |
|
||||
| Bulletin de notes | | |
|
||||
| `formsemestre_bulletinetud` | | Recuperation d'un bulletin de notes |
|
||||
|
||||
## Choix des outils (Framework JS)
|
||||
|
||||
### Solutions "modernes" et adaptées
|
||||
|
||||
Les solutions retenues ici sont récentes et mises a jour, et probablement plus durables.
|
||||
|
||||
#### ReactJS (Choix final)
|
||||
|
||||
ReactJS (OpenSource) utilise une syntaxe JSX crée en 2013 et développée par Facebook (et sa communauté).
|
||||
|
||||
#### Vue JS
|
||||
|
||||
VueJS est un Framework OpenSource crée par Evan You en 2013
|
||||
|
||||
#### Choix
|
||||
|
||||
Les deux framework ont leurs avantages, mais malgré sa difficulté a prendre en main,
|
||||
React est plus adapté aux projets de cette envergure.
|
||||
React est également plutot orienté mobile (iOS/Android)
|
||||
|
||||
Les deux framework sont bien documentés et très complets.
|
||||
|
||||
|
||||
### Autres solutions étudiées
|
||||
|
||||
Ces solutions n'ont pas été retenues car inadaptés au projet
|
||||
|
||||
#### Angular
|
||||
|
||||
Utilise des TypeScript, difficile a prendre en main, d'autres solutions sont plus complètes.
|
||||
|
||||
#### EmberJS
|
||||
|
||||
Très difficile a prendre en main, Framework plutot "lourd" vu l'ampleur du projet.
|
||||
|
||||
#### Svelte
|
||||
|
||||
Interessant mais très recent, donc a une marge d'évolution et pour le moment assez incomplet.
|
||||
|
405
docs/DocumentationTechniqueMobile.md
Normal file
405
docs/DocumentationTechniqueMobile.md
Normal file
@ -0,0 +1,405 @@
|
||||
# Classes
|
||||
|
||||
## `/`
|
||||
|
||||
<dl>
|
||||
<dt><a href="#ChoixDept">ChoixDept</a></dt>
|
||||
<dd><p>Page de choix du département</p>
|
||||
</dd>
|
||||
<dt><a href="#Etudiant">Etudiant</a></dt>
|
||||
<dd><p>Page d'information d'un étudiant'</p>
|
||||
</dd>
|
||||
<dt><a href="#GestionSemestre">GestionSemestre</a></dt>
|
||||
<dd><p>Page de gestion du semestre</p>
|
||||
</dd>
|
||||
<dt><a href="#Login">Login</a></dt>
|
||||
<dd><p>Page de Login</p>
|
||||
</dd>
|
||||
<dt><a href="#Scolarite">Scolarite</a></dt>
|
||||
<dd><p>Page de choix du semestre</p>
|
||||
</dd>
|
||||
<dt><a href="#ScoNavBar">ScoNavBar</a></dt>
|
||||
<dd><p>Barre de navigation</p>
|
||||
</dd>
|
||||
<dt><a href="#SearchStudent">SearchStudent</a></dt>
|
||||
<dd><p>Module de recherche d'étudiant</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
## `/GestionSemestre`
|
||||
|
||||
<dl>
|
||||
<dt><a href="#Absences">Absences</a></dt>
|
||||
<dd><p>Page de gestion des absences</p>
|
||||
</dd>
|
||||
<dt><a href="#Accueil">Accueil</a></dt>
|
||||
<dd><p>Page d'accueil de la gestion du semestre</p>
|
||||
</dd>
|
||||
<dt><a href="#Bulletin">Bulletin</a></dt>
|
||||
<dd><p>Page de présentation des bulletins étudiants</p>
|
||||
</dd>
|
||||
<dt><a href="#Etudiants">Etudiants</a></dt>
|
||||
<dd><p>Page de présentation des étudiants inscrits au semestre</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
## `/GestionSemestre/Absences`
|
||||
|
||||
<dl>
|
||||
<dt><a href="#JustAbs">JustAbs</a></dt>
|
||||
<dd><p>Module de justification des absences</p>
|
||||
</dd>
|
||||
<dt><a href="#SaisieAbs">SaisieAbs</a></dt>
|
||||
<dd><p>Module de saisie des absences</p>
|
||||
</dd>
|
||||
<dt><a href="#SupprAbs">SupprAbs</a></dt>
|
||||
<dd><p>Module de suppression des absences</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<br>
|
||||
|
||||
---
|
||||
# Functions
|
||||
|
||||
<dl>
|
||||
<dt><a href="#get">get(url)</a> ⇒ <code>Promise.<Response></code></dt>
|
||||
<dd><p>Lance une requête GET a l'URL donnée en paramètre et retourne une Promise.</p>
|
||||
</dd>
|
||||
<dt><a href="#getLogin">getLogin(url, login, pass)</a> ⇒ <code>Promise.<Response></code></dt>
|
||||
<dd><p>Lance une requête GET a l'URL donnée en paramètre et retourne une Promise.
|
||||
Dans ce cas particulier, on ajoute un header d'authentification.</p>
|
||||
</dd>
|
||||
<dt><a href="#getJson">getJson(url)</a> ⇒ <code>Promise.<{data: any}></code></dt>
|
||||
<dd><p>Lance une requête GET a l'URL donnée en paramètre et retourne les données JSON d'une Promise.</p>
|
||||
</dd>
|
||||
<dt><a href="#post">post(url, data)</a> ⇒ <code>Promise.<Response></code></dt>
|
||||
<dd><p>Lance une requête POST a l'URL donnée en paramètre et retourne une Promise.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
<br>
|
||||
|
||||
---
|
||||
## `/`
|
||||
|
||||
<a name="ChoixDept"></a>
|
||||
|
||||
## ChoixDept
|
||||
Page de choix du département
|
||||
|
||||
**Kind**: global class
|
||||
<a name="ChoixDept+getData"></a>
|
||||
|
||||
### choixDept.getData()
|
||||
Recupère la liste des départements depuis l'API
|
||||
|
||||
**Kind**: instance method of [<code>ChoixDept</code>](#ChoixDept)
|
||||
<a name="Etudiant"></a>
|
||||
|
||||
## Etudiant
|
||||
Page d'information d'un étudiant'
|
||||
|
||||
**Kind**: global class
|
||||
<a name="Etudiant+getData"></a>
|
||||
|
||||
### etudiant.getData()
|
||||
Recupère les données de l'étudiant depuis l'API
|
||||
|
||||
**Kind**: instance method of [<code>Etudiant</code>](#Etudiant)
|
||||
<a name="GestionSemestre"></a>
|
||||
|
||||
## GestionSemestre
|
||||
Page de gestion du semestre
|
||||
|
||||
**Kind**: global class
|
||||
<a name="GestionSemestre+getData"></a>
|
||||
|
||||
### gestionSemestre.getData()
|
||||
Recupère la liste des étudiants inscrits au semestre pour le Select depuis l'API
|
||||
|
||||
**Kind**: instance method of [<code>GestionSemestre</code>](#GestionSemestre)
|
||||
<a name="Login"></a>
|
||||
|
||||
## Login
|
||||
Page de Login
|
||||
|
||||
**Kind**: global class
|
||||
<a name="Login+checkCredentials"></a>
|
||||
|
||||
### login.checkCredentials(e)
|
||||
Verifie la validité des identifiants depuis l'API
|
||||
|
||||
**Kind**: instance method of [<code>Login</code>](#Login)
|
||||
|
||||
| Param | Type |
|
||||
| --- | --- |
|
||||
| e | <code>event</code> |
|
||||
|
||||
<a name="Scolarite"></a>
|
||||
|
||||
## Scolarite
|
||||
Page de choix du semestre
|
||||
|
||||
**Kind**: global class
|
||||
<a name="Scolarite+getData"></a>
|
||||
|
||||
### scolarite.getData()
|
||||
Recupère la liste des semestres depuis l'API
|
||||
|
||||
**Kind**: instance method of [<code>Scolarite</code>](#Scolarite)
|
||||
<a name="ScoNavBar"></a>
|
||||
|
||||
## ScoNavBar
|
||||
Barre de navigation
|
||||
|
||||
**Kind**: global class
|
||||
<a name="SearchStudent"></a>
|
||||
|
||||
## SearchStudent
|
||||
Module de recherche d'étudiant
|
||||
|
||||
**Kind**: global class
|
||||
|
||||
* [SearchStudent](#SearchStudent)
|
||||
* [.searchStudent(search)](#SearchStudent+searchStudent)
|
||||
* [.result()](#SearchStudent+result) ⇒ <code>JSX.Element</code>
|
||||
|
||||
<a name="SearchStudent+searchStudent"></a>
|
||||
|
||||
### searchStudent.searchStudent(search)
|
||||
Lance une recherche de l'étudiant depuis l'API
|
||||
|
||||
**Kind**: instance method of [<code>SearchStudent</code>](#SearchStudent)
|
||||
|
||||
| Param | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| search | <code>String</code> | Texte recherché |
|
||||
|
||||
<a name="SearchStudent+result"></a>
|
||||
|
||||
### searchStudent.result() ⇒ <code>JSX.Element</code>
|
||||
Presentation du résultat
|
||||
|
||||
**Kind**: instance method of [<code>SearchStudent</code>](#SearchStudent)
|
||||
**Returns**: <code>JSX.Element</code> - - Resultat au format JSX
|
||||
<br>
|
||||
|
||||
---
|
||||
## `/GestionSemestre`
|
||||
|
||||
<a name="Absences"></a>
|
||||
|
||||
## Absences
|
||||
Page de gestion des absences
|
||||
|
||||
**Kind**: global class
|
||||
|
||||
* [Absences](#Absences)
|
||||
* [.openModal(key, data)](#Absences+openModal)
|
||||
* [.getData()](#Absences+getData)
|
||||
|
||||
<a name="Absences+openModal"></a>
|
||||
|
||||
### absences.openModal(key, data)
|
||||
Gère l'ouverture des Modal
|
||||
|
||||
**Kind**: instance method of [<code>Absences</code>](#Absences)
|
||||
|
||||
| Param | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| key | <code>String</code> | Correspond au type de modal [isOpen, isDelOpen, isJustOpen] |
|
||||
| data | <code>Object</code> | Objet contenant les données à transmettre |
|
||||
|
||||
<a name="Absences+getData"></a>
|
||||
|
||||
### absences.getData()
|
||||
Recupère les données d'absences depuis l'API
|
||||
|
||||
**Kind**: instance method of [<code>Absences</code>](#Absences)
|
||||
<a name="Accueil"></a>
|
||||
|
||||
## Accueil
|
||||
Page d'accueil de la gestion du semestre
|
||||
|
||||
**Kind**: global class
|
||||
<a name="Accueil+getData"></a>
|
||||
|
||||
### accueil.getData()
|
||||
Recupère les données du semestre selectionné depuis l'API
|
||||
|
||||
**Kind**: instance method of [<code>Accueil</code>](#Accueil)
|
||||
<a name="Bulletin"></a>
|
||||
|
||||
## Bulletin
|
||||
Page de présentation des bulletins étudiants
|
||||
|
||||
**Kind**: global class
|
||||
|
||||
* [Bulletin](#Bulletin)
|
||||
* [.getData()](#Bulletin+getData)
|
||||
* [.getPdf()](#Bulletin+getPdf)
|
||||
|
||||
<a name="Bulletin+getData"></a>
|
||||
|
||||
### bulletin.getData()
|
||||
Recupère les données de bulletin depuis l'API
|
||||
|
||||
**Kind**: instance method of [<code>Bulletin</code>](#Bulletin)
|
||||
<a name="Bulletin+getPdf"></a>
|
||||
|
||||
### bulletin.getPdf()
|
||||
Recupère les données de bulletin en tant que "blob" pour un PDF depuis l'API
|
||||
|
||||
**Kind**: instance method of [<code>Bulletin</code>](#Bulletin)
|
||||
<a name="Etudiants"></a>
|
||||
|
||||
## Etudiants
|
||||
Page de présentation des étudiants inscrits au semestre
|
||||
|
||||
**Kind**: global class
|
||||
<a name="Etudiants+getData"></a>
|
||||
|
||||
### etudiants.getData()
|
||||
Recupère la liste des étudiants inscrits au semestre depuis l'API
|
||||
|
||||
**Kind**: instance method of [<code>Etudiants</code>](#Etudiants)
|
||||
<br>
|
||||
|
||||
---
|
||||
|
||||
## `/GestionSemestre/Absences`
|
||||
|
||||
<a name="JustAbs"></a>
|
||||
|
||||
## JustAbs
|
||||
Module de justification des absences
|
||||
|
||||
**Kind**: global class
|
||||
|
||||
* [JustAbs](#JustAbs)
|
||||
* [.onFormSubmit](#JustAbs+onFormSubmit)
|
||||
* [.postData(data)](#JustAbs+postData)
|
||||
|
||||
<a name="JustAbs+onFormSubmit"></a>
|
||||
|
||||
### justAbs.onFormSubmit
|
||||
Gestion des données du formulaire
|
||||
|
||||
**Kind**: instance property of [<code>JustAbs</code>](#JustAbs)
|
||||
|
||||
| Param | Type |
|
||||
| --- | --- |
|
||||
| e | <code>Event</code> |
|
||||
|
||||
<a name="JustAbs+postData"></a>
|
||||
|
||||
### justAbs.postData(data)
|
||||
Envoie une requête POST a l'API
|
||||
|
||||
**Kind**: instance method of [<code>JustAbs</code>](#JustAbs)
|
||||
|
||||
| Param | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| data | <code>String</code> | Données à envoyer sous la forme param1=val1¶m2=val2... |
|
||||
|
||||
<a name="SaisieAbs"></a>
|
||||
|
||||
## SaisieAbs
|
||||
Module de saisie des absences
|
||||
|
||||
**Kind**: global class
|
||||
|
||||
* [SaisieAbs](#SaisieAbs)
|
||||
* [.onFormSubmit](#SaisieAbs+onFormSubmit)
|
||||
* [.postData(data)](#SaisieAbs+postData)
|
||||
|
||||
<a name="SaisieAbs+onFormSubmit"></a>
|
||||
|
||||
### saisieAbs.onFormSubmit
|
||||
Gestion des données du formulaire
|
||||
|
||||
**Kind**: instance property of [<code>SaisieAbs</code>](#SaisieAbs)
|
||||
|
||||
| Param | Type |
|
||||
| --- | --- |
|
||||
| e | <code>Event</code> |
|
||||
|
||||
<a name="SaisieAbs+postData"></a>
|
||||
|
||||
### saisieAbs.postData(data)
|
||||
Envoie une requête POST a l'API
|
||||
|
||||
**Kind**: instance method of [<code>SaisieAbs</code>](#SaisieAbs)
|
||||
|
||||
| Param | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| data | <code>String</code> | Données à envoyer sous la forme param1=val1¶m2=val2... |
|
||||
|
||||
<a name="SupprAbs"></a>
|
||||
|
||||
## SupprAbs
|
||||
Module de suppression des absences
|
||||
|
||||
**Kind**: global class
|
||||
<a name="SupprAbs+postData"></a>
|
||||
|
||||
### supprAbs.postData(data)
|
||||
Envoie une requête POST a l'API
|
||||
|
||||
**Kind**: instance method of [<code>SupprAbs</code>](#SupprAbs)
|
||||
|
||||
| Param | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| data | <code>String</code> | Données à envoyer sous la forme param1=val1¶m2=val2... |
|
||||
<br>
|
||||
|
||||
---
|
||||
|
||||
## Global
|
||||
|
||||
<a name="get"></a>
|
||||
|
||||
## get(url) ⇒ <code>Promise.<Response></code>
|
||||
Lance une requête GET a l'URL donnée en paramètre et retourne une Promise.
|
||||
|
||||
**Kind**: global function
|
||||
|
||||
| Param | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| url | <code>String</code> | URL de la requête |
|
||||
|
||||
<a name="getLogin"></a>
|
||||
|
||||
## getLogin(url, login, pass) ⇒ <code>Promise.<Response></code>
|
||||
Lance une requête GET a l'URL donnée en paramètre et retourne une Promise.
Dans ce cas particulier, on ajoute un header d'authentification.
|
||||
|
||||
**Kind**: global function
|
||||
|
||||
| Param | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| url | <code>String</code> | URL de la requête |
|
||||
| login | <code>String</code> | Identifiant |
|
||||
| pass | <code>String</code> | Mot de passe |
|
||||
|
||||
<a name="getJson"></a>
|
||||
|
||||
## getJson(url) ⇒ <code>Promise.<{data: any}></code>
|
||||
Lance une requête GET a l'URL donnée en paramètre et retourne les données JSON d'une Promise.
|
||||
|
||||
**Kind**: global function
|
||||
|
||||
| Param | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| url | <code>String</code> | URL de la requête |
|
||||
|
||||
<a name="post"></a>
|
||||
|
||||
## post(url, data) ⇒ <code>Promise.<Response></code>
|
||||
Lance une requête POST a l'URL donnée en paramètre et retourne une Promise.
|
||||
|
||||
**Kind**: global function
|
||||
|
||||
| Param | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| url | <code>String</code> | URL de la requête |
|
||||
| data | <code>String</code> | Données de la requête au format "param1=val1¶m2=val2..." |
|
||||
|
Loading…
x
Reference in New Issue
Block a user