aboutsummaryrefslogtreecommitdiff
path: root/client/src/View/Income/Header.hs
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/View/Income/Header.hs')
-rw-r--r--client/src/View/Income/Header.hs35
1 files changed, 12 insertions, 23 deletions
diff --git a/client/src/View/Income/Header.hs b/client/src/View/Income/Header.hs
index 8e82525..8451ee4 100644
--- a/client/src/View/Income/Header.hs
+++ b/client/src/View/Income/Header.hs
@@ -5,13 +5,15 @@ module View.Income.Header
) where
import Control.Monad.IO.Class (liftIO)
+import qualified Data.Map as M
import qualified Data.Maybe as Maybe
import qualified Data.Text as T
import qualified Data.Time.Clock as Clock
import Reflex.Dom (Dynamic, Event, MonadWidget)
import qualified Reflex.Dom as R
-import Common.Model (Currency, Income (..), User (..))
+import Common.Model (Currency, Income (..),
+ IncomeHeader (..), User (..))
import qualified Common.Model as CM
import qualified Common.Msg as Msg
import qualified Common.View.Format as Format
@@ -23,9 +25,9 @@ import qualified View.Income.Form as Form
import View.Income.Init (Init (..))
data In t = In
- { _in_init :: Init
+ { _in_users :: [User]
+ , _in_header :: IncomeHeader
, _in_currency :: Currency
- , _in_incomes :: Dynamic t [Income]
}
data Out t = Out
@@ -38,11 +40,11 @@ view input =
currentTime <- liftIO Clock.getCurrentTime
- R.dyn . R.ffor useIncomesFrom $ \case
- (Nothing, _) ->
+ case _incomeHeader_since $ _in_header input of
+ Nothing ->
R.blank
- (Just since, incomes) ->
+ Just since ->
R.el "div" $ do
R.el "h1" $ do
@@ -50,15 +52,13 @@ view input =
R.text $ Msg.get (Msg.Income_CumulativeSince (Format.longDay day))
R.el "ul" $
- flip mapM_ (_init_users init) $ \user ->
+ flip mapM_ (M.toList . _incomeHeader_byUser $ _in_header input) $ \(userId, amount) ->
R.el "li" $
- R.text $ do
- let userIncomes = filter ((==) (_user_id user) . _income_userId) incomes
+ R.text $
T.intercalate " "
- [ _user_name user
+ [ Maybe.fromMaybe "" . fmap _user_name $ CM.findUser userId (_in_users input)
, "−"
- , Format.price (_in_currency input) $
- CM.cumulativeIncomesSince currentTime since userIncomes
+ , Format.price (_in_currency input) amount
]
R.divClass "titleButton" $ do
@@ -78,14 +78,3 @@ view input =
return $ Out
{ _out_add = addIncome
}
-
- where
- init = _in_init input
-
- useIncomesFrom = R.ffor (_in_incomes input) $ \incomes ->
- ( CM.useIncomesFrom
- (map _user_id $_init_users init)
- incomes
- (_init_payments init)
- , incomes
- )