diff --git a/src/Model/Types/Workflow.hs b/src/Model/Types/Workflow.hs index 9bdd871b6..ec783bd8d 100644 --- a/src/Model/Types/Workflow.hs +++ b/src/Model/Types/Workflow.hs @@ -21,20 +21,17 @@ data WorkflowGraphNode userid authdnf fileid = WGN { wgnStatus :: WorkflowGraphNodeStatus , wgnOutgoing :: Set (WorkflowGraphEdge userid authdnf fileid) } - deriving (Eq, Ord, Show, Read, Data, Generic, Typeable) - -deriveJSON defaultOptions ''WorkflowGraphNode data WorkflowEdgePayload = WEPText Text | WEPBool Bool deriving (Eq, Ord, Show, Read, Data, Generic, Typeable) -deriveJSON defaultOptions ''WorkflowEdgePayload data WorkflowEdgePayload' = WEPText' | WEPBool' deriving (Eq, Ord, Enum, Show, Read, Data, Generic, Typeable) + type WorkflowEdgePayloadLabel = CI Text @@ -43,42 +40,41 @@ data WorkflowEdgePayloadField fileid userid (payload :: *) where , wepftPlaceholder :: Text , wepftTooltip :: Maybe Text , wepftDefault :: Maybe Text - } -> WorkflowEdgePayloadField Text fileid + } -> WorkflowEdgePayloadField fileid userid Text WorkflowEdgePayloadFieldNumber :: HasResolution prec => { wepfnLabel :: Text , wepfnPlaceholder :: Text , wepfnTooltip :: Maybe Text , wepfnDefault :: Maybe prec - } -> WorkflowEdgePayloadField (Fixed prec) fileid + } -> WorkflowEdgePayloadField fileid userid (Fixed prec) WorkflowEdgePayloadFieldFile :: { wepffLabel :: Text , wepffTooltip :: Maybe Text , wepffDefault :: Maybe fileid - } -> WorkflowEdgePayloadField FileInfo fileid + } -> WorkflowEdgePayloadField fileid userid FileInfo WorkflowEdgePayloadFieldUser :: { wepfuLabel :: Text , wepfuTooltip :: Maybe Text , wepfuDefault :: Maybe userid - } + } -> WorkflowEdgePayloadField fileid userid userid + + +data WorkflowEdgePayloadSpecification fileid userid = forall payload. (FromJSON payload, ToJSON payload) => WorkflowEdgePayloadSpecification (WorkflowEdgePayloadField fileid userid payload) -data WorkflowEdgePayloadSpecification fileid = forall payload. (FromJSON payload, ToJSON payload) => WorkflowEdgePayloadSpecification (WorkflowEdgePayloadField fileid payload) data WorkflowPayload fileid = Map WorkflowEdgePayloadLabel (WorkflowEdgePayload) + data WorkflowGraphEdge userid authdnf fileid = WGE { wgeActors :: Set (WorkflowRole userid authdnf) , wgeTarget :: WorkflowGraphNode userid authdnf fileid - , wgeForm :: Map WorkflowEdgePayloadLabel (NonNull (Set (WorkflowEdgePayloadSpecification fileid))) + , wgeForm :: Map WorkflowEdgePayloadLabel (NonNull (Set (WorkflowEdgePayloadSpecification fileid userid))) } ---deriveJSON defaultOptions ''WorkflowGraphEdge - data WorkflowGraph userid authdnf fileid = WG { wgNodes :: Set (WorkflowGraphNode userid authdnf fileid) , wgEdges :: Set (WorkflowGraphEdge userid authdnf fileid) } --- deriveJSON defaultOptions ''WorkflowGraph - data WorkflowInstanceScope term school course = WISGlobal | WISTerm term @@ -86,9 +82,6 @@ data WorkflowInstanceScope term school course = WISGlobal | WISCourse course deriving (Eq, Ord, Show, Read, Data, Generic, Typeable) -deriveJSON defaultOptions - { constructorTagModifier = camelToPathPiece' 3 - } ''WorkflowInstanceScope data WorkflowInstanceScope' = WISTerm' | WISSchool' | WISCourse' deriving (Eq, Ord, Enum, Read, Show, Data, Generic, Typeable)