aboutsummaryrefslogtreecommitdiff
path: root/client/src/View/Payment/Header.hs
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/View/Payment/Header.hs')
-rw-r--r--client/src/View/Payment/Header.hs34
1 files changed, 21 insertions, 13 deletions
diff --git a/client/src/View/Payment/Header.hs b/client/src/View/Payment/Header.hs
index 5cc362a..73517f0 100644
--- a/client/src/View/Payment/Header.hs
+++ b/client/src/View/Payment/Header.hs
@@ -36,6 +36,7 @@ import qualified View.Payment.Add as Add
data HeaderIn t = HeaderIn
{ _headerIn_init :: Init
+ , _headerIn_payments :: Dynamic t [Payment]
, _headerIn_searchPayments :: Dynamic t [Payment]
, _headerIn_paymentCategories :: Dynamic t [PaymentCategory]
}
@@ -49,7 +50,7 @@ data HeaderOut t = HeaderOut
widget :: forall t m. MonadWidget t m => HeaderIn t -> m (HeaderOut t)
widget headerIn =
R.divClass "header" $ do
- addPayment <- payerAndAdd incomes punctualPayments users categories paymentCategories currency
+ addPayment <- payerAndAdd incomes payments users categories paymentCategories currency
let resetSearchName = fmap (const ()) $ addPayment
(searchName, searchFrequency) <- searchLine resetSearchName
@@ -64,7 +65,7 @@ widget headerIn =
init = _headerIn_init headerIn
incomes = _init_incomes init
initPayments = _init_payments init
- punctualPayments = filter ((==) Punctual . _payment_frequency) initPayments
+ payments = _headerIn_payments headerIn
users = _init_users init
categories = _init_categories init
currency = _init_currency init
@@ -73,7 +74,7 @@ widget headerIn =
payerAndAdd
:: forall t m. MonadWidget t m
=> [Income]
- -> [Payment]
+ -> Dynamic t [Payment]
-> [User]
-> [Category]
-> Dynamic t [PaymentCategory]
@@ -82,17 +83,23 @@ payerAndAdd
payerAndAdd incomes payments users categories paymentCategories currency = do
time <- liftIO Time.getCurrentTime
R.divClass "payerAndAdd" $ do
+
+ let exceedingPayers =
+ R.ffor payments $ \ps ->
+ CM.getExceedingPayers time users incomes $
+ filter ((==) Punctual . _payment_frequency) ps
+
R.divClass "exceedingPayers" $
- forM_
- (CM.getExceedingPayers time users incomes payments)
- (\p ->
- R.elClass "span" "exceedingPayer" $ do
- R.elClass "span" "userName" $
- R.text . fromMaybe "" . fmap _user_name $ CM.findUser (_exceedingPayer_userId p) users
- R.elClass "span" "amount" $ do
- R.text "+ "
- R.text . Format.price currency $ _exceedingPayer_amount p
- )
+ R.simpleList exceedingPayers $ \exceedingPayer ->
+ R.elClass "span" "exceedingPayer" $ do
+ R.elClass "span" "userName" $
+ R.dynText . R.ffor exceedingPayer $ \ep ->
+ fromMaybe "" . fmap _user_name $ CM.findUser (_exceedingPayer_userId ep) users
+ R.elClass "span" "amount" $ do
+ R.text "+ "
+ R.dynText . R.ffor exceedingPayer $ \ep ->
+ Format.price currency $ _exceedingPayer_amount ep
+
addPaymentClic <- _buttonOut_clic <$> (Component.button $ ButtonIn
{ _buttonIn_class = R.constDyn "addPayment"
, _buttonIn_content = R.text $ Msg.get Msg.Payment_Add
@@ -100,6 +107,7 @@ payerAndAdd incomes payments users categories paymentCategories currency = do
, _buttonIn_tabIndex = Nothing
, _buttonIn_submit = False
})
+
rec
modalOut <- Component.modal $ ModalIn
{ _modalIn_show = addPaymentClic