mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-21 18:08:25 +00:00
Introducing fts client into codebase
This commit is contained in:
@ -55,6 +55,7 @@ type alias Model =
|
||||
, untilDueDate : Maybe Int
|
||||
, nameModel : Maybe String
|
||||
, allNameModel : Maybe String
|
||||
, fulltextModel : Maybe String
|
||||
, datePickerInitialized : Bool
|
||||
}
|
||||
|
||||
@ -111,6 +112,7 @@ init =
|
||||
, untilDueDate = Nothing
|
||||
, nameModel = Nothing
|
||||
, allNameModel = Nothing
|
||||
, fulltextModel = Nothing
|
||||
, datePickerInitialized = False
|
||||
}
|
||||
|
||||
@ -135,6 +137,7 @@ type Msg
|
||||
| GetPersonResp (Result Http.Error ReferenceList)
|
||||
| SetName String
|
||||
| SetAllName String
|
||||
| SetFulltext String
|
||||
| ResetForm
|
||||
|
||||
|
||||
@ -188,6 +191,7 @@ getItemSearch model =
|
||||
, allNames =
|
||||
model.allNameModel
|
||||
|> Maybe.map amendWildcards
|
||||
, fullText = model.fulltextModel
|
||||
}
|
||||
|
||||
|
||||
@ -484,6 +488,17 @@ update flags settings msg model =
|
||||
)
|
||||
(model.allNameModel /= next)
|
||||
|
||||
SetFulltext str ->
|
||||
let
|
||||
next =
|
||||
Util.Maybe.fromString str
|
||||
in
|
||||
NextState
|
||||
( { model | fulltextModel = next }
|
||||
, Cmd.none
|
||||
)
|
||||
(model.fulltextModel /= next)
|
||||
|
||||
|
||||
|
||||
-- View
|
||||
@ -517,6 +532,18 @@ view settings model =
|
||||
]
|
||||
]
|
||||
]
|
||||
, div [ class "field" ]
|
||||
[ label [] [ text "Content Search" ]
|
||||
, input
|
||||
[ type_ "text"
|
||||
, onInput SetFulltext
|
||||
, model.fulltextModel |> Maybe.withDefault "" |> value
|
||||
]
|
||||
[]
|
||||
, span [ class "small-info" ]
|
||||
[ text "Fulltext search in document contents."
|
||||
]
|
||||
]
|
||||
, formHeader nameIcon "Names"
|
||||
, div [ class "field" ]
|
||||
[ label [] [ text "All Names" ]
|
||||
|
@ -58,6 +58,7 @@ type Msg
|
||||
| LoadMore
|
||||
| UpdateThrottle
|
||||
| SetBasicSearch String
|
||||
| SetFulltextSearch String
|
||||
|
||||
|
||||
type ViewMode
|
||||
|
@ -155,6 +155,13 @@ update key flags settings msg model =
|
||||
in
|
||||
update key flags settings m model
|
||||
|
||||
SetFulltextSearch str ->
|
||||
let
|
||||
m =
|
||||
SearchMenuMsg (Comp.SearchMenu.SetFulltext str)
|
||||
in
|
||||
update key flags settings m model
|
||||
|
||||
|
||||
|
||||
--- Helpers
|
||||
|
@ -73,49 +73,7 @@ view settings model =
|
||||
, ( "item-card-list", True )
|
||||
]
|
||||
]
|
||||
[ div
|
||||
[ classList
|
||||
[ ( "invisible hidden", not model.menuCollapsed )
|
||||
, ( "ui menu container", True )
|
||||
]
|
||||
]
|
||||
[ a
|
||||
[ class "item"
|
||||
, onClick ToggleSearchMenu
|
||||
, href "#"
|
||||
, title "Open search menu"
|
||||
]
|
||||
[ i [ class "angle left icon" ] []
|
||||
, i [ class "icons" ]
|
||||
[ i [ class "grey bars icon" ] []
|
||||
, i [ class "bottom left corner search icon" ] []
|
||||
, if hasMoreSearch model then
|
||||
i [ class "top right blue corner circle icon" ] []
|
||||
|
||||
else
|
||||
span [ class "hidden invisible" ] []
|
||||
]
|
||||
]
|
||||
, div [ class "ui category search item" ]
|
||||
[ div [ class "ui transparent icon input" ]
|
||||
[ input
|
||||
[ type_ "text"
|
||||
, placeholder "Basic search…"
|
||||
, onInput SetBasicSearch
|
||||
, Maybe.map value model.searchMenuModel.allNameModel
|
||||
|> Maybe.withDefault (value "")
|
||||
]
|
||||
[]
|
||||
, i
|
||||
[ classList
|
||||
[ ( "search link icon", not model.searchInProgress )
|
||||
, ( "loading spinner icon", model.searchInProgress )
|
||||
]
|
||||
]
|
||||
[]
|
||||
]
|
||||
]
|
||||
]
|
||||
[ viewSearchBar model
|
||||
, case model.viewMode of
|
||||
Listing ->
|
||||
Html.map ItemCardListMsg
|
||||
@ -157,6 +115,72 @@ view settings model =
|
||||
]
|
||||
|
||||
|
||||
viewSearchBar : Model -> Html Msg
|
||||
viewSearchBar model =
|
||||
div
|
||||
[ classList
|
||||
[ ( "invisible hidden", not model.menuCollapsed )
|
||||
, ( "ui menu container", True )
|
||||
]
|
||||
]
|
||||
[ a
|
||||
[ class "item"
|
||||
, onClick ToggleSearchMenu
|
||||
, href "#"
|
||||
, title "Open search menu"
|
||||
]
|
||||
[ i [ class "angle left icon" ] []
|
||||
, i [ class "icons" ]
|
||||
[ i [ class "grey bars icon" ] []
|
||||
, i [ class "bottom left corner search icon" ] []
|
||||
, if hasMoreSearch model then
|
||||
i [ class "top right blue corner circle icon" ] []
|
||||
|
||||
else
|
||||
span [ class "hidden invisible" ] []
|
||||
]
|
||||
]
|
||||
, div [ class "ui category search item" ]
|
||||
[ div [ class "ui transparent icon input" ]
|
||||
[ input
|
||||
[ type_ "text"
|
||||
, placeholder "Basic search…"
|
||||
, onInput SetBasicSearch
|
||||
, Maybe.map value model.searchMenuModel.allNameModel
|
||||
|> Maybe.withDefault (value "")
|
||||
]
|
||||
[]
|
||||
, i
|
||||
[ classList
|
||||
[ ( "search link icon", not model.searchInProgress )
|
||||
, ( "loading spinner icon", model.searchInProgress )
|
||||
]
|
||||
]
|
||||
[]
|
||||
]
|
||||
]
|
||||
, div [ class "ui category search item" ]
|
||||
[ div [ class "ui transparent icon input" ]
|
||||
[ input
|
||||
[ type_ "text"
|
||||
, placeholder "Fulltext search…"
|
||||
, onInput SetFulltextSearch
|
||||
, Maybe.map value model.searchMenuModel.fulltextModel
|
||||
|> Maybe.withDefault (value "")
|
||||
]
|
||||
[]
|
||||
, i
|
||||
[ classList
|
||||
[ ( "search link icon", not model.searchInProgress )
|
||||
, ( "loading spinner icon", model.searchInProgress )
|
||||
]
|
||||
]
|
||||
[]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
hasMoreSearch : Model -> Bool
|
||||
hasMoreSearch model =
|
||||
let
|
||||
@ -164,6 +188,6 @@ hasMoreSearch model =
|
||||
Comp.SearchMenu.getItemSearch model.searchMenuModel
|
||||
|
||||
is_ =
|
||||
{ is | allNames = Nothing }
|
||||
{ is | allNames = Nothing, fullText = Nothing }
|
||||
in
|
||||
is_ /= Api.Model.ItemSearch.empty
|
||||
|
Reference in New Issue
Block a user