chore(workflows): refactor names and add label to payload
This commit is contained in:
parent
4d6d4ec9f6
commit
44b3b5faee
@ -42,35 +42,45 @@ data WorkflowGraphNode' userid fileid = WGN'
|
||||
type WorkflowGraphNodeLabel = CI Text
|
||||
|
||||
|
||||
data WorkflowEdgePayload userid fileid (payload :: *) where
|
||||
WEPText :: Text -> WorkflowEdgePayload userid fileid Text
|
||||
WEPNumber :: Scientific -> WorkflowEdgePayload userid fileid Scientific
|
||||
WEPBool :: Bool -> WorkflowEdgePayload userid fileid Bool
|
||||
WEPFile :: fileid -> WorkflowEdgePayload userid fileid fileid
|
||||
WEPUser :: userid -> WorkflowEdgePayload userid fileid userid
|
||||
data WorkflowFieldPayload userid fileid (payload :: *) where
|
||||
WFPText :: { wfptLabel :: Text
|
||||
, wfptText :: Text
|
||||
} -> WorkflowFieldPayload userid fileid Text
|
||||
WFPNumber :: { wfpnLabel :: Text
|
||||
, wfpnNumber :: Scientific
|
||||
} -> WorkflowFieldPayload userid fileid Scientific
|
||||
WFPBool :: { wfpbLabel :: Text
|
||||
, wfpbBool :: Bool
|
||||
} -> WorkflowFieldPayload userid fileid Bool
|
||||
WFPFile :: { wfpfLabel :: Text
|
||||
, wfpfFile :: fileid
|
||||
} -> WorkflowFieldPayload userid fileid fileid
|
||||
WFPUser :: { wfpuLabel :: Text
|
||||
, wfpuUser :: userid
|
||||
} -> WorkflowFieldPayload userid fileid userid
|
||||
|
||||
instance (Show userid, Show fileid) => Show (WorkflowEdgePayload userid fileid payload) where
|
||||
show (WEPText txt) = "WEPText " <> show txt
|
||||
show (WEPNumber num) = "WEPNumber " <> show num
|
||||
show (WEPBool b ) = "WEPBool " <> show b
|
||||
show (WEPFile fid) = "WEPFile " <> show fid
|
||||
show (WEPUser uid) = "WEPUser " <> show uid
|
||||
instance (Show userid, Show fileid) => Show (WorkflowFieldPayload userid fileid payload) where
|
||||
show WFPText{..} = "WFPText{label = " <> show wfptLabel <> ", text = " <> show wfptText <> "}"
|
||||
show WFPNumber{..} = "WFPNumber{label = " <> show wfpnLabel <> ", number = " <> show wfpnNumber <> "}"
|
||||
show WFPBool{..} = "WFPBool{label = " <> show wfpbLabel <> ", bool = " <> show wfpbBool <> "}"
|
||||
show WFPFile{..} = "WFPFile{label = " <> show wfpfLabel <> ", file = " <> show wfpfFile <> "}"
|
||||
show WFPUser{..} = "WFPUser{label = " <> show wfpuLabel <> ", user = " <> show wfpuUser <> "}"
|
||||
|
||||
data WorkflowEdgePayload' = WEPText' | WEPNumber' | WEPBool' | WEPFile' | WEPUser'
|
||||
data WorkflowFieldPayload' = WFPText' | WFPNumber' | WFPBool' | WFPFile' | WFPUser'
|
||||
deriving (Eq, Ord, Enum, Show, Read, Data, Generic, Typeable)
|
||||
|
||||
|
||||
type WorkflowEdgePayloadLabel = CI Text
|
||||
type WorkflowPayloadLabel = CI Text
|
||||
|
||||
|
||||
data WorkflowEdgePayloadField fileid userid (payload :: *) where
|
||||
WorkflowEdgePayloadFieldText :: { wepftLabel :: Text
|
||||
data WorkflowPayloadField fileid userid (payload :: *) where
|
||||
WorkflowPayloadFieldText :: { wepftLabel :: Text
|
||||
, wepftPlaceholder :: Text
|
||||
, wepftTooltip :: Maybe Text
|
||||
, wepftDefault :: Maybe Text
|
||||
, wepftOptional :: Maybe Bool
|
||||
} -> WorkflowEdgePayloadField fileid userid Text
|
||||
WorkflowEdgePayloadFieldNumber :: { wepfnLabel :: Text
|
||||
} -> WorkflowPayloadField fileid userid Text
|
||||
WorkflowPayloadFieldNumber :: { wepfnLabel :: Text
|
||||
, wepfnPlaceholder :: Text
|
||||
, wepfnTooltip :: Maybe Text
|
||||
, wepfnDefault :: Maybe Scientific
|
||||
@ -78,71 +88,74 @@ data WorkflowEdgePayloadField fileid userid (payload :: *) where
|
||||
, wepfnMax :: Maybe Scientific
|
||||
, wepfnStep :: Scientific
|
||||
, wepfnOptional :: Maybe Bool
|
||||
} -> WorkflowEdgePayloadField fileid userid Scientific
|
||||
WorkflowEdgePayloadFieldBool :: { wepfbLabel :: Text
|
||||
} -> WorkflowPayloadField fileid userid Scientific
|
||||
WorkflowPayloadFieldBool :: { wepfbLabel :: Text
|
||||
, wepfbTooltip :: Maybe Text
|
||||
, wepfbDefault :: Maybe Bool
|
||||
} -> WorkflowEdgePayloadField fileid userid Bool
|
||||
WorkflowEdgePayloadFieldFile :: { wepffLabel :: Text
|
||||
} -> WorkflowPayloadField fileid userid Bool
|
||||
WorkflowPayloadFieldFile :: { wepffLabel :: Text
|
||||
, wepffTooltip :: Maybe Text
|
||||
, wepffDefault :: Maybe fileid
|
||||
, wepffOptional :: Maybe Bool
|
||||
} -> WorkflowEdgePayloadField fileid userid FileInfo
|
||||
WorkflowEdgePayloadFieldUser :: { wepfuLabel :: Text
|
||||
} -> WorkflowPayloadField fileid userid FileInfo
|
||||
WorkflowPayloadFieldUser :: { wepfuLabel :: Text
|
||||
, wepfuTooltip :: Maybe Text
|
||||
, wepfuDefault :: Maybe userid
|
||||
, wepfuOptional :: Maybe Bool
|
||||
} -> WorkflowEdgePayloadField fileid userid userid
|
||||
} -> WorkflowPayloadField fileid userid userid
|
||||
|
||||
instance (Show fileid, Show userid) => Show (WorkflowEdgePayloadField fileid userid payload) where
|
||||
show (WorkflowEdgePayloadFieldText{..} ) = "TextField{label = " ++ show wepftLabel ++ ", placeholder = " ++ show wepftPlaceholder ++ ", tooltip = " ++ show wepftTooltip ++ ", default = " ++ show wepftDefault ++ ", optional = " ++ show wepftOptional ++ "}"
|
||||
show (WorkflowEdgePayloadFieldNumber{..}) = "NumberField{label = " ++ show wepfnLabel ++ ", placeholder = " ++ show wepfnPlaceholder ++ ", tooltip = " ++ show wepfnTooltip ++ ", default = " ++ show wepfnDefault ++ ", min = " ++ show wepfnMin ++ ", max = " ++ show wepfnMax ++ ", step = " ++ show wepfnStep ++ ", optional = " ++ show wepfnOptional ++ "}"
|
||||
show (WorkflowEdgePayloadFieldBool{..} ) = "BoolField{label = " ++ show wepfbLabel ++ ", tooltip = " ++ show wepfbTooltip ++ ", default = " ++ show wepfbDefault ++ "}"
|
||||
show (WorkflowEdgePayloadFieldFile{..} ) = "FileField{label = " ++ show wepffLabel ++ ", tooltip = " ++ show wepffTooltip ++ ", default = " ++ show wepffDefault ++ ", optional = " ++ show wepffOptional ++ "}"
|
||||
show (WorkflowEdgePayloadFieldUser{..} ) = "UserField{label = " ++ show wepfuLabel ++ ", tooltip = " ++ show wepfuTooltip ++ ", default = " ++ show wepfuDefault ++ ", optional = " ++ show wepfuOptional ++ "}"
|
||||
instance (Show fileid, Show userid) => Show (WorkflowPayloadField fileid userid payload) where
|
||||
show (WorkflowPayloadFieldText{..} ) = "TextField{label = " <> show wepftLabel <> ", placeholder = " <> show wepftPlaceholder <> ", tooltip = " <> show wepftTooltip <> ", default = " <> show wepftDefault <> ", optional = " <> show wepftOptional <> "}"
|
||||
show (WorkflowPayloadFieldNumber{..}) = "NumberField{label = " <> show wepfnLabel <> ", placeholder = " <> show wepfnPlaceholder <> ", tooltip = " <> show wepfnTooltip <> ", default = " <> show wepfnDefault <> ", min = " <> show wepfnMin <> ", max = " <> show wepfnMax <> ", step = " <> show wepfnStep <> ", optional = " <> show wepfnOptional <> "}"
|
||||
show (WorkflowPayloadFieldBool{..} ) = "BoolField{label = " <> show wepfbLabel <> ", tooltip = " <> show wepfbTooltip <> ", default = " <> show wepfbDefault <> "}"
|
||||
show (WorkflowPayloadFieldFile{..} ) = "FileField{label = " <> show wepffLabel <> ", tooltip = " <> show wepffTooltip <> ", default = " <> show wepffDefault <> ", optional = " <> show wepffOptional <> "}"
|
||||
show (WorkflowPayloadFieldUser{..} ) = "UserField{label = " <> show wepfuLabel <> ", tooltip = " <> show wepfuTooltip <> ", default = " <> show wepfuDefault <> ", optional = " <> show wepfuOptional <> "}"
|
||||
|
||||
|
||||
|
||||
data WorkflowPayloadSpec fileid userid = forall payload. WorkflowPayloadSpec (WorkflowPayloadField fileid userid payload)
|
||||
|
||||
data WorkflowEdgePayloadSpecification fileid userid = forall payload. WorkflowEdgePayloadSpecification (WorkflowEdgePayloadField fileid userid payload)
|
||||
instance (Show fileid, Show userid) => Show (WorkflowPayloadSpec fileid userid) where
|
||||
show (WorkflowPayloadSpec payloadField) = show payloadField
|
||||
|
||||
instance (Show fileid, Show userid) => Show (WorkflowEdgePayloadSpecification fileid userid) where
|
||||
show (WorkflowEdgePayloadSpecification payloadField) = show payloadField
|
||||
|
||||
instance (Eq fileid, Eq userid) => Eq (WorkflowEdgePayloadSpecification fileid userid) where
|
||||
(WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldText{}) == (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldText{}) = wepftLabel f1 == wepftLabel f2 && wepftPlaceholder f1 == wepftPlaceholder f2 && wepftTooltip f1 == wepftTooltip f2 && wepftDefault f1 == wepftDefault f2 && wepftOptional f1 == wepftOptional f2
|
||||
(WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldNumber{}) == (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldNumber{}) = wepfnLabel f1 == wepfnLabel f2 && wepfnPlaceholder f1 == wepfnPlaceholder f2 && wepfnTooltip f1 == wepfnTooltip f2 && wepfnDefault f1 == wepfnDefault f2 && wepfnOptional f1 == wepfnOptional f2
|
||||
(WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldBool{}) == (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldBool{}) = wepfbLabel f1 == wepfbLabel f2 && wepfbTooltip f1 == wepfbTooltip f2 && wepfbDefault f1 == wepfbDefault f2
|
||||
(WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldFile{}) == (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldFile{}) = wepffLabel f1 == wepffLabel f2 && wepffTooltip f1 == wepffTooltip f2 && wepffDefault f1 == wepffDefault f2 && wepffOptional f1 == wepffOptional f2
|
||||
(WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldUser{}) == (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldUser{}) = wepfuLabel f1 == wepfuLabel f2 && wepfuTooltip f1 == wepfuTooltip f2 && wepfuDefault f1 == wepfuDefault f2 && wepfuOptional f1 == wepfuOptional f2
|
||||
instance (Eq fileid, Eq userid) => Eq (WorkflowPayloadSpec fileid userid) where
|
||||
(WorkflowPayloadSpec f1@WorkflowPayloadFieldText{}) == (WorkflowPayloadSpec f2@WorkflowPayloadFieldText{}) = wepftLabel f1 == wepftLabel f2 && wepftPlaceholder f1 == wepftPlaceholder f2 && wepftTooltip f1 == wepftTooltip f2 && wepftDefault f1 == wepftDefault f2 && wepftOptional f1 == wepftOptional f2
|
||||
(WorkflowPayloadSpec f1@WorkflowPayloadFieldNumber{}) == (WorkflowPayloadSpec f2@WorkflowPayloadFieldNumber{}) = wepfnLabel f1 == wepfnLabel f2 && wepfnPlaceholder f1 == wepfnPlaceholder f2 && wepfnTooltip f1 == wepfnTooltip f2 && wepfnDefault f1 == wepfnDefault f2 && wepfnOptional f1 == wepfnOptional f2
|
||||
(WorkflowPayloadSpec f1@WorkflowPayloadFieldBool{}) == (WorkflowPayloadSpec f2@WorkflowPayloadFieldBool{}) = wepfbLabel f1 == wepfbLabel f2 && wepfbTooltip f1 == wepfbTooltip f2 && wepfbDefault f1 == wepfbDefault f2
|
||||
(WorkflowPayloadSpec f1@WorkflowPayloadFieldFile{}) == (WorkflowPayloadSpec f2@WorkflowPayloadFieldFile{}) = wepffLabel f1 == wepffLabel f2 && wepffTooltip f1 == wepffTooltip f2 && wepffDefault f1 == wepffDefault f2 && wepffOptional f1 == wepffOptional f2
|
||||
(WorkflowPayloadSpec f1@WorkflowPayloadFieldUser{}) == (WorkflowPayloadSpec f2@WorkflowPayloadFieldUser{}) = wepfuLabel f1 == wepfuLabel f2 && wepfuTooltip f1 == wepfuTooltip f2 && wepfuDefault f1 == wepfuDefault f2 && wepfuOptional f1 == wepfuOptional f2
|
||||
_ == _ = False
|
||||
|
||||
instance (Ord fileid, Ord userid) => Ord (WorkflowEdgePayloadSpecification fileid userid) where
|
||||
compare (WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldText{}) (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldText{}) = mconcat [comparing wepftLabel, comparing wepftPlaceholder, comparing wepftTooltip, comparing wepftDefault, comparing wepftOptional] f1 f2
|
||||
compare (WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldNumber{}) (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldNumber{}) = mconcat [comparing wepfnLabel, comparing wepfnPlaceholder, comparing wepfnTooltip, comparing wepfnDefault, comparing wepfnMin, comparing wepfnMax, comparing wepfnStep, comparing wepfnOptional] f1 f2
|
||||
compare (WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldBool{}) (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldBool{}) = mconcat [comparing wepfbLabel, comparing wepfbTooltip, comparing wepfbDefault] f1 f2
|
||||
compare (WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldFile{}) (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldFile{}) = mconcat [comparing wepffLabel, comparing wepffTooltip, comparing wepffDefault, comparing wepffOptional] f1 f2
|
||||
compare (WorkflowEdgePayloadSpecification f1@WorkflowEdgePayloadFieldUser{}) (WorkflowEdgePayloadSpecification f2@WorkflowEdgePayloadFieldUser{}) = mconcat [comparing wepfuLabel, comparing wepfuTooltip, comparing wepfuDefault, comparing wepfuOptional] f1 f2
|
||||
compare (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldText{} ) _ = LT
|
||||
compare (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldNumber{}) (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldText{}) = GT
|
||||
compare (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldNumber{}) _ = LT
|
||||
compare (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldBool{}) (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldText{}) = GT
|
||||
compare (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldBool{}) (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldNumber{}) = GT
|
||||
compare (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldBool{}) _ = LT
|
||||
compare (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldFile{}) (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldText{}) = GT
|
||||
compare (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldFile{}) (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldNumber{}) = GT
|
||||
compare (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldFile{}) (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldBool{}) = GT
|
||||
compare (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldFile{}) _ = LT
|
||||
compare (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldUser{}) _ = LT
|
||||
instance (Ord fileid, Ord userid) => Ord (WorkflowPayloadSpec fileid userid) where
|
||||
compare (WorkflowPayloadSpec f1@WorkflowPayloadFieldText{}) (WorkflowPayloadSpec f2@WorkflowPayloadFieldText{}) = mconcat [comparing wepftLabel, comparing wepftPlaceholder, comparing wepftTooltip, comparing wepftDefault, comparing wepftOptional] f1 f2
|
||||
compare (WorkflowPayloadSpec f1@WorkflowPayloadFieldNumber{}) (WorkflowPayloadSpec f2@WorkflowPayloadFieldNumber{}) = mconcat [comparing wepfnLabel, comparing wepfnPlaceholder, comparing wepfnTooltip, comparing wepfnDefault, comparing wepfnMin, comparing wepfnMax, comparing wepfnStep, comparing wepfnOptional] f1 f2
|
||||
compare (WorkflowPayloadSpec f1@WorkflowPayloadFieldBool{}) (WorkflowPayloadSpec f2@WorkflowPayloadFieldBool{}) = mconcat [comparing wepfbLabel, comparing wepfbTooltip, comparing wepfbDefault] f1 f2
|
||||
compare (WorkflowPayloadSpec f1@WorkflowPayloadFieldFile{}) (WorkflowPayloadSpec f2@WorkflowPayloadFieldFile{}) = mconcat [comparing wepffLabel, comparing wepffTooltip, comparing wepffDefault, comparing wepffOptional] f1 f2
|
||||
compare (WorkflowPayloadSpec f1@WorkflowPayloadFieldUser{}) (WorkflowPayloadSpec f2@WorkflowPayloadFieldUser{}) = mconcat [comparing wepfuLabel, comparing wepfuTooltip, comparing wepfuDefault, comparing wepfuOptional] f1 f2
|
||||
compare (WorkflowPayloadSpec WorkflowPayloadFieldText{} ) _ = LT
|
||||
compare (WorkflowPayloadSpec WorkflowPayloadFieldNumber{}) (WorkflowPayloadSpec WorkflowPayloadFieldText{}) = GT
|
||||
compare (WorkflowPayloadSpec WorkflowPayloadFieldNumber{}) _ = LT
|
||||
compare (WorkflowPayloadSpec WorkflowPayloadFieldBool{}) (WorkflowPayloadSpec WorkflowPayloadFieldText{}) = GT
|
||||
compare (WorkflowPayloadSpec WorkflowPayloadFieldBool{}) (WorkflowPayloadSpec WorkflowPayloadFieldNumber{}) = GT
|
||||
compare (WorkflowPayloadSpec WorkflowPayloadFieldBool{}) _ = LT
|
||||
compare (WorkflowPayloadSpec WorkflowPayloadFieldFile{}) (WorkflowPayloadSpec WorkflowPayloadFieldText{}) = GT
|
||||
compare (WorkflowPayloadSpec WorkflowPayloadFieldFile{}) (WorkflowPayloadSpec WorkflowPayloadFieldNumber{}) = GT
|
||||
compare (WorkflowPayloadSpec WorkflowPayloadFieldFile{}) (WorkflowPayloadSpec WorkflowPayloadFieldBool{}) = GT
|
||||
compare (WorkflowPayloadSpec WorkflowPayloadFieldFile{}) _ = LT
|
||||
compare (WorkflowPayloadSpec WorkflowPayloadFieldUser{}) _ = LT
|
||||
|
||||
|
||||
data WorkflowPayload userid fileid = forall payload. Map WorkflowEdgePayloadLabel (Seq (WorkflowEdgePayload userid fileid payload), Maybe userid, UTCTime)
|
||||
data WorkflowPayload userid fileid = forall payload. WorkflowPayload
|
||||
{ wpPayload :: Map WorkflowPayloadLabel (Map Text (WorkflowFieldPayload userid fileid payload))
|
||||
, wpActor :: Maybe userid
|
||||
, wpActionTime :: UTCTime
|
||||
}
|
||||
|
||||
|
||||
data WorkflowGraphEdge userid fileid = WGE
|
||||
{ wgeActors :: Set (WorkflowRole userid)
|
||||
, wgeTarget :: WorkflowGraphNodeLabel
|
||||
, wgeForm :: Map WorkflowEdgePayloadLabel (NonNull (Set (WorkflowEdgePayloadSpecification fileid userid)))
|
||||
, wgeForm :: Map WorkflowPayloadLabel (NonNull (Set (WorkflowPayloadSpec fileid userid)))
|
||||
}
|
||||
deriving Show
|
||||
|
||||
@ -222,8 +235,8 @@ instance (Ord userid, Ord fileid, FromJSON userid, FromJSON fileid) => FromJSON
|
||||
wgeForm <- o JSON..: "form"
|
||||
return WGE{..}
|
||||
|
||||
instance (ToJSON fileid, ToJSON userid) => ToJSON (WorkflowEdgePayloadSpecification fileid userid) where
|
||||
toJSON (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldText{..}) = JSON.object
|
||||
instance (ToJSON fileid, ToJSON userid) => ToJSON (WorkflowPayloadSpec fileid userid) where
|
||||
toJSON (WorkflowPayloadSpec WorkflowPayloadFieldText{..}) = JSON.object
|
||||
[ "tag" JSON..= ("text" :: Text)
|
||||
, "label" JSON..= wepftLabel
|
||||
, "placeholder" JSON..= wepftPlaceholder
|
||||
@ -231,7 +244,7 @@ instance (ToJSON fileid, ToJSON userid) => ToJSON (WorkflowEdgePayloadSpecificat
|
||||
, "default" JSON..= wepftDefault
|
||||
, "optional" JSON..= wepftOptional
|
||||
]
|
||||
toJSON (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldNumber{..}) = JSON.object
|
||||
toJSON (WorkflowPayloadSpec WorkflowPayloadFieldNumber{..}) = JSON.object
|
||||
[ "tag" JSON..= ("number" :: Text)
|
||||
, "label" JSON..= wepfnLabel
|
||||
, "placeholder" JSON..= wepfnPlaceholder
|
||||
@ -242,28 +255,28 @@ instance (ToJSON fileid, ToJSON userid) => ToJSON (WorkflowEdgePayloadSpecificat
|
||||
, "step" JSON..= wepfnStep
|
||||
, "optional" JSON..= wepfnOptional
|
||||
]
|
||||
toJSON (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldBool{..}) = JSON.object
|
||||
toJSON (WorkflowPayloadSpec WorkflowPayloadFieldBool{..}) = JSON.object
|
||||
[ "tag" JSON..= ("bool" :: Text)
|
||||
, "label" JSON..= wepfbLabel
|
||||
, "tooltip" JSON..= wepfbTooltip
|
||||
, "default" JSON..= wepfbDefault
|
||||
]
|
||||
toJSON (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldFile{..}) = JSON.object
|
||||
toJSON (WorkflowPayloadSpec WorkflowPayloadFieldFile{..}) = JSON.object
|
||||
[ "tag" JSON..= ("file" :: Text)
|
||||
, "label" JSON..= wepffLabel
|
||||
, "tooltip" JSON..= wepffTooltip
|
||||
, "default" JSON..= wepffDefault
|
||||
, "optional" JSON..= wepffOptional
|
||||
]
|
||||
toJSON (WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldUser{..}) = JSON.object
|
||||
toJSON (WorkflowPayloadSpec WorkflowPayloadFieldUser{..}) = 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
|
||||
instance (FromJSON fileid, FromJSON userid) => FromJSON (WorkflowPayloadSpec fileid userid) where
|
||||
parseJSON = JSON.withObject "WorkflowPayloadSpec" $ \o -> do
|
||||
fieldTag <- (o JSON..: "tag" :: Parser Text)
|
||||
case fieldTag of
|
||||
"text" -> do
|
||||
@ -272,7 +285,7 @@ instance (FromJSON fileid, FromJSON userid) => FromJSON (WorkflowEdgePayloadSpec
|
||||
wepftTooltip <- o JSON..:? "tooltip"
|
||||
wepftDefault <- o JSON..:? "default"
|
||||
wepftOptional <- o JSON..:? "optional"
|
||||
return $ WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldText{..}
|
||||
return $ WorkflowPayloadSpec WorkflowPayloadFieldText{..}
|
||||
"number" -> do
|
||||
wepfnLabel <- o JSON..: "label"
|
||||
wepfnPlaceholder <- o JSON..: "placeholder"
|
||||
@ -282,25 +295,25 @@ instance (FromJSON fileid, FromJSON userid) => FromJSON (WorkflowEdgePayloadSpec
|
||||
wepfnMax <- o JSON..:? "max"
|
||||
wepfnStep <- o JSON..: "step"
|
||||
wepfnOptional <- o JSON..:? "optional"
|
||||
return $ WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldNumber{..}
|
||||
return $ WorkflowPayloadSpec WorkflowPayloadFieldNumber{..}
|
||||
"bool" -> do
|
||||
wepfbLabel <- o JSON..: "label"
|
||||
wepfbTooltip <- o JSON..:? "tooltip"
|
||||
wepfbDefault <- (o JSON..:? "default" :: Parser (Maybe Bool))
|
||||
return $ WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldBool{..}
|
||||
return $ WorkflowPayloadSpec WorkflowPayloadFieldBool{..}
|
||||
"file" -> do
|
||||
wepffLabel <- o JSON..: "label"
|
||||
wepffTooltip <- o JSON..:? "tooltip"
|
||||
wepffDefault <- (o JSON..:? "default" :: Parser (Maybe fileid))
|
||||
wepffOptional <- o JSON..:? "optional"
|
||||
return $ WorkflowEdgePayloadSpecification WorkflowEdgePayloadFieldFile{..}
|
||||
return $ WorkflowPayloadSpec WorkflowPayloadFieldFile{..}
|
||||
"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
|
||||
return $ WorkflowPayloadSpec WorkflowPayloadFieldUser{..}
|
||||
_ -> terror $ "WorkflowPayloadSpec parseJSON error: expected field tag (text|number|bool|file|user), but got " <> fieldTag
|
||||
|
||||
--instance ToJSON WorkflowGraphNode where
|
||||
-- toJSON WGN{..} = JSON.object
|
||||
@ -333,11 +346,11 @@ instance (FromJSON userid, FromJSON fileid, Ord userid, Ord fileid) => FromJSON
|
||||
|
||||
|
||||
testGraph :: WorkflowGraph Text Text
|
||||
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") Nothing]),("someuser", impureNonNull $ Set.fromList [WorkflowEdgePayloadSpecification $ WorkflowEdgePayloadFieldUser "user-label" Nothing Nothing Nothing]),("someboolandnumber-opt", impureNonNull $ Set.fromList [WorkflowEdgePayloadSpecification $ WorkflowEdgePayloadFieldBool "bool-label" Nothing (Just True), WorkflowEdgePayloadSpecification $ WorkflowEdgePayloadFieldNumber "number-label" "number-placeholder" Nothing Nothing (Just 1) (Just 5) 0.01 (Just True)])])]))]
|
||||
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 [WorkflowPayloadSpec $ WorkflowPayloadFieldText "text-label" "text-placeholder" (Just "text-tooltip") (Just "text-default") Nothing]),("someuser", impureNonNull $ Set.fromList [WorkflowPayloadSpec $ WorkflowPayloadFieldUser "user-label" Nothing Nothing Nothing]),("someboolandnumber-opt", impureNonNull $ Set.fromList [WorkflowPayloadSpec $ WorkflowPayloadFieldBool "bool-label" Nothing (Just True), WorkflowPayloadSpec $ WorkflowPayloadFieldNumber "number-label" "number-placeholder" Nothing Nothing (Just 1) (Just 5) 0.01 (Just True)])])]))]
|
||||
|
||||
testGraphStr :: Data.ByteString.Lazy.Internal.ByteString
|
||||
testGraphStr = "{\"tag\":\"workflow\",\"nodes\":{\"node1\":{\"status\":{\"ident\":\"status-ident\",\"finished\":true,\"label\":\"status-label\"},\"edges\":[{\"actors\":[{\"tag\":\"initiator\"}],\"form\":{\"some-number\":[{\"tag\":\"number\",\"step\":0.01,\"label\":\"number-label\",\"placeholder\":\"number-placeholder\"}]},\"target\":\"node1\"}]}}}"
|
||||
--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)])])]))]
|
||||
--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 [WorkflowPayloadSpec $ WorkflowPayloadFieldText "text-label" "text-placeholder" (Just "text-tooltip") (Just "text-default")]),("someuser", impureNonNull $ Set.fromList [WorkflowPayloadSpec $ WorkflowPayloadFieldUser "user-label" Nothing Nothing]),("somebool", impureNonNull $ Set.fromList [WorkflowPayloadSpec $ WorkflowPayloadFieldBool "bool-label" Nothing (Just True)])])]))]
|
||||
|
||||
--testPayload :: WorkflowPayload Text Text
|
||||
testPayload = Map.fromList [("edge-payload-label" :: WorkflowEdgePayloadLabel, (Seq.singleton (WEPText "hello world!"), Just "actor-user-id" :: Maybe Text, UTCTime (ModifiedJulianDay 58946) 57250))]
|
||||
testPayload = Map.fromList [("sometext" :: WorkflowPayloadLabel, (Seq.singleton (WFPText "text-label" "hello world!"), Just "actor-user-id" :: Maybe Text, UTCTime (ModifiedJulianDay 58946) 57250))]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user