aboutsummaryrefslogtreecommitdiff
path: root/src/client/elm/LoggedIn/Stat
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/elm/LoggedIn/Stat')
-rw-r--r--src/client/elm/LoggedIn/Stat/Account/View.elm38
-rw-r--r--src/client/elm/LoggedIn/Stat/View.elm87
2 files changed, 15 insertions, 110 deletions
diff --git a/src/client/elm/LoggedIn/Stat/Account/View.elm b/src/client/elm/LoggedIn/Stat/Account/View.elm
deleted file mode 100644
index 3eb5ef4..0000000
--- a/src/client/elm/LoggedIn/Stat/Account/View.elm
+++ /dev/null
@@ -1,38 +0,0 @@
-module LoggedIn.Stat.Account.View exposing
- ( view
- )
-
-import Html exposing (..)
-import Html.Attributes exposing (..)
-
-import Msg exposing (Msg)
-
-import LoggedData exposing (LoggedData)
-
-import LoggedIn.View.Format as Format
-
-import Model exposing (Model)
-import Model.User exposing (getUserName)
-import Model.Payer exposing (..)
-
-view : LoggedData -> Html Msg
-view loggedData =
- ul
- [ class "exceedingPayers" ]
- (List.map (exceedingPayer loggedData) (getOrderedExceedingPayers loggedData.currentTime loggedData.users loggedData.incomes loggedData.payments))
-
-exceedingPayer : LoggedData -> ExceedingPayer -> Html Msg
-exceedingPayer loggedData payer =
- li
- []
- [ span
- [ class "userName" ]
- [ payer.userId
- |> getUserName loggedData.users
- |> Maybe.withDefault "−"
- |> text
- ]
- , span
- [ class "amount" ]
- [ text ("+ " ++ (Format.price loggedData.conf payer.amount)) ]
- ]
diff --git a/src/client/elm/LoggedIn/Stat/View.elm b/src/client/elm/LoggedIn/Stat/View.elm
index f99ef0e..72e1f34 100644
--- a/src/client/elm/LoggedIn/Stat/View.elm
+++ b/src/client/elm/LoggedIn/Stat/View.elm
@@ -3,8 +3,6 @@ module LoggedIn.Stat.View exposing
)
import Date exposing (Month)
-import Dict
-import String
import Html exposing (..)
import Html.Attributes exposing (..)
@@ -21,85 +19,30 @@ import LoggedIn.View.Format as Format
import LoggedIn.View.Date as Date
import View.Plural exposing (plural)
-import LoggedIn.Stat.Account.View as AccountView
-
-import Utils.Tuple as Tuple
import Utils.List as List
view : LoggedData -> Html Msg
view loggedData =
- div
- [ class "stat" ]
- [ h1 [] [ text (getMessage "Balance" loggedData.translations) ]
- , AccountView.view loggedData
- , h1 [] [ text (getMessage "Overall" loggedData.translations) ]
- , paymentsDetail loggedData (Payment.punctual loggedData.payments)
- , h1 [] [ text (getMessage "ByMonths" loggedData.translations) ]
- , monthsDetail loggedData
- ]
-
-paymentsDetail : LoggedData -> Payments -> Html Msg
-paymentsDetail loggedData payments =
- ul
- []
- [ li
- []
- [ text <| plural loggedData.translations (List.length payments) "Payment" "Payments" ]
- , li
- []
- [ text (paymentsSum loggedData.conf payments)
- , text " − "
- , text <| totalPayments loggedData
- ]
- ]
-
-totalPayments : LoggedData -> String
-totalPayments loggedData =
- String.join
- ", "
- ( loggedData.users
- |> Dict.toList
- |> List.map (Tuple.mapFst (\userId -> Payment.totalPayments (always True) userId loggedData.payments))
- |> List.sortBy fst
- |> List.map (\(sum, user) ->
- String.concat
- [ Format.price loggedData.conf sum
- , " "
- , getMessage "By" loggedData.translations
- , " "
- , user.name
- ]
- )
- )
-
-monthsDetail : LoggedData -> Html Msg
-monthsDetail loggedData =
- let paymentsByMonth =
- loggedData.payments
- |> Payment.punctual
- |> Payment.groupAndSortByMonth
- monthPaymentMean =
- paymentsByMonth
- |> List.filter (\((month, year), _) ->
- let currentDate = Date.fromTime loggedData.currentTime
- in not (Date.month currentDate == month && Date.year currentDate == year)
- )
- |> List.map (List.sum << List.map .cost << snd)
- |> List.mean
+ let paymentsByMonth = Payment.groupAndSortByMonth (Payment.punctual loggedData.payments)
+ monthPaymentMean = getMonthPaymentMean loggedData paymentsByMonth
in div
- []
- [ div
- [ class "mean" ]
- [ text (getParamMessage [ Format.price loggedData.conf monthPaymentMean ] "Mean" loggedData.translations)
- ]
+ [ class "stat" ]
+ [ h1 [] [ text (getParamMessage [ Format.price loggedData.conf monthPaymentMean ] "ByMonthsAndMean" loggedData.translations) ]
, ul
[]
- ( Payment.punctual loggedData.payments
- |> Payment.groupAndSortByMonth
- |> List.map (monthDetail loggedData)
- )
+ ( List.map (monthDetail loggedData) paymentsByMonth)
]
+getMonthPaymentMean : LoggedData -> List ((Month, Int), Payments) -> Int
+getMonthPaymentMean loggedData paymentsByMonth =
+ paymentsByMonth
+ |> List.filter (\((month, year), _) ->
+ let currentDate = Date.fromTime loggedData.currentTime
+ in not (Date.month currentDate == month && Date.year currentDate == year)
+ )
+ |> List.map (List.sum << List.map .cost << snd)
+ |> List.mean
+
monthDetail : LoggedData -> ((Month, Int), Payments) -> Html Msg
monthDetail loggedData ((month, year), payments) =
li