$forall (scheduleEntry, slotAssociation) <- slotEvents
$case scheduleEntry
$of ScheduleCourseEvent{sceCourse=Entity _ Course{courseName},sceType,sceRoom,sceShowRoom,sceOccurrence}
#{CI.original courseName}: #{CI.original sceType} #
$if slotAssocIsCont slotAssociation
(_{MsgScheduleWeekSlotIsCont})
$if sceShowRoom
$maybe room <- sceRoom
_{MsgScheduleRoom}: ^{roomReferenceWidget room}
^{formatEitherOccurrenceW sceOccurrence}
$of ScheduleTutorial{stCourse=Entity _ Course{courseName},stName,stType,stRoom,stShowRoom,stOccurrence}
#{CI.original courseName}: #{stName} #
(
#{CI.original stType}
$if slotAssocIsCont slotAssociation
, _{MsgScheduleWeekSlotIsCont}
)
$if stShowRoom
$maybe room <- stRoom
_{MsgScheduleRoom}: ^{roomReferenceWidget room}
^{formatEitherOccurrenceW stOccurrence}
$of ScheduleExamOccurrence{seoCourse=Entity _ Course{courseName},seoExamName,seoRooms,seoStart,seoEnd}
#{CI.original courseName}: #{seoExamName} #
$if slotAssocIsCont slotAssociation
(_{MsgScheduleWeekSlotIsCont})
$case Set.toList seoRooms
$of []
$of [(mRoom, showRoom)]
$if showRoom
$maybe room <- mRoom
_{MsgScheduleRoom}: ^{roomReferenceWidget room}
$of more
_{MsgScheduleRooms}: #
$forall (idx,(mRoom,showRoom)) <- indexedList more
$if showRoom
$maybe room <- mRoom
^{roomReferenceWidget room}
$if idx < pred (length more)
; #
_{MsgScheduleOccur}: #
$if Just (utctDay seoStart) == fmap utctDay seoEnd
^{formatTimeRangeW SelFormatTime seoStart seoEnd}
$else
^{formatTimeRangeW SelFormatDateTime seoStart seoEnd}