index.community/backend/lib/backend_web/views/graph_view.ex

37 lines
744 B
Elixir

defmodule BackendWeb.GraphView do
use BackendWeb, :view
alias BackendWeb.GraphView
def render("index.json", %{nodes: nodes, edges: edges}) do
%{
nodes: render_many(nodes, GraphView, "node.json"),
edges: render_many(edges, GraphView, "edge.json")
}
end
def render("node.json", %{graph: node}) do
size =
case node.user_count > 1 do
true -> :math.log(node.user_count)
false -> 1
end
%{
id: node.domain,
label: node.domain,
size: size,
x: node.x,
y: node.y
}
end
def render("edge.json", %{graph: edge}) do
%{
id: edge.id,
source: edge.source_domain,
target: edge.target_domain,
size: edge.weight
}
end
end