@@ -7,6 +7,8 @@ defmodule Plausible.Stats.Metrics do
77
88 use Plausible
99
10+ @ revenue_metrics on_ee ( do: Plausible.Stats.Goal.Revenue . revenue_metrics ( ) , else: [ ] )
11+
1012 @ all_metrics [
1113 :visitors ,
1214 :visits ,
@@ -21,22 +23,36 @@ defmodule Plausible.Stats.Metrics do
2123 :time_on_page ,
2224 :percentage ,
2325 :scroll_depth
24- ] ++ on_ee ( do: Plausible.Stats.Goal.Revenue . revenue_metrics ( ) , else: [ ] )
26+ ] ++ @ revenue_metrics
2527
2628 @ metric_mappings Enum . into ( @ all_metrics , % { } , fn metric -> { to_string ( metric ) , metric } end )
2729
2830 def metric? ( value ) , do: Enum . member? ( @ all_metrics , value )
2931
3032 on_ee do
31- def default_value ( metric , query , dimensions )
32- when metric in [ :average_revenue , :total_revenue ] ,
33- do: Plausible.Stats.Goal.Revenue . format_revenue_metric ( nil , query , dimensions )
33+ # Default value in a goal breakdown depends on per-row currency
34+ def default_value ( metric , query , row_dimensions ) when metric in @ revenue_metrics do
35+ Plausible.Stats.Goal.Revenue . format_revenue_metric ( nil , query , row_dimensions )
36+ end
37+ end
38+
39+ def default_value ( metric , _query , _dimensions ) , do: default_value ( metric )
40+
41+ on_ee do
42+ # When revenue metrics are queried without event:goal dimension,
43+ # a single default currency is expected.
44+ def default_value ( metric , query ) when metric in @ revenue_metrics do
45+ currency = query . revenue_currencies . default
46+ Plausible.Stats.Goal.Revenue . format_revenue_metric ( nil , currency )
47+ end
3448 end
3549
36- def default_value ( :visit_duration , _query , _dimensions ) , do: nil
37- def default_value ( :exit_rate , _query , _dimensions ) , do: nil
38- def default_value ( :scroll_depth , _query , _dimensions ) , do: nil
39- def default_value ( :time_on_page , _query , _dimensions ) , do: nil
50+ def default_value ( metric , _query ) , do: default_value ( metric )
51+
52+ def default_value ( :visit_duration ) , do: nil
53+ def default_value ( :exit_rate ) , do: nil
54+ def default_value ( :scroll_depth ) , do: nil
55+ def default_value ( :time_on_page ) , do: nil
4056
4157 @ float_metrics [
4258 :views_per_visit ,
@@ -45,8 +61,8 @@ defmodule Plausible.Stats.Metrics do
4561 :conversion_rate ,
4662 :group_conversion_rate
4763 ]
48- def default_value ( metric , _query , _dimensions ) when metric in @ float_metrics , do: 0.0
49- def default_value ( _metric , _query , _dimensions ) , do: 0
64+ def default_value ( metric ) when metric in @ float_metrics , do: 0.0
65+ def default_value ( _metric ) , do: 0
5066
5167 def from_string! ( str ) do
5268 Map . fetch! ( @ metric_mappings , str )
0 commit comments