Skip to content

Commit

Permalink
fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
m-col committed Dec 29, 2021
1 parent df5e785 commit 69d408b
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 32 deletions.
16 changes: 8 additions & 8 deletions lib/plausible/stats/base.ex
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,7 @@ defmodule Plausible.Stats.Base do
{"imported_locations", :country}

"visit:os" ->
{"imported_operating_systems", :operating_system}
{"imported_operating_systems", :os}

"event:page" ->
{"imported_pages", :page}
Expand Down Expand Up @@ -463,8 +463,8 @@ defmodule Plausible.Stats.Base do
:browser ->
imported_q |> select_merge([i], %{browser: i.browser})

:operating_system ->
imported_q |> select_merge([i], %{operating_system: i.operating_system})
:os ->
imported_q |> select_merge([i], %{os: i.operating_system})
end

q =
Expand Down Expand Up @@ -538,15 +538,15 @@ defmodule Plausible.Stats.Base do
browser: fragment("if(empty(?), ?, ?)", s.browser, i.browser, s.browser)
})

:operating_system ->
:os ->
q
|> select_merge([i, s], %{
operating_system:
os:
fragment(
"if(empty(?), ?, ?)",
s.operating_system,
i.operating_system,
s.operating_system
s.os,
i.os,
s.os
)
})
end
Expand Down
17 changes: 15 additions & 2 deletions lib/plausible/stats/breakdown.ex
Original file line number Diff line number Diff line change
Expand Up @@ -121,12 +121,15 @@ defmodule Plausible.Stats.Breakdown do
breakdown_sessions(site, new_query, "visit:entry_page", session_metrics, {limit, 1})
|> transform_keys(%{entry_page: :page})

metrics = metrics ++ [:page]

zip_results(
event_result,
session_result,
:page,
metrics
)
|> Enum.map(&Map.take(&1, metrics))
end

def breakdown(site, query, property, metrics, pagination) when property in @event_props do
Expand All @@ -141,7 +144,17 @@ defmodule Plausible.Stats.Breakdown do
"visit:utm_campaign"
] do
query = Query.treat_page_filter_as_entry_page(query)
breakdown_sessions(site, query, property, metrics, pagination)

results = breakdown_sessions(site, query, property, metrics, pagination)

prop_result =
property
|> String.split(":")
|> Enum.at(1)
|> String.to_existing_atom()

metrics = metrics ++ [prop_result]
Enum.map(results, &Map.take(&1, metrics))
end

def breakdown(site, query, property, metrics, pagination) do
Expand Down Expand Up @@ -448,7 +461,7 @@ defmodule Plausible.Stats.Breakdown do
from(
s in q,
group_by: s.operating_system,
select_merge: %{operating_system: s.operating_system}
select_merge: %{os: s.operating_system}
)
end

Expand Down
4 changes: 2 additions & 2 deletions lib/plausible/stats/filter_suggestions.ex
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@ defmodule Plausible.Stats.FilterSuggestions do
filter_search = if filter_search == nil, do: "", else: filter_search

filter_query =
if Enum.member?(["entry_page", :page, "exit_page"], filter_name),
if Enum.member?(["entry_page", "page", "exit_page"], filter_name),
do: "%#{String.replace(filter_search, "*", "")}%",
else: "%#{filter_search}%"

filter_name =
case filter_name do
:page -> "pathname"
"page" -> "pathname"
"source" -> "referrer_source"
"os" -> "operating_system"
"os_version" -> "operating_system_version"
Expand Down
16 changes: 4 additions & 12 deletions lib/plausible_web/controllers/api/external_stats_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ defmodule PlausibleWeb.Api.ExternalStatsController do
Plausible.Stats.aggregate(site, query, metrics)
end

json(conn, %{"results" => results})
json(conn, %{"results" => Map.take(results, metrics)})
else
{:error, msg} ->
conn
Expand Down Expand Up @@ -121,16 +121,7 @@ defmodule PlausibleWeb.Api.ExternalStatsController do
"The metric `#{invalid_metric}` is not recognized. Find valid metrics from the documentation: https://plausible.io/docs/stats-api#get-apiv1statsbreakdown"}
end
else
metrics =
metrics
|> Enum.map(fn item ->
case item do
"visitors" -> :visitors
metric -> metric
end
end)

{:ok, metrics}
{:ok, Enum.map(metrics, &String.to_atom/1)}
end
end

Expand All @@ -144,7 +135,8 @@ defmodule PlausibleWeb.Api.ExternalStatsController do
query <- Query.from(site.timezone, params),
{:ok, metrics} <- parse_metrics(params, nil, query) do
graph = Plausible.Stats.timeseries(site, query, metrics)
json(conn, %{"results" => graph})
metrics = metrics ++ ["date"]
json(conn, %{"results" => Enum.map(graph, &Map.take(&1, metrics))})
else
{:error, msg} ->
conn
Expand Down
15 changes: 7 additions & 8 deletions lib/plausible_web/controllers/api/stats_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ defmodule PlausibleWeb.Api.StatsController do
plot =
Imported.Visitors.timeseries(site, timeseries_query)
|> Enum.zip_with(plot, &(&1 + &2))

{plot, site.has_imported_stats}
else
{plot, false}
Expand Down Expand Up @@ -251,8 +252,7 @@ defmodule PlausibleWeb.Api.StatsController do

pagination = parse_pagination(params)

metrics =
if params["detailed"], do: [:visitors, :bounce_rate, :visit_duration], else: [:visitors]
metrics = [:visitors, :bounce_rate, :visit_duration]

res =
Stats.breakdown(site, query, "visit:utm_medium", metrics, pagination)
Expand Down Expand Up @@ -282,8 +282,7 @@ defmodule PlausibleWeb.Api.StatsController do

pagination = parse_pagination(params)

metrics =
if params["detailed"], do: [:visitors, :bounce_rate, :visit_duration], else: [:visitors]
metrics = [:visitors, :bounce_rate, :visit_duration]

res =
Stats.breakdown(site, query, "visit:utm_campaign", metrics, pagination)
Expand Down Expand Up @@ -313,8 +312,7 @@ defmodule PlausibleWeb.Api.StatsController do

pagination = parse_pagination(params)

metrics =
if params["detailed"], do: [:visitors, :bounce_rate, :visit_duration], else: [:visitors]
metrics = [:visitors, :bounce_rate, :visit_duration]

res =
Stats.breakdown(site, query, "visit:utm_source", metrics, pagination)
Expand Down Expand Up @@ -381,6 +379,7 @@ defmodule PlausibleWeb.Api.StatsController do
Stats.breakdown(site, query, "visit:referrer", metrics, pagination)
|> maybe_add_cr(site, query, pagination, "referrer", "visit:referrer")
|> transform_keys(%{"referrer" => "name"})
|> Enum.map(&Map.drop(&1, [:visits]))

%{:visitors => %{"value" => total_visitors}} = Stats.aggregate(site, query, [:visitors])
json(conn, %{referrers: referrers, total_visitors: total_visitors})
Expand Down Expand Up @@ -579,8 +578,8 @@ defmodule PlausibleWeb.Api.StatsController do

systems =
Stats.breakdown(site, query, "visit:os", [:visitors], pagination)
|> maybe_add_cr(site, query, pagination, :operating_system, "visit:os")
|> transform_keys(%{operating_system: "name"})
|> maybe_add_cr(site, query, pagination, :os, "visit:os")
|> transform_keys(%{os: "name"})
|> maybe_add_percentages(query)

if params["csv"] do
Expand Down

0 comments on commit 69d408b

Please sign in to comment.