2020-04-18 15:58:16 +02:00
|
|
|
module Practice exposing (render)
|
|
|
|
|
2020-04-19 16:32:20 +02:00
|
|
|
import FlashCard
|
2020-04-18 15:58:16 +02:00
|
|
|
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
|
2020-04-19 16:32:20 +02:00
|
|
|
[ class "w-48 h-48 absolute left-0 top-0 z-50"
|
2020-04-18 15:58:16 +02:00
|
|
|
, 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
|
|
|
|
}
|
2020-04-19 16:32:20 +02:00
|
|
|
, case model.selectedChord of
|
|
|
|
Just chord ->
|
|
|
|
FlashCard.render
|
|
|
|
{ chord = chord
|
|
|
|
, visible = model.showFlashCard
|
|
|
|
}
|
|
|
|
|
|
|
|
Nothing ->
|
|
|
|
span [] []
|
2020-04-18 15:58:16 +02:00
|
|
|
, Piano.render
|
2020-04-19 01:21:37 +02:00
|
|
|
{ chord = model.selectedChord
|
|
|
|
, firstNote = model.firstNote
|
|
|
|
, lastNote = model.lastNote
|
2020-04-18 15:58:16 +02:00
|
|
|
}
|
|
|
|
]
|