256 lines
8.6 KiB
Plaintext
256 lines
8.6 KiB
Plaintext
<app>
|
|
<div class="columns">
|
|
<div class="column is-two-fifths">
|
|
<choixformation isSelected={isSelected} reset={reset}></choixformation>
|
|
</div>
|
|
|
|
<div class="column">
|
|
<div class="box p-5 my-5" if={state.statistique!=''}>
|
|
<pourcentageForma statistique={state.statistique} moyenne={state.moyenne} selectivite={state.selectivite} capacite={state.capacite}></pourcentageForma>
|
|
<statistiqueFormation pct_femme={state.pct_femme} repartitionBac={state.pct_Bac} repartitionMention={state.repartitionMention}></statistiqueFormation>
|
|
</div>
|
|
<div class="box p-5 my-5" if={state.statistique!=''}>
|
|
<tableuFormation records={state.statistique.records}></tableuFormation>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
export default function todos() {
|
|
return {
|
|
onBeforeMount(props, state) {
|
|
// initial state
|
|
this.state = {
|
|
statistique: '',
|
|
selectivite: '',
|
|
moyenne: '',
|
|
pct_femme: '',
|
|
pct_Bac: '',
|
|
capacite: '',
|
|
repartitionMention: ''
|
|
};
|
|
},
|
|
|
|
async isSelected(detail, type){
|
|
this.getData(detail, type)
|
|
},
|
|
|
|
reset(){
|
|
this.update({
|
|
statistique: '',
|
|
selectivite: '',
|
|
moyenne: '',
|
|
pct_femme: '',
|
|
pct_Bac: '',
|
|
capacite: '',
|
|
repartitionMention: ''
|
|
})
|
|
},
|
|
|
|
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)
|
|
})
|
|
},
|
|
|
|
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);
|
|
|
|
this.update({
|
|
moyenne: (Math.round(gen/total*100))/100
|
|
})
|
|
},
|
|
|
|
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)
|
|
})
|
|
},
|
|
|
|
getRepartitionBac(records){
|
|
|
|
let general=records.reduce(function (accumulateur, valeurCourante) {
|
|
if(valeurCourante.fields.acc_bg){
|
|
accumulateur += (valeurCourante.fields.acc_bg)
|
|
}
|
|
return accumulateur;
|
|
}, 0);
|
|
|
|
let pro=records.reduce(function (accumulateur, valeurCourante) {
|
|
if(valeurCourante.fields.acc_bp){
|
|
accumulateur += (valeurCourante.fields.acc_bp)
|
|
}
|
|
return accumulateur;
|
|
}, 0);
|
|
|
|
let tecno=records.reduce(function (accumulateur, valeurCourante) {
|
|
if(valeurCourante.fields.acc_bt){
|
|
accumulateur += (valeurCourante.fields.acc_bt)
|
|
}
|
|
return accumulateur;
|
|
}, 0);
|
|
|
|
let total=records.reduce(function (accumulateur, valeurCourante) {
|
|
if(valeurCourante.fields.acc_neobac){
|
|
accumulateur += (valeurCourante.fields.acc_neobac)
|
|
}
|
|
if(valeurCourante.fields.acc_at){
|
|
accumulateur += (valeurCourante.fields.acc_at)
|
|
}
|
|
return accumulateur;
|
|
}, 0);
|
|
|
|
let autre=total - (general+tecno+pro);
|
|
|
|
this.update({
|
|
capacite: Math.round(total/records.length),
|
|
pct_Bac: new Array(Math.round(general/total*100), Math.round(tecno/total*100), Math.round(pro/total*100), Math.round(autre/total*100))
|
|
})
|
|
},
|
|
|
|
getRepartitionMention(records){
|
|
|
|
let sans=records.reduce(function (accumulateur, valeurCourante) {
|
|
if(valeurCourante.fields.acc_sansmention){
|
|
accumulateur += (valeurCourante.fields.acc_sansmention)
|
|
}
|
|
return accumulateur;
|
|
}, 0);
|
|
|
|
let assez=records.reduce(function (accumulateur, valeurCourante) {
|
|
if(valeurCourante.fields.acc_ab){
|
|
accumulateur += (valeurCourante.fields.acc_ab)
|
|
}
|
|
return accumulateur;
|
|
}, 0);
|
|
|
|
let bien=records.reduce(function (accumulateur, valeurCourante) {
|
|
if(valeurCourante.fields.acc_b){
|
|
accumulateur += (valeurCourante.fields.acc_b)
|
|
}
|
|
return accumulateur;
|
|
}, 0);
|
|
|
|
let tres=records.reduce(function (accumulateur, valeurCourante) {
|
|
if(valeurCourante.fields.acc_tb){
|
|
accumulateur += (valeurCourante.fields.acc_tb)
|
|
}
|
|
return accumulateur;
|
|
}, 0);
|
|
|
|
let felicitation=records.reduce(function (accumulateur, valeurCourante) {
|
|
if(valeurCourante.fields.acc_tbf){
|
|
accumulateur += (valeurCourante.fields.acc_tbf)
|
|
}
|
|
return accumulateur;
|
|
}, 0);
|
|
|
|
let total=sans+assez+bien+tres+felicitation;
|
|
|
|
this.update({
|
|
repartitionMention: new Array(Math.round(sans/total*100), Math.round(assez/total*100), Math.round(bien/total*100), Math.round(tres/total*100), Math.round(felicitation/total*100))
|
|
})
|
|
},
|
|
|
|
calcule(){
|
|
this.getSelectivite(this.state.statistique.records)
|
|
this.getMoyenne(this.state.statistique.records)
|
|
this.getPctFemme(this.state.statistique.records)
|
|
this.getRepartitionBac(this.state.statistique.records)
|
|
this.getRepartitionMention(this.state.statistique.records)
|
|
},
|
|
|
|
}
|
|
}
|
|
|
|
</script>
|
|
</app> |