diff options
author | Joris Guyonvarch | 2015-03-17 21:26:40 +0100 |
---|---|---|
committer | Joris Guyonvarch | 2015-03-17 21:26:40 +0100 |
commit | 0075abf51db5d1b54117525d7a7f9b06e31c9484 (patch) | |
tree | ed7a5b8c3ac74113dca96463a41dcd00548d20c8 /src/View | |
parent | c3e8b1a4d428160976c5d9ad770763e8db02f3bc (diff) |
Adding an edition mode for a timer
Diffstat (limited to 'src/View')
-rw-r--r-- | src/View/ActivatedClasses.elm | 15 | ||||
-rw-r--r-- | src/View/Timer.elm | 28 | ||||
-rw-r--r-- | src/View/View.elm | 8 |
3 files changed, 42 insertions, 9 deletions
diff --git a/src/View/ActivatedClasses.elm b/src/View/ActivatedClasses.elm new file mode 100644 index 0000000..9594448 --- /dev/null +++ b/src/View/ActivatedClasses.elm @@ -0,0 +1,15 @@ +module View.ActivatedClasses + ( activatedClasses + ) where + +import Html +import Html.Attributes (..) +import List +import String + +activatedClasses : List (Bool, String) -> Html.Attribute +activatedClasses = + class + << String.concat + << List.intersperse " " + << List.filterMap (\(activated, str) -> if activated then Just str else Nothing) diff --git a/src/View/Timer.elm b/src/View/Timer.elm index 6925e42..5ec5d02 100644 --- a/src/View/Timer.elm +++ b/src/View/Timer.elm @@ -8,23 +8,41 @@ import Html.Events (..) import String import Time (Time) import Signal +import Maybe +import Model.Model (..) import Model.Timer (..) import Model.Id (..) import Update.Update (..) import Update.UpdateTimer (..) -timerView : (Id, Timer) -> Html -timerView (id, timer) = +import View.ActivatedClasses (..) + +timerView : Model -> (Id, Timer) -> Html +timerView model (id, timer) = div [ class <| "timer" ++ (if timer.isRunning then " isRunning" else "") ] [ button [ class "name block" ] [ text timer.name ] - , button - [ class <| "time block" ] - [ text (timeView timer.currentTime) ] + , let inEdition = + model.timerEdition + |> Maybe.map (\te -> te.id == id) + |> Maybe.withDefault False + in button + ( [ [ (True, "time block") + , (inEdition, "edition") + ] + |> activatedClasses + ] + ++ if inEdition + then + [] + else + [ onClick (Signal.send updates (EditTimer id)) ] + ) + [ text (timeView timer.currentTime) ] , button [ class <| "restart block" , onClick (Signal.send updates (UpdateTimer id Restart)) diff --git a/src/View/View.elm b/src/View/View.elm index f915952..8da1316 100644 --- a/src/View/View.elm +++ b/src/View/View.elm @@ -28,7 +28,7 @@ view model = |> Dict.toList |> List.sortBy (.creationTime << snd) |> List.reverse - |> timers + |> timers model ] title : Html @@ -56,8 +56,8 @@ is13 code = then Ok() else Err "Not the right key code" -timers : List (Id, Timer) -> Html -timers timers = +timers : Model -> List (Id, Timer) -> Html +timers model timers = div [ class "timers" ] - (List.map timerView timers) + (List.map (timerView model) timers) |