chore: always show the correct ignore/reconsider button
This commit is contained in:
parent
b2d6eada17
commit
a36f0deb09
@ -107,20 +107,33 @@ examAutoOccurrenceNudgeForm occId protoForm html = do
|
|||||||
oldDataView = fieldView (secretJsonField :: Field Handler _) oldDataId (toPathPiece PostExamAutoOccurrencePrevious) [] (Right . fromMaybe protoForm' $ formResult' res) False
|
oldDataView = fieldView (secretJsonField :: Field Handler _) oldDataId (toPathPiece PostExamAutoOccurrencePrevious) [] (Right . fromMaybe protoForm' $ formResult' res) False
|
||||||
return (res, wgt <> oldDataView)
|
return (res, wgt <> oldDataView)
|
||||||
|
|
||||||
examAutoOccurrenceIgnoreRoomsForm :: ExamOccurrenceId -> Maybe ExamAutoOccurrenceCalculateForm -> Form ExamAutoOccurrenceCalculateForm
|
examAutoOccurrenceIgnoreRoomsForm :: ExamOccurrenceId
|
||||||
examAutoOccurrenceIgnoreRoomsForm occId protoForm html = do
|
-> Maybe ExamAutoOccurrenceCalculateForm
|
||||||
|
-> Maybe ExamAutoOccurrenceCalculateForm
|
||||||
|
-> Form ExamAutoOccurrenceCalculateForm
|
||||||
|
examAutoOccurrenceIgnoreRoomsForm occId calculateRes protoForm html = do
|
||||||
cID <- encrypt occId
|
cID <- encrypt occId
|
||||||
oldDataRes <- globalPostParamField PostExamAutoOccurrencePrevious secretJsonField
|
oldDataRes <- globalPostParamField PostExamAutoOccurrencePrevious secretJsonField
|
||||||
oldDataId <- newIdent
|
oldDataId <- newIdent
|
||||||
let shownButtons = case eaocIgnoreRooms . eaofConfig $ fromMaybe def oldDataRes of
|
|
||||||
ExamAutoOccurrenceIgnoreRooms {eaoirIgnored}
|
|
||||||
| Set.member occId eaoirIgnored
|
|
||||||
-> [BtnExamAutoOccurrenceReconsider]
|
|
||||||
| otherwise
|
|
||||||
-> [BtnExamAutoOccurrenceIgnore]
|
|
||||||
(btnRes, wgt) <- identifyForm (FIDExamAutoOccurrenceIgnoreRoom $ ciphertext cID) (buttonForm' shownButtons) html
|
|
||||||
|
|
||||||
let protoForm' = fromMaybe def $ protoForm <|> oldDataRes
|
-- create both buttons
|
||||||
|
(btnResIgnore, wgtIgnore) <- identifyForm (FIDExamAutoOccurrenceIgnoreRoom $ ciphertext cID) (buttonForm' [BtnExamAutoOccurrenceIgnore]) html
|
||||||
|
(btnResReconsider, wgtReconsider) <- identifyForm (FIDExamAutoOccurrenceIgnoreRoom $ ciphertext cID) (buttonForm' [BtnExamAutoOccurrenceReconsider]) html
|
||||||
|
|
||||||
|
-- choose the relevant button to display
|
||||||
|
let btnRes = btnResIgnore <|> btnResReconsider
|
||||||
|
wgt = case btnRes of
|
||||||
|
(FormSuccess BtnExamAutoOccurrenceIgnore) -> wgtReconsider
|
||||||
|
(FormSuccess BtnExamAutoOccurrenceReconsider) -> wgtIgnore
|
||||||
|
_otherwise -> case eaocIgnoreRooms . eaofConfig $ fromMaybe def $ calculateRes <|> oldDataRes of
|
||||||
|
ExamAutoOccurrenceIgnoreRooms {eaoirIgnored}
|
||||||
|
| Set.member occId eaoirIgnored
|
||||||
|
-> wgtReconsider
|
||||||
|
| otherwise
|
||||||
|
-> wgtIgnore
|
||||||
|
|
||||||
|
|
||||||
|
let protoForm' = fromMaybe def $ calculateRes <|> protoForm <|> oldDataRes
|
||||||
genForm btn = protoForm' & _eaofConfig . _eaocIgnoreRooms . _eaoirIgnored %~ action occId
|
genForm btn = protoForm' & _eaofConfig . _eaocIgnoreRooms . _eaoirIgnored %~ action occId
|
||||||
where
|
where
|
||||||
action = case btn of
|
action = case btn of
|
||||||
@ -166,16 +179,12 @@ postEAutoOccurrenceR tid ssh csh examn = do
|
|||||||
occurrences' = Map.fromList $ map (\(Entity eoId ExamOccurrence{..}) -> (eoId, _examOccurrenceCapacityIso # (fromIntegral <$> examOccurrenceCapacity))) occurrences
|
occurrences' = Map.fromList $ map (\(Entity eoId ExamOccurrence{..}) -> (eoId, _examOccurrenceCapacityIso # (fromIntegral <$> examOccurrenceCapacity))) occurrences
|
||||||
((calculateRes, _), _) <- runFormPost $ examAutoOccurrenceCalculateForm occurrences' participants' def
|
((calculateRes, _), _) <- runFormPost $ examAutoOccurrenceCalculateForm occurrences' participants' def
|
||||||
|
|
||||||
liftIO $ do
|
|
||||||
putStrLn "-------------------"
|
|
||||||
print calculateRes
|
|
||||||
putStrLn "-------------------"
|
|
||||||
|
|
||||||
(nudgeRes, ignoreRes) <- mdo
|
(nudgeRes, ignoreRes) <- mdo
|
||||||
nudgeRes <- sequence . flip Map.fromSet (setOf (folded . _entityKey) occurrences) $ \occId ->
|
nudgeRes <- sequence . flip Map.fromSet (setOf (folded . _entityKey) occurrences) $ \occId ->
|
||||||
runFormPost $ examAutoOccurrenceNudgeForm occId (formResult' . asum $ calculateRes : nudgeRes ^.. ifolded . ifiltered (\occId' _ -> occId' /= occId) . _1 . _1 ++ ignoreRes ^.. folded . _1 . _1)
|
runFormPost $ examAutoOccurrenceNudgeForm occId (formResult' . asum $ nudgeRes ^.. ifolded . ifiltered (\occId' _ -> occId' /= occId) . _1 . _1 ++ ignoreRes ^.. folded . _1 . _1)
|
||||||
ignoreRes <- sequence . flip Map.fromSet (setOf (folded . _entityKey) occurrences) $ \occId ->
|
ignoreRes <- sequence . flip Map.fromSet (setOf (folded . _entityKey) occurrences) $ \occId ->
|
||||||
runFormPost $ examAutoOccurrenceIgnoreRoomsForm occId (formResult' . asum $ calculateRes : nudgeRes ^.. folded . _1 . _1 ++ ignoreRes ^.. ifolded . ifiltered (\occId' _ -> occId' /= occId) . _1 . _1)
|
runFormPost $ examAutoOccurrenceIgnoreRoomsForm occId (formResult' calculateRes) (formResult' . asum $ nudgeRes ^.. folded . _1 . _1 ++ ignoreRes ^.. ifolded . ifiltered (\occId' _ -> occId' /= occId) . _1 . _1)
|
||||||
return (nudgeRes, ignoreRes)
|
return (nudgeRes, ignoreRes)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user