fix(workflow): add missing optional

This commit is contained in:
Sarah Vaupel 2020-04-07 20:28:03 +02:00 committed by Gregor Kleen
parent e1261761a2
commit 8608e83ef8

View File

@ -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))]