From cd3b37adebca99138fad1acca37908183036ace9 Mon Sep 17 00:00:00 2001 From: Joris Guyonvarch Date: Mon, 16 Mar 2015 00:15:05 +0100 Subject: Initial commit, can create and name 5 minute timers, can toggle running state --- src/View/View.elm | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/View/View.elm (limited to 'src/View/View.elm') diff --git a/src/View/View.elm b/src/View/View.elm new file mode 100644 index 0000000..ae60807 --- /dev/null +++ b/src/View/View.elm @@ -0,0 +1,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) -- cgit v1.2.3