module View.Timer ( timerView ) where import Html (..) import Html.Attributes (..) 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 (..) 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 ] , 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)) ] [ i [ class "fa fa-fw fa-backward" ] [] ] , button [ class <| "playPause block" , onClick (Signal.send updates (UpdateTimer id ToggleRunning)) ] [ let icon = if timer.isRunning then "fa-pause" else "fa-play" in i [ class <| "fa fa-fw " ++ icon ] [] ] , button [ class <| "stop block" , onClick (Signal.send updates (UpdateTimer id Stop)) ] [ i [ class "fa fa-fw fa-stop" ] [] ] , button [ class <| "remove block" , onClick (Signal.send updates (RemoveTimer id)) ] [ i [ class "fa fa-fw fa-remove" ] [] ] ] timeView : Time -> String timeView time = let totalSeconds = truncate (time / 1000) totalMinutes = totalSeconds // 60 restSeconds = totalSeconds `rem` 60 in (toString totalMinutes) ++ " : " ++ (String.padLeft 2 '0' (toString restSeconds))