diff --git a/modules/webapp/src/main/elm/Api.elm b/modules/webapp/src/main/elm/Api.elm index 51366ecc..5c9c1255 100644 --- a/modules/webapp/src/main/elm/Api.elm +++ b/modules/webapp/src/main/elm/Api.elm @@ -94,6 +94,7 @@ import File exposing (File) import Http import Json.Encode as JsonEncode import Task +import Url import Util.File import Util.Http as Http2 @@ -368,7 +369,7 @@ getOrgLight flags receive = getOrganizations : Flags -> String -> (Result Http.Error OrganizationList -> msg) -> Cmd msg getOrganizations flags query receive = 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 , 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 receive = +getPersons : Flags -> String -> (Result Http.Error PersonList -> msg) -> Cmd msg +getPersons flags query receive = 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 , expect = Http.expectJson receive Api.Model.PersonList.decoder } diff --git a/modules/webapp/src/main/elm/Comp/PersonManage.elm b/modules/webapp/src/main/elm/Comp/PersonManage.elm index 81364df8..d1cb04bd 100644 --- a/modules/webapp/src/main/elm/Comp/PersonManage.elm +++ b/modules/webapp/src/main/elm/Comp/PersonManage.elm @@ -16,7 +16,7 @@ import Comp.YesNoDimmer import Data.Flags exposing (Flags) import Html exposing (..) import Html.Attributes exposing (..) -import Html.Events exposing (onClick, onSubmit) +import Html.Events exposing (onClick, onInput, onSubmit) import Http import Util.Http import Util.Maybe @@ -59,6 +59,7 @@ type Msg | SubmitResp (Result Http.Error BasicResult) | YesNoMsg Comp.YesNoDimmer.Msg | RequestDelete + | SetQuery String update : Flags -> Msg -> Model -> ( Model, Cmd Msg ) @@ -101,7 +102,7 @@ update flags msg model = ( { model | formModel = m2 }, Cmd.map FormMsg c2 ) LoadPersons -> - ( { model | loading = True }, Api.getPersons flags PersonResp ) + ( { model | loading = True }, Api.getPersons flags "" PersonResp ) PersonResp (Ok orgs) -> let @@ -186,6 +187,9 @@ update flags msg model = in ( { model | deleteConfirm = cm }, cmd ) + SetQuery str -> + ( model, Api.getPersons flags str PersonResp ) + view : Model -> Html Msg view model = @@ -199,9 +203,33 @@ view model = viewTable : Model -> Html Msg viewTable model = div [] - [ button [ class "ui basic button", onClick InitNewPerson ] - [ i [ class "plus icon" ] [] - , text "Create new" + [ 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" ] [] + , text "New Person" + ] + ] + ] + ] ] , Html.map TableMsg (Comp.PersonTable.view model.tableModel) , div