-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.elm
88 lines (73 loc) · 1.95 KB
/
App.elm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
module Client exposing (..)
import Http
import Task
import Debug
import Html exposing (..)
import Html.App as App
import Json.Decode as Json
import Html.Events exposing (..)
import Html.Attributes exposing (..)
import AlgoliaClient exposing (Client, Index, listIndexes, search)
type alias Model = {
indexes: List String,
searchResults: List String
}
type Msg
= FetchIndexes
| FetchSuccess (List String)
| Search String
| SearchSuccess (List String)
| FetchFail Http.Error
init : (Model, Cmd Msg)
init =
(Model [] [], fetch)
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
FetchIndexes ->
Debug.log "FetchIndexes:"
(model, fetch)
FetchSuccess indexes ->
Debug.log "FetchSuccess:"
({ model | indexes = indexes}, Cmd.none)
Search query ->
Debug.log "Search:"
(model, searchTeam query)
SearchSuccess results ->
Debug.log "SearchSuccess:"
({ model | searchResults = results}, Cmd.none)
FetchFail _ ->
Debug.log "FetchFail:"
(model, Cmd.none)
subscriptions : Model -> Sub Msg
subscriptions model =
Sub.none
fetch : (Cmd Msg)
fetch =
let
client = Client "1LFL2RS6YM" "426a1da4c6c0f96901c86d1380e327e7"
in
Task.perform FetchFail FetchSuccess (listIndexes client)
searchTeam : String -> (Cmd Msg)
searchTeam value =
let
index = Index "team_members"
client = Client "1LFL2RS6YM" "426a1da4c6c0f96901c86d1380e327e7"
in
Task.perform FetchFail SearchSuccess (search client index value)
view : Model -> Html Msg
view {indexes, searchResults} =
div [] [
h1 [] [text "List of indexes"]
, ul [] (List.map (\i -> li [] [text i]) indexes)
, h1 [] [text "Search"]
, input [type' "text", placeholder "Search here your term", onInput Search] []
, ul [] (List.map (\i -> li [] [text i]) searchResults)
]
main : Program Never
main = App.program
{ init = init
, view = view
, update = update
, subscriptions = subscriptions
}