module View.Income.Add ( view ) where import Control.Monad.IO.Class (liftIO) import qualified Data.Time.Clock as Time import Reflex.Dom (MonadWidget) import qualified Reflex.Dom as R import Common.Model (CreateIncomeForm (..), Income) import qualified Common.Msg as Msg import qualified Common.Util.Time as TimeUtil import qualified Component.Modal as Modal import qualified Util.Reflex as ReflexUtil import View.Income.Form (FormIn (..), FormOut (..)) import qualified View.Income.Form as Form view :: forall t m. MonadWidget t m => Modal.Content t m Income view cancel = do currentDay <- liftIO $ Time.getCurrentTime >>= TimeUtil.timeToDay form <- R.dyn $ return $ Form.view $ FormIn { _formIn_cancel = cancel , _formIn_headerLabel = Msg.get Msg.Income_AddLong , _formIn_amount = "" , _formIn_date = currentDay , _formIn_mkPayload = CreateIncomeForm , _formIn_httpMethod = Form.Post } hide <- ReflexUtil.flatten (_formOut_hide <$> form) addIncome <- ReflexUtil.flatten (_formOut_addIncome <$> form) return (hide, addIncome)