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}
{' '}
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 {
-
+
{this.logout()}}>Déconnexion
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 (
-
-
-
-
+
+
+
+
);
}