ui/app/src/Views/AlertList/Parsing.elm (22 lines of code) (raw):
module Views.AlertList.Parsing exposing (alertsParser)
import Url.Parser exposing ((<?>), Parser, map, s)
import Url.Parser.Query as Query
import Utils.Filter exposing (Filter, MatchOperator(..))
boolParam : String -> Query.Parser Bool
boolParam name =
Query.custom name (List.head >> (/=) Nothing)
maybeBoolParam : String -> Query.Parser (Maybe Bool)
maybeBoolParam name =
Query.custom name
(List.head >> Maybe.map (String.toLower >> (/=) "false"))
alertsParser : Parser (Filter -> a) a
alertsParser =
s "alerts"
<?> Query.string "filter"
<?> Query.string "group"
<?> boolParam "customGrouping"
<?> Query.string "receiver"
<?> maybeBoolParam "silenced"
<?> maybeBoolParam "inhibited"
<?> maybeBoolParam "active"
|> map Filter