add metadata to summoner spell

This commit is contained in:
2024-06-07 01:42:45 +02:00
parent 6dd8eea3d3
commit 968c2634b7
15 changed files with 143 additions and 19 deletions
@@ -0,0 +1,36 @@
defmodule LolAnalyticsWeb.ChampionComponents.SummonerSpells.SummonerSpell do
defstruct [:id, :win_rate, :total_games]
@type t :: %{
id: integer(),
win_rate: float(),
total_games: integer()
}
end
defmodule LolAnalyticsWeb.ChampionComponents.SummonerSpells.Props do
alias LolAnalyticsWeb.ChampionComponents.SummonerSpells.SummonerSpell
defstruct spell1: %SummonerSpell{},
spell2: %SummonerSpell{}
@type t :: %{
spell1: SummonerSpell.t(),
spell2: SummonerSpell.t()
}
end
defmodule LolAnalyticsWeb.ChampionComponents.SummonerSpells do
alias LolAnalyticsWeb.ChampionComponents.SummonerSpells.Props
use Phoenix.Component
attr :spells, Props, default: %Props{}
def summoner_spells(assigns) do
~H"""
<div>
Spells
</div>
"""
end
end
@@ -1,3 +1,3 @@
defmodule LolAnalyticsWeb.ChampionLive.Champion do
defmodule LolAnalyticsWeb.ChampionLive.ChampionSummary do
defstruct [:id, :win_rate, :image, :name, :team_position, :wins, :total_games]
end
@@ -1,11 +1,11 @@
defmodule LolAnalyticsWeb.ChampionLive.Mapper do
alias LolAnalyticsWeb.ChampionLive.Champion
alias LolAnalyticsWeb.ChampionLive.ChampionSummary
def map_champs(champs) do
champs
|> Enum.map(fn champ ->
%{
Kernel.struct!(%Champion{}, champ)
Kernel.struct!(%ChampionSummary{}, champ)
| win_rate: :erlang.float_to_binary(champ.win_rate, decimals: 2)
}
end)
@@ -1,6 +1,8 @@
defmodule LoLAnalyticsWeb.ChampionLive.Show do
use LoLAnalyticsWeb, :live_view
import LolAnalyticsWeb.ChampionComponents.SummonerSpells
@impl true
def mount(_params, _session, socket) do
{:ok, socket}
@@ -11,7 +13,23 @@ defmodule LoLAnalyticsWeb.ChampionLive.Show do
{:noreply,
socket
|> assign(:page_title, page_title(socket.assigns.live_action))
|> assign(:champion, %{id: id})}
|> assign(:champion, %{id: id})
|> assign(:summoner_spells, %{summoner_spells: load_summoner_spells()})}
end
defp load_summoner_spells() do
%LolAnalyticsWeb.ChampionComponents.SummonerSpells.Props{
spell1: %LolAnalyticsWeb.ChampionComponents.SummonerSpells.SummonerSpell{
id: 1,
win_rate: 51.7,
total_games: 400
},
spell2: %LolAnalyticsWeb.ChampionComponents.SummonerSpells.SummonerSpell{
id: 2,
win_rate: 51.7,
total_games: 500
}
}
end
defp page_title(:show), do: "Show Champion"
@@ -4,4 +4,8 @@
<:actions></:actions>
</.header>
<.back navigate={~p"/champions"}>Back to champions</.back>
<.summoner_spells spells={@summoner_spells} />
<.back navigate={~p"/champions"}>
Back to champions
</.back>
@@ -3,5 +3,3 @@
<:subtitle>This is a role record from your database.</:subtitle>
<:actions></:actions>
</.header>
<.back navigate={~p"/roles"}>Back to roles</.back>