mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-10-21 19:29:35 +00:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dc126528ec |
@@ -127,6 +127,13 @@ $config['tabs']['projektarbeit']['defaultProjektbetreuerStundenDiplom'] =
|
||||
? FAS_STUDIERENDE_PROJEKTARBEIT_DEFAULT_BETREUER_STUNDEN_MASTER
|
||||
: '0.0';
|
||||
$config['tabs']['projektarbeit']['defaultProjektbetreuerStundensatz'] = '80.0';
|
||||
// default Stunden per Betreuerart, they win over the Projekttyp defaults above
|
||||
$config['tabs']['projektarbeit']['defaultProjektbetreuerStundenBetreuerart'] = [
|
||||
'Betreuer' => '3.0',
|
||||
'Begutachter' => '4.0',
|
||||
'Erstbegutachter' => '5.0',
|
||||
'Zweitbegutachter' => '3.0'
|
||||
];
|
||||
|
||||
$config['student_tab_order'] = [
|
||||
'details',
|
||||
|
||||
@@ -288,4 +288,18 @@ html.fs_huge {
|
||||
|
||||
.fhc-xxl-modal {
|
||||
min-width: 80vw;
|
||||
}
|
||||
|
||||
/* Projektarbeit modal: Vertragsdetails go below the Betreuer form if the column is too narrow for them */
|
||||
.stv-details-projektbetreuer {
|
||||
container-type: inline-size;
|
||||
}
|
||||
@container (max-width: 640px) {
|
||||
.stv-details-projektbetreuer > .col-9,
|
||||
.stv-details-projektbetreuer > .col-3 {
|
||||
width: 100%;
|
||||
}
|
||||
.stv-details-projektbetreuer > .col-3 {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
}
|
||||
@@ -291,7 +291,7 @@ export default {
|
||||
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-9">
|
||||
<div class="col">
|
||||
<form-input
|
||||
container-class="stv-details-projektarbeit-firma"
|
||||
:label="$p.t('projektarbeit', 'firma')"
|
||||
@@ -305,7 +305,7 @@ export default {
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
<div class="col-3 align-content-center">
|
||||
<div class="col-auto align-content-center">
|
||||
<a :href="firmenverwaltungLink" target="_blank">
|
||||
{{ $p.t('projektarbeit', 'zurFirmenverwaltung') }}
|
||||
</a>
|
||||
@@ -314,7 +314,7 @@ export default {
|
||||
|
||||
<div class="row mb-3">
|
||||
<form-input
|
||||
container-class="stv-details-projektarbeit-lv col-9"
|
||||
container-class="stv-details-projektarbeit-lv col"
|
||||
:label="$p.t('projektarbeit', 'lehrveranstaltung')"
|
||||
type="select"
|
||||
v-model="formData.lehrveranstaltung_id"
|
||||
@@ -330,7 +330,7 @@ export default {
|
||||
</option>
|
||||
</form-input>
|
||||
<form-input
|
||||
container-class="col-3"
|
||||
container-class="col-auto"
|
||||
:label="$p.t('lehre', 'studiensemester')"
|
||||
type="select"
|
||||
v-model="studiensemester"
|
||||
|
||||
+14
-4
@@ -89,6 +89,16 @@ export default {
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
// student in the modal title, so an interrupted user sees whom they edit
|
||||
studentInfo() {
|
||||
const s = this.student;
|
||||
return [
|
||||
s.vorname + ' ' + s.nachname,
|
||||
s.uid,
|
||||
s.studiengang,
|
||||
s.semester != null && s.semester !== '' ? this.$p.t('lehre', 'semester') + ' ' + s.semester : ''
|
||||
].filter(Boolean).join(' | ');
|
||||
},
|
||||
tabulatorOptions() {
|
||||
const options = {
|
||||
ajaxURL: 'dummy',
|
||||
@@ -363,17 +373,17 @@ export default {
|
||||
@hideBsModal="resetFormData"
|
||||
>
|
||||
<template #title>
|
||||
<p v-if="statusNew" class="fw-bold mt-3">{{$p.t('projektarbeit', 'projektarbeitAnlegen')}}</p>
|
||||
<p v-else class="fw-bold mt-3">{{$p.t('projektarbeit', 'projektarbeitBearbeiten')}}</p>
|
||||
<p v-if="statusNew" class="fw-bold mt-3">{{$p.t('projektarbeit', 'projektarbeitAnlegen')}} – {{studentInfo}}</p>
|
||||
<p v-else class="fw-bold mt-3">{{$p.t('projektarbeit', 'projektarbeitBearbeiten')}} – {{studentInfo}}</p>
|
||||
</template>
|
||||
|
||||
<div class="row" >
|
||||
<div :class="statusNew ? 'col-12' : 'col-6'">
|
||||
<div :class="statusNew ? 'col-12' : 'col-12 col-xl-6'">
|
||||
<projektarbeit-details ref="projektarbeitDetails" :student="student" @projekttyp-changed="setDefaultStunden">
|
||||
</projektarbeit-details>
|
||||
</div>
|
||||
|
||||
<div :class="statusNew ? '' : 'col-6'" :style="statusNew ? 'display: none' : ''">
|
||||
<div :class="statusNew ? '' : 'col-12 col-xl-6'" :style="statusNew ? 'display: none' : ''">
|
||||
<projektbetreuer ref="projektbetreuer" :config="config" @betreuer-saved="reload"></projektbetreuer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+18
-4
@@ -193,6 +193,7 @@ export default {
|
||||
autocompleteSelectedBetreuer: null,
|
||||
beurteilungDownloadLink: null,
|
||||
vertragFieldsDisabled: false,
|
||||
stundenOverwritten: false,
|
||||
abortController: {
|
||||
betreuer: null
|
||||
}
|
||||
@@ -356,6 +357,7 @@ export default {
|
||||
if (this.beurteilungDownloadLink !== null) this.beurteilungDownloadLink = '';
|
||||
this.autocompleteSelectedBetreuer = null;
|
||||
this.initialFormData = null;
|
||||
this.stundenOverwritten = false;
|
||||
if (this.projekttyp_kurzbz) this.setDefaultStunden(this.projekttyp_kurzbz);
|
||||
this.disableVertragFields(false);
|
||||
this.$refs.formProjektbetreuer.clearValidation();
|
||||
@@ -402,8 +404,10 @@ export default {
|
||||
|
||||
return preparedFormData;
|
||||
},
|
||||
// get default values for stunden
|
||||
getDefaultStunden(projekttyp_kurzbz) {
|
||||
// get default values for stunden, a Betreuerart default wins over the Projekttyp default
|
||||
getDefaultStunden(projekttyp_kurzbz, betreuerart_kurzbz) {
|
||||
const betreuerartStunden = this.config.defaultProjektbetreuerStundenBetreuerart?.[betreuerart_kurzbz];
|
||||
if (betreuerartStunden !== undefined) return betreuerartStunden;
|
||||
let stunden = '0.0';
|
||||
if (projekttyp_kurzbz == 'Bachelor') stunden = this.config.defaultProjektbetreuerStunden;
|
||||
if (projekttyp_kurzbz == 'Diplom') stunden = this.config.defaultProjektbetreuerStundenDiplom;
|
||||
@@ -414,10 +418,17 @@ export default {
|
||||
// set default stunden if not in edit mode (so hours of editen person are not overwritten)
|
||||
if (!this.editMode)
|
||||
{
|
||||
let defaultStunden = this.getDefaultStunden(projekttyp_kurzbz);
|
||||
let defaultStunden = this.getDefaultStunden(projekttyp_kurzbz, this.formData.betreuerart_kurzbz);
|
||||
this.formData.stunden = defaultStunden;
|
||||
}
|
||||
},
|
||||
// also in edit mode, but the hours of an accepted Vertrag stay
|
||||
betreuerartChanged() {
|
||||
if (this.vertragFieldsDisabled) return;
|
||||
this.formData.stunden = this.getDefaultStunden(this.projekttyp_kurzbz, this.formData.betreuerart_kurzbz);
|
||||
// mark hours that differ from the saved ones, so the user notices the change
|
||||
this.stundenOverwritten = this.editMode && Number(this.formData.stunden) !== Number(this.initialFormData?.stunden);
|
||||
},
|
||||
getDefaultStundensaetze(person_id) {
|
||||
return this.$api
|
||||
.call(ApiStvProjektbetreuer.getDefaultStundensaetze(person_id, this.studiensemester_kurzbz))
|
||||
@@ -518,6 +529,7 @@ export default {
|
||||
type="select"
|
||||
v-model="formData.betreuerart_kurzbz"
|
||||
name="betreuerart_kurzbz"
|
||||
@change="betreuerartChanged"
|
||||
>
|
||||
<option
|
||||
v-for="art in arrBetreuerart"
|
||||
@@ -548,7 +560,7 @@ export default {
|
||||
</form-input>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="row mb-3 align-items-end">
|
||||
<div class="col-6">
|
||||
<form-input
|
||||
container-class="stv-details-projektarbeit-stunden"
|
||||
@@ -556,7 +568,9 @@ export default {
|
||||
name="stunden"
|
||||
:label="$p.t('projektarbeit', 'stunden')"
|
||||
:disabled="vertragFieldsDisabled"
|
||||
:class="stundenOverwritten ? 'border-warning bg-warning-subtle' : ''"
|
||||
v-model="formData.stunden"
|
||||
@input="stundenOverwritten = false"
|
||||
>
|
||||
</form-input>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user