feat(profile): implement profile form validation wrt timeslots
This commit is contained in:
parent
3b90b9caa9
commit
52d027259f
@ -119,6 +119,12 @@ ScheduleWeekTimeslotLength: Länge (in Stunden) der in der Wochenansicht dargest
|
|||||||
ScheduleWeekTimeslotLengthTip: Die Länge (in Stunden) jedes in der Wochenansicht der Terminübersicht als separate Zeile dargestellten Zeitslots
|
ScheduleWeekTimeslotLengthTip: Die Länge (in Stunden) jedes in der Wochenansicht der Terminübersicht als separate Zeile dargestellten Zeitslots
|
||||||
ScheduleWeekTimeslotLengthPlaceholder: Zeitslotlänge
|
ScheduleWeekTimeslotLengthPlaceholder: Zeitslotlänge
|
||||||
|
|
||||||
|
ScheduleWeekTimeFromMustBeAValidTime n@Int: Erster Zeitslot der Wochenansicht muss zwischen 0 und #{n} liegen
|
||||||
|
ScheduleWeekTimeToMustBeAValidTime: Letzter Zeitslot der Wochenansicht muss zwischen 0 und 24 liegen
|
||||||
|
ScheduleWeekTimeToMustBeAfterTimeFrom: Letzter Zeitslot muss nach erstem Zeitslot der Wochenansicht liegen
|
||||||
|
ScheduleWeekTimeslotLengthMustBeGreaterZero: Zeitslotlänge muss größer als null sein
|
||||||
|
ScheduleWeekTimeFromToMustMatchTimeslotLength: Beginn des ersten und letzten Zeitslots der Wochenansicht muss mit der Zeitslotlänge übereinstimmen
|
||||||
|
|
||||||
ScheduleOffsetWeekBackwardWeek: 1 Woche zurück
|
ScheduleOffsetWeekBackwardWeek: 1 Woche zurück
|
||||||
ScheduleOffsetWeekBackwardDay: 1 Tag zurück
|
ScheduleOffsetWeekBackwardDay: 1 Tag zurück
|
||||||
ScheduleOffsetWeekCurrent: Zu aktueller Woche springen
|
ScheduleOffsetWeekCurrent: Zu aktueller Woche springen
|
||||||
|
|||||||
@ -120,6 +120,12 @@ ScheduleWeekTimeslotLength: Length (in hours) of timeslots to display in the wee
|
|||||||
ScheduleWeekTimeslotLengthTip: The length (in hours) of each timeslot to display as a separate row in the weekly schedule
|
ScheduleWeekTimeslotLengthTip: The length (in hours) of each timeslot to display as a separate row in the weekly schedule
|
||||||
ScheduleWeekTimeslotLengthPlaceholder: Timeslot length
|
ScheduleWeekTimeslotLengthPlaceholder: Timeslot length
|
||||||
|
|
||||||
|
ScheduleWeekTimeFromMustBeAValidTime n@Int: First timeslot to display in the weekly schedule must be between 0 and #{n}
|
||||||
|
ScheduleWeekTimeToMustBeAValidTime: Last timeslot to display in the weekly schedule must be between 0 and 24
|
||||||
|
ScheduleWeekTimeToMustBeAfterTimeFrom: Last timeslot must be after first timeslot to display in the weekly schedule
|
||||||
|
ScheduleWeekTimeslotLengthMustBeGreaterZero: Timeslot length must be greater than zero
|
||||||
|
ScheduleWeekTimeFromToMustMatchTimeslotLength: Start of the first and last timeslots to display in the weekly schedule must match with the given timeslot length
|
||||||
|
|
||||||
ScheduleOffsetWeekBackwardWeek: 1 week back
|
ScheduleOffsetWeekBackwardWeek: 1 week back
|
||||||
ScheduleOffsetWeekBackwardDay: 1 day back
|
ScheduleOffsetWeekBackwardDay: 1 day back
|
||||||
ScheduleOffsetWeekCurrent: Jump to current week
|
ScheduleOffsetWeekCurrent: Jump to current week
|
||||||
|
|||||||
@ -137,7 +137,7 @@ makeSettingForm template html = do
|
|||||||
<*> schoolsForm (stgSchools <$> template)
|
<*> schoolsForm (stgSchools <$> template)
|
||||||
<*> notificationForm (stgNotificationSettings <$> template)
|
<*> notificationForm (stgNotificationSettings <$> template)
|
||||||
<*> allocationNotificationForm (stgAllocationNotificationSettings <$> template)
|
<*> allocationNotificationForm (stgAllocationNotificationSettings <$> template)
|
||||||
return (result, widget) -- no validation required here
|
return (result, widget)
|
||||||
where
|
where
|
||||||
scheduleViewList mr = [ Option (mr t) t (toPathPiece t) | t <- universeF ]
|
scheduleViewList mr = [ Option (mr t) t (toPathPiece t) | t <- universeF ]
|
||||||
themeList = [ Option (toMessage t) t (toPathPiece t) | t <- universeF ]
|
themeList = [ Option (toMessage t) t (toPathPiece t) | t <- universeF ]
|
||||||
@ -338,6 +338,22 @@ validateSettings User{..} = do
|
|||||||
guardValidation MsgUserDisplayNameInvalid $
|
guardValidation MsgUserDisplayNameInvalid $
|
||||||
validDisplayName userTitle userFirstName userSurname userDisplayName'
|
validDisplayName userTitle userFirstName userSurname userDisplayName'
|
||||||
|
|
||||||
|
userScheduleWeekTimeFrom' <- use _stgScheduleWeekTimeFrom
|
||||||
|
userScheduleWeekTimeTo' <- use _stgScheduleWeekTimeTo
|
||||||
|
userScheduleWeekTimeslotLength' <- use _stgScheduleWeekTimeslotLength
|
||||||
|
|
||||||
|
let maxFrom = 25 - userScheduleWeekTimeslotLength'
|
||||||
|
guardValidation (MsgScheduleWeekTimeFromMustBeAValidTime maxFrom)
|
||||||
|
$ 0 < userScheduleWeekTimeFrom' && userScheduleWeekTimeFrom' < maxFrom
|
||||||
|
guardValidation MsgScheduleWeekTimeToMustBeAValidTime
|
||||||
|
$ 0 < userScheduleWeekTimeTo' && userScheduleWeekTimeTo' < 25
|
||||||
|
guardValidation MsgScheduleWeekTimeToMustBeAfterTimeFrom
|
||||||
|
$ userScheduleWeekTimeTo' > userScheduleWeekTimeFrom'
|
||||||
|
guardValidation MsgScheduleWeekTimeslotLengthMustBeGreaterZero
|
||||||
|
$ userScheduleWeekTimeslotLength' > 0
|
||||||
|
guardValidation MsgScheduleWeekTimeFromToMustMatchTimeslotLength
|
||||||
|
$ userScheduleWeekTimeTo' `elem` [userScheduleWeekTimeFrom', userScheduleWeekTimeFrom'+userScheduleWeekTimeslotLength' .. 24-userScheduleWeekTimeslotLength']
|
||||||
|
|
||||||
|
|
||||||
data ButtonResetTokens = BtnResetTokens
|
data ButtonResetTokens = BtnResetTokens
|
||||||
deriving (Enum, Eq, Ord, Bounded, Read, Show, Generic, Typeable)
|
deriving (Enum, Eq, Ord, Bounded, Read, Show, Generic, Typeable)
|
||||||
|
|||||||
Reference in New Issue
Block a user