From 478b23825c30cadc7ba3501a7f710644542e49cb Mon Sep 17 00:00:00 2001 From: adisposkofh Date: Thu, 23 Apr 2026 15:05:21 +0200 Subject: [PATCH 1/3] fixed broken formatting in collapsing profile tabulators --- .../Cis/Profil/MitarbeiterProfil.js | 38 ++++++++++++------- .../js/components/Cis/Profil/StudentProfil.js | 21 ++++++---- 2 files changed, 39 insertions(+), 20 deletions(-) diff --git a/public/js/components/Cis/Profil/MitarbeiterProfil.js b/public/js/components/Cis/Profil/MitarbeiterProfil.js index 559006a1b..2c4d19110 100644 --- a/public/js/components/Cis/Profil/MitarbeiterProfil.js +++ b/public/js/components/Cis/Profil/MitarbeiterProfil.js @@ -46,6 +46,7 @@ export default { responsiveLayout: "collapse", responsiveLayoutCollapseUseFormatters: false, responsiveLayoutCollapseFormatter: Vue.$collapseFormatter, + responsiveLayoutCollapseStartOpen: false, columns: [ { title: @@ -56,21 +57,24 @@ export default { formatter: "responsiveCollapse", maxWidth: 40, headerClick: this.collapseFunction, - visible: true + visible: true, + responsive: 0, }, { title: Vue.computed(() => this.preloadedPhrasen.bezeichnungPhrase), field: "Bezeichnung", headerFilter: true, minWidth: 200, - visible: true + visible: true, + responsive: 0, }, { title: Vue.computed(() => this.preloadedPhrasen.organisationseinheitPhrase), field: "Organisationseinheit", headerFilter: true, minWidth: 200, - visible: true + visible: true, + responsive: 1, }, { title: Vue.computed(() => this.preloadedPhrasen.gueltigVonPhrase), @@ -81,7 +85,8 @@ export default { minWidth: 200, visible: true, formatter:"datetime", - formatterParams: this.datetimeFormatterParams() + formatterParams: this.datetimeFormatterParams(), + responsive: 4, }, { title: Vue.computed(() => this.preloadedPhrasen.gueltigBisPhrase), @@ -92,14 +97,16 @@ export default { minWidth: 200, visible: true, formatter:"datetime", - formatterParams: this.datetimeFormatterParams() + formatterParams: this.datetimeFormatterParams(), + responsive: 3, }, { title: Vue.computed(() => this.preloadedPhrasen.wochenstundenPhrase), field: "Wochenstunden", headerFilter: true, minWidth: 200, - visible: true + visible: true, + responsive: 2, }, ], }, @@ -115,6 +122,7 @@ export default { responsiveLayoutCollapseUseFormatters: false, responsiveLayoutCollapseFormatter: Vue.$collapseFormatter, data: [{betriebsmittel: "", Nummer: "", Ausgegeben_am: ""}], + responsiveLayoutCollapseStartOpen: false, columns: [ { title: @@ -125,14 +133,16 @@ export default { formatter: "responsiveCollapse", maxWidth: 40, headerClick: this.collapseFunction, - visible: true + visible: true, + responsive: 0, }, { - title: Vue.computed(() => this.preloadedPhrasen.entlehnteBetriebsmittelPhrase), + title: Vue.computed(() => this.$p.t('ui/bezeichnung')), field: "betriebsmittel", headerFilter: true, minWidth: 200, - visible: true + visible: true, + responsive: 0, }, { title: Vue.computed(() => this.preloadedPhrasen.inventarnummerPhrase), @@ -140,7 +150,8 @@ export default { headerFilter: true, resizable: true, minWidth: 200, - visible: true + visible: true, + responsive: 2, }, { title: Vue.computed(() => this.preloadedPhrasen.ausgabedatumPhrase), @@ -150,7 +161,8 @@ export default { minWidth: 200, visible: true, formatter:"datetime", - formatterParams: this.datetimeFormatterParams() + formatterParams: this.datetimeFormatterParams(), + responsive: 1, }, ], } @@ -164,11 +176,11 @@ export default { methods: { betriebsmittelTableBuilt: function () { - this.$refs.betriebsmittelTable.tabulator.setColumns(this.betriebsmittel_table_options.columns) + // this.$refs.betriebsmittelTable.tabulator.setColumns(this.betriebsmittel_table_options.columns) this.$refs.betriebsmittelTable.tabulator.setData(this.data.mittel); }, funktionenTableBuilt: function () { - this.$refs.funktionenTable.tabulator.setColumns(this.funktionen_table_options.columns) + // this.$refs.funktionenTable.tabulator.setColumns(this.funktionen_table_options.columns) this.$refs.funktionenTable.tabulator.setData(this.data.funktionen); }, hideEditProfilModal: function () { diff --git a/public/js/components/Cis/Profil/StudentProfil.js b/public/js/components/Cis/Profil/StudentProfil.js index 3f8e8380d..a3444389e 100644 --- a/public/js/components/Cis/Profil/StudentProfil.js +++ b/public/js/components/Cis/Profil/StudentProfil.js @@ -42,10 +42,12 @@ export default { }, minHeight: 200, layout: "fitColumns", - columns: [{ + columns: [ + { title: Vue.computed(() => this.preloadedPhrasen.zutrittsGruppenPhrase), field: "bezeichnung" - }], + } + ], }, betriebsmittel_table_options: { persistenceID: "filterTableStudentProfilBetriebsmittel", @@ -57,6 +59,7 @@ export default { responsiveLayout: "collapse", responsiveLayoutCollapseUseFormatters: false, responsiveLayoutCollapseFormatter: Vue.$collapseFormatter, + responsiveLayoutCollapseStartOpen: false, columns: [ { title: @@ -67,13 +70,15 @@ export default { formatter: "responsiveCollapse", maxWidth: 40, headerClick: this.collapseFunction, + responsive: 0, }, { title: Vue.computed(()=>this.preloadedPhrasen.entlehnteBetriebsmittelPhrase), field: "betriebsmittel", headerFilter: true, minWidth: 200, - visible: true + visible: true, + responsive: 0, }, { title: Vue.computed(() =>this.preloadedPhrasen.inventarnummerPhrase) , @@ -81,7 +86,8 @@ export default { headerFilter: true, resizable: true, minWidth: 200, - visible: true + visible: true, + responsive: 2, }, { title: Vue.computed(() =>this.preloadedPhrasen.ausgabedatum) , @@ -91,7 +97,8 @@ export default { minWidth: 200, visible: true, formatter:"datetime", - formatterParams: this.datetimeFormatterParams() + formatterParams: this.datetimeFormatterParams(), + responsive: 1, }, ], }, @@ -110,11 +117,11 @@ export default { methods: { betriebsmittelTableBuilt: function () { - this.$refs.betriebsmittelTable.tabulator.setColumns(this.betriebsmittel_table_options.columns) + // this.$refs.betriebsmittelTable.tabulator.setColumns(this.betriebsmittel_table_options.columns) this.$refs.betriebsmittelTable.tabulator.setData(this.data.mittel); }, zutrittsgruppenTableBuilt: function () { - this.$refs.zutrittsgruppenTable.tabulator.setColumns(this.zutrittsgruppen_table_options.columns) + // this.$refs.zutrittsgruppenTable.tabulator.setColumns(this.zutrittsgruppen_table_options.columns) this.$refs.zutrittsgruppenTable.tabulator.setData( this.data.zuttritsgruppen ); From 331381c94d99e225743420d5bc7b25d5b122e8db Mon Sep 17 00:00:00 2001 From: adisposkofh Date: Thu, 23 Apr 2026 15:05:54 +0200 Subject: [PATCH 2/3] removed obsolete comments --- public/js/components/Cis/Profil/MitarbeiterProfil.js | 2 -- public/js/components/Cis/Profil/StudentProfil.js | 2 -- 2 files changed, 4 deletions(-) diff --git a/public/js/components/Cis/Profil/MitarbeiterProfil.js b/public/js/components/Cis/Profil/MitarbeiterProfil.js index 2c4d19110..655eb4c60 100644 --- a/public/js/components/Cis/Profil/MitarbeiterProfil.js +++ b/public/js/components/Cis/Profil/MitarbeiterProfil.js @@ -176,11 +176,9 @@ export default { methods: { betriebsmittelTableBuilt: function () { - // this.$refs.betriebsmittelTable.tabulator.setColumns(this.betriebsmittel_table_options.columns) this.$refs.betriebsmittelTable.tabulator.setData(this.data.mittel); }, funktionenTableBuilt: function () { - // this.$refs.funktionenTable.tabulator.setColumns(this.funktionen_table_options.columns) this.$refs.funktionenTable.tabulator.setData(this.data.funktionen); }, hideEditProfilModal: function () { diff --git a/public/js/components/Cis/Profil/StudentProfil.js b/public/js/components/Cis/Profil/StudentProfil.js index a3444389e..95d4baef4 100644 --- a/public/js/components/Cis/Profil/StudentProfil.js +++ b/public/js/components/Cis/Profil/StudentProfil.js @@ -117,11 +117,9 @@ export default { methods: { betriebsmittelTableBuilt: function () { - // this.$refs.betriebsmittelTable.tabulator.setColumns(this.betriebsmittel_table_options.columns) this.$refs.betriebsmittelTable.tabulator.setData(this.data.mittel); }, zutrittsgruppenTableBuilt: function () { - // this.$refs.zutrittsgruppenTable.tabulator.setColumns(this.zutrittsgruppen_table_options.columns) this.$refs.zutrittsgruppenTable.tabulator.setData( this.data.zuttritsgruppen ); From 868599a7fec2b00dd5d563b670d3e0151889cfb2 Mon Sep 17 00:00:00 2001 From: adisposkofh Date: Fri, 24 Apr 2026 10:50:32 +0200 Subject: [PATCH 3/3] fixed profile tables headings localization --- .../Cis/Profil/MitarbeiterProfil.js | 36 ++++++++----------- .../Cis/Profil/MitarbeiterViewProfil.js | 11 ++---- .../js/components/Cis/Profil/StudentProfil.js | 20 +++++------ 3 files changed, 25 insertions(+), 42 deletions(-) diff --git a/public/js/components/Cis/Profil/MitarbeiterProfil.js b/public/js/components/Cis/Profil/MitarbeiterProfil.js index 655eb4c60..2aadb6ce8 100644 --- a/public/js/components/Cis/Profil/MitarbeiterProfil.js +++ b/public/js/components/Cis/Profil/MitarbeiterProfil.js @@ -34,7 +34,7 @@ export default { return { showModal: false, editDataFilter: null, - preloadedPhrasen:{}, + arePhrasesPreloaded: false, // tabulator options funktionen_table_options: { persistenceID: "filterTableMaProfilFunktionen", @@ -61,7 +61,7 @@ export default { responsive: 0, }, { - title: Vue.computed(() => this.preloadedPhrasen.bezeichnungPhrase), + title: Vue.computed(() => this.$p.t('ui/bezeichnung')), field: "Bezeichnung", headerFilter: true, minWidth: 200, @@ -69,7 +69,7 @@ export default { responsive: 0, }, { - title: Vue.computed(() => this.preloadedPhrasen.organisationseinheitPhrase), + title: Vue.computed(() => this.$p.t('lehre/organisationseinheit')), field: "Organisationseinheit", headerFilter: true, minWidth: 200, @@ -77,7 +77,7 @@ export default { responsive: 1, }, { - title: Vue.computed(() => this.preloadedPhrasen.gueltigVonPhrase), + title: Vue.computed(() => this.$p.t('global/gueltigVon')), field: "Gültig_von", headerFilterFunc: 'dates', headerFilter: dateFilter, @@ -89,7 +89,7 @@ export default { responsive: 4, }, { - title: Vue.computed(() => this.preloadedPhrasen.gueltigBisPhrase), + title: Vue.computed(() => this.$p.t('global/gueltigBis')), field: "Gültig_bis", headerFilterFunc: 'dates', headerFilter: dateFilter, @@ -101,7 +101,7 @@ export default { responsive: 3, }, { - title: Vue.computed(() => this.preloadedPhrasen.wochenstundenPhrase), + title: Vue.computed(() => this.$p.t('profil/wochenstunden')), field: "Wochenstunden", headerFilter: true, minWidth: 200, @@ -137,7 +137,7 @@ export default { responsive: 0, }, { - title: Vue.computed(() => this.$p.t('ui/bezeichnung')), + title: Vue.computed(() => this.$p.t('profil/entlehnteBetriebsmittel')), field: "betriebsmittel", headerFilter: true, minWidth: 200, @@ -145,7 +145,7 @@ export default { responsive: 0, }, { - title: Vue.computed(() => this.preloadedPhrasen.inventarnummerPhrase), + title: Vue.computed(() => this.$p.t('profil/inventarnummer')), field: "Nummer", headerFilter: true, resizable: true, @@ -154,7 +154,7 @@ export default { responsive: 2, }, { - title: Vue.computed(() => this.preloadedPhrasen.ausgabedatumPhrase), + title: Vue.computed(() => this.$p.t('profil/ausgabedatum')), field: "Ausgegeben_am", headerFilterFunc: 'dates', headerFilter: dateFilter, @@ -229,8 +229,8 @@ export default { }); }, setTableColumnTitles() { // reevaluates computed phrasen - if(this.$refs.betriebsmittelTable) this.$refs.betriebsmittelTable.tabulator.setColumns(this.betriebsmittel_table_options.columns) - if(this.$refs.funktionenTable) this.$refs.funktionenTable.tabulator.setColumns(this.funktionen_table_options.columns) + if(this.$refs.betriebsmittelTable) this.$refs.betriebsmittelTable.tabulator.setColumns(this.betriebsmittel_table_options.columns); + if(this.$refs.funktionenTable) this.$refs.funktionenTable.tabulator.setColumns(this.funktionen_table_options.columns); }, datetimeFormatterParams: function() { const params = { @@ -311,15 +311,7 @@ export default { created() { // preload phrasen this.$p.loadCategory(["ui","lehre","global","profil"]).then(() => { - this.preloadedPhrasen.bezeichnungPhrase = this.$p.t('ui/bezeichnung'); - this.preloadedPhrasen.organisationseinheitPhrase = this.$p.t('lehre/organisationseinheit'); - this.preloadedPhrasen.gueltigVonPhrase = this.$p.t('global/gueltigVon'); - this.preloadedPhrasen.gueltigBisPhrase = this.$p.t('global/gueltigBis'); - this.preloadedPhrasen.wochenstundenPhrase = this.$p.t('profil/wochenstunden'); - this.preloadedPhrasen.entlehnteBetriebsmittelPhrase = this.$p.t('profil/entlehnteBetriebsmittel'); - this.preloadedPhrasen.inventarnummerPhrase = this.$p.t('profil/inventarnummer'); - this.preloadedPhrasen.ausgabedatumPhrase = this.$p.t('profil/ausgabedatum'); - this.preloadedPhrasen.loaded=true; + this.arePhrasesPreloaded = true; }); //? sorts the profil Updates: pending -> accepted -> rejected this.data.profilUpdates?.sort(this.sortProfilUpdates); @@ -450,7 +442,7 @@ export default {
{ - this.preloadedPhrasen.bezeichnungPhrase = this.$p.t('ui/bezeichnung'); - this.preloadedPhrasen.organisationseinheitPhrase = this.$p.t('lehre/organisationseinheit'); - this.preloadedPhrasen.gueltigVonPhrase = this.$p.t('global/gueltigVon'); - this.preloadedPhrasen.gueltigBisPhrase = this.$p.t('global/gueltigBis'); - this.preloadedPhrasen.wochenstundenPhrase = this.$p.t('profil/wochenstunden'); - this.preloadedPhrasen.loaded = true; + this.arePhrasesPreloaded = true; }); }, @@ -247,7 +242,7 @@ export default {
- +
diff --git a/public/js/components/Cis/Profil/StudentProfil.js b/public/js/components/Cis/Profil/StudentProfil.js index 95d4baef4..885cbf2b4 100644 --- a/public/js/components/Cis/Profil/StudentProfil.js +++ b/public/js/components/Cis/Profil/StudentProfil.js @@ -33,7 +33,7 @@ export default { showModal: false, collapseIconBetriebsmittel: true, editDataFilter: null, - preloadedPhrasen:{}, + arePhrasesPreloaded: false, // tabulator options zutrittsgruppen_table_options: { persistenceID: "filterTableStudentProfilZutrittsgruppen", @@ -44,7 +44,7 @@ export default { layout: "fitColumns", columns: [ { - title: Vue.computed(() => this.preloadedPhrasen.zutrittsGruppenPhrase), + title: Vue.computed(() => this.$p.t('profil/zutrittsGruppen')), field: "bezeichnung" } ], @@ -73,7 +73,7 @@ export default { responsive: 0, }, { - title: Vue.computed(()=>this.preloadedPhrasen.entlehnteBetriebsmittelPhrase), + title: Vue.computed(()=>this.$p.t('profil/entlehnteBetriebsmittel')), field: "betriebsmittel", headerFilter: true, minWidth: 200, @@ -81,7 +81,7 @@ export default { responsive: 0, }, { - title: Vue.computed(() =>this.preloadedPhrasen.inventarnummerPhrase) , + title: Vue.computed(() => this.$p.t('profil/inventarnummer')) , field: "Nummer", headerFilter: true, resizable: true, @@ -90,7 +90,7 @@ export default { responsive: 2, }, { - title: Vue.computed(() =>this.preloadedPhrasen.ausgabedatum) , + title: Vue.computed(() => this.$p.t('profil/ausgabedatum')) , field: "Ausgegeben_am", headerFilterFunc: 'dates', headerFilter: dateFilter, @@ -249,11 +249,7 @@ export default { created() { // preload phrasen this.$p.loadCategory('profil').then(() => { - this.preloadedPhrasen.zutrittsGruppenPhrase = this.$p.t('profil/zutrittsGruppen'); - this.preloadedPhrasen.entlehnteBetriebsmittelPhrase = this.$p.t('profil/entlehnteBetriebsmittel'); - this.preloadedPhrasen.inventarnummerPhrase = this.$p.t('profil/inventarnummer'); - this.preloadedPhrasen.ausgabedatum = this.$p.t('profil/ausgabedatum'); - this.preloadedPhrasen.loaded = true; + this.arePhrasesPreloaded = true; }); //? sorts the profil Updates: pending -> accepted -> rejected this.data.profilUpdates?.sort(this.sortProfilUpdates); @@ -384,7 +380,7 @@ export default {