Add new search-index route to web-ui

This commit is contained in:
Eike Kettner
2020-06-23 23:20:34 +02:00
parent d5c9923a6d
commit 6846f2f46e
4 changed files with 78 additions and 12 deletions

View File

@ -3,6 +3,7 @@ module Page.Home.Data exposing
, Msg(..)
, SearchType(..)
, ViewMode(..)
, defaultSearchType
, doSearchCmd
, init
, itemNav
@ -35,6 +36,7 @@ type alias Model =
, throttle : Throttle Msg
, searchTypeDropdown : Comp.FixedDropdown.Model SearchType
, searchType : SearchType
, contentOnlySearch : Maybe String
}
@ -47,13 +49,6 @@ init flags =
else
[ BasicSearch ]
defaultSearchType =
if flags.config.fullTextSearchEnabled then
ContentSearch
else
BasicSearch
in
{ searchMenuModel = Comp.SearchMenu.init
, itemListModel = Comp.ItemCardList.init
@ -67,10 +62,20 @@ init flags =
, searchTypeDropdown =
Comp.FixedDropdown.initMap searchTypeString
searchTypeOptions
, searchType = defaultSearchType
, searchType = defaultSearchType flags
, contentOnlySearch = Nothing
}
defaultSearchType : Flags -> SearchType
defaultSearchType flags =
if flags.config.fullTextSearchEnabled then
ContentSearch
else
BasicSearch
type Msg
= Init
| SearchMenuMsg Comp.SearchMenu.Msg
@ -85,6 +90,7 @@ type Msg
| SetBasicSearch String
| SearchTypeMsg (Comp.FixedDropdown.Msg SearchType)
| KeyUpMsg (Maybe KeyCode)
| SetContentOnly String
type SearchType
@ -127,6 +133,19 @@ itemNav id model =
doSearchCmd : Flags -> UiSettings -> Int -> Model -> Cmd Msg
doSearchCmd flags settings offset model =
case model.searchType of
BasicSearch ->
doSearchDefaultCmd flags settings offset model
ContentSearch ->
doSearchDefaultCmd flags settings offset model
ContentOnlySearch ->
doSearchIndexCmd flags settings offset model
doSearchDefaultCmd : Flags -> UiSettings -> Int -> Model -> Cmd Msg
doSearchDefaultCmd flags settings offset model =
let
smask =
Comp.SearchMenu.getItemSearch model.searchMenuModel
@ -144,6 +163,27 @@ doSearchCmd flags settings offset model =
Api.itemSearch flags mask ItemSearchAddResp
doSearchIndexCmd : Flags -> UiSettings -> Int -> Model -> Cmd Msg
doSearchIndexCmd flags settings offset model =
case model.contentOnlySearch of
Just q ->
let
mask =
{ query = q
, limit = settings.itemSearchPageSize
, offset = offset
}
in
if offset == 0 then
Api.itemIndexSearch flags mask ItemSearchResp
else
Api.itemIndexSearch flags mask ItemSearchAddResp
Nothing ->
Cmd.none
resultsBelowLimit : UiSettings -> Model -> Bool
resultsBelowLimit settings model =
let

View File

@ -11,6 +11,7 @@ import Page.Home.Data exposing (..)
import Throttle
import Time
import Util.Html exposing (KeyCode(..))
import Util.Maybe
import Util.Update
@ -27,7 +28,10 @@ update key flags settings msg model =
ResetSearch ->
let
nm =
{ model | searchOffset = 0 }
{ model
| searchOffset = 0
, searchType = defaultSearchType flags
}
in
update key flags settings (SearchMenuMsg Comp.SearchMenu.ResetForm) nm
@ -161,10 +165,16 @@ update key flags settings msg model =
SearchMenuMsg (Comp.SearchMenu.SetFulltext str)
ContentOnlySearch ->
Debug.todo "implement"
SetContentOnly str
in
update key flags settings smMsg model
SetContentOnly str ->
withSub
( { model | contentOnlySearch = Util.Maybe.fromString str }
, Cmd.none
)
SearchTypeMsg lm ->
let
( sm, mv ) =

View File

@ -134,7 +134,7 @@ viewSearchBar flags model =
model.searchMenuModel.fulltextModel
ContentOnlySearch ->
Debug.todo "implement"
model.contentOnlySearch
searchTypeClass =
if flags.config.fullTextSearchEnabled then
@ -211,6 +211,6 @@ hasMoreSearch model =
{ is | fullText = Nothing }
ContentOnlySearch ->
Debug.todo "implement"
Api.Model.ItemSearch.empty
in
is_ /= Api.Model.ItemSearch.empty