diff --git a/public/js/components/Betriebsmittel/Betriebsmittel.js b/public/js/components/Betriebsmittel/Betriebsmittel.js index 73c413286..686caa1ac 100644 --- a/public/js/components/Betriebsmittel/Betriebsmittel.js +++ b/public/js/components/Betriebsmittel/Betriebsmittel.js @@ -53,7 +53,6 @@ export default { layout: 'fitColumns', layoutColumnsOnNewData: false, height: '550', - persistenceID: 'core-betriebsmittel' } }, computed: { @@ -64,6 +63,7 @@ export default { this.endpoint.getAllBetriebsmittel(this.typeId, this.id, (this.filterByProvidedTypes ? this.betriebsmittelTypes : null)) ), ajaxResponse: (url, params, response) => response.data, + persistenceID: 'core-betriebsmittel', columns: [ {title: "Nummer", field: "nummer", width: 150}, {title: "PersonId", field: "person_id", visible: false}, @@ -171,41 +171,30 @@ export default { await this.$p.loadCategory(['wawi', 'global', 'infocenter', 'betriebsmittel', 'person']); - let cm = this.$refs.table.tabulator.columnManager; + const setHeader = (field, text) => { + const col = this.$refs.table.tabulator.getColumn(field); + if (!col) return; - cm.getColumnByField('nummer').component.updateDefinition({ - title: this.$p.t('wawi', 'nummer') - }); - cm.getColumnByField('betriebsmitteltyp').component.updateDefinition({ - title: this.$p.t('global', 'typ') - }); - cm.getColumnByField('anmerkung').component.updateDefinition({ - title: this.$p.t('global', 'anmerkung') - }); - cm.getColumnByField('retouram').component.updateDefinition({ - title: this.$p.t('wawi', 'retourdatum') - }); - cm.getColumnByField('beschreibung').component.updateDefinition({ - title: this.$p.t('global', 'beschreibung') - }); - cm.getColumnByField('kaution').component.updateDefinition({ - title: this.$p.t('infocenter', 'kaution') - }); - cm.getColumnByField('ausgegebenam').component.updateDefinition({ - title: this.$p.t('wawi', 'ausgabedatum') - }); - cm.getColumnByField('betriebsmittel_id').component.updateDefinition({ - title: this.$p.t('ui', 'betriebsmittel_id') - }); - cm.getColumnByField('betriebsmittelperson_id').component.updateDefinition({ - title: this.$p.t('ui', 'betriebsmittelperson_id') - }); - cm.getColumnByField('person_id').component.updateDefinition({ - title: this.$p.t('person', 'person_id') - }); - cm.getColumnByField('uid').component.updateDefinition({ - title: this.$p.t('person', 'uid') - }); + const el = col.getElement(); + if (!el || !el.querySelector) return; + + const titleEl = el.querySelector('.tabulator-col-title'); + if (titleEl) { + titleEl.textContent = text; + } + }; + + setHeader('nummer', this.$p.t('wawi', 'nummer')); + setHeader('betriebsmitteltyp', this.$p.t('global', 'typ')); + setHeader('anmerkung', this.$p.t('global', 'anmerkung')); + setHeader('retouram', this.$p.t('wawi', 'retourdatum')); + setHeader('beschreibung', this.$p.t('global', 'beschreibung')); + setHeader('kaution', this.$p.t('infocenter', 'kaution')); + setHeader('ausgegebenam', this.$p.t('wawi', 'ausgabedatum')); + setHeader('betriebsmittel_id', this.$p.t('ui', 'betriebsmittel_id')); + setHeader('betriebsmittelperson_id', this.$p.t('ui', 'betriebsmittelperson_id')); + setHeader('person_id', this.$p.t('person', 'person_id')); + setHeader('uid', this.$p.t('person', 'uid')); } } ]; diff --git a/public/js/components/Funktionen/Funktionen.js b/public/js/components/Funktionen/Funktionen.js index 568a74c91..170747e5f 100644 --- a/public/js/components/Funktionen/Funktionen.js +++ b/public/js/components/Funktionen/Funktionen.js @@ -60,8 +60,7 @@ export default { selectedOe: null, layout: 'fitDataFill', layoutColumnsOnNewData: false, - height: '300', - persistenceID: 'core-functions', + height: '300' } }, computed: { @@ -72,20 +71,33 @@ export default { ApiCoreFunktion.getAllUserFunctions(this.personUID) ), ajaxResponse: (url, params, response) => response.data, + persistenceID: 'core-functions', columns: [ { title: "dienstverhaeltnis_unternehmen", field: "dienstverhaeltnis_unternehmen", headerFilter: "list", - headerFilterParams: {valuesLookup: true, autocomplete: true, sort: "asc"}, + headerFilterParams: { + valuesLookup: true, autocomplete: true, sort: "asc" + }, + width: 140, + //Field Company: if visible show link to dv + visible: this.showDvCompany, + formatter: this.companyLinkFormatter }, { title: "funktion_beschreibung", field: "funktion_beschreibung", headerFilter: "list", - headerFilterParams: {valuesLookup: true, autocomplete: true, sort: "asc"}, + headerFilterParams: { + valuesLookup: true, autocomplete: true, sort: "asc" + }, + width: 140 }, { title: "funktion_oebezeichnung", field: "funktion_oebezeichnung", headerFilter: "list", - headerFilterParams: {valuesLookup: true, autocomplete: true, sort: "asc"} + headerFilterParams: { + valuesLookup: true, autocomplete: true, sort: "asc" + }, + width: 140 }, {title: "wochenstunden", field: "wochenstunden", headerFilter: true}, { @@ -120,7 +132,7 @@ export default { }); }, }, - {title: "bezeichnung", field: "bezeichnung", headerFilter: true}, + {title: "bezeichnung", field: "bezeichnung", headerFilter: true, width: 140}, {title: "aktiv", field: "aktiv", visible: false}, {title: "benutzerfunktion_id", field: "benutzerfunktion_id", visible: false}, {title: "uid", field: "uid", visible: false}, @@ -184,47 +196,27 @@ export default { event: 'tableBuilt', handler: async () => { await this.$p.loadCategory(['global', 'lehre', 'person', 'ui']); - let cm = this.$refs.table.tabulator.columnManager; - //Field Company: if visible show link to dv - const column = cm.getColumnByField('dienstverhaeltnis_unternehmen'); - const companyDv = { - title: this.$p.t('person', 'dv_unternehmen'), - width: 140, - visible: this.showDvCompany, - formatter: this.companyLinkFormatter - }; - column.component.updateDefinition(companyDv); + const setHeader = (field, text) => { + const col = this.$refs.table.tabulator.getColumn(field); + if (!col) return; - cm.getColumnByField('funktion_beschreibung').component.updateDefinition({ - title: this.$p.t('person', 'zuordnung_taetigkeit'), - width: 140 - }); - cm.getColumnByField('funktion_oebezeichnung').component.updateDefinition({ - title: this.$p.t('lehre', 'organisationseinheit'), - width: 140 - }); - cm.getColumnByField('wochenstunden').component.updateDefinition({ - title: this.$p.t('person', 'wochenstunden') - }); + const el = col.getElement(); + if (!el || !el.querySelector) return; - const columnDatumVon = cm.getColumnByField('datum_von'); - const fieldVonDatum = { - title: this.$p.t('ui', 'from') + const titleEl = el.querySelector('.tabulator-col-title'); + if (titleEl) { + titleEl.textContent = text; + } }; - columnDatumVon.component.updateDefinition(fieldVonDatum); - - const columnDatumBis = cm.getColumnByField('datum_bis'); - const fieldBisDatum = { - title: this.$p.t('global', 'bis'), - }; - columnDatumBis.component.updateDefinition(fieldBisDatum); - - cm.getColumnByField('bezeichnung').component.updateDefinition({ - title: this.$p.t('ui', 'bezeichnung'), - width: 140 - }); + setHeader('dienstverhaeltnis_unternehmen', this.$p.t('person', 'dv_unternehmen')); + setHeader('funktion_beschreibung', this.$p.t('person', 'zuordnung_taetigkeit')); + setHeader('funktion_oebezeichnung', this.$p.t('lehre', 'organisationseinheit')); + setHeader('wochenstunden', this.$p.t('person', 'wochenstunden')); + setHeader('datum_von', this.$p.t('ui', 'from')); + setHeader('datum_bis', this.$p.t('global', 'bis')); + setHeader('bezeichnung', this.$p.t('ui', 'bezeichnung')); } } ]; diff --git a/public/js/components/Messages/Details/TableMessages.js b/public/js/components/Messages/Details/TableMessages.js index 05484090a..afcdf0d5c 100644 --- a/public/js/components/Messages/Details/TableMessages.js +++ b/public/js/components/Messages/Details/TableMessages.js @@ -28,13 +28,10 @@ export default { previewBody: "", open: false, personId: null, - layout: 'fitDataStretchFrozen', layoutColumnsOnNewData: false, height: '400', - persistenceID: 'core-message-2025112401', selectable: 1, selectableRangeMode: 'click', - index: 'message_id', } }, methods: { @@ -131,6 +128,9 @@ export default { }; }, ajaxResponse: (url, params, response) => this.buildTreemap(response), + layout: 'fitDataStretchFrozen', + index: 'message_id', + persistenceID: 'core-message-2025112401', columns: [ {title: "subject", field: "subject", headerFilter: true}, {title: "body", field: "body", formatter: "html", visible: false, headerFilter: true}, @@ -178,8 +178,12 @@ export default { "archived", "deleted" ], - formatter: (cell, formatterParams) => { +/* formatter: (cell, formatterParams) => { return formatterParams[cell.getValue()]; + },*/ + formatter: (cell, formatterParams) => { + const key = formatterParams[cell.getValue()]; + return this.$p.t('messages', key); }, }, { @@ -291,44 +295,29 @@ export default { handler: async() => { await this.$p.loadCategory(['global', 'person', 'stv', 'messages', 'ui', 'notiz']); + const setHeader = (field, text) => { + const col = this.$refs.table.tabulator.getColumn(field); + if (!col) return; - let cm = this.$refs.table.tabulator.columnManager; + const el = col.getElement(); + if (!el || !el.querySelector) return; + + const titleEl = el.querySelector('.tabulator-col-title'); + if (titleEl) { + titleEl.textContent = text; + } + }; + + setHeader('subject', this.$p.t('global', 'betreff')); + setHeader('body', this.$p.t('messages', 'body')); + setHeader('message_id', this.$p.t('messages', 'message_id')); + setHeader('insertamum', this.$p.t('global', 'datum')); + setHeader('sender', this.$p.t('messages', 'sender')); + setHeader('recipient', this.$p.t('messages', 'recipient')); + setHeader('sender_id', this.$p.t('messages', 'senderId')); + setHeader('recipient_id', this.$p.t('messages', 'recipientId')); + setHeader('statusdatum', this.$p.t('notiz', 'letzte_aenderung')); - cm.getColumnByField('subject').component.updateDefinition({ - title: this.$p.t('global', 'betreff') - }); - cm.getColumnByField('body').component.updateDefinition({ - title: this.$p.t('messages', 'body') - }); - cm.getColumnByField('message_id').component.updateDefinition({ - title: this.$p.t('messages', 'message_id') - }); - cm.getColumnByField('insertamum').component.updateDefinition({ - title: this.$p.t('global', 'datum') - }); - cm.getColumnByField('sender').component.updateDefinition({ - title: this.$p.t('messages', 'sender') - }); - cm.getColumnByField('recipient').component.updateDefinition({ - title: this.$p.t('messages', 'recipient') - }); - cm.getColumnByField('sender_id').component.updateDefinition({ - title: this.$p.t('messages', 'senderId') - }); - cm.getColumnByField('recipient_id').component.updateDefinition({ - title: this.$p.t('messages', 'recipientId') - }); - cm.getColumnByField('statusdatum').component.updateDefinition({ - title: this.$p.t('notiz', 'letzte_aenderung') - }); - cm.getColumnByField('status').component.updateDefinition({ - formatterParams: [ - this.$p.t('messages/unread'), - this.$p.t('messages/read'), - this.$p.t('messages/archived'), - this.$p.t('messages/deleted') - ] - }); this.$refs.table.tabulator.rowManager.getDisplayRows(); } }, diff --git a/public/js/components/Notiz/Notiz.js b/public/js/components/Notiz/Notiz.js index 0119b0a77..33865f981 100644 --- a/public/js/components/Notiz/Notiz.js +++ b/public/js/components/Notiz/Notiz.js @@ -227,7 +227,7 @@ export default { index: 'notiz_id', persistenceID: this.tabulatorPersistenceId, persistence: { - sort: false, + sort: true, columns: ["width", "visible", "frozen"], filter: false, headerFilter: false, @@ -242,62 +242,39 @@ export default { event: 'tableBuilt', handler: async () => { + //to avoid js error + if (!this.$refs.table) return; + await this.$p.loadCategory(['notiz', 'global', 'ui']); - let cm = this.$refs.table.tabulator.columnManager; + const setHeader = (field, text) => { + const col = this.$refs.table.tabulator.getColumn(field); + if (!col) return; - cm.getColumnByField('verfasser').component.updateDefinition({ - title: this.$p.t('notiz', 'verfasser'), - }); - cm.getColumnByField('verfasser_uid').component.updateDefinition({ - title: this.$p.t('ui', 'verfasser_uid'), - }); - cm.getColumnByField('titel').component.updateDefinition({ - title: this.$p.t('global', 'titel'), - }); - cm.getColumnByField('bearbeiter').component.updateDefinition({ - title: this.$p.t('notiz', 'bearbeiter'), - }); - cm.getColumnByField('bearbeiter_uid').component.updateDefinition({ - title: this.$p.t('ui', 'bearbeiter_uid'), - }); - cm.getColumnByField('start_format').component.updateDefinition({ - title: this.$p.t('global', 'gueltigVon'), - }); - cm.getColumnByField('ende_format').component.updateDefinition({ - title: this.$p.t('global', 'gueltigBis'), - }); - cm.getColumnByField('countdoc').component.updateDefinition({ - title: this.$p.t('notiz', 'document'), - }); - cm.getColumnByField('erledigt').component.updateDefinition({ - title: this.$p.t('notiz', 'erledigt'), - }); - cm.getColumnByField('lastupdate').component.updateDefinition({ - title: this.$p.t('notiz', 'letzte_aenderung'), - }); - cm.getColumnByField('notiz_id').component.updateDefinition({ - title: this.$p.t('ui', 'notiz_id') - }); - cm.getColumnByField('notizzuordnung_id').component.updateDefinition({ - title: this.$p.t('ui', 'notizzuordnung_id') - }); - cm.getColumnByField('type_id').component.updateDefinition({ - title: this.$p.t('ui', 'type_id') - }); - cm.getColumnByField('id').component.updateDefinition({ - title: this.$p.t('ui', 'extension_id') - }); - cm.getColumnByField('actions').component.updateDefinition({ - title: this.$p.t('global', 'aktionen') - }); + const el = col.getElement(); + if (!el || !el.querySelector) return; - cm.getColumnByField('text_stripped').component.updateDefinition({ - title: this.$p.t('global', 'text'), - width: 250, - tooltip: true, - //clipContents: true, - }); + const titleEl = el.querySelector('.tabulator-col-title'); + if (titleEl) { + titleEl.textContent = text; + } + }; + + setHeader('verfasser', this.$p.t('notiz', 'verfasser')); + setHeader('verfasser_uid', this.$p.t('ui', 'verfasser_uid')); + setHeader('titel', this.$p.t('global', 'titel')); + setHeader('bearbeiter', this.$p.t('notiz', 'bearbeiter')); + setHeader('bearbeiter_uid', this.$p.t('ui', 'bearbeiter_uid')); + setHeader('start_format', this.$p.t('global', 'gueltigVon')); + setHeader('ende_format', this.$p.t('global', 'gueltigBis')); + setHeader('countdoc', this.$p.t('notiz', 'document')); + setHeader('erledigt', this.$p.t('notiz', 'erledigt')); + setHeader('lastupdate', this.$p.t('notiz', 'letzte_aenderung')); + setHeader('notiz_id', this.$p.t('ui', 'notiz_id')); + setHeader('notizzuordnung_id', this.$p.t('ui', 'notizzuordnung_id')); + setHeader('type_id', this.$p.t('ui', 'type_id')); + setHeader('id', this.$p.t('ui', 'extension_id')); + setHeader('text_stripped', this.$p.t('global', 'text')); // Force layout recalculation for handling overflow text this.$refs.table.tabulator.redraw(true); diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js b/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js index 394c8784f..7724c5fed 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Abschlusspruefung/Abschlusspruefung.js @@ -79,8 +79,6 @@ export default { layoutColumnsOnNewData: false, height: 'auto', minHeight: '200', - index: 'abschlusspruefung_id', - persistenceID: 'stv-details-finalexam-2025112401' } }, computed: { @@ -89,6 +87,8 @@ export default { ajaxURL: 'dummy', ajaxRequestFunc: () => this.$api.call(ApiStvAbschlusspruefung.getAbschlusspruefung(this.student.uid)), ajaxResponse: (url, params, response) => response.data, + index: 'abschlusspruefung_id', + persistenceID: 'stv-details-finalexam-2025112401', columns: [ {title: "vorsitz", field: "vorsitz_nachname"}, {title: "abschlussbeurteilung", field: "beurteilung_bezeichnung"}, @@ -196,50 +196,36 @@ export default { { event: 'tableBuilt', handler: async() => { + if (!this.$refs.table) return; + await this.$p.loadCategory(['global', 'person', 'stv', 'abschlusspruefung', 'ui']); + const setHeader = (field, text) => { + const col = this.$refs.table.tabulator.getColumn(field); + if (!col) return; - let cm = this.$refs.table.tabulator.columnManager; + const el = col.getElement(); + if (!el || !el.querySelector) return; - cm.getColumnByField('vorsitz_nachname').component.updateDefinition({ - title: this.$p.t('abschlusspruefung', 'vorsitz_header') - }); - cm.getColumnByField('beurteilung_bezeichnung').component.updateDefinition({ - title: this.$p.t('abschlusspruefung', 'abschlussbeurteilung') - }); - cm.getColumnByField('p1_nachname').component.updateDefinition({ - title: this.$p.t('abschlusspruefung', 'pruefer1') - }); - cm.getColumnByField('p2_nachname').component.updateDefinition({ - title: this.$p.t('abschlusspruefung', 'pruefer2') - }); - cm.getColumnByField('p3_nachname').component.updateDefinition({ - title: this.$p.t('abschlusspruefung', 'pruefer3') - }); - cm.getColumnByField('datum').component.updateDefinition({ - title: this.$p.t('global', 'datum') - }); - cm.getColumnByField('uhrzeit').component.updateDefinition({ - title: this.$p.t('global', 'uhrzeit') - }); - cm.getColumnByField('freigabedatum').component.updateDefinition({ - title: this.$p.t('abschlusspruefung', 'freigabe') - }); - cm.getColumnByField('antritt_bezeichnung').component.updateDefinition({ - title: this.$p.t('abschlusspruefung', 'pruefungsantritt') - }); - cm.getColumnByField('sponsion').component.updateDefinition({ - title: this.$p.t('abschlusspruefung', 'sponsion') - }); - cm.getColumnByField('anmerkung').component.updateDefinition({ - title: this.$p.t('global', 'anmerkung') - }); - cm.getColumnByField('pruefungstyp_kurzbz').component.updateDefinition({ - title: this.$p.t('global', 'typ') - }); - cm.getColumnByField('abschlusspruefung_id').component.updateDefinition({ - title: this.$p.t('abschlusspruefung', 'abschlusspruefung_id') - }); + const titleEl = el.querySelector('.tabulator-col-title'); + if (titleEl) { + titleEl.textContent = text; + } + }; + + setHeader('vorsitz_nachname', this.$p.t('abschlusspruefung', 'vorsitz_header')); + setHeader('beurteilung_bezeichnung', this.$p.t('abschlusspruefung', 'abschlussbeurteilung')); + setHeader('p1_nachname', this.$p.t('abschlusspruefung', 'pruefer1')); + setHeader('p2_nachname', this.$p.t('abschlusspruefung', 'pruefer2')); + setHeader('p3_nachname', this.$p.t('abschlusspruefung', 'pruefer3')); + setHeader('datum', this.$p.t('global', 'datum')); + setHeader('uhrzeit', this.$p.t('global', 'uhrzeit')); + setHeader('freigabedatum', this.$p.t('abschlusspruefung', 'freigabe')); + setHeader('antritt_bezeichnung', this.$p.t('abschlusspruefung', 'pruefungsantritt')); + setHeader('sponsion', this.$p.t('abschlusspruefung', 'sponsion')); + setHeader('anmerkung', this.$p.t('global', 'anmerkung')); + setHeader('pruefungstyp_kurzbz', this.$p.t('global', 'typ')); + setHeader('abschlusspruefung_id', this.$p.t('abschlusspruefung', 'abschlusspruefung_id')); } } ]; diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Anrechnungen/Anrechnungen.js b/public/js/components/Stv/Studentenverwaltung/Details/Anrechnungen/Anrechnungen.js index 32224062d..88392337b 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Anrechnungen/Anrechnungen.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Anrechnungen/Anrechnungen.js @@ -40,10 +40,6 @@ export default { showNotizen: false, currentAnrechnung_id: null, endpoint: ApiNotizPerson, - layout: 'fitDataStretchFrozen', - height: '500', - index: 'anrechnung_id', - persistenceID: 'stv-details-anrechnungen-2025112401' } }, computed: { @@ -54,6 +50,10 @@ export default { ApiStvExemptions.getAnrechnungen(this.student.prestudent_id) ), ajaxResponse: (url, params, response) => response.data, + layout: 'fitDataStretchFrozen', + height: '500', + index: 'anrechnung_id', + persistenceID: 'stv-details-anrechnungen-2025112401', columns: [ {title: "anrechnung_id", field: "anrechnung_id", visible: false}, {title: "lehrveranstaltung_id", field: "lehrveranstaltung_id", visible: false}, @@ -135,39 +135,28 @@ export default { await this.$p.loadCategory(['anrechnungen', 'global', 'ui', 'lehre']); - let cm = this.$refs.table.tabulator.columnManager; + const setHeader = (field, text) => { + const col = this.$refs.table.tabulator.getColumn(field); + if (!col) return; - cm.getColumnByField('anrechnung_id').component.updateDefinition({ - title: this.$p.t('ui', 'anrechnung_id'), - }); - cm.getColumnByField('lehrveranstaltung_id').component.updateDefinition({ - title: this.$p.t('lehre', 'lehrveranstaltung_id'), - }); - cm.getColumnByField('bez_lehrveranstaltung').component.updateDefinition({ - title: this.$p.t('lehre', 'lehrveranstaltung'), - }); - cm.getColumnByField('begruendung').component.updateDefinition({ - title: this.$p.t('global', 'begruendung'), - }); - cm.getColumnByField('lehrveranstaltung_id_kompatibel').component.updateDefinition({ - title: this.$p.t('anrechnung', 'lehrveranstaltung_id_kompatibel'), - }); - cm.getColumnByField('lehrveranstaltung_bez_kompatibel').component.updateDefinition({ - title: this.$p.t('anrechnung', 'lehrveranstaltung_bez_kompatibel'), - }); - cm.getColumnByField('status').component.updateDefinition({ - title: this.$p.t('global', 'status'), - }); - cm.getColumnByField('genehmigt_von').component.updateDefinition({ - title: this.$p.t('anrechnung', 'genehmigtVon'), - }); - cm.getColumnByField('notizen_anzahl').component.updateDefinition({ - title: this.$p.t('anrechnung', 'existingNotes'), - }); - cm.getColumnByField('insertamum').component.updateDefinition({ - title: this.$p.t('global', 'datum'), - }); + const el = col.getElement(); + if (!el || !el.querySelector) return; + const titleEl = el.querySelector('.tabulator-col-title'); + if (titleEl) { + titleEl.textContent = text; + } + }; + setHeader( 'anrechnung_id', this.$p.t('ui', 'anrechnung_id')); + setHeader( 'lehrveranstaltung_id', this.$p.t('lehre', 'lehrveranstaltung_id')); + setHeader( 'bez_lehrveranstaltung', this.$p.t('lehre', 'lehrveranstaltung')); + setHeader( 'begruendung', this.$p.t('global', 'begruendung')); + setHeader( 'lehrveranstaltung_id_kompatibel', this.$p.t('anrechnung', 'lehrveranstaltung_id_kompatibel')); + setHeader( 'lehrveranstaltung_bez_kompatibel', this.$p.t('anrechnung', 'lehrveranstaltung_bez_kompatibel')); + setHeader( 'status', this.$p.t('global', 'status')); + setHeader( 'genehmigt_von', this.$p.t('anrechnung', 'genehmigtVon')); + setHeader( 'notizen_anzahl', this.$p.t('anrechnung', 'existingNotes')); + setHeader( 'insertamum', this.$p.t('global', 'datum')); } } ]; diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Aufnahmetermine/Aufnahmetermine.js b/public/js/components/Stv/Studentenverwaltung/Details/Aufnahmetermine/Aufnahmetermine.js index 81b55983f..48a7e3d4f 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Aufnahmetermine/Aufnahmetermine.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Aufnahmetermine/Aufnahmetermine.js @@ -52,9 +52,7 @@ export default { layout: 'fitDataStretchFrozen', layoutColumnsOnNewData: false, height: 'auto', - minHeight: 200, - index: 'aufnahmetermin_id', - persistenceID: 'stv-details-table_admission-dates-2025112401' + minHeight: 200 } }, methods: { @@ -250,6 +248,8 @@ export default { dataLoaded: function() { this.redraw(true); }, + index: 'aufnahmetermin_id', + persistenceID: 'stv-details-table_admission-dates-2025112401', columns: [ {title: "rt_id", field: "rt_id", visible: false}, {title: "rt_person_id", field: "rt_person_id", visible: false}, @@ -338,53 +338,34 @@ export default { event: 'tableBuilt', handler: async () => { await this.$p.loadCategory(['admission', 'global', 'person', 'ui', 'projektarbeitsbeurteilung']); - let cm = this.$refs.table.tabulator.columnManager; + const setHeader = (field, text) => { + const col = this.$refs.table.tabulator.getColumn(field); + if (!col) return; - cm.getColumnByField('rt_id').component.updateDefinition({ - title: this.$p.t('ui', 'reihungstest_id') - }); - cm.getColumnByField('rt_person_id').component.updateDefinition({ - title: this.$p.t('ui', 'reihungstest_person_id') - }); - cm.getColumnByField('person_id').component.updateDefinition({ - title: this.$p.t('person', 'person_id') - }); - cm.getColumnByField('datum').component.updateDefinition({ - title: this.$p.t('global', 'datum') - }); - cm.getColumnByField('stufe').component.updateDefinition({ - title: this.$p.t('admission', 'stufe') - }); - cm.getColumnByField('studiensemester').component.updateDefinition({ - title: this.$p.t('lehre', 'studiensemester') - }); - cm.getColumnByField('anmerkung').component.updateDefinition({ - title: this.$p.t('global', 'anmerkung') - }); - cm.getColumnByField('anmeldedatum').component.updateDefinition({ - title: this.$p.t('admission', 'anmeldedatum') - }); - cm.getColumnByField('punkte').component.updateDefinition({ - title: this.$p.t('exam', 'punkte') - }); - cm.getColumnByField('teilgenommen').component.updateDefinition({ - title: this.$p.t('admission', 'teilgenommen') - }); - cm.getColumnByField('ort').component.updateDefinition({ - title: this.$p.t('person', 'ort') - }); - cm.getColumnByField('studienplan').component.updateDefinition({ - title: this.$p.t('lehre', 'studienplan') - }); - cm.getColumnByField('studienplan_id').component.updateDefinition({ - title: this.$p.t('ui', 'studienplan_id') - }); - cm.getColumnByField('studiengangkurzbzlang_ber').component.updateDefinition({ - title: this.$p.t('projektarbeitsbeurteilung', 'studiengang') - }); - cm.getColumnByField('studiengang_kz_ber').component.updateDefinition({ - title: this.$p.t('admission', 'stg_kurz') - }); + const el = col.getElement(); + if (!el || !el.querySelector) return; + + const titleEl = el.querySelector('.tabulator-col-title'); + if (titleEl) { + titleEl.textContent = text; + } + }; + + setHeader('rt_id', this.$p.t('ui', 'reihungstest_id')); + setHeader('rt_person_id', this.$p.t('ui', 'reihungstest_person_id')); + setHeader('person_id', this.$p.t('person', 'person_id')); + setHeader('datum', this.$p.t('global', 'datum')); + setHeader('stufe', this.$p.t('admission', 'stufe')); + setHeader('studiensemester', this.$p.t('lehre', 'studiensemester')); + setHeader('anmerkung', this.$p.t('global', 'anmerkung')); + setHeader('anmeldedatum', this.$p.t('admission', 'anmeldedatum')); + setHeader('punkte', this.$p.t('exam', 'punkte')); + setHeader('teilgenommen', this.$p.t('admission', 'teilgenommen')); + setHeader('ort', this.$p.t('person', 'ort')); + setHeader('studienplan', this.$p.t('lehre', 'studienplan')); + setHeader('studienplan_id', this.$p.t('ui', 'studienplan_id')); + setHeader('studiengangkurzbzlang_ber', this.$p.t('projektarbeitsbeurteilung', 'studiengang')); + setHeader('studiengang_kz_ber', this.$p.t('admission', 'stg_kurz')); } } ]; diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Accepted.js b/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Accepted.js index 46029a5d3..f70e44392 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Accepted.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Dokumente/List/Accepted.js @@ -18,12 +18,9 @@ export default { data(){ return { listDocuments: [], - layout: 'fitDataStretchFrozen', layoutColumnsOnNewData: false, height: 300, selectable: true, - selectableRangeMode: 'click', - persistenceID: 'core-details-documents-accepted-2025072101', } }, computed: { @@ -38,7 +35,12 @@ export default { ajaxResponse: (url, params, response) => { return response.data; }, + layout: 'fitDataStretchFrozen', + index: 'akte_id', + selectableRangeMode: 'click', + persistenceID: 'stv-details-accepted-2026020401', columns: [ + {title: "akte_id", field: "akte_id", visible: false}, {title: "Dokument", field: "bezeichnung"}, {title: "Akzeptiertdatum", field: "docdatum", formatter: function (cell) { @@ -78,7 +80,6 @@ export default { crossElement: '' }}, {title: "Infotext", field: "infotext"}, - {title: "akte_id", field: "akte_id"}, {title: "dms_id", field: "dms_id", visible: false}, {title: "titel", field: "titel_intern", visible: false}, {title: "vorhanden", field: "vorhanden", @@ -167,44 +168,30 @@ export default { handler: async () => { await this.$p.loadCategory(['global', 'dokumente', 'ui', 'mobility', 'ampeln']); - let cm = this.$refs.table.tabulator.columnManager; + const setHeader = (field, text) => { + const col = this.$refs.table.tabulator.getColumn(field); + if (!col) return; - cm.getColumnByField('bezeichnung').component.updateDefinition({ - title: this.$p.t('global', 'dokument') - }); - cm.getColumnByField('docdatum').component.updateDefinition({ - title: this.$p.t('dokumente', 'datumAkzeptiert') - }); - cm.getColumnByField('dokument_kurzbz').component.updateDefinition({ - title: this.$p.t('mobility', 'kurzbz') - }); - cm.getColumnByField('insertvonma').component.updateDefinition({ - title: this.$p.t('dokumente', 'akzeptiertVon') - }); - cm.getColumnByField('hochgeladenamum').component.updateDefinition({ - title: this.$p.t('global', 'uploaddatum') - }); - cm.getColumnByField('nachgereicht').component.updateDefinition({ - title: this.$p.t('dokumente', 'nachgereicht') - }); - cm.getColumnByField('vorhanden').component.updateDefinition({ - title: this.$p.t('dokumente', 'vorhanden') - }); - cm.getColumnByField('dms_id').component.updateDefinition({ - title: this.$p.t('global', 'dms_id') - }); - cm.getColumnByField('titel_intern').component.updateDefinition({ - title: this.$p.t('global', 'titel') - }); - cm.getColumnByField('anmerkung_intern').component.updateDefinition({ - title: this.$p.t('global', 'anmerkung') - }); - cm.getColumnByField('akte_id').component.updateDefinition({ - title: this.$p.t('global', 'akte_id') - }); - cm.getColumnByField('nachgereicht_am').component.updateDefinition({ - title: this.$p.t('dokumente', 'nachreichungAm') - }); + const el = col.getElement(); + if (!el || !el.querySelector) return; + + const titleEl = el.querySelector('.tabulator-col-title'); + if (titleEl) { + titleEl.textContent = text; + } + }; + setHeader('bezeichnung', this.$p.t('global', 'dokument')); + setHeader('docdatum', this.$p.t('dokumente', 'datumAkzeptiert')); + setHeader('dokument_kurzbz', this.$p.t('mobility', 'kurzbz')); + setHeader('insertvonma', this.$p.t('dokumente', 'akzeptiertVon')); + setHeader('hochgeladenamum', this.$p.t('global', 'uploaddatum')); + setHeader('nachgereicht', this.$p.t('dokumente', 'nachgereicht')); + setHeader('vorhanden', this.$p.t('dokumente', 'vorhanden')); + setHeader('dms_id', this.$p.t('global', 'dms_id')); + setHeader('titel_intern', this.$p.t('global', 'titel')); + setHeader('anmerkung_intern', this.$p.t('global', 'anmerkung')); + setHeader('akte_id', this.$p.t('global', 'akte_id')); + setHeader('nachgereicht_am', this.$p.t('dokumente', 'nachreichungAm')); } }, { @@ -322,7 +309,7 @@ export default { } }, template: ` -
+
{{$p.t('dokumente', 'accepted')}}
response.data, + persistenceID: 'stv-details-unaccepted-2026020401', + layout: 'fitDataStretchFrozen', columns: [ {title: "Dokument", field: "bezeichnung"}, {title: "Kurzbz", field: "dokument_kurzbz", visible: false}, @@ -184,38 +184,29 @@ export default { handler: async () => { await this.$p.loadCategory(['global', 'dokumente', 'ui', 'mobility', 'ampeln']); - let cm = this.$refs.table.tabulator.columnManager; + const setHeader = (field, text) => { + const col = this.$refs.table.tabulator.getColumn(field); + if (!col) return; - cm.getColumnByField('bezeichnung').component.updateDefinition({ - title: this.$p.t('global', 'dokument') - }); - cm.getColumnByField('dokument_kurzbz').component.updateDefinition({ - title: this.$p.t('mobility', 'kurzbz') - }); - cm.getColumnByField('hochgeladenamum').component.updateDefinition({ - title: this.$p.t('global', 'uploaddatum') - }); - cm.getColumnByField('nachgereicht').component.updateDefinition({ - title: this.$p.t('dokumente', 'nachgereicht') - }); - cm.getColumnByField('vorhanden').component.updateDefinition({ - title: this.$p.t('dokumente', 'vorhanden') - }); - cm.getColumnByField('titel_intern').component.updateDefinition({ - title: this.$p.t('global', 'titel') - }); - cm.getColumnByField('anmerkung_intern').component.updateDefinition({ - title: this.$p.t('global', 'anmerkung') - }); - cm.getColumnByField('akte_id').component.updateDefinition({ - title: this.$p.t('global', 'akte_id') - }); - cm.getColumnByField('pflicht').component.updateDefinition({ - title: this.$p.t('ampeln', 'mandatory') - }); - cm.getColumnByField('nachgereicht_am').component.updateDefinition({ - title: this.$p.t('global', 'dokument') - }); + const el = col.getElement(); + if (!el || !el.querySelector) return; + + const titleEl = el.querySelector('.tabulator-col-title'); + if (titleEl) { + titleEl.textContent = text; + } + }; + + setHeader('bezeichnung', this.$p.t('global', 'dokument')); + setHeader('dokument_kurzbz', this.$p.t('mobility', 'kurzbz')); + setHeader('hochgeladenamum', this.$p.t('global', 'uploaddatum')); + setHeader('nachgereicht', this.$p.t('dokumente', 'nachgereicht')); + setHeader('vorhanden', this.$p.t('dokumente', 'vorhanden')); + setHeader('titel_intern', this.$p.t('global', 'titel')); + setHeader('anmerkung_intern', this.$p.t('global', 'anmerkung')); + setHeader('akte_id', this.$p.t('global', 'akte_id')); + setHeader('pflicht', this.$p.t('ampeln', 'mandatory')); + setHeader('nachgereicht_am', this.$p.t('global', 'dokument')); } }, { diff --git a/public/js/components/Stv/Studentenverwaltung/Details/JointStudies/JointStudies.js b/public/js/components/Stv/Studentenverwaltung/Details/JointStudies/JointStudies.js index d8cd0aacd..4f25392aa 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/JointStudies/JointStudies.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/JointStudies/JointStudies.js @@ -24,12 +24,30 @@ export default { }, data(){ return { - tabulatorOptions: { + formData: { + mobilitaetstyp_kurzbz: "GS", + studiensemester_kurzbz: this.currentSemester, + status_kurzbz: 'Student', + mobilitaet_id: null + }, + statusNew: true, + listTypenMobility: [], + listStudiensemester: [], + programsMobility: [], + listStudienprogramme: [], + listPartner: [], + statiPrestudent: [], + } + }, + computed: { + tabulatorOptions() { + const options = { ajaxURL: 'dummy', ajaxRequestFunc: () => this.$api.call( ApiStvJointstudies.getStudies(this.student.prestudent_id) ), ajaxResponse: (url, params, response) => response.data, + persistenceID: 'stv-details-jointstudies', columns: [ {title: "mobilitaet_id", field: "mobilitaet_id", visible: false}, {title: "StSem", field: "studiensemester_kurzbz"}, @@ -120,70 +138,43 @@ export default { frozen: true }, ], - }, - tabulatorEvents: [ + }; + return options; + }, + tabulatorEvents() { + const events = [ { event: 'tableBuilt', handler: async() => { await this.$p.loadCategory(['global', 'jointstudies', 'ui', 'lehre', 'mobility']); + const setHeader = (field, text) => { + const col = this.$refs.table.tabulator.getColumn(field); + if (!col) return; - let cm = this.$refs.table.tabulator.columnManager; + const el = col.getElement(); + if (!el || !el.querySelector) return; - cm.getColumnByField('mobilitaet_id').component.updateDefinition({ - title: this.$p.t('global', 'mobilitaet_id') - }); -/* cm.getColumnByField('studiensemester_kurzbz').component.updateDefinition({ - title: this.$p.t('lehre', 'studiensemester') - });*/ - cm.getColumnByField('gsprogrammtyp_kurzbz').component.updateDefinition({ - title: this.$p.t('global', 'typ') - }); -/* cm.getColumnByField('ausbildungssemester').component.updateDefinition({ - title: this.$p.t('lehre', 'semester') - });*/ - cm.getColumnByField('prestudent_id').component.updateDefinition({ - title: this.$p.t('global', 'prestudentID') - }); - cm.getColumnByField('kurzbz').component.updateDefinition({ - title: this.$p.t('mobility', 'mobilitaetsprogramm') - }); - cm.getColumnByField('studienprogramm').component.updateDefinition({ - title: this.$p.t('jointstudies', 'studienprogramm') - }); - cm.getColumnByField('insertamum').component.updateDefinition({ - title: this.$p.t('global', 'insertamum') - }); - cm.getColumnByField('insertvon').component.updateDefinition({ - title: this.$p.t('global', 'insertvon') - }); - cm.getColumnByField('updateamum').component.updateDefinition({ - title: this.$p.t('global', 'updateamum') - }); - cm.getColumnByField('updatevon').component.updateDefinition({ - title: this.$p.t('global', 'updatevon') - }); + const titleEl = el.querySelector('.tabulator-col-title'); + if (titleEl) { + titleEl.textContent = text; + } + }; -/* cm.getColumnByField('actions').component.updateDefinition({ - title: this.$p.t('global', 'aktionen') - });*/ + setHeader('mobilitaet_id', this.$p.t('global', 'mobilitaet_id')); + setHeader('gsprogrammtyp_kurzbz', this.$p.t('global', 'typ')); + setHeader('prestudent_id', this.$p.t('global', 'prestudentID')); + setHeader('kurzbz', this.$p.t('mobility', 'mobilitaetsprogramm')); + setHeader('studienprogramm', this.$p.t('jointstudies', 'studienprogramm')); + setHeader('insertamum', this.$p.t('global', 'insertamum')); + setHeader('insertvon', this.$p.t('global', 'insertvon')); + setHeader('updateamum', this.$p.t('global', 'updateamum')); + setHeader('updatevon', this.$p.t('global', 'updatevon')); } } - ], - formData: { - mobilitaetstyp_kurzbz: "GS", - studiensemester_kurzbz: this.currentSemester, - status_kurzbz: 'Student', - mobilitaet_id: null - }, - statusNew: true, - listTypenMobility: [], - listStudiensemester: [], - programsMobility: [], - listStudienprogramme: [], - listPartner: [], - statiPrestudent: [], - } + ]; + return events; + }, }, methods: { actionDeleteJointStudy(mobilitaet_id) { diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Address.js b/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Address.js index 41ac0bfe2..73c818317 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Address.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Address.js @@ -45,8 +45,6 @@ export default{ suggestions: null, places: null }, - index: 'adresse_id', - persistenceID: 'stv-details-kontakt-address' } }, computed:{ @@ -56,6 +54,8 @@ export default{ ajaxRequestFunc: () => this.$api.call(ApiStvAddress.get(this.uid)), ajaxResponse: (url, params, response) => response.data, //autoColumns: true, + index: 'adresse_id', + persistenceID: 'stv-details-kontakt-address', columns:[ {title:"Typ", field:"bezeichnung"}, {title:"Strasse", field:"strasse"}, @@ -158,61 +158,39 @@ export default{ const events = [ { event: 'tableBuilt', - handler: async () => { + handler: async() => { await this.$p.loadCategory(['notiz', 'global', 'person', 'ui']); - let cm = this.$refs.table.tabulator.columnManager; - cm.getColumnByField('bezeichnung').component.updateDefinition({ - title: this.$p.t('global', 'typ') - }); - cm.getColumnByField('strasse').component.updateDefinition({ - title: this.$p.t('person', 'strasse') - }); - cm.getColumnByField('plz').component.updateDefinition({ - title: this.$p.t('person', 'plz') - }); - cm.getColumnByField('ort').component.updateDefinition({ - title: this.$p.t('person', 'ort') - }); - cm.getColumnByField('gemeinde').component.updateDefinition({ - title: this.$p.t('person', 'gemeinde') - }); - cm.getColumnByField('nation').component.updateDefinition({ - title: this.$p.t('person', 'nation') - }); - cm.getColumnByField('heimatadresse').component.updateDefinition({ - title: this.$p.t('person', 'heimatadresse') - }); - cm.getColumnByField('zustelladresse').component.updateDefinition({ - title: this.$p.t('person', 'zustelladresse') - }); - cm.getColumnByField('co_name').component.updateDefinition({ - title: this.$p.t('person', 'co_name') - }); - cm.getColumnByField('name').component.updateDefinition({ - title: this.$p.t('person', 'firma_zusatz') - }); - cm.getColumnByField('firmenname').component.updateDefinition({ - title: this.$p.t('person', 'firma') - }); - cm.getColumnByField('lastupdate').component.updateDefinition({ - title: this.$p.t('notiz', 'letzte_aenderung') - }); - cm.getColumnByField('rechnungsadresse').component.updateDefinition({ - title: this.$p.t('person', 'rechnungsadresse') - }); - cm.getColumnByField('anmerkung').component.updateDefinition({ - title: this.$p.t('global', 'anmerkung') - }); - cm.getColumnByField('firma_id').component.updateDefinition({ - title: this.$p.t('ui', 'firma_id') - }); - cm.getColumnByField('adresse_id').component.updateDefinition({ - title: this.$p.t('ui', 'adresse_id') - }); - cm.getColumnByField('person_id').component.updateDefinition({ - title: this.$p.t('person', 'person_id') - }); + const setHeader = (field, text) => { + const col = this.$refs.table.tabulator.getColumn(field); + if (!col) return; + + const el = col.getElement(); + if (!el || !el.querySelector) return; + + const titleEl = el.querySelector('.tabulator-col-title'); + if (titleEl) { + titleEl.textContent = text; + } + }; + + setHeader('bezeichnung', this.$p.t('global', 'typ')); + setHeader('strasse', this.$p.t('person', 'strasse')); + setHeader('plz', this.$p.t('person', 'plz')); + setHeader('ort', this.$p.t('person', 'ort')); + setHeader('gemeinde', this.$p.t('person', 'gemeinde')); + setHeader('nation', this.$p.t('person', 'nation')); + setHeader('heimatadresse', this.$p.t('person', 'heimatadresse')); + setHeader('zustelladresse', this.$p.t('person', 'zustelladresse')); + setHeader('co_name', this.$p.t('person', 'co_name')); + setHeader('name', this.$p.t('person', 'firma_zusatz')); + setHeader('firmenname', this.$p.t('person', 'firma')); + setHeader('lastupdate', this.$p.t('notiz', 'letzte_aenderung')); + setHeader('rechnungsadresse', this.$p.t('person', 'rechnungsadresse')); + setHeader('anmerkung', this.$p.t('global', 'anmerkung')); + setHeader('firma_id', this.$p.t('ui', 'firma_id')); + setHeader('adresse_id', this.$p.t('ui', 'adresse_id')); + setHeader('person_id', this.$p.t('person', 'person_id')); } } ]; diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Bankaccount.js b/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Bankaccount.js index b4752e0c3..47bddb02f 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Bankaccount.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Bankaccount.js @@ -24,8 +24,6 @@ export default{ typ: 'p' }, statusNew: true, - index: 'bankverbindung_id', - persistenceID: 'stv-details-kontakt-bankaccount' } }, computed: { @@ -34,6 +32,8 @@ export default{ ajaxURL: 'dummy', ajaxRequestFunc: () => this.$api.call(ApiStvBankaccount.get(this.uid)), ajaxResponse: (url, params, response) => response.data, + index: 'bankverbindung_id', + persistenceID: 'stv-details-kontakt-bankaccount', columns:[ {title:"Name", field:"name"}, {title:"Anschrift", field:"anschrift", visible:false}, @@ -109,33 +109,25 @@ export default{ handler: async() => { await this.$p.loadCategory(['global','person']); - let cm = this.$refs.table.tabulator.columnManager; + const setHeader = (field, text) => { + const col = this.$refs.table.tabulator.getColumn(field); + if (!col) return; - cm.getColumnByField('name').component.updateDefinition({ - title: this.$p.t('global', 'name') - }); + const el = col.getElement(); + if (!el || !el.querySelector) return; - cm.getColumnByField('typ').component.updateDefinition({ - title: this.$p.t('global', 'typ') - }); - cm.getColumnByField('anschrift').component.updateDefinition({ - title: this.$p.t('person', 'anschrift') - }); - cm.getColumnByField('kontonr').component.updateDefinition({ - title: this.$p.t('person', 'kontonr') - }); - cm.getColumnByField('blz').component.updateDefinition({ - title: this.$p.t('person', 'blz') - }); - cm.getColumnByField('verrechnung').component.updateDefinition({ - title: this.$p.t('person', 'verrechnung') - }); - cm.getColumnByField('person_id').component.updateDefinition({ - title: this.$p.t('person', 'person_id') - }); - cm.getColumnByField('bankverbindung_id').component.updateDefinition({ - title: this.$p.t('ui', 'bankverbindung_id') - }); + const titleEl = el.querySelector('.tabulator-col-title'); + if (titleEl) { + titleEl.textContent = text; + } + }; + + setHeader('name', this.$p.t('global','name')); + setHeader('typ', this.$p.t('global','typ')); + setHeader('anschrift', this.$p.t('person','anschrift')); + setHeader('kontonr', this.$p.t('person','kontonr')); + setHeader('blz', this.$p.t('person','blz')); + setHeader('verrechnung', this.$p.t('person','verrechnung')); } } ]; diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Contact.js b/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Contact.js index d9cc1ad55..c9603b1e3 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Contact.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Kontakt/Contact.js @@ -59,6 +59,7 @@ export default { ajaxURL: 'dummy', ajaxRequestFunc: () => this.$api.call(ApiStvContact.get(this.uid)), ajaxResponse: (url, params, response) => response.data, + persistenceID: 'stv-details-kontakt-contact', columns:[ {title:"Typ", field:"kontakttypbeschreibung"}, {title:"Kontakt", field:"kontakt"}, @@ -134,7 +135,7 @@ export default { }, tabulatorEvents() { const events = [ - { +/* { event: 'tableBuilt', handler: async() => { await this.$p.loadCategory(['notiz','global','person']); @@ -175,6 +176,37 @@ export default { title: this.$p.t('ui', 'standort_id') }); } + }, */ + { + event: 'tableBuilt', + handler: async() => { + await this.$p.loadCategory(['notiz','global','person']); + + const setHeader = (field, text) => { + const col = this.$refs.table.tabulator.getColumn(field); + if (!col) return; + + const el = col.getElement(); + if (!el || !el.querySelector) return; + + const titleEl = el.querySelector('.tabulator-col-title'); + if (titleEl) { + titleEl.textContent = text; + } + }; + + setHeader('kontakttypbeschreibung', this.$p.t('global', 'typ')); + setHeader('kontakt', this.$p.t('global', 'kontakt')); + setHeader('zustellung', this.$p.t('person', 'zustellung')); + setHeader('anmerkung', this.$p.t('global', 'anmerkung')); + setHeader('lastupdate', this.$p.t('notiz', 'letzte_aenderung')); + setHeader('name', this.$p.t('person', 'firma')); + setHeader('bezeichnung', this.$p.t('person', 'standort')); + setHeader('firma_id', this.$p.t('ui', 'firma_id')); + setHeader('kontakt_id', this.$p.t('ui', 'kontakt_id')); + setHeader('person_id', this.$p.t('person', 'person_id')); + setHeader('standort_id', this.$p.t('ui', 'standort_id')); + } } ]; return events; diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Lehrveranstaltungstermine/ListLehrveranstaltungstermine.js b/public/js/components/Stv/Studentenverwaltung/Details/Lehrveranstaltungstermine/ListLehrveranstaltungstermine.js index 5b0c4e350..6d510a912 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Lehrveranstaltungstermine/ListLehrveranstaltungstermine.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Lehrveranstaltungstermine/ListLehrveranstaltungstermine.js @@ -59,6 +59,7 @@ export default { ajaxResponse: (url, params, response) => { return response.data; }, + persistenceID: 'stv-details-lvtermine', columns: [ {title: "lv_id", field: "lehrveranstaltung_id", visible: false}, {title: "lehreinheit_id", field: "lehreinheit_id", visible: false}, @@ -100,35 +101,28 @@ export default { handler: async() => { await this.$p.loadCategory(['global', 'ui', 'lehre']); - let cm = this.$refs.table.tabulator.columnManager; + const setHeader = (field, text) => { + const col = this.$refs.table.tabulator.getColumn(field); + if (!col) return; - cm.getColumnByField('lehrveranstaltung_id').component.updateDefinition({ - title: this.$p.t('lehre', 'lehrveranstaltung_id') - }); - cm.getColumnByField('lehreinheit_id').component.updateDefinition({ - title: this.$p.t('global', 'lehreinheit_id') - }); - cm.getColumnByField('datum').component.updateDefinition({ - title: this.$p.t('global', 'datum') - }); - cm.getColumnByField('beginn').component.updateDefinition({ - title: this.$p.t('ui', 'dateFrom') - }); - cm.getColumnByField('ende').component.updateDefinition({ - title: this.$p.t('ui', 'dateTo') - }); - cm.getColumnByField('gruppen_kuerzel').component.updateDefinition({ - title: this.$p.t('global', 'gruppen') - }); - cm.getColumnByField('ort_kurzbz').component.updateDefinition({ - title: this.$p.t('global', 'ortLocation') - }); - cm.getColumnByField('lektorname').component.updateDefinition({ - title: this.$p.t('lehre', 'lektor') - }); - cm.getColumnByField('lehrfach_bez').component.updateDefinition({ - title: this.$p.t('global', 'lehrfach') - }); + const el = col.getElement(); + if (!el || !el.querySelector) return; + + const titleEl = el.querySelector('.tabulator-col-title'); + if (titleEl) { + titleEl.textContent = text; + } + }; + + setHeader('lehrveranstaltung_id', this.$p.t('lehre', 'lehrveranstaltung_id')); + setHeader('lehreinheit_id', this.$p.t('global', 'lehreinheit_id')); + setHeader('datum', this.$p.t('global', 'datum')); + setHeader('beginn', this.$p.t('ui', 'dateFrom')); + setHeader('ende', this.$p.t('ui', 'dateTo')); + setHeader('gruppen_kuerzel', this.$p.t('global', 'gruppen')); + setHeader('ort_kurzbz', this.$p.t('global', 'ortLocation')); + setHeader('lektorname', this.$p.t('lehre', 'lektor')); + setHeader('lehrfach_bez', this.$p.t('global', 'lehrfach')); } } ]; diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Mobility/Mobility.js b/public/js/components/Stv/Studentenverwaltung/Details/Mobility/Mobility.js index 69cf70467..af5ea4c4b 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Mobility/Mobility.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Mobility/Mobility.js @@ -61,8 +61,6 @@ export default { layoutColumnsOnNewData: false, height: 'auto', minHeight: 200, - index: 'bisio_id', - persistenceID: 'stv-details-table_mobiliy-2025112401' } }, watch: { @@ -80,6 +78,8 @@ export default { ApiStvMobility.getMobilitaeten(this.student.uid) ), ajaxResponse: (url, params, response) => response.data, + index: 'bisio_id', + persistenceID: 'stv-details-table_mobility-2025112401', columns: [ {title: "Kurzbz", field: "kurzbz"}, {title: "Nation", field: "nation_code"}, @@ -161,26 +161,29 @@ export default { { event: 'tableBuilt', handler: async() => { + + if (!this.$refs.table) return; + await this.$p.loadCategory(['global', 'person', 'stv', 'mobility', 'ui']); + const setHeader = (field, text) => { + const col = this.$refs.table.tabulator.getColumn(field); + if (!col) return; - let cm = this.$refs.table.tabulator.columnManager; + const el = col.getElement(); + if (!el || !el.querySelector) return; - cm.getColumnByField('kurzbz').component.updateDefinition({ - title: this.$p.t('mobility', 'kurzbz_program') - }); - cm.getColumnByField('nation_code').component.updateDefinition({ - title: this.$p.t('mobility', 'gastnation') - }); - cm.getColumnByField('von').component.updateDefinition({ - title: this.$p.t('ui', 'von') - }); - cm.getColumnByField('bis').component.updateDefinition({ - title: this.$p.t('global', 'bis') - }); - cm.getColumnByField('bisio_id').component.updateDefinition({ - title: this.$p.t('mobility', 'bisio_id') - }); + const titleEl = el.querySelector('.tabulator-col-title'); + if (titleEl) { + titleEl.textContent = text; + } + }; + + setHeader('kurzbz', this.$p.t('mobility', 'kurzbz_program')); + setHeader('nation_code', this.$p.t('mobility', 'gastnation')); + setHeader('von', this.$p.t('ui', 'von')); + setHeader('bis', this.$p.t('global', 'bis')); + setHeader('bisio_id', this.$p.t('mobility', 'bisio_id')); } } ]; diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/History.js b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/History.js index 1fe96188f..ffca391dc 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/History.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Prestudent/History.js @@ -15,8 +15,7 @@ export default{ layout: 'fitDataFill', layoutColumnsOnNewData: false, height: 'auto', - selectable: false, - persistenceID: 'stv-details-prestudent-history', + selectable: false } }, computed: { @@ -26,6 +25,7 @@ export default{ ajaxRequestFunc: () => this.$api.call(ApiStvPrestudent.getHistoryPrestudents(this.personId)), ajaxResponse: (url, params, response) => response.data, //autoColumns: true, + persistenceID: 'stv-details-prestudent-history', columns:[ {title:"StSem", field:"studiensemester_kurzbz"}, {title:"Prio", field:"priorisierung"}, diff --git a/public/js/components/Stv/Studentenverwaltung/Details/Pruefung/Pruefunglist.js b/public/js/components/Stv/Studentenverwaltung/Details/Pruefung/Pruefunglist.js index 58d42666f..c58027338 100644 --- a/public/js/components/Stv/Studentenverwaltung/Details/Pruefung/Pruefunglist.js +++ b/public/js/components/Stv/Studentenverwaltung/Details/Pruefung/Pruefunglist.js @@ -29,10 +29,41 @@ export default{ }, data(){ return { - tabulatorOptions: { + pruefungData: {}, + listTypesExam: [], + listLvsAndLes: [], + listLvsAndMas: [], + listLvs: [], + listLes: [], + listMas: [], + listMarks: [], + zeugnisData: [], + filter: false, + statusNew: true, + isStartDropDown: false, + isFilterSet: false, + showHint: false, + } + }, + computed:{ + tabulatorOptions() { + const options = { ajaxURL: 'dummy', ajaxRequestFunc: () => this.$api.call(ApiStvExam.getPruefungen(this.uid)), ajaxResponse: (url, params, response) => response.data, + layout: 'fitDataStretchFrozen', + layoutColumnsOnNewData: false, + height: 'auto', + index: 'pruefung_id', + persistenceID: 'stv-details-pruefung-list-2026012701', + persistence: { + sort: true, + columns: ["width", "visible", "frozen"], + filter: false, + headerFilter: false, + group: false, + page: false + }, columns: [ {title: "Datum", field: "format_datum"}, {title: "Lehrveranstaltung", field: "lehrveranstaltung_bezeichnung"}, @@ -87,81 +118,44 @@ export default{ }, frozen: true }], - layout: 'fitDataStretchFrozen', - layoutColumnsOnNewData: false, - height: 'auto', - index: 'pruefung_id', - persistenceID: 'stv-details-pruefung-list-2026012701', - persistence: { - sort: false, - columns: ["width", "visible", "frozen"], - filter: false, - headerFilter: false, - group: false, - page: false - } - }, - tabulatorEvents: [ + }; + return options; + }, + tabulatorEvents() { + const events = [ { event: 'tableBuilt', handler: async () => { await this.$p.loadCategory(['fristenmanagement', 'global', 'lehre', 'exam', 'ui']); - let cm = this.$refs.table.tabulator.columnManager; - cm.getColumnByField('format_datum').component.updateDefinition({ - title: this.$p.t('global', 'datum') - }); - cm.getColumnByField('lehrveranstaltung_bezeichnung').component.updateDefinition({ - title: this.$p.t('lehre', 'lehrveranstaltung') - }); - cm.getColumnByField('note_bezeichnung').component.updateDefinition({ - title: this.$p.t('lehre', 'note') - }); - cm.getColumnByField('anmerkung').component.updateDefinition({ - title: this.$p.t('global', 'anmerkung') - }); - cm.getColumnByField('pruefungstyp_kurzbz').component.updateDefinition({ - title: this.$p.t('global', 'typ') - }); - cm.getColumnByField('punkte').component.updateDefinition({ - title: this.$p.t('exam', 'punkte') - }); - cm.getColumnByField('pruefung_id').component.updateDefinition({ - title: this.$p.t('ui', 'pruefung_id') - }); - cm.getColumnByField('lehreinheit_id').component.updateDefinition({ - title: this.$p.t('global', 'lehreinheit_id') - }); - cm.getColumnByField('mitarbeiter_uid').component.updateDefinition({ - title: this.$p.t('ui', 'mitarbeiter_uid') - }); - cm.getColumnByField('student_uid').component.updateDefinition({ - title: this.$p.t('ui', 'student_uid') - }); - //Uncaught TypeError: e.element.after is not a function - /* cm.getColumnByField('actions').component.updateDefinition({ - title: this.$p.t('global', 'actions') - });*/ + const setHeader = (field, text) => { + const col = this.$refs.table.tabulator.getColumn(field); + if (!col) return; + + const el = col.getElement(); + if (!el || !el.querySelector) return; + + const titleEl = el.querySelector('.tabulator-col-title'); + if (titleEl) { + titleEl.textContent = text; + } + }; + + setHeader('format_datum', this.$p.t('global', 'datum')); + setHeader('lehrveranstaltung_bezeichnung', this.$p.t('lehre', 'lehrveranstaltung')); + setHeader('note_bezeichnung', this.$p.t('lehre', 'note')); + setHeader('anmerkung', this.$p.t('global', 'anmerkung')); + setHeader('pruefungstyp_kurzbz', this.$p.t('global', 'typ')); + setHeader('punkte', this.$p.t('exam', 'punkte')); + setHeader('pruefung_id', this.$p.t('ui', 'pruefung_id')); + setHeader('lehreinheit_id', this.$p.t('global', 'lehreinheit_id')); + setHeader('mitarbeiter_uid', this.$p.t('ui', 'mitarbeiter_uid')); + setHeader('student_uid', this.$p.t('ui', 'student_uid')); } - } - ], - pruefungData: {}, - listTypesExam: [], - listLvsAndLes: [], - listLvsAndMas: [], - listLvs: [], - listLes: [], - listMas: [], - listMarks: [], - zeugnisData: [], - filter: false, - statusNew: true, - isStartDropDown: false, - isFilterSet: false, - showHint: false, - } - }, - computed:{ + }, + ]; + return events; + }, lv_teile(){ return this.listLvsAndLes.filter(lv => lv.lehrveranstaltung_id == this.pruefungData.lehrveranstaltung_id); },