diff --git a/src/Model/Types/Workflow.hs b/src/Model/Types/Workflow.hs index e5dc144f0..e3b9e0893 100644 --- a/src/Model/Types/Workflow.hs +++ b/src/Model/Types/Workflow.hs @@ -74,42 +74,42 @@ type WorkflowPayloadLabel = CI Text data WorkflowPayloadField fileid userid (payload :: *) where - WorkflowPayloadFieldText :: { wepftLabel :: Text - , wepftPlaceholder :: Text - , wepftTooltip :: Maybe Text - , wepftDefault :: Maybe Text - , wepftOptional :: Maybe Bool - } -> WorkflowPayloadField fileid userid Text - WorkflowPayloadFieldNumber :: { wepfnLabel :: Text - , wepfnPlaceholder :: Text - , wepfnTooltip :: Maybe Text - , wepfnDefault :: Maybe Scientific - , wepfnMin :: Maybe Scientific - , wepfnMax :: Maybe Scientific - , wepfnStep :: Scientific - , wepfnOptional :: Maybe Bool - } -> WorkflowPayloadField fileid userid Scientific - WorkflowPayloadFieldBool :: { wepfbLabel :: Text - , wepfbTooltip :: Maybe Text - , wepfbDefault :: Maybe Bool - } -> WorkflowPayloadField fileid userid Bool - WorkflowPayloadFieldFile :: { wepffLabel :: Text - , wepffTooltip :: Maybe Text - , wepffDefault :: Maybe fileid - , wepffOptional :: Maybe Bool - } -> WorkflowPayloadField fileid userid FileInfo - WorkflowPayloadFieldUser :: { wepfuLabel :: Text - , wepfuTooltip :: Maybe Text - , wepfuDefault :: Maybe userid - , wepfuOptional :: Maybe Bool - } -> WorkflowPayloadField fileid userid userid + WorkflowPayloadFieldText :: { wpftLabel :: Text + , wpftPlaceholder :: Text + , wpftTooltip :: Maybe Text + , wpftDefault :: Maybe Text + , wpftOptional :: Maybe Bool + } -> WorkflowPayloadField fileid userid Text + WorkflowPayloadFieldNumber :: { wpfnLabel :: Text + , wpfnPlaceholder :: Text + , wpfnTooltip :: Maybe Text + , wpfnDefault :: Maybe Scientific + , wpfnMin :: Maybe Scientific + , wpfnMax :: Maybe Scientific + , wpfnStep :: Scientific + , wpfnOptional :: Maybe Bool + } -> WorkflowPayloadField fileid userid Scientific + WorkflowPayloadFieldBool :: { wpfbLabel :: Text + , wpfbTooltip :: Maybe Text + , wpfbDefault :: Maybe Bool + } -> WorkflowPayloadField fileid userid Bool + WorkflowPayloadFieldFile :: { wpffLabel :: Text + , wpffTooltip :: Maybe Text + , wpffDefault :: Maybe fileid + , wpffOptional :: Maybe Bool + } -> WorkflowPayloadField fileid userid FileInfo + WorkflowPayloadFieldUser :: { wpfuLabel :: Text + , wpfuTooltip :: Maybe Text + , wpfuDefault :: Maybe userid + , wpfuOptional :: Maybe Bool + } -> WorkflowPayloadField fileid userid userid 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 <> "}" + show (WorkflowPayloadFieldText{..} ) = "TextField{label = " <> show wpftLabel <> ", placeholder = " <> show wpftPlaceholder <> ", tooltip = " <> show wpftTooltip <> ", default = " <> show wpftDefault <> ", optional = " <> show wpftOptional <> "}" + show (WorkflowPayloadFieldNumber{..}) = "NumberField{label = " <> show wpfnLabel <> ", placeholder = " <> show wpfnPlaceholder <> ", tooltip = " <> show wpfnTooltip <> ", default = " <> show wpfnDefault <> ", min = " <> show wpfnMin <> ", max = " <> show wpfnMax <> ", step = " <> show wpfnStep <> ", optional = " <> show wpfnOptional <> "}" + show (WorkflowPayloadFieldBool{..} ) = "BoolField{label = " <> show wpfbLabel <> ", tooltip = " <> show wpfbTooltip <> ", default = " <> show wpfbDefault <> "}" + show (WorkflowPayloadFieldFile{..} ) = "FileField{label = " <> show wpffLabel <> ", tooltip = " <> show wpffTooltip <> ", default = " <> show wpffDefault <> ", optional = " <> show wpffOptional <> "}" + show (WorkflowPayloadFieldUser{..} ) = "UserField{label = " <> show wpfuLabel <> ", tooltip = " <> show wpfuTooltip <> ", default = " <> show wpfuDefault <> ", optional = " <> show wpfuOptional <> "}" @@ -119,19 +119,19 @@ instance (Show fileid, Show userid) => Show (WorkflowPayloadSpec fileid userid) show (WorkflowPayloadSpec payloadField) = show payloadField 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 + (WorkflowPayloadSpec f1@WorkflowPayloadFieldText{}) == (WorkflowPayloadSpec f2@WorkflowPayloadFieldText{}) = wpftLabel f1 == wpftLabel f2 && wpftPlaceholder f1 == wpftPlaceholder f2 && wpftTooltip f1 == wpftTooltip f2 && wpftDefault f1 == wpftDefault f2 && wpftOptional f1 == wpftOptional f2 + (WorkflowPayloadSpec f1@WorkflowPayloadFieldNumber{}) == (WorkflowPayloadSpec f2@WorkflowPayloadFieldNumber{}) = wpfnLabel f1 == wpfnLabel f2 && wpfnPlaceholder f1 == wpfnPlaceholder f2 && wpfnTooltip f1 == wpfnTooltip f2 && wpfnDefault f1 == wpfnDefault f2 && wpfnOptional f1 == wpfnOptional f2 + (WorkflowPayloadSpec f1@WorkflowPayloadFieldBool{}) == (WorkflowPayloadSpec f2@WorkflowPayloadFieldBool{}) = wpfbLabel f1 == wpfbLabel f2 && wpfbTooltip f1 == wpfbTooltip f2 && wpfbDefault f1 == wpfbDefault f2 + (WorkflowPayloadSpec f1@WorkflowPayloadFieldFile{}) == (WorkflowPayloadSpec f2@WorkflowPayloadFieldFile{}) = wpffLabel f1 == wpffLabel f2 && wpffTooltip f1 == wpffTooltip f2 && wpffDefault f1 == wpffDefault f2 && wpffOptional f1 == wpffOptional f2 + (WorkflowPayloadSpec f1@WorkflowPayloadFieldUser{}) == (WorkflowPayloadSpec f2@WorkflowPayloadFieldUser{}) = wpfuLabel f1 == wpfuLabel f2 && wpfuTooltip f1 == wpfuTooltip f2 && wpfuDefault f1 == wpfuDefault f2 && wpfuOptional f1 == wpfuOptional f2 _ == _ = False 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 f1@WorkflowPayloadFieldText{}) (WorkflowPayloadSpec f2@WorkflowPayloadFieldText{}) = mconcat [comparing wpftLabel, comparing wpftPlaceholder, comparing wpftTooltip, comparing wpftDefault, comparing wpftOptional] f1 f2 + compare (WorkflowPayloadSpec f1@WorkflowPayloadFieldNumber{}) (WorkflowPayloadSpec f2@WorkflowPayloadFieldNumber{}) = mconcat [comparing wpfnLabel, comparing wpfnPlaceholder, comparing wpfnTooltip, comparing wpfnDefault, comparing wpfnMin, comparing wpfnMax, comparing wpfnStep, comparing wpfnOptional] f1 f2 + compare (WorkflowPayloadSpec f1@WorkflowPayloadFieldBool{}) (WorkflowPayloadSpec f2@WorkflowPayloadFieldBool{}) = mconcat [comparing wpfbLabel, comparing wpfbTooltip, comparing wpfbDefault] f1 f2 + compare (WorkflowPayloadSpec f1@WorkflowPayloadFieldFile{}) (WorkflowPayloadSpec f2@WorkflowPayloadFieldFile{}) = mconcat [comparing wpffLabel, comparing wpffTooltip, comparing wpffDefault, comparing wpffOptional] f1 f2 + compare (WorkflowPayloadSpec f1@WorkflowPayloadFieldUser{}) (WorkflowPayloadSpec f2@WorkflowPayloadFieldUser{}) = mconcat [comparing wpfuLabel, comparing wpfuTooltip, comparing wpfuDefault, comparing wpfuOptional] f1 f2 compare (WorkflowPayloadSpec WorkflowPayloadFieldText{} ) _ = LT compare (WorkflowPayloadSpec WorkflowPayloadFieldNumber{}) (WorkflowPayloadSpec WorkflowPayloadFieldText{}) = GT compare (WorkflowPayloadSpec WorkflowPayloadFieldNumber{}) _ = LT @@ -238,80 +238,80 @@ instance (Ord userid, Ord fileid, FromJSON userid, FromJSON fileid) => FromJSON 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 - , "tooltip" JSON..= wepftTooltip - , "default" JSON..= wepftDefault - , "optional" JSON..= wepftOptional + , "label" JSON..= wpftLabel + , "placeholder" JSON..= wpftPlaceholder + , "tooltip" JSON..= wpftTooltip + , "default" JSON..= wpftDefault + , "optional" JSON..= wpftOptional ] toJSON (WorkflowPayloadSpec WorkflowPayloadFieldNumber{..}) = JSON.object [ "tag" JSON..= ("number" :: Text) - , "label" JSON..= wepfnLabel - , "placeholder" JSON..= wepfnPlaceholder - , "tooltip" JSON..= wepfnTooltip - , "default" JSON..= wepfnDefault - , "min" JSON..= wepfnMin - , "max" JSON..= wepfnMax - , "step" JSON..= wepfnStep - , "optional" JSON..= wepfnOptional + , "label" JSON..= wpfnLabel + , "placeholder" JSON..= wpfnPlaceholder + , "tooltip" JSON..= wpfnTooltip + , "default" JSON..= wpfnDefault + , "min" JSON..= wpfnMin + , "max" JSON..= wpfnMax + , "step" JSON..= wpfnStep + , "optional" JSON..= wpfnOptional ] toJSON (WorkflowPayloadSpec WorkflowPayloadFieldBool{..}) = JSON.object [ "tag" JSON..= ("bool" :: Text) - , "label" JSON..= wepfbLabel - , "tooltip" JSON..= wepfbTooltip - , "default" JSON..= wepfbDefault + , "label" JSON..= wpfbLabel + , "tooltip" JSON..= wpfbTooltip + , "default" JSON..= wpfbDefault ] toJSON (WorkflowPayloadSpec WorkflowPayloadFieldFile{..}) = JSON.object [ "tag" JSON..= ("file" :: Text) - , "label" JSON..= wepffLabel - , "tooltip" JSON..= wepffTooltip - , "default" JSON..= wepffDefault - , "optional" JSON..= wepffOptional + , "label" JSON..= wpffLabel + , "tooltip" JSON..= wpffTooltip + , "default" JSON..= wpffDefault + , "optional" JSON..= wpffOptional ] toJSON (WorkflowPayloadSpec WorkflowPayloadFieldUser{..}) = JSON.object [ "tag" JSON..= ("user" :: Text) - , "label" JSON..= wepfuLabel - , "tooltip" JSON..= wepfuTooltip - , "default" JSON..= wepfuDefault - , "optional" JSON..= wepfuOptional + , "label" JSON..= wpfuLabel + , "tooltip" JSON..= wpfuTooltip + , "default" JSON..= wpfuDefault + , "optional" JSON..= wpfuOptional ] 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 - wepftLabel <- o JSON..: "label" - wepftPlaceholder <- o JSON..: "placeholder" - wepftTooltip <- o JSON..:? "tooltip" - wepftDefault <- o JSON..:? "default" - wepftOptional <- o JSON..:? "optional" + wpftLabel <- o JSON..: "label" + wpftPlaceholder <- o JSON..: "placeholder" + wpftTooltip <- o JSON..:? "tooltip" + wpftDefault <- o JSON..:? "default" + wpftOptional <- o JSON..:? "optional" return $ WorkflowPayloadSpec WorkflowPayloadFieldText{..} "number" -> do - wepfnLabel <- o JSON..: "label" - wepfnPlaceholder <- o JSON..: "placeholder" - wepfnTooltip <- o JSON..:? "tooltip" - wepfnDefault <- (o JSON..:? "default" :: Parser (Maybe Scientific)) - wepfnMin <- o JSON..:? "min" - wepfnMax <- o JSON..:? "max" - wepfnStep <- o JSON..: "step" - wepfnOptional <- o JSON..:? "optional" + wpfnLabel <- o JSON..: "label" + wpfnPlaceholder <- o JSON..: "placeholder" + wpfnTooltip <- o JSON..:? "tooltip" + wpfnDefault <- (o JSON..:? "default" :: Parser (Maybe Scientific)) + wpfnMin <- o JSON..:? "min" + wpfnMax <- o JSON..:? "max" + wpfnStep <- o JSON..: "step" + wpfnOptional <- o JSON..:? "optional" return $ WorkflowPayloadSpec WorkflowPayloadFieldNumber{..} "bool" -> do - wepfbLabel <- o JSON..: "label" - wepfbTooltip <- o JSON..:? "tooltip" - wepfbDefault <- (o JSON..:? "default" :: Parser (Maybe Bool)) + wpfbLabel <- o JSON..: "label" + wpfbTooltip <- o JSON..:? "tooltip" + wpfbDefault <- (o JSON..:? "default" :: Parser (Maybe Bool)) return $ WorkflowPayloadSpec WorkflowPayloadFieldBool{..} "file" -> do - wepffLabel <- o JSON..: "label" - wepffTooltip <- o JSON..:? "tooltip" - wepffDefault <- (o JSON..:? "default" :: Parser (Maybe fileid)) - wepffOptional <- o JSON..:? "optional" + wpffLabel <- o JSON..: "label" + wpffTooltip <- o JSON..:? "tooltip" + wpffDefault <- (o JSON..:? "default" :: Parser (Maybe fileid)) + wpffOptional <- o JSON..:? "optional" return $ WorkflowPayloadSpec WorkflowPayloadFieldFile{..} "user" -> do - wepfuLabel <- o JSON..: "label" - wepfuTooltip <- o JSON..:? "tooltip" - wepfuDefault <- (o JSON..:? "default" :: Parser (Maybe userid)) - wepfuOptional <- o JSON..:? "optional" + wpfuLabel <- o JSON..: "label" + wpfuTooltip <- o JSON..:? "tooltip" + wpfuDefault <- (o JSON..:? "default" :: Parser (Maybe userid)) + wpfuOptional <- o JSON..:? "optional" return $ WorkflowPayloadSpec WorkflowPayloadFieldUser{..} _ -> terror $ "WorkflowPayloadSpec parseJSON error: expected field tag (text|number|bool|file|user), but got " <> fieldTag