|
|
@ -6,12 +6,8 @@ defmodule Dagon.Listens.Sparkline do |
|
|
|
beginning_interval = get_duration(oldest_listen.listened_at, date_first) |
|
|
|
end_interval = get_duration(date_last, newest_listen.listened_at) |
|
|
|
|
|
|
|
filled_listens = |
|
|
|
listens_per_month |
|
|
|
|> fill_gaps() |
|
|
|
|
|
|
|
fill_list(beginning_interval) ++ |
|
|
|
filled_listens ++ |
|
|
|
fill_gaps(listens_per_month) ++ |
|
|
|
fill_list(end_interval) |
|
|
|
end |
|
|
|
|
|
|
@ -27,7 +23,16 @@ defmodule Dagon.Listens.Sparkline do |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
defp fill_gaps(listens) do |
|
|
|
def stupid_diff(from, until) do |
|
|
|
from = Timex.to_date(from) |
|
|
|
until = Timex.to_date(until) |
|
|
|
|
|
|
|
(until.month - from.month) + (year_diff(from, until) * 12) |
|
|
|
end |
|
|
|
|
|
|
|
def year_diff(from, until), do: until.year - from.year |
|
|
|
|
|
|
|
def fill_gaps(listens) do |
|
|
|
new_list = |
|
|
|
for {[count, listen], index} <- Enum.with_index(listens) do |
|
|
|
case Enum.at(listens, index + 1) do |
|
|
@ -36,8 +41,8 @@ defmodule Dagon.Listens.Sparkline do |
|
|
|
|
|
|
|
[_, next_listen] -> |
|
|
|
duration = |
|
|
|
Timex.Interval.new(from: listen, until: next_listen) |
|
|
|
|> Timex.Interval.duration(:months) |
|
|
|
(stupid_diff(listen, next_listen) - 1) |
|
|
|
|> IO.inspect() |
|
|
|
|> fill_list() |
|
|
|
|
|
|
|
[count] ++ duration |
|
|
|