From c6c2f25c80421588a843303901b76825ab1f7e43 Mon Sep 17 00:00:00 2001 From: Theal0 Date: Mon, 10 May 2021 17:27:18 +0200 Subject: [PATCH] Optimisations mineures --- README.md | 2 +- package.json | 1 + public/scologo.png | Bin 0 -> 28219 bytes src/ScoDoc/ChoixDept.js | 2 +- src/ScoDoc/Etudiant.js | 73 +- src/ScoDoc/GestionSemestre.js | 18 +- src/ScoDoc/GestionSemestre/Absences.js | 6 +- .../{Acceuil.js => Accueil.js} | 8 +- src/ScoDoc/GestionSemestre/Bulletin.js | 10 +- src/ScoDoc/GestionSemestre/Eleves.js | 6 +- src/ScoDoc/ScoNavBar.js | 4 +- src/ScoDoc/Scolarite.js | 43 +- src/ScoDoc/SearchStudent.js | 4 +- src/index.js | 2 +- src/json/bltn.json | 626 ++++++++++++++++++ src/main.js | 8 +- 16 files changed, 728 insertions(+), 85 deletions(-) create mode 100644 public/scologo.png rename src/ScoDoc/GestionSemestre/{Acceuil.js => Accueil.js} (87%) create mode 100644 src/json/bltn.json diff --git a/README.md b/README.md index 96a179c..097181e 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Version mobile de l'application web ScoDoc (v0) Modifier le fichier index.js (ligne 8) afin de mettre l'endpoint de l'API ScoDoc -`npm run build` > Crée un dossier `build` avec le contenu du site en prod +`npm install` > Crée un dossier `build` avec le contenu du site en prod ### Dans le cadre d'un serveur web Apache diff --git a/package.json b/package.json index cf1bdef..49b3f20 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "scodocmobile", "version": "0.1.0", + "homepage": "./", "private": true, "dependencies": { "@testing-library/jest-dom": "^5.11.10", diff --git a/public/scologo.png b/public/scologo.png new file mode 100644 index 0000000000000000000000000000000000000000..525f5d34cddab3fc27deacd1e75a1dca703eb5e2 GIT binary patch literal 28219 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 { return (
- + Département {dept}
diff --git a/src/ScoDoc/Etudiant.js b/src/ScoDoc/Etudiant.js index be35a73..d34aeba 100644 --- a/src/ScoDoc/Etudiant.js +++ b/src/ScoDoc/Etudiant.js @@ -1,8 +1,6 @@ import React, {Component} from "react"; import './Style.css' import ScoNavBar from "./ScoNavBar"; -import {Link} from "react-router-dom"; -import {Button} from "react-bootstrap"; class Etudiant extends Component { constructor(props) { @@ -16,8 +14,8 @@ class Etudiant extends Component { } componentWillMount() { - let dept = window.location.href.split('/')[3] - let etudid = window.location.href.split('/')[6] + let dept = window.location.href.split('/')[6] + let etudid = window.location.href.split('/')[9] let BASE_URL = window.$api_url fetch(BASE_URL + dept + '/Scolarite/Notes/etud_info?format=json&etudid=' + etudid, { method: 'GET', @@ -31,11 +29,11 @@ class Etudiant extends Component { }) ).then(res => { // Utilisation de '???' en cas de données vides pour le moment} - for (let propName in res.data) { + /*for (let propName in res.data) { if (res.data[propName] === null || res.data[propName] === undefined || res.data[propName] === "") { res.data[propName] = "???"; } - } + }*/ this.setState({ etud: res.data }) this.setState({ formation: res.data.insemestre }) @@ -68,32 +66,52 @@ class Etudiant extends Component {

{this.state.etud.nomprenom}

{`${this.state.etud.nomprenom}`}{' '}

Informations personnelles

-
-

Contact

- Téléphone: {this.state.etud.telephone}
- Mobile: {this.state.etud.telephonemobile}
- Mail étudiant: {this.state.etud.email}
- Mail perso: {this.state.etud.emailperso}
-
-
-

Lieu de résidence

- Domicile: {this.state.etud.domicile} - - {" " + this.state.etud.codepostaldomicile} {this.state.etud.villedomicile}
-
+ {this.state.etud.telephone !== "" || this.state.etud.telephonemobile !== "" || + this.state.etud.email !== "" || this.state.etud.emailperso !== "" ? +
+

Contact

+ {this.state.etud.telephone !== "" && "Téléphone: " + this.state.etud.telephone}
+ {this.state.etud.telephonemobile !== "" && "Mobile: " + this.state.etud.telephonemobile}
+ {this.state.etud.email !== "" && "Mail étudiant: " + this.state.etud.email}
+ {this.state.etud.emailperso !== "" && "Mail perso: " + this.state.etud.emailperso}
+
+ : +
Aucun contact disponible
+ } + + {this.state.etud.domicile !== "" || this.state.etud.codepostaldomicile !== "" || + this.state.etud.villedomicile !== "" ? +
+

Lieu de résidence

+ Domicile: {this.state.etud.domicile} - + {" " + this.state.etud.codepostaldomicile} {this.state.etud.villedomicile}
+
+ : +
Aucune information de résidence disponible
+ }
+
-
-

Parcours

- Bac {this.state.etud.bac} (Spécialité {this.state.etud.specialite}) - - {" " + this.state.etud.nomlycee} ({this.state.etud.codepostallycee} {this.state.etud.villelycee})
-
+ {this.state.etud.bac !== "" || this.state.etud.specialite !== "" ? +
+

Parcours

+ Bac {this.state.etud.bac} {this.state.etud.specialite} + {this.state.etud.nomlycee !== "" || this.state.etud.codepostallycee !== "" || + this.state.etud.villelycee !== "" ? +
+ {" " + this.state.etud.nomlycee} ({this.state.etud.codepostallycee} {this.state.etud.villelycee})
+
+ : null} +
+ : null} + {this.state.loaded === true &&

Formation actuelle

@@ -119,13 +137,6 @@ class Etudiant extends Component { */}
-
-
- - - -
-
) } diff --git a/src/ScoDoc/GestionSemestre.js b/src/ScoDoc/GestionSemestre.js index c48336a..a4348f3 100644 --- a/src/ScoDoc/GestionSemestre.js +++ b/src/ScoDoc/GestionSemestre.js @@ -1,10 +1,9 @@ import React, {Component} from "react"; -import {Tabs, Tab, Button} from "react-bootstrap" -import Acceuil from "./GestionSemestre/Acceuil"; +import {Tabs, Tab} from "react-bootstrap" +import Accueil from "./GestionSemestre/Accueil"; import Absences from "./GestionSemestre/Absences"; import Eleves from "./GestionSemestre/Eleves"; import ScoNavBar from "./ScoNavBar"; -import {Link} from "react-router-dom"; import Bulletin from "./GestionSemestre/Bulletin"; class GestionSemestre extends Component { @@ -13,9 +12,9 @@ class GestionSemestre extends Component {
- - - + + + @@ -28,13 +27,6 @@ class GestionSemestre extends Component {
-
-
- - - -
-
) } diff --git a/src/ScoDoc/GestionSemestre/Absences.js b/src/ScoDoc/GestionSemestre/Absences.js index c444247..a6796e1 100644 --- a/src/ScoDoc/GestionSemestre/Absences.js +++ b/src/ScoDoc/GestionSemestre/Absences.js @@ -14,8 +14,8 @@ class Absences extends Component { } componentWillMount() { - let dept = window.location.href.split('/')[3] - let sem = window.location.href.split('/')[5] + let dept = window.location.href.split('/')[6] + let sem = window.location.href.split('/')[8] let BASE_URL = window.$api_url fetch(BASE_URL + dept + '/Scolarite/Notes/groups_view?with_codes=1&format=json&formsemestre_id=' + sem, { @@ -41,7 +41,7 @@ class Absences extends Component { } getData() { - let dept = window.location.href.split('/')[3] + let dept = window.location.href.split('/')[6] let BASE_URL = window.$api_url if (this.state.id !== "") { fetch(BASE_URL + dept + "/Scolarite/Absences/ListeAbsEtud?format=json&etudid=" + this.state.id, { diff --git a/src/ScoDoc/GestionSemestre/Acceuil.js b/src/ScoDoc/GestionSemestre/Accueil.js similarity index 87% rename from src/ScoDoc/GestionSemestre/Acceuil.js rename to src/ScoDoc/GestionSemestre/Accueil.js index 6969e40..8c1019b 100644 --- a/src/ScoDoc/GestionSemestre/Acceuil.js +++ b/src/ScoDoc/GestionSemestre/Accueil.js @@ -1,7 +1,7 @@ import React, {Component} from "react"; import '../Style.css' -class Acceuil extends Component { +class Accueil extends Component { constructor(props) { super(props); this.state = { @@ -11,8 +11,8 @@ class Acceuil extends Component { } componentWillMount() { - let dept = window.location.href.split('/')[3] - let sem = window.location.href.split('/')[5] + let dept = window.location.href.split('/')[6] + let sem = window.location.href.split('/')[8] let BASE_URL = window.$api_url fetch(BASE_URL + dept + '/Scolarite/Notes/formsemestre_list?format=json&formsemestre_id=' + sem, { @@ -40,4 +40,4 @@ class Acceuil extends Component { } } -export default Acceuil \ No newline at end of file +export default Accueil \ No newline at end of file diff --git a/src/ScoDoc/GestionSemestre/Bulletin.js b/src/ScoDoc/GestionSemestre/Bulletin.js index e4746ed..8eee8c7 100644 --- a/src/ScoDoc/GestionSemestre/Bulletin.js +++ b/src/ScoDoc/GestionSemestre/Bulletin.js @@ -19,8 +19,8 @@ class Bulletin extends Component { } componentWillMount() { - let dept = window.location.href.split('/')[3] - let sem = window.location.href.split('/')[5] + let dept = window.location.href.split('/')[6] + let sem = window.location.href.split('/')[8] let BASE_URL = window.$api_url fetch(BASE_URL + dept + '/Scolarite/Notes/groups_view?with_codes=1&format=json&formsemestre_id=' + sem, { @@ -56,8 +56,8 @@ class Bulletin extends Component { } getData() { - let dept = window.location.href.split('/')[3] - let sem = window.location.href.split('/')[5] + let dept = window.location.href.split('/')[6] + let sem = window.location.href.split('/')[8] let BASE_URL = window.$api_url fetch(BASE_URL + dept + '/Scolarite/Notes/formsemestre_bulletinetud?formsemestre_id=' + sem +'&etudid=' + this.state.id +'&format=json', { @@ -135,7 +135,7 @@ class Bulletin extends Component { {ue.module.map((mod, index) => { return ( - {mod.titre} + {mod.titre.replace("'", "'")} {mod.rang.value}/{this.state.bltn.rang.ninscrits} {mod.note.min} {mod.note.max} diff --git a/src/ScoDoc/GestionSemestre/Eleves.js b/src/ScoDoc/GestionSemestre/Eleves.js index 91c3485..8085f83 100644 --- a/src/ScoDoc/GestionSemestre/Eleves.js +++ b/src/ScoDoc/GestionSemestre/Eleves.js @@ -12,8 +12,8 @@ class Eleves extends Component { } componentWillMount() { - let dept = window.location.href.split('/')[3] - let sem = window.location.href.split('/')[5] + let dept = window.location.href.split('/')[6] + let sem = window.location.href.split('/')[8] let BASE_URL = window.$api_url fetch(BASE_URL + dept + '/Scolarite/Notes/groups_view?with_codes=1&format=json&formsemestre_id=' + sem, { @@ -39,7 +39,7 @@ class Eleves extends Component { {this.state.students.map((student, index) => { return (
- + {student.nom_disp} {student.prenom}
diff --git a/src/ScoDoc/ScoNavBar.js b/src/ScoDoc/ScoNavBar.js index c8c234b..193c58d 100644 --- a/src/ScoDoc/ScoNavBar.js +++ b/src/ScoDoc/ScoNavBar.js @@ -27,7 +27,7 @@ class ScoNavBar extends Component { ScodocLogo diff --git a/src/ScoDoc/Scolarite.js b/src/ScoDoc/Scolarite.js index c822a2b..cc53394 100644 --- a/src/ScoDoc/Scolarite.js +++ b/src/ScoDoc/Scolarite.js @@ -22,7 +22,7 @@ class Scolarite extends Component { } */ componentWillMount() { - let dept = window.location.href.split('/')[3] + let dept = window.location.href.split('/')[6] let BASE_URL = window.$api_url fetch(BASE_URL + dept + '/Scolarite/Notes/formsemestre_list?format=json', { method: 'GET', @@ -59,20 +59,19 @@ class Scolarite extends Component { - Choix du semestre + Semestres en cours {this.state.semestres.map((sem, index) => { + if(sem.etat === "1") return (
- {sem.etat !== 0 ? - +

{sem.titre} [{sem.modalite}]

Semestre {sem.semestre_id} - Année {sem.anneescolaire} [{sem.date_debut} - {sem.date_fin}]

- : null}
) })} @@ -81,25 +80,39 @@ class Scolarite extends Component {
- - Recherche étudiant + + Semestres passés + + {this.state.semestres.map((sem, index) => { + if(sem.etat !== "1") + return ( +
+ +

{sem.titre} [{sem.modalite}]

+

Semestre {sem.semestre_id} - Année {sem.anneescolaire} [{sem.date_debut} - {sem.date_fin}]

+ +
+ ) + })} +
+
+
+ + + + Recherche étudiant + + + - -
-
- - - -
-
); } diff --git a/src/ScoDoc/SearchStudent.js b/src/ScoDoc/SearchStudent.js index e7d8902..0aa07f9 100644 --- a/src/ScoDoc/SearchStudent.js +++ b/src/ScoDoc/SearchStudent.js @@ -21,7 +21,7 @@ class SearchStudent extends Component { } searchStudent() { - let dept = window.location.href.split('/')[3] + let dept = window.location.href.split('/')[6] let BASE_URL = window.$api_url fetch(BASE_URL + dept + '/Scolarite/Notes/search_etud_by_name?term=' + this.state.search +'&format=json', { @@ -59,7 +59,7 @@ class SearchStudent extends Component { {this.state.students.map((student, index) => { return ( - + {student.label} diff --git a/src/index.js b/src/index.js index 3933202..9916257 100644 --- a/src/index.js +++ b/src/index.js @@ -5,7 +5,7 @@ import reportWebVitals from './reportWebVitals'; import Main from "./main"; import 'bootstrap/dist/css/bootstrap.min.css' -window.$api_url = 'https://scodoc.dev.net/ScoDoc/' // Global variable +window.$api_url = '/ScoDoc/' // Global variable ReactDOM.render( diff --git a/src/json/bltn.json b/src/json/bltn.json new file mode 100644 index 0000000..273bd03 --- /dev/null +++ b/src/json/bltn.json @@ -0,0 +1,626 @@ +{ + "rang": { + "ninscrits": 52, + "value": "1" + }, + "etape_apo2": "", + "etape_apo3": "", + "etape_apo4": "", + "etudiant": { + "nom": "BOLANO", + "prenom": "Roberto", + "sexe": "M.", + "code_ine": "", + "etudid": "EID9860", + "code_nip": "123456789", + "email": "roberto@santateresa.mx", + "photo_url": "\/ScoDoc\/static\/photos\/F68\/RT_EID29960.h90.jpg" + }, + "bonus_sport_culture": { + "value": 0 + }, + "absences": { + "nbabsjust": 0, + "nbabs": 1 + }, + "decision": { + "etat": "I", + "code": "ADM", + "compense_formsemestre_id" : "SEM12345" + }, + "note": { + "max": "15.51", + "moy": "10.80", + "value": "15.51", + "min": "07.29" + }, + "etudid": "EID9860", + "decision_ue": [ + { + "acronyme": "UE11", + "code": "ADM", + "ects": "16.0", + "titre": "D\u00e9couverte m\u00e9tiers", + "numero": "11", + "ue_id": "UE21456" + }, + { + "acronyme": "UE12", + "code": "ADM", + "ects": "14.0", + "titre": "Mise \u00e0 niveau des comp\u00e9tences transversales et scientifiques", + "numero": "12", + "ue_id": "UE21478" + } + ], + "ue_capitalisee": [ + + ], + "publie": 1, + "autorisation_inscription": [ + { + "semestre_id": 2 + } + ], + "appreciation": [ + + ], + "note_max": { + "value": 20 + }, + "date": "2014-07-12T17:38:47.693262", + "rang_group": [ + { + "ninscrits": 26, + "value": "1", + "group_type": "TD", + "group_name": "B" + }, + { + "ninscrits": 13, + "value": "1", + "group_type": "TP", + "group_name": "B1" + }, + { + "ninscrits": 4, + "value": "1", + "group_type": "G", + "group_name": "G4" + }, + { + "ninscrits": "", + "value": "", + "group_type": "tutorat", + "group_name": "" + }, + { + "ninscrits": "", + "value": "", + "group_type": "App", + "group_name": "" + }, + { + "ninscrits": "", + "value": "", + "group_type": "sport", + "group_name": "" + } + ], + "formsemestre_id": "SEM12345", + "etape_apo": "V1RT", + "ue": [ + { + "acronyme": "UE11", + "rang": "1", + "code_apogee": "VRTU11", + "ects": "16", + "numero": "11", + "note": { + "max": "16.17", + "value": "16.17", + "min": "06.56" + }, + "module": [ + { + "coefficient": 3, + "rang": { + "value": "1" + }, + "code": "M1101", + "code_apogee": "VRT1101", + "numero": 1101, + "note": { + "moy": "08.94", + "nb_notes": 51, + "nb_missing": 0, + "max": "19.18", + "min": "03.70", + "nb_valid_evals": 3, + "value": "19.18" + }, + "abbrev": "R\u00e9seaux d'entreprises", + "effectif": { + "value": 51 + }, + "titre": "Initiation aux r\u00e9seaux d'entreprises", + "evaluation": [ + + ], + "id": "MIP27427" + }, + { + "coefficient": 2, + "rang": { + "value": "2" + }, + "code": "M1102", + "code_apogee": "VRT1102", + "numero": 1102, + "note": { + "moy": "12.58", + "nb_notes": 50, + "nb_missing": 1, + "max": "16.79", + "min": "02.50", + "nb_valid_evals": 2, + "value": "16.50" + }, + "abbrev": "Initiation \u00e0 la t\u00e9l\u00e9phonie", + "effectif": { + "value": 51 + }, + "titre": "Initiation \u00e0 la t\u00e9l\u00e9phonie d'entreprise", + "evaluation": [ + + ], + "id": "MIP27437" + }, + { + "coefficient": 1.5, + "rang": { + "value": "1" + }, + "code": "M1103", + "code_apogee": "VRT1103", + "numero": 1103, + "note": { + "moy": "08.26", + "nb_notes": 51, + "nb_missing": 0, + "max": "13.41", + "min": "00.94", + "nb_valid_evals": 2, + "value": "13.41" + }, + "abbrev": "Architecture des \u00e9quipements informatiques", + "effectif": { + "value": 51 + }, + "titre": "Architecture des \u00e9quipements informatiques", + "evaluation": [ + + ], + "id": "MIP27451" + }, + { + "coefficient": 2, + "rang": { + "value": "1" + }, + "code": "M1104", + "code_apogee": "VRT1104", + "numero": 1104, + "note": { + "moy": "10.77", + "nb_notes": 51, + "nb_missing": 0, + "max": "17.90", + "min": "04.63", + "nb_valid_evals": 3, + "value": "17.90" + }, + "abbrev": "Principe et architecture des r\u00e9seaux", + "effectif": { + "value": 51 + }, + "titre": "Principe et architecture des r\u00e9seaux", + "evaluation": [ + + ], + "id": "MIP27431" + }, + { + "coefficient": 2, + "rang": { + "value": "1" + }, + "code": "M1105", + "code_apogee": "VRT1105", + "numero": 1105, + "note": { + "moy": "11.00", + "nb_notes": 51, + "nb_missing": 0, + "max": "17.83", + "min": "04.98", + "nb_valid_evals": 2, + "value": "17.83" + }, + "abbrev": "Bases des syst\u00e8mes d'exploitation", + "effectif": { + "value": 51 + }, + "titre": "Bases des syst\u00e8mes d'exploitation", + "evaluation": [ + + ], + "id": "MIP27433" + }, + { + "coefficient": 1.5, + "rang": { + "value": "6" + }, + "code": "M1106", + "code_apogee": "VRT1106", + "numero": 1106, + "note": { + "moy": "13.05", + "nb_notes": 51, + "nb_missing": 0, + "max": "17.79", + "min": "07.08", + "nb_valid_evals": 1, + "value": "16.25" + }, + "abbrev": "Initiation au d\u00e9veloppement Web", + "effectif": { + "value": 51 + }, + "titre": "Initiation au d\u00e9veloppement Web", + "evaluation": [ + + ], + "id": "MIP27449" + }, + { + "coefficient": 1.5, + "rang": { + "value": "9" + }, + "code": "M1107", + "code_apogee": "VRT1107", + "numero": 1107, + "note": { + "moy": "09.36", + "nb_notes": 51, + "nb_missing": 0, + "max": "14.21", + "min": "04.17", + "nb_valid_evals": 3, + "value": "11.66" + }, + "abbrev": "Initiation \u00e0 la mesure du signal", + "effectif": { + "value": 51 + }, + "titre": "Initiation \u00e0 la mesure du signal", + "evaluation": [ + + ], + "id": "MIP27440" + }, + { + "coefficient": 1.5, + "rang": { + "value": "7" + }, + "code": "M1108", + "code_apogee": "VRT1108", + "numero": 1108, + "note": { + "moy": "10.49", + "nb_notes": 51, + "nb_missing": 0, + "max": "16.31", + "min": "05.39", + "nb_valid_evals": 4, + "value": "13.22" + }, + "abbrev": "Acquisition et codage de l'information", + "effectif": { + "value": 51 + }, + "titre": "Acquisition et codage de l'information", + "evaluation": [ + + ], + "id": "MIP27453" + }, + { + "coefficient": 1, + "rang": { + "value": "4 ex" + }, + "code": "M1109", + "code_apogee": "VRT1109", + "numero": 1109, + "note": { + "moy": "12.46", + "nb_notes": 51, + "nb_missing": 0, + "max": "16.00", + "min": "09.00", + "nb_valid_evals": 1, + "value": "15.00" + }, + "abbrev": "PT : Recherche documentaire", + "effectif": { + "value": 51 + }, + "titre": "PT : Recherche documentaire", + "evaluation": [ + + ], + "id": "MIP27444" + } + ], + "effectif": "51", + "titre": "D\u00e9couverte m\u00e9tiers", + "id": "UE21456" + }, + { + "acronyme": "UE12", + "rang": "5", + "code_apogee": "VRTU12", + "ects": "14", + "numero": "12", + "note": { + "max": "15.20", + "value": "14.63", + "min": "07.94" + }, + "module": [ + { + "coefficient": 2, + "rang": { + "value": "3 ex" + }, + "code": "M1201", + "code_apogee": "VRT1201", + "numero": 10, + "note": { + "moy": "13.02", + "nb_notes": 51, + "nb_missing": 0, + "max": "16.00", + "min": "10.00", + "nb_valid_evals": 1, + "value": "14.00" + }, + "abbrev": "Anglais", + "effectif": { + "value": 51 + }, + "titre": "Anglais g\u00e9n\u00e9ral de communication et initiation au vocabulaire technique", + "evaluation": [ + + ], + "id": "MIP27430" + }, + { + "coefficient": 2, + "rang": { + "value": "16 ex" + }, + "code": "M1202", + "code_apogee": "VRT1202", + "numero": 20, + "note": { + "moy": "12.74", + "nb_notes": 51, + "nb_missing": 0, + "max": "17.75", + "min": "04.00", + "nb_valid_evals": 2, + "value": "14.00" + }, + "abbrev": "Expression", + "effectif": { + "value": 51 + }, + "titre": "EC: \u00c9l\u00e9ments fondamentaux de la communication", + "evaluation": [ + + ], + "id": "MIP27439" + }, + { + "coefficient": 1, + "rang": { + "value": "1 ex" + }, + "code": "M1203", + "code_apogee": "VRT1203", + "numero": 30, + "note": { + "moy": "NA", + "nb_notes": 0, + "nb_missing": 51, + "max": "-", + "min": "-", + "nb_valid_evals": 0, + "value": "-" + }, + "abbrev": "PPP: Connaitre son champ d'activit\u00e9", + "effectif": { + "value": 51 + }, + "titre": "PPP: Connaitre son champ d'activit\u00e9", + "evaluation": [ + + ], + "id": "MIP27436" + }, + { + "coefficient": 2, + "rang": { + "value": "6" + }, + "code": "M1204", + "code_apogee": "VRT1204", + "numero": 40, + "note": { + "moy": "10.66", + "nb_notes": 51, + "nb_missing": 0, + "max": "16.35", + "min": "05.73", + "nb_valid_evals": 8, + "value": "14.09" + }, + "abbrev": "Mise \u00e0 niveau en num\u00e9ration et calculs", + "effectif": { + "value": 51 + }, + "titre": "Mise \u00e0 niveau en num\u00e9ration et calculs", + "evaluation": [ + + ], + "id": "MIP27454" + }, + { + "coefficient": 2, + "rang": { + "value": "23" + }, + "code": "M1205", + "code_apogee": "VRT1205", + "numero": 50, + "note": { + "moy": "10.37", + "nb_notes": 51, + "nb_missing": 0, + "max": "18.69", + "min": "05.01", + "nb_valid_evals": 5, + "value": "10.58" + }, + "abbrev": "Connaissances et Outils pour le signal", + "effectif": { + "value": 51 + }, + "titre": "Harmonisation des connaissances et des outils pour le signal", + "evaluation": [ + + ], + "id": "MIP27432" + }, + { + "coefficient": 2, + "rang": { + "value": "3 ex" + }, + "code": "M1206", + "code_apogee": "VRT1206", + "numero": 60, + "note": { + "moy": "11.22", + "nb_notes": 51, + "nb_missing": 0, + "max": "16.76", + "min": "03.91", + "nb_valid_evals": 6, + "value": "15.12" + }, + "abbrev": "Circuits \u00e9lectroniques : mise \u00e0 niveau", + "effectif": { + "value": 51 + }, + "titre": "Circuits \u00e9lectroniques : mise \u00e0 niveau", + "evaluation": [ + + ], + "id": "MIP27435" + }, + { + "coefficient": 2, + "rang": { + "value": "1 ex" + }, + "code": "M1207", + "code_apogee": "VRT1207", + "numero": 70, + "note": { + "moy": "08.39", + "nb_notes": 51, + "nb_missing": 0, + "max": "20.00", + "min": "00.00", + "nb_valid_evals": 1, + "value": "20.00" + }, + "abbrev": "Programmation 1", + "effectif": { + "value": 51 + }, + "titre": "Bases de la programmation", + "evaluation": [ + + ], + "id": "MIP27445" + }, + { + "coefficient": 1, + "rang": { + "value": "1 ex" + }, + "code": "M1208", + "code_apogee": "VRT1208", + "numero": 80, + "note": { + "moy": "NA", + "nb_notes": 0, + "nb_missing": 51, + "max": "-", + "min": "-", + "nb_valid_evals": 0, + "value": "-" + }, + "abbrev": "M\u00e9thodologie Universitaire 1", + "effectif": { + "value": 51 + }, + "titre": "Adaptation et m\u00e9thodologie pour la r\u00e9ussite Universitaire", + "evaluation": [ + + ], + "id": "MIP27434" + } + ], + "effectif": "51", + "titre": "Mise \u00e0 niveau des comp\u00e9tences transversales et scientifiques", + "id": "UE21478" + }, + { + "acronyme": "UE 1S", + "rang": "1 ex", + "code_apogee": "", + "ects": "0", + "numero": "13", + "note": { + "max": "00.00", + "value": "00.00", + "min": "00.00" + }, + "module": [ + + ], + "effectif": "51", + "titre": "Sport &amp; Culture", + "id": "UE23716" + } + ], + "situation": "Inscrit le 02\/09\/2015. D\u00e9cision jury: Valid\u00e9. UE acquises: UE11, UE12. Autoris\u00e9 \u00e0 s'inscrire en S2." +} \ No newline at end of file diff --git a/src/main.js b/src/main.js index ffa36f2..6d06d53 100644 --- a/src/main.js +++ b/src/main.js @@ -9,10 +9,10 @@ import Etudiant from "./ScoDoc/Etudiant"; const Main = () => { return ( - - - - + + + + ); }