package seasonsview import "git.haelnorr.com/h/oslstats/internal/db" import "git.haelnorr.com/h/oslstats/internal/view/baseview" import "time" import "strconv" import "git.haelnorr.com/h/oslstats/internal/permissions" import "git.haelnorr.com/h/oslstats/internal/contexts" templ DetailPage(season *db.Season, leaguesWithTeams []db.LeagueWithTeams) { @baseview.Layout(season.Name) {
@SeasonDetails(season, leaguesWithTeams)
} } templ SeasonDetails(season *db.Season, leaguesWithTeams []db.LeagueWithTeams) { {{ permCache := contexts.Permissions(ctx) canEditSeason := permCache.HasPermission(permissions.SeasonsUpdate) }}

{ season.Name }

{ season.ShortName }
@SeasonTypeBadge(season.Type) @SlapVersionBadge(season.SlapVersion) @StatusBadge(season, false, false)
if canEditSeason { Edit } Back to Seasons

Regular Season

Start Date: { formatDateLong(season.StartDate) }
End Date: if !season.EndDate.IsZero() { { formatDateLong(season.EndDate.Time) } } else { Not set }
Duration: if !season.EndDate.IsZero() { { formatDuration(season.StartDate, season.EndDate.Time) } } else { Ongoing }

Finals

Start Date: if !season.FinalsStartDate.IsZero() { { formatDateLong(season.FinalsStartDate.Time) } } else { Not set }
End Date: if !season.FinalsEndDate.IsZero() { { formatDateLong(season.FinalsEndDate.Time) } } else { Not set }
Duration: if !season.FinalsStartDate.IsZero() && !season.FinalsEndDate.IsZero() { { formatDuration(season.FinalsStartDate.Time, season.FinalsEndDate.Time) } } else { Not scheduled }

Leagues

if len(leaguesWithTeams) == 0 {

No leagues assigned to this season.

} else {
for _, lwt := range leaguesWithTeams {

{ lwt.League.Name }

{ lwt.League.ShortName }
if len(lwt.Teams) == 0 {

No teams yet

} else {
for _, team := range lwt.Teams {
if team.Color != "" {
} { team.Name }
}
}
}
}
} func formatDateLong(t time.Time) string { return t.Format("January 2, 2006") } func formatDuration(start, end time.Time) string { days := int(end.Sub(start).Hours()/24) + 1 if days == 1 { return "1 day" } else if days < 7 { return strconv.Itoa(days) + " days" } else if days < 30 { weeks := days / 7 if weeks == 1 { return "1 week" } return strconv.Itoa(weeks) + " weeks" } else if days < 365 { months := days / 30 if months == 1 { return "1 month" } return strconv.Itoa(months) + " months" } else { years := days / 365 if years == 1 { return "1 year" } return strconv.Itoa(years) + " years" } } templ SlapVersionBadge(version string) { switch version { case "rebound": Rebound case "slapshot1": Slapshot 1 } } templ SeasonTypeBadge(type_ string) { switch type_ { case "regular": Regular case "draft": Draft } }