S4WEB/riot/app.riot

157 lines
5.1 KiB
Plaintext
Raw Normal View History

<app>
2023-03-27 23:24:25 +02:00
<div class="columns">
<div class="column is-two-fifths">
<choixformation isSelected={isSelected} reset={reset}></choixformation>
2023-03-27 23:24:25 +02:00
</div>
<div class="column">
<statistiqueFormation statistique={state.statistique} moyenne={state.moyenne} selectivite={state.selectivite} pct_femme={state.pct_femme}> </statistiqueFormation>
2023-03-27 23:24:25 +02:00
</div>
</div>
<script>
export default function todos() {
return {
onBeforeMount(props, state) {
// initial state
this.state = {
statistique: '',
selectivite: '',
moyenne: '',
pct_femme: ''
};
},
async isSelected(detail, type){
this.getData(detail, type)
},
reset(){
this.update({
statistique: '',
selectivite: '',
moyenne: '',
pct_femme: ''
})
},
async getData(detail, type){
if(!localStorage.getItem(`${type}+${detail}`)){
let rep = await fetch(`https://data.enseignementsup-recherche.gouv.fr/api/records/1.0/search/?dataset=fr-esr-parcoursup&q=&sort=tri&facet=session&facet=contrat_etab&facet=cod_uai&facet=g_ea_lib_vx&facet=dep_lib&facet=region_etab_aff&facet=acad_mies&facet=ville_etab&facet=lib_for_voe_ins&facet=select_form&facet=fili&facet=form_lib_voe_acc&facet=fil_lib_voe_acc&facet=detail_forma&facet=tri&facet=cod_aff_form&facet=etablissement_id_paysage&facet=composante_id_paysage&refine.form_lib_voe_acc=${encodeURIComponent(type)}&refine.fil_lib_voe_acc=${encodeURIComponent(detail)}&timezone=Europe%2FBerlin&rows=352&refine.sexe=F`);
rep = await rep.json();
localStorage.setItem(`${type}+${detail}`, JSON.stringify(rep))
this.update({
statistique: rep
})
}else{
this.update({
statistique: JSON.parse(localStorage.getItem(`${type}+${detail}`))
})
}
this.calcule()
},
getSelectivite(records){
let total = records.length
let gen = records.reduce(function (accumulateur, valeurCourante) {
if(valeurCourante.fields.taux_acces_ens){
return accumulateur + (valeurCourante.fields.taux_acces_ens)
}else{
return accumulateur
}
}, 0);
this.update({
selectivite: Math.round(gen/total)-1
})
},
getMoyenne(records){
let gen = records.reduce(function (accumulateur, valeurCourante) {
if(valeurCourante.fields.acc_tb){
accumulateur += (valeurCourante.fields.acc_tb*16)
}
if(valeurCourante.fields.acc_ab){
accumulateur += (valeurCourante.fields.acc_ab*12)
}
if(valeurCourante.fields.acc_b){
accumulateur += (valeurCourante.fields.acc_b*14)
}
if(valeurCourante.fields.acc_tbf){
accumulateur += (valeurCourante.fields.acc_tbf*18)
}
if(valeurCourante.fields.sansmention){
accumulateur += (valeurCourante.fields.sansmention*10)
}
if(valeurCourante.fields.acc_mention_nonrenseigne){
accumulateur += (valeurCourante.fields.acc_mention_nonrenseigne*10)
}
return accumulateur;
}, 0);
let total = records.reduce(function (accumulateur, valeurCourante) {
if(valeurCourante.fields.acc_tb){
accumulateur += (valeurCourante.fields.acc_tb)
}
if(valeurCourante.fields.acc_ab){
accumulateur += (valeurCourante.fields.acc_ab)
}
if(valeurCourante.fields.acc_b){
accumulateur += (valeurCourante.fields.acc_b)
}
if(valeurCourante.fields.acc_tbf){
accumulateur += (valeurCourante.fields.acc_tbf)
}
if(valeurCourante.fields.sansmention){
accumulateur += (valeurCourante.fields.sansmention)
}
if(valeurCourante.fields.acc_mention_nonrenseigne){
accumulateur += (valeurCourante.fields.acc_mention_nonrenseigne)
}
return accumulateur;
}, 0);
2023-03-27 23:24:25 +02:00
this.update({
moyenne: (Math.round(gen/total*100))/100
2023-03-27 23:24:25 +02:00
})
},
getPctFemme(records){
let femme=records.reduce(function (accumulateur, valeurCourante) {
if(valeurCourante.fields.acc_tot_f){
//nombre de femme
accumulateur += (valeurCourante.fields.acc_tot_f)
}
return accumulateur;
}, 0);
let total=records.reduce(function (accumulateur, valeurCourante) {
if(valeurCourante.fields.acc_tot_f){
//nombre d'admis
accumulateur += (valeurCourante.fields.acc_tot)
}
return accumulateur;
}, 0);
this.update({
pct_femme: Math.round(femme/total*100)
})
},
calcule(){
this.getSelectivite(this.state.statistique.records)
this.getMoyenne(this.state.statistique.records)
this.getPctFemme(this.state.statistique.records)
},
}
}
</script>
</app>