2020-04-18 15:58:16 +02:00
|
|
|
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
|
2020-04-18 20:49:25 +02:00
|
|
|
( State.Play, "Tap to practice" )
|
2020-04-18 15:58:16 +02:00
|
|
|
|
|
|
|
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
|
|
|
|
}
|
|
|
|
]
|