summaryrefslogtreecommitdiff
path: root/Omni/Jr/Web/Types.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Omni/Jr/Web/Types.hs')
-rw-r--r--Omni/Jr/Web/Types.hs15
1 files changed, 15 insertions, 0 deletions
diff --git a/Omni/Jr/Web/Types.hs b/Omni/Jr/Web/Types.hs
index 85ea0f0..93c8d85 100644
--- a/Omni/Jr/Web/Types.hs
+++ b/Omni/Jr/Web/Types.hs
@@ -43,6 +43,7 @@ module Omni.Jr.Web.Types
ReadyCountPartial (..),
StatusBadgePartial (..),
PriorityBadgePartial (..),
+ ComplexityBadgePartial (..),
TaskListPartial (..),
TaskMetricsPartial (..),
AgentEventsPartial (..),
@@ -53,6 +54,7 @@ module Omni.Jr.Web.Types
RejectForm (..),
StatusForm (..),
PriorityForm (..),
+ ComplexityForm (..),
DescriptionForm (..),
NotesForm (..),
CommentForm (..),
@@ -288,6 +290,8 @@ data StatusBadgePartial = StatusBadgePartial TaskCore.Status Text
data PriorityBadgePartial = PriorityBadgePartial TaskCore.Priority Text
+data ComplexityBadgePartial = ComplexityBadgePartial (Maybe Int) Text
+
newtype TaskListPartial = TaskListPartial [TaskCore.Task]
data TaskMetricsPartial = TaskMetricsPartial Text [TaskCore.TaskActivity] (Maybe TaskCore.RetryContext) UTCTime
@@ -321,6 +325,17 @@ instance FromForm PriorityForm where
Just p -> Right (PriorityForm p)
Nothing -> Left "Invalid priority"
+newtype ComplexityForm = ComplexityForm (Maybe Int)
+
+instance FromForm ComplexityForm where
+ fromForm form = do
+ complexityText <- parseUnique "complexity" form
+ if complexityText == "none"
+ then Right (ComplexityForm Nothing)
+ else case readMaybe (Text.unpack complexityText) of
+ Just c | c >= 1 && c <= 5 -> Right (ComplexityForm (Just c))
+ _ -> Left "Invalid complexity"
+
newtype DescriptionForm = DescriptionForm Text
instance FromForm DescriptionForm where