From 5ff48d9b60015a07c832b86ea22ce1acd63ae3d2 Mon Sep 17 00:00:00 2001 From: Sarah Vaupel Date: Wed, 1 Apr 2020 15:45:42 +0200 Subject: [PATCH] refactor(workflow): payload specification --- models/workflows.model | 2 +- src/Model/Types/Workflow.hs | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/models/workflows.model b/models/workflows.model index c19777172..5ce942991 100644 --- a/models/workflows.model +++ b/models/workflows.model @@ -1,5 +1,5 @@ WorkflowDefinition - graph (WorkflowGraph UniWorX) + graph (WorkflowGraph FileId) initiator (WorkflowRole UserId AuthDNF) WorkflowInitiator diff --git a/src/Model/Types/Workflow.hs b/src/Model/Types/Workflow.hs index b7c021a10..a54b8d365 100644 --- a/src/Model/Types/Workflow.hs +++ b/src/Model/Types/Workflow.hs @@ -25,17 +25,21 @@ data WorkflowEdgePayload' = WEPText' | WEPBool' deriving (Eq, Ord, Enum, Show, Read, Data, Generic, Typeable) type WorkflowEdgePayloadLabel = CI Text -data WorkflowGraphEdge site = WGE +data WorkflowGraphEdge fileid = WGE { wgeActors :: () -- TODO , wgeTarget :: WorkflowGraphNode - , wgeForm :: Map Text (WorkflowEdgePayload', FieldSettings site) - , wgePayload :: Map WorkflowEdgePayloadLabel WorkflowEdgePayload + , wgeForm :: Map WorkflowEdgePayloadLabel (NonNull (Set (WorkflowEdgePayloadSpecification fileid))) } +data WorkflowEdgePayloadSpecification fileid = forall payload. (FromJSON payload, ToJSON payload) => WorkflowEdgePayloadSpecification (WorkflowEdgePayloadField payload fileid) +data WorkflowEdgePayloadField (payload :: *) fileid where + WorkflowEdgePayloadFieldText :: { wepftLabel :: Text, wepftPlaceholder :: Text, wepftTooltip :: Maybe Text, wepftDefault :: Maybe Text } -> WorkflowEdgePayloadField Text fileid + WorkflowEdgePayloadFieldNumber :: HasResolution prec => { wepfnLabel :: Text, wepfnPlaceholder :: Text, wepfnTooltip :: Maybe Text, wepfnDefault :: Maybe prec } -> WorkflowEdgePayloadField (Fixed prec) fileid + WorkflowEdgePayloadFieldFile :: { wepffLabel :: Text, wepffTooltip :: Maybe Text, wepffDefault :: Maybe fileid } -> WorkflowEdgePayloadField FileInfo fileid -- deriveJSON defaultOptions ''WorkflowGraphEdge -data WorkflowGraph site = WG +data WorkflowGraph fileid = WG { wgNodes :: Set WorkflowGraphNode - , wgEdges :: Set (WorkflowGraphEdge site) + , wgEdges :: Set (WorkflowGraphEdge fileid) } -- deriveJSON defaultOptions ''WorkflowGraph