142 lines
5.9 KiB
Plaintext
142 lines
5.9 KiB
Plaintext
<fili-info>
|
|
<div class="box p-1 m-2" if={props.shouldShowInfos}>
|
|
<h1 class="title is-4 m-2">
|
|
<span style="color: #485FC7;">{props.course.fili}</span> /
|
|
<span style="color: #485FC7;">{props.course.sousfili}</span> /
|
|
<span style="color: #485FC7;">{props.course.soussousfili}</span>
|
|
</h1>
|
|
<div class="box mt-2" style="background-color: #EAEAEA; margin: auto; width: 60%;">
|
|
<p>Moyenne des admis<span class="is-pulled-right">{state.average}</span></p>
|
|
<p>Nombre de formations<span class="is-pulled-right">{state.courseNumber}</span></p>
|
|
<p>Capacité<span class="is-pulled-right">{state.capacity}</span></p>
|
|
<title-progress title={"Sélectivité"} value={state.selectivity} max="100"></title-progress>
|
|
</div>
|
|
<div class="m-4">
|
|
<line-graph title="Répartition par genre" data={state.genreStats} style="height: 6rem;"></line-graph>
|
|
</div>
|
|
<div class="m-4">
|
|
<line-graph title="Répartition par bac" data={state.bacStats} style="height: 6rem;"></line-graph>
|
|
</div>
|
|
<div class="m-4">
|
|
<line-graph title="Répartition par mention au bac" data={state.mentionStats} style="height: 6rem;"></line-graph>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
|
|
export default {
|
|
onBeforeMount(props, state) {
|
|
state = {
|
|
average: 0,
|
|
capacity: 0,
|
|
selectivity: 0,
|
|
courseNumber: 0,
|
|
bacStats: [],
|
|
genreStats: [],
|
|
mentionStats: []
|
|
}
|
|
},
|
|
|
|
updateFiliStats() {
|
|
let list = this.props.schoolList
|
|
|
|
let avg = list.reduce((s, e) => s + e.fields.moyenne, 0) / list.length
|
|
let avgCap = list.reduce((s, e) => s + e.fields.capa_fin, 0) / list.length
|
|
let avgSlc = list.reduce((s, e) => s + (e.fields.taux_acces_ens || 0), 0) / list.filter((e) => e.fields.taux_acces_ens).length
|
|
|
|
this.state.courseNumber = list.length
|
|
this.state.average = Math.round(avg * 100) / 100
|
|
this.state.capacity = Math.floor(avgCap)
|
|
this.state.selectivity = Math.floor(avgSlc)
|
|
|
|
let pctFemmes = Math.round(list.reduce((s, e) => s + (e.fields.pct_f || 0), 0) / list.filter((e) => e.fields.pct_f).length)
|
|
this.state.genreStats = [
|
|
{
|
|
name: "Hommes",
|
|
short: "H",
|
|
value: (100 - pctFemmes)
|
|
},
|
|
{
|
|
name: "Femmes",
|
|
short: "F",
|
|
value: pctFemmes
|
|
},
|
|
]
|
|
|
|
let pctBG = Math.round(list.reduce((s, e) => s + (e.fields.part_acces_gen || 0), 0) / list.filter((e) => e.fields.part_acces_gen).length)
|
|
let pctBT = Math.round(list.reduce((s, e) => s + (e.fields.part_acces_tec || 0), 0) / list.filter((e) => e.fields.part_acces_tec).length)
|
|
let pctBP = Math.round(list.reduce((s, e) => s + (e.fields.part_acces_pro || 0), 0) / list.filter((e) => e.fields.part_acces_pro).length)
|
|
if (!pctBG) pctBG = 0;
|
|
if (!pctBT) pctBT = 0;
|
|
if (!pctBP) pctBP = 0;
|
|
|
|
this.state.bacStats = [
|
|
{
|
|
name: "Général",
|
|
short: "Gen.",
|
|
value: pctBG
|
|
},
|
|
{
|
|
name: "Technologique",
|
|
short: "Tech.",
|
|
value: pctBT
|
|
},
|
|
{
|
|
name: "Professionnel",
|
|
short: "Pro.",
|
|
value: pctBP
|
|
},
|
|
{
|
|
name: "Autre",
|
|
short: "Au.",
|
|
value: 100 - (pctBG + pctBT + pctBP)
|
|
}
|
|
]
|
|
|
|
let pctSM = Math.round(list.reduce((s, e) => s + e.fields.pct_sansmention, 0) / list.length)
|
|
let pctAB = Math.round(list.reduce((s, e) => s + e.fields.pct_ab, 0) / list.length)
|
|
let pctB = Math.round(list.reduce((s, e) => s + e.fields.pct_b, 0) / list.length)
|
|
let pctTB = Math.round(list.reduce((s, e) => s + e.fields.pct_tb, 0) / list.length)
|
|
let pctTBF = Math.round(list.reduce((s, e) => s + e.fields.pct_tbf, 0) / list.length)
|
|
|
|
this.state.mentionStats = [
|
|
{
|
|
name: "Sans Mention",
|
|
short: "SM",
|
|
value: pctSM
|
|
},
|
|
{
|
|
name: "Assez Bien",
|
|
short: "AB",
|
|
value: pctAB
|
|
},
|
|
{
|
|
name: "Bien",
|
|
short: "B",
|
|
value: pctB
|
|
},
|
|
{
|
|
name: "Très Bien",
|
|
short: "TB",
|
|
value: pctTB
|
|
},
|
|
{
|
|
name: "Très Bien + Félicitations",
|
|
short: "TBF",
|
|
value: pctTBF
|
|
},
|
|
{
|
|
name: "Non Spécifié",
|
|
short: "NS",
|
|
value: 100 - (pctSM + pctAB + pctB + pctTB + pctTBF)
|
|
}
|
|
]
|
|
},
|
|
|
|
onBeforeUpdate(props, state) {
|
|
if (!props.schoolList || !props.schoolList.length) return
|
|
this.updateFiliStats()
|
|
}
|
|
}
|
|
</script>
|
|
</fili-info> |