Skip to content

Commit

Permalink
Add returning users stats
Browse files Browse the repository at this point in the history
Loïc Knuchel committed Jul 27, 2023

Unverified

No user is associated with the committer email.
1 parent 43f04ed commit 56be1c1
Showing 2 changed files with 21 additions and 3 deletions.
15 changes: 15 additions & 0 deletions backend/lib/azimutt/admin.ex
Original file line number Diff line number Diff line change
@@ -187,6 +187,21 @@ defmodule Azimutt.Admin do
|> Repo.all()
end

def daily_connected_users_returning, do: connected_users_returning("to_char(e.created_at, 'yyyy-mm-dd')", "1 day")
def weekly_connected_users_returning, do: connected_users_returning("to_char(date_trunc('week', e.created_at), 'yyyy-mm-dd')", "1 week")
def monthly_connected_users_returning, do: connected_users_returning("to_char(e.created_at, 'yyyy-mm')", "1 month")

defp connected_users_returning(field, period) do
res = SQL.query!(Repo, "
SELECT #{field} as period,
count(distinct e.created_by) as all_users,
count(distinct e.created_by) FILTER (WHERE u.created_at + interval '#{period}' < e.created_at) as not_new_users
FROM events e LEFT OUTER JOIN users u on u.id = e.created_by
GROUP BY #{field}
ORDER BY #{field} DESC")
res.rows |> Enum.map(fn row -> {row |> Enum.at(0), row |> Enum.at(2)} end)
end

def monthly_connected_users do
Event
|> select([e], {fragment("to_char(?, 'yyyy-mm')", e.created_at), count(e.created_by_id, :distinct)})
Original file line number Diff line number Diff line change
@@ -21,7 +21,8 @@ defmodule AzimuttWeb.Admin.DashboardController do
Dataset.chartjs_daily_data(
[
Admin.daily_connected_users() |> Dataset.from_values("Daily users"),
Admin.daily_used_projects() |> Dataset.from_values("Daily projects")
Admin.daily_used_projects() |> Dataset.from_values("Daily projects"),
Admin.daily_connected_users_returning() |> Dataset.from_values("Daily returning users")
],
three_months_ago,
now
@@ -30,15 +31,17 @@ defmodule AzimuttWeb.Admin.DashboardController do
Dataset.chartjs_weekly_data(
[
Admin.weekly_connected_users() |> Dataset.from_values("Weekly users"),
Admin.weekly_used_projects() |> Dataset.from_values("Weekly projects")
Admin.weekly_used_projects() |> Dataset.from_values("Weekly projects"),
Admin.weekly_connected_users_returning() |> Dataset.from_values("Weekly returning users")
],
one_year_ago,
now
),
monthly_connected_chart:
Dataset.chartjs_monthly_data([
Admin.monthly_connected_users() |> Dataset.from_values("Monthly users"),
Admin.monthly_used_projects() |> Dataset.from_values("Monthly projects")
Admin.monthly_used_projects() |> Dataset.from_values("Monthly projects"),
Admin.monthly_connected_users_returning() |> Dataset.from_values("Monthly returning users")
]),
created_chart:
Dataset.chartjs_daily_data(

0 comments on commit 56be1c1

Please sign in to comment.