@@ -28,71 +28,29 @@ defmodule Plausible.Stats.Comparisons do
28
28
) do
29
29
if valid_mode? ( source_query , mode ) do
30
30
now = now || Timex . now ( site . timezone )
31
- { :ok , do_compare ( site , source_query , mode , now ) }
31
+ { :ok , do_compare ( source_query , mode , now ) }
32
32
else
33
33
{ :error , :not_supported }
34
34
end
35
35
end
36
36
37
- defp do_compare ( _site , source_query , "year_over_year" , now ) do
37
+ defp do_compare ( source_query , "year_over_year" , now ) do
38
38
start_date = Date . add ( source_query . date_range . first , - 365 )
39
39
end_date = earliest ( source_query . date_range . last , now ) |> Date . add ( - 365 )
40
40
41
41
range = Date . range ( start_date , end_date )
42
42
% Stats.Query { source_query | date_range: range }
43
43
end
44
44
45
- defp do_compare ( _site , % Stats.Query { period: "year" } = query , "previous_period" , now ) do
46
- # Querying current year to date
47
- { new_first , new_last } =
48
- if Timex . compare ( now , query . date_range . first , :year ) == 0 do
49
- diff =
50
- Timex . diff (
51
- Timex . beginning_of_year ( now ) ,
52
- now ,
53
- :days
54
- ) - 1
45
+ defp do_compare ( source_query , "previous_period" , now ) do
46
+ last = earliest ( query . date_range . last , now )
47
+ diff_in_days = Date . diff ( query . date_range . first , last ) - 1
55
48
56
- { query . date_range . first |> Timex . shift ( days: diff ) ,
57
- now |> Timex . to_date ( ) |> Timex . shift ( days: diff ) }
58
- else
59
- diff = Timex . diff ( query . date_range . first , query . date_range . last , :days ) - 1
49
+ new_first = Date . add ( query . date_range . first , diff_in_days )
50
+ new_last = Date . add ( last , diff_in_days )
60
51
61
- { query . date_range . first |> Timex . shift ( days: diff ) ,
62
- query . date_range . last |> Timex . shift ( days: diff ) }
63
- end
64
-
65
- Map . put ( query , :date_range , Date . range ( new_first , new_last ) )
66
- end
67
-
68
- defp do_compare ( _site , % Stats.Query { period: "month" } = query , "previous_period" , now ) do
69
- # Querying current month to date
70
- { new_first , new_last } =
71
- if Timex . compare ( now , query . date_range . first , :month ) == 0 do
72
- diff =
73
- Timex . diff (
74
- Timex . beginning_of_month ( now ) ,
75
- now ,
76
- :days
77
- ) - 1
78
-
79
- { query . date_range . first |> Timex . shift ( days: diff ) ,
80
- now |> Timex . to_date ( ) |> Timex . shift ( days: diff ) }
81
- else
82
- diff = Timex . diff ( query . date_range . first , query . date_range . last , :days ) - 1
83
-
84
- { query . date_range . first |> Timex . shift ( days: diff ) ,
85
- query . date_range . last |> Timex . shift ( days: diff ) }
86
- end
87
-
88
- Map . put ( query , :date_range , Date . range ( new_first , new_last ) )
89
- end
90
-
91
- defp do_compare ( _site , query , "previous_period" , _now ) do
92
- diff = Timex . diff ( query . date_range . first , query . date_range . last , :days ) - 1
93
- new_first = query . date_range . first |> Timex . shift ( days: diff )
94
- new_last = query . date_range . last |> Timex . shift ( days: diff )
95
- Map . put ( query , :date_range , Date . range ( new_first , new_last ) )
52
+ range = Date . range ( new_first , new_last )
53
+ % Stats.Query { source_query | date_range: range }
96
54
end
97
55
98
56
defp earliest ( a , b ) do
0 commit comments