aboutsummaryrefslogtreecommitdiff
path: root/client/src/View/Payment.hs
blob: 8aa4d38ca3e687b8c5ba0807b07345beb204968d (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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
module View.Payment
  ( widget
  , PaymentIn(..)
  , PaymentOut(..)
  ) where

import           Prelude             hiding (init)
import           Reflex.Dom          (MonadWidget)
import qualified Reflex.Dom          as R

import           Common.Model        (Frequency (..), Init (..), Payment (..))
import           Common.Util.Text    as T

import           View.Payment.Header (HeaderIn (..), HeaderOut (..))
import qualified View.Payment.Header as Header
import           View.Payment.Pages  (PagesIn (..), PagesOut (..))
import qualified View.Payment.Pages  as Pages
import           View.Payment.Table  (TableIn (..))
import qualified View.Payment.Table  as Table

data PaymentIn = PaymentIn
  { _paymentIn_init :: Init
  }

data PaymentOut = PaymentOut
  {
  }

widget :: forall t m. MonadWidget t m => PaymentIn -> m PaymentOut
widget paymentIn = do
  R.divClass "payment" $ do
    rec
      let init = _paymentIn_init paymentIn

          filterPayment s p = search s (_payment_name p) && (_payment_frequency p == Punctual)

          payments = fmap
            (\s -> filter (filterPayment s) (_init_payments init))
            (_headerOut_search header)

      header <- Header.widget $ HeaderIn
        { _headerIn_init = init
        }

      _ <- Table.widget $ TableIn
        { _tableIn_init = init
        , _tableIn_currentPage = _pagesOut_currentPage pages
        , _tableIn_payments = payments
        }

      pages <- Pages.widget $ PagesIn
        { _pagesIn_payments = payments
        }

    return $ PaymentOut {}