diff options
-rw-r--r-- | module/output/html.scm | 4 | ||||
-rw-r--r-- | module/vcomponent/datetime.scm | 34 |
2 files changed, 20 insertions, 18 deletions
diff --git a/module/output/html.scm b/module/output/html.scm index 5e09d30f..70c3b8a9 100644 --- a/module/output/html.scm +++ b/module/output/html.scm @@ -186,12 +186,12 @@ "unknown")) ,(when (and (attr ev 'PARTSTAT) (string= "TENTATIVE" (attr ev 'PARTSTAT))) " tentative") - ,(when (date<? (as-date (attr ev 'DTSTART)) date) + ,(when (date<? (as-date (get-datetime (attr ev 'DTSTART))) date) " continued") ;; TODO all day events usually have the day after as DTEND. ;; So a whole day event the 6 june would have a DTEND of the ;; 7 june. - ,(when (date<? date (as-date (attr ev 'DTEND))) + ,(when (date<? date (as-date (get-datetime (attr ev 'DTEND)))) " continuing")) (style ,style)) (div (@ (class "event-inner")) diff --git a/module/vcomponent/datetime.scm b/module/vcomponent/datetime.scm index e389183f..d693782c 100644 --- a/module/vcomponent/datetime.scm +++ b/module/vcomponent/datetime.scm @@ -74,22 +74,24 @@ Event must have the DTSTART and DTEND attribute set." ;; to a datetime to allow for more explicit TZ handling? (define-public (event-length/day date e) ;; TODO date= > 2 elements - (cond [(and (date= (as-date (attr e 'DTSTART)) - (as-date (attr e 'DTEND))) - (date= (as-date (attr e 'DTSTART)) - date)) - (time- (as-time (attr e 'DTEND)) - (as-time (attr e 'DTSTART)))] - ;; Starts today, end in future day - [(date= (as-date (attr e 'DTSTART)) - date) - (time- #24:00:00 (as-time (attr e 'DTSTART)))] - ;; Ends today, start earlier day - [(date= (as-date (attr e 'DTEND)) - date) - (as-time (attr e 'DTEND))] - ;; start earlier date, end later date - [else #24:00:00])) + (let ((start (get-datetime (attr e 'DTSTART))) + (end (get-datetime (attr e 'DTEND)))) + (cond [(and (date= (as-date start) + (as-date end)) + (date= (as-date start) + date)) + (time- (as-time end) + (as-time start))] + ;; Starts today, end in future day + [(date= (as-date start) + date) + (time- #24:00:00 (as-time start))] + ;; Ends today, start earlier day + [(date= (as-date end) + date) + (as-time end)] + ;; start earlier date, end later date + [else #24:00:00]))) ;; 22:00 - 03:00 |