feat(schedule-week): use userWeekStart in weekly schedule

This commit is contained in:
Sarah Vaupel 2020-10-28 17:47:26 +01:00
parent 0c9671b3d9
commit 145564cf77
3 changed files with 12 additions and 13 deletions

View File

@ -25,18 +25,18 @@ import Utils.Schedule.Week
getNewsR :: Handler Html
getNewsR = do
muid <- maybeAuthId
mUser <- maybeAuth
defaultLayout $ do
setTitleI MsgNewsHeading
newsSystemMessages
when (is _Nothing muid) $
when (is _Nothing mUser) $
notificationWidget NotificationBroad Info $(i18nWidgetFile "pitch")
case muid of
Just uid -> do
newsSchedule uid
case mUser of
Just user@(Entity uid _) -> do
newsSchedule user
newsUpcomingExams uid
newsUpcomingSheets uid
Nothing ->
@ -89,8 +89,8 @@ newsSystemMessages = do
-- TODO: deprecated; update once ScheduleR is finished
newsSchedule :: UserId -> Widget
newsSchedule uid = let schedule = weekSchedule uid ScheduleOffsetNone in $(widgetFile "news/schedule")
newsSchedule :: Entity User -> Widget
newsSchedule user = let schedule = weekSchedule user ScheduleOffsetNone in $(widgetFile "news/schedule")
newsUpcomingSheets :: UserId -> Widget

View File

@ -13,7 +13,7 @@ import Utils.Schedule.Week
getScheduleR, postScheduleR :: Handler Html
getScheduleR = postScheduleR
postScheduleR = do
Entity uid User{userScheduleView} <- requireAuth
user@(Entity _uid User{userScheduleView}) <- requireAuth
-- TODO: local instead of global get params?
mOptions <- lookupGlobalGetParam GetScheduleOptions
@ -94,7 +94,7 @@ postScheduleR = do
((optionsRes, optionsWidget), optionsEnctype) <- runFormGet scheduleOptionsForm
schedule <- case optionsRes of
FormSuccess ScheduleOptions{scheduleView=ScheduleViewWeek,..} -> return $ weekSchedule uid scheduleOffset
FormSuccess ScheduleOptions{scheduleView=ScheduleViewWeek,..} -> return $ weekSchedule user scheduleOffset
other -> formFailure2Alerts other >> return mempty
siteLayoutMsg MsgMenuSchedule $ do

View File

@ -18,8 +18,8 @@ import Utils.Schedule.Types
import Utils.Schedule.Week.TimeSlot
weekSchedule :: UserId -> ScheduleOffset -> Widget
weekSchedule uid scheduleOffset = do
weekSchedule :: Entity User -> ScheduleOffset -> Widget
weekSchedule (Entity uid User{userWeekStart}) scheduleOffset = do
now <- liftIO getCurrentTime
tz <- liftIO getCurrentTimeZone
ata <- getSessionActiveAuthTags
@ -112,14 +112,13 @@ weekSchedule uid scheduleOffset = do
_ -> True
in filter isRegularWithoutException occurrencesInSlot
-- TODO: Internationalize default week start (and/or make configurable)
-- TODO: auto-hide saturday and sunday (if there are no events scheduled)?
week :: [Day]
week = go dayNowOffset
where go d
| dayOfWeek d == firstDay = [d .. toEnum (fromEnum d + 6)]
| otherwise = go $ pred d
firstDay = toEnum $ fromEnum Monday + dayOffset
firstDay = toEnum $ fromEnum userWeekStart + dayOffset
-- TODO: make this configurable
timeSlotsDefaultDisplay :: Set TimeSlot