{-# language TypeApplications #-}
module FlexTask.FormHelpers (
anonymousRadioButtons,
labeledRadioButtons,
labeledCheckboxes,
) where
import Yesod (FieldSettings, SomeMessage)
import FlexTask.FormUtil (showToUniversalLabel, universalLabel)
import FlexTask.Generic.Form (
Alignment,
MultipleChoiceSelection,
SingleChoiceSelection,
buttons,
formify,
)
import FlexTask.YesodConfig (FlexForm, Rendered, Widget)
labeledCheckboxes
:: Alignment
-> FieldSettings FlexForm
-> [String]
-> Rendered Widget
labeledCheckboxes :: Alignment -> FieldSettings FlexForm -> [String] -> Rendered Widget
labeledCheckboxes Alignment
alignment FieldSettings FlexForm
fSettings [String]
labels = Maybe MultipleChoiceSelection -> [[FieldInfo]] -> Rendered Widget
forall a. Formify a => Maybe a -> [[FieldInfo]] -> Rendered Widget
formify
(forall a. Maybe a
Nothing @MultipleChoiceSelection)
[[Alignment
-> FieldSettings FlexForm -> [SomeMessage FlexForm] -> FieldInfo
buttons
Alignment
alignment
FieldSettings FlexForm
fSettings
([SomeMessage FlexForm] -> FieldInfo)
-> [SomeMessage FlexForm] -> FieldInfo
forall a b. (a -> b) -> a -> b
$ (Integer -> String -> SomeMessage FlexForm)
-> [Integer] -> [String] -> [SomeMessage FlexForm]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith (\Integer
a String
b -> String -> SomeMessage FlexForm
universalLabel (String -> SomeMessage FlexForm) -> String -> SomeMessage FlexForm
forall a b. (a -> b) -> a -> b
$ Integer -> String
forall a. Show a => a -> String
show Integer
a String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
". " String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
b) [Integer
1 :: Integer ..] [String]
labels
]]
anonymousRadioButtons
:: Integral i
=> Alignment
-> FieldSettings FlexForm
-> i
-> Rendered Widget
anonymousRadioButtons :: forall i.
Integral i =>
Alignment -> FieldSettings FlexForm -> i -> Rendered Widget
anonymousRadioButtons Alignment
alignment FieldSettings FlexForm
fSettings i
amount = Maybe SingleChoiceSelection -> [[FieldInfo]] -> Rendered Widget
forall a. Formify a => Maybe a -> [[FieldInfo]] -> Rendered Widget
formify (forall a. Maybe a
Nothing @SingleChoiceSelection)
[[Alignment
-> FieldSettings FlexForm -> [SomeMessage FlexForm] -> FieldInfo
buttons
Alignment
alignment
FieldSettings FlexForm
fSettings
([SomeMessage FlexForm] -> FieldInfo)
-> [SomeMessage FlexForm] -> FieldInfo
forall a b. (a -> b) -> a -> b
$ (Integer -> SomeMessage FlexForm)
-> [Integer] -> [SomeMessage FlexForm]
forall a b. (a -> b) -> [a] -> [b]
map Integer -> SomeMessage FlexForm
forall a. Show a => a -> SomeMessage FlexForm
showToUniversalLabel [Integer
1.. i -> Integer
forall a. Integral a => a -> Integer
toInteger i
amount]
]]
labeledRadioButtons
:: Alignment
-> FieldSettings FlexForm
-> [SomeMessage FlexForm]
-> Rendered Widget
labeledRadioButtons :: Alignment
-> FieldSettings FlexForm
-> [SomeMessage FlexForm]
-> Rendered Widget
labeledRadioButtons Alignment
alignment FieldSettings FlexForm
fSettings [SomeMessage FlexForm]
labels = Maybe SingleChoiceSelection -> [[FieldInfo]] -> Rendered Widget
forall a. Formify a => Maybe a -> [[FieldInfo]] -> Rendered Widget
formify
(Maybe SingleChoiceSelection
forall a. Maybe a
Nothing :: Maybe SingleChoiceSelection)
[[Alignment
-> FieldSettings FlexForm -> [SomeMessage FlexForm] -> FieldInfo
buttons Alignment
alignment FieldSettings FlexForm
fSettings [SomeMessage FlexForm]
labels]]