Skip to content

Commit c305f23

Browse files
committed
first version of welcome page
1 parent 77e4d4e commit c305f23

File tree

3 files changed

+104
-3
lines changed

3 files changed

+104
-3
lines changed

lib/safira_web/config.ex

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ defmodule SafiraWeb.Config do
55

66
def app_pages do
77
[
8+
%{
9+
key: :profile,
10+
title: "Profile",
11+
icon: "hero-user",
12+
url: "/app/"
13+
},
814
%{
915
key: :badgedex,
1016
title: "Badgedex",

lib/safira_web/live/app/home_live/index.ex

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,23 @@ defmodule SafiraWeb.App.HomeLive.Index do
33

44
@impl true
55
def mount(_params, _session, socket) do
6-
{:ok, socket}
6+
# TODO: When the badgedex is ready, set the companies_visited based on the current_user info
7+
companies_visited = 1
8+
max_level = 4
9+
user_level = min(div(companies_visited, 5), max_level)
10+
companies_to_next_level = if user_level == max_level, do: 0, else: 5 - rem(companies_visited, 5)
11+
12+
prizes_by_next_level = [10, 20, 40, 100]
13+
next_prize = Enum.at(prizes_by_next_level, user_level)
14+
15+
{:ok,
16+
assign(socket,
17+
companies_visited: companies_visited,
18+
user_level: user_level,
19+
companies_to_next_level: companies_to_next_level,
20+
next_prize: next_prize,
21+
max_level: max_level
22+
)}
723
end
824

925
@impl true
Lines changed: 81 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,81 @@
1-
<.page title={gettext("Hello, %{attendee_name} 👋", attendee_name: @current_user.name)} size={:xl}>
2-
</.page>
1+
<.page title={gettext("Hello, %{current_user_name} 👋", current_user_name: @current_user.name)} size={:xl}>
2+
<div class="flex flex-col gap-x-8 md:flex-row">
3+
<div>
4+
<div class="flex flex-row justify-between items-center mt-10 pb-2 h-12 border-b-[1px] border-lightMuted">
5+
<h1 class="font-extrabold">Achievements</h1>
6+
</div>
7+
8+
<div class="grid grid-cols-2 gap-4 px-4 pt-8 min-w-72 md:grid-cols-1 md:">
9+
<p>
10+
💰 <%= "#{@current_user.attendee.tokens} tokens" %>
11+
</p>
12+
<p>
13+
🏅 56 Badges (⚠️)
14+
</p>
15+
<p>
16+
🎫 <%= "#{@current_user.attendee.entries} entries" %>
17+
</p>
18+
<p>
19+
🏁 Level <%= @user_level %> Checkpoint
20+
</p>
21+
</div>
22+
</div>
23+
24+
<div>
25+
26+
<div class="flex flex-row justify-between items-center mt-10 pb-2 h-12 border-b-[1px] border-lightMuted">
27+
<h1 class="font-extrabold">Checkpoint</h1>
28+
</div>
29+
30+
<div class="flex flex-col gap-2 py-8">
31+
<p>
32+
<strong class="font-black">Level 1</strong> 5 companies -> +10 entries
33+
</p>
34+
<p>
35+
<strong class="font-black">Level 2</strong> 10 companies -> +20 entries
36+
</p>
37+
<p>
38+
<strong class="font-black">Level 3</strong> 15 companies -> +40 entries
39+
</p>
40+
<p>
41+
<strong class="font-black">Level 4</strong> 20 companies -> +100 entries
42+
</p>
43+
</div>
44+
45+
<div class="flex flex-row items-center h-16 max-w-96 overflow-hidden">
46+
<%= for i <- 0..(@max_level - 1) do %>
47+
<%= if i <= (@user_level - 1) do %>
48+
<div class="h-full aspect-square bg-primary-500 rounded-full"></div>
49+
<%= if i != @max_level - 1 do %>
50+
<div class="w-full h-1 bg-primary-500"></div>
51+
<% end %>
52+
<% end %>
53+
54+
<%= if i == @user_level do %>
55+
<div class="h-1/2 aspect-square bg-primary-500 rounded-full"></div>
56+
<%= if i != @max_level - 1 do %>
57+
<div class="w-full h-1 bg-primary-500"></div>
58+
<% end %>
59+
<% end %>
60+
61+
<%= if i > @user_level do %>
62+
<div class="h-1/4 aspect-square border-primary-500 border-2 rounded-full"></div>
63+
<%= if i != @max_level - 1 do %>
64+
<div class="w-full h-1 bg-primary-500"></div>
65+
<% end %>
66+
<% end %>
67+
<% end %>
68+
</div>
69+
70+
<p class="py-8">
71+
<%= if @user_level == @max_level do %>
72+
You have reached the maximum level! 🎉
73+
<%= else %>
74+
You just need <%= @companies_to_next_level %> more <%= if @companies_to_next_level != 1 do "badges" else "badge" end %> to go to Level <%= @user_level + 1 %> (and win <%= @next_prize %>+ entries to the final draw). Hurry!
75+
<% end %>
76+
77+
<br><br>(⚠️⚠️⚠️⚠️⚠️ everything with this emoji is hardcoded, because badgedex isn't ready. Also the checkpoint level is calculated with hard coded values - see comment at index.ex)
78+
</p>
79+
</div>
80+
</div>
81+
</.page>

0 commit comments

Comments
 (0)