ScoDoc/static/mobile/static/js/main.6494c216.chunk.js.map

1 line
76 KiB
Plaintext

{"version":3,"sources":["reportWebVitals.js","ScoDoc/ScoNavBar.js","ScoDoc/SearchStudent.js","ScoDoc/Scolarite.js","ScoDoc/ChoixDept.js","ScoDoc/Login.js","ScoDoc/GestionSemestre/Accueil.js","ScoDoc/GestionSemestre/Absences/SaisieAbs.js","ScoDoc/GestionSemestre/Absences/SupprAbs.js","ScoDoc/GestionSemestre/Absences.js","ScoDoc/GestionSemestre/Eleves.js","ScoDoc/GestionSemestre/Bulletin.js","ScoDoc/GestionSemestre.js","ScoDoc/Etudiant.js","main.js","index.js"],"names":["reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ScoNavBar","props","state","login","semestre","logout","BASE_URL","window","$api_url","fetch","res","setState","catch","console","log","Navbar","bg","expand","Container","Brand","href","alt","src","width","height","className","Toggle","aria-controls","Collapse","id","Nav","Link","Button","variant","onClick","this","push","to","Component","SearchStudent","students","search_status","handleChangeSearch","bind","searchStudent","e","search","target","value","dept","location","split","method","credentials","response","json","data","length","toast","searched","Col","map","student","index","Row","label","type","onChange","result","Scolarite","semestres","dismissToast","getData","verify","status","Accordion","defaultActiveKey","Card","Header","as","eventKey","Body","sem","etat","formsemestre_id","titre","modalite","semestre_id","anneescolaire","date_debut","date_fin","ChoixDept","depts","Login","pass","handleChangeLogin","handleChangePass","checkCredentials","preventDefault","headers","btoa","isMobile","document","cookie","placeholder","Accueil","responsables","SaisieAbs","openModal","isOpen","closeModal","onFormSubmit","formData","FormData","formDataObj","Object","fromEntries","entries","reqstr","etudid","hasOwnProperty","dateDebut","dateFin","postData","error","form","prevProps","open","body","Modal","show","onHide","closeButton","Title","Form","onSubmit","Group","ControlId","Label","Control","name","Check","inline","rows","Footer","SupprAbs","date","demijournee","Absences","abs","isDelOpen","isEditOpen","key","setTimeout","size","style","datedmy","matin","motif","exams","ampm","Eleves","nom_disp","prenom","Bulletin","bltn","datue","loaded","getJsonData","require","ls","elm","decision_ue","acronyme","blob","file","URL","createObjectURL","assign","Table","responsive","colSpan","Dropdown","note","Menu","Item","min","max","rang","ninscrits","ue","module","mod","replace","code","coefficient","getPdf","GestionSemestre","selectOptions","joined","concat","options","handleSelectChange","Tabs","Tab","title","Etudiant","etud","formation","insemestre","nomprenom","photo_url","telephone","telephonemobile","email","emailperso","domicile","codepostaldomicile","villedomicile","bac","specialite","nomlycee","codepostallycee","villelycee","titreannee","Main","exact","path","component","ReactDOM","render","getElementById"],"mappings":"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","file":"static/js/main.6494c216.chunk.js","sourcesContent":["const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React, {Component} from \"react\";\r\nimport {Nav, Navbar, Button, Container} from 'react-bootstrap'\r\nimport { Redirect } from 'react-router-dom';\r\nimport './Style.css'\r\n\r\nclass ScoNavBar extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n login: {},\r\n semestre: {},\r\n logout: false\r\n };\r\n }\r\n\r\n logout() {\r\n let BASE_URL = window.$api_url\r\n\r\n fetch(BASE_URL + \"acl_users/logout\")\r\n .then(res => {this.setState({logout: true})})\r\n .catch(console.log)\r\n }\r\n\r\n render() {\r\n return (\r\n <Navbar bg=\"light\" expand=\"sm\">\r\n <Container>\r\n <Navbar.Brand href={window.$api_url + \"static/mobile/\"}>\r\n <img\r\n alt=\"ScodocLogo\"\r\n src=\"/ScoDoc/static/icons/scologo_img.png\"\r\n width=\"20\"\r\n height=\"30\"\r\n className=\"d-inline-block align-top\"\r\n />{' '}\r\n ScoDoc\r\n </Navbar.Brand>\r\n <Navbar.Toggle aria-controls=\"basic-navbar-nav\" />\r\n <Navbar.Collapse id=\"basic-navbar-nav\">\r\n <Nav className=\"ml-auto\">\r\n <Nav.Link href=\"/ScoDoc\">Version Desktop</Nav.Link>\r\n <Button variant=\"primary\" onClick={() => {this.logout()}}>Déconnexion</Button>\r\n </Nav>\r\n </Navbar.Collapse>\r\n </Container>\r\n {this.state.logout === true &&\r\n <Redirect push to={window.$api_url + 'static/mobile/'}/>\r\n }\r\n </Navbar>\r\n )\r\n }\r\n}\r\n\r\nexport default ScoNavBar","import React, {Component} from \"react\";\r\nimport {Link, Redirect} from \"react-router-dom\";\r\nimport {Row, Col} from \"react-bootstrap\"\r\n\r\nclass SearchStudent extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n students: [],\r\n // Status possibles:\r\n // 0: Vide - 1: Pas de resultat - 2: Plusieurs resultats\r\n search_status: 0,\r\n };\r\n this.handleChangeSearch = this.handleChangeSearch.bind(this)\r\n this.searchStudent = this.searchStudent.bind(this);\r\n }\r\n\r\n\r\n handleChangeSearch(e) {\r\n this.setState({ search: e.target.value });\r\n }\r\n\r\n searchStudent() {\r\n let dept = window.location.href.split('/')[6]\r\n let BASE_URL = window.$api_url\r\n fetch(BASE_URL + dept +\r\n '/Scolarite/Notes/search_etud_by_name?term=' + this.state.search +'&format=json', {\r\n method: \"GET\",\r\n credentials: \"include\",\r\n })\r\n .then(response =>\r\n response.json().then(data => ({data: data,})\r\n ).then(res => {\r\n this.setState({ students: res.data });\r\n console.log(this.state.students)\r\n }))\r\n .then(res => {\r\n if (this.state.students.length === 0) {\r\n this.setState({search_status: 1, toast: true});\r\n } else if (this.state.students.length === 1) {\r\n return <Redirect to=\"/\" />\r\n } else {\r\n this.setState({search_status: 2, toast: false});\r\n }\r\n })\r\n this.setState({searched: true})\r\n }\r\n\r\n result() {\r\n if (this.state.toast === true) {\r\n return (\r\n <div id=\"wrapDept\">\r\n Aucun élève trouvé\r\n </div>\r\n )\r\n } else if (this.state.search_status === 2) {\r\n return (\r\n <Col>\r\n {this.state.students.map((student, index) => {\r\n return (\r\n <Row id=\"wrapDept\">\r\n <Link to={`/ScoDoc/static/mobile/${window.location.href.split('/')[6]}/Scolarite/Etudiant/${student.value}`}>\r\n <span>{student.label}</span>\r\n </Link>\r\n </Row>\r\n );\r\n })}\r\n </Col>\r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <div className=\"wrapper\">\r\n <div className=\"input-group\">\r\n <input type=\"text\" id=\"search\" className=\"form-control\" onChange={this.handleChangeSearch}/>\r\n <div className=\"input-group-append\">\r\n <button type=\"button\" className=\"btn waves-effect waves-light btn-primary\" onClick={() => {this.searchStudent()}}>\r\n Rechercher\r\n </button>\r\n </div>\r\n </div>\r\n {this.result()}\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default SearchStudent","import React, {Component} from \"react\";\r\nimport {Link} from \"react-router-dom\";\r\nimport './Style.css'\r\nimport ScoNavBar from \"./ScoNavBar\";\r\nimport SearchStudent from './SearchStudent'\r\nimport {Accordion, Card, Button} from 'react-bootstrap'\r\n\r\nclass Scolarite extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n semestres: [],\r\n students: [],\r\n toast: false\r\n };\r\n this.dismissToast = this.dismissToast.bind(this);\r\n this.getData = this.getData.bind(this);\r\n }\r\n\r\n /* getJsonData () {\r\n return require('..\\\\json\\\\sems.json');\r\n } */\r\n\r\n componentWillMount() {\r\n let dept = window.location.href.split('/')[6]\r\n let BASE_URL = window.$api_url\r\n fetch(BASE_URL + dept + '/Scolarite/Notes/formsemestre_list?format=json', {\r\n method: 'GET',\r\n verify: false,\r\n credentials: 'include',\r\n })\r\n .then(response =>\r\n response.json().then(data => ({\r\n data: data,\r\n status: response.status\r\n })\r\n ).then(res => {\r\n this.setState({ semestres: res.data });\r\n }));\r\n }\r\n\r\n getData () {\r\n return this.state.semestres\r\n }\r\n\r\n dismissToast() {\r\n this.setState({toast: false})\r\n }\r\n\r\n render() {\r\n return (\r\n <div>\r\n <ScoNavBar/>\r\n <section>\r\n <h1 id=\"pageTitle\">Scolarité</h1>\r\n </section>\r\n\r\n <Accordion defaultActiveKey=\"0\">\r\n <Card>\r\n <Card.Header>\r\n <Accordion.Toggle as={Button} variant=\"link\" eventKey=\"0\">\r\n Semestres en cours\r\n </Accordion.Toggle>\r\n </Card.Header>\r\n <Accordion.Collapse eventKey=\"0\">\r\n <Card.Body>\r\n <div className=\"container\">\r\n <div className=\"row\">\r\n {this.state.semestres.map((sem, index) => {\r\n if(sem.etat === \"1\")\r\n return (\r\n <div className=\"col-sm\" key={index} id=\"wrapDept\">\r\n <Link to={`/ScoDoc/static/mobile/${window.location.href.split('/')[6]}/Scolarite/${sem.formsemestre_id}/GestionSem`}>\r\n <h3>{sem.titre} [{sem.modalite}]</h3>\r\n <p>Semestre {sem.semestre_id} - Année {sem.anneescolaire} [{sem.date_debut} - {sem.date_fin}]</p>\r\n </Link>\r\n </div>\r\n )\r\n })}\r\n </div>\r\n </div>\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n </Card>\r\n <Card>\r\n <Card.Header>\r\n <Accordion.Toggle as={Button} variant=\"link\" eventKey=\"0\">\r\n Semestres passés\r\n </Accordion.Toggle>\r\n </Card.Header>\r\n <Accordion.Collapse eventKey=\"1\">\r\n <Card.Body>\r\n {this.state.semestres.map((sem, index) => {\r\n if(sem.etat !== \"1\")\r\n return (\r\n <div className=\"col-12\" key={index} id=\"wrapDept\">\r\n <Link to={`/ScoDoc/static/mobile/${window.location.href.split('/')[6]}/Scolarite/${sem.formsemestre_id}/GestionSem`}>\r\n <h3>{sem.titre} [{sem.modalite}]</h3>\r\n <p>Semestre {sem.semestre_id} - Année {sem.anneescolaire} [{sem.date_debut} - {sem.date_fin}]</p>\r\n </Link>\r\n </div>\r\n )\r\n })}\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n </Card>\r\n <Card>\r\n <Card.Header>\r\n <Accordion.Toggle as={Button} variant=\"link\" eventKey=\"2\">\r\n Recherche étudiant\r\n </Accordion.Toggle>\r\n </Card.Header>\r\n <Accordion.Collapse eventKey=\"2\">\r\n <Card.Body>\r\n <SearchStudent />\r\n </Card.Body>\r\n </Accordion.Collapse>\r\n </Card>\r\n </Accordion>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default Scolarite;","import React, {Component} from \"react\";\r\nimport {Link} from \"react-router-dom\";\r\nimport './Style.css'\r\n\r\nclass ChoixDept extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n depts: [],\r\n };\r\n }\r\n\r\n componentWillMount() {\r\n let BASE_URL = window.$api_url\r\n fetch(BASE_URL + 'list_depts?format=json', {\r\n method: 'GET',\r\n verify: false,\r\n credentials: 'include',\r\n })\r\n .then(response =>\r\n response.json().then(data => ({\r\n data: data,\r\n status: response.status\r\n })\r\n ).then(res => {\r\n this.setState({ depts: res.data })\r\n }));\r\n }\r\n\r\n render() {\r\n return (\r\n <div className=\"wrapper\">\r\n <h1 id=\"pageTitle\">Choix du département</h1>\r\n <div className=\"container\">\r\n <div className=\"row\">\r\n {this.state.depts.map((dept, index) => {\r\n return (\r\n <div className=\"col-sm\" key={index} id=\"wrapDept\">\r\n <Link to={`/ScoDoc/static/mobile/${dept}/Scolarite`}>\r\n Département {dept}\r\n </Link>\r\n </div>\r\n )\r\n },)}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default ChoixDept","import React, {Component} from \"react\";\r\nimport { isMobile } from 'react-device-detect';\r\nimport './Style.css'\r\nimport ChoixDept from \"./ChoixDept\";\r\nimport ScoNavBar from \"./ScoNavBar\";\r\n\r\nclass Login extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n login: \"\",\r\n pass: \"\",\r\n status: 0,\r\n };\r\n this.handleChangeLogin = this.handleChangeLogin.bind(this);\r\n this.handleChangePass = this.handleChangePass.bind(this);\r\n this.checkCredentials = this.checkCredentials.bind(this)\r\n }\r\n\r\n handleChangeLogin(e) {\r\n this.setState({ login: e.target.value });\r\n }\r\n\r\n handleChangePass(e) {\r\n this.setState({ pass: e.target.value });\r\n }\r\n\r\n checkCredentials(e) {\r\n e.preventDefault();\r\n\r\n let login = this.state.login\r\n let pass = this.state.pass\r\n\r\n let BASE_URL = window.$api_url\r\n\r\n fetch(BASE_URL, {\r\n method: 'GET',\r\n verify: false,\r\n credentials: 'include',\r\n headers: {\r\n 'Content-Type': 'application/x-www-form-urlencoded',\r\n 'Authorization': 'Basic ' + btoa(login + \":\" + pass)\r\n },\r\n })\r\n .then(res => {\r\n this.setState({ status: res[\"status\"] });\r\n })\r\n .catch(console.log)\r\n }\r\n\r\n\r\n render() {\r\n return (\r\n <div>\r\n {!isMobile &&\r\n // TODO: Redirection mobile/desktop\r\n <span/>\r\n }\r\n {(this.state.status !== 0 && this.state.status !== 200) &&\r\n <div className=\"wrapper\">\r\n <div id=\"errorMsg\">\r\n <h2 id=\"loginTitle\">{\"⚠️\"} Login ou mot de passe incorrect</h2>\r\n </div>\r\n </div>\r\n }\r\n {document.cookie === \"\" &&\r\n <div className=\"wrapper\">\r\n <div id=\"formContent\">\r\n <h2 id=\"loginTitle\">Connexion a ScoDoc</h2>\r\n <form>\r\n <input type=\"text\" id=\"login\" placeholder=\"Identifiant\" onChange={this.handleChangeLogin}/>\r\n <input type=\"password\" id=\"password\" placeholder=\"Mot de passe\"\r\n onChange={this.handleChangePass}/>\r\n <button type=\"submit\" value=\"Log In\" onClick={this.checkCredentials}>Log in</button>\r\n </form>\r\n </div>\r\n </div>\r\n }\r\n <div>\r\n {document.cookie !== \"\" &&\r\n <ScoNavBar/>\r\n }{document.cookie !== \"\" &&\r\n <ChoixDept/>\r\n }\r\n </div>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default Login","import React, {Component} from \"react\";\r\nimport '../Style.css'\r\n\r\nclass Accueil extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n semestre: {},\r\n students: [],\r\n };\r\n }\r\n\r\n componentWillMount() {\r\n let dept = window.location.href.split('/')[6]\r\n let sem = window.location.href.split('/')[8]\r\n let BASE_URL = window.$api_url\r\n fetch(BASE_URL + dept +\r\n '/Scolarite/Notes/formsemestre_list?format=json&formsemestre_id=' + sem, {\r\n method: 'GET',\r\n verify: false,\r\n credentials: 'include',\r\n })\r\n .then(response =>\r\n response.json().then(data => ({\r\n data: data,\r\n })\r\n ).then(res => {\r\n this.setState({ semestre: res.data[0]});\r\n }));\r\n }\r\n\r\n render() {\r\n return (\r\n <div className=\"wrapper\">\r\n <h1 id=\"pageTitle\">{this.state.semestre.titre}<br/>\r\n Semestre {this.state.semestre.semestre_id} en {this.state.semestre.modalite}<br/>\r\n (Responsable: {this.state.semestre.responsables})</h1>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default Accueil","import React, {Component} from \"react\";\r\nimport {Button, Col, Form, Modal} from \"react-bootstrap\";\r\n\r\nclass SaisieAbs extends Component {\r\n constructor(props){\r\n super(props)\r\n this.state = {\r\n isOpen: false,\r\n form: {},\r\n error: false,\r\n etudid: \"\"\r\n }\r\n }\r\n\r\n openModal = () => this.setState({ isOpen: true });\r\n closeModal = () => this.setState({ isOpen: false });\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.open !== this.props.open) {\r\n this.setState({etudid: this.props.etudid})\r\n if (this.props.open === true) {\r\n this.setState({isOpen: true})\r\n }\r\n }\r\n }\r\n\r\n onFormSubmit = e => {\r\n e.preventDefault()\r\n const formData = new FormData(e.target), formDataObj = Object.fromEntries(formData.entries())\r\n console.log(formDataObj)\r\n let reqstr = \"etudid=\" + this.state.etudid + \"&datedebut=\"\r\n if (formDataObj.hasOwnProperty('dateDebut') && formDataObj['dateDebut'] !== \"\") {\r\n let dateDebut = formDataObj['dateDebut'].split(\"-\")\r\n dateDebut = dateDebut[2] + \"/\" + dateDebut[1] + \"/\" + dateDebut[0]\r\n reqstr += dateDebut\r\n if (formDataObj.hasOwnProperty('dateFin') && formDataObj['dateFin'] !== \"\") {\r\n let dateFin = formDataObj['dateFin'].split(\"-\")\r\n dateFin = dateFin[2] + \"/\" + dateFin[1] + \"/\" + dateFin[0]\r\n reqstr += \"&datefin=\" + dateFin\r\n } else {\r\n reqstr += \"&datefin=\" + dateDebut\r\n }\r\n if (formDataObj.hasOwnProperty('duree')) {\r\n reqstr += \"&demijournee=\" + formDataObj['duree']\r\n }\r\n if (formDataObj.hasOwnProperty('estjust')) {\r\n reqstr += \"&estjust=True\"\r\n }\r\n if (formDataObj.hasOwnProperty('motif') && formDataObj['motif'] !== \"\") {\r\n reqstr += \"&description=\" + formDataObj['motif']\r\n }\r\n this.postData(reqstr)\r\n } else {\r\n this.setState({error: true})\r\n }\r\n }\r\n\r\n postData(data) {\r\n console.log(data)\r\n let dept = window.location.href.split('/')[6]\r\n let BASE_URL = window.$api_url\r\n fetch(BASE_URL + dept + \"/Scolarite/Absences/doSignaleAbsence\", {\r\n method: 'POST',\r\n verify: false,\r\n credentials: 'include',\r\n headers: {'Content-Type': 'application/x-www-form-urlencoded'},\r\n body: data\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n this.closeModal()\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n <Modal show={this.state.isOpen} onHide={this.closeModal}>\r\n <Modal.Header closeButton>\r\n <Modal.Title>Saisie d'absence</Modal.Title>\r\n </Modal.Header>\r\n\r\n <Modal.Body>\r\n {this.state.error &&\r\n <span>Erreur: La date de début ne doit pas être vide</span>\r\n }\r\n <Form onSubmit={this.onFormSubmit}>\r\n <Form.Row>\r\n <Form.Group as={Col} ControlId=\"dateDebut\">\r\n <Form.Label>Date début</Form.Label>\r\n <Form.Control type=\"date\" name=\"dateDebut\"/>\r\n </Form.Group>\r\n <Form.Group as={Col} ControlId=\"dateFin\">\r\n <Form.Label>Date fin (Optionnel)</Form.Label>\r\n <Form.Control type=\"date\" name=\"dateFin\"/>\r\n </Form.Group>\r\n </Form.Row>\r\n <Form.Row>\r\n <Form.Group as={Col} ControlId=\"duree\">\r\n <Form.Check inline label=\"Journée(s)\" name=\"duree\" type=\"radio\" value=\"2\" />\r\n <Form.Check inline label=\"Matin(s)\" name=\"duree\" type=\"radio\" value=\"1\" />\r\n <Form.Check inline label=\"Après-midi\" name=\"duree\" type=\"radio\" value=\"0\" />\r\n </Form.Group>\r\n </Form.Row>\r\n <Form.Row>\r\n <Form.Group as={Col} ControlId=\"estjust\">\r\n <Form.Check label=\"Justifiée\" name=\"estjust\" type=\"checkbox\" id=\"estjust\" />\r\n </Form.Group>\r\n </Form.Row>\r\n <Form.Row>\r\n <Form.Group as={Col} ControlId=\"motif\">\r\n <Form.Label>Motif</Form.Label>\r\n <Form.Control as=\"textarea\" rows={3} name=\"motif\"/>\r\n </Form.Group>\r\n </Form.Row>\r\n <Form.Row>\r\n <Button type=\"submit\" variant=\"primary\">Sauvegarder</Button>\r\n </Form.Row>\r\n </Form>\r\n </Modal.Body>\r\n <Modal.Footer>\r\n\r\n <Button variant=\"secondary\" onClick={() => {this.closeModal()}}>Fermer</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default SaisieAbs","import React, {Component} from \"react\";\r\nimport {Button, Modal} from \"react-bootstrap\";\r\n\r\nclass SupprAbs extends Component {\r\n constructor(props){\r\n super(props)\r\n this.state = {\r\n isOpen: false,\r\n etudid: \"\",\r\n }\r\n }\r\n\r\n openModal = () => this.setState({ isOpen: true });\r\n closeModal = () => this.setState({ isOpen: false });\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.open !== this.props.open) {\r\n this.setState({etudid: this.props.etudid})\r\n if (this.props.open === true) {\r\n this.setState({isOpen: true})\r\n }\r\n }\r\n }\r\n\r\n postData() {\r\n let dept = window.location.href.split('/')[6]\r\n let BASE_URL = window.$api_url\r\n let data = \"datedebut=\" + this.props.data.date + \"&datefin=\" + this.props.data.date +\r\n \"&demijournee=\" + this.props.data.demijournee + \"&etudid=\" + this.state.etudid\r\n this.setState({isOpen: false})\r\n fetch(BASE_URL + dept + \"/Scolarite/Absences/doAnnuleAbsence\", {\r\n method: 'POST',\r\n verify: false,\r\n credentials: 'include',\r\n headers: {'Content-Type': 'application/x-www-form-urlencoded'},\r\n body: data\r\n })\r\n .then(response => {\r\n console.log(response)\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n <Modal show={this.state.isOpen} onHide={this.closeModal}>\r\n <Modal.Header closeButton>\r\n <Modal.Title>Suppression d'absence</Modal.Title>\r\n </Modal.Header>\r\n <Modal.Body>\r\n <p>Etes-vous sûr.e de vouloir supprimer cette absence ?</p>\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"danger\" onClick={() => {this.postData()}}>Supprimer</Button>\r\n <Button variant=\"secondary\" onClick={() => {this.closeModal()}}>Fermer</Button>\r\n </Modal.Footer>\r\n </Modal>\r\n </>\r\n )\r\n }\r\n}\r\n\r\nexport default SupprAbs","import React, {Component} from \"react\";\r\nimport {Button, Col} from 'react-bootstrap'\r\nimport '../Style.css'\r\nimport SaisieAbs from \"./Absences/SaisieAbs\";\r\nimport SupprAbs from \"./Absences/SupprAbs\";\r\n\r\nclass Absences extends Component {\r\n constructor(props){\r\n super(props)\r\n this.state = {\r\n abs: [],\r\n isOpen: false,\r\n isDelOpen: false,\r\n isEditOpen: false,\r\n data: {}\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.id !== this.props.id) {\r\n this.getData();\r\n }\r\n }\r\n\r\n openModal(key, data) {\r\n this.setState({[key]: true}, () => setTimeout(() => {\r\n this.setState({[key]: false})\r\n }, 500))\r\n if (data) {this.setState({data: data})}\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.id !== \"\") {this.getData()}\r\n }\r\n\r\n getData() {\r\n let dept = window.location.href.split('/')[6]\r\n let BASE_URL = window.$api_url\r\n if (this.state.id !== \"\") {\r\n fetch(BASE_URL + dept + \"/Scolarite/Absences/ListeAbsEtud?format=json&etudid=\" + this.props.id, {\r\n method: 'GET',\r\n verify: false,\r\n credentials: 'include',\r\n })\r\n .then(response =>\r\n response.json().then(data => ({\r\n data: data,\r\n })\r\n ).then(res => {\r\n this.setState({abs: res.data})\r\n })\r\n );\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <div className=\"wrapper\">\r\n {this.props.id !== \"\" &&\r\n <SaisieAbs open={this.state.isOpen} etudid={this.props.id}/>\r\n } {this.props.id !== \"\" &&\r\n <SupprAbs open={this.state.isDelOpen} etudid={this.props.id} data={this.state.data}/>\r\n }\r\n <h1 id=\"pageTitle\">Gestion des absences</h1>\r\n {this.props.name !== \"\" &&\r\n <div className=\"col-sm\" id=\"wrapDept\">\r\n <h4>Absences de {this.props.name + \" \"}\r\n <Button variant=\"primary\" size=\"sm\" style={{\"margin-right\": \"2px\"}}\r\n onClick={() => this.openModal('isOpen', null)}>\r\n <span>+</span>\r\n </Button>\r\n <Button variant=\"secondary\" size=\"sm\" style={{\"margin-left\": \"2px\"}}\r\n onClick={() => this.getData()}>\r\n <span>🗘</span>\r\n </Button>\r\n </h4>\r\n {(this.state.abs.length === 0 && this.props.name !== \"\") &&\r\n <h6>Aucune absence de l'élève</h6>\r\n }\r\n {this.state.abs.map((abs, index) => {\r\n return (\r\n <div className=\"col-sm\" id=\"wrapDept\">\r\n <Col>\r\n <h6>{abs.datedmy} | {abs.matin}</h6>\r\n {abs.motif !== \"\" &&\r\n <span>Motif: {abs.motif}</span>\r\n } {abs.exams !== \"\" &&\r\n <span>Exam a rattraper: {abs.exams}</span>\r\n }\r\n </Col>\r\n <Col>\r\n {abs.motif === \"\" &&\r\n <Button variant=\"primary\" size=\"sm\"\r\n style={{\"margin-right\": \"2px\"}}>Justifier</Button>\r\n }\r\n <Button variant=\"danger\" size=\"sm\" style={{\"margin-left\": \"2px\"}}\r\n onClick={() => this.openModal('isDelOpen', {\r\n date: abs.datedmy,\r\n demijournee: abs.ampm\r\n })}>\r\n Supprimer\r\n </Button>\r\n </Col>\r\n </div>\r\n )\r\n })}\r\n </div>\r\n }\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default Absences","import React, {Component} from \"react\";\r\nimport '../Style.css'\r\nimport {Link} from \"react-router-dom\";\r\n\r\nclass Eleves extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n students: [],\r\n };\r\n }\r\n\r\n componentWillMount() {\r\n let dept = window.location.href.split('/')[6]\r\n let sem = window.location.href.split('/')[8]\r\n let BASE_URL = window.$api_url\r\n fetch(BASE_URL + dept +\r\n '/Scolarite/Notes/groups_view?with_codes=1&format=json&formsemestre_id=' + sem, {\r\n method: 'GET',\r\n verify: false,\r\n credentials: 'include',\r\n })\r\n .then(response =>\r\n response.json().then(data => ({\r\n data: data,\r\n })\r\n ).then(res => {\r\n this.setState({ students: res.data});\r\n }));\r\n }\r\n\r\n render() {\r\n return (\r\n <div className=\"wrapper\">\r\n <h1 id=\"pageTitle\">Liste des élèves</h1>\r\n <div className=\"container\">\r\n <div className=\"row justify-content-center\">\r\n {this.state.students.map((student, index) => {\r\n return (\r\n <div className=\"col\" key={index} id=\"wrapDept\">\r\n <Link to={`/ScoDoc/static/mobile/${window.location.href.split('/')[6]}/Scolarite/Etudiant/${student.etudid}`}>\r\n {student.nom_disp} {student.prenom}\r\n </Link>\r\n </div>\r\n )\r\n },)}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default Eleves","import React, {Component} from \"react\";\r\nimport {Table, Button, Dropdown} from \"react-bootstrap\"\r\nimport '../Style.css'\r\n\r\nclass Bulletin extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n bltn: {},\r\n datue: {},\r\n loaded: false\r\n };\r\n this.getData = this.getData.bind(this);\r\n this.getJsonData = this.getJsonData.bind(this);\r\n }\r\n\r\n getJsonData () {\r\n this.setState({bltn: require('..\\\\..\\\\json\\\\bltn.json')}, () => {\r\n let ls = {}\r\n for (let elm in this.state.bltn.decision_ue) {\r\n elm = this.state.bltn.decision_ue[elm]\r\n ls[elm.acronyme] = elm.titre\r\n }\r\n this.setState({datue: ls}, () => {\r\n this.setState({loaded: true})\r\n })\r\n })\r\n\r\n }\r\n\r\n getData() {\r\n let dept = window.location.href.split('/')[6]\r\n let sem = window.location.href.split('/')[8]\r\n let BASE_URL = window.$api_url\r\n fetch(BASE_URL + dept + '/Scolarite/Notes/formsemestre_bulletinetud?formsemestre_id=' +\r\n sem +'&etudid=' + this.props.id +'&format=json', {\r\n method: 'GET',\r\n verify: false,\r\n credentials: 'include',\r\n })\r\n .then(response =>\r\n response.json().then(data => ({\r\n data: data,\r\n status: response.status\r\n })\r\n ).then(res => {\r\n this.setState({ bltn: res.data }, () => {\r\n let ls = {}\r\n for (let elm in this.state.bltn.decision_ue) {\r\n elm = this.state.bltn.decision_ue[elm]\r\n ls[elm.acronyme] = elm.titre\r\n }\r\n this.setState({datue: ls}, () => {\r\n this.setState({loaded: true})\r\n })\r\n })\r\n })\r\n );\r\n }\r\n\r\n getPdf() {\r\n let BASE_URL = window.$api_url\r\n let dept = window.location.href.split('/')[6]\r\n let sem = window.location.href.split('/')[8]\r\n fetch( BASE_URL + dept + \"/Scolarite/Notes/formsemestre_bulletinetud?\" +\r\n \"formsemestre_id=\" + sem + \"&etudid=\" + this.props.id + \"&format=pdf&version=selectedevals\", {\r\n method: 'GET',\r\n verify: false,\r\n credentials: 'include',\r\n })\r\n .then( res => res.blob() )\r\n .then( blob => {\r\n let file = window.URL.createObjectURL(blob);\r\n window.location.assign(file);\r\n });\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.id !== this.props.id) {\r\n this.getData();\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.id !== \"\") {this.getData()}\r\n }\r\n\r\n render() {\r\n return (\r\n <div className=\"wrapper\">\r\n <div style={{\"margin-bottom\": \"20px\"}}>\r\n <h1 id=\"pageTitle\">Bulletins de notes</h1>\r\n </div>\r\n {this.state.loaded === true &&\r\n <div>\r\n <Table responsive=\"sm\">\r\n <thead>\r\n <tr>\r\n <th colSpan=\"3\"/>\r\n <th>Note/20</th>\r\n </tr>\r\n <tr className=\"bigRow\">\r\n <th colSpan=\"3\">Moyenne générale</th>\r\n <th>\r\n <Dropdown>\r\n <Dropdown.Toggle variant=\"primary\" size=\"sm\" id=\"dropdown-basic\">\r\n {this.state.bltn.note.value}\r\n </Dropdown.Toggle>\r\n\r\n <Dropdown.Menu>\r\n <Dropdown.Item href=\"#\">Min: {this.state.bltn.note.min}</Dropdown.Item>\r\n <Dropdown.Item href=\"#\">Max: {this.state.bltn.note.max}</Dropdown.Item>\r\n <Dropdown.Item href=\"#\">Classement: {this.state.bltn.rang.value}/{this.state.bltn.rang.ninscrits}</Dropdown.Item>\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n </th>\r\n </tr>\r\n </thead>\r\n {this.state.bltn.ue.map((ue, index) => {\r\n return (\r\n <tbody>\r\n <tr className=\"ueRow\">\r\n <td colSpan=\"3\">{ue.acronyme} - {this.state.datue[ue.acronyme]}</td>\r\n <td>\r\n <Dropdown>\r\n <Dropdown.Toggle variant=\"primary\" size=\"sm\" id={ue.acronyme}>\r\n {ue.note.value}\r\n </Dropdown.Toggle>\r\n\r\n <Dropdown.Menu>\r\n <Dropdown.Item href=\"#\">Min: {ue.note.min}</Dropdown.Item>\r\n <Dropdown.Item href=\"#\">Max: {ue.note.max}</Dropdown.Item>\r\n <Dropdown.Item href=\"#\">Classement: {ue.rang}/{this.state.bltn.rang.ninscrits}</Dropdown.Item>\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n </td>\r\n </tr>\r\n {ue.module.map((mod, index) => {\r\n return (\r\n <tr>\r\n <td colSpan=\"3\">{mod.titre.replace(\"&apos;\", \"'\")}</td>\r\n <td>\r\n <Dropdown>\r\n <Dropdown.Toggle variant=\"primary\" size=\"sm\" id={mod.code}>\r\n {mod.note.value}\r\n </Dropdown.Toggle>\r\n\r\n <Dropdown.Menu>\r\n <Dropdown.Item href=\"#\">Min: {mod.note.min}</Dropdown.Item>\r\n <Dropdown.Item href=\"#\">Max: {mod.note.max}</Dropdown.Item>\r\n <Dropdown.Item href=\"#\">Classement: {mod.rang.value}/{this.state.bltn.rang.ninscrits}</Dropdown.Item>\r\n <Dropdown.Item href=\"#\">Coefficient: {mod.coefficient}</Dropdown.Item>\r\n </Dropdown.Menu>\r\n </Dropdown>\r\n </td>\r\n </tr>\r\n )\r\n })}\r\n </tbody>\r\n )\r\n })}\r\n </Table>\r\n <div>\r\n <Button className=\"btn-primary\" onClick={() => {this.getPdf()}}>Version PDF</Button>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default Bulletin","import React, {Component} from \"react\";\r\nimport {Tabs, Tab} from \"react-bootstrap\"\r\nimport Accueil from \"./GestionSemestre/Accueil\";\r\nimport Absences from \"./GestionSemestre/Absences\";\r\nimport Eleves from \"./GestionSemestre/Eleves\";\r\nimport ScoNavBar from \"./ScoNavBar\";\r\nimport Bulletin from \"./GestionSemestre/Bulletin\";\r\nimport Select from \"react-select\";\r\n\r\nclass GestionSemestre extends Component {\r\n constructor(props){\r\n super(props)\r\n this.state = {\r\n selectOptions: [],\r\n id: \"\",\r\n name: '',\r\n }\r\n }\r\n\r\n componentWillMount() {\r\n let dept = window.location.href.split('/')[6]\r\n let sem = window.location.href.split('/')[8]\r\n let BASE_URL = window.$api_url\r\n fetch(BASE_URL + dept +\r\n '/Scolarite/Notes/groups_view?with_codes=1&format=json&formsemestre_id=' + sem, {\r\n method: 'GET',\r\n verify: false,\r\n credentials: 'include',\r\n })\r\n .then(response =>\r\n response.json().then(data => ({\r\n data: data,\r\n })\r\n ).then(res => {\r\n res.data.map((student, index) => {\r\n let joined = this.state.selectOptions.concat({label: student.nom_disp + \" \" + student.prenom, value: student.etudid});\r\n this.setState({selectOptions: joined})\r\n })\r\n })\r\n );\r\n }\r\n\r\n handleSelectChange(e){\r\n this.setState({id:e.value, name:e.label})\r\n }\r\n\r\n render() {\r\n return (\r\n <div>\r\n <ScoNavBar/>\r\n <div className=\"container\">\r\n <div className=\"row justify-content-center\">\r\n <div className=\"col-sm\" id=\"wrapDept\">\r\n Choix de l'étudiant\r\n <Select className=\"mySelect\" options={this.state.selectOptions} onChange={this.handleSelectChange.bind(this)}/>\r\n </div>\r\n </div>\r\n </div>\r\n <div>\r\n <Tabs defaultActiveKey=\"Accueil\" id=\"controlled-tab-example\">\r\n <Tab eventKey=\"Accueil\" title=\"Acceuil\" >\r\n <Accueil />\r\n </Tab>\r\n <Tab eventKey=\"Absences\" title=\"Absences\">\r\n <Absences id={this.state.id} name={this.state.name}/>\r\n </Tab>\r\n <Tab eventKey=\"Bulletin\" title=\"Bulletins\">\r\n <Bulletin id={this.state.id} name={this.state.name}/>\r\n </Tab>\r\n <Tab eventKey=\"Eleves\" title=\"Eleves\">\r\n <Eleves />\r\n </Tab>\r\n </Tabs>\r\n </div>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default GestionSemestre","import React, {Component} from \"react\";\r\nimport './Style.css'\r\nimport ScoNavBar from \"./ScoNavBar\";\r\n\r\nclass Etudiant extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n etud: {},\r\n semestres: [],\r\n formation: [],\r\n loaded: false\r\n };\r\n }\r\n\r\n componentWillMount() {\r\n let dept = window.location.href.split('/')[6]\r\n let etudid = window.location.href.split('/')[9]\r\n let BASE_URL = window.$api_url\r\n fetch(BASE_URL + dept + '/Scolarite/Notes/etud_info?format=json&etudid=' + etudid, {\r\n method: 'GET',\r\n verify: false,\r\n credentials: 'include',\r\n })\r\n .then(response =>\r\n response.json().then(data => ({\r\n data: data,\r\n status: response.status\r\n })\r\n ).then(res => {\r\n // Utilisation de '???' en cas de données vides pour le moment}\r\n /*for (let propName in res.data) {\r\n if (res.data[propName] === null || res.data[propName] === undefined || res.data[propName] === \"\") {\r\n res.data[propName] = \"???\";\r\n }\r\n }*/\r\n this.setState({ etud: res.data })\r\n this.setState({ formation: res.data.insemestre })\r\n\r\n res.data.insemestre.map((sem, index) => {\r\n fetch(BASE_URL + dept + '/Scolarite/Notes/formsemestre_list?format=json&formsemestre_id=' + sem.formsemestre_id, {\r\n method: 'GET',\r\n verify: false,\r\n credentials: 'include',\r\n })\r\n .then(response =>\r\n response.json().then(data => ({\r\n data: data,\r\n status: response.status\r\n }))\r\n ).then(res => {\r\n var joined = this.state.semestres.concat(res.data[0]);\r\n this.setState({ semestres: joined, loaded: true })\r\n })\r\n })\r\n })\r\n );\r\n }\r\n\r\n render() {\r\n return(\r\n <div>\r\n <ScoNavBar/>\r\n <div className=\"wrapper\">\r\n <div id=\"wrapDept\">\r\n <h1>{this.state.etud.nomprenom}</h1>\r\n <img\r\n alt={`${this.state.etud.nomprenom}`}\r\n src={`/ScoDoc/${window.location.href.split('/')[6]}/Scolarite/Notes/${this.state.etud.photo_url}`}\r\n width=\"102\"\r\n height=\"128\"\r\n className=\"d-inline-block align-top\"\r\n />{' '}\r\n <div id=\"wrapDept\" className=\"col-sm\">\r\n <h3>Informations personnelles</h3>\r\n {this.state.etud.telephone !== \"\" || this.state.etud.telephonemobile !== \"\" ||\r\n this.state.etud.email !== \"\" || this.state.etud.emailperso !== \"\" ?\r\n <div className=\"col-sm\">\r\n <h4>Contact</h4>\r\n {this.state.etud.telephone !== \"\" && <a href={'tel:' + this.state.etud.telephone}>Téléphone: {this.state.etud.telephone}</a>}<br/>\r\n {this.state.etud.telephonemobile !== \"\" && <a href={'tel:' + this.state.etud.telephonemobile}>Mobile: {this.state.etud.telephonemobile}</a>}<br/>\r\n {this.state.etud.email !== \"\" && <a href={'mailto:' + this.state.etud.email}>Mail étudiant: {this.state.etud.email}</a>}<br/>\r\n {this.state.etud.emailperso !== \"\" && <a href={'mailto:' + this.state.etud.emailperso}>Mail personnel: {this.state.etud.emailperso}</a>}<br/>\r\n </div>\r\n :\r\n <div className=\"col-sm\">Aucun contact disponible</div>\r\n }\r\n\r\n {this.state.etud.domicile !== \"\" || this.state.etud.codepostaldomicile !== \"\" ||\r\n this.state.etud.villedomicile !== \"\" ?\r\n <div className=\"col-sm\">\r\n <h4>Lieu de résidence</h4>\r\n Domicile: {this.state.etud.domicile} -\r\n {\" \" + this.state.etud.codepostaldomicile} {this.state.etud.villedomicile}<br/>\r\n </div>\r\n :\r\n <div className=\"col-sm\">Aucune information de résidence disponible</div>\r\n }\r\n </div>\r\n\r\n <div id=\"wrapDept\" className=\"col-sm\">\r\n {this.state.etud.bac !== \"\" || this.state.etud.specialite !== \"\" ?\r\n <div className=\"col-sm\">\r\n <h4>Parcours</h4>\r\n Bac {this.state.etud.bac} {this.state.etud.specialite}\r\n {this.state.etud.nomlycee !== \"\" || this.state.etud.codepostallycee !== \"\" ||\r\n this.state.etud.villelycee !== \"\" ?\r\n <div>\r\n {\" \" + this.state.etud.nomlycee} ({this.state.etud.codepostallycee} {this.state.etud.villelycee})<br/>\r\n </div>\r\n : null}\r\n </div>\r\n : null}\r\n\r\n {this.state.loaded === true &&\r\n <div className=\"col-sm\">\r\n <h4>Formation actuelle</h4>\r\n {this.state.semestres.map((sem, index) => {\r\n return (\r\n <div>\r\n <b>{sem.titreannee}</b><br/>\r\n {sem.date_debut} - {sem.date_fin}\r\n </div>\r\n )\r\n })}\r\n </div>\r\n }\r\n </div>\r\n {/* TODO: Lien vers la gestion des absences\r\n <div id=\"wrapDept\" className=\"col-sm\">\r\n <Link to=\"\">\r\n <div className=\"col-sm\">\r\n Gestion des absences\r\n </div>\r\n </Link>\r\n </div>\r\n */}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n }\r\n}\r\n\r\nexport default Etudiant","import React from 'react';\r\nimport {Switch, Route} from 'react-router-dom';\r\nimport Scolarite from './ScoDoc/Scolarite.js'\r\nimport Login from './ScoDoc/Login'\r\nimport GestionSemestre from \"./ScoDoc/GestionSemestre\";\r\nimport Etudiant from \"./ScoDoc/Etudiant\";\r\n\r\n\r\nconst Main = () => {\r\n return (\r\n <Switch>\r\n <Route exact path='/ScoDoc/static/mobile' component={Login}/>\r\n <Route exact path='/ScoDoc/static/mobile/:DEPT/Scolarite' component={Scolarite}/>\r\n <Route exact path='/ScoDoc/static/mobile/:DEPT/Scolarite/Etudiant/:EtudId' component={Etudiant}/>\r\n <Route exact path='/ScoDoc/static/mobile/:DEPT/Scolarite/:SEM/GestionSem' component={GestionSemestre}/>\r\n </Switch>\r\n );\r\n}\r\n\r\nexport default Main;","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport {BrowserRouter} from \"react-router-dom\";\nimport reportWebVitals from './reportWebVitals';\nimport Main from \"./main\";\nimport 'bootstrap/dist/css/bootstrap.min.css'\n\nwindow.$api_url = '/ScoDoc/' // Global variable\n\nReactDOM.render(\n <BrowserRouter>\n <Main />\n </BrowserRouter>,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}