From a5cb6dc299dc9b309a2376d17d54f7d769e379e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro?= Date: Fri, 14 Jun 2024 02:56:34 +0200 Subject: [PATCH] display boots section in champion detail --- .../live/champion_live/show.ex | 20 +++++++++++++------ .../live/champion_live/show.html.heex | 10 ++++++++++ .../live/champion_live/show_mapper.ex | 10 ++++++++++ 3 files changed, 34 insertions(+), 6 deletions(-) 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 e579d26..307f1d1 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 @@ -21,7 +21,7 @@ defmodule LoLAnalyticsWeb.ChampionLive.Show do |> assign(:summoner_spells, %{ summoner_spells: load_summoner_spells(id, team_position) |> ShowMapper.map_spells() }) - |> assign(:items, load_items(id, team_position) |> ShowMapper.map_items())} + |> load_items(id, team_position)} end defp load_summoner_spells(champion_id, team_position) do @@ -31,11 +31,19 @@ defmodule LoLAnalyticsWeb.ChampionLive.Show do ) end - defp load_items(champion_id, team_position) do - LolAnalytics.Facts.ChampionPickedItem.Repo.get_champion_picked_items( - champion_id, - team_position - ) + defp load_items(socket, champion_id, team_position) do + items = + LolAnalytics.Facts.ChampionPickedItem.Repo.get_champion_picked_items( + champion_id, + team_position + ) + + all_items_mapped = items |> ShowMapper.map_items() |> Enum.take(30) + boots = items |> ShowMapper.extract_boots() + + socket + |> assign(:items, all_items_mapped) + |> assign(:boots, boots) end defp load_champion_info(champion_id) do 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 f53193d..80b1469 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 @@ -17,6 +17,16 @@

Items

+

Boots

+ +
+ +<.items items={@boots} /> + +
+ +

Popular items

+
<.items items={@items} /> \ 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 index 774fea8..10fa7e8 100644 --- 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 @@ -47,4 +47,14 @@ defmodule LolAnalyticsWeb.ChampionComponents.SummonerSpells.ShowMapper do wins: item.wins } end + + def extract_boots(items) do + items + |> Enum.filter(fn item -> + tags = item.metadata["tags"] + tags |> Enum.any?(&String.equivalent?(&1, "Boots")) + end) + |> Enum.map(&map_item/1) + |> Enum.sort(&(&1.total_games > &2.total_games)) + end end