aboutsummaryrefslogtreecommitdiff
path: root/src/client/Utils/List.elm
diff options
context:
space:
mode:
authorJoris2017-04-02 17:51:12 +0200
committerJoris2017-04-02 21:07:08 +0200
commit5c110716cfda6e616a795edd12f2012b132dca9f (patch)
tree71c3d04780302edf0648bec1cd914757cdbb2883 /src/client/Utils/List.elm
parent64ff4707fdcd81c27c6be9903c3c82bc543ef016 (diff)
downloadbudget-5c110716cfda6e616a795edd12f2012b132dca9f.tar.gz
budget-5c110716cfda6e616a795edd12f2012b132dca9f.tar.bz2
budget-5c110716cfda6e616a795edd12f2012b132dca9f.zip
Add a chart on payments by month by categories
Diffstat (limited to 'src/client/Utils/List.elm')
-rw-r--r--src/client/Utils/List.elm19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/client/Utils/List.elm b/src/client/Utils/List.elm
index cc57d9f..8e26e85 100644
--- a/src/client/Utils/List.elm
+++ b/src/client/Utils/List.elm
@@ -1,9 +1,11 @@
module Utils.List exposing
( groupBy
, mean
+ , links
)
import Dict
+import Maybe.Extra as Maybe
groupBy : (a -> comparable) -> List a -> List (comparable, List a)
groupBy f xs =
@@ -15,3 +17,20 @@ groupBy f xs =
mean : List Int -> Int
mean xs = (List.sum xs) // (List.length xs)
+
+links : List a -> List (a, a)
+links xs =
+ let reversed = List.reverse xs
+ in List.foldr
+ (\x acc ->
+ case Maybe.map Tuple.first (List.head acc) of
+ Just y ->
+ (x, y) :: acc
+ _ ->
+ acc
+ )
+ (case reversed of
+ x :: y :: _ -> [(y, x)]
+ _ -> []
+ )
+ (List.reverse << List.drop 2 <| reversed)