aboutsummaryrefslogtreecommitdiff
path: root/src/client/elm/LoggedIn/Home/Search/View.elm
blob: 99eec951e5daae17f6242eb71808de80e79a6b91 (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
module LoggedIn.Home.Search.View exposing
  ( view
  )

import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (..)
import Html.App as Html

import Form exposing (Form)
import View.Form as Form

import Msg exposing (Msg)
import LoggedIn.Msg as LoggedInMsg
import LoggedIn.Home.Msg as HomeMsg

import LoggedData exposing (LoggedData)
import LoggedIn.Home.Model as HomeModel
import Model.Translations exposing (getParamMessage)
import Model.Conf exposing (Conf)
import Model.Payment exposing (Payments)
import Model.Translations exposing (getMessage)

import LoggedIn.Home.AddPayment.View as AddPayment

import LoggedIn.View.Format as Format
import View.Plural exposing (plural)

view : LoggedData -> HomeModel.Model -> Payments -> Html Msg
view loggedData { search } payments =
  Html.div
    [ class "search" ]
    [ searchForm loggedData search
    , paymentsStat loggedData payments
    , AddPayment.view loggedData
    ]

searchForm : LoggedData -> Form String HomeModel.Search -> Html Msg
searchForm loggedData search =
  let htmlMap = Html.map (Msg.UpdateLoggedIn << LoggedInMsg.HomeMsg << HomeMsg.SearchMsg)
  in  Form.textInput loggedData.translations search htmlMap "searchText"

paymentsStat : LoggedData -> Payments -> Html Msg
paymentsStat loggedData payments =
  let count = plural loggedData.translations (List.length payments) "Payment" "Payments"
      sum = paymentsSum loggedData.conf payments
  in  span
        [ class "stat" ]
        [ text <| getParamMessage [ count, sum ] "Worth" loggedData.translations ]

paymentsSum : Conf -> Payments -> String
paymentsSum conf payments =
  payments
    |> List.map .cost
    |> List.sum
    |> Format.price conf