Skip to content

Commit f007007

Browse files
committed
Add hall of fame links
1 parent b29241e commit f007007

File tree

7 files changed

+75
-123
lines changed

7 files changed

+75
-123
lines changed

services/app/apps/codebattle/assets/js/__tests__/RatingList.test.jsx

Lines changed: 0 additions & 42 deletions
This file was deleted.

services/app/apps/codebattle/assets/js/widgets/pages/hallOfFamePage/HallOfFamePage.jsx

Lines changed: 35 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -20,53 +20,6 @@ const HallOfFamePage = () => {
2020
<div className="container">
2121
<h1 className="text-center text-white mb-5 fw-bold">Hall of Fame</h1>
2222

23-
{currentSeason && (
24-
<div
25-
className={cn(
26-
'card mb-5 cb-bg-panel cb-border-color cb-rounded shadow-sm',
27-
'border-0 text-light',
28-
)}
29-
>
30-
<div className="card-body">
31-
<h2 className="card-title mb-4 text-white">Current Season</h2>
32-
33-
<div className="row mb-2">
34-
<div className="col-md-6">
35-
<p>
36-
<strong>Season:</strong>
37-
{' '}
38-
{currentSeason.name || 'N/A'}
39-
</p>
40-
</div>
41-
<div className="col-md-6">
42-
<p>
43-
<strong>Year:</strong>
44-
{' '}
45-
{currentSeason.year || 'N/A'}
46-
</p>
47-
</div>
48-
</div>
49-
50-
<div className="row">
51-
<div className="col-md-6">
52-
<p>
53-
<strong>Starts:</strong>
54-
{' '}
55-
{currentSeason.starts_at || 'N/A'}
56-
</p>
57-
</div>
58-
<div className="col-md-6">
59-
<p>
60-
<strong>Ends:</strong>
61-
{' '}
62-
{currentSeason.ends_at || 'N/A'}
63-
</p>
64-
</div>
65-
</div>
66-
</div>
67-
</div>
68-
)}
69-
7023
<div
7124
className={cn(
7225
'card cb-bg-panel cb-border-color cb-rounded shadow-sm border-0 text-light',
@@ -133,6 +86,41 @@ const HallOfFamePage = () => {
13386
</div>
13487
</div>
13588
</div>
89+
90+
{currentSeason && (
91+
<div
92+
className={cn(
93+
'card mt-4 cb-bg-panel cb-border-color cb-rounded shadow-sm',
94+
'border-0 text-light',
95+
)}
96+
>
97+
<div className="card-body py-3">
98+
<h5 className="card-title mb-2 text-white">Current Season</h5>
99+
<div className="d-flex flex-wrap gap-3 small">
100+
<span>
101+
<strong>Season:</strong>
102+
{' '}
103+
{currentSeason.name || 'N/A'}
104+
</span>
105+
<span>
106+
<strong>Year:</strong>
107+
{' '}
108+
{currentSeason.year || 'N/A'}
109+
</span>
110+
<span>
111+
<strong>Starts:</strong>
112+
{' '}
113+
{currentSeason.starts_at || 'N/A'}
114+
</span>
115+
<span>
116+
<strong>Ends:</strong>
117+
{' '}
118+
{currentSeason.ends_at || 'N/A'}
119+
</span>
120+
</div>
121+
</div>
122+
</div>
123+
)}
136124
</div>
137125
</div>
138126
);

services/app/apps/codebattle/assets/js/widgets/pages/lobby/SeasonProfilePanel.jsx

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,17 @@ const OpponentInfo = ({ id }) => {
3838
</span>
3939
</div>
4040
<div className="d-flex flex-column text-center py-1 w-100">
41-
<span
42-
className={cn('stat-value d-block cb-text-danger', {
43-
'd-inline cb-text-skeleton w-25 mx-auto': !user,
44-
})}
45-
>
46-
{user ? user.rank : ''}
47-
</span>
48-
<span className="stat-label text-uppercase">Place</span>
41+
<a href="/hall_of_fame" className="stat-item py-1 w-100">
42+
<span
43+
className={cn('stat-value d-block cb-text-danger', {
44+
'd-inline cb-text-skeleton w-25 mx-auto': !user,
45+
})}
46+
>
47+
#
48+
{user ? user.rank : ''}
49+
</span>
50+
<span className="stat-label text-uppercase">Place</span>
51+
</a>
4952
</div>
5053
<div className="d-flex flex-column text-center py-1 w-100">
5154
<span
@@ -258,7 +261,7 @@ const SeasonProfilePanel = ({
258261
</span>
259262
<span className="stat-label text-uppercase">(Elo Rating)</span>
260263
</div>
261-
<div className="stat-item py-1 w-100">
264+
<a href="/hall_of_fame" className="stat-item py-1 w-100">
262265
{user.points ? (
263266
<span className="stat-value d-block cb-text-success">
264267
#
@@ -268,7 +271,7 @@ const SeasonProfilePanel = ({
268271
<span className="stat-value d-block cb-text-danger">#0</span>
269272
)}
270273
<span className="stat-label text-uppercase">Place</span>
271-
</div>
274+
</a>
272275
<div className="stat-item py-1 w-100">
273276
<span className="stat-value d-block cb-text-danger">
274277
{user.points || 0}

services/app/apps/codebattle/lib/codebattle/season_cache.ex

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ defmodule Codebattle.SeasonCache do
1717
season -> {:commit, season, ttl: @ttl}
1818
end
1919
end)
20-
|> dbg()
2120
|> case do
2221
{:commit, season, _params} -> season
2322
{:ok, season} -> season

services/app/apps/codebattle/lib/codebattle/user.ex

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ defmodule Codebattle.User do
184184
def get_user_places_and_ids do
185185
__MODULE__
186186
|> order_by([u], {:asc, u.rank})
187+
|> where([u], u.is_bot != true)
187188
|> select([u], {u.rank, u.id})
188189
|> Repo.all()
189190
end
@@ -284,9 +285,11 @@ defmodule Codebattle.User do
284285
# nil for new token users, clan will be managed by admin
285286
defp assign_clan(changeset, params, nil), do: assign_clan(changeset, params, 1)
286287

287-
defp assign_clan(changeset, %{clan: clan_name}, user_id), do: find_or_create_by_clan(changeset, clan_name, user_id)
288+
defp assign_clan(changeset, %{clan: clan_name}, user_id),
289+
do: find_or_create_by_clan(changeset, clan_name, user_id)
288290

289-
defp assign_clan(changeset, %{"clan" => clan_name}, user_id), do: find_or_create_by_clan(changeset, clan_name, user_id)
291+
defp assign_clan(changeset, %{"clan" => clan_name}, user_id),
292+
do: find_or_create_by_clan(changeset, clan_name, user_id)
290293

291294
defp assign_clan(changeset, _params, _user_id), do: changeset
292295

services/app/apps/codebattle/lib/codebattle/users_points_and_rank_server.ex

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -65,32 +65,15 @@ defmodule Codebattle.UsersPointsAndRankServer do
6565

6666
# Recalculate user points when a non-open tournament finishes
6767
# Open tournaments are excluded from point recalculation as they don't affect user ratings
68-
def handle_info(%{event: "tournament:finished", payload: %{grade: grade}}, state) when grade != "open" do
68+
def handle_info(%{event: "tournament:finished", payload: %{grade: grade}}, state)
69+
when grade != "open" do
6970
:timer.sleep(to_timeout(second: 1))
7071
do_work()
7172
{:noreply, state}
7273
end
7374

7475
def handle_info(_, state), do: {:noreply, state}
7576

76-
defp do_work do
77-
Codebattle.User.PointsAndRankUpdate.update()
78-
update_ets()
79-
Logger.debug("Points has been recalculated")
80-
end
81-
82-
defp update_ets do
83-
data = Codebattle.User.get_user_places_and_ids()
84-
:ets.insert(@user_ranking, data)
85-
end
86-
87-
defp ensure_ets_populated do
88-
case :ets.info(@user_ranking, :size) do
89-
0 -> update_ets()
90-
_ -> :ok
91-
end
92-
end
93-
9477
def get_nearby_user_ids(rank, limit \\ 2) do
9578
ensure_ets_populated()
9679

@@ -114,4 +97,22 @@ defmodule Codebattle.UsersPointsAndRankServer do
11497
Logger.error("Error getting top ranking user_ids")
11598
[]
11699
end
100+
101+
defp do_work do
102+
Codebattle.User.PointsAndRankUpdate.update()
103+
update_ets()
104+
Logger.debug("Points has been recalculated")
105+
end
106+
107+
defp update_ets do
108+
data = Codebattle.User.get_user_places_and_ids()
109+
:ets.insert(@user_ranking, data)
110+
end
111+
112+
defp ensure_ets_populated do
113+
case :ets.info(@user_ranking, :size) do
114+
0 -> update_ets()
115+
_ -> :ok
116+
end
117+
end
117118
end

services/app/apps/codebattle/lib/codebattle_web/templates/layout/app.html.heex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,10 +214,10 @@
214214
</a>
215215
<a
216216
class="dropdown-item cb-dropdown-item text-white"
217-
href={user_path(@conn, :index)}
217+
href={hall_of_fame_path(@conn, :index)}
218218
>
219219
<span class="fas fa-medal mr-2"></span>
220-
<%= gettext("Users rating") %>
220+
<%= gettext("Hall of Fame") %>
221221
</a>
222222
<a
223223
class="dropdown-item cb-dropdown-item text-white"

0 commit comments

Comments
 (0)