Add search field to person view

This commit is contained in:
Eike Kettner 2020-01-02 20:42:51 +01:00
parent 906ee9034e
commit 7ba413e49f
2 changed files with 38 additions and 9 deletions

View File

@ -94,6 +94,7 @@ import File exposing (File)
import Http import Http
import Json.Encode as JsonEncode import Json.Encode as JsonEncode
import Task import Task
import Url
import Util.File import Util.File
import Util.Http as Http2 import Util.Http as Http2
@ -368,7 +369,7 @@ getOrgLight flags receive =
getOrganizations : Flags -> String -> (Result Http.Error OrganizationList -> msg) -> Cmd msg getOrganizations : Flags -> String -> (Result Http.Error OrganizationList -> msg) -> Cmd msg
getOrganizations flags query receive = getOrganizations flags query receive =
Http2.authGet Http2.authGet
{ url = flags.config.baseUrl ++ "/api/v1/sec/organization?full=true&q=" ++ query { url = flags.config.baseUrl ++ "/api/v1/sec/organization?full=true&q=" ++ Url.percentEncode query
, account = getAccount flags , account = getAccount flags
, expect = Http.expectJson receive Api.Model.OrganizationList.decoder , expect = Http.expectJson receive Api.Model.OrganizationList.decoder
} }
@ -413,10 +414,10 @@ getPersonsLight flags receive =
} }
getPersons : Flags -> (Result Http.Error PersonList -> msg) -> Cmd msg getPersons : Flags -> String -> (Result Http.Error PersonList -> msg) -> Cmd msg
getPersons flags receive = getPersons flags query receive =
Http2.authGet Http2.authGet
{ url = flags.config.baseUrl ++ "/api/v1/sec/person?full=true" { url = flags.config.baseUrl ++ "/api/v1/sec/person?full=true&q=" ++ Url.percentEncode query
, account = getAccount flags , account = getAccount flags
, expect = Http.expectJson receive Api.Model.PersonList.decoder , expect = Http.expectJson receive Api.Model.PersonList.decoder
} }

View File

@ -16,7 +16,7 @@ import Comp.YesNoDimmer
import Data.Flags exposing (Flags) import Data.Flags exposing (Flags)
import Html exposing (..) import Html exposing (..)
import Html.Attributes exposing (..) import Html.Attributes exposing (..)
import Html.Events exposing (onClick, onSubmit) import Html.Events exposing (onClick, onInput, onSubmit)
import Http import Http
import Util.Http import Util.Http
import Util.Maybe import Util.Maybe
@ -59,6 +59,7 @@ type Msg
| SubmitResp (Result Http.Error BasicResult) | SubmitResp (Result Http.Error BasicResult)
| YesNoMsg Comp.YesNoDimmer.Msg | YesNoMsg Comp.YesNoDimmer.Msg
| RequestDelete | RequestDelete
| SetQuery String
update : Flags -> Msg -> Model -> ( Model, Cmd Msg ) update : Flags -> Msg -> Model -> ( Model, Cmd Msg )
@ -101,7 +102,7 @@ update flags msg model =
( { model | formModel = m2 }, Cmd.map FormMsg c2 ) ( { model | formModel = m2 }, Cmd.map FormMsg c2 )
LoadPersons -> LoadPersons ->
( { model | loading = True }, Api.getPersons flags PersonResp ) ( { model | loading = True }, Api.getPersons flags "" PersonResp )
PersonResp (Ok orgs) -> PersonResp (Ok orgs) ->
let let
@ -186,6 +187,9 @@ update flags msg model =
in in
( { model | deleteConfirm = cm }, cmd ) ( { model | deleteConfirm = cm }, cmd )
SetQuery str ->
( model, Api.getPersons flags str PersonResp )
view : Model -> Html Msg view : Model -> Html Msg
view model = view model =
@ -199,9 +203,33 @@ view model =
viewTable : Model -> Html Msg viewTable : Model -> Html Msg
viewTable model = viewTable model =
div [] div []
[ button [ class "ui basic button", onClick InitNewPerson ] [ div [ class "ui secondary menu" ]
[ div [ class "ui container" ]
[ div [ class "fitted-item" ]
[ div [ class "ui icon input" ]
[ input
[ type_ "text"
, onInput SetQuery
, placeholder "Search"
]
[]
, i [ class "ui search icon" ]
[]
]
]
, div [ class "right menu" ]
[ div [ class "fitted-item" ]
[ a
[ class "ui primary button"
, href "#"
, onClick InitNewPerson
]
[ i [ class "plus icon" ] [] [ i [ class "plus icon" ] []
, text "Create new" , text "New Person"
]
]
]
]
] ]
, Html.map TableMsg (Comp.PersonTable.view model.tableModel) , Html.map TableMsg (Comp.PersonTable.view model.tableModel)
, div , div