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/Handlers.hs | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'Omni/Jr/Web/Handlers.hs') diff --git a/Omni/Jr/Web/Handlers.hs b/Omni/Jr/Web/Handlers.hs index 5b542dd..9dd5847 100644 --- a/Omni/Jr/Web/Handlers.hs +++ b/Omni/Jr/Web/Handlers.hs @@ -60,6 +60,7 @@ type API = :<|> "tasks" :> Capture "id" Text :> Get '[Lucid.HTML] TaskDetailPage :<|> "tasks" :> Capture "id" Text :> "status" :> ReqBody '[FormUrlEncoded] StatusForm :> Post '[Lucid.HTML] StatusBadgePartial :<|> "tasks" :> Capture "id" Text :> "priority" :> ReqBody '[FormUrlEncoded] PriorityForm :> Post '[Lucid.HTML] PriorityBadgePartial + :<|> "tasks" :> Capture "id" Text :> "complexity" :> ReqBody '[FormUrlEncoded] ComplexityForm :> Post '[Lucid.HTML] ComplexityBadgePartial :<|> "tasks" :> Capture "id" Text :> "description" :> "view" :> Get '[Lucid.HTML] DescriptionViewPartial :<|> "tasks" :> Capture "id" Text :> "description" :> "edit" :> Get '[Lucid.HTML] DescriptionEditPartial :<|> "tasks" :> Capture "id" Text :> "description" :> ReqBody '[FormUrlEncoded] DescriptionForm :> Post '[Lucid.HTML] DescriptionViewPartial @@ -106,6 +107,7 @@ server = :<|> taskDetailHandler :<|> taskStatusHandler :<|> taskPriorityHandler + :<|> taskComplexityHandler :<|> descriptionViewHandler :<|> descriptionEditHandler :<|> descriptionPostHandler @@ -298,6 +300,11 @@ server = _ <- liftIO <| TaskCore.editTask tid (\t -> t {TaskCore.taskPriority = newPriority}) pure (PriorityBadgePartial newPriority tid) + taskComplexityHandler :: Text -> ComplexityForm -> Servant.Handler ComplexityBadgePartial + taskComplexityHandler tid (ComplexityForm newComplexity) = do + _ <- liftIO <| TaskCore.editTask tid (\t -> t {TaskCore.taskComplexity = newComplexity}) + pure (ComplexityBadgePartial newComplexity tid) + descriptionViewHandler :: Text -> Servant.Handler DescriptionViewPartial descriptionViewHandler tid = do tasks <- liftIO TaskCore.loadTasks -- cgit v1.2.3