Skip to content

Instantly share code, notes, and snippets.

@brweber2
Last active September 30, 2015 01:54
Show Gist options
  • Save brweber2/efd89bff2cff695df644 to your computer and use it in GitHub Desktop.
Save brweber2/efd89bff2cff695df644 to your computer and use it in GitHub Desktop.
Phoenix View Helpers for select boxes
defmodule Clockout.MyViewHelpers do
def display_name(:client, id) do
Clockout.Client |> display_name_by_id(id)
end
def display_name(:person, id) do
Clockout.Person |> display_name_by_id(id)
end
def display_name(:project, id) do
Clockout.Project |> display_name_by_id(id)
end
def display_name_by_id(entity, id) do
entity
|> Clockout.Repo.get!(id)
|> display_name
end
def display_name(%Clockout.Client{name: name, code: code}) do
"#{name} (#{code})"
end
def display_name(%Clockout.Person{first: first, last: last}) do
"#{first} #{last}"
end
def display_name(%Clockout.Project{name: name, code: code}) do
"#{name} (#{code})"
end
def dropdown_with_id(client = %{id: id}) do
{display_name(client), id}
end
def select_options(entities) do
entities |> Enum.map(&dropdown_with_id/1)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment