Restore support for whitelisted chord inversions
Allow users to include or exclude chord inversions.
This commit is contained in:
parent
14f11823ff
commit
4a8f750ba8
2 changed files with 34 additions and 44 deletions
|
@ -37,42 +37,35 @@ selectKey model { relativeMajor, relativeMinor } =
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
chordTypeCheckboxes : List Theory.ChordType -> Html State.Msg
|
inversionCheckboxes : State.Model -> Html State.Msg
|
||||||
chordTypeCheckboxes chordTypes =
|
inversionCheckboxes model =
|
||||||
ul []
|
div []
|
||||||
(Theory.allChordTypes
|
[ h2
|
||||||
|> List.map
|
[ [ "text-gray-500"
|
||||||
(\chordType ->
|
, "text-center"
|
||||||
li []
|
, "pt-10"
|
||||||
[ label [] [ text (Theory.chordTypeName chordType) ]
|
, Responsive.h2
|
||||||
, input
|
|
||||||
[ type_ "checkbox"
|
|
||||||
, onClick (State.ToggleChordType chordType)
|
|
||||||
, checked (List.member chordType chordTypes)
|
|
||||||
]
|
]
|
||||||
[]
|
|> Tailwind.use
|
||||||
|
|> class
|
||||||
]
|
]
|
||||||
)
|
[ text "Select inversions" ]
|
||||||
)
|
, ul
|
||||||
|
[ [ "flex", "justify-center" ] |> Tailwind.use |> class ]
|
||||||
|
|
||||||
inversionCheckboxes : List Theory.ChordInversion -> Html State.Msg
|
|
||||||
inversionCheckboxes inversions =
|
|
||||||
ul []
|
|
||||||
(Theory.allInversions
|
(Theory.allInversions
|
||||||
|> List.map
|
|> List.map
|
||||||
(\inversion ->
|
(\inversion ->
|
||||||
li []
|
li []
|
||||||
[ label [] [ text (Theory.inversionName inversion) ]
|
[ UI.textToggleButton
|
||||||
, input
|
{ label = Theory.inversionName inversion
|
||||||
[ type_ "checkbox"
|
, handleClick = State.ToggleInversion inversion
|
||||||
, onClick (State.ToggleInversion inversion)
|
, classes = []
|
||||||
, checked (List.member inversion inversions)
|
, toggled = List.member inversion model.whitelistedInversions
|
||||||
]
|
}
|
||||||
[]
|
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
keyCheckboxes : State.Model -> Html State.Msg
|
keyCheckboxes : State.Model -> Html State.Msg
|
||||||
|
@ -150,5 +143,6 @@ render model =
|
||||||
{ tempo = model.tempo
|
{ tempo = model.tempo
|
||||||
, handleInput = State.SetTempo
|
, handleInput = State.SetTempo
|
||||||
}
|
}
|
||||||
|
, inversionCheckboxes model
|
||||||
, keyCheckboxes model
|
, keyCheckboxes model
|
||||||
]
|
]
|
||||||
|
|
|
@ -51,7 +51,7 @@ init =
|
||||||
( Theory.C3, Theory.C6 )
|
( Theory.C3, Theory.C6 )
|
||||||
|
|
||||||
inversions =
|
inversions =
|
||||||
Theory.allInversions
|
[ Theory.Root ]
|
||||||
|
|
||||||
chordTypes =
|
chordTypes =
|
||||||
Theory.allChordTypes
|
Theory.allChordTypes
|
||||||
|
@ -73,7 +73,7 @@ init =
|
||||||
, tempo = 10
|
, tempo = 10
|
||||||
, firstNote = firstNote
|
, firstNote = firstNote
|
||||||
, lastNote = lastNote
|
, lastNote = lastNote
|
||||||
, view = Overview
|
, view = Preferences
|
||||||
, showFlashCard = True
|
, showFlashCard = True
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,13 +158,9 @@ update msg model =
|
||||||
( { model
|
( { model
|
||||||
| whitelistedInversions = inversions
|
| whitelistedInversions = inversions
|
||||||
, whitelistedChords =
|
, whitelistedChords =
|
||||||
Theory.allChords
|
model.whitelistedKeys
|
||||||
{ start = model.firstNote
|
|> List.concatMap Theory.chordsForKey
|
||||||
, end = model.lastNote
|
|> List.filter (\chord -> List.member chord.chordInversion inversions)
|
||||||
, inversions = inversions
|
|
||||||
, chordTypes = model.whitelistedChordTypes
|
|
||||||
, pitchClasses = model.whitelistedPitchClasses
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
, Cmd.none
|
, Cmd.none
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue