From eb5f3fb18f3270b0acecfb313d7bfc63b9511bd2 Mon Sep 17 00:00:00 2001 From: Alex Lion Date: Sat, 24 Jan 2026 17:15:57 +0100 Subject: [PATCH] Refactor event card component to support mobile view and improve rendering logic --- .../live/event_live/event_card_component.ex | 212 ++++++++++++++++-- .../live/event_live/index.html.heex | 135 ++++++++++- .../layout/_profile_dropdown.html.heex | 63 +++++- 3 files changed, 368 insertions(+), 42 deletions(-) diff --git a/lib/claper_web/live/event_live/event_card_component.ex b/lib/claper_web/live/event_live/event_card_component.ex index bcf624c..347db22 100644 --- a/lib/claper_web/live/event_live/event_card_component.ex +++ b/lib/claper_web/live/event_live/event_card_component.ex @@ -11,10 +11,10 @@ defmodule ClaperWeb.EventLive.EventCardComponent do |> assign_new(:view_mode, fn -> "grid" end) |> assign(:thumbnail_url, get_thumbnail_url(assigns.event)) - if assigns.view_mode == "grid" do - render_grid_card(assigns) - else - render_list_card(assigns) + case assigns.view_mode do + "grid" -> render_grid_card(assigns) + "mobile" -> render_mobile_card(assigns) + _ -> render_list_card(assigns) end end @@ -41,7 +41,7 @@ defmodule ClaperWeb.EventLive.EventCardComponent do <% end %> - +
<%= if Event.started?(@event) && !Event.finished?(@event) do %> @@ -61,7 +61,7 @@ defmodule ClaperWeb.EventLive.EventCardComponent do
<% end %> - +
@@ -80,7 +80,7 @@ defmodule ClaperWeb.EventLive.EventCardComponent do LTI
- +
- - + +
- - + +
- + {gettext("End Event")}
- - + +
{gettext("Processing your file...")}
- - + +
{gettext("Error when processing the file")}
- - + +
<% end %>
- +
@@ -340,7 +338,7 @@ defmodule ClaperWeb.EventLive.EventCardComponent do
- +
<%= if Event.started?(@event) && !Event.finished?(@event) do %> @@ -360,7 +358,7 @@ defmodule ClaperWeb.EventLive.EventCardComponent do
<% end %> - +
<%= if @event.presentation_file.status == "done" && !Event.finished?(@event) do %> @@ -404,7 +402,7 @@ defmodule ClaperWeb.EventLive.EventCardComponent do {gettext("View report")} <% end %> - +
+ +
+
+ + +
+ <%= if @event.presentation_file.status == "done" && !Event.finished?(@event) do %> + + + + + {gettext("Join")} + + <.link + :if={Event.started?(@event) && not @is_leader} + data-confirm={ + gettext( + "Are you sure you want to terminate this event? This action cannot be undone." + ) + } + phx-value-id={@event.uuid} + phx-click="terminate" + class="flex items-center justify-center gap-1.5 px-3 py-2 bg-gray-100 text-gray-700 rounded-full font-bold text-sm hover:bg-gray-200 transition" + > + + + + {gettext("Terminé")} + + <% end %> + + <%= if @event.presentation_file.status == "progress" do %> +
+ + {gettext("Processing...")} +
+ <% end %> + + <%= if @event.presentation_file.status == "fail" do %> + {gettext("Error")} + <% end %> + + <%= if Event.finished?(@event) do %> + + + + + {gettext("View report")} + + + + + + {gettext("Terminé")} + + <% end %> +
+ + + + """ + end + defp render_dropdown_menu(assigns) do ~H"""