Files
2026-04-24 15:55:03 +02:00

46 lines
1.4 KiB
JavaScript

import MylvSemesterStudiengang from "./Semester/Studiengang.js";
export default {
components: {
MylvSemesterStudiengang
},
provide() {
return {
studien_semester: Vue.computed(() => this.semester)
}
},
props: {
semester: [String, Number],
lvs: Array
},
computed: {
ready() { return this.lvs !== null; },
studiengaenge() {
return [... new Map(
this.lvs
.map(lv => [
lv.studiengang_kz + '#' + lv.semester,
{
studiengang_kz: lv.studiengang_kz,
bezeichnung: lv.sg_bezeichnung,
sg_bezeichnung_eng: lv.sg_bezeichnung_eng,
kuerzel: lv.studiengang_kuerzel,
semester: lv.semester
}
])
).values()].sort((a, b) => a.bezeichnung.toLowerCase() == b.bezeichnung.toLowerCase() ? a.semester > b.semester : a.bezeichnung.toLowerCase() > b.bezeichnung.toLowerCase());
},
},
methods: {
lvsForStudiengang(studiengang) {
return this.lvs.filter(lv => lv.studiengang_kz == studiengang.studiengang_kz && lv.semester == studiengang.semester);
}
},
template: `
<div class="mylv-semester" v-if="ready">
<mylv-semester-studiengang v-for="studiengang in studiengaenge" :key="studiengang.studiengang_kz" v-bind="studiengang" :lvs="lvsForStudiengang(studiengang)" :semesterInfo="$props.semester" />
</div>
<div class="mylv-semester text-center" v-else>
<i class="fa-solid fa-spinner fa-pulse fa-3x"></i>
</div>`
};