diff --git a/public/css/Studentenverwaltung.css b/public/css/Studentenverwaltung.css index eb6becc15..1a2436dfd 100644 --- a/public/css/Studentenverwaltung.css +++ b/public/css/Studentenverwaltung.css @@ -74,6 +74,12 @@ html.fs_huge { color: var(--gray-500); } +/* Aufnahme Termine: background color green*/ +.stv-details-admission-table .row-green{ + background-color: lightgreen !important; + //color: var(--green-200); +} + /* Dropdown Toolbar Interessent, submenu */ .dropend .dropdown-toggle.d-flex::after { height: 0; diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Aufnahmetermine/Aufnahmetermine.js b/public/js/components/Stv/Studentenverwaltung/Details/Aufnahmetermine/Aufnahmetermine.js index d03569df4..70780ac0a 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Aufnahmetermine/Aufnahmetermine.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Aufnahmetermine/Aufnahmetermine.js @@ -35,13 +35,49 @@ export default { student: Object }, data() { + let self = this; return { tabulatorOptions: { ajaxURL: 'dummy', ajaxRequestFunc: () => this.$api.call( ApiStvAdmissionDates.getAufnahmetermine(this.student.person_id) ), - ajaxResponse: (url, params, response) => response.data, + ajaxResponse: (url, params, response) => { + const data = response.data; + + const filtered = data.filter(item => + item.studiengangkurzbzlang === this.student.studiengang || + item.stg_kuerzel === this.student.studiengang + ); + + if (filtered.length > 0) { + filtered.sort((a, b) => + this.parseSemester(b.studiensemester) - this.parseSemester(a.studiensemester) + ); + self.youngestSemester = filtered[0].studiensemester; + } else { + self.youngestSemester = null; + } + + return data; + }, + rowFormatter: function(row) { + let data = row.getData(); // get data for this row + + if (data.studiengangkurzbzlang == self.student.studiengang && + data.studiensemester === self.youngestSemester) { + let cells = row.getCells(); + + cells.forEach((c) => { + c.getElement().classList.add("row-green"); + } + + ); + } + }, + dataLoaded: function() { + this.redraw(true); + }, columns: [ {title: "rt_id", field: "rt_id", visible: false}, {title: "rt_person_id", field: "rt_person_id", visible: false}, @@ -187,7 +223,8 @@ export default { listPlacementTests: [], listStudyPlans: [], filterOnlyFutureTestsSet: false, - filteredPlacementTests: [] + filteredPlacementTests: [], + youngestSemester: null } }, methods: { @@ -331,6 +368,13 @@ export default { resetForm() { this.formData = {}; }, + parseSemester(semester) { + const type = semester.slice(0, 2).toUpperCase(); // "WS" or "SS" + const year = parseInt(semester.slice(2), 10); + + // WS > SS + return year * 10 + (type === 'SS' ? 1 : 2); + } }, created() { this.$api diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Aufnahmetermine/HeaderReihungstest.js b/public/js/components/Stv/Studentenverwaltung/Details/Aufnahmetermine/HeaderReihungstest.js index dbf6e3154..a6f50d032 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Aufnahmetermine/HeaderReihungstest.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Aufnahmetermine/HeaderReihungstest.js @@ -49,12 +49,34 @@ export default { .then(result => { this.listAufnahmetermine = result.data; + //TODO(Manu) check logic Fas STG + const hasMatch = this.listAufnahmetermine + .some(item => item.studiengangkurzbzlang === this.student.studiengang); + if(!hasMatch){ + this.formData.rt_gesamtpunkte = 0; + this.$fhcAlert.alertError("Studiengang nicht enthalten: " + this.student.studiengang); + return; + } + const listAufnahmetermineFiltered = this.listAufnahmetermine .filter(item => item.studiengangkurzbzlang == this.student.studiengang) .sort((a, b) => this.parseSemester(b.studiensemester) - this.parseSemester(a.studiensemester)); - const elementSemYoungest = listAufnahmetermineFiltered[0]; - this.formData.rt_gesamtpunkte = elementSemYoungest.punkte; + let pointsSemStg = 0; + + if(listAufnahmetermineFiltered.length > 0){ + + const youngestSemester = listAufnahmetermineFiltered[0].studiensemester; + + //sum of all rt-points of studiengang of youngest sem + pointsSemStg = listAufnahmetermineFiltered + .filter(item => item.studiensemester === youngestSemester) + .reduce((sum, item) => sum + (Number(item.punkte) || 0), 0); + } + else + pointsSemStg = 0; + + this.formData.rt_gesamtpunkte = pointsSemStg; }) .catch(this.$fhcAlert.handleSystemError); @@ -91,7 +113,7 @@ export default { }, template: `