File size: 1,945 Bytes
88211d3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | defmodule PlausibleWeb.Plugins.API.Views.Goal do
@moduledoc """
View for rendering Goals in the Plugins API
"""
use PlausibleWeb, :plugins_api_view
def render("index.json", %{
pagination: %{entries: goals, metadata: metadata},
authorized_site: site,
conn: conn
}) do
%{
goals: render_many(goals, __MODULE__, "goal.json", authorized_site: site, as: :goal),
meta: render_metadata_links(metadata, :plugins_api_goals_url, :index, conn.query_params)
}
end
def render("index.json", %{
goals: goals,
authorized_site: site,
conn: conn
}) do
%{
goals: render_many(goals, __MODULE__, "goal.json", authorized_site: site, as: :goal),
meta: render_metadata_links(%{}, :plugins_api_goals_url, :index, conn.query_params)
}
end
def render("goal.json", %{
goal: %{event_name: nil} = pageview
}) do
%{
goal_type: "Goal.Pageview",
goal: %{
id: pageview.id,
display_name: pageview.display_name,
path: pageview.page_path,
custom_props: pageview.custom_props || %{}
}
}
end
def render("goal.json", %{
goal: %{page_path: nil, currency: nil} = custom_event
}) do
%{
goal_type: "Goal.CustomEvent",
goal: %{
id: custom_event.id,
display_name: custom_event.display_name,
event_name: custom_event.event_name,
custom_props: custom_event.custom_props || %{}
}
}
end
def render("goal.json", %{
goal: %{page_path: nil, currency: currency} = revenue_goal
})
when is_atom(currency) do
%{
goal_type: "Goal.Revenue",
goal: %{
id: revenue_goal.id,
display_name: revenue_goal.display_name,
event_name: revenue_goal.event_name,
currency: revenue_goal.currency,
custom_props: revenue_goal.custom_props || %{}
}
}
end
end
|