From dd87e893baa4ba0878310f97de1549ef5df2910b Mon Sep 17 00:00:00 2001 From: ma0068 Date: Wed, 11 Mar 2026 17:13:59 +0100 Subject: [PATCH] working version for relaod header and data without updateUrl --- .../components/DetailHeader/DetailHeader.js | 335 +++++++++--------- .../js/components/Stv/Studentenverwaltung.js | 9 +- .../Stv/Studentenverwaltung/Details.js | 51 ++- 3 files changed, 214 insertions(+), 181 deletions(-) diff --git a/public/js/components/DetailHeader/DetailHeader.js b/public/js/components/DetailHeader/DetailHeader.js index f0db9fe5d..3e7187d27 100644 --- a/public/js/components/DetailHeader/DetailHeader.js +++ b/public/js/components/DetailHeader/DetailHeader.js @@ -55,9 +55,9 @@ export default { }); } - if(this.headerData){ +/* if (this.headerData && this.headerData.length) { //bereits im watcher this.getSemesterStati(this.headerData[0].prestudent_id); - } + }*/ }, watch: { person_id: { @@ -86,167 +86,176 @@ export default { }, deep: true, }, + headerData: { + handler(newVal) { + if (this.typeHeader === 'student' && newVal?.length) { + this.getSemesterStati(newVal[0].prestudent_id); + } + }, + immediate: true + }, }, - data(){ - return{ - headerDataMa: {}, - departmentData: {}, - leitungData: {}, - noCurrentStatus: false - }; - }, - methods: { - getHeader(person_id) { - return this.$api - .call(ApiDetailHeader.getHeader(person_id)) - .then(result => { - this.headerDataMa = result.data; +data(){ +return{ + headerDataMa: {}, + departmentData: {}, + leitungData: {}, + noCurrentStatus: false +}; +}, +methods: { +getHeader(person_id) { + return this.$api + .call(ApiDetailHeader.getHeader(person_id)) + .then(result => { + this.headerDataMa = result.data; - }) - .catch(this.$fhcAlert.handleSystemError); - }, - loadDepartmentData(mitarbeiter_uid) { - return this.$api - .call(ApiDetailHeader.getPersonAbteilung(mitarbeiter_uid)) - .then(result => { - this.departmentData = result.data; - }) - .catch(this.$fhcAlert.handleSystemError); - }, - getLeitungOrg(oekurzbz){ - return this.$api - .call(ApiDetailHeader.getLeitungOrg(oekurzbz)) - .then(result => { - this.leitungData = result.data; - }) - .catch(this.$fhcAlert.handleSystemError); - }, - redirectToLeitung(){ - this.$emit('redirectToLeitung', { - person_id: this.leitungData.person_id}); - }, - getFotoSrc(foto) { - if(foto === null) { - return FHC_JS_DATA_STORAGE_OBJECT.app_root + 'skin/images/profilbild_dummy.jpg'; - } else { - return 'data:image/jpeg;base64,' + foto; - } - }, - getSemesterStati(prestudent_id){ - return this.$api - .call(ApiDetailHeader.getSemesterStati(prestudent_id)) - .then(result => { - this.semesterStati = result.data; - }) - .catch(this.$fhcAlert.handleSystemError); - } - }, - template: ` -
- - - - -
- ` + }) + .catch(this.$fhcAlert.handleSystemError); +}, +loadDepartmentData(mitarbeiter_uid) { + return this.$api + .call(ApiDetailHeader.getPersonAbteilung(mitarbeiter_uid)) + .then(result => { + this.departmentData = result.data; + }) + .catch(this.$fhcAlert.handleSystemError); +}, +getLeitungOrg(oekurzbz){ + return this.$api + .call(ApiDetailHeader.getLeitungOrg(oekurzbz)) + .then(result => { + this.leitungData = result.data; + }) + .catch(this.$fhcAlert.handleSystemError); +}, +redirectToLeitung(){ + this.$emit('redirectToLeitung', { + person_id: this.leitungData.person_id}); +}, +getFotoSrc(foto) { + if(foto === null) { + return FHC_JS_DATA_STORAGE_OBJECT.app_root + 'skin/images/profilbild_dummy.jpg'; + } else { + return 'data:image/jpeg;base64,' + foto; + } +}, +getSemesterStati(prestudent_id){ + return this.$api + .call(ApiDetailHeader.getSemesterStati(prestudent_id)) + .then(result => { + this.semesterStati = result.data; + //console.log("getSemesterStati loaded for prestudent_id " + prestudent_id); + }) + .catch(this.$fhcAlert.handleSystemError); +} +}, +template: ` +
+ + + + +
+` } diff --git a/public/js/components/Stv/Studentenverwaltung.js b/public/js/components/Stv/Studentenverwaltung.js index 52b4b9d07..e62ccfe7d 100644 --- a/public/js/components/Stv/Studentenverwaltung.js +++ b/public/js/components/Stv/Studentenverwaltung.js @@ -422,12 +422,13 @@ export default { this.$refs.searchbar.abort(); this.$refs.searchbar.hideresult(); }, - handleReloadStudent(students){ - //TODO(Manu) check with Harald - + handleReloadStudent_DEPR(students){ + // @reload-students="handleReloadStudent" + //TODO(Manu) delete this.$refs.details.reload(); //reload simply without updateUrl //this.selected = students; + //analoge to url_studiensemester_kurzbz /* this.$refs.stvList.updateUrl( ApiStv.students.uid(students[0].uid,'CURRENT_SEMESTER'), true @@ -644,7 +645,7 @@ export default { diff --git a/public/js/components/Stv/Studentenverwaltung/Details.js b/public/js/components/Stv/Studentenverwaltung/Details.js index 519b0b1b5..95d791ef9 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details.js +++ b/public/js/components/Stv/Studentenverwaltung/Details.js @@ -2,6 +2,7 @@ import FhcTabs from "../../Tabs.js"; import FhcHeader from "../../DetailHeader/DetailHeader.js"; import ApiStvApp from '../../../api/factory/stv/app.js'; +import ApiStudent from '../../../api/factory/stv/students.js'; // TODO(chris): alt & title // TODO(chris): phrasen @@ -20,15 +21,13 @@ export default { data() { return { configStudent: {}, - configStudents: {} + configStudents: {}, + localStudent: null }; }, props: { students: Array }, - emits: [ - 'reload-students:students' - ], computed: { appRoot() { return FHC_JS_DATA_STORAGE_OBJECT.app_root; @@ -48,27 +47,29 @@ export default { } return Object.fromEntries(Object.entries(this.configStudents).filter(([ , value ]) => !value.showOnlyWithUid && !value.showOnlyWithUid)); }, -/* studiensemester(){ - if(this.students) - return this.students.query_studiensemester_kurzbz; - else - return null; - //return this.students?[0].query_studiensemester_kurzbz || null; - },*/ + //for reloading component if data changes + headerKey() { + return this.students?.[0]?.uid || this.localStudent?.[0]?.uid || "empty"; + } }, watch: { '$p.user_language.value'(n, o) { if (n !== o && o !== undefined) this.loadConfig(); }, + //ohne zusätzlichen Watcher reload header und details currentSemester(newVal) { if ( this.students && this.students.length > 0 && newVal !== this.students[0].query_studiensemester_kurzbz ) { - this.$emit('reload-students', this.students); + console.log("studiensemester_kurzbz " + this.students[0].query_studiensemester_kurzbz + " vs " + newVal); + this.reloadDataStudent(); } + }, + headerKey(newVal){ + this.reloadDataStudent(); } }, @@ -91,10 +92,31 @@ export default { if (this.$refs.tabs?.$refs?.current?.reload) this.$refs.tabs.$refs.current.reload(); }, + reloadDataStudent(){ + //TODO(check) + this.localStudent = null; + const studentArr = this.students; + + if (!studentArr || !studentArr.length) { + console.log("no data"); + return; + } + + console.log("uid " + studentArr[0].uid); + + this.$api + .call(ApiStudent.uid(studentArr[0].uid, this.currentSemester)) + .then(result => { + this.localStudent = result.data; + }); + } }, created() { this.loadConfig(); }, + /* //TODO(remove) + * {{headerKey}} {{localStudent?.[0]?.uid}}
{{ students?.[0]?.uid }} + * */ template: `
@@ -102,7 +124,8 @@ export default {
@@ -110,7 +133,7 @@ export default { v-if="students.length == 1" ref="tabs" :useprimevue="true" - :modelValue="students[0]" + :modelValue="localStudent[0] || students[0]" :config="config" :default="$route.params.tab" style="flex: 1 1 0%; height: 0%"