mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-22 18:38:26 +00:00
Select bookmarks in search menu
This commit is contained in:
@ -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
|
||||
|
@ -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 " "
|
||||
|
Reference in New Issue
Block a user