-
Notifications
You must be signed in to change notification settings - Fork 0
/
Main.elm
118 lines (91 loc) · 2.4 KB
/
Main.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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
port module Main exposing (main)
import Html exposing (..)
import Html.Events exposing (onInput)
import Html.Attributes as Attr exposing (..)
import Return exposing (Return)
import Time exposing (Time)
import Http
import Json.Decode exposing (decodeString)
import Jenkins.Jobs.Types exposing (..)
import Jenkins.Jobs.Json exposing (..)
testJobsReturn : String
testJobsReturn =
"""
{
"jobs" : [
{
"name" : "job1"
},
{
"name" : "wtf it works"
}
]
}
"""
listJobs : Result String (List Job)
listJobs =
decodeString parseJobs testJobsReturn
-- getJenkins : Cmd Msg
-- getJenkins =
-- let
-- url =
-- "https://jenkins.athndev.org/api/json"
-- in
-- Http.send NewText (Http.get url)
type alias Model =
{ reverse : String
, now : Time
}
initModel : Model
initModel =
{ reverse = ""
, now = 0.0
}
type Msg
= NewText String
| Tick Time
emptyJob : List Job
emptyJob =
[ { name = "hi" } ]
renderJobs : Result String (List Job) -> Html Msg
renderJobs jobs =
ul []
(List.map (\job -> li [] [ text job.name ]) (Result.withDefault emptyJob jobs))
{-| Msg -> Model -> (Model, Cmd Msg)
-}
update : Msg -> Model -> Return Msg Model
update msg =
Return.singleton
>> (case msg of
NewText s ->
Return.map <| \model -> { model | reverse = s }
Tick t ->
Return.map <| \model -> { model | now = t }
)
>> Return.effect_
(\{ reverse } ->
if String.length reverse > 1 && String.reverse reverse == reverse then
alert reverse
else
Cmd.none
)
view : Model -> Html Msg
view { reverse, now } =
div []
[ p [] [ text "hello" ]
, input [ type_ "text", placeholder "Enter some stuff", value reverse, onInput NewText ] []
, text <| String.reverse reverse
, div [] [ text <| toString now ]
, div [] [ (renderJobs listJobs) ]
]
port alert : String -> Cmd msg
main : Program Never Model Msg
main =
Html.program
{ init = Return.singleton initModel
, update = update
, view = view
, subscriptions =
always <| Time.every Time.second Tick
-- we can subscribe to javascript stuff or api stuff
}