show per-day times for multi-day events
1 file changed, 22 insertions(+), 7 deletions(-)
changed files
M templates/calendar.go → templates/calendar.go
@@ -1,6 +1,7 @@ package templates import ( + "fmt" "time" g "go.alanpearce.eu/gomponents"@@ -42,20 +43,27 @@ "today": date.IsToday(), }, H3( Time( - DateTime(date.UTC().Format(time.DateOnly)), + DateTime(date.Format(time.DateOnly)), g.Text(date.Format("Mon _2"))), ), g.Map(date.Events, func(e *calendar.Event) g.Node { return Div( Class("event"), - Time( - DateTime(e.StartTime.UTC().Format(time.DateOnly)), - g.Text(e.StartTime.Format("15:04")), + TitleAttr( + fmt.Sprintf( + "%s–%s", + e.StartTime.Format(time.RFC1123), + e.EndTime.Format(time.RFC1123), + ), + ), + g.If(e.StartTime.Before(date.BeginningOfDay()), + CTime(date.BeginningOfDay()), + CTime(e.StartTime), ), g.Text("–"), - Time( - DateTime(e.EndTime.UTC().Format(time.DateOnly)), - g.Text(e.EndTime.Format("15:04")), + g.If(e.EndTime.After(date.EndOfDay()), + CTime(date.EndOfDay()), + CTime(e.EndTime), ), ) }),@@ -67,3 +75,10 @@ P(g.Textf("Timezone is %s", site.Timezone.String())), ), ) } + +func CTime(date calendar.Date) g.Node { + return Time( + DateTime(date.Format(time.RFC3339)), + g.Text(date.Format("15:04")), + ) +}