fix linting
This commit is contained in:
parent
80fe73a561
commit
e68a7cf8c7
4 changed files with 456 additions and 390 deletions
|
|
@ -96,18 +96,21 @@ defmodule MvWeb.MemberExportController do
|
|||
|
||||
defp filter_existing_atoms(list) when is_list(list) do
|
||||
list
|
||||
|> Enum.filter(&is_binary/1)
|
||||
|> Enum.filter(fn name ->
|
||||
try do
|
||||
_ = String.to_existing_atom(name)
|
||||
true
|
||||
rescue
|
||||
ArgumentError -> false
|
||||
end
|
||||
is_binary(name) and atom_exists?(name)
|
||||
end)
|
||||
|> Enum.uniq()
|
||||
end
|
||||
|
||||
defp atom_exists?(name) do
|
||||
try do
|
||||
_ = String.to_existing_atom(name)
|
||||
true
|
||||
rescue
|
||||
ArgumentError -> false
|
||||
end
|
||||
end
|
||||
|
||||
defp extract_list(params, key) do
|
||||
case Map.get(params, key) do
|
||||
list when is_list(list) -> list
|
||||
|
|
@ -215,13 +218,17 @@ defmodule MvWeb.MemberExportController do
|
|||
|
||||
defp build_custom_fields_by_id(custom_field_ids, custom_fields) do
|
||||
Enum.reduce(custom_field_ids, %{}, fn id, acc ->
|
||||
case Enum.find(custom_fields, fn cf -> to_string(cf.id) == to_string(id) end) do
|
||||
nil -> acc
|
||||
cf -> Map.put(acc, id, cf)
|
||||
end
|
||||
find_and_add_custom_field(acc, id, custom_fields)
|
||||
end)
|
||||
end
|
||||
|
||||
defp find_and_add_custom_field(acc, id, custom_fields) do
|
||||
case Enum.find(custom_fields, fn cf -> to_string(cf.id) == to_string(id) end) do
|
||||
nil -> acc
|
||||
cf -> Map.put(acc, id, cf)
|
||||
end
|
||||
end
|
||||
|
||||
defp load_members_for_export(actor, parsed, custom_fields_by_id) do
|
||||
select_fields = [:id] ++ Enum.map(parsed.selectable_member_fields, &String.to_existing_atom/1)
|
||||
|
||||
|
|
@ -322,19 +329,17 @@ defmodule MvWeb.MemberExportController do
|
|||
defp maybe_sort_export(query, _field, nil), do: {query, false}
|
||||
|
||||
defp maybe_sort_export(query, field, order) when is_binary(field) do
|
||||
cond do
|
||||
custom_field_sort?(field) ->
|
||||
# Custom field sort → in-memory nach dem Read (wie Tabelle)
|
||||
{query, true}
|
||||
if custom_field_sort?(field) do
|
||||
# Custom field sort → in-memory nach dem Read (wie Tabelle)
|
||||
{query, true}
|
||||
else
|
||||
field_atom = String.to_existing_atom(field)
|
||||
|
||||
true ->
|
||||
field_atom = String.to_existing_atom(field)
|
||||
|
||||
if field_atom in (Mv.Constants.member_fields() -- [:notes]) do
|
||||
{Ash.Query.sort(query, [{field_atom, String.to_existing_atom(order)}]), false}
|
||||
else
|
||||
{query, false}
|
||||
end
|
||||
if field_atom in (Mv.Constants.member_fields() -- [:notes]) do
|
||||
{Ash.Query.sort(query, [{field_atom, String.to_existing_atom(order)}]), false}
|
||||
else
|
||||
{query, false}
|
||||
end
|
||||
end
|
||||
rescue
|
||||
ArgumentError -> {query, false}
|
||||
|
|
@ -372,12 +377,7 @@ defmodule MvWeb.MemberExportController do
|
|||
|
||||
sorted_with_values =
|
||||
Enum.sort_by(with_values, fn member ->
|
||||
member
|
||||
|> find_cfv(custom_field)
|
||||
|> case do
|
||||
nil -> nil
|
||||
cfv -> extract_sort_value(cfv.value, custom_field.value_type)
|
||||
end
|
||||
extract_member_sort_value(member, custom_field)
|
||||
end)
|
||||
|
||||
sorted_with_values =
|
||||
|
|
@ -415,6 +415,13 @@ defmodule MvWeb.MemberExportController do
|
|||
end)
|
||||
end
|
||||
|
||||
defp extract_member_sort_value(member, custom_field) do
|
||||
case find_cfv(member, custom_field) do
|
||||
nil -> nil
|
||||
cfv -> extract_sort_value(cfv.value, custom_field.value_type)
|
||||
end
|
||||
end
|
||||
|
||||
defp build_columns(conn, parsed, custom_fields_by_id) do
|
||||
member_cols =
|
||||
Enum.map(parsed.selectable_member_fields, fn field ->
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue