Merge branch 'feature-25999/C4_cleanup' into merge_FHC4_C4

This commit is contained in:
Harald Bamberger
2025-02-14 13:33:52 +01:00
11 changed files with 68 additions and 76 deletions
@@ -85,7 +85,7 @@ else
}
</style>
<div id="page-wrapper">
<div cis4Reload="true" id="page-wrapper">
<div class="container-fluid">
<!-- header -->
<div class="row">
@@ -33,7 +33,7 @@ export default {
template: `<div class="card mb-3">
<div class="card-body">
<h4 class="card-title mb-3">{{bezeichnung}} - {{kuerzel}}
<small>{{semester}}.{{p.t('lehre/semester')}}</small>
<small>{{semester}}.{{$p.t('lehre/semester')}}</small>
</h4>
<div class="row">
<div v-for="lv in lehrveranstaltungen" :key="lv.lehrveranstaltung_id" class="col-12 col-md-6 col-xl-4 col-xxl-3 mb-3">
+1 -1
View File
@@ -91,7 +91,7 @@ export default {
},
template: `
<h2>{{p.t('lehre/myLV')}}</h2>
<h2>{{$p.t('lehre/myLV')}}</h2>
<hr>
<div class="mylv-student" v-if="ready">
<div v-if="currentSemester" class="row justify-content-center mb-3">
@@ -34,20 +34,15 @@ export default {
// tabulator options
funktionen_table_options: {
persistenceID: "filterTableMaProfilFunktionen",
persistence: {
columns: false
},
height: 300,
layout: "fitColumns",
responsiveLayout: "collapse",
responsiveLayoutCollapseUseFormatters: false,
responsiveLayoutCollapseFormatter: Vue.$collapseFormatter,
data: [
{
Bezeichnung: "",
Organisationseinheit: "",
Gültig_von: "",
Gültig_bis: "",
Wochenstunden: "",
},
],
columns: [
{
title:
@@ -58,18 +53,21 @@ export default {
formatter: "responsiveCollapse",
maxWidth: 40,
headerClick: this.collapseFunction,
visible: true
},
{
title: "Bezeichnung",
field: "Bezeichnung",
headerFilter: true,
minWidth: 200,
visible: true
},
{
title: "Organisationseinheit",
field: "Organisationseinheit",
headerFilter: true,
minWidth: 200,
visible: true
},
{
title: "Gültig_von",
@@ -77,6 +75,7 @@ export default {
headerFilter: true,
resizable: true,
minWidth: 200,
visible: true
},
{
title: "Gültig_bis",
@@ -84,12 +83,14 @@ export default {
headerFilter: true,
resizable: true,
minWidth: 200,
visible: true
},
{
title: "Wochenstunden",
field: "Wochenstunden",
headerFilter: true,
minWidth: 200,
visible: true
},
],
},
@@ -111,12 +112,14 @@ export default {
formatter: "responsiveCollapse",
maxWidth: 40,
headerClick: this.collapseFunction,
visible: true
},
{
title: "Betriebsmittel",
field: "betriebsmittel",
headerFilter: true,
minWidth: 200,
visible: true
},
{
title: "Nummer",
@@ -124,15 +127,17 @@ export default {
headerFilter: true,
resizable: true,
minWidth: 200,
visible: true
},
{
title: "Ausgegeben_am",
field: "Ausgegeben_am",
headerFilter: true,
minWidth: 200,
visible: true
},
],
},
}
};
},
@@ -140,7 +145,12 @@ export default {
data: Object,
editData: Object,
},
'data.funktionen'(newVal) {
if(this.$refs.funktionenTable) this.$refs.funktionenTable.tabulator.setData(newVal);
},
'data.mittel'(newVal) {
if(this.$refs.betriebsmittelTable) this.$refs.betriebsmittelTable.tabulator.setData(newVal);
},
methods: {
betriebsmittelTableBuilt: function () {
this.$refs.betriebsmittelTable.tabulator.setData(this.data.mittel);
@@ -256,15 +266,6 @@ export default {
value: this.data.ort_kurzbz
}
};
// return {
// [`${this.$p.t('profil', 'Geburtsdatum')}`]: this.data.gebdatum,
// [`${this.$p.t('profil', 'Geburtsort')}`]: this.data.gebort,
// [`${this.$p.t('profil', 'Kurzzeichen')}`]: this.data.kurzbz,
// [`${this.$p.t('profil', 'Telefon')}`]:
// (this.data.standort_telefon ? this.data.standort_telefon.kontakt + " " + this.data.telefonklappe : this.data.telefonklappe),
// [`${this.$p.t('profil', 'Büro')}`]: this.data.ort_kurzbz,
// };
},
},
@@ -390,11 +391,25 @@ export default {
<div class="row">
<div class="col-12 mb-4" >
<!-- FUNKTIONEN TABELLE -->
<core-filter-cmpt @tableBuilt="funktionenTableBuilt" :title="$p.t('person','funktionen')" ref="funktionenTable" :tabulator-options="funktionen_table_options" tableOnly :sideMenu="false" />
<core-filter-cmpt
@tableBuilt="funktionenTableBuilt"
:title="$p.t('person','funktionen')"
ref="funktionenTable"
:tabulator-options="funktionen_table_options"
tableOnly
:sideMenu="false"
/>
</div>
<div class="col-12 mb-4" >
<!-- BETRIEBSMITTEL TABELLE -->
<core-filter-cmpt @tableBuilt="betriebsmittelTableBuilt" :title="$p.t('profil','entlehnteBetriebsmittel')" ref="betriebsmittelTable" :tabulator-options="betriebsmittel_table_options" tableOnly :sideMenu="false" />
<core-filter-cmpt
@tableBuilt="betriebsmittelTableBuilt"
:title="$p.t('profil','entlehnteBetriebsmittel')"
ref="betriebsmittelTable"
:tabulator-options="betriebsmittel_table_options"
tableOnly
:sideMenu="false"
/>
</div>
</div>
</div>
@@ -20,20 +20,15 @@ export default {
collapseIconFunktionen: true,
funktionen_table_options: {
persistenceID: "filterTableMaViewProfilFunktionen",
persistence: {
columns: false
},
height: 300,
layout: "fitColumns",
responsiveLayout: "collapse",
responsiveLayoutCollapseUseFormatters: false,
responsiveLayoutCollapseFormatter: Vue.$collapseFormatter,
data: [
{
Bezeichnung: "",
Organisationseinheit: "",
Gültig_von: "",
Gültig_bis: "",
Wochenstunden: "",
},
],
columns: [
//? option when wanting to hide the collapsed list
@@ -46,18 +41,21 @@ export default {
formatter: "responsiveCollapse",
maxWidth: 40,
headerClick: this.collapseFunction,
visible: true
},
{
title: "Bezeichnung",
field: "Bezeichnung",
headerFilter: true,
minWidth: 200,
visible: true
},
{
title: "Organisationseinheit",
field: "Organisationseinheit",
headerFilter: true,
minWidth: 200,
visible: true
},
{
title: "Gültig_von",
@@ -65,6 +63,7 @@ export default {
headerFilter: true,
resizable: true,
minWidth: 200,
visible: true
},
{
title: "Gültig_bis",
@@ -72,12 +71,14 @@ export default {
headerFilter: true,
resizable: true,
minWidth: 200,
visible: true
},
{
title: "Wochenstunden",
field: "Wochenstunden",
headerFilter: true,
minWidth: 200,
visible: true
},
],
},
@@ -91,7 +92,11 @@ export default {
this.$refs.funktionenTable.tabulator.setData(this.data.funktionen);
},
},
watch: {
'data.funktionen'(newVal) {
if(this.$refs.funktionenTable) this.$refs.funktionenTable.tabulator.setData(newVal);
},
},
computed: {
getTelefonValue() {
if(this.data.standort_telefon?.kontakt) {
@@ -153,15 +158,6 @@ export default {
value: this.data.ort_kurzbz
}
};
// return {
// [`${this.$p.t('profil', 'Geburtsdatum')}`]: this.data.gebdatum,
// [`${this.$p.t('profil', 'Geburtsort')}`]: this.data.gebort,
// [`${this.$p.t('profil', 'Kurzzeichen')}`]: this.data.kurzbz,
// [`${this.$p.t('profil', 'Telefon')}`]:
// (this.data.standort_telefon ? this.data.standort_telefon + " " + this.data.telefonklappe : this.data.telefonklappe),
// [`${this.$p.t('profil', 'Büro')}`]: this.data.ort_kurzbz,
// };
},
},
@@ -206,17 +206,6 @@ export default {
value: this.data.gruppe.trim()
}
};
// so nicht
// return {
// [`${this.$p.t('profil','Geburtsdatum')}`]: this.data.gebdatum,
// [`${this.$p.t('profil', 'Geburtsort')}`]: this.data.gebort,
// [`${this.$p.t('person', 'personenkennzeichen')}`]: this.data.personenkennzeichen,
// [`${this.$p.t('lehre', 'studiengang')}`]: this.data.studiengang,
// [`${this.$p.t('lehre', 'semester')}`]: this.data.semester,
// [`${this.$p.t('lehre', 'lehrverband')}`]: this.data.verband,
// [`${this.$p.t('lehre', 'gruppe')}`]: this.data.gruppe.trim(),
// };
},
},
created() {
@@ -66,36 +66,26 @@ export default {
value: this.data.gebort
},
personenkennzeichen: {
label: `${this.$p.t('person','Geburtsort')}`,
label: `${this.$p.t('person','personenkennzeichen')}`,
value: this.data.personenkennzeichen
},
studiengang: {
label: `${this.$p.t('lehre','Geburtsort')}`,
label: `${this.$p.t('lehre','studiengang')}`,
value: this.data.studiengang
},
semester: {
label: `${this.$p.t('lehre','Geburtsort')}`,
label: `${this.$p.t('lehre','semester')}`,
value: this.data.semester
},
verband: {
label: `${this.$p.t('lehre','Geburtsort')}`,
label: `${this.$p.t('lehre','lehrverband')}`,
value: this.data.verband
},
gruppe: {
label: `${this.$p.t('lehre','Geburtsort')}`,
label: `${this.$p.t('lehre','gruppe')}`,
value: this.data.gruppe.trim()
}
};
// return {
// Geburtsdatum: this.data.gebdatum,
// Geburtsort: this.data.gebort,
// Personenkennzeichen: this.data.personenkennzeichen,
// Studiengang: this.data.studiengang,
// Semester: this.data.semester,
// Verband: this.data.verband,
// Gruppe: this.data.gruppe.trim(),
// };
},
},
+3 -1
View File
@@ -9,11 +9,13 @@ export default {
changeLanguage: function(lang){
if(this.allActiveLanguages.some(l => l.sprache === lang))
{
const isReload = document.querySelector('[cis4Reload]')
this.$p.setLanguage(lang, this.$fhcApi)
.then(res => res.data)
.then(data =>
{
this.$emit('languageChanged', lang);
if(isReload) window.location.reload()
else this.$emit('languageChanged', lang);
})
}
},
+3 -2
View File
@@ -55,6 +55,7 @@ export default {
}
this.$refs.widgetpicker.getWidget().then(widget_id => {
widget.widget = widget_id;
widget.id = 'loading_' + String((new Date()).valueOf());
let loading = {...widget};
loading.loading = true;
this.sections.forEach(section => {
@@ -169,11 +170,11 @@ export default {
},
template: `
<div class="core-dashboard">
<h3>
<h3 v-show="viewDataInternal?.name">
{{ $p.t('global/personalGreeting', [ viewDataInternal?.name ]) }}
<button style="margin-left: 8px;" class="btn" @click="editMode = !editMode"><i class="fa-solid fa-gear"></i></button>
</h3>
<dashboard-section v-for="(section, index) in sections" :key="section.name" :seperator="index" :name="section.name" :widgets="section.widgets" @widgetAdd="widgetAdd" @widgetUpdate="widgetUpdate" @widgetRemove="widgetRemove"></dashboard-section>
<dashboard-widget-picker ref="widgetpicker" :widgets="widgets"></dashboard-widget-picker>
</div>`
}
}
@@ -180,7 +180,7 @@ export default {
</div>
<template v-else-if="allEventsGrouped.size" v-for="([key, value], index) in allEventsGrouped" :key="index" style="margin-top: 8px;">
<div class="card-header d-grid p-0">
<button class="btn btn-link link-secondary text-decoration-none" @click="setCalendarMaximized">{{ key.format({dateStyle: "full"})}}</button>
<button class="btn btn-link link-secondary text-decoration-none" @click="setCalendarMaximized">{{ key.format({dateStyle: "full"}, $p.user_locale.value)}}</button>
</div>
<div role="button" @click="showLvUebersicht(evt)" v-for="evt in value" :key="evt.id" class="list-group-item small" :style="getEventStyle(evt)">
<b>{{evt.topic}}</b>
+1 -2
View File
@@ -5,7 +5,7 @@ const loadingModules = {};
let user_language = Vue.ref(FHC_JS_DATA_STORAGE_OBJECT.user_language);
export let user_locale = Vue.computed(()=>{
if(!user_language.value) return null;
return FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(language => language.sprache == user_language.value).locale;
return FHC_JS_DATA_STORAGE_OBJECT.server_languages.find(language => language.sprache == user_language.value).LC_Time;
});
function extractCategory(obj, category) {
@@ -30,7 +30,6 @@ const phrasen = {
setLanguage(language, api) {
const catArray = Object.keys(categories)
return api.factory.phrasen.setLanguage(catArray, language).then(res => {
res.data.forEach(row => {
categories[row.category][row.phrase] = row.text
})