blob: ae60807d16210c5578a56014e5d495f318ac6c5b (
plain)
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
|
module View.View
( view
) where
import Html (..)
import Html.Attributes (..)
import Html.Events (..)
import Signal
import List
import Dict
import Json.Decode as Json
import Debug
import Model.Model (..)
import Model.Timer (..)
import Model.Id (..)
import Update.Update (..)
import View.Timer (timerView)
view : Model -> Html
view model =
div
[]
[ h1 [] [ text "Timer" ]
, addTimer model.newTimerName
, model.timers
|> Dict.toList
|> List.sortBy (.creationTime << snd)
|> List.reverse
|> timers
]
addTimer : String -> Html
addTimer name =
div
[ class "addTimer" ]
[ input
[ placeholder "Name"
, value name
, on "input" targetValue (Signal.send updates << RenameNewTimer)
, onEnter (Signal.send updates AddNewTimer)
, autofocus True
]
[]
, button
[ onClick (Signal.send updates AddNewTimer) ]
[ i
[ class "fa fa-fw fa-plus" ]
[]
]
]
onEnter : Signal.Message -> Attribute
onEnter message =
on "keydown"
(Json.customDecoder keyCode is13)
(always message)
is13 : Int -> Result String ()
is13 code =
if code == 13
then Ok()
else Err "Not the right key code"
timers : List (Id, Timer) -> Html
timers timers =
div
[ class "timers" ]
(List.map timerView timers)
|