/
hello_world_data.ex
65 lines (53 loc) · 1.11 KB
/
hello_world_data.ex
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
defmodule PdvBackendWeb.HelloWorldData do
use Phoenix.DataView
def mount(_params, socket) do
posts = [
gen_post(),
gen_post()
]
socket =
socket
|> assign(:categories, [%{id: 0, posts: posts}])
{:ok, socket}
end
deft render(assigns) do
%{
categories: for category <- assigns.categories do
keyed category.id do
%{
posts: for post <- category.posts do
keyed post.id, track(render_post(post))
end
}
end
end
}
end
#deft render(assigns) do
# %{
# posts: for post <- assigns.posts do
# keyed post.id, render_post(post)
# end
# }
#end
deft render_post(post) do
%{
title: post.title,
text: post.text,
}
end
def handle_event(%{"e" => "add_post"}, socket) do
[%{posts: posts}] = socket.assigns.categories
socket =
socket
|> assign(:categories, [%{id: 0, posts: [gen_post() | posts]}])
{:ok, socket}
end
def gen_post do
%{
id: 10,
title: "Foobar generated blogpost",
text: ""
}
end
end