about summary refs log tree commit diff
path: root/website/sandbox/learnpianochords/src/Practice.elm
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-04-18T13·58+0100
committerWilliam Carroll <wpcarro@gmail.com>2020-04-18T13·58+0100
commit441fe3e32eb9c041515178f74564ede9fd24db72 (patch)
tree8264b2cdf597cf0063214818467f6f849661220a /website/sandbox/learnpianochords/src/Practice.elm
parentddbd7e2ef5eb52bf125480bad80ee753275d9827 (diff)
Tidy app
Now that I have a deployed an MVP of my app, I am tidying things up to support
the next phase of development.

TL;DR:
- Moved application Model-related code into State module
- Moved each View into its own module
- Deleted unused ChordInspector component
- Deleted unused Msg's, {Increase,Decrease}Tempo
- Deleted misc unused code
Diffstat (limited to 'website/sandbox/learnpianochords/src/Practice.elm')
-rw-r--r--website/sandbox/learnpianochords/src/Practice.elm44
1 files changed, 44 insertions, 0 deletions
diff --git a/website/sandbox/learnpianochords/src/Practice.elm b/website/sandbox/learnpianochords/src/Practice.elm
new file mode 100644
index 000000000000..229f019aa030
--- /dev/null
+++ b/website/sandbox/learnpianochords/src/Practice.elm
@@ -0,0 +1,44 @@
+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, "Press 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
+            }
+        ]