diff options
Diffstat (limited to 'Omni/Jr')
| -rw-r--r-- | Omni/Jr/Web.hs | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/Omni/Jr/Web.hs b/Omni/Jr/Web.hs index d117169..9d46a78 100644 --- a/Omni/Jr/Web.hs +++ b/Omni/Jr/Web.hs @@ -50,8 +50,8 @@ type API = :<|> "ready" :> Get '[Lucid.HTML] ReadyQueuePage :<|> "stats" :> QueryParam "epic" Text :> Get '[Lucid.HTML] StatsPage :<|> "tasks" - :> QueryParam "status" TaskCore.Status - :> QueryParam "priority" TaskCore.Priority + :> QueryParam "status" Text + :> QueryParam "priority" Text :> QueryParam "namespace" Text :> Get '[Lucid.HTML] TaskListPage :<|> "tasks" :> Capture "id" Text :> Get '[Lucid.HTML] TaskDetailPage @@ -653,13 +653,21 @@ server = stats <- liftIO <| TaskCore.getTaskStats epicId pure (StatsPage stats epicId) - taskListHandler :: Maybe TaskCore.Status -> Maybe TaskCore.Priority -> Maybe Text -> Servant.Handler TaskListPage - taskListHandler maybeStatus maybePriority maybeNamespace = do + taskListHandler :: Maybe Text -> Maybe Text -> Maybe Text -> Servant.Handler TaskListPage + taskListHandler maybeStatusText maybePriorityText maybeNamespace = do allTasks <- liftIO TaskCore.loadTasks - let filters = TaskFilters maybeStatus maybePriority (emptyToNothing maybeNamespace) + let maybeStatus = parseStatus =<< emptyToNothing maybeStatusText + maybePriority = parsePriority =<< emptyToNothing maybePriorityText + filters = TaskFilters maybeStatus maybePriority (emptyToNothing maybeNamespace) filteredTasks = applyFilters filters allTasks pure (TaskListPage filteredTasks filters) + parseStatus :: Text -> Maybe TaskCore.Status + parseStatus = readMaybe <. Text.unpack + + parsePriority :: Text -> Maybe TaskCore.Priority + parsePriority = readMaybe <. Text.unpack + emptyToNothing :: Maybe Text -> Maybe Text emptyToNothing (Just t) | Text.null (Text.strip t) = Nothing emptyToNothing x = x |
