location_component.ex 950 B

123456789101112131415161718192021222324252627282930
  1. defmodule VaccinsWeb.LocationComponent do
  2. use VaccinsWeb, :live_component
  3. alias Vaccins.{LocationStore, Search}
  4. @impl true
  5. def mount(socket), do: {:ok, socket |> assign(availabilities: [])}
  6. @impl true
  7. def handle_event("trigger_query", _, socket = %{assigns: %{id: id, location: location}}) do
  8. ref = Search.async_trigger_query(location)
  9. send(self(), {:query_sent, id, ref})
  10. {:noreply, socket |> assign(availabilities: "...")}
  11. end
  12. @impl true
  13. def render(assigns) do
  14. ~L"""
  15. <dl class="show-metadata">
  16. <dt>id</dt>
  17. <dd><%= @location.id %></dd>
  18. <dt>booking page</dt>
  19. <dd><%= link @location.booking_page, to: @location.booking_page %></dd>
  20. <dt>Availabilities</dt>
  21. <dd><%= @availabilities |> inspect %></dd>
  22. <dt>test availability</dt>
  23. <dd><button phx-click="trigger_query" phx-target="<%= @myself %>">Trigger</button></dd>
  24. </dl>
  25. """
  26. end
  27. end