aboutsummaryrefslogtreecommitdiff
path: root/src/client/elm/LoggedIn/Home/Search/View.elm
blob: f06377dee3058a0caccab857742cb93e7855c967 (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
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 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
    ]

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  text <| getParamMessage [ count, sum ] "Worth" loggedData.translations

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