forked from shibao/cannery
		
	improve formatting
This commit is contained in:
		@@ -55,13 +55,13 @@ defmodule CanneryWeb.Components.AmmoGroupCard do
 | 
			
		||||
 | 
			
		||||
        <span class="rounded-lg title text-lg">
 | 
			
		||||
          <%= gettext("Purchased on:") %>
 | 
			
		||||
          <%= @ammo_group.purchased_on |> display_date() %>
 | 
			
		||||
          <.date date={@ammo_group.purchased_on} />
 | 
			
		||||
        </span>
 | 
			
		||||
 | 
			
		||||
        <%= if @ammo_group |> Ammo.get_last_used_shot_group() do %>
 | 
			
		||||
          <span class="rounded-lg title text-lg">
 | 
			
		||||
            <%= gettext("Last used on:") %>
 | 
			
		||||
            <%= @ammo_group |> Ammo.get_last_used_shot_group() |> Map.get(:date) |> display_date() %>
 | 
			
		||||
            <.date date={@ammo_group |> Ammo.get_last_used_shot_group() |> Map.get(:date)} />
 | 
			
		||||
          </span>
 | 
			
		||||
        <% end %>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -157,7 +157,7 @@ defmodule CanneryWeb.Components.AmmoGroupTableComponent do
 | 
			
		||||
 | 
			
		||||
    {purchased_on,
 | 
			
		||||
     ~H"""
 | 
			
		||||
     <%= @purchased_on |> display_date() %>
 | 
			
		||||
     <.date date={@purchased_on} />
 | 
			
		||||
     """}
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
@@ -173,7 +173,7 @@ defmodule CanneryWeb.Components.AmmoGroupTableComponent do
 | 
			
		||||
    {last_shot_group_date,
 | 
			
		||||
     ~H"""
 | 
			
		||||
     <%= if @last_shot_group_date do %>
 | 
			
		||||
       <%= @last_shot_group_date |> display_date() %>
 | 
			
		||||
       <.date date={@last_shot_group_date} />
 | 
			
		||||
     <% else %>
 | 
			
		||||
       <%= gettext("Never used") %>
 | 
			
		||||
     <% end %>
 | 
			
		||||
 
 | 
			
		||||
@@ -27,8 +27,14 @@ defmodule CanneryWeb.Components.InviteCard do
 | 
			
		||||
 | 
			
		||||
      <%= if @invite.disabled_at |> is_nil() do %>
 | 
			
		||||
        <h2 class="title text-md">
 | 
			
		||||
          <%= gettext("Uses Left:") %>
 | 
			
		||||
          <%= @invite.uses_left || "Unlimited" %>
 | 
			
		||||
          <%= if @invite.uses_left do %>
 | 
			
		||||
            <%= gettext(
 | 
			
		||||
              "Uses Left: %{uses_left}",
 | 
			
		||||
              uses_left: @invite.uses_left
 | 
			
		||||
            ) %>
 | 
			
		||||
          <% else %>
 | 
			
		||||
            <%= gettext("Uses Left: Unlimited") %>
 | 
			
		||||
          <% end %>
 | 
			
		||||
        </h2>
 | 
			
		||||
      <% else %>
 | 
			
		||||
        <h2 class="title text-md">
 | 
			
		||||
 
 | 
			
		||||
@@ -103,7 +103,11 @@ defmodule CanneryWeb.Components.ShotGroupTableComponent do
 | 
			
		||||
    {ammo_type_name, name_block}
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  defp get_row_value(:date, %{date: date}, _extra_data), do: date |> display_date()
 | 
			
		||||
  defp get_row_value(:date, assigns = %{date: _date}, _extra_data) do
 | 
			
		||||
    ~H"""
 | 
			
		||||
    <.date date={@date} />
 | 
			
		||||
    """
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  defp get_row_value(:actions, shot_group, %{actions: actions}) do
 | 
			
		||||
    assigns = %{actions: actions, shot_group: shot_group}
 | 
			
		||||
 
 | 
			
		||||
@@ -23,16 +23,23 @@ defmodule CanneryWeb.Components.UserCard do
 | 
			
		||||
 | 
			
		||||
      <h3 class="px-4 py-2 rounded-lg title text-lg">
 | 
			
		||||
        <p>
 | 
			
		||||
          <%= if @user.confirmed_at |> is_nil() do %>
 | 
			
		||||
            Email unconfirmed
 | 
			
		||||
          <%= if @user.confirmed_at do %>
 | 
			
		||||
            <%= gettext(
 | 
			
		||||
              "User was confirmed at%{confirmed_datetime}",
 | 
			
		||||
              confirmed_datetime: ""
 | 
			
		||||
            ) %>
 | 
			
		||||
            <.datetime datetime={@user.confirmed_at} />
 | 
			
		||||
          <% else %>
 | 
			
		||||
            User was confirmed at <%= @user.confirmed_at |> display_datetime() %>
 | 
			
		||||
            <%= gettext("Email unconfirmed") %>
 | 
			
		||||
          <% end %>
 | 
			
		||||
        </p>
 | 
			
		||||
 | 
			
		||||
        <p>
 | 
			
		||||
          <%= gettext("User registered on") %>
 | 
			
		||||
          <%= @user.inserted_at |> display_datetime() %>
 | 
			
		||||
          <%= gettext(
 | 
			
		||||
            "User registered on%{registered_datetime}",
 | 
			
		||||
            registered_datetime: ""
 | 
			
		||||
          ) %>
 | 
			
		||||
          <.datetime datetime={@user.inserted_at} />
 | 
			
		||||
        </p>
 | 
			
		||||
      </h3>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -116,7 +116,12 @@ defmodule CanneryWeb.AmmoGroupLive.Show do
 | 
			
		||||
      value =
 | 
			
		||||
        case key do
 | 
			
		||||
          :date ->
 | 
			
		||||
            {date, date |> display_date()}
 | 
			
		||||
            assigns = %{date: date}
 | 
			
		||||
 | 
			
		||||
            {date,
 | 
			
		||||
             ~H"""
 | 
			
		||||
             <.date date={@date} />
 | 
			
		||||
             """}
 | 
			
		||||
 | 
			
		||||
          :actions ->
 | 
			
		||||
            ~H"""
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@
 | 
			
		||||
 | 
			
		||||
    <span class="rounded-lg title text-lg">
 | 
			
		||||
      <%= gettext("Purchased on:") %>
 | 
			
		||||
      <%= @ammo_group.purchased_on |> display_date() %>
 | 
			
		||||
      <.date date={@ammo_group.purchased_on} />
 | 
			
		||||
    </span>
 | 
			
		||||
 | 
			
		||||
    <%= if @ammo_group.price_paid do %>
 | 
			
		||||
 
 | 
			
		||||
@@ -124,7 +124,7 @@
 | 
			
		||||
    </h3>
 | 
			
		||||
 | 
			
		||||
    <span class="text-primary-600">
 | 
			
		||||
      <%= @ammo_type.inserted_at |> display_datetime() %>
 | 
			
		||||
      <.datetime datetime={@ammo_type.inserted_at} />
 | 
			
		||||
    </span>
 | 
			
		||||
 | 
			
		||||
    <%= if @avg_cost_per_round do %>
 | 
			
		||||
 
 | 
			
		||||
@@ -5,64 +5,62 @@ defmodule CanneryWeb.ViewHelpers do
 | 
			
		||||
  :view`
 | 
			
		||||
  """
 | 
			
		||||
 | 
			
		||||
  import Phoenix.Component
 | 
			
		||||
 | 
			
		||||
  @id_length 16
 | 
			
		||||
  use Phoenix.Component
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
  Returns a <time> element that renders the naivedatetime in the user's local
 | 
			
		||||
  timezone with Alpine.js
 | 
			
		||||
  Phoenix.Component for a <time> element that renders the naivedatetime in the
 | 
			
		||||
  user's local timezone with Alpine.js
 | 
			
		||||
  """
 | 
			
		||||
  @spec display_datetime(NaiveDateTime.t() | nil) :: Phoenix.LiveView.Rendered.t()
 | 
			
		||||
  def display_datetime(nil), do: ""
 | 
			
		||||
 | 
			
		||||
  def display_datetime(datetime) do
 | 
			
		||||
    assigns = %{
 | 
			
		||||
      id: :crypto.strong_rand_bytes(@id_length) |> Base.url_encode64(),
 | 
			
		||||
      datetime: datetime |> DateTime.from_naive!("Etc/UTC") |> DateTime.to_iso8601(:extended)
 | 
			
		||||
    }
 | 
			
		||||
  attr :datetime, :any, required: true, doc: "A `DateTime` struct or nil"
 | 
			
		||||
 | 
			
		||||
  def datetime(assigns) do
 | 
			
		||||
    ~H"""
 | 
			
		||||
    <time
 | 
			
		||||
      id={@id}
 | 
			
		||||
      datetime={@datetime}
 | 
			
		||||
      x-data={"{
 | 
			
		||||
        date:
 | 
			
		||||
          Intl.DateTimeFormat([], {dateStyle: 'short', timeStyle: 'long'})
 | 
			
		||||
            .format(new Date(\"#{@datetime}\"))
 | 
			
		||||
      }"}
 | 
			
		||||
      x-text="date"
 | 
			
		||||
    >
 | 
			
		||||
      <%= @datetime %>
 | 
			
		||||
    </time>
 | 
			
		||||
    <%= if @datetime do %>
 | 
			
		||||
      <time
 | 
			
		||||
        datetime={cast_datetime(@datetime)}
 | 
			
		||||
        x-data={"{
 | 
			
		||||
          datetime:
 | 
			
		||||
            Intl.DateTimeFormat([], {dateStyle: 'short', timeStyle: 'long'})
 | 
			
		||||
              .format(new Date(\"#{cast_datetime(@datetime)}\"))
 | 
			
		||||
        }"}
 | 
			
		||||
        x-text="datetime"
 | 
			
		||||
      >
 | 
			
		||||
        <%= cast_datetime(@datetime) %>
 | 
			
		||||
      </time>
 | 
			
		||||
    <% end %>
 | 
			
		||||
    """
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  @spec cast_datetime(NaiveDateTime.t() | nil) :: String.t()
 | 
			
		||||
  defp cast_datetime(%NaiveDateTime{} = datetime) do
 | 
			
		||||
    datetime |> DateTime.from_naive!("Etc/UTC") |> DateTime.to_iso8601(:extended)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  defp cast_datetime(_datetime), do: ""
 | 
			
		||||
 | 
			
		||||
  @doc """
 | 
			
		||||
  Returns a <date> element that renders the Date in the user's local
 | 
			
		||||
  timezone with Alpine.js
 | 
			
		||||
  Phoenix.Component for a <date> element that renders the Date in the user's
 | 
			
		||||
  local timezone with Alpine.js
 | 
			
		||||
  """
 | 
			
		||||
  @spec display_date(Date.t() | nil) :: Phoenix.LiveView.Rendered.t()
 | 
			
		||||
  def display_date(nil), do: ""
 | 
			
		||||
 | 
			
		||||
  def display_date(date) do
 | 
			
		||||
    assigns = %{
 | 
			
		||||
      id: :crypto.strong_rand_bytes(@id_length) |> Base.url_encode64(),
 | 
			
		||||
      date: date |> Date.to_iso8601(:extended)
 | 
			
		||||
    }
 | 
			
		||||
  attr :date, :any, required: true, doc: "A `Date` struct or nil"
 | 
			
		||||
 | 
			
		||||
  def date(assigns) do
 | 
			
		||||
    ~H"""
 | 
			
		||||
    <time
 | 
			
		||||
      id={@id}
 | 
			
		||||
      datetime={@date}
 | 
			
		||||
      x-data={"{
 | 
			
		||||
        date:
 | 
			
		||||
          Intl.DateTimeFormat([], {timeZone: 'Etc/UTC', dateStyle: 'short'}).format(new Date(\"#{@date}\"))
 | 
			
		||||
      }"}
 | 
			
		||||
      x-text="date"
 | 
			
		||||
    >
 | 
			
		||||
      <%= @date %>
 | 
			
		||||
    </time>
 | 
			
		||||
    <%= if @date do %>
 | 
			
		||||
      <time
 | 
			
		||||
        datetime={@date |> Date.to_iso8601(:extended)}
 | 
			
		||||
        x-data={"{
 | 
			
		||||
          date:
 | 
			
		||||
            Intl.DateTimeFormat([], {timeZone: 'Etc/UTC', dateStyle: 'short'})
 | 
			
		||||
              .format(new Date(\"#{@date |> Date.to_iso8601(:extended)}\"))
 | 
			
		||||
        }"}
 | 
			
		||||
        x-text="date"
 | 
			
		||||
      >
 | 
			
		||||
        <%= @date |> Date.to_iso8601(:extended) %>
 | 
			
		||||
      </time>
 | 
			
		||||
    <% end %>
 | 
			
		||||
    """
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
@@ -70,9 +68,9 @@ defmodule CanneryWeb.ViewHelpers do
 | 
			
		||||
  Displays emoji as text emoji if SHIBAO_MODE is set to true :)
 | 
			
		||||
  """
 | 
			
		||||
  @spec display_emoji(String.t()) :: String.t()
 | 
			
		||||
  def display_emoji("😔"),
 | 
			
		||||
    do:
 | 
			
		||||
      if(Application.get_env(:cannery, CanneryWeb.ViewHelpers)[:shibao_mode], do: "q_q", else: "😔")
 | 
			
		||||
  def display_emoji("😔") do
 | 
			
		||||
    if Application.get_env(:cannery, CanneryWeb.ViewHelpers)[:shibao_mode], do: "q_q", else: "😔"
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def display_emoji(other_emoji), do: other_emoji
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user