Merge branch 'feature-61235/Cis4_Studium_Uebersicht' into merge_C4_25999_61235_61730

This commit is contained in:
Harald Bamberger
2025-06-03 16:14:00 +02:00
2 changed files with 63 additions and 15 deletions
@@ -222,7 +222,51 @@ class Studium extends FHCAPI_Controller
}
private function computeStudienplanLehrveranstaltungen($studienplan_id, $semester){
$lehrveranstaltungen = $this->StudienplanModel->getStudienplanLehrveranstaltung($studienplan_id, $semester);
/*
SELECT tbl_lehrveranstaltung.*,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id,
tbl_studienplan_lehrveranstaltung.semester as stpllv_semester,
tbl_studienplan_lehrveranstaltung.pflicht as stpllv_pflicht,
tbl_studienplan_lehrveranstaltung.koordinator as stpllv_koordinator,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent,
tbl_studienplan_lehrveranstaltung.sort stpllv_sort,
tbl_studienplan_lehrveranstaltung.curriculum,
tbl_studienplan_lehrveranstaltung.export,
tbl_studienplan_lehrveranstaltung.genehmigung
FROM lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung
USING(lehrveranstaltung_id)
WHERE tbl_studienplan_lehrveranstaltung.studienplan_id=" . $this->db_add_param($studienplan_id, FHC_INTEGER);
if (defined("CIS_PROFIL_STUDIENPLAN_MODULE_AUSBLENDEN") && CIS_PROFIL_STUDIENPLAN_MODULE_AUSBLENDEN)
$qry .= " AND tbl_lehrveranstaltung.lehrtyp_kurzbz != 'modul'";
if (!is_null($semester))
{
$qry.=" AND tbl_studienplan_lehrveranstaltung.semester=" . $this->db_add_param($semester, FHC_INTEGER);
} */
$this->load->model('education/Lehrveranstaltung_model', 'LehrveranstaltungModel');
$query = "
SELECT tbl_lehrveranstaltung.*,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id,
tbl_studienplan_lehrveranstaltung.semester as stpllv_semester,
tbl_studienplan_lehrveranstaltung.pflicht as stpllv_pflicht,
tbl_studienplan_lehrveranstaltung.koordinator as stpllv_koordinator,
tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent,
tbl_studienplan_lehrveranstaltung.sort stpllv_sort,
tbl_studienplan_lehrveranstaltung.curriculum,
tbl_studienplan_lehrveranstaltung.export,
tbl_studienplan_lehrveranstaltung.genehmigung
FROM lehre.tbl_lehrveranstaltung
JOIN lehre.tbl_studienplan_lehrveranstaltung
USING(lehrveranstaltung_id)
WHERE tbl_studienplan_lehrveranstaltung.studienplan_id=? AND tbl_studienplan_lehrveranstaltung.semester=?";
if (defined("CIS_PROFIL_STUDIENPLAN_MODULE_AUSBLENDEN") && CIS_PROFIL_STUDIENPLAN_MODULE_AUSBLENDEN)
$query .= " AND tbl_lehrveranstaltung.lehrtyp_kurzbz != 'modul'";
$lehrveranstaltungen = $this->LehrveranstaltungModel->execReadOnlyQuery($query,[$studienplan_id, $semester]);
$lehrveranstaltungen = $this->getDataOrTerminateWithError($lehrveranstaltungen);
usort($lehrveranstaltungen, function($a, $b){
if($a->lehrtyp_kurzbz == "modul"){
+18 -14
View File
@@ -31,15 +31,15 @@ export default {
},
watch:{
selectedStudiensemester: function(newVal, oldVal){
if(newVal != oldVal){
if(newVal && newVal != oldVal){
const studiensemester =this.getDataFromLocalStorage("sudiensemester");
if (!studiensemester || (studiensemester && studiensemester != newVal)){
if (newVal && (!studiensemester || (studiensemester && studiensemester != newVal))){
this.storeDataToLocalStorage("sudiensemester", newVal);
}
}
},
selectedSemester: function (newVal, oldVal) {
if (newVal != oldVal) {
if (newVal && newVal != oldVal) {
const semester = this.getDataFromLocalStorage("semester");
if (!semester || (semester && semester != newVal)) {
this.storeDataToLocalStorage("semester", newVal);
@@ -47,7 +47,7 @@ export default {
}
},
selectedStudiengang: function (newVal, oldVal) {
if (newVal != oldVal) {
if (newVal && newVal != oldVal) {
const studiengang = this.getDataFromLocalStorage("studiengang");
if (!studiengang || (studiengang && studiengang != newVal)) {
this.storeDataToLocalStorage("studiengang", JSON.stringify(newVal));
@@ -55,7 +55,7 @@ export default {
}
},
selectedStudienordnung: function (newVal, oldVal) {
if (newVal != oldVal) {
if (newVal && newVal != oldVal) {
const studienordnung = this.getDataFromLocalStorage("studienordnung");
if (!studienordnung || (studienordnung && studienordnung != newVal)) {
this.storeDataToLocalStorage("studienordnung", JSON.stringify(newVal));
@@ -81,7 +81,11 @@ export default {
},
changeStudienordnung(value) {
let studienordnung = this.$refs.studienordnung;
studienordnung.selectedIndex = (studienordnung.selectedIndex + value + studienordnung.options.length) % studienordnung.options.length;
let newSelectIndex = (studienordnung.selectedIndex + value + studienordnung.options.length) % studienordnung.options.length;
if(studienordnung.options[newSelectIndex].disabled){
newSelectIndex = (newSelectIndex + value + studienordnung.options.length) % studienordnung.options.length;
}
studienordnung.selectedIndex = newSelectIndex;
this.changeSelectedStudienPlan(studienordnung.value);
},
@@ -277,13 +281,13 @@ export default {
<div>
<h6>Studiensemester:</h6>
<div class="input-group">
<button class="btn btn-outline-secondary" type="button" :disabled="false" @click="changeStudiensemester(-1)">
<button class="btn btn-outline-secondary" type="button" :disabled="false" @click="changeStudiensemester(1)">
<i class="fa fa-caret-left" aria-hidden="true"></i>
</button>
<select ref="studiensemester" v-model="selectedStudiensemester" class="form-select" :aria-label="$p.t('global/studiensemester_auswaehlen')" @change="setHash($event.target.value)">
<option v-for="semester in studienSemester" @click="changeSelectedStudienSemester(semester.studiensemester_kurzbz)" :key="semester" :value="semester.studiensemester_kurzbz">{{studiensemesterTitel(semester.studiensemester_kurzbz) }}</option>
</select>
<button class="btn btn-outline-secondary" type="button" :disabled="false" @click="changeStudiensemester(1)">
<button class="btn btn-outline-secondary" type="button" :disabled="false" @click="changeStudiensemester(-1)">
<i class="fa fa-caret-right" aria-hidden="true"></i>
</button>
</div>
@@ -292,13 +296,13 @@ export default {
<div>
<h6>Studiengang:</h6>
<div class="input-group">
<button class="btn btn-outline-secondary" type="button" :disabled="false" @click="changeStudiengang(-1)">
<button class="btn btn-outline-secondary" type="button" :disabled="false" @click="changeStudiengang(1)">
<i class="fa fa-caret-left" aria-hidden="true"></i>
</button>
<select ref="studiengaenge" v-model="selectedStudiengang" class="form-select" :aria-label="$p.t('global/studiensemester_auswaehlen')" @change="setHash($event.target.value)">
<option v-for="studiengang in studiengaenge" @click="changeSelectedStudienGang(studiengang.studiengang_kz)" :key="studiengang.studiengang_kz" :value="studiengang.studiengang_kz" >{{studiengangTitel(studiengang)}}</option>
</select>
<button class="btn btn-outline-secondary" type="button" :disabled="false" @click="changeStudiengang(1)">
<button class="btn btn-outline-secondary" type="button" :disabled="false" @click="changeStudiengang(-1)">
<i class="fa fa-caret-right" aria-hidden="true"></i>
</button>
</div>
@@ -307,13 +311,13 @@ export default {
<div>
<h6>Semester:</h6>
<div class="input-group">
<button class="btn btn-outline-secondary" type="button" :disabled="false" @click="changeSemester(-1)">
<button class="btn btn-outline-secondary" type="button" :disabled="false" @click="changeSemester(1)">
<i class="fa fa-caret-left" aria-hidden="true"></i>
</button>
<select ref="semester" v-model="selectedSemester" class="form-select" :aria-label="$p.t('global/studiensemester_auswaehlen')" @change="setHash($event.target.value)">
<option v-for="sem in semester" @click="changeSelectedSemester(sem)" :key="semester" :value="sem">{{sem}}. Semester</option>
</select>
<button class="btn btn-outline-secondary" type="button" :disabled="false" @click="changeSemester(1)">
<button class="btn btn-outline-secondary" type="button" :disabled="false" @click="changeSemester(-1)">
<i class="fa fa-caret-right" aria-hidden="true"></i>
</button>
</div>
@@ -322,13 +326,13 @@ export default {
<div>
<h6>Studienordnung:</h6>
<div class="input-group">
<button class="btn btn-outline-secondary" type="button" :disabled="false" @click="changeStudienordnung(-1)">
<button class="btn btn-outline-secondary" type="button" :disabled="false" @click="changeStudienordnung(1)">
<i class="fa fa-caret-left" aria-hidden="true"></i>
</button>
<select ref="studienordnung" v-model="selectedStudienordnung" class="form-select" :aria-label="$p.t('global/studiensemester_auswaehlen')" @change="setHash($event.target.value)">
<option v-for="ordnung in computedStudienOrdnungSelectValues" :disabled="ordnung.disabled" @click="changeSelectedStudienPlan(ordnung?.studienplan?.studienplan_id)" :key="ordnung?.studienplan?.bezeichnung " :value="ordnung?.studienplan?.studienplan_id">{{ordnung.bezeichnung}}</option>
</select>
<button class="btn btn-outline-secondary" type="button" :disabled="false" @click="changeStudienordnung(1)">
<button class="btn btn-outline-secondary" type="button" :disabled="false" @click="changeStudienordnung(-1)">
<i class="fa fa-caret-right" aria-hidden="true"></i>
</button>
</div>