From eae40012bff08e93f493debf77a0c4ef593ee0dd Mon Sep 17 00:00:00 2001 From: JP Hastings-Spital Date: Tue, 26 Dec 2023 09:27:08 +0000 Subject: [PATCH] Multi-day events are always daytime --- layouts/calendar/list.html | 7 +++++-- layouts/partials/iso8601.duration | 12 ++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/layouts/calendar/list.html b/layouts/calendar/list.html index 552f4477..cd453453 100644 --- a/layouts/calendar/list.html +++ b/layouts/calendar/list.html @@ -17,7 +17,7 @@ {{ $events := dict }} {{ range $page := .Data.Pages }} {{ range $page.Params.timings }} - {{ $event := dict "Title" $page.Title "Page" $page.Page "Date" (time.AsTime .starts) }} + {{ $event := dict "Title" $page.Title "Page" $page.Page "Date" (time.AsTime .starts) "Duration" (partial "iso8601.duration" .duration) }} {{ if $event.Date.Before time.Now }}{{ continue }}{{ end }} {{ $bundle := $event.Date.Format "Jan 2006" }} {{ $events = merge $events (dict $bundle (sort ((index $events $bundle) | append $event) "Date" "asc")) }} @@ -35,7 +35,10 @@ {{ if .Page.Params.emoji }}{{ .Page.Params.emoji }}{{ end }} {{.Page.Title}} - {{ .Date.Format "Jan 2"}} {{ if or (lt (.Date.Format "15") 9) (gt (.Date.Format "15") 17) }}☾{{ else }}☀︎{{ end }} + {{- $hour := .Date.Format "15" -}} + {{- $duration := .Duration.Hours -}} + {{- $daytime := or (ge $duration 24) (and (gt $hour 9) (lt $hour 17)) }} + {{ .Date.Format "Jan 2"}} {{ if $daytime }}☀︎{{ else }}☾{{ end }} diff --git a/layouts/partials/iso8601.duration b/layouts/partials/iso8601.duration index 4cabde67..024b33ad 100644 --- a/layouts/partials/iso8601.duration +++ b/layouts/partials/iso8601.duration @@ -2,12 +2,12 @@ {{ $timePart := (index $parts 1 | strings.ToLower) }} {{ if eq $timePart "" }}{{ $timePart = "0s" }}{{ end }} {{ $duration := time.ParseDuration $timePart }} -{{ $dayPart := replaceRE `^(\d+)D$` `$1` (index $parts 0) }} -{{ with $dayPart }} +{{ $dayCount := replaceRE `^(\d+)D$` `$1` (index $parts 0) }} +{{ with $dayCount }} {{ $asHours := printf "%dh" (mul (int .) 24) }} - {{ $origin := time.Now }} - {{ $origin.Add (time.ParseDuration $asHours) }} - {{ $origin.Add $duration }} - {{ $duration = $origin.Sub $origin }} + {{ $origin := time "1970-01-01" }} + {{ $later := $origin.Add (time.ParseDuration $asHours) }} + {{ $later = $later.Add $duration }} + {{ $duration = $later.Sub $origin }} {{ end }} {{ return $duration }}