mirror of
https://github.com/plausible/analytics.git
synced 2024-09-11 18:07:33 +03:00
Allow custom event timeseries in stats API (#3505)
* Allow custom event timeseries in stats API * Fix linting error --------- Co-authored-by: Uku Taht <Uku.taht@gmail.com>
This commit is contained in:
parent
cfaa5be8f4
commit
555eb25d20
@ -38,6 +38,7 @@ All notable changes to this project will be documented in this file.
|
||||
- Update bot detection (matomo 6.1.4, ua_inspector 3.4.0)
|
||||
- Improved the Goal Settings page (search, autcompletion etc.)
|
||||
- Log mailer errors plausible/analytics#3336
|
||||
- Allow custom event timeseries in stats API plausible/analytics#3505
|
||||
|
||||
## v2.0.0 - 2023-07-12
|
||||
|
||||
|
@ -15,7 +15,7 @@ defmodule Plausible.Stats.Timeseries do
|
||||
@typep value :: nil | integer() | float()
|
||||
@type results :: nonempty_list(%{required(:date) => Date.t(), required(metric()) => value()})
|
||||
|
||||
@event_metrics [:visitors, :pageviews, :average_revenue, :total_revenue]
|
||||
@event_metrics [:visitors, :pageviews, :events, :average_revenue, :total_revenue]
|
||||
@session_metrics [:visits, :bounce_rate, :visit_duration, :views_per_visit]
|
||||
def timeseries(site, query, metrics) do
|
||||
steps = buckets(query)
|
||||
@ -218,10 +218,12 @@ defmodule Plausible.Stats.Timeseries do
|
||||
end
|
||||
end
|
||||
|
||||
# credo:disable-for-next-line Credo.Check.Refactor.CyclomaticComplexity
|
||||
defp empty_row(date, metrics) do
|
||||
Enum.reduce(metrics, %{date: date}, fn metric, row ->
|
||||
case metric do
|
||||
:pageviews -> Map.merge(row, %{pageviews: 0})
|
||||
:events -> Map.merge(row, %{events: 0})
|
||||
:visitors -> Map.merge(row, %{visitors: 0})
|
||||
:visits -> Map.merge(row, %{visits: 0})
|
||||
:views_per_visit -> Map.merge(row, %{views_per_visit: 0.0})
|
||||
|
@ -846,6 +846,55 @@ defmodule PlausibleWeb.Api.ExternalStatsController.TimeseriesTest do
|
||||
}
|
||||
end
|
||||
|
||||
test "shows events for last 7d", %{conn: conn, site: site} do
|
||||
populate_stats(site, [
|
||||
build(:event, name: "Signup", timestamp: ~N[2021-01-01 00:00:00]),
|
||||
build(:event, name: "Signup", timestamp: ~N[2021-01-01 00:00:00]),
|
||||
build(:event, name: "Signup", timestamp: ~N[2021-01-07 23:59:00])
|
||||
])
|
||||
|
||||
conn =
|
||||
get(conn, "/api/v1/stats/timeseries", %{
|
||||
"site_id" => site.domain,
|
||||
"period" => "7d",
|
||||
"metrics" => "events",
|
||||
"date" => "2021-01-07"
|
||||
})
|
||||
|
||||
assert json_response(conn, 200) == %{
|
||||
"results" => [
|
||||
%{
|
||||
"date" => "2021-01-01",
|
||||
"events" => 2
|
||||
},
|
||||
%{
|
||||
"date" => "2021-01-02",
|
||||
"events" => 0
|
||||
},
|
||||
%{
|
||||
"date" => "2021-01-03",
|
||||
"events" => 0
|
||||
},
|
||||
%{
|
||||
"date" => "2021-01-04",
|
||||
"events" => 0
|
||||
},
|
||||
%{
|
||||
"date" => "2021-01-05",
|
||||
"events" => 0
|
||||
},
|
||||
%{
|
||||
"date" => "2021-01-06",
|
||||
"events" => 0
|
||||
},
|
||||
%{
|
||||
"date" => "2021-01-07",
|
||||
"events" => 1
|
||||
}
|
||||
]
|
||||
}
|
||||
end
|
||||
|
||||
test "rounds views_per_visit to two decimal places", %{
|
||||
conn: conn,
|
||||
site: site
|
||||
|
Loading…
Reference in New Issue
Block a user