2023-03-09 11:52:52 +01:00
|
|
|
import log from "./log";
|
2023-03-10 02:33:02 +01:00
|
|
|
import * as riot from "riot";
|
2023-03-09 11:52:52 +01:00
|
|
|
|
|
|
|
export default class View {
|
|
|
|
constructor() {
|
|
|
|
this.title = document.getElementById("selector-top-title")
|
|
|
|
this.zone = document.getElementById("selector-list-zone")
|
2023-03-10 02:33:02 +01:00
|
|
|
this.path = document.getElementById("loc")
|
|
|
|
this.etab = document.getElementById("etablanalytics-list")
|
2023-03-09 11:52:52 +01:00
|
|
|
this.btn = document.getElementById("selector-top-btn")
|
|
|
|
this.btn.onclick = () => {
|
2023-03-09 14:41:05 +01:00
|
|
|
this.updateMenu(" ", "previous")
|
2023-03-09 11:52:52 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
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.
|
|
|
|
* @param title Titre de la section d'un menu.
|
|
|
|
* */
|
|
|
|
renderMenu(title, data) {
|
|
|
|
this.title.innerText = title
|
|
|
|
this.zone.innerHTML = ""
|
|
|
|
|
|
|
|
if(title || data) {
|
|
|
|
data.forEach((e) => {
|
2023-03-10 02:33:02 +01:00
|
|
|
let elem = document.createElement("selectorfragment")
|
|
|
|
elem.onclick = () => {
|
2023-03-09 14:41:05 +01:00
|
|
|
this.updateMenu(document.getElementById(`menu0-${e.name}`).innerText, "next")
|
2023-03-09 11:52:52 +01:00
|
|
|
}
|
|
|
|
|
2023-03-10 02:33:02 +01:00
|
|
|
this.zone.appendChild(elem)
|
2023-03-09 11:52:52 +01:00
|
|
|
|
2023-03-10 02:33:02 +01:00
|
|
|
riot.mount(elem, {
|
|
|
|
name: e.name,
|
|
|
|
count: e.count,
|
|
|
|
idd: `menu0-${e.name}`
|
|
|
|
}, "selectorfragment")
|
2023-03-09 11:52:52 +01:00
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
log("Selector->View", "Donnees recuperer OK !")
|
|
|
|
}
|
|
|
|
|
2023-03-09 14:11:11 +01:00
|
|
|
/**
|
|
|
|
* Pour afficher en haut a gauche le chemin courant.
|
2023-03-09 14:41:05 +01:00
|
|
|
* @param { string[] } path Chemin courant.
|
2023-03-09 14:11:11 +01:00
|
|
|
* */
|
2023-03-09 11:52:52 +01:00
|
|
|
renderPath(path) {
|
2023-03-10 02:33:02 +01:00
|
|
|
this.path.innerHTML = ""
|
|
|
|
let elem = document.createElement("locfragment")
|
|
|
|
this.path.appendChild(elem)
|
|
|
|
|
|
|
|
riot.mount(elem, {
|
|
|
|
msg: path.filter(Boolean).join(" ► ")
|
|
|
|
}, "locfragment")
|
|
|
|
|
2023-03-09 11:52:52 +01:00
|
|
|
log("Loc->View", `Chemin change ${path}`)
|
|
|
|
}
|
|
|
|
|
2023-03-09 14:11:11 +01:00
|
|
|
/**
|
|
|
|
* Pour afficher en bas a gauche la liste.
|
|
|
|
* @param { json } data La liste des etablissements.
|
|
|
|
* */
|
2023-03-09 13:43:15 +01:00
|
|
|
renderEtab(data) {
|
2023-03-09 14:41:05 +01:00
|
|
|
this.etab.innerHTML =
|
2023-03-10 02:33:02 +01:00
|
|
|
"<tbody>" +
|
2023-03-09 14:41:05 +01:00
|
|
|
" <th>Nom</th>" +
|
|
|
|
" <th>Ville</th>" +
|
2023-03-10 02:33:02 +01:00
|
|
|
" <th>Departement</th>" +
|
2023-03-09 14:41:05 +01:00
|
|
|
" <th>Moyenne</th>" +
|
|
|
|
" <th>Selectivite</th>" +
|
2023-03-10 02:33:02 +01:00
|
|
|
"</tbody>"
|
2023-03-09 13:43:15 +01:00
|
|
|
|
|
|
|
data.forEach((e) => {
|
|
|
|
let etab = e.fields.g_ea_lib_vx
|
|
|
|
let dept = e.fields.dep
|
|
|
|
let city = e.fields.ville_etab
|
|
|
|
let moy = "null"
|
|
|
|
let selection = "null"
|
|
|
|
|
|
|
|
let tr = document.createElement("tr")
|
|
|
|
|
|
|
|
let td1 = document.createElement("td")
|
|
|
|
td1.innerText = etab
|
|
|
|
|
|
|
|
let td2 = document.createElement("td")
|
|
|
|
td2.innerText = city
|
|
|
|
|
|
|
|
let td3 = document.createElement("td")
|
|
|
|
td3.innerText = dept
|
|
|
|
|
|
|
|
let td4 = document.createElement("td")
|
|
|
|
td4.innerText = moy
|
|
|
|
|
|
|
|
let td5 = document.createElement("td")
|
|
|
|
td5.innerText = selection
|
|
|
|
|
|
|
|
tr.appendChild(td1)
|
|
|
|
tr.appendChild(td2)
|
|
|
|
tr.appendChild(td3)
|
|
|
|
tr.appendChild(td4)
|
|
|
|
tr.appendChild(td5)
|
|
|
|
|
2023-03-09 14:41:05 +01:00
|
|
|
this.etab.appendChild(tr)
|
2023-03-09 13:43:15 +01:00
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2023-03-09 11:52:52 +01:00
|
|
|
/**
|
|
|
|
* Envoyer dans le controlleur tous les events fait.
|
2023-03-09 14:41:05 +01:00
|
|
|
* @param { string } selection Ce qu'on va utiliser pour le &refine.
|
2023-03-09 11:52:52 +01:00
|
|
|
* @param { string } direction Retour en arriere ou aller en avant. { "previous", "next" }
|
|
|
|
* */
|
|
|
|
updateMenu(selection, direction) {
|
|
|
|
if(direction) {
|
|
|
|
window.updateModel(selection, direction)
|
|
|
|
} else {
|
|
|
|
log("Selector->View", "Mince, le menu ne veut pas s'ouvrir :(")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|