tvl-depot/website/sandbox/learnpianochords/src/Practice.elm

45 lines
1 KiB
Elm
Raw Normal View History

module Practice exposing (render)
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (..)
import Icon
import Piano
import State
import Theory
import UI
openPreferences : Html State.Msg
openPreferences =
button
[ class "w-48 h-48 absolute left-0 top-0 z-40"
, onClick (State.SetView State.Preferences)
]
[ Icon.cog ]
render : State.Model -> Html State.Msg
render model =
let
( handleClick, buttonText ) =
if model.isPaused then
( State.Play, "Tap to practice" )
else
( State.Pause, "" )
in
div []
[ openPreferences
, UI.overlayButton
{ label = buttonText
, handleClick = handleClick
, isVisible = model.isPaused
}
, Piano.render
{ highlight = model.selectedChord |> Maybe.andThen Theory.notesForChord |> Maybe.withDefault []
, start = model.firstNote
, end = model.lastNote
}
]