package templates
import (
"arbeitszeitmessung/helper"
"arbeitszeitmessung/models"
"fmt"
"strconv"
"time"
)
templ TeamPage(weeks []models.WorkWeek, userWeek models.WorkWeek) {
@Base()
@headerComponent()
@workWeekComponent(userWeek, false)
if len(weeks) > 0 {
Abrechnung Mitarbeiter
}
for _, week := range weeks {
@workWeekComponent(week, true)
}
}
templ workWeekComponent(week models.WorkWeek, onlyAccept bool) {
{{
year, kw := week.WeekStart.ISOWeek()
progress := (float32(week.WorktimeVirtual.Hours()) / week.User.ArbeitszeitPerWoche) * 100
}}
if !onlyAccept {
@weekPicker(week.WeekStart)
}
{ week.User.Vorname } { week.User.Name }
if !onlyAccept {
@statusCheckMark(week.CheckStatus(), models.WeekStatusSent)
Gesendet
@statusCheckMark(week.CheckStatus(), models.WeekStatusAccepted)
Akzeptiert
}
@timeGaugeComponent(int8(progress), false)
Arbeitszeit: { fmt.Sprintf("%s", helper.FormatDuration(week.Worktime)) }
Überstunden: { fmt.Sprintf("%s", helper.FormatDurationFill(week.Overtime, true)) }
for _, day := range week.Days {
@defaultWeekDayComponent(week.User, day)
}
if onlyAccept {
Woche: { fmt.Sprintf("%02d-%d", kw, year) }
} else {
@weekPicker(week.WeekStart)
}
}
templ defaultWeekDayComponent(u models.User, day models.IWorkDay) {
@timeGaugeComponent(day.GetDayProgress(u), false)
{ helper.FormatGermanDayOfWeek(day.Date()) }: { day.Date().Format("02.01.2006") }
{{ work, pause, _ := day.GetTimes(u, models.WorktimeBaseDay, false) }}
if day.IsWorkDay() || day.GetDayProgress(u) < 100 {
{ helper.FormatDuration(work) }
{ helper.FormatDuration(pause) }
}
@weekDayTypeSwitcher(day)
}
templ weekDayTypeSwitcher(day models.IWorkDay) {
switch day.Type() {
case models.DayTypeWorkday:
{{ workDay, _ := day.(*models.WorkDay) }}
@workDayWeekComponent(workDay)
case models.DayTypeCompound:
for _, c := range day.(*models.CompoundDay).DayParts {
@weekDayTypeSwitcher(c)
}
default: