This commit is contained in:
pro.boooooo 2023-03-08 23:41:41 +01:00
parent 7019a7e8ed
commit 4cbf6418ce
4 changed files with 58 additions and 0 deletions

View File

@ -1,9 +1,19 @@
import log from "./log";
export default class Controller {
/**
* @param model La class Model().
* @param view La class View().
* */
constructor(model, view) {
this.model = model
this.view = view
/**
* Envoyer dans le controlleur tous les events fait.
* @param selection Ce qu'on va utiliser pour le &refine.
* @param action Retour en arriere ou aller en avant. { "previous", "next" }.
* */
window.updateModel = (selection, action) => {
if(this.model.getCurIndex() === 0) {
log("Selector->Controller", "Ajout d'une section pour refine")
@ -25,6 +35,9 @@ export default class Controller {
this.getData(0).then()
}
/**
* @param n Numero de la page courante { 0, 1, 2 }.
* */
async getData(n) {
if(n === 0) {
log("Selector->Controller", "Requete Section 0")
@ -41,6 +54,8 @@ export default class Controller {
this.model.getModelData2().then((res) => {
this.view.renderMenu(res)
})
} else {
log("Selector->Controller", "Numero de page inconnue")
}
}
}

View File

@ -26,26 +26,43 @@ export default class Model {
log("Selector", "Model 2/3")
}
/**
* Retourne l'index courant de la page.
* @return int
* */
getCurIndex() {
return this.state.page.curIndex
}
/**
* Passer a la page suivante.
* */
nextPage() {
if(this.state.page.curIndex+1 <= 2) {
this.state.page.curIndex++
}
}
/**
* Passer a la page precedente.
* */
previousPage() {
if(this.state.page.curIndex-1 >= 0) {
this.state.page.curIndex--
}
}
/**
* @param v La valeur du refine
* */
setCat(v) {
this.state.page.cat = v
}
/**
* Retourne la section 0 + l'enregistre dans le local storage
* @return les donnees demandees en JSON
* */
getModelData0() {
if(!localStorage.getItem(`sec0`)) {
const link = `${ this.state.api.link }` +
@ -68,6 +85,10 @@ export default class Model {
}
}
/**
* Retourne la section 1 + l'enregistre dans le local storage
* @return les donnees demandees en JSON
* */
getModelData1() {
if(!localStorage.getItem(`sec1-${this.state.page.cat}`)) {
const link = `${this.state.api.link}` +
@ -93,6 +114,10 @@ export default class Model {
}
}
/**
* Retourne la section 2 + l'enregistre dans le local storage
* @return les donnees demandees en JSON
* */
getModelData2() {
if(!localStorage.getItem(`sec2-${this.state.page.cat}`)) {
const link = `${this.state.api.link}` +

View File

@ -11,6 +11,14 @@ export default class View {
log("Selector", "View 1/3")
}
/**
* Contruction de la balise <li> qui vas se loger dans le menu.
* <li>
* <a>Tous les noms des formations par section</a>
* <span>Combien de formations dispo ?</span>
* </li>
* @param data Donnees a afficher.
* */
renderMenu(data) {
this.zone.innerHTML = ""
@ -38,6 +46,11 @@ export default class View {
log("Selector->View", "Donnees recuperer OK !")
}
/**
* Envoyer dans le controlleur tous les events fait.
* @param selection Ce qu'on va utiliser pour le &refine.
* @param direction Retour en arriere ou aller en avant. { "previous", "next" }
* */
updateMenu(selection, direction) {
if(direction) {
window.updateModel(selection, direction)

View File

@ -1,3 +1,8 @@
/**
* Destine a envoyer des logs dans la console.
* @param mvc D'ou vient le message.
* @param msg Le message.
* */
export default function log(mvc, msg) {
console.log(`${ mvc }:: ${ msg }`)
}