exmr/lib/exmr_web/live/exam_live/index.html.heex
Vladimir Rubin 223939da6f
Some checks failed
Checks / check (push) Failing after -6m20s
Build and Push Docker Image / Build and Push Image (push) Has been cancelled
feat: calendar view
2024-12-22 22:52:30 +02:00

98 lines
3.5 KiB
Text

<.header>
{gettext("Listing Exams")}
<div>
<button phx-click="sort" phx-value-by="subject" class="font-light">
{gettext("Sort by Subject")}
</button>
<a>|</a>
<button phx-click="sort" phx-value-by="date" class="font-light">
{gettext("Sort by Date")}
</button>
</div>
<:actions>
<.link patch={~p"/exams/new"}>
<.button class="dark:bg-sky-300 text-white dark:text-black/80 dark:hover:bg-sky-400">
{gettext("New Exam")}
</.button>
</.link>
</:actions>
</.header>
<div class="divide-y">
<div :for={exam <- @exams} class="py-2 flex gap-2">
<div class="grow">
<div class="font-bold">{exam.subject}</div>
<div class="font-sm">
{exam.date} |
<b>
{case Date.diff(exam.date, Date.utc_today()) do
0 -> gettext("Today")
1 -> gettext("Tommorow")
x when x > 1 -> ngettext("Tomorrow", "%{count} days left", x)
x when x < 0 -> ngettext("Yesterday", "%{count} days passed", x * -1)
end}
</b>
</div>
</div>
<button phx-click="edit" phx-value-id={exam.id}
class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-3 rounded-md">
{gettext("Edit")}
</button>
<button phx-click="remove" phx-value-id={exam.id}
class="bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-3 rounded-md">
{gettext("Remove")}
</button>
</div>
</div>
<.modal :if={@live_action in [:new, :edit]} id="exam-modal" show on_cancel={JS.patch(~p"/exams")}>
<.live_component module={ExmrWeb.ExamLive.FormComponent} id={@exam.id || :new} title={@page_title}
action={@live_action} exam={@exam} patch={~p"/exams"} />
</.modal>
<div>
<!-- Navigation -->
<!-- <div class="flex justify-between mb-4"> -->
<!-- <button phx-click="previous_month" class="px-2 py-1 bg-blue-200">Previous</button> -->
<!-- <h2>{@current_month |> Date.to_string() |> String.replace("-", " ")}</h2> -->
<!-- <button phx-click="next_month" class="px-2 py-1 bg-blue-200">Next</button> -->
<!-- </div> -->
<!-- Calendar -->
<div class="grid grid-cols-7 gap-1">
<!-- Weekdays -->
<%= for day <- ~w(Sun Mon Tue Wed Thu Fri Sat) do %>
<div class="font-bold text-center">{day}</div>
<% end %>
<!-- Empty spaces for previous month -->
<%= for _ <- 1..(Date.day_of_week(@current_month) - 1) do %>
<div></div>
<% end %>
<!-- Days of the month -->
<%= for day <- 1..Date.days_in_month(@current_month) do %>
<% {:ok, date}=Date.new(@current_month.year, @current_month.month, day) %>
<div class={["border rounded p-3", @current_month == date && "bg-zinc-800"]}>
<div class="text-sm font-bold">{day}</div>
<!-- Render events for the current day -->
<% IO.puts("Date: #{date}") %>
<% IO.inspect(Map.get(@events, date)) %>
<%= case Map.get(@events, date) do %>
<% nil -> %>
<!-- No events for this day -->
<% events -> %>
<ul class="mt-2 text-xs">
<%= for event <- events do %>
<li>{event.subject}</li>
<% end %>
</ul>
<% end %>
</div>
<% end %>
</div>
</div>