From 4e5f27a5b1428b9ad190a87a6bf0d4fe187387c9 Mon Sep 17 00:00:00 2001 From: Joris Guyonvarch Date: Mon, 16 Mar 2015 20:37:44 +0100 Subject: Adding a remove button to delete a timer --- src/Model/Model.elm | 11 ++++++----- src/Update/Update.elm | 3 +++ src/View/Timer.elm | 17 +++++++++++------ 3 files changed, 20 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/Model/Model.elm b/src/Model/Model.elm index fa97d7b..a3b4780 100644 --- a/src/Model/Model.elm +++ b/src/Model/Model.elm @@ -21,11 +21,12 @@ type alias Model = initialModel : Time -> Model initialModel initialTime = - { currentTime = initialTime - , newTimerName = "" - , timers = Dict.empty - , timerIdGenerator = initialIdGenerator - } + let (id, idGenerator) = getId initialIdGenerator + in { currentTime = initialTime + , newTimerName = "" + , timers = Dict.insert id (initialTimer initialTime "Timer") Dict.empty + , timerIdGenerator = idGenerator + } substractTimersTime : Time -> Dict Id Timer -> Dict Id Timer substractTimersTime t timers = diff --git a/src/Update/Update.elm b/src/Update/Update.elm index 0252fc8..635e29d 100644 --- a/src/Update/Update.elm +++ b/src/Update/Update.elm @@ -22,6 +22,7 @@ type Action = | AddNewTimer | DeltaTime Time | UpdateTimer Id TimerAction + | RemoveTimer Id updates : Signal.Channel Action updates = Signal.channel NoOp @@ -46,3 +47,5 @@ update action model = } UpdateTimer id action -> { model | timers <- Dict.update id (Maybe.map (updateTimer action)) model.timers } + RemoveTimer id -> + { model | timers <- Dict.remove id model.timers } diff --git a/src/View/Timer.elm b/src/View/Timer.elm index 668bf08..13f071c 100644 --- a/src/View/Timer.elm +++ b/src/View/Timer.elm @@ -18,15 +18,20 @@ import Update.UpdateTimer (..) timerView : (Id, Timer) -> Html timerView (id, timer) = div - [ class "timer" ] - [ div - [ class "block" ] - [ text timer.name ] - , div - [ class <| "timerTime block" ++ (if timer.isRunning then " isRunning" else "") + [ class <| "timer" ++ (if timer.isRunning then " isRunning" else "") ] + [ button + [ class "name block" , onClick (Signal.send updates (UpdateTimer id ToggleRunning)) ] + [ text timer.name ] + , div + [ class <| "time block" ] [ text (timeView timer.time) ] + , button + [ class <| "remove block" + , onClick (Signal.send updates (RemoveTimer id)) + ] + [ i [ class "fa fa-fw fa-remove" ] [] ] ] timeView : Time -> String -- cgit v1.2.3