aboutsummaryrefslogtreecommitdiff
path: root/client/src/View/Income/Add.hs
blob: d83bb516ee7e6f9882f1ba7bb42a2128ec84131f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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)