diff --git a/readme.md b/readme.md index 2fda335..42aee41 100644 --- a/readme.md +++ b/readme.md @@ -3,8 +3,6 @@ ### A faire ```text 1. Ajouter "Moyenne des admis" dans la section centrale de gauche -2. Affiner les calculs pour "Selectivite" section centrale de gauche -3. Ajouter "Moyenne" et "Selectivite" dans la liste des etablissements 4. Faire la modal avec + d'info 5. Map en haut de la liste d'etablissement ``` @@ -15,12 +13,8 @@ Probleme 1 : Ingenieur, Ecole de commerce, Tout ce qui commence par "Formation" Raison : Le model d'envoie de donnees ne prends pas en charge le cas ou une formation = 2 sous sections (Faire des tests: donneesProchaineSection == null) -Probleme 2 : Spammer peut faire bugger l'affichage du chemin +Probleme 2 : Spammer peut faire bugger l'affichage du chemin (et aussi les autres spe) Raison : Pas de timer ni de bloqueur (En rajouter ducoup lol) - -Probleme 3 : Si il y a eu un bug (cote utilisateur) et que le localstorage enregistre [], a moins de supprimer le localstorage -depuis l'inspecteur, ca ne chargera plus jamais les categories - Raison : Ajouter une condition dans les getModelDataN() pour refaire des calls api si le localstoage = [] ``` ### IMPORTANT @@ -28,6 +22,8 @@ depuis l'inspecteur, ca ne chargera plus jamais les categories Si ca ne s'affiche pas dans la milli seconde, pas besoin de forcer le boutton, faut juste attendre que le MVC receptionne les donnees. Si ca persiste, supprimer le local storage inspecter l'element -> Application (ou stockage) -> Local Storage + +SPAMMER PAS LES CAT TANT QUE #Probleme 2 N'EST PAS REGLE ! ``` ### Documentation de riot : diff --git a/src/components/global/api/Controller.js b/src/components/global/api/Controller.js index e5f12ee..98ff0f4 100644 --- a/src/components/global/api/Controller.js +++ b/src/components/global/api/Controller.js @@ -8,6 +8,12 @@ export default class Controller { constructor(model, view) { this.model = model this.view = view + + /** + * TODO: Tej ca avant de rendre le projet + * */ + localStorage.clear() + this.getData(0).then() /** @@ -45,7 +51,7 @@ export default class Controller { } } - this.model.setSCat(null) + this.model.setTCat(null) log("Selector", "Controller 3/3") } @@ -73,11 +79,15 @@ export default class Controller { }) } else if(n === 3) { log("Selector->Controller", "Requete de la liste des etablissements") - this.model.getModelData3().then((res) => { - this.view.renderStat(res) - this.view.renderEtab(res) - this.view.renderPath(this.model.getPath()) - }) + let data = null + + while(!data) { + data = await this.model.getModelData3() + } + + this.view.renderStat(await data) + this.view.renderEtab(await data, `${ this.model.getPath()[1] } - ${ this.model.getPath()[2] }`) + this.view.renderPath(this.model.getPath()) } else { log("Selector->Controller", "Numero de page inconnue") } diff --git a/src/components/global/api/Model.js b/src/components/global/api/Model.js index 7253743..31c397d 100644 --- a/src/components/global/api/Model.js +++ b/src/components/global/api/Model.js @@ -178,8 +178,6 @@ export default class Model { `&refine.${encodeURIComponent(this.state.api.facet.filiaire)}=${encodeURIComponent(this.state.page.cat)}` + `&refine.${encodeURIComponent(this.state.api.facet.formation)}=${encodeURIComponent(this.state.page.scat)}` - console.log(link) - return fetch(link) .then((res) => res.json()) .then((data) => { @@ -202,36 +200,41 @@ export default class Model { * @return { array[json] | Promise } les donnees demandees en JSON * */ getModelData3() { - if(!localStorage.getItem(`sec-etab-${this.state.page.cat}-${this.state.page.scat}-${this.state.page.tcat}`)) { - const link = `${this.state.api.link}&rows=10000` + - `&facet=${encodeURIComponent(this.state.api.facet.filiaire)}` + - `&facet=${encodeURIComponent(this.state.api.facet.formation)}` + - `&facet=${encodeURIComponent(this.state.api.facet.spec)}` + - `&refine.${encodeURIComponent(this.state.api.facet.filiaire)}=${encodeURIComponent(this.state.page.cat)}` + - `&refine.${encodeURIComponent(this.state.api.facet.formation)}=${encodeURIComponent(this.state.page.scat)}` + - `&refine.${encodeURIComponent(this.state.api.facet.spec)}=${encodeURIComponent(this.state.page.tcat)}` + try { + if(!localStorage.getItem(`sec-etab-${this.state.page.cat}-${this.state.page.scat}-${this.state.page.tcat}`) || + localStorage.getItem(`sec-etab-${this.state.page.cat}-${this.state.page.scat}-${this.state.page.tcat}`) === "[]" + ) { + const link = `${this.state.api.link}&rows=10000` + + `&facet=${encodeURIComponent(this.state.api.facet.filiaire)}` + + `&facet=${encodeURIComponent(this.state.api.facet.formation)}` + + `&facet=${encodeURIComponent(this.state.api.facet.spec)}` + + `&refine.${encodeURIComponent(this.state.api.facet.filiaire)}=${encodeURIComponent(this.state.page.cat)}` + + `&refine.${encodeURIComponent(this.state.api.facet.formation)}=${encodeURIComponent(this.state.page.scat)}` + + `&refine.${encodeURIComponent(this.state.api.facet.spec)}=${encodeURIComponent(this.state.page.tcat)}` - return fetch(link) - .then((res) => { - return res.json() - }) - .then((data) => { - try { - if(data) { - if(this.state.page.tcat) { - localStorage.setItem(`sec-etab-${this.state.page.cat}-${this.state.page.scat}-${this.state.page.tcat}`, JSON.stringify(data.records)) + return fetch(link) + .then((res) => { + return res.json() + }) + .then((data) => { + try { + if(data) { + if(this.state.page.tcat) { + localStorage.setItem(`sec-etab-${this.state.page.cat}-${this.state.page.scat}-${this.state.page.tcat}`, JSON.stringify(data.records)) + } + + this.state.page.tcat = null + return data.records } - - this.state.page.tcat = null - return data.records - } - } catch(donothing) {} + } catch(donothing) {} + }) + } else { + return new Promise((resolve, reject) => { + resolve(JSON.parse(localStorage.getItem(`sec-etab-${this.state.page.cat}-${this.state.page.scat}-${this.state.page.tcat}`))) }) - } else { - return new Promise((resolve, reject) => { - resolve(JSON.parse(localStorage.getItem(`sec-etab-${this.state.page.cat}-${this.state.page.scat}-${this.state.page.tcat}`))) - this.state.page.tcat = null - }) + } + } catch(e) { + console.error(e) } } } \ No newline at end of file diff --git a/src/components/global/api/View.js b/src/components/global/api/View.js index e3f812f..476469d 100644 --- a/src/components/global/api/View.js +++ b/src/components/global/api/View.js @@ -9,6 +9,12 @@ export default class View { this.stat = document.getElementById("generalytics") this.etab = document.getElementById("etablanalytics-list") this.btn = document.getElementById("selector-top-btn") + this.home = document.getElementById("home") + this.left = document.getElementById("left") + this.right = document.getElementById("right") + + this.antispam = null + this.inAction = false this.btn.onclick = () => { this.updateMenu(" ", "previous") @@ -19,18 +25,28 @@ export default class View { /** * Contruction de la balise