Select bookmarks in search menu

This commit is contained in:
eikek
2022-01-09 00:43:41 +01:00
parent 04b258689f
commit a5b70962d8
8 changed files with 413 additions and 58 deletions

View File

@ -5,13 +5,17 @@ module Data.BookmarkedQuery exposing
, Bookmarks
, Location(..)
, add
, allBookmarksEmpty
, bookmarksDecoder
, bookmarksEncode
, emptyBookmarks
, exists
, filter
, map
, remove
)
import Api.Model.ShareDetail exposing (ShareDetail)
import Json.Decode as D
import Json.Encode as E
@ -52,6 +56,20 @@ type Bookmarks
= Bookmarks (List BookmarkedQuery)
map : (BookmarkedQuery -> a) -> Bookmarks -> List a
map f bms =
case bms of
Bookmarks items ->
List.map f items
filter : (BookmarkedQuery -> Bool) -> Bookmarks -> Bookmarks
filter f bms =
case bms of
Bookmarks items ->
Bookmarks <| List.filter f items
emptyBookmarks : Bookmarks
emptyBookmarks =
Bookmarks []
@ -60,9 +78,15 @@ emptyBookmarks =
type alias AllBookmarks =
{ collective : Bookmarks
, user : Bookmarks
, shares : List ShareDetail
}
allBookmarksEmpty : AllBookmarks
allBookmarksEmpty =
AllBookmarks emptyBookmarks emptyBookmarks []
{-| Checks wether a bookmark of this name already exists.
-}
exists : String -> Bookmarks -> Bool

View File

@ -71,7 +71,7 @@ and list =
Nothing
es ->
Just (And es)
Just (unwrap (And es))
request : SearchMode -> Maybe ItemQuery -> RQ.ItemQuery
@ -90,6 +90,32 @@ renderMaybe mq =
|> Maybe.withDefault ""
unwrap : ItemQuery -> ItemQuery
unwrap query =
case query of
And inner ->
case inner of
first :: [] ->
unwrap first
_ ->
And (List.map unwrap inner)
Or inner ->
case inner of
first :: [] ->
unwrap first
_ ->
Or (List.map unwrap inner)
Not (Not inner) ->
unwrap inner
_ ->
query
render : ItemQuery -> String
render q =
let
@ -118,7 +144,7 @@ render q =
String.replace "\"" "\\\""
>> surround "\""
in
case q of
case unwrap q of
And inner ->
List.map render inner
|> String.join " "