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 {}