feat: adds member visibility to live view
This commit is contained in:
parent
397cbde9d6
commit
e81aecce48
2 changed files with 51 additions and 35 deletions
|
|
@ -61,6 +61,8 @@ defmodule MvWeb.MemberLive.Index do
|
|||
|> assign_new(:sort_order, fn -> :asc end)
|
||||
|> assign(:selected_members, MapSet.new())
|
||||
|> assign(:custom_fields_visible, custom_fields_visible)
|
||||
|> assign(:member_field_configurations, get_member_field_configurations())
|
||||
|> assign(:member_fields_visible, get_visible_member_fields())
|
||||
|
||||
# We call handle params to use the query from the URL
|
||||
{:ok, socket}
|
||||
|
|
@ -796,4 +798,39 @@ defmodule MvWeb.MemberLive.Index do
|
|||
"#{name} <#{member.email}>"
|
||||
end
|
||||
end
|
||||
|
||||
# Gets the configuration for all member fields with their show_in_overview values.
|
||||
#
|
||||
# Reads the visibility configuration from Settings and returns a map with all member fields
|
||||
# and their show_in_overview values (true or false). Fields not configured in settings
|
||||
# default to true.
|
||||
#
|
||||
# Returns a map: %{field_name => show_in_overview}
|
||||
#
|
||||
# This can be used for:
|
||||
# - Rendering the overview (filtering visible fields)
|
||||
# - UI configuration dropdowns (showing all fields with their current state)
|
||||
# - Dynamic field management
|
||||
#
|
||||
# Fields are read from the global Constants module.
|
||||
defp get_member_field_configurations do
|
||||
# Get all eligible fields from the global constants
|
||||
all_fields = Mv.Constants.member_fields()
|
||||
|
||||
Enum.reduce(all_fields, %{}, fn field, acc ->
|
||||
show_in_overview = Mv.Membership.Member.show_in_overview?(field)
|
||||
Map.put(acc, field, show_in_overview)
|
||||
end)
|
||||
end
|
||||
|
||||
# Gets the list of member fields that should be visible in the overview.
|
||||
#
|
||||
# Filters the member field configurations to return only fields with show_in_overview: true.
|
||||
#
|
||||
# Returns a list of atoms representing visible member field names.
|
||||
defp get_visible_member_fields do
|
||||
get_member_field_configurations()
|
||||
|> Enum.filter(fn {_field, show_in_overview} -> show_in_overview end)
|
||||
|> Enum.map(fn {field, _show_in_overview} -> field end)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue