save display_mode to query string
Some checks failed
ci / docker (push) Failing after 3m14s

This commit is contained in:
Álvaro 2024-06-29 21:17:26 +02:00
parent 4c8364328c
commit f6b4a211b8
2 changed files with 32 additions and 10 deletions

View File

@ -16,13 +16,14 @@ defmodule LoLAnalyticsWeb.ChampionLive.Index do
def mount(params, _session, socket) do def mount(params, _session, socket) do
role = params["role"] || "all" role = params["role"] || "all"
patch = params["patch"] || "14.12" patch = params["patch"] || "14.12"
display_mode = params["display_mode"] || "grid"
socket = socket =
socket socket
|> assign(:selected_role, role) |> assign(:selected_role, role)
|> assign(:selected_patch, patch) |> assign(:selected_patch, patch)
|> assign(:champions, %{status: :loading}) |> assign(:champions, %{status: :loading})
|> assign(:display_mode, "grid") |> assign(:display_mode, display_mode)
|> load_champs(role, patch) |> load_champs(role, patch)
{:ok, socket} {:ok, socket}
@ -30,18 +31,22 @@ defmodule LoLAnalyticsWeb.ChampionLive.Index do
def handle_params(params, _uri, socket) do def handle_params(params, _uri, socket) do
role = params["role"] || "all" role = params["role"] || "all"
patch = params["patch"] || "14.12" patch = params["patch"] || "14.10"
display_mode = params["display_mode"] || "grid"
{ {
:noreply, :noreply,
assign(socket, selected_role: role) assign(socket, selected_role: role)
|> assign(selected_patch: patch) |> assign(selected_patch: patch)
|> assign(display_mode: display_mode)
} }
end end
@impl true @impl true
def handle_event("filter", %{"role" => selected_role} = params, socket) do def handle_event("filter", %{"role" => selected_role} = params, socket) do
query = Map.merge(params, %{patch: socket.assigns.selected_patch || "14.12"}) query =
get_query_params(socket)
|> Map.merge(%{role: selected_role})
{:reply, %{}, {:reply, %{},
socket socket
@ -51,13 +56,22 @@ defmodule LoLAnalyticsWeb.ChampionLive.Index do
|> assign(:selected_role, selected_role)} |> assign(:selected_role, selected_role)}
end end
def handle_event("set-display-mode", %{"mode" => mode}, socket) do def handle_event("set-display-mode", %{"mode" => mode} = params, socket) do
{:noreply, assign(socket, :display_mode, mode)} query_params =
get_query_params(socket)
|> Map.merge(%{display_mode: mode})
{:noreply,
assign(socket, :display_mode, mode)
|> push_patch(to: ~p"/champions?#{query_params}")}
end end
def handle_info(%{patch: patch}, socket) do def handle_info(%{patch: patch}, socket) do
selected_role = socket.assigns.selected_role selected_role = socket.assigns.selected_role
query_params = %{role: selected_role, patch: patch}
query_params =
get_query_params(socket)
|> Map.merge(%{patch: patch})
socket = socket =
assign(socket, :champions, %{status: :loading}) assign(socket, :champions, %{status: :loading})
@ -173,4 +187,12 @@ defmodule LoLAnalyticsWeb.ChampionLive.Index do
socket socket
|> assign(:page_title, "Listing Champions") |> assign(:page_title, "Listing Champions")
end end
defp get_query_params(socket) do
%{
patch: socket.assigns.selected_patch,
role: socket.assigns.selected_role,
display_mode: socket.assigns.display_mode
}
end
end end

View File

@ -16,7 +16,7 @@
</div> </div>
<div class="flex justify-between items-center"> <div class="flex justify-between items-center">
<.live_component module={PatchSelector} id="patch-selector" /> <.live_component module={PatchSelector} id="patch-selector" initial_patch={@selected_patch} />
<.render_display_mode_selector_selector display_mode={@display_mode} /> <.render_display_mode_selector_selector display_mode={@display_mode} />
</div> </div>
@ -26,7 +26,7 @@
<%= if @display_mode=="grid" do %> <%= if @display_mode=="grid" do %>
<.render_champions_grid champions={@champions} /> <.render_champions_grid champions={@champions} />
<% else %> <% else %>
<.render_champions_list id="champions-list" champions={@champions} /> <.render_champions_list id="champions-list" champions={@champions} />
<% end %> <% end %>
</div> </div>