Packages
formex
0.1.1
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.10
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.16
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Form library for Phoenix with Ecto support
Current section
Files
Jump to
Current section
Files
lib/field.ex
defmodule Formex.Field do
import Ecto.Query
defstruct name: nil,
assoc: false,
type: nil,
value: nil,
required: true,
label: "",
data: [],
opts: []
@repo Application.get_env(:formex, :repo)
def create_field(form, :select_assoc, name_id, opts) do
name = Regex.replace(~r/_id$/, Atom.to_string(name_id), "") |> String.to_atom
get_options = fn ->
module = form.model.__schema__(:association, name).queryable
query = from e in module,
select: {e.name, e.id},
order_by: e.name
@repo.all(query)
end
%__MODULE__{
name: name_id,
type: :select,
value: Map.get(form.struct, name),
label: get_label(name, opts),
required: Keyword.get(opts, :required, true),
data: [
options: get_options.()
],
opts: opts
}
end
def create_field(form, type, name, opts) do
%__MODULE__{
name: name,
type: type,
value: Map.get(form.struct, name),
label: get_label(name, opts),
required: Keyword.get(opts, :required, true),
opts: opts
}
end
#
defp get_label(name, opts) do
if opts[:label] do
opts[:label]
else
Atom.to_string name
end
end
end