From d9dee3af7b83ff7bb91e5dadf10e4c3d7cd8028c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro?= Date: Sat, 8 Jun 2024 23:16:53 +0200 Subject: [PATCH] refactor champions, position filters, champion card... --- .../champion_picked_summoner_spell/repo.ex | 8 +- .../champion_components/champion_avatar.ex | 16 +++ .../champion_components/champion_card.ex | 33 ++++++ .../champion_components/summoner_spell.ex | 42 ++++++++ .../champion_components/summoner_spells.ex | 36 ------- .../components/core_components.ex | 7 +- .../components/layouts/app.html.heex | 19 +--- .../components/layouts/root.html.heex | 33 +++--- .../components/champion_filters.ex | 93 +++++++++++++++++ .../live/champion_live/index.ex | 94 ++++++------------ .../live/champion_live/index.html.heex | 56 ++--------- .../live/champion_live/mapper.ex | 2 +- .../live/champion_live/show.ex | 34 ++++--- .../live/champion_live/show.html.heex | 10 +- .../live/champion_live/show_mapper.ex | 33 ++++++ ...vicon-91f37b602a111216f1eef3aa337ad763.ico | Bin 0 -> 152 bytes .../bot-f86609bc7e624bc194f9aa4c35c71288.png | Bin 0 -> 6743 bytes .../priv/static/images/lanes/bot.png | Bin 0 -> 6743 bytes ...ungle-052caf3cd6828e6ca0e51ef3e3f1b56a.png | Bin 0 -> 12009 bytes .../priv/static/images/lanes/jungle.png | Bin 0 -> 12009 bytes .../mid-a893efedb61dd0d57c64d0bc5a3815fa.png | Bin 0 -> 7731 bytes .../priv/static/images/lanes/mid.png | Bin 0 -> 7731 bytes ...pport-ed9e57067aded442715e9ef16b93f0da.png | Bin 0 -> 8091 bytes .../top-bba7d20309f94cf77cdb3687fe5974af.png | Bin 0 -> 6732 bytes .../priv/static/images/lanes/top.png | Bin 0 -> 6732 bytes .../priv/static/images/lanes/utility.png | Bin 0 -> 8091 bytes ...obots-9e2c81b0855bbff2baa8371bc4a78186.txt | 5 + ...ts-9e2c81b0855bbff2baa8371bc4a78186.txt.gz | Bin 0 -> 164 bytes .../priv/static/robots.txt.gz | Bin 0 -> 164 bytes mix.lock | 2 +- 30 files changed, 321 insertions(+), 202 deletions(-) create mode 100644 apps/lol_analytics_web/lib/lol_analytics_web/components/champion_components/champion_avatar.ex create mode 100644 apps/lol_analytics_web/lib/lol_analytics_web/components/champion_components/champion_card.ex create mode 100644 apps/lol_analytics_web/lib/lol_analytics_web/components/champion_components/summoner_spell.ex delete mode 100644 apps/lol_analytics_web/lib/lol_analytics_web/components/champion_components/summoner_spells.ex create mode 100644 apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/components/champion_filters.ex create mode 100644 apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/show_mapper.ex create mode 100644 apps/lol_analytics_web/priv/static/favicon-91f37b602a111216f1eef3aa337ad763.ico create mode 100644 apps/lol_analytics_web/priv/static/images/lanes/bot-f86609bc7e624bc194f9aa4c35c71288.png create mode 100644 apps/lol_analytics_web/priv/static/images/lanes/bot.png create mode 100644 apps/lol_analytics_web/priv/static/images/lanes/jungle-052caf3cd6828e6ca0e51ef3e3f1b56a.png create mode 100644 apps/lol_analytics_web/priv/static/images/lanes/jungle.png create mode 100644 apps/lol_analytics_web/priv/static/images/lanes/mid-a893efedb61dd0d57c64d0bc5a3815fa.png create mode 100644 apps/lol_analytics_web/priv/static/images/lanes/mid.png create mode 100644 apps/lol_analytics_web/priv/static/images/lanes/support-ed9e57067aded442715e9ef16b93f0da.png create mode 100644 apps/lol_analytics_web/priv/static/images/lanes/top-bba7d20309f94cf77cdb3687fe5974af.png create mode 100644 apps/lol_analytics_web/priv/static/images/lanes/top.png create mode 100644 apps/lol_analytics_web/priv/static/images/lanes/utility.png create mode 100644 apps/lol_analytics_web/priv/static/robots-9e2c81b0855bbff2baa8371bc4a78186.txt create mode 100644 apps/lol_analytics_web/priv/static/robots-9e2c81b0855bbff2baa8371bc4a78186.txt.gz create mode 100644 apps/lol_analytics_web/priv/static/robots.txt.gz diff --git a/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_summoner_spell/repo.ex b/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_summoner_spell/repo.ex index 6610140..cd6b3e2 100644 --- a/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_summoner_spell/repo.ex +++ b/apps/lol_analytics/lib/lol_analytics/facts/champion_picked_summoner_spell/repo.ex @@ -45,13 +45,10 @@ defmodule LolAnalytics.Facts.ChampionPickedSummonerSpell.Repo do |> IO.inspect() end - @spec get_champion_spells_by_win_rate(String.t()) :: list() - def get_champion_spells_by_win_rate(championId) do - end - - def get_champion_picked_summoners() do + def get_champion_picked_summoners(championId, team_position \\ "MIDDLE") do query = from f in Schema, + where: f.champion_id == ^championId and f.team_position == ^team_position, join: c in ChampionSchema, on: c.champion_id == f.champion_id, join: s in SummonerSpellSchema, @@ -70,7 +67,6 @@ defmodule LolAnalytics.Facts.ChampionPickedSummonerSpell.Repo do metadata: s.metadata, champion_name: c.name, champion_id: c.champion_id, - image: c.image, team_position: f.team_position, total_games: count("*") }, diff --git a/apps/lol_analytics_web/lib/lol_analytics_web/components/champion_components/champion_avatar.ex b/apps/lol_analytics_web/lib/lol_analytics_web/components/champion_components/champion_avatar.ex new file mode 100644 index 0000000..d69d1ad --- /dev/null +++ b/apps/lol_analytics_web/lib/lol_analytics_web/components/champion_components/champion_avatar.ex @@ -0,0 +1,16 @@ +defmodule LolAnalyticsWeb.ChampionComponents.ChampionAvatar do + use Phoenix.Component + + attr :id, :integer, required: true + attr :image, :string, required: true + attr :name, :string, required: true + + def champion_avatar(assigns) do + ~H""" +
+ champion-icon +

<%= @name %>

+
+ """ + end +end diff --git a/apps/lol_analytics_web/lib/lol_analytics_web/components/champion_components/champion_card.ex b/apps/lol_analytics_web/lib/lol_analytics_web/components/champion_components/champion_card.ex new file mode 100644 index 0000000..4d50cab --- /dev/null +++ b/apps/lol_analytics_web/lib/lol_analytics_web/components/champion_components/champion_card.ex @@ -0,0 +1,33 @@ +defmodule LolAnalyticsWeb.ChampionComponents.ChampionCard.Props do + defstruct [:id, :win_rate, :image, :name, :team_position, :wins, :total_games] +end + +defmodule LolAnalyticsWeb.ChampionComponents.ChampionCard do + use Phoenix.Component + + alias LolAnalyticsWeb.ChampionComponents.ChampionCard.Props + + attr :props, Props, default: %Props{} + + def champion_card(assigns) do + ~H""" + <.link patch={"/champions/#{@props.id}"}> +
+ +
+
+ +

<%= @props.name %>

+
+
+
+ + """ + end + + defp team_position_image("BOTTOM"), do: "/images/lanes/bot.png" + defp team_position_image("MIDDLE"), do: "/images/lanes/mid.png" + defp team_position_image("TOP"), do: "/images/lanes/top.png" + defp team_position_image("JUNGLE"), do: "/images/lanes/jungle.png" + defp team_position_image("UTILITY"), do: "/images/lanes/utility.png" +end diff --git a/apps/lol_analytics_web/lib/lol_analytics_web/components/champion_components/summoner_spell.ex b/apps/lol_analytics_web/lib/lol_analytics_web/components/champion_components/summoner_spell.ex new file mode 100644 index 0000000..968582a --- /dev/null +++ b/apps/lol_analytics_web/lib/lol_analytics_web/components/champion_components/summoner_spell.ex @@ -0,0 +1,42 @@ +defmodule LolAnalyticsWeb.ChampionComponents.SummonerSpells.Props.SummonerSpell do + defstruct [:id, :name, :win_rate, :wins, :total_games, :image] + + @type t :: %{ + id: integer(), + win_rate: float(), + wins: integer(), + total_games: integer(), + image: String.t(), + name: String.t() + } +end + +defmodule LolAnalyticsWeb.ChampionComponents.SummonerSpells.Props do + alias LolAnalyticsWeb.ChampionComponents.SummonerSpells.Props.SummonerSpell + + defstruct spell: %SummonerSpell{} + + @type t :: %{spell: SummonerSpell.t()} +end + +defmodule LolAnalyticsWeb.ChampionComponents.SummonerSpell do + alias LolAnalyticsWeb.ChampionComponents.SummonerSpells.Props + use Phoenix.Component + + attr :spells, Props, default: %Props{} + + def summoner_spells(assigns) do + ~H""" +
+ <%= for spell <- assigns.spells.summoner_spells do %> +
+ +

<%= spell.spell.name %>

+

<%= spell.spell.win_rate %>%

+

<%= spell.spell.wins %>/<%= spell.spell.total_games %>

+
+ <% end %> +
+ """ + end +end diff --git a/apps/lol_analytics_web/lib/lol_analytics_web/components/champion_components/summoner_spells.ex b/apps/lol_analytics_web/lib/lol_analytics_web/components/champion_components/summoner_spells.ex deleted file mode 100644 index 23e098f..0000000 --- a/apps/lol_analytics_web/lib/lol_analytics_web/components/champion_components/summoner_spells.ex +++ /dev/null @@ -1,36 +0,0 @@ -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""" -
- Spells -
- """ - end -end diff --git a/apps/lol_analytics_web/lib/lol_analytics_web/components/core_components.ex b/apps/lol_analytics_web/lib/lol_analytics_web/components/core_components.ex index 3d50e1e..c2dfb8a 100644 --- a/apps/lol_analytics_web/lib/lol_analytics_web/components/core_components.ex +++ b/apps/lol_analytics_web/lib/lol_analytics_web/components/core_components.ex @@ -302,6 +302,9 @@ defmodule LoLAnalyticsWeb.CoreComponents do end def input(%{type: "checkbox"} = assigns) do + IO.puts(">>>>") + IO.inspect(assigns) + assigns = assign_new(assigns, :checked, fn -> Phoenix.HTML.Form.normalize_value("checkbox", assigns[:value]) @@ -315,8 +318,8 @@ defmodule LoLAnalyticsWeb.CoreComponents do type="checkbox" id={@id} name={@name} - value="true" - checked={@checked} + value="false" + checked={false} class="rounded border-zinc-300 text-zinc-900 focus:ring-0" {@rest} /> diff --git a/apps/lol_analytics_web/lib/lol_analytics_web/components/layouts/app.html.heex b/apps/lol_analytics_web/lib/lol_analytics_web/components/layouts/app.html.heex index e23bfc8..ab1238b 100644 --- a/apps/lol_analytics_web/lib/lol_analytics_web/components/layouts/app.html.heex +++ b/apps/lol_analytics_web/lib/lol_analytics_web/components/layouts/app.html.heex @@ -2,25 +2,16 @@
- + LoL Analytics

v<%= Application.spec(:phoenix, :vsn) %>

- - @elixirphoenix - - - GitHub - - - Get Started - + <.link patch="/champions"> + Champions +
@@ -29,4 +20,4 @@ <.flash_group flash={@flash} /> <%= @inner_content %>
- + \ No newline at end of file diff --git a/apps/lol_analytics_web/lib/lol_analytics_web/components/layouts/root.html.heex b/apps/lol_analytics_web/lib/lol_analytics_web/components/layouts/root.html.heex index f2a57d3..1d57d7b 100644 --- a/apps/lol_analytics_web/lib/lol_analytics_web/components/layouts/root.html.heex +++ b/apps/lol_analytics_web/lib/lol_analytics_web/components/layouts/root.html.heex @@ -1,17 +1,20 @@ - - - - - <.live_title suffix=" · Phoenix Framework"> - <%= assigns[:page_title] || "LoLAnalytics" %> - - - - - - <%= @inner_content %> - - + + + + + + <.live_title suffix=" · Phoenix Framework"> + <%= assigns[:page_title] || "LoLAnalytics" %> + + + + + + + <%= @inner_content %> + + + \ No newline at end of file diff --git a/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/components/champion_filters.ex b/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/components/champion_filters.ex new file mode 100644 index 0000000..f6fddee --- /dev/null +++ b/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/components/champion_filters.ex @@ -0,0 +1,93 @@ +defmodule LolAnalyticsWeb.ChampionLive.Components.ChampionFilters do + use LoLAnalyticsWeb, :live_component + + @roles_definition [ + %{title: "All", value: "all"}, + %{title: "Top", value: "TOP"}, + %{title: "Jungle", value: "JUNGLE"}, + %{title: "Mid", value: "MIDDLE"}, + %{title: "Bot", value: "BOTTOM"}, + %{title: "Support", value: "UTILITY"} + ] + + def on_role_selected(role) do + send_update(LolAnalyticsWeb.ChampionLive, role) + end + + def mount(socket) do + socket = + assign(socket, :roles, @roles_definition) + |> assign(:form, build_roles_form()) + + {:ok, socket} + end + + defp build_roles() do + @roles_definition + |> Enum.reduce(%{}, fn role, acc -> + Map.merge(acc, %{"#{role.value}" => false}) + end) + |> Map.merge(%{"all" => true}) + end + + defp build_roles_form() do + @roles_definition + |> Enum.reduce(%{}, fn role, acc -> + Map.merge(acc, %{"#{role.value}" => false}) + end) + |> Map.merge(%{"all" => true}) + |> to_form + end + + def handle_event("filter", unsigned_params, socket) do + # updated_form = + # unsigned_params + # |> Enum.map(fn {key, val} -> {key, key == unsigned_params["_target"]} end) + + IO.inspect(unsigned_params) + # # assign() + # {:noreply, socket |> assign(:form, to_form(updated_form))} + end + + attr :selectedrole, :string, required: true + attr :roles, :list, default: [] + + def render(assigns) do + IO.puts(">>>>1") + # IO.inspect(assigns) + IO.inspect(assigns.selectedrole) + IO.inspect(">>>>>2") + + selected_class = + "px-8 py-2 flex flex-row gap-2 align-middle rounded-md border-gray-200 border border-sky-500" + + ~H""" +
+
+ <%= for role <- @roles do %> + <%!-- <%= IO.inspect(role) %> --%> + <%= if (assigns.selectedrole == role.value) do %> +
+ <%!-- <.input enabled={false} type="checkbox" field={@form[role.value]} /> --%> +

<%= role.title %>

+
+ <% else %> +
+ <%!-- <.input enabled={false} type="checkbox" field={@form[role.value]} /> --%> +

<%= role.title %>

+
+ <% end %> + <% end %> +
+
+ """ + end +end + +defmodule LolAnalyticsWeb.ChampionLive.Components.ChampionFilters.EventHandler do + @callback role_selected() :: none() +end diff --git a/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/index.ex b/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/index.ex index cd7c12a..a729ccd 100644 --- a/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/index.ex +++ b/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/index.ex @@ -1,7 +1,13 @@ defmodule LoLAnalyticsWeb.ChampionLive.Index do - alias LolAnalyticsWeb.ChampionLive.Mapper use LoLAnalyticsWeb, :live_view + import LolAnalyticsWeb.ChampionComponents.ChampionCard + + alias LolAnalyticsWeb.ChampionLive.Mapper + alias LolAnalyticsWeb.ChampionLive.Components.ChampionFilters + + @behaviour LolAnalyticsWeb.ChampionFilters.EventHandler + @roles [ %{title: "All", value: "all"}, %{title: "Top", value: "TOP"}, @@ -20,77 +26,41 @@ defmodule LoLAnalyticsWeb.ChampionLive.Index do |> Mapper.map_champs() |> Enum.sort(&(&1.win_rate >= &2.win_rate)) - roles = - @roles - |> Enum.reduce(%{}, fn role, acc -> - Map.merge(acc, %{"#{role.value}" => false}) - end) - |> Map.merge(%{"all" => true}) - - form = - Map.merge( - %{"name" => ""}, - roles - ) - socket = socket - |> stream( - :champions, - mapped - ) - |> assign(:form, to_form(form)) - |> assign(:roles, @roles) + |> stream(:champions, mapped) + |> assign(:selected_role, "all") {:ok, socket} end @impl true - def handle_event("filter", params, socket) do - %{ - "name" => query_name, - "all" => all, - "TOP" => top, - "JUNGLE" => jungle, - "MIDDLE" => mid, - "BOTTOM" => bot, - "UTILITY" => utility - } = params - - filter = - if all == "true" do - nil - else - %{ - "TOP" => top == "true", - "JUNGLE" => jungle == "true", - "MIDDLE" => mid == "true", - "BOTTOM" => bot == "true", - "UTILITY" => utility == "true" - } - |> Enum.filter(fn {_k, v} -> v end) - |> Enum.map(fn {k, _v} -> k end) - end - + def handle_event("filter", %{"role" => selected_role} = params, socket) do champs = LolAnalytics.Facts.ChampionPlayedGame.Repo.get_win_rates() - |> Enum.filter(fn %{name: name} -> - String.downcase(name) |> String.contains?(query_name) - end) - |> Enum.filter(fn champ -> - if filter != nil do - Enum.any?(filter, fn f -> f == champ.team_position end) - end - end) - |> Mapper.map_champs() - |> Enum.sort(&(&1.win_rate >= &2.win_rate)) + |> filter_champs(selected_role) {:noreply, - stream( - socket, - :champions, - champs - )} + socket + |> stream(:champions, champs) + |> assign(:selected_role, selected_role)} + end + + def handle_event("filter_champs", params, socket) do + end + + defp filter_champs(champs, selected_role) do + champs = + LolAnalytics.Facts.ChampionPlayedGame.Repo.get_win_rates() + |> Enum.filter((&filter_role/1).(selected_role)) + |> Mapper.map_champs() + |> Enum.sort(&(&1.win_rate >= &2.win_rate)) + end + + defp filter_role(role) do + fn champ -> + champ.team_position == role || role == "all" + end end @impl true @@ -101,7 +71,5 @@ defmodule LoLAnalyticsWeb.ChampionLive.Index do defp apply_action(socket, :index, _params) do socket |> assign(:page_title, "Listing Champions") - - # |> assign(:champion, nil) end end diff --git a/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/index.html.heex b/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/index.html.heex index 62d5bc4..c5f4e83 100644 --- a/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/index.html.heex +++ b/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/index.html.heex @@ -1,54 +1,20 @@ <.header> - Listing Champions + Champions -

Champions

-<.form for={@form} phx-change="filter" phx-submit="save"> -
- <.input type="text" field={@form["name"]} /> -
- <%= for role <- @roles do %> -
- <.input type="checkbox" field={@form[role.value]} /> -

<%= role.title %>

-
- <% end %> -
-
+

Filters

+ + +<.live_component module={ChampionFilters} id="role-filters" selectedrole={@selected_role} /> - <%!-- --%> -
<%= for {_, champion} <- @streams.champions do %> -
- -
-

<%= champion.name %>

-

<%= champion.wins %> / <%= champion.total_games %>

-

<%= champion.win_rate %>%

-

<%= champion.team_position %>

-
-
- -
- <.link navigate={~p"/champions/#{champion}"}>Show -
- <% end %> + <.champion_card props={champion} /> + <% end %>
-<.modal - :if={@live_action in [:new, :edit]} - id="champion-modal" - show - on_cancel={JS.patch(~p"/champions")} -> - <.live_component - module={LoLAnalyticsWeb.ChampionLive.FormComponent} - id={@champion.champion_id || :new} - title={@page_title} - action={@live_action} - champion={@champion} - patch={~p"/champions"} - /> - +<.modal :if={@live_action in [:new, :edit]} id="champion-modal" show on_cancel={JS.patch(~p"/champions")}> + <.live_component module={LoLAnalyticsWeb.ChampionLive.FormComponent} id={@champion.champion_id || :new} + title={@page_title} action={@live_action} champion={@champion} patch={~p"/champions"} /> + \ No newline at end of file diff --git a/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/mapper.ex b/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/mapper.ex index a471514..ed98598 100644 --- a/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/mapper.ex +++ b/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/mapper.ex @@ -5,7 +5,7 @@ defmodule LolAnalyticsWeb.ChampionLive.Mapper do champs |> Enum.map(fn champ -> %{ - Kernel.struct!(%ChampionSummary{}, champ) + champ | win_rate: :erlang.float_to_binary(champ.win_rate, decimals: 2) } end) diff --git a/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/show.ex b/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/show.ex index 540eb0b..f156122 100644 --- a/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/show.ex +++ b/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/show.ex @@ -1,7 +1,10 @@ defmodule LoLAnalyticsWeb.ChampionLive.Show do use LoLAnalyticsWeb, :live_view - import LolAnalyticsWeb.ChampionComponents.SummonerSpells + import LolAnalyticsWeb.ChampionComponents.SummonerSpell + import LolAnalyticsWeb.ChampionComponents.ChampionAvatar + + alias LolAnalyticsWeb.ChampionComponents.SummonerSpells.ShowMapper @impl true def mount(_params, _session, socket) do @@ -13,23 +16,22 @@ defmodule LoLAnalyticsWeb.ChampionLive.Show do {:noreply, socket |> assign(:page_title, page_title(socket.assigns.live_action)) - |> assign(:champion, %{id: id}) - |> assign(:summoner_spells, %{summoner_spells: load_summoner_spells()})} + |> assign(:champion, load_champion_info(id) |> ShowMapper.map_champion()) + |> assign(:summoner_spells, %{ + summoner_spells: load_summoner_spells(id) |> ShowMapper.map_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 - } - } + defp load_summoner_spells(champion_id) do + LolAnalytics.Facts.ChampionPickedSummonerSpell.Repo.get_champion_picked_summoners(champion_id) + end + + defp load_champion_info(champion_id) do + champion = LolAnalytics.Dimensions.Champion.ChampionRepo.get_or_create(champion_id) + + IO.inspect(champion) + + champion end defp page_title(:show), do: "Show Champion" diff --git a/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/show.html.heex b/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/show.html.heex index 28bb59f..28b9a5d 100644 --- a/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/show.html.heex +++ b/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/show.html.heex @@ -1,11 +1,15 @@ <.header> Champion <%= @champion.id %> - <:subtitle>This is a champion record from your database. - <:actions> + <:actions> +<.champion_avatar id={@champion.id} name={@champion.name} + image={"https://ddragon.leagueoflegends.com/cdn/14.11.1/img/champion/#{@champion.image}"} /> + +
+ <.summoner_spells spells={@summoner_spells} /> <.back navigate={~p"/champions"}> Back to champions - + \ No newline at end of file diff --git a/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/show_mapper.ex b/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/show_mapper.ex new file mode 100644 index 0000000..d66c270 --- /dev/null +++ b/apps/lol_analytics_web/lib/lol_analytics_web/live/champion_live/show_mapper.ex @@ -0,0 +1,33 @@ +defmodule LolAnalyticsWeb.ChampionComponents.SummonerSpells.ShowMapper do + alias LolAnalyticsWeb.ChampionComponents.SummonerSpells.SummonerSpell + + @spec map_champion(%LolAnalytics.Dimensions.Champion.ChampionSchema{}) :: map() + def map_champion(champion) do + %{ + id: champion.champion_id, + name: champion.name, + image: champion.image + } + end + + def map_spells(items) do + items + |> Enum.map(&map_spell/1) + |> Enum.sort(&(&1.spell.total_games > &2.spell.total_games)) + end + + def map_spell(spell) do + image = spell.metadata["image"]["full"] + + %LolAnalyticsWeb.ChampionComponents.SummonerSpells.Props{ + spell: %LolAnalyticsWeb.ChampionComponents.SummonerSpells.Props.SummonerSpell{ + id: spell.id, + win_rate: :erlang.float_to_binary(spell.win_rate, decimals: 2), + total_games: spell.total_games, + image: "https://ddragon.leagueoflegends.com/cdn/14.11.1/img/spell/#{image}", + name: spell.metadata["name"], + wins: spell.wins + } + } + end +end diff --git a/apps/lol_analytics_web/priv/static/favicon-91f37b602a111216f1eef3aa337ad763.ico b/apps/lol_analytics_web/priv/static/favicon-91f37b602a111216f1eef3aa337ad763.ico new file mode 100644 index 0000000000000000000000000000000000000000..7f372bfc21cdd8cb47585339d5fa4d9dd424402f GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=@t!V@Ar*{oFEH`~d50E!_s``s q?{G*w(7?#d#v@^nKnY_HKaYb01EZMZjMqTJ89ZJ6T-G@yGywoKK_h|y literal 0 HcmV?d00001 diff --git a/apps/lol_analytics_web/priv/static/images/lanes/bot-f86609bc7e624bc194f9aa4c35c71288.png b/apps/lol_analytics_web/priv/static/images/lanes/bot-f86609bc7e624bc194f9aa4c35c71288.png new file mode 100644 index 0000000000000000000000000000000000000000..48d922a00e2a06fab5bf231cfa74616e721d9e62 GIT binary patch literal 6743 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 E05=h9;s5{u literal 0 HcmV?d00001 diff --git a/apps/lol_analytics_web/priv/static/images/lanes/jungle.png b/apps/lol_analytics_web/priv/static/images/lanes/jungle.png new file mode 100644 index 0000000000000000000000000000000000000000..1643e54b9580fd9e3fd513a2b45d4496ef47c5a6 GIT binary patch literal 12009 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 E05=h9;s5{u literal 0 HcmV?d00001 diff --git a/apps/lol_analytics_web/priv/static/images/lanes/mid-a893efedb61dd0d57c64d0bc5a3815fa.png b/apps/lol_analytics_web/priv/static/images/lanes/mid-a893efedb61dd0d57c64d0bc5a3815fa.png new file mode 100644 index 0000000000000000000000000000000000000000..316617450edcbb93635a8c2559d2d286aedcd139 GIT binary patch literal 7731 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 literal 0 HcmV?d00001 diff --git a/apps/lol_analytics_web/priv/static/images/lanes/mid.png b/apps/lol_analytics_web/priv/static/images/lanes/mid.png new file mode 100644 index 0000000000000000000000000000000000000000..316617450edcbb93635a8c2559d2d286aedcd139 GIT binary patch literal 7731 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 literal 0 HcmV?d00001 diff --git a/apps/lol_analytics_web/priv/static/images/lanes/support-ed9e57067aded442715e9ef16b93f0da.png b/apps/lol_analytics_web/priv/static/images/lanes/support-ed9e57067aded442715e9ef16b93f0da.png new file mode 100644 index 0000000000000000000000000000000000000000..a61e184b0791c41af727d6258f5eb32b3d6519f4 GIT binary patch literal 8091 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 d`-W5)CkCzJg_QF?y}d2R(NNJ$_9vs5R?MJ|v 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 Rb^rOlgV5C1c&%n1`acAAFZ}=j literal 0 HcmV?d00001 diff --git a/apps/lol_analytics_web/priv/static/images/lanes/top.png b/apps/lol_analytics_web/priv/static/images/lanes/top.png new file mode 100644 index 0000000000000000000000000000000000000000..45f9b0eec76185347a5421ebe8189d06d910d5a6 GIT binary patch literal 6732 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 Rb^rOlgV5C1c&%n1`acAAFZ}=j literal 0 HcmV?d00001 diff --git a/apps/lol_analytics_web/priv/static/images/lanes/utility.png b/apps/lol_analytics_web/priv/static/images/lanes/utility.png new file mode 100644 index 0000000000000000000000000000000000000000..a61e184b0791c41af727d6258f5eb32b3d6519f4 GIT binary patch literal 8091 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 0.5.1", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "bdf75cdfcbe9e4622dd18e034b227d77dd17f0f133853a1c73b97b3d6c770e8b"}, "hackney": {:hex, :hackney, "1.20.1", "8d97aec62ddddd757d128bfd1df6c5861093419f8f7a4223823537bad5d064e2", [:rebar3], [{:certifi, "~> 2.12.0", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "~> 6.1.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "~> 1.0.0", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~> 1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.4.1", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "~> 1.1.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}, {:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "fe9094e5f1a2a2c0a7d10918fee36bfec0ec2a979994cff8cfe8058cd9af38e3"}, - "heroicons": {:git, "https://github.com/tailwindlabs/heroicons.git", "88ab3a0d790e6a47404cba02800a6b25d2afae50", [tag: "v2.1.1", sparse: "optimized", depth: 1]}, + "heroicons": {:git, "https://github.com/tailwindlabs/heroicons.git", "88ab3a0d790e6a47404cba02800a6b25d2afae50", [tag: "v2.1.1", sparse: "optimized"]}, "hpax": {:hex, :hpax, "0.1.2", "09a75600d9d8bbd064cdd741f21fc06fc1f4cf3d0fcc335e5aa19be1a7235c84", [:mix], [], "hexpm", "2c87843d5a23f5f16748ebe77969880e29809580efdaccd615cd3bed628a8c13"}, "httpoison": {:hex, :httpoison, "2.2.1", "87b7ed6d95db0389f7df02779644171d7319d319178f6680438167d7b69b1f3d", [:mix], [{:hackney, "~> 1.17", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "51364e6d2f429d80e14fe4b5f8e39719cacd03eb3f9a9286e61e216feac2d2df"}, "idna": {:hex, :idna, "6.1.1", "8a63070e9f7d0c62eb9d9fcb360a7de382448200fbbd1b106cc96d3d8099df8d", [:rebar3], [{:unicode_util_compat, "~> 0.7.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "92376eb7894412ed19ac475e4a86f7b413c1b9fbb5bd16dccd57934157944cea"},