blob: b7170c9878fbaac895ca747b7bfe41a7475d9ba8 (
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
56
57
58
59
60
|
module View.Income.Header
( view
, HeaderIn(..)
) where
import Control.Monad.IO.Class (liftIO)
import qualified Data.Maybe as Maybe
import qualified Data.Text as T
import qualified Data.Time.Clock as Clock
import Reflex.Dom (MonadWidget)
import qualified Reflex.Dom as R
import Common.Model (Income (..), Init (..), User (..))
import qualified Common.Model as CM
import qualified Common.Msg as Msg
import qualified Common.View.Format as Format
import qualified Util.Date as DateUtil
data HeaderIn = HeaderIn
{ _headerIn_init :: Init
}
view :: forall t m. MonadWidget t m => HeaderIn -> m ()
view headerIn =
R.divClass "withMargin" $ do
currentTime <- liftIO Clock.getCurrentTime
Maybe.fromMaybe R.blank $
flip fmap useIncomesFrom $ \since ->
R.el "div" $ do
R.el "h1" $ do
day <- liftIO $ DateUtil.utcToLocalDay since
R.text $ Msg.get (Msg.Income_CumulativeSince (Format.longDay day))
R.el "ul" $
flip mapM_ (_init_users init) $ \user ->
R.el "li" $
R.text $ do
let incomes = filter ((==) (_user_id user) . _income_userId) (_init_incomes init)
T.intercalate " "
[ _user_name user
, "−"
, Format.price (_init_currency init) $
CM.cumulativeIncomesSince currentTime since incomes
]
R.divClass "titleButton" $
R.el "h1" $
R.text $
Msg.get Msg.Income_MonthlyNet
where
init = _headerIn_init headerIn
useIncomesFrom = CM.useIncomesFrom
(map _user_id $_init_users init)
(_init_incomes init)
(_init_payments init)
|