package templates import ( "arbeitszeitmessung/helper" "arbeitszeitmessung/models" "fmt" "strconv" "time" ) templ weekPicker(weekStart time.Time) { {{ year, kw := weekStart.ISOWeek() }}

KW { fmt.Sprintf("%02d, %d", kw, year) }

} templ defaultWeekDayComponent(u models.User, day models.IWorkDay) {
@timeGaugeComponent(day.GetDayProgress(u), false)

{ day.Date().Format("02.01.2006") }

if day.IsWorkDay() { {{ workDay, _ := day.(*models.WorkDay) work, pause, _ := workDay.GetAllWorkTimesReal(u) }} if !workDay.RequiresAction() {
{ helper.FormatDuration(work) } { helper.FormatDuration(pause) }
switch { case !workDay.TimeFrom.Equal(workDay.TimeTo): { workDay.TimeFrom.Format("15:04") } - { workDay.TimeTo.Format("15:04") } default:

Keine Anwesenheit

}
} else {

Bitte anpassen

} } else { {{ absentDay, _ := day.(*models.Absence) }}
{ absentDay.AbwesenheitTyp.Name }
}
} templ weekDayComponent(user models.User, day models.WorkDay) { // {{ work, pause, _ := day.GetAllWorkTimesReal(user) }}
// @timeGaugeComponent(day.GetWorkDayProgress(user), false, day.RequiresAction())
if !day.RequiresAction() { }
} 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)
}
{{ week.CheckStatus() method := "accept" if !onlyAccept { method = "send" } }} if onlyAccept { if week.Status == models.WeekStatusDifferences {

Unterschiedliche Arbeitszeit zwischen Abrechnung und individuellen Buchungen

} } else { switch { case week.RequiresAction():

bitte zuerst Buchungen anpassen

case time.Since(week.WeekStart) < 24*7*time.Hour:

Die Woche kann erst am nächsten Montag gesendet werden!

case week.Status == models.WeekStatusNone:

an Vorgesetzten senden

case week.Status == models.WeekStatusSent:

an Vorgesetzten gesendet

case week.Status == models.WeekStatusAccepted:

vom Vorgesetzten bestätigt

} }
} templ userPresenceComponent(user models.User, present bool) {
if present {
Anwesend
} else {
Abwesend
}

{ user.Vorname } { user.Name }

}