From 7da1c7e717af3cadf927b5f6efb253f0d10423a8 Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Mon, 1 Dec 2025 21:38:17 -0500 Subject: Make complexity badge editable on task detail page - Add ComplexityForm and ComplexityBadgePartial types - Add /tasks/:id/complexity POST endpoint - Add complexityBadgeWithForm component with dropdown - Add complexity dropdown JS for keyboard navigation - Add CSS styles for complexity dropdown - Always show complexity badge (Set Complexity if none) Task-Id: t-219 --- Omni/Jr/Web/Types.hs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'Omni/Jr/Web/Types.hs') 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 -- cgit v1.2.3