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 0000000..525f5d3 Binary files /dev/null and b/public/scologo.png differ diff --git a/src/ScoDoc/ChoixDept.js b/src/ScoDoc/ChoixDept.js index 8ab35d0..1769f07 100644 --- a/src/ScoDoc/ChoixDept.js +++ b/src/ScoDoc/ChoixDept.js @@ -35,7 +35,7 @@ class ChoixDept extends Component { {this.state.depts.map((dept, index) => { 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 & 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 ( - - - - + + + + ); }