Introducing fts client into codebase

This commit is contained in:
Eike Kettner
2020-06-17 00:24:23 +02:00
parent ee801745a7
commit 522daaf57e
21 changed files with 327 additions and 73 deletions

View File

@ -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" ]

View File

@ -58,6 +58,7 @@ type Msg
| LoadMore
| UpdateThrottle
| SetBasicSearch String
| SetFulltextSearch String
type ViewMode

View File

@ -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

View File

@ -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