Files
Claper/lib/claper_web/live/event_live/show.html.heex

567 lines
22 KiB
Plaintext
Raw Normal View History

<%= if @started || @is_leader do %>
<% focus_content? =
not is_nil(@current_slide_url) ||
match?(%Claper.Polls.Poll{}, @current_interaction) ||
match?(%Claper.Forms.Form{}, @current_interaction) ||
match?(%Claper.Quizzes.Quiz{}, @current_interaction) ||
match?(%Claper.Embeds.Embed{attendee_visibility: true}, @current_interaction) %>
<% interaction_mode? =
match?(%Claper.Polls.Poll{}, @current_interaction) ||
match?(%Claper.Forms.Form{}, @current_interaction) ||
match?(%Claper.Quizzes.Quiz{}, @current_interaction) %>
<div class="h-[100dvh] overflow-hidden bg-black lg:bg-primary-700">
<main
id="attendee-room"
class="relative mx-auto grid h-[100dvh] w-full max-w-lg grid-rows-[auto_auto_minmax(0,1fr)] overflow-hidden bg-black font-display shadow-2xl"
>
2023-04-20 22:10:33 +02:00
<div
id="side-menu-shadow"
phx-click={toggle_side_menu()}
class="fixed inset-0 z-50 hidden bg-black/70"
2023-04-20 22:10:33 +02:00
>
</div>
<aside
2023-04-20 22:10:33 +02:00
id="side-menu"
class="fixed inset-y-0 left-0 z-[60] hidden w-64 flex-col rounded-r-2xl bg-white px-4 text-gray-900 shadow-2xl animate__faster"
2023-04-20 22:10:33 +02:00
>
<img src="/images/logo-large-black.svg" class="my-3 h-16" alt="Claper" />
<span class="text-xl font-bold">{@event.name}</span>
2023-04-20 22:10:33 +02:00
<a
class="mt-5 flex items-center rounded-lg bg-gray-200 px-3 py-2"
2024-04-06 11:48:47 +02:00
href={~p"/?disconnected_from=#{@event.uuid}"}
2023-04-20 22:10:33 +02:00
>
<img src="/images/icons/exit-outline.svg" class="mr-3 h-5" />
2025-07-03 14:55:23 +02:00
<span>{gettext("Leave")}</span>
2023-04-20 22:10:33 +02:00
</a>
</aside>
<div
id="connection-status"
class="pointer-events-none absolute inset-x-4 top-16 z-50 hidden items-center justify-center rounded-full bg-supporting-yellow-100 px-4 py-2 text-sm font-semibold text-supporting-yellow-900 shadow-lg"
>
{gettext("Reconnecting...")}
2024-04-06 11:48:47 +02:00
</div>
<div
id="identity-menu"
phx-click-away={JS.hide(to: "#identity-menu")}
class="absolute bottom-16 left-2 z-40 hidden w-64 rounded-2xl border border-white/10 bg-gray-900 p-2 text-white shadow-2xl"
>
<p class="px-3 pb-2 pt-1 text-xs font-semibold uppercase tracking-wide text-gray-400">
{gettext("Post as")}
</p>
2023-04-20 22:10:33 +02:00
<button
:if={@state.anonymous_chat_enabled}
id="setAnonymous"
type="button"
phx-click={JS.push("set-nickname") |> JS.hide(to: "#identity-menu")}
phx-value-nickname=""
phx-hook="EmptyNickname"
data-storage-key={"nickname:#{@event.uuid}"}
class="flex min-h-11 w-full items-center gap-3 rounded-xl px-3 py-2 text-left hover:bg-white/10"
2023-04-20 22:10:33 +02:00
>
<span class="grid h-8 w-8 place-items-center rounded-full bg-gray-700">?</span>
<span class="font-semibold">{gettext("Anonymous")}</span>
2023-04-20 22:10:33 +02:00
</button>
<button
:if={!@state.anonymous_chat_enabled}
type="button"
disabled
class="flex min-h-11 w-full cursor-not-allowed items-center gap-3 rounded-xl px-3 py-2 text-left opacity-40"
>
<span class="grid h-8 w-8 place-items-center rounded-full bg-gray-700">?</span>
<span class="font-semibold">{gettext("Anonymous")} ({gettext("disabled")})</span>
</button>
<button
id="nicknamepicker"
type="button"
data-prompt={gettext("Enter your name")}
data-invalid={gettext("Nickname must be between 2 and 20 characters")}
data-close={JS.hide(to: "#identity-menu")}
data-storage-key={"nickname:#{@event.uuid}"}
phx-hook="NicknamePicker"
class="flex min-h-11 w-full items-center gap-3 rounded-xl px-3 py-2 text-left hover:bg-white/10"
>
<span class="grid h-8 w-8 place-items-center rounded-full bg-primary-500">
{if @nickname in [nil, ""], do: "A", else: String.first(@nickname)}
</span>
<span class="min-w-0">
<span class="block text-xs text-gray-400">{gettext("Nickname")}</span>
<span class="block truncate font-semibold">
{if @nickname in [nil, ""], do: gettext("Set your nickname"), else: @nickname}
</span>
</span>
</button>
</div>
<header
id="room-topbar"
class="relative z-30 bg-black px-4 pb-3 pt-[max(0.75rem,env(safe-area-inset-top))]"
>
<div id="banner" class="hidden w-full pb-2 text-center" phx-hook="EmbeddedBanner">
<a href="https://claper.co" target="_blank" class="text-xs text-gray-400">
{gettext("Create your next presentation with")} <span class="underline">Claper</span>
</a>
2023-04-20 22:10:33 +02:00
</div>
<div class="flex items-center justify-between gap-3">
<button
type="button"
phx-click={toggle_side_menu()}
class="inline-flex min-h-11 items-center gap-2 rounded-full bg-primary-500 px-4 text-sm font-bold uppercase text-white shadow-lg shadow-primary-900/30"
>
<img src="/images/icons/menu-outline.svg" class="h-5 w-5" />
<span>#{@event.code}</span>
</button>
<div class="ml-auto inline-flex min-h-11 items-center gap-2 text-sm font-semibold text-white">
<img src="/images/icons/online-users.svg" class="h-5 w-5" />
<span id="counter" phx-update="ignore" phx-hook="UpdateAttendees">
{@attendees_nb}
</span>
2024-07-11 12:53:47 +02:00
</div>
2023-11-23 16:36:39 +05:30
</div>
</header>
<section
id="focus-slot"
phx-hook="AttendeeFocus"
data-focus-key={focus_key(@current_interaction, @state.position)}
data-collapse-key={"focus-slot:#{@event.uuid}"}
data-interaction-mode={to_string(interaction_mode?)}
class={[
"relative z-10 min-h-0 overflow-hidden border-y border-white/10 bg-gray-950 transition-[height] duration-300",
focus_content? && "h-[40dvh] min-h-40 max-h-[26rem]",
!focus_content? && "h-12"
]}
>
Add quizz feature + improvements commit 705ea00064e552f482bff52c3c5b11d23fbd5b4c Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 21 10:08:42 2024 -0500 Change version commit 330173bd64bb18c5ea7e68a2122f66497981c3c3 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 21 10:01:52 2024 -0500 Fix layout commit 3cc075962e961f8a78b0c30eca9b79db6b9a5731 Author: Alex Lion <dev@alexandrelion.com> Date: Thu Dec 19 14:20:59 2024 +0100 Update changelog commit 63b1fa7ee591d40e44005b7939f51c99cf3e119e Author: Alex Lion <dev@alexandrelion.com> Date: Sun Dec 15 18:56:01 2024 +0100 Fix upper commit 8e7bb1990c58e343de5aa18036eb0916573fb4c6 Author: Alex Lion <dev@alexandrelion.com> Date: Sun Dec 15 18:49:20 2024 +0100 Add pagination for events commit 28beacd120f0a1081e670e4a06bbc185cc699beb Author: Alex Lion <dev@alexandrelion.com> Date: Mon Dec 9 21:03:13 2024 +0100 Add pagination commit c79d6cce947869b98795b9baf541a32952624969 Author: Alex Lion <dev@alexandrelion.com> Date: Sun Dec 8 21:24:23 2024 +0100 Fix tests commit caad25ad75b5937ca0906dca89dedaa4d58ae072 Author: Alex Lion <dev@alexandrelion.com> Date: Sun Dec 8 17:43:55 2024 +0100 Fix user registration bug commit 38c3eecc49d1397a8bb7a4a11203775396d00272 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 7 22:23:24 2024 +0100 Update changelog commit e648ef08a0f61cf4b554fcbf0a83e02a2249de0d Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 7 22:06:27 2024 +0100 Add obin commit 6925117818e117dbd60efea5ae6c81a26a57f76f Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 7 19:39:03 2024 +0100 WIP commit be9b2886d3b879452f5bae08b3cdd181cac254f8 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 7 16:19:09 2024 +0100 Add LTI AGS for quizzes commit 29a7c96de6d4e38b26dfaa61bfa5e689a16d4935 Author: Alex Lion <dev@alexandrelion.com> Date: Thu Dec 5 13:30:49 2024 +0100 Add translations commit 249fdc9188c7613a6adafb0b983303c1ae7601bd Author: Alex Lion <dev@alexandrelion.com> Date: Tue Dec 3 21:37:27 2024 +0100 Add qti export commit c2d56e30cdb6c629e957c64e4393dfd9d5af7159 Author: Alex Lion <dev@alexandrelion.com> Date: Tue Dec 3 20:44:58 2024 +0100 Fix report embed commit a34c239f9014e53b079106f1935bc2b079d01eed Author: Alex Lion <dev@alexandrelion.com> Date: Sat Nov 30 11:32:32 2024 +0100 Add export quiz commit 8d1f34b90635776ae40849bd75fd135693b116fb Author: Alex Lion <dev@alexandrelion.com> Date: Sat Nov 30 00:56:50 2024 +0100 Improve design commit d9a7370419ed9e288eccf263c2715330831e45e4 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Nov 30 00:43:27 2024 +0100 Add exports commit b374b7bbccfa655dfad7695d7a24c5ddd4a07b66 Author: Alex Lion <dev@alexandrelion.com> Date: Thu Nov 28 15:22:41 2024 +0100 Remove presence on manager commit 404e759ae3d2f5e555ae20437204553bffdc5065 Author: Alex Lion <dev@alexandrelion.com> Date: Thu Nov 28 15:22:33 2024 +0100 Improve engagement report commit 39dbec6692c2d3f74a97647a703993d6152bfa06 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Nov 23 15:39:59 2024 +0100 Add translation commit 354c2e30aece5bc7d800893ce8dee3868a1c1f71 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Nov 23 15:18:53 2024 +0100 Change product tour behavior commit 5f253812282fb11011694b8828580d886f1f5899 Author: Alex <dev@alexandrelion.com> Date: Tue Nov 19 19:59:32 2024 +0100 WIP commit f411180433a05b89fc9d029e2b313968985e5c3f Author: Alex <dev@alexandrelion.com> Date: Tue Nov 19 19:32:30 2024 +0100 WIP commit 2b5989774eeb839f7b7b2a49377aca9fe4d68c09 Author: Alex <dev@alexandrelion.com> Date: Sun Nov 17 19:31:27 2024 +0100 WIP commit c8750a667f131b68818859796670c3022c6d53fe Author: Alex <dev@alexandrelion.com> Date: Sun Nov 17 18:23:01 2024 +0100 WIP commit fdb9efecb5688423ed2c82cf445868040653d380 Author: Alex <dev@alexandrelion.com> Date: Sun Nov 17 17:55:57 2024 +0100 WIP commit 5d12b12ce33eb5c1ba2a3307ef4ac679b279f511 Author: Alex <dev@alexandrelion.com> Date: Sat Nov 16 21:22:12 2024 +0100 WIP commit 548b714fda61464517247910af7e3e1c2bdae8cf Author: Alex <dev@alexandrelion.com> Date: Fri Nov 15 15:34:00 2024 +0100 WIP commit f0c87f34ea2ac837b4b3b3d6fd51c32bd625371e Author: Alex <dev@alexandrelion.com> Date: Wed Nov 13 22:09:24 2024 +0100 WIP commit c0c8bf99a538653208e28300566cced3d444a764 Author: Alex <dev@alexandrelion.com> Date: Mon Nov 11 13:02:36 2024 +0100 WIP commit 245ea9b836c2e69c7269fc7d8c7fd2edd0032eed Author: Alex <dev@alexandrelion.com> Date: Sun Nov 10 19:07:36 2024 +0100 Add presenter commit 0cf50918d62a9ab5ea127698219e05f781c659bb Author: Alex <dev@alexandrelion.com> Date: Sat Nov 9 23:20:35 2024 +0100 Refactor reactions commit ef8ffefe56d5b19dd895be181437c461134176ab Author: Alex <dev@alexandrelion.com> Date: Sat Nov 9 22:21:13 2024 +0100 Add tests commit c4055142ed63d8ea1be921f527bcaf595a2b9268 Author: Alex <dev@alexandrelion.com> Date: Sat Nov 9 11:28:00 2024 +0100 WIP commit 779e6970f7ee7ca89aab2bdfcff6197895b9ce5e Author: Alex <dev@alexandrelion.com> Date: Fri Nov 8 17:21:11 2024 +0100 WIP commit 9d25c440b830ded7e6fc2e0bcc9353520ec4a951 Author: Alex <dev@alexandrelion.com> Date: Fri Nov 8 11:54:31 2024 +0100 WIP commit c0157487a9e20b6773e517553681915c12367851 Author: Alex <dev@alexandrelion.com> Date: Fri Nov 1 17:13:04 2024 +0100 Fix condition commit a64439fbf2d852e127deb00a11906fb86b0c9ece Author: Alex <dev@alexandrelion.com> Date: Fri Nov 1 12:16:21 2024 +0100 WIP commit a994d959afe20ee380d42feb5ca6da2ab832d569 Author: Alex <dev@alexandrelion.com> Date: Wed Oct 30 23:06:24 2024 +0100 Fix changeset commit 5b2935fc33577af21ccc2558b49d9a813f4835f3 Merge: cec1a97 7476269 Author: Alex <dev@alexandrelion.com> Date: Sun Oct 20 11:26:51 2024 +0200 Merge branch 'dev' into feature/quizz commit cec1a97650867da3a09d8e23d0756a3a573e1bc8 Author: Alex <dev@alexandrelion.com> Date: Sat Oct 19 22:52:00 2024 +0200 WIP commit f65854f638393ce80fd9d17642e8a90ee5c1a06e Author: Alex <dev@alexandrelion.com> Date: Sat Oct 19 16:55:42 2024 +0200 WIP commit 1e6429a386c56be6a8fdd2f083e273b50a6bc4c9 Merge: 1977959 6f8a2fd Author: Alex <dev@alexandrelion.com> Date: Sat Oct 19 13:49:22 2024 +0200 Merge branch 'dev' into feature/quizz # Conflicts: # lib/claper_web/live/event_live/manage.html.heex commit 1977959efb12b5fb2f1795a8547e501c02e62122 Author: Alex <dev@alexandrelion.com> Date: Sat Oct 5 12:57:09 2024 +0200 WIP
2024-12-21 10:09:29 -05:00
<div
id="new-interaction-badge"
class="pointer-events-none absolute left-1/2 top-3 z-30 hidden -translate-x-1/2 rounded-full bg-primary-500 px-3 py-1 text-xs font-bold text-white shadow-lg"
Add quizz feature + improvements commit 705ea00064e552f482bff52c3c5b11d23fbd5b4c Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 21 10:08:42 2024 -0500 Change version commit 330173bd64bb18c5ea7e68a2122f66497981c3c3 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 21 10:01:52 2024 -0500 Fix layout commit 3cc075962e961f8a78b0c30eca9b79db6b9a5731 Author: Alex Lion <dev@alexandrelion.com> Date: Thu Dec 19 14:20:59 2024 +0100 Update changelog commit 63b1fa7ee591d40e44005b7939f51c99cf3e119e Author: Alex Lion <dev@alexandrelion.com> Date: Sun Dec 15 18:56:01 2024 +0100 Fix upper commit 8e7bb1990c58e343de5aa18036eb0916573fb4c6 Author: Alex Lion <dev@alexandrelion.com> Date: Sun Dec 15 18:49:20 2024 +0100 Add pagination for events commit 28beacd120f0a1081e670e4a06bbc185cc699beb Author: Alex Lion <dev@alexandrelion.com> Date: Mon Dec 9 21:03:13 2024 +0100 Add pagination commit c79d6cce947869b98795b9baf541a32952624969 Author: Alex Lion <dev@alexandrelion.com> Date: Sun Dec 8 21:24:23 2024 +0100 Fix tests commit caad25ad75b5937ca0906dca89dedaa4d58ae072 Author: Alex Lion <dev@alexandrelion.com> Date: Sun Dec 8 17:43:55 2024 +0100 Fix user registration bug commit 38c3eecc49d1397a8bb7a4a11203775396d00272 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 7 22:23:24 2024 +0100 Update changelog commit e648ef08a0f61cf4b554fcbf0a83e02a2249de0d Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 7 22:06:27 2024 +0100 Add obin commit 6925117818e117dbd60efea5ae6c81a26a57f76f Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 7 19:39:03 2024 +0100 WIP commit be9b2886d3b879452f5bae08b3cdd181cac254f8 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 7 16:19:09 2024 +0100 Add LTI AGS for quizzes commit 29a7c96de6d4e38b26dfaa61bfa5e689a16d4935 Author: Alex Lion <dev@alexandrelion.com> Date: Thu Dec 5 13:30:49 2024 +0100 Add translations commit 249fdc9188c7613a6adafb0b983303c1ae7601bd Author: Alex Lion <dev@alexandrelion.com> Date: Tue Dec 3 21:37:27 2024 +0100 Add qti export commit c2d56e30cdb6c629e957c64e4393dfd9d5af7159 Author: Alex Lion <dev@alexandrelion.com> Date: Tue Dec 3 20:44:58 2024 +0100 Fix report embed commit a34c239f9014e53b079106f1935bc2b079d01eed Author: Alex Lion <dev@alexandrelion.com> Date: Sat Nov 30 11:32:32 2024 +0100 Add export quiz commit 8d1f34b90635776ae40849bd75fd135693b116fb Author: Alex Lion <dev@alexandrelion.com> Date: Sat Nov 30 00:56:50 2024 +0100 Improve design commit d9a7370419ed9e288eccf263c2715330831e45e4 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Nov 30 00:43:27 2024 +0100 Add exports commit b374b7bbccfa655dfad7695d7a24c5ddd4a07b66 Author: Alex Lion <dev@alexandrelion.com> Date: Thu Nov 28 15:22:41 2024 +0100 Remove presence on manager commit 404e759ae3d2f5e555ae20437204553bffdc5065 Author: Alex Lion <dev@alexandrelion.com> Date: Thu Nov 28 15:22:33 2024 +0100 Improve engagement report commit 39dbec6692c2d3f74a97647a703993d6152bfa06 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Nov 23 15:39:59 2024 +0100 Add translation commit 354c2e30aece5bc7d800893ce8dee3868a1c1f71 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Nov 23 15:18:53 2024 +0100 Change product tour behavior commit 5f253812282fb11011694b8828580d886f1f5899 Author: Alex <dev@alexandrelion.com> Date: Tue Nov 19 19:59:32 2024 +0100 WIP commit f411180433a05b89fc9d029e2b313968985e5c3f Author: Alex <dev@alexandrelion.com> Date: Tue Nov 19 19:32:30 2024 +0100 WIP commit 2b5989774eeb839f7b7b2a49377aca9fe4d68c09 Author: Alex <dev@alexandrelion.com> Date: Sun Nov 17 19:31:27 2024 +0100 WIP commit c8750a667f131b68818859796670c3022c6d53fe Author: Alex <dev@alexandrelion.com> Date: Sun Nov 17 18:23:01 2024 +0100 WIP commit fdb9efecb5688423ed2c82cf445868040653d380 Author: Alex <dev@alexandrelion.com> Date: Sun Nov 17 17:55:57 2024 +0100 WIP commit 5d12b12ce33eb5c1ba2a3307ef4ac679b279f511 Author: Alex <dev@alexandrelion.com> Date: Sat Nov 16 21:22:12 2024 +0100 WIP commit 548b714fda61464517247910af7e3e1c2bdae8cf Author: Alex <dev@alexandrelion.com> Date: Fri Nov 15 15:34:00 2024 +0100 WIP commit f0c87f34ea2ac837b4b3b3d6fd51c32bd625371e Author: Alex <dev@alexandrelion.com> Date: Wed Nov 13 22:09:24 2024 +0100 WIP commit c0c8bf99a538653208e28300566cced3d444a764 Author: Alex <dev@alexandrelion.com> Date: Mon Nov 11 13:02:36 2024 +0100 WIP commit 245ea9b836c2e69c7269fc7d8c7fd2edd0032eed Author: Alex <dev@alexandrelion.com> Date: Sun Nov 10 19:07:36 2024 +0100 Add presenter commit 0cf50918d62a9ab5ea127698219e05f781c659bb Author: Alex <dev@alexandrelion.com> Date: Sat Nov 9 23:20:35 2024 +0100 Refactor reactions commit ef8ffefe56d5b19dd895be181437c461134176ab Author: Alex <dev@alexandrelion.com> Date: Sat Nov 9 22:21:13 2024 +0100 Add tests commit c4055142ed63d8ea1be921f527bcaf595a2b9268 Author: Alex <dev@alexandrelion.com> Date: Sat Nov 9 11:28:00 2024 +0100 WIP commit 779e6970f7ee7ca89aab2bdfcff6197895b9ce5e Author: Alex <dev@alexandrelion.com> Date: Fri Nov 8 17:21:11 2024 +0100 WIP commit 9d25c440b830ded7e6fc2e0bcc9353520ec4a951 Author: Alex <dev@alexandrelion.com> Date: Fri Nov 8 11:54:31 2024 +0100 WIP commit c0157487a9e20b6773e517553681915c12367851 Author: Alex <dev@alexandrelion.com> Date: Fri Nov 1 17:13:04 2024 +0100 Fix condition commit a64439fbf2d852e127deb00a11906fb86b0c9ece Author: Alex <dev@alexandrelion.com> Date: Fri Nov 1 12:16:21 2024 +0100 WIP commit a994d959afe20ee380d42feb5ca6da2ab832d569 Author: Alex <dev@alexandrelion.com> Date: Wed Oct 30 23:06:24 2024 +0100 Fix changeset commit 5b2935fc33577af21ccc2558b49d9a813f4835f3 Merge: cec1a97 7476269 Author: Alex <dev@alexandrelion.com> Date: Sun Oct 20 11:26:51 2024 +0200 Merge branch 'dev' into feature/quizz commit cec1a97650867da3a09d8e23d0756a3a573e1bc8 Author: Alex <dev@alexandrelion.com> Date: Sat Oct 19 22:52:00 2024 +0200 WIP commit f65854f638393ce80fd9d17642e8a90ee5c1a06e Author: Alex <dev@alexandrelion.com> Date: Sat Oct 19 16:55:42 2024 +0200 WIP commit 1e6429a386c56be6a8fdd2f083e273b50a6bc4c9 Merge: 1977959 6f8a2fd Author: Alex <dev@alexandrelion.com> Date: Sat Oct 19 13:49:22 2024 +0200 Merge branch 'dev' into feature/quizz # Conflicts: # lib/claper_web/live/event_live/manage.html.heex commit 1977959efb12b5fb2f1795a8547e501c02e62122 Author: Alex <dev@alexandrelion.com> Date: Sat Oct 5 12:57:09 2024 +0200 WIP
2024-12-21 10:09:29 -05:00
>
{gettext("New interaction")}
Add quizz feature + improvements commit 705ea00064e552f482bff52c3c5b11d23fbd5b4c Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 21 10:08:42 2024 -0500 Change version commit 330173bd64bb18c5ea7e68a2122f66497981c3c3 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 21 10:01:52 2024 -0500 Fix layout commit 3cc075962e961f8a78b0c30eca9b79db6b9a5731 Author: Alex Lion <dev@alexandrelion.com> Date: Thu Dec 19 14:20:59 2024 +0100 Update changelog commit 63b1fa7ee591d40e44005b7939f51c99cf3e119e Author: Alex Lion <dev@alexandrelion.com> Date: Sun Dec 15 18:56:01 2024 +0100 Fix upper commit 8e7bb1990c58e343de5aa18036eb0916573fb4c6 Author: Alex Lion <dev@alexandrelion.com> Date: Sun Dec 15 18:49:20 2024 +0100 Add pagination for events commit 28beacd120f0a1081e670e4a06bbc185cc699beb Author: Alex Lion <dev@alexandrelion.com> Date: Mon Dec 9 21:03:13 2024 +0100 Add pagination commit c79d6cce947869b98795b9baf541a32952624969 Author: Alex Lion <dev@alexandrelion.com> Date: Sun Dec 8 21:24:23 2024 +0100 Fix tests commit caad25ad75b5937ca0906dca89dedaa4d58ae072 Author: Alex Lion <dev@alexandrelion.com> Date: Sun Dec 8 17:43:55 2024 +0100 Fix user registration bug commit 38c3eecc49d1397a8bb7a4a11203775396d00272 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 7 22:23:24 2024 +0100 Update changelog commit e648ef08a0f61cf4b554fcbf0a83e02a2249de0d Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 7 22:06:27 2024 +0100 Add obin commit 6925117818e117dbd60efea5ae6c81a26a57f76f Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 7 19:39:03 2024 +0100 WIP commit be9b2886d3b879452f5bae08b3cdd181cac254f8 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Dec 7 16:19:09 2024 +0100 Add LTI AGS for quizzes commit 29a7c96de6d4e38b26dfaa61bfa5e689a16d4935 Author: Alex Lion <dev@alexandrelion.com> Date: Thu Dec 5 13:30:49 2024 +0100 Add translations commit 249fdc9188c7613a6adafb0b983303c1ae7601bd Author: Alex Lion <dev@alexandrelion.com> Date: Tue Dec 3 21:37:27 2024 +0100 Add qti export commit c2d56e30cdb6c629e957c64e4393dfd9d5af7159 Author: Alex Lion <dev@alexandrelion.com> Date: Tue Dec 3 20:44:58 2024 +0100 Fix report embed commit a34c239f9014e53b079106f1935bc2b079d01eed Author: Alex Lion <dev@alexandrelion.com> Date: Sat Nov 30 11:32:32 2024 +0100 Add export quiz commit 8d1f34b90635776ae40849bd75fd135693b116fb Author: Alex Lion <dev@alexandrelion.com> Date: Sat Nov 30 00:56:50 2024 +0100 Improve design commit d9a7370419ed9e288eccf263c2715330831e45e4 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Nov 30 00:43:27 2024 +0100 Add exports commit b374b7bbccfa655dfad7695d7a24c5ddd4a07b66 Author: Alex Lion <dev@alexandrelion.com> Date: Thu Nov 28 15:22:41 2024 +0100 Remove presence on manager commit 404e759ae3d2f5e555ae20437204553bffdc5065 Author: Alex Lion <dev@alexandrelion.com> Date: Thu Nov 28 15:22:33 2024 +0100 Improve engagement report commit 39dbec6692c2d3f74a97647a703993d6152bfa06 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Nov 23 15:39:59 2024 +0100 Add translation commit 354c2e30aece5bc7d800893ce8dee3868a1c1f71 Author: Alex Lion <dev@alexandrelion.com> Date: Sat Nov 23 15:18:53 2024 +0100 Change product tour behavior commit 5f253812282fb11011694b8828580d886f1f5899 Author: Alex <dev@alexandrelion.com> Date: Tue Nov 19 19:59:32 2024 +0100 WIP commit f411180433a05b89fc9d029e2b313968985e5c3f Author: Alex <dev@alexandrelion.com> Date: Tue Nov 19 19:32:30 2024 +0100 WIP commit 2b5989774eeb839f7b7b2a49377aca9fe4d68c09 Author: Alex <dev@alexandrelion.com> Date: Sun Nov 17 19:31:27 2024 +0100 WIP commit c8750a667f131b68818859796670c3022c6d53fe Author: Alex <dev@alexandrelion.com> Date: Sun Nov 17 18:23:01 2024 +0100 WIP commit fdb9efecb5688423ed2c82cf445868040653d380 Author: Alex <dev@alexandrelion.com> Date: Sun Nov 17 17:55:57 2024 +0100 WIP commit 5d12b12ce33eb5c1ba2a3307ef4ac679b279f511 Author: Alex <dev@alexandrelion.com> Date: Sat Nov 16 21:22:12 2024 +0100 WIP commit 548b714fda61464517247910af7e3e1c2bdae8cf Author: Alex <dev@alexandrelion.com> Date: Fri Nov 15 15:34:00 2024 +0100 WIP commit f0c87f34ea2ac837b4b3b3d6fd51c32bd625371e Author: Alex <dev@alexandrelion.com> Date: Wed Nov 13 22:09:24 2024 +0100 WIP commit c0c8bf99a538653208e28300566cced3d444a764 Author: Alex <dev@alexandrelion.com> Date: Mon Nov 11 13:02:36 2024 +0100 WIP commit 245ea9b836c2e69c7269fc7d8c7fd2edd0032eed Author: Alex <dev@alexandrelion.com> Date: Sun Nov 10 19:07:36 2024 +0100 Add presenter commit 0cf50918d62a9ab5ea127698219e05f781c659bb Author: Alex <dev@alexandrelion.com> Date: Sat Nov 9 23:20:35 2024 +0100 Refactor reactions commit ef8ffefe56d5b19dd895be181437c461134176ab Author: Alex <dev@alexandrelion.com> Date: Sat Nov 9 22:21:13 2024 +0100 Add tests commit c4055142ed63d8ea1be921f527bcaf595a2b9268 Author: Alex <dev@alexandrelion.com> Date: Sat Nov 9 11:28:00 2024 +0100 WIP commit 779e6970f7ee7ca89aab2bdfcff6197895b9ce5e Author: Alex <dev@alexandrelion.com> Date: Fri Nov 8 17:21:11 2024 +0100 WIP commit 9d25c440b830ded7e6fc2e0bcc9353520ec4a951 Author: Alex <dev@alexandrelion.com> Date: Fri Nov 8 11:54:31 2024 +0100 WIP commit c0157487a9e20b6773e517553681915c12367851 Author: Alex <dev@alexandrelion.com> Date: Fri Nov 1 17:13:04 2024 +0100 Fix condition commit a64439fbf2d852e127deb00a11906fb86b0c9ece Author: Alex <dev@alexandrelion.com> Date: Fri Nov 1 12:16:21 2024 +0100 WIP commit a994d959afe20ee380d42feb5ca6da2ab832d569 Author: Alex <dev@alexandrelion.com> Date: Wed Oct 30 23:06:24 2024 +0100 Fix changeset commit 5b2935fc33577af21ccc2558b49d9a813f4835f3 Merge: cec1a97 7476269 Author: Alex <dev@alexandrelion.com> Date: Sun Oct 20 11:26:51 2024 +0200 Merge branch 'dev' into feature/quizz commit cec1a97650867da3a09d8e23d0756a3a573e1bc8 Author: Alex <dev@alexandrelion.com> Date: Sat Oct 19 22:52:00 2024 +0200 WIP commit f65854f638393ce80fd9d17642e8a90ee5c1a06e Author: Alex <dev@alexandrelion.com> Date: Sat Oct 19 16:55:42 2024 +0200 WIP commit 1e6429a386c56be6a8fdd2f083e273b50a6bc4c9 Merge: 1977959 6f8a2fd Author: Alex <dev@alexandrelion.com> Date: Sat Oct 19 13:49:22 2024 +0200 Merge branch 'dev' into feature/quizz # Conflicts: # lib/claper_web/live/event_live/manage.html.heex commit 1977959efb12b5fb2f1795a8547e501c02e62122 Author: Alex <dev@alexandrelion.com> Date: Sat Oct 5 12:57:09 2024 +0200 WIP
2024-12-21 10:09:29 -05:00
</div>
2023-11-23 16:36:39 +05:30
<%= case @current_interaction do %>
<% %Claper.Polls.Poll{} -> %>
<div class="h-full overflow-y-auto overscroll-contain p-3">
<.live_component
module={ClaperWeb.EventLive.PollComponent}
id={"#{@current_interaction.id}-poll"}
poll={@current_interaction}
current_user={@current_user}
attendee_identifier={@attendee_identifier}
event={@event}
selected_poll_opt={@selected_poll_opt}
current_poll_vote={@current_poll_vote}
show_results={@current_interaction.show_results}
focus_mode
/>
</div>
<% %Claper.Forms.Form{} -> %>
<div class="h-full overflow-y-auto overscroll-contain p-3">
<.live_component
module={ClaperWeb.EventLive.FormComponent}
id={"#{@current_interaction.id}-form"}
form={@current_interaction}
current_user={@current_user}
attendee_identifier={@attendee_identifier}
event={@event}
current_form_submit={@current_form_submit}
focus_mode
/>
</div>
<% %Claper.Quizzes.Quiz{} -> %>
<div class="h-full overflow-y-auto overscroll-contain p-3">
<.live_component
module={ClaperWeb.EventLive.QuizComponent}
id={"#{@current_interaction.id}-quiz"}
quiz={@current_interaction}
current_user={@current_user}
attendee_identifier={@attendee_identifier}
event={@event}
selected_quiz_question_opts={@selected_quiz_question_opts}
current_quiz_question_idx={@current_quiz_question_idx}
current_quiz_responses={@current_quiz_responses}
quiz_score={@quiz_score}
focus_mode
/>
</div>
<% %Claper.Embeds.Embed{attendee_visibility: true} -> %>
<div id="focus-media" class="relative h-full w-full bg-black">
<.live_component
id={"focus-embed-#{@current_interaction.id}"}
module={ClaperWeb.EventLive.EmbedIframeComponent}
provider={@current_interaction.provider}
content={@current_interaction.content}
title={@current_interaction.title}
/>
</div>
<% _ -> %>
<%= if @current_slide_url do %>
<div id="focus-media" class="relative h-full w-full bg-black">
<img
src={@current_slide_url}
alt={gettext("Current presentation slide")}
class="h-full w-full object-contain"
/>
</div>
<% else %>
<div class="flex h-full items-center justify-between gap-3 px-4 text-sm text-gray-400">
<span>{gettext("Waiting for content")}</span>
<span class="h-2 w-2 animate-pulse rounded-full bg-primary-400"></span>
</div>
<% end %>
<% end %>
<button
:if={focus_content? && !interaction_mode?}
type="button"
data-focus-fullscreen
aria-label={gettext("Open fullscreen")}
class="absolute right-3 top-3 z-20 grid h-11 w-11 place-items-center rounded-full bg-black/65 text-white backdrop-blur"
>
<svg
class="h-5 w-5"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="M8 3H3v5M16 3h5v5M8 21H3v-5m13 5h5v-5"
/>
</svg>
</button>
<button
:if={focus_content? && !interaction_mode?}
type="button"
data-focus-collapse
aria-label={gettext("Hide presentation")}
class="absolute right-16 top-3 z-20 grid h-11 w-11 place-items-center rounded-full bg-black/65 text-white backdrop-blur"
>
<svg
class="h-5 w-5"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
>
<path stroke-linecap="round" stroke-linejoin="round" d="m6 15 6-6 6 6" />
</svg>
</button>
<div
:if={focus_content? && !interaction_mode?}
data-focus-collapsed-bar
class="hidden h-full items-center px-4"
>
<button
type="button"
data-focus-show
class="flex min-h-11 w-full items-center justify-between text-sm font-semibold text-white"
>
<span>{gettext("Show presentation")}</span>
<svg
class="h-5 w-5"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
>
<path stroke-linecap="round" stroke-linejoin="round" d="m6 9 6 6 6-6" />
</svg>
</button>
</div>
<div
:if={
!interaction_mode? && @transcription_config && @transcription_config.enabled &&
@transcription_config.visibility in ["both", "attendee"]
}
id="focus-captions"
class="absolute inset-x-0 bottom-0 z-20"
>
<button
type="button"
data-caption-toggle
aria-label={gettext("Toggle captions")}
class="absolute bottom-2 right-2 grid h-11 w-11 place-items-center rounded-full bg-black/70 text-xs font-black text-white backdrop-blur"
>
CC
</button>
<div
data-caption-text
class={[
"mx-14 mb-2 rounded-lg bg-black/80 px-3 py-2 text-center text-sm font-medium text-white backdrop-blur",
@transcription_text == "" && "hidden"
]}
>
{@transcription_text}
</div>
</div>
</section>
<section id="chat-panel" class="relative min-h-0 overflow-visible bg-black">
<div
id="chat-feed"
class={[
"h-full space-y-3 overflow-y-auto overscroll-contain px-4 pt-4",
@state.message_reaction_enabled && "pb-40",
!@state.message_reaction_enabled && "pb-24"
]}
data-room-reactions={to_string(@state.message_reaction_enabled)}
phx-update="stream"
phx-hook="RoomFeed"
data-chip="#new-messages-chip"
data-posts-nb={@post_count}
>
<.live_component
:for={{id, post} <- @streams.posts}
module={ClaperWeb.EventLive.PostComponent}
id={id}
post={post}
leaders={@leaders}
is_leader={@is_leader}
current_user={@current_user}
attendee_identifier={@attendee_identifier}
event={@event}
reaction_enabled={@state.message_reaction_enabled}
liked_posts={@like_posts}
loved_posts={@love_posts}
loled_posts={@lol_posts}
/>
</div>
<div
:if={@post_count == 0 && @state.chat_enabled}
class="pointer-events-none absolute inset-0 flex items-center justify-center px-8 text-center text-sm text-gray-500"
>
{gettext("Be the first to ask a question or share a thought.")}
</div>
<button
id="new-messages-chip"
type="button"
class="absolute bottom-20 left-1/2 z-20 hidden -translate-x-1/2 rounded-full bg-primary-500 px-4 py-2 text-xs font-bold text-white shadow-xl"
>
<span data-unread-count></span> {gettext("new messages")}&nbsp;↓
</button>
<div
id="reacts"
phx-hook="GlobalReacts"
data-class-name="h-12 w-12"
class="pointer-events-none absolute inset-0 z-10 overflow-hidden"
phx-update="ignore"
>
</div>
<div
:if={@state.message_reaction_enabled}
id="room-reaction-fab"
phx-hook="RoomReactionFab"
class="absolute bottom-20 left-4 z-20 flex flex-col items-center gap-2"
>
<div
data-reaction-picker
role="menu"
class="hidden flex-col-reverse gap-2 rounded-full bg-gray-900/95 p-2 shadow-2xl"
>
<button
type="button"
data-reaction="heart"
role="menuitem"
aria-label={gettext("Heart")}
class="grid h-11 w-11 place-items-center rounded-full hover:bg-white/10"
>
<img src="/images/icons/heart.svg" class="h-6 w-6" />
</button>
<button
type="button"
data-reaction="clap"
role="menuitem"
aria-label={gettext("Clap")}
class="grid h-11 w-11 place-items-center rounded-full hover:bg-white/10"
>
<img src="/images/icons/clap.svg" class="h-6 w-6" />
</button>
<button
type="button"
data-reaction="hundred"
role="menuitem"
aria-label={gettext("Hundred")}
class="grid h-11 w-11 place-items-center rounded-full hover:bg-white/10"
>
<img src="/images/icons/hundred.svg" class="h-6 w-6" />
</button>
<button
type="button"
data-reaction="raisehand"
role="menuitem"
aria-label={gettext("Raise hand")}
class="grid h-11 w-11 place-items-center rounded-full hover:bg-white/10"
>
<img src="/images/icons/raisehand.svg" class="h-6 w-6" />
</button>
</div>
<button
type="button"
data-reaction-trigger
aria-label={gettext("Send a live reaction")}
aria-haspopup="menu"
aria-expanded="false"
class="grid h-14 w-14 place-items-center rounded-full border-4 border-gray-900 bg-supporting-yellow-100 shadow-xl"
>
<img data-reaction-icon src="/images/icons/heart.svg" class="h-7 w-7" />
</button>
</div>
</section>
<footer
id="room-composer"
class="absolute inset-x-0 bottom-0 z-30 bg-transparent px-3 pb-[max(0.75rem,env(safe-area-inset-bottom))] pt-2"
>
<%= if @state.chat_enabled do %>
<.form
:let={f}
for={@post_changeset}
id="post-form"
class="attendee-composer flex items-center gap-1.5 rounded-2xl border border-white/20 px-1.5 py-1 shadow-2xl"
phx-hook="PostForm"
data-nickname={@nickname}
data-storage-key={"post-draft:#{@event.uuid}"}
phx-submit="save"
>
<button
id="composer-identity-button"
type="button"
aria-label={gettext("Choose identity")}
phx-click={JS.toggle(to: "#identity-menu")}
class="grid h-9 w-9 shrink-0 place-items-center rounded-full bg-black/60 text-xs font-bold text-white"
>
{if @nickname in [nil, ""], do: "A", else: String.first(@nickname)}
</button>
{textarea(f, :body,
id: "postFormTA",
disabled: !@state.anonymous_chat_enabled && @nickname in [nil, ""],
rows: 1,
maxlength: 255,
class:
"min-h-9 max-h-16 min-w-0 flex-1 resize-none border-0 bg-transparent px-2 py-2 text-sm leading-5 text-white outline-hidden placeholder:text-white/70 focus:ring-0 disabled:cursor-not-allowed disabled:opacity-50",
placeholder:
if(!@state.anonymous_chat_enabled && @nickname in [nil, ""],
do: gettext("Set your nickname to participate"),
else: gettext("Ask, comment...")
)
)}
<button
type="submit"
id="submitBtn"
disabled
aria-label={gettext("Send message")}
class="grid h-9 w-9 shrink-0 place-items-center rounded-full bg-black/20 text-white opacity-50 transition disabled:cursor-not-allowed"
>
<img src="/images/icons/send.svg" class="h-5 w-5" />
</button>
</.form>
<% else %>
<div class="attendee-composer flex min-h-10 items-center rounded-2xl border border-white/20 px-3 text-sm text-white/60 shadow-2xl">
{gettext("Messages deactivated")}
</div>
<% end %>
</footer>
</main>
</div>
<% else %>
<div class="ticket-stage">
<div class="ticket" id="waiting-ticket" phx-hook="TicketTilt">
<div class="texture"></div>
<div class="glare"></div>
<div class="edge-text">{@event.name} · {@event.name} · {@event.name}</div>
<div class="ticket-body">
<span class="eyebrow">
<span class="dot"></span>{gettext("Live interactive event")}
</span>
<h1 class="event-title">{@event.name}</h1>
<p
class="event-date"
x-data={"{date: moment.utc('#{@event.started_at}').local().format('LLLL')}"}
x-text="date.charAt(0).toUpperCase() + date.slice(1)"
>
</p>
<div class="cd-row">
<div class="cd-cell">
<div class="cd-num">{if @remaining_days < 10, do: "0"}{@remaining_days}</div>
<div class="cd-label">{gettext("days")}</div>
</div>
<div class="cd-sep">:</div>
<div class="cd-cell">
<div class="cd-num">{if @remaining_hours < 10, do: "0"}{@remaining_hours}</div>
<div class="cd-label">{gettext("hours")}</div>
</div>
<div class="cd-sep">:</div>
<div class="cd-cell">
<div class="cd-num">{if @remaining_minutes < 10, do: "0"}{@remaining_minutes}</div>
<div class="cd-label">{gettext("minutes")}</div>
</div>
<div class="cd-sep">:</div>
<div class="cd-cell">
<div class="cd-num">{if @remaining_seconds < 10, do: "0"}{@remaining_seconds}</div>
<div class="cd-label">{gettext("seconds")}</div>
</div>
</div>
<div class="ticket-meta">
<div class="meta-item">
<span class="meta-k">{gettext("Admit")}</span>
<span class="meta-v">{gettext("Unlimited")}</span>
</div>
<div class="meta-item">
<span class="meta-k">{gettext("Session")}</span>
<span class="meta-v">{@event.code}</span>
</div>
<div class="meta-item">
<span class="meta-k">{gettext("No.")}</span>
<span class="meta-v">CLP-{Calendar.strftime(@event.started_at, "%m%d-%y")}</span>
</div>
</div>
2023-04-20 22:10:33 +02:00
</div>
<div class="perf">
<div class="notch-bottom"></div>
</div>
<div class="ticket-stub">
<div class="stub-head">{gettext("Scan to interact in real-time")}</div>
<div class="qr-frame">
<div
phx-hook="QRCode"
data-code={@event.code}
data-size="188"
id="qr"
phx-update="ignore"
>
2023-04-20 22:10:33 +02:00
</div>
</div>
<div class="code-label">{gettext("Or use the code:")}</div>
<div class="code-chip">{@event.code}</div>
2023-04-20 22:10:33 +02:00
</div>
</div>
<a href="https://claper.co" target="_blank" class="powered-by">
<span>{gettext("Powered by")}</span>
<img src="/images/logo-large.svg" alt="Claper" />
</a>
</div>
<% end %>