From 3a06dc613f4b74b6d353dc8571e9536c678f2c6c Mon Sep 17 00:00:00 2001 From: Alexei Karpenko Date: Wed, 10 Sep 2025 17:28:15 +0200 Subject: [PATCH] Studierendenverwalung Projektarbeiten: preserve data before saved, modal not closed after saving --- .../Details/Projektarbeit/Details.js | 1 + .../Details/Projektarbeit/Projektarbeit.js | 10 ++++++---- .../Details/Projektarbeit/Projektbetreuer.js | 11 +++-------- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Details.js b/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Details.js index b7aea7169..35a4f5f8a 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Details.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Details.js @@ -165,6 +165,7 @@ export default { }, loadProjektarbeit(projektarbeit_id) { + if (this?.formData?.projektarbeit_id == projektarbeit_id) return; this.resetForm(); return this.$api .call(ApiStvProjektarbeit.loadProjektarbeit(projektarbeit_id)) diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Projektarbeit.js b/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Projektarbeit.js index 952c47860..f78963066 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Projektarbeit.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Projektarbeit.js @@ -263,14 +263,17 @@ export default { actionEditProjektarbeit() { this.statusNew = false; this.toggleMenu('details'); - this.$refs.projektarbeitDetails.getFormData(this.statusNew, this.editedProjektarbeit.studiensemester_kurzbz, this.editedProjektarbeit.lehrveranstaltung_id); + this.$refs.projektarbeitDetails.getFormData( + this.statusNew, this.editedProjektarbeit.studiensemester_kurzbz, this.editedProjektarbeit.lehrveranstaltung_id + ); this.$refs.projektarbeitDetails.loadProjektarbeit(this.editedProjektarbeit.projektarbeit_id); this.$refs.projektarbeitModal.show(); }, actionEditBetreuer() { - this.statusNew = false; this.toggleMenu('betreuer'); - this.$refs.projektbetreuer.getData(this.editedProjektarbeit.projektarbeit_id, this.editedProjektarbeit.studiensemester_kurzbz, this.editedProjektarbeit.projekttyp_kurzbz); + this.$refs.projektbetreuer.getData( + this.editedProjektarbeit.projektarbeit_id, this.editedProjektarbeit.studiensemester_kurzbz, this.editedProjektarbeit.projekttyp_kurzbz + ); this.$refs.projektarbeitModal.show(); }, actionDeleteProjektarbeit(projektarbeit_id) { @@ -310,7 +313,6 @@ export default { projektarbeitSaved() { this.reload(); this.$fhcAlert.alertSuccess(this.$p.t('ui', 'successSave')); - this.hideModal('projektarbeitModal'); }, setDefaultStunden(projekttyp_kurzbz) { this.$refs.projektbetreuer.setDefaultStunden(projekttyp_kurzbz); diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Projektbetreuer.js b/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Projektbetreuer.js index 1eb19e3fd..1290aa036 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Projektbetreuer.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Projektarbeit/Projektbetreuer.js @@ -193,15 +193,13 @@ export default { betr.betreuerart_kurzbz === betreuerart_kurzbz ); - let betreuer = []; if (idx >= 0) { // if betreuer found - betreuer = projektbetreuerListe[idx]; - // set currently edited betreuer - this.formData = betreuer; + // set currently edited betreuer (deep copy) + this.formData = JSON.parse(JSON.stringify(projektbetreuerListe[idx])); // set download link - if (betreuer.beurteilungDownloadLink !== null) this.beurteilungDownloadLink = betreuer.beurteilungDownloadLink; + if (this.formData.beurteilungDownloadLink !== null) this.beurteilungDownloadLink = this.formData.beurteilungDownloadLink; // set betreuer for autocomplete field this.autocompleteSelectedBetreuer = { @@ -244,7 +242,6 @@ export default { // default Stundensätze from config this.defaultFormDataValues.stunden = this.getDefaultStunden(projekttyp_kurzbz); this.defaultFormDataValues.stundensatz = this.config.defaultProjektbetreuerStundensatz; - this.resetModes(); // get other initial data this.$api @@ -266,7 +263,6 @@ export default { this.getProjektbetreuer(); } else { this.$refs.projektbetreuerTable.tabulator.setData([]); - this.resetForm(); } }, getProjektbetreuer() { @@ -274,7 +270,6 @@ export default { .call(ApiStvProjektbetreuer.getProjektbetreuer(this.projektarbeit_id)) .then(result => { this.$refs.projektbetreuerTable.tabulator.replaceData(this.addIds(result.data)); - this.resetForm(); }) .catch(this.$fhcAlert.handleSystemError); },