mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-20 00:12:15 +00:00
2 new dateStyle status regarding QG benotung
This commit is contained in:
@@ -139,6 +139,94 @@
|
||||
box-shadow: 0 2px 6px rgba(0,0,0,0.12);
|
||||
}
|
||||
|
||||
|
||||
/* Base Header */
|
||||
.bestanden-header {
|
||||
background-color: var(--fhc-purple-70);
|
||||
font-weight: 600;
|
||||
border-radius: 6px;
|
||||
padding: 0px 0px 0px 34px;
|
||||
transition: background-color 0.3s ease, box-shadow 0.3s ease, color 0.3s ease;
|
||||
box-shadow: 0 1px 2px rgba(0,0,0,0.08);
|
||||
}
|
||||
|
||||
/* Hover State */
|
||||
.bestanden-header:hover {
|
||||
background-color: var(--fhc-purple-60);
|
||||
box-shadow: 0 2px 6px rgba(0,0,0,0.12);
|
||||
}
|
||||
|
||||
/* Active / Expanded State */
|
||||
.p-accordion-tab-active > .bestanden-header {
|
||||
background-color: var(--fhc-purple-50);
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
/* Hover State Active*/
|
||||
.p-accordion-tab-active > .bestanden-header:hover {
|
||||
background-color: var(--fhc-purple-60);
|
||||
box-shadow: 0 2px 6px rgba(0,0,0,0.12);
|
||||
}
|
||||
|
||||
|
||||
/* Base Header */
|
||||
.nichtbestanden-header {
|
||||
background-color: var(--fhc-red-70);
|
||||
font-weight: 600;
|
||||
border-radius: 6px;
|
||||
padding: 0px 0px 0px 34px;
|
||||
transition: background-color 0.3s ease, box-shadow 0.3s ease, color 0.3s ease;
|
||||
box-shadow: 0 1px 2px rgba(0,0,0,0.08);
|
||||
}
|
||||
|
||||
/* Hover State */
|
||||
.nichtbestanden-header:hover {
|
||||
background-color: var(--fhc-red-60);
|
||||
box-shadow: 0 2px 6px rgba(0,0,0,0.12);
|
||||
}
|
||||
|
||||
/* Active / Expanded State */
|
||||
.p-accordion-tab-active > .nichtbestanden-header {
|
||||
background-color: var(--fhc-red-50);
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
/* Hover State Active*/
|
||||
.p-accordion-tab-active > .nichtbestanden-header:hover {
|
||||
background-color: var(--fhc-red-60);
|
||||
box-shadow: 0 2px 6px rgba(0,0,0,0.12);
|
||||
}
|
||||
|
||||
|
||||
/* Base Header */
|
||||
.erledigt-header {
|
||||
background-color: var(--fhc-red-70);
|
||||
font-weight: 600;
|
||||
border-radius: 6px;
|
||||
padding: 0px 0px 0px 34px;
|
||||
transition: background-color 0.3s ease, box-shadow 0.3s ease, color 0.3s ease;
|
||||
box-shadow: 0 1px 2px rgba(0,0,0,0.08);
|
||||
}
|
||||
|
||||
/* Hover State */
|
||||
.erledigt-header:hover {
|
||||
background-color: var(--fhc-red-60);
|
||||
box-shadow: 0 2px 6px rgba(0,0,0,0.12);
|
||||
}
|
||||
|
||||
/* Active / Expanded State */
|
||||
.p-accordion-tab-active > .erledigt-header {
|
||||
background-color: var(--fhc-red-50);
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
/* Hover State Active*/
|
||||
.p-accordion-tab-active > .erledigt-header:hover {
|
||||
background-color: var(--fhc-red-60);
|
||||
box-shadow: 0 2px 6px rgba(0,0,0,0.12);
|
||||
}
|
||||
|
||||
|
||||
/* Base Header */
|
||||
.standard-header {
|
||||
background-color: var(--fhc-white-70);
|
||||
|
||||
@@ -101,7 +101,41 @@
|
||||
--fhc-beige-10: rgba(245, 233, 215, 0.5);
|
||||
--fhc-beige-20: rgba(172, 153, 125, 0.5);
|
||||
|
||||
/* --- Purple --- */
|
||||
--fhc-purple-5: rgb(250, 245, 255);
|
||||
--fhc-purple-10: rgb(240, 230, 255);
|
||||
--fhc-purple-20: rgb(220, 200, 250);
|
||||
--fhc-purple-30: rgb(190, 160, 245);
|
||||
--fhc-purple-40: rgb(160, 120, 235);
|
||||
--fhc-purple-50: rgb(130, 80, 220);
|
||||
--fhc-purple-60: rgb(110, 60, 190);
|
||||
--fhc-purple-70: rgb(90, 40, 160);
|
||||
--fhc-purple-80: rgb(70, 25, 130);
|
||||
--fhc-purple-90: rgb(50, 15, 100);
|
||||
|
||||
/* --- Teal --- */
|
||||
--fhc-teal-5: rgb(240, 252, 252);
|
||||
--fhc-teal-10: rgb(220, 245, 245);
|
||||
--fhc-teal-20: rgb(180, 235, 235);
|
||||
--fhc-teal-30: rgb(130, 220, 220);
|
||||
--fhc-teal-40: rgb(80, 200, 200);
|
||||
--fhc-teal-50: rgb(30, 170, 170);
|
||||
--fhc-teal-60: rgb(20, 140, 140);
|
||||
--fhc-teal-70: rgb(15, 115, 115);
|
||||
--fhc-teal-80: rgb(10, 90, 90);
|
||||
--fhc-teal-90: rgb(5, 65, 65);
|
||||
|
||||
/* --- Indigo --- */
|
||||
--fhc-indigo-5: rgb(245, 247, 255);
|
||||
--fhc-indigo-10: rgb(230, 235, 255);
|
||||
--fhc-indigo-20: rgb(200, 210, 250);
|
||||
--fhc-indigo-30: rgb(160, 175, 245);
|
||||
--fhc-indigo-40: rgb(120, 140, 235);
|
||||
--fhc-indigo-50: rgb(80, 100, 220);
|
||||
--fhc-indigo-60: rgb(60, 80, 190);
|
||||
--fhc-indigo-70: rgb(45, 60, 160);
|
||||
--fhc-indigo-80: rgb(30, 40, 130);
|
||||
--fhc-indigo-90: rgb(20, 25, 100);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -308,25 +308,34 @@ export const AbgabeMitarbeiterDetail = {
|
||||
const abgabedatum = new Date(termin.abgabedatum)
|
||||
|
||||
termin.diffindays = this.dateDiffInDays(termin.datum)
|
||||
|
||||
if(termin.bezeichnung?.benotbar && !termin.note) return 'beurteilungerforderlich'
|
||||
if (termin.abgabedatum === null && termin.upload_allowed) {
|
||||
if(datum < today) {
|
||||
return 'verpasst' // needs upload, missed it and has not submitted anything
|
||||
} else if (datum > today && termin.diffindays <= 12) {
|
||||
return 'abzugeben' // needs to upload soon
|
||||
} else {
|
||||
return 'standard' // upload in distant future
|
||||
|
||||
const isLate = abgabedatum && abgabedatum > datum;
|
||||
|
||||
// GRADE STATUS
|
||||
if (termin.note) {
|
||||
if (termin.note.positiv) return 'bestanden';
|
||||
return 'nichtbestanden';
|
||||
}
|
||||
|
||||
// ACTION REQUIRED FOR GRADE
|
||||
if (termin.bezeichnung?.benotbar && datum < today) {
|
||||
return 'beurteilungerforderlich';
|
||||
}
|
||||
|
||||
// SUBMISSION STATUS
|
||||
if (termin.upload_allowed) {
|
||||
if (abgabedatum) {
|
||||
return isLate ? 'verspaetet' : 'abgegeben';
|
||||
}
|
||||
|
||||
// no submission yet
|
||||
if (datum < today) return 'verpasst';
|
||||
if (termin.diffindays <= 12) return 'abzugeben';
|
||||
return 'standard';
|
||||
}
|
||||
else if(abgabedatum > datum) {
|
||||
return 'verspaetet' // needs upload, missed it and has submitted smth late
|
||||
} else if(!termin.upload_allowed) {
|
||||
if(datum > today) return termin.diffindays <= 12 ? 'abzugeben' : 'standard'
|
||||
else if (today > datum) return 'abgegeben'
|
||||
} else {
|
||||
return 'abgegeben' // nothing else to do for that termin
|
||||
}
|
||||
|
||||
// GENERIC STATUS
|
||||
return datum < today ? 'verpasst' : 'standard';
|
||||
},
|
||||
openBeurteilungLink(link) {
|
||||
window.open(link, '_blank')
|
||||
@@ -582,6 +591,18 @@ export const AbgabeMitarbeiterDetail = {
|
||||
class: "custom-tooltip"
|
||||
}
|
||||
},
|
||||
getTooltipBestanden() {
|
||||
return {
|
||||
value: this.$p.t('abgabetool/c4tooltipBestanden'),
|
||||
class: "custom-tooltip"
|
||||
}
|
||||
},
|
||||
getTooltipNichtBestanden() {
|
||||
return {
|
||||
value: this.$p.t('abgabetool/c4tooltipNichtBestanden'),
|
||||
class: "custom-tooltip"
|
||||
}
|
||||
},
|
||||
getProjektarbeitTitel() {
|
||||
if(this.projektarbeit?.titel) return this.projektarbeit.titel
|
||||
|
||||
@@ -753,8 +774,11 @@ export const AbgabeMitarbeiterDetail = {
|
||||
<i v-else-if="getDateStyleClass(termin) == 'verpasst'" v-tooltip.right="getTooltipVerpasst" class="fa-solid fa-calendar-xmark"></i>
|
||||
<i v-else-if="getDateStyleClass(termin) == 'abzugeben'" v-tooltip.right="getTooltipAbzugeben" class="fa-solid fa-hourglass-half"></i>
|
||||
<i v-else-if="getDateStyleClass(termin) == 'standard'" v-tooltip.right="getTooltipStandard" class="fa-solid fa-clock"></i>
|
||||
<i v-else-if="getDateStyleClass(termin) == 'abgegeben'" v-tooltip.right="getTooltipAbgegeben" class="fa-solid fa-check"></i>
|
||||
<i v-else-if="getDateStyleClass(termin) == 'abgegeben'" v-tooltip.right="getTooltipAbgegeben" class="fa-solid fa-paperclip"></i>
|
||||
<i v-else-if="getDateStyleClass(termin) == 'beurteilungerforderlich'" v-tooltip.right="getTooltipBeurteilungerforderlich" class="fa-solid fa-list-check"></i>
|
||||
<i v-else-if="getDateStyleClass(termin) == 'bestanden'" v-tooltip.right="getTooltipBestanden" class="fa-solid fa-check"></i>
|
||||
<i v-else-if="getDateStyleClass(termin) == 'nichtbestanden'" v-tooltip.right="getTooltipNichtBestanden" class="fa-solid fa-circle-exclamation"></i>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="text-start px-2" style="min-width: 150px; max-width: 300px; margin-left: 40px">
|
||||
|
||||
@@ -728,25 +728,33 @@ export const AbgabetoolAssistenz = {
|
||||
|
||||
termin.diffindays = this.dateDiffInDays(termin.datum)
|
||||
|
||||
// seperate status if termin is in the past, it needs a note but doesnt have one yet
|
||||
if(termin.bezeichnung?.benotbar && !termin.note) return 'beurteilungerforderlich'
|
||||
if (termin.abgabedatum === null && termin.upload_allowed) {
|
||||
if(datum < today) {
|
||||
return 'verpasst' // needs upload, missed it and has not submitted anything
|
||||
} else if (datum > today && termin.diffindays <= 12) {
|
||||
return 'abzugeben' // needs to upload soon
|
||||
} else {
|
||||
return 'standard' // upload in distant future
|
||||
const isLate = abgabedatum && abgabedatum > datum;
|
||||
|
||||
// GRADE STATUS
|
||||
if (termin.note) {
|
||||
if (termin.note.positiv) return 'bestanden';
|
||||
return 'nichtbestanden';
|
||||
}
|
||||
|
||||
// ACTION REQUIRED FOR GRADE
|
||||
if (termin.bezeichnung?.benotbar && datum < today) {
|
||||
return 'beurteilungerforderlich';
|
||||
}
|
||||
|
||||
// SUBMISSION STATUS
|
||||
if (termin.upload_allowed) {
|
||||
if (abgabedatum) {
|
||||
return isLate ? 'verspaetet' : 'abgegeben';
|
||||
}
|
||||
|
||||
// no submission yet
|
||||
if (datum < today) return 'verpasst';
|
||||
if (termin.diffindays <= 12) return 'abzugeben';
|
||||
return 'standard';
|
||||
}
|
||||
else if(abgabedatum > datum) {
|
||||
return 'verspaetet' // needs upload, missed it and has submitted smth late
|
||||
} else if(!termin.upload_allowed) {
|
||||
if(datum > today) return termin.diffindays <= 12 ? 'abzugeben' : 'standard'
|
||||
else if (today > datum) return 'abgegeben'
|
||||
} else {
|
||||
return 'abgegeben' // nothing else to do for that termin
|
||||
}
|
||||
|
||||
// GENERIC STATUS
|
||||
return datum < today ? 'verpasst' : 'standard';
|
||||
},
|
||||
openTimeline(val) {
|
||||
const projekt = this.projektarbeiten.find(p => p.projektarbeit_id == val.projektarbeit_id)
|
||||
|
||||
@@ -70,25 +70,34 @@ export const AbgabetoolStudent = {
|
||||
const abgabedatum = new Date(termin.abgabedatum)
|
||||
|
||||
termin.diffindays = this.dateDiffInDays(termin.datum)
|
||||
|
||||
if (termin.bezeichnung?.benotbar && !termin.note) return 'beurteilungerforderlich'
|
||||
if (termin.abgabedatum === null && termin.upload_allowed) {
|
||||
if(datum < today) {
|
||||
return 'verpasst' // needs upload, missed it and has not submitted anything
|
||||
} else if (datum > today && termin.diffindays <= 12) {
|
||||
return 'abzugeben' // needs to upload soon
|
||||
} else {
|
||||
return 'standard' // upload in distant future
|
||||
|
||||
const isLate = abgabedatum && abgabedatum > datum;
|
||||
|
||||
// GRADE STATUS
|
||||
if (termin.note) {
|
||||
if (termin.note.positiv) return 'bestanden';
|
||||
return 'nichtbestanden';
|
||||
}
|
||||
|
||||
// ACTION REQUIRED FOR GRADE
|
||||
if (termin.bezeichnung?.benotbar && datum < today) {
|
||||
return 'beurteilungerforderlich';
|
||||
}
|
||||
|
||||
// SUBMISSION STATUS
|
||||
if (termin.upload_allowed) {
|
||||
if (abgabedatum) {
|
||||
return isLate ? 'verspaetet' : 'abgegeben';
|
||||
}
|
||||
|
||||
// no submission yet
|
||||
if (datum < today) return 'verpasst';
|
||||
if (termin.diffindays <= 12) return 'abzugeben';
|
||||
return 'standard';
|
||||
}
|
||||
else if(abgabedatum > datum) {
|
||||
return 'verspaetet' // needs upload, missed it and has submitted smth late
|
||||
} else if(!termin.upload_allowed) {
|
||||
if(datum > today) return termin.diffindays <= 12 ? 'abzugeben' : 'standard'
|
||||
else if (today > datum) return 'abgegeben'
|
||||
} else {
|
||||
return 'abgegeben' // nothing else to do for that termin
|
||||
}
|
||||
|
||||
// GENERIC STATUS
|
||||
return datum < today ? 'verpasst' : 'standard';
|
||||
},
|
||||
checkQualityGatesStrict(termine) {
|
||||
let qgate1Passed = false
|
||||
|
||||
@@ -47,7 +47,6 @@ export const AbgabeterminStatusLegende = {
|
||||
<div class="col-auto" style="display: flex; align-items: center;">
|
||||
<h5>{{ $capitalize($p.t('abgabetool/c4tooltipAbgegeben')) }}</h5>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row" style="margin-bottom: 2px">
|
||||
@@ -57,7 +56,24 @@ export const AbgabeterminStatusLegende = {
|
||||
<div class="col-auto" style="display: flex; align-items: center;">
|
||||
<h5>{{ $capitalize($p.t('abgabetool/c4tooltipBeurteilungerforderlich')) }}</h5>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="row" style="margin-bottom: 2px">
|
||||
<div class="col-auto bestanden-header" style="height: 36px; width:36px; padding: 0px; display: flex; align-items: center; justify-content: center;">
|
||||
<i class="fa-solid fa-list-check"></i>
|
||||
</div>
|
||||
<div class="col-auto" style="display: flex; align-items: center;">
|
||||
<h5>{{ $capitalize($p.t('abgabetool/c4tooltipBestanden')) }}</h5>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row" style="margin-bottom: 2px">
|
||||
<div class="col-auto nichtbestanden-header" style="height: 36px; width:36px; padding: 0px; display: flex; align-items: center; justify-content: center;">
|
||||
<i class="fa-solid fa-list-check"></i>
|
||||
</div>
|
||||
<div class="col-auto" style="display: flex; align-items: center;">
|
||||
<h5>{{ $capitalize($p.t('abgabetool/c4tooltipNichtBestanden')) }}</h5>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -44476,6 +44476,46 @@ array(
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'abgabetool',
|
||||
'phrase' => 'c4tooltipBestanden',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Bestanden",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'passed',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'abgabetool',
|
||||
'phrase' => 'c4tooltipNichtBestanden',
|
||||
'insertvon' => 'system',
|
||||
'phrases' => array(
|
||||
array(
|
||||
'sprache' => 'German',
|
||||
'text' => "Nicht Bestanden",
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
),
|
||||
array(
|
||||
'sprache' => 'English',
|
||||
'text' => 'not passed',
|
||||
'description' => '',
|
||||
'insertvon' => 'system'
|
||||
)
|
||||
)
|
||||
),
|
||||
array(
|
||||
'app' => 'core',
|
||||
'category' => 'abgabetool',
|
||||
|
||||
Reference in New Issue
Block a user