module View.Payment ( widget , PaymentIn(..) , PaymentOut(..) ) where import Prelude hiding (init) import Reflex.Dom (MonadWidget) import qualified Reflex.Dom as R import Common.Model (Init (..)) 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 paymentsPerPage = 7 header <- Header.widget $ HeaderIn { _headerIn_init = init } _ <- Table.widget $ TableIn { _tableIn_init = init , _tableIn_currentPage = _pagesOut_currentPage pages , _tableIn_payments = _headerOut_searchPayments header , _tableIn_perPage = paymentsPerPage } pages <- Pages.widget $ PagesIn { _pagesIn_total = length <$> _headerOut_searchPayments header , _pagesIn_perPage = paymentsPerPage , _pagesIn_reset = (fmap $ const ()) . R.updated $ _headerOut_searchName header } pure $ PaymentOut {}