From 70720548c9af024dbb6080638ac8e5470c2213eb Mon Sep 17 00:00:00 2001 From: Joris Date: Sat, 25 Jun 2016 15:10:03 +0200 Subject: Use the search to view either punctual or monthly payments --- src/client/elm/LoggedIn/Stat/View.elm | 87 ++++++----------------------------- 1 file changed, 15 insertions(+), 72 deletions(-) (limited to 'src/client/elm/LoggedIn/Stat/View.elm') 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 -- cgit v1.2.3