Optimisations mineures
This commit is contained in:
parent
4b0c3cf1b9
commit
c6c2f25c80
@ -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
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
{
|
||||
"name": "scodocmobile",
|
||||
"version": "0.1.0",
|
||||
"homepage": "./",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@testing-library/jest-dom": "^5.11.10",
|
||||
|
BIN
public/scologo.png
Normal file
BIN
public/scologo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
@ -35,7 +35,7 @@ class ChoixDept extends Component {
|
||||
{this.state.depts.map((dept, index) => {
|
||||
return (
|
||||
<div id="wrapDept">
|
||||
<Link to={`/${dept}/Scolarite`}>
|
||||
<Link to={`/ScoDoc/static/mobile/${dept}/Scolarite`}>
|
||||
Département {dept}
|
||||
</Link>
|
||||
</div>
|
||||
|
@ -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 {
|
||||
<h1>{this.state.etud.nomprenom}</h1>
|
||||
<img
|
||||
alt={`${this.state.etud.nomprenom}`}
|
||||
src={`https://scodoc.dev.net/ScoDoc/RT/Scolarite/Notes/${this.state.etud.photo_url}`}
|
||||
src={`/ScoDoc/${window.location.href.split('/')[6]}/Scolarite/Notes/${this.state.etud.photo_url}`}
|
||||
width="102"
|
||||
height="128"
|
||||
className="d-inline-block align-top"
|
||||
/>{' '}
|
||||
<div id="wrapDept" className="col-sm">
|
||||
<h3>Informations personnelles</h3>
|
||||
<div className="col-sm">
|
||||
<h4>Contact</h4>
|
||||
Téléphone: {this.state.etud.telephone}<br/>
|
||||
Mobile: {this.state.etud.telephonemobile}<br/>
|
||||
Mail étudiant: {this.state.etud.email}<br/>
|
||||
Mail perso: {this.state.etud.emailperso}<br/>
|
||||
</div>
|
||||
<div className="col-sm">
|
||||
<h4>Lieu de résidence</h4>
|
||||
Domicile: {this.state.etud.domicile} -
|
||||
{" " + this.state.etud.codepostaldomicile} {this.state.etud.villedomicile}<br/>
|
||||
</div>
|
||||
{this.state.etud.telephone !== "" || this.state.etud.telephonemobile !== "" ||
|
||||
this.state.etud.email !== "" || this.state.etud.emailperso !== "" ?
|
||||
<div className="col-sm">
|
||||
<h4>Contact</h4>
|
||||
{this.state.etud.telephone !== "" && "Téléphone: " + this.state.etud.telephone}<br/>
|
||||
{this.state.etud.telephonemobile !== "" && "Mobile: " + this.state.etud.telephonemobile}<br/>
|
||||
{this.state.etud.email !== "" && "Mail étudiant: " + this.state.etud.email}<br/>
|
||||
{this.state.etud.emailperso !== "" && "Mail perso: " + this.state.etud.emailperso}<br/>
|
||||
</div>
|
||||
:
|
||||
<div className="col-sm">Aucun contact disponible</div>
|
||||
}
|
||||
|
||||
{this.state.etud.domicile !== "" || this.state.etud.codepostaldomicile !== "" ||
|
||||
this.state.etud.villedomicile !== "" ?
|
||||
<div className="col-sm">
|
||||
<h4>Lieu de résidence</h4>
|
||||
Domicile: {this.state.etud.domicile} -
|
||||
{" " + this.state.etud.codepostaldomicile} {this.state.etud.villedomicile}<br/>
|
||||
</div>
|
||||
:
|
||||
<div className="col-sm">Aucune information de résidence disponible</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
<div id="wrapDept" className="col-sm">
|
||||
<div className="col-sm">
|
||||
<h4>Parcours</h4>
|
||||
Bac {this.state.etud.bac} (Spécialité {this.state.etud.specialite}) -
|
||||
{" " + this.state.etud.nomlycee} ({this.state.etud.codepostallycee} {this.state.etud.villelycee})<br/>
|
||||
</div>
|
||||
{this.state.etud.bac !== "" || this.state.etud.specialite !== "" ?
|
||||
<div className="col-sm">
|
||||
<h4>Parcours</h4>
|
||||
Bac {this.state.etud.bac} {this.state.etud.specialite}
|
||||
{this.state.etud.nomlycee !== "" || this.state.etud.codepostallycee !== "" ||
|
||||
this.state.etud.villelycee !== "" ?
|
||||
<div>
|
||||
{" " + this.state.etud.nomlycee} ({this.state.etud.codepostallycee} {this.state.etud.villelycee})<br/>
|
||||
</div>
|
||||
: null}
|
||||
</div>
|
||||
: null}
|
||||
|
||||
{this.state.loaded === true &&
|
||||
<div className="col-sm">
|
||||
<h4>Formation actuelle</h4>
|
||||
@ -119,13 +137,6 @@ class Etudiant extends Component {
|
||||
*/}
|
||||
</div>
|
||||
</div>
|
||||
<footer className="fixed-bottom">
|
||||
<div style={{background: "#cccccc", padding: "5px"}}>
|
||||
<Link to={`/${window.location.href.split('/')[3]}/Scolarite`}>
|
||||
<Button type="button" className="btn waves-effect waves-light btn-primary">Retour au choix de semestre</Button>
|
||||
</Link>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
@ -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 {
|
||||
<div>
|
||||
<ScoNavBar/>
|
||||
<div>
|
||||
<Tabs defaultActiveKey="Acceuil" id="controlled-tab-example">
|
||||
<Tab eventKey="Acceuil" title="Acceuil">
|
||||
<Acceuil />
|
||||
<Tabs defaultActiveKey="Accueil" id="controlled-tab-example">
|
||||
<Tab eventKey="Accueil" title="Acceuil">
|
||||
<Accueil />
|
||||
</Tab>
|
||||
<Tab eventKey="Absences" title="Absences">
|
||||
<Absences />
|
||||
@ -28,13 +27,6 @@ class GestionSemestre extends Component {
|
||||
</Tab>
|
||||
</Tabs>
|
||||
</div>
|
||||
<footer>
|
||||
<div style={{background: "#cccccc", padding: "5px"}}>
|
||||
<Link to={`/${window.location.href.split('/')[3]}/Scolarite`}>
|
||||
<Button type="button" className="btn waves-effect waves-light btn-primary">Retour au choix de semestre</Button>
|
||||
</Link>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
@ -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, {
|
||||
|
@ -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
|
||||
export default Accueil
|
@ -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 (
|
||||
<tr>
|
||||
<td colSpan="3">{mod.titre}</td>
|
||||
<td colSpan="3">{mod.titre.replace("'", "'")}</td>
|
||||
<td>{mod.rang.value}/{this.state.bltn.rang.ninscrits}</td>
|
||||
<td>{mod.note.min}</td>
|
||||
<td>{mod.note.max}</td>
|
||||
|
@ -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 (
|
||||
<div className="col-sm" key={index} id="wrapDept">
|
||||
<Link to={`/${window.location.href.split('/')[3]}/Scolarite/Etudiant/${student.etudid}`}>
|
||||
<Link to={`/ScoDoc/static/mobile/${window.location.href.split('/')[6]}/Scolarite/Etudiant/${student.etudid}`}>
|
||||
{student.nom_disp} {student.prenom}
|
||||
</Link>
|
||||
</div>
|
||||
|
@ -27,7 +27,7 @@ class ScoNavBar extends Component {
|
||||
<Navbar.Brand>
|
||||
<img
|
||||
alt="ScodocLogo"
|
||||
src="https://scodoc.dev.net/ScoDoc/static/icons/scologo_img.png"
|
||||
src="/ScoDoc/static/icons/scologo_img.png"
|
||||
width="20"
|
||||
height="30"
|
||||
className="d-inline-block align-top"
|
||||
@ -37,7 +37,7 @@ class ScoNavBar extends Component {
|
||||
<Navbar.Toggle aria-controls="basic-navbar-nav" />
|
||||
<Navbar.Collapse id="basic-navbar-nav">
|
||||
<Nav className="ml-auto">
|
||||
<Link to="/">
|
||||
<Link to="/ScoDoc/static/mobile/">
|
||||
<Button variant="primary" onClick={() => {this.logout()}}>Déconnexion</Button>
|
||||
</Link>
|
||||
</Nav>
|
||||
|
@ -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 {
|
||||
<Card>
|
||||
<Card.Header>
|
||||
<Accordion.Toggle as={Button} variant="link" eventKey="0">
|
||||
Choix du semestre
|
||||
Semestres en cours
|
||||
</Accordion.Toggle>
|
||||
</Card.Header>
|
||||
<Accordion.Collapse eventKey="0">
|
||||
<Card.Body>
|
||||
{this.state.semestres.map((sem, index) => {
|
||||
if(sem.etat === "1")
|
||||
return (
|
||||
<div className="col-12" key={index} id="wrapDept">
|
||||
{sem.etat !== 0 ?
|
||||
<Link to={`/${window.location.href.split('/')[3]}/Scolarite/${sem.formsemestre_id}/GestionSem`}>
|
||||
<Link to={`/ScoDoc/static/mobile/${window.location.href.split('/')[6]}/Scolarite/${sem.formsemestre_id}/GestionSem`}>
|
||||
<h3>{sem.titre} [{sem.modalite}]</h3>
|
||||
<p>Semestre {sem.semestre_id} - Année {sem.anneescolaire} [{sem.date_debut} - {sem.date_fin}]</p>
|
||||
</Link>
|
||||
: null}
|
||||
</div>
|
||||
)
|
||||
})}
|
||||
@ -81,25 +80,39 @@ class Scolarite extends Component {
|
||||
</Card>
|
||||
<Card>
|
||||
<Card.Header>
|
||||
<Accordion.Toggle as={Button} variant="link" eventKey="1">
|
||||
Recherche étudiant
|
||||
<Accordion.Toggle as={Button} variant="link" eventKey="0">
|
||||
Semestres passés
|
||||
</Accordion.Toggle>
|
||||
</Card.Header>
|
||||
<Accordion.Collapse eventKey="1">
|
||||
<Card.Body>
|
||||
{this.state.semestres.map((sem, index) => {
|
||||
if(sem.etat !== "1")
|
||||
return (
|
||||
<div className="col-12" key={index} id="wrapDept">
|
||||
<Link to={`/ScoDoc/static/mobile/${window.location.href.split('/')[6]}/Scolarite/${sem.formsemestre_id}/GestionSem`}>
|
||||
<h3>{sem.titre} [{sem.modalite}]</h3>
|
||||
<p>Semestre {sem.semestre_id} - Année {sem.anneescolaire} [{sem.date_debut} - {sem.date_fin}]</p>
|
||||
</Link>
|
||||
</div>
|
||||
)
|
||||
})}
|
||||
</Card.Body>
|
||||
</Accordion.Collapse>
|
||||
</Card>
|
||||
<Card>
|
||||
<Card.Header>
|
||||
<Accordion.Toggle as={Button} variant="link" eventKey="2">
|
||||
Recherche étudiant
|
||||
</Accordion.Toggle>
|
||||
</Card.Header>
|
||||
<Accordion.Collapse eventKey="2">
|
||||
<Card.Body>
|
||||
<SearchStudent />
|
||||
</Card.Body>
|
||||
</Accordion.Collapse>
|
||||
</Card>
|
||||
</Accordion>
|
||||
|
||||
<footer className="fixed-bottom">
|
||||
<div style={{background: "#cccccc", padding: "5px"}}>
|
||||
<Link to="/">
|
||||
<Button type="button" className="btn waves-effect waves-light btn-primary">Retour au choix de département</Button>
|
||||
</Link>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
@ -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 (
|
||||
<Row id="wrapDept">
|
||||
<Link to={`/${window.location.href.split('/')[3]}/Scolarite/Etudiant/${student.value}`}>
|
||||
<Link to={`/ScoDoc/static/mobile/${window.location.href.split('/')[6]}/Scolarite/Etudiant/${student.value}`}>
|
||||
<span>{student.label}</span>
|
||||
</Link>
|
||||
</Row>
|
||||
|
@ -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(
|
||||
<BrowserRouter>
|
||||
|
626
src/json/bltn.json
Normal file
626
src/json/bltn.json
Normal file
@ -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."
|
||||
}
|
@ -9,10 +9,10 @@ import Etudiant from "./ScoDoc/Etudiant";
|
||||
const Main = () => {
|
||||
return (
|
||||
<Switch>
|
||||
<Route exact path='/' component={Login}/>
|
||||
<Route exact path='/:DEPT/Scolarite' component={Scolarite}/>
|
||||
<Route exact path='/:DEPT/Scolarite/Etudiant/:EtudId' component={Etudiant}/>
|
||||
<Route exact path='/:DEPT/Scolarite/:SEM/GestionSem' component={GestionSemestre}/>
|
||||
<Route exact path='/ScoDoc/static/mobile' component={Login}/>
|
||||
<Route exact path='/ScoDoc/static/mobile/:DEPT/Scolarite' component={Scolarite}/>
|
||||
<Route exact path='/ScoDoc/static/mobile/:DEPT/Scolarite/Etudiant/:EtudId' component={Etudiant}/>
|
||||
<Route exact path='/ScoDoc/static/mobile/:DEPT/Scolarite/:SEM/GestionSem' component={GestionSemestre}/>
|
||||
</Switch>
|
||||
);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user