From 8608e83ef80497b7ddcc451759a98a07b435fc08 Mon Sep 17 00:00:00 2001 From: Sarah Vaupel Date: Tue, 7 Apr 2020 20:28:03 +0200 Subject: [PATCH] fix(workflow): add missing optional --- src/Model/Types/Workflow.hs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/Model/Types/Workflow.hs b/src/Model/Types/Workflow.hs index 2fe4d1d8a..23b2ff737 100644 --- a/src/Model/Types/Workflow.hs +++ b/src/Model/Types/Workflow.hs @@ -133,7 +133,7 @@ instance (Ord fileid, Ord userid) => Ord (WorkflowEdgePayloadSpecification filei compare (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldUser{}) _ = LT -type WorkflowPayload userid fileid = forall payload. Map WorkflowEdgePayloadLabel (Seq (WorkflowEdgePayload userid fileid payload, Maybe userid, UTCTime)) +data WorkflowPayload userid fileid = forall payload. Map WorkflowEdgePayloadLabel (Seq (WorkflowEdgePayload userid fileid payload), Maybe userid, UTCTime) data WorkflowGraphEdge userid fileid = WGE @@ -188,7 +188,7 @@ instance (FromJSON userid) => FromJSON (WorkflowRole userid) where "authorized" -> do adnf <- o JSON..: "authorized" return $ WorkflowRoleAuthorized adnf - "initiator" -> return $ WorkflowRoleInitiator + "initiator" -> return WorkflowRoleInitiator _ -> terror $ "WorkflowRole parseJSON error: expected role (user|authorized|initiator), but got " <> fieldTag instance (ToJSON userid, ToJSON fileid, Ord userid) => ToJSON (WorkflowGraph userid fileid) where @@ -226,6 +226,7 @@ instance (ToJSON fileid, ToJSON userid) => ToJSON (WorkflowEdgePayloadSpecificat , "placeholder" JSON..= wepftPlaceholder , "tooltip" JSON..= wepftTooltip , "default" JSON..= wepftDefault + , "optional" JSON..= wepftOptional ] toJSON (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldNumber{..}) = JSON.object [ "tag" JSON..= ("number" :: Text) @@ -236,6 +237,7 @@ instance (ToJSON fileid, ToJSON userid) => ToJSON (WorkflowEdgePayloadSpecificat , "min" JSON..= wepfnMin , "max" JSON..= wepfnMax , "step" JSON..= wepfnStep + , "optional" JSON..= wepfnOptional ] toJSON (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldBool{..}) = JSON.object [ "tag" JSON..= ("bool" :: Text) @@ -248,12 +250,14 @@ instance (ToJSON fileid, ToJSON userid) => ToJSON (WorkflowEdgePayloadSpecificat , "label" JSON..= wepffLabel , "tooltip" JSON..= wepffTooltip , "default" JSON..= wepffDefault + , "optional" JSON..= wepffOptional ] toJSON (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldUser{..}) = JSON.object [ "tag" JSON..= ("user" :: Text) , "label" JSON..= wepfuLabel , "tooltip" JSON..= wepfuTooltip , "default" JSON..= wepfuDefault + , "optional" JSON..= wepfuOptional ] instance (FromJSON fileid, FromJSON userid) => FromJSON (WorkflowEdgePayloadSpecification fileid userid) where parseJSON = JSON.withObject "WorkflowEdgePayloadSpecification" $ \o -> do @@ -264,6 +268,7 @@ instance (FromJSON fileid, FromJSON userid) => FromJSON (WorkflowEdgePayloadSpec wepftPlaceholder <- o JSON..: "placeholder" wepftTooltip <- o JSON..:? "tooltip" wepftDefault <- o JSON..:? "default" + wepftOptional <- o JSON..:? "optional" return $ WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldText{..} "number" -> do wepfnLabel <- o JSON..: "label" @@ -273,6 +278,7 @@ instance (FromJSON fileid, FromJSON userid) => FromJSON (WorkflowEdgePayloadSpec wepfnMin <- o JSON..:? "min" wepfnMax <- o JSON..:? "max" wepfnStep <- o JSON..: "step" + wepfnOptional <- o JSON..:? "optional" return $ WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldNumber{..} "bool" -> do wepfbLabel <- o JSON..: "label" @@ -283,11 +289,13 @@ instance (FromJSON fileid, FromJSON userid) => FromJSON (WorkflowEdgePayloadSpec wepffLabel <- o JSON..: "label" wepffTooltip <- o JSON..:? "tooltip" wepffDefault <- (o JSON..:? "default" :: Parser (Maybe fileid)) + wepffOptional <- o JSON..:? "optional" return $ WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldFile{..} "user" -> do wepfuLabel <- o JSON..: "label" wepfuTooltip <- o JSON..:? "tooltip" wepfuDefault <- (o JSON..:? "default" :: Parser (Maybe userid)) + wepfuOptional <- o JSON..:? "optional" return $ WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldUser{..} _ -> terror $ "WorkflowEdgePayloadSpecification parseJSON error: expected field tag (text|number|bool|file|user), but got " <> fieldTag @@ -326,4 +334,4 @@ testGraph = WorkflowGraph $ Map.fromList [("node1", (WGN (WGNS "id" True (Just " --testGraph = WorkflowGraph $ Map.fromList [("node1", (WGN (WGNS "id" True (Just "someLabel")), Set.fromList [WGE (Set.fromList [WorkflowRoleUser "user-id", WorkflowRoleInitiator]) "node1" (Map.fromList [("sometext", impureNonNull $ Set.fromList [WorkflowEdgePayloadSpecification $ WorkflowEdgePayloadFieldText "text-label" "text-placeholder" (Just "text-tooltip") (Just "text-default")]),("someuser", impureNonNull $ Set.fromList [WorkflowEdgePayloadSpecification $ WorkflowEdgePayloadFieldUser "user-label" Nothing Nothing]),("somebool", impureNonNull $ Set.fromList [WorkflowEdgePayloadSpecification $ WorkflowEdgePayloadFieldBool "bool-label" Nothing (Just True)])])]))] --testPayload :: WorkflowPayload Text Text -testPayload = Map.fromList [("edge-payload-label", (Seq.singleton (WEPText "hello world!"), Nothing, UTCTime (ModifiedJulianDay 58946) 57250))] +testPayload = Map.fromList [("edge-payload-label" :: WorkflowEdgePayloadLabel, (Seq.singleton (WEPText "hello world!"), Just "actor-user-id" :: Maybe Text, UTCTime (ModifiedJulianDay 58946) 57250))]