This commit is contained in:
@@ -1,10 +1,7 @@
|
||||
package templates
|
||||
|
||||
import (
|
||||
"arbeitszeitmessung/helper"
|
||||
"arbeitszeitmessung/models"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
@@ -19,13 +16,17 @@ templ Base() {
|
||||
}
|
||||
|
||||
templ TimePage(workDays []models.WorkDay, lastSub time.Time) {
|
||||
{{
|
||||
allDays := ctx.Value("days").([]models.IWorkDay)
|
||||
}}
|
||||
@Base()
|
||||
@headerComponent()
|
||||
<div class="grid-main divide-y-1">
|
||||
@inputForm()
|
||||
for _, day := range workDays {
|
||||
@dayComponent(day, day.Day.Before(lastSub))
|
||||
if (day.Day.Weekday() == time.Monday) {
|
||||
for _, day := range allDays {
|
||||
@defaultDayComponent(day)
|
||||
// @dayComponent(day, day.Day.Before(lastSub))
|
||||
if (day.Date().Weekday() == time.Monday) {
|
||||
<div class="grid-sub responsive bg-neutral-300 h-2"></div>
|
||||
}
|
||||
}
|
||||
@@ -95,72 +96,75 @@ templ statusCheckMark(status models.WeekStatus, target models.WeekStatus) {
|
||||
templ TeamPage(weeks []models.WorkWeek, userWeek models.WorkWeek) {
|
||||
@Base()
|
||||
@headerComponent()
|
||||
{{
|
||||
progress := (float32(userWeek.Worktime.Hours()) / userWeek.User.ArbeitszeitPerWoche) * 100
|
||||
}}
|
||||
<div class="grid-main divide-y-1">
|
||||
<div class="grid-sub lg:divide-x-1 max-md:divide-y-1 responsive @container">
|
||||
<div class="grid-cell col-span-full bg-neutral-300 lg:border-0">
|
||||
<h2 class="text-2xl uppercase font-bold">Eigene Abrechnung</h2>
|
||||
</div>
|
||||
<div class="grid-cell flex flex-col max-md:border-b-1 max-md:bg-neutral-300 gap-2 ">
|
||||
<div class="lg:hidden">
|
||||
@weekPicker(userWeek.WeekStart)
|
||||
</div>
|
||||
<h2 class="uppercase font-bold">{ fmt.Sprintf("%s %s", userWeek.User.Vorname, userWeek.User.Name) }</h2>
|
||||
<div class="grid grid-cols-5 gap-2 lg:grid-cols-1">
|
||||
<div class="col-span-2">
|
||||
<span class="flex flex-row gap-2 items-center">
|
||||
@statusCheckMark(userWeek.CheckStatus(), models.WeekStatusSent)
|
||||
Gesendet
|
||||
</span>
|
||||
<span class="flex flex-row gap-2 items-center">
|
||||
@statusCheckMark(userWeek.CheckStatus(), models.WeekStatusAccepted)
|
||||
Akzeptiert
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex flex-row gap-2 col-span-3">
|
||||
@timeGaugeComponent(uint8(progress), false, false)
|
||||
<div>
|
||||
<p>Arbeitszeit: { fmt.Sprintf("%s", helper.FormatDuration(userWeek.Worktime)) }</p>
|
||||
<p>Überstunden: { fmt.Sprintf("%s", helper.FormatDuration(userWeek.Overtime)) }</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid-cell col-span-3 flex flex-col @7xl:grid @7xl:grid-cols-5 gap-2 py-4 content-baseline">
|
||||
for _, day := range userWeek.WorkDays {
|
||||
@weekDayComponent(userWeek.User, day)
|
||||
}
|
||||
</div>
|
||||
<div class="grid-cell flex flex-col gap-2 justify-between">
|
||||
<div class="max-md:hidden">
|
||||
@weekPicker(userWeek.WeekStart)
|
||||
</div>
|
||||
<form method="post" class="flex flex-col gap-2">
|
||||
<input type="hidden" name="method" value="send"/>
|
||||
<input type="hidden" name="user" value={ strconv.Itoa(userWeek.User.PersonalNummer) }/>
|
||||
<input type="hidden" name="week" value={ userWeek.WeekStart.Format(time.DateOnly) }/>
|
||||
switch userWeek.CheckStatus() {
|
||||
case models.WeekStatusNone:
|
||||
<p class="text-sm">an Vorgesetzten senden</p>
|
||||
case models.WeekStatusSent:
|
||||
<p class="text-sm">an Vorgesetzten gesendet</p>
|
||||
case models.WeekStatusAccepted:
|
||||
<p class="text-sm">vom Vorgesetzten bestätigt</p>
|
||||
}
|
||||
<button disabled?={ userWeek.Status < models.WeekStatusSent } type="submit" class="btn">Korrigieren</button>
|
||||
<button disabled?={ time.Since(userWeek.WeekStart) < 24*7*time.Hour || userWeek.Status >= models.WeekStatusSent || userWeek.RequiresAction() } type="submit" class="btn">Senden</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@workWeekComponent(userWeek, false)
|
||||
// <div class="grid-sub lg:divide-x-1 max-md:divide-y-1 responsive @container">
|
||||
// <div class="grid-cell col-span-full bg-neutral-300 lg:border-0">
|
||||
// <h2 class="text-2xl uppercase font-bold">Eigene Abrechnung</h2>
|
||||
// </div>
|
||||
// <div class="grid-cell flex flex-col max-md:border-b-1 max-md:bg-neutral-300 gap-2 ">
|
||||
// <div class="lg:hidden">
|
||||
// @weekPicker(userWeek.WeekStart)
|
||||
// </div>
|
||||
// <h2 class="uppercase font-bold">{ fmt.Sprintf("%s %s", userWeek.User.Vorname, userWeek.User.Name) }</h2>
|
||||
// <div class="grid grid-cols-5 gap-2 lg:grid-cols-1">
|
||||
// <div class="col-span-2">
|
||||
// <span class="flex flex-row gap-2 items-center">
|
||||
// @statusCheckMark(userWeek.CheckStatus(), models.WeekStatusSent)
|
||||
// Gesendet
|
||||
// </span>
|
||||
// <span class="flex flex-row gap-2 items-center">
|
||||
// @statusCheckMark(userWeek.CheckStatus(), models.WeekStatusAccepted)
|
||||
// Akzeptiert
|
||||
// </span>
|
||||
// </div>
|
||||
// <div class="flex flex-row gap-2 col-span-3">
|
||||
// @timeGaugeComponent(int8(progress), false)
|
||||
// <div>
|
||||
// <p>Arbeitszeit: { fmt.Sprintf("%s", helper.FormatDuration(userWeek.Worktime)) }</p>
|
||||
// <p>Überstunden: { fmt.Sprintf("%s", helper.FormatDurationFill(userWeek.Overtime, true)) }</p>
|
||||
// </div>
|
||||
// </div>
|
||||
// </div>
|
||||
// </div>
|
||||
// <div class="grid-cell col-span-3 flex flex-col @7xl:grid @7xl:grid-cols-5 gap-2 py-4 content-baseline">
|
||||
// for _, day := range userWeek.Days {
|
||||
// @defaultWeekDayComponent(userWeek.User, day)
|
||||
// }
|
||||
// </div>
|
||||
// <div class="grid-cell flex flex-col gap-2 justify-between">
|
||||
// <div class="max-md:hidden">
|
||||
// @weekPicker(userWeek.WeekStart)
|
||||
// </div>
|
||||
// <form method="post" class="flex flex-col gap-2">
|
||||
// <input type="hidden" name="method" value="send"/>
|
||||
// <input type="hidden" name="user" value={ strconv.Itoa(userWeek.User.PersonalNummer) }/>
|
||||
// <input type="hidden" name="week" value={ userWeek.WeekStart.Format(time.DateOnly) }/>
|
||||
// switch userWeek.CheckStatus() {
|
||||
// case models.WeekStatusNone:
|
||||
// <p class="text-sm">an Vorgesetzten senden</p>
|
||||
// case models.WeekStatusSent:
|
||||
// <p class="text-sm">an Vorgesetzten gesendet</p>
|
||||
// case models.WeekStatusAccepted:
|
||||
// <p class="text-sm">vom Vorgesetzten bestätigt</p>
|
||||
// }
|
||||
// <button disabled?={ userWeek.Status < models.WeekStatusSent } type="submit" class="btn">Korrigieren</button>
|
||||
// <button disabled?={ time.Since(userWeek.WeekStart) < 24*7*time.Hour || userWeek.Status >= models.WeekStatusSent || userWeek.RequiresAction() } type="submit" class="btn">Senden</button>
|
||||
// </form>
|
||||
// </div>
|
||||
// </div>
|
||||
if len(weeks) > 0 {
|
||||
<div class="grid-cell col-span-full bg-neutral-300">
|
||||
<h2 class="text-2xl uppercase font-bold">Abrechnung Mitarbeiter</h2>
|
||||
</div>
|
||||
}
|
||||
for _, week := range weeks {
|
||||
@employeComponent(week)
|
||||
@workWeekComponent(week, true)
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user