Check query in client

This commit is contained in:
Eike Kettner
2021-03-07 23:46:31 +01:00
parent 31e2e99c36
commit c6032ff279
9 changed files with 267 additions and 24 deletions

View File

@ -27,6 +27,7 @@ import Comp.ItemCardList
import Comp.ItemDetail.FormChange exposing (FormChange)
import Comp.ItemDetail.MultiEditMenu exposing (SaveNameState(..))
import Comp.LinkTarget exposing (LinkTarget)
import Comp.PowerSearchInput
import Comp.SearchMenu
import Comp.YesNoDimmer
import Data.Flags exposing (Flags)
@ -56,7 +57,7 @@ type alias Model =
, dragDropData : DD.DragDropData
, scrollToCard : Maybe String
, searchStats : SearchStats
, powerSearchInput : Maybe String
, powerSearchInput : Comp.PowerSearchInput.Model
}
@ -122,7 +123,7 @@ init flags viewMode =
, scrollToCard = Nothing
, viewMode = viewMode
, searchStats = Api.Model.SearchStats.empty
, powerSearchInput = Nothing
, powerSearchInput = Comp.PowerSearchInput.init
}
@ -196,7 +197,7 @@ type Msg
| SetLinkTarget LinkTarget
| SearchStatsResp (Result Http.Error SearchStats)
| TogglePreviewFullWidth
| SetPowerSearch String
| PowerSearchMsg Comp.PowerSearchInput.Msg
| KeyUpPowerSearchbarMsg (Maybe KeyCode)
@ -247,7 +248,7 @@ doSearchDefaultCmd param model =
Q.request <|
Q.and
[ Comp.SearchMenu.getItemQuery model.searchMenuModel
, Maybe.map Q.Fragment model.powerSearchInput
, Maybe.map Q.Fragment model.powerSearchInput.input
]
mask =

View File

@ -1,15 +1,14 @@
module Page.Home.Update exposing (update)
import Api
import Api.Model.IdList exposing (IdList)
import Api.Model.ItemLightList exposing (ItemLightList)
import Api.Model.ItemQuery
import Browser.Navigation as Nav
import Comp.FixedDropdown
import Comp.ItemCardList
import Comp.ItemDetail.FormChange exposing (FormChange(..))
import Comp.ItemDetail.MultiEditMenu exposing (SaveNameState(..))
import Comp.LinkTarget exposing (LinkTarget)
import Comp.PowerSearchInput
import Comp.SearchMenu
import Comp.YesNoDimmer
import Data.Flags exposing (Flags)
@ -54,7 +53,7 @@ update mId key flags settings msg model =
ResetSearch ->
let
nm =
{ model | searchOffset = 0, powerSearchInput = Nothing }
{ model | searchOffset = 0, powerSearchInput = Comp.PowerSearchInput.init }
in
update mId key flags settings (SearchMenuMsg Comp.SearchMenu.ResetForm) nm
@ -580,8 +579,23 @@ update mId key flags settings msg model =
in
noSub ( model, cmd )
SetPowerSearch str ->
noSub ( { model | powerSearchInput = Util.Maybe.fromString str }, Cmd.none )
PowerSearchMsg lm ->
let
result =
Comp.PowerSearchInput.update lm model.powerSearchInput
cmd_ =
Cmd.map PowerSearchMsg result.cmd
model_ =
{ model | powerSearchInput = result.model }
in
case result.action of
Comp.PowerSearchInput.NoAction ->
( model_, cmd_, Sub.map PowerSearchMsg result.subs )
Comp.PowerSearchInput.SubmitSearch ->
update mId key flags settings (DoSearch model_.searchTypeDropdownValue) model_
KeyUpPowerSearchbarMsg (Just Enter) ->
update mId key flags settings (DoSearch model.searchTypeDropdownValue) model

View File

@ -3,6 +3,7 @@ module Page.Home.View2 exposing (viewContent, viewSidebar)
import Comp.Basic as B
import Comp.ItemCardList
import Comp.MenuBar as MB
import Comp.PowerSearchInput
import Comp.SearchMenu
import Comp.SearchStatsView
import Comp.YesNoDimmer
@ -135,17 +136,12 @@ defaultMenuBar _ settings model =
powerSearchBar =
div
[ class "relative flex flex-grow flex-row" ]
[ input
[ type_ "text"
, placeholder "Search query "
, onInput SetPowerSearch
, Util.Html.onKeyUpCode KeyUpPowerSearchbarMsg
, Maybe.map value model.powerSearchInput
|> Maybe.withDefault (value "")
, class S.textInput
, class "text-sm "
]
[]
[ Html.map PowerSearchMsg
(Comp.PowerSearchInput.viewInput []
model.powerSearchInput
)
, Html.map PowerSearchMsg
(Comp.PowerSearchInput.viewResult [] model.powerSearchInput)
]
in
MB.view