Commit graph

91 commits

Author SHA1 Message Date
10ad32eb6f
fix: treat URL with only custom fields as valid in ?fields= mode
Some checks reported errors
continuous-integration/drone/push Build was killed
continuous-integration/drone/promote/production Build is passing
Consider visible custom fields in compute_final_field_selection so that
a link with only custom_field_X is not wrongly treated as invalid and
reverted to session/global. Add test for URL containing only custom field.
2026-02-24 09:42:25 +01:00
94bcb5dc8c
fix: sort Fee Type by name in LiveView and exports
Use Ash related-field sort (membership_fee_type.name) instead of
membership_fee_type_id so column order is alphabetical. Load
membership_fee_type when sorting by it even if column is hidden.
In-memory re-sort (Build) uses loaded fee type name.
2026-02-24 09:30:04 +01:00
d41d13d122
fix(members): restore column visibility from URL on reload
All checks were successful
continuous-integration/drone/push Build is passing
Read 'fields' from URI when conn.params has no query (e.g. full page load).
When ?fields=... is present use URL-only selection so columns are not
merged with global settings. Fall back to session+global when URL has
only invalid field names.
2026-02-24 01:06:46 +01:00
68ceaced0c
feat(members): show and sort by Fee Type in member overview
Load membership_fee_type when column visible; sort by membership_fee_type_id;
add table column with SortHeader and fee type name.
2026-02-23 23:55:03 +01:00
397f7a7975 fix linting
Some checks failed
continuous-integration/drone/push Build is failing
2026-02-20 09:16:38 +01:00
cb932ad6ef feat: respects sorting groups for export
Some checks failed
continuous-integration/drone/push Build is failing
2026-02-20 08:45:55 +01:00
dbdac5870a fix: adds shoe/hide for group column 2026-02-20 08:45:21 +01:00
01f62297fc feat: add groups to export 2026-02-19 14:36:35 +01:00
0fd1b7e142 fix testsand load performance
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production Build is passing
2026-02-19 09:40:02 +01:00
0333f9e722 fix: tests failing in ci
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production Build is failing
2026-02-19 08:55:55 +01:00
6831ba046f
Merge remote-tracking branch 'origin/main' into feature/member-overview-groups
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production Build is passing
2026-02-16 15:57:57 +01:00
ace59bbae6
fix: implement review comments
All checks were successful
continuous-integration/drone/push Build is passing
2026-02-16 15:30:16 +01:00
5fd7c0e7f6
feat: improve groups fillter
Some checks failed
continuous-integration/drone/push Build is failing
2026-02-13 17:45:51 +01:00
baa288bff3 refactor 2026-02-13 17:21:14 +01:00
dce4b2cf33
feat: add groups to member overview 2026-02-13 09:28:16 +01:00
e68a7cf8c7 fix linting
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production Build is passing
2026-02-09 14:08:12 +01:00
e1266944b1 feat: add membership fee status to columns and dropdown 2026-02-09 13:34:38 +01:00
9b9e7ec995 fix: sorting and filter for export 2026-02-05 15:03:25 +01:00
c82f4b7fd7 feat: add csv export
Some checks failed
continuous-integration/drone/push Build is failing
2026-02-04 16:40:41 +01:00
bb7e3cbe77
fix: make sure all tests run
All checks were successful
continuous-integration/drone/push Build is passing
2026-01-29 14:49:39 +01:00
1b44730b95
Fix: Ensure members are loaded in handle_params when signature unchanged
All checks were successful
continuous-integration/drone/push Build is passing
2026-01-23 14:48:37 +01:00
672b4a8250
Merge branch 'main' into feature/filter-boolean-custom-fields
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-23 14:41:48 +01:00
20c96123e1
fix: failing test
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-23 14:33:54 +01:00
1d46fd1baf
feat: improve filter performance by reducing Ash.read! calls
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-23 14:22:57 +01:00
b4657cae23
fix: resolve pr remarks 2026-01-23 14:00:18 +01:00
47c938cc50 Centralize role preloading in global LiveView on_mount
Add ensure_user_role_loaded to global live_view quote block.
Remove redundant on_mount calls from individual LiveViews.
2026-01-22 21:36:15 +01:00
f996aee6b2
feat: add new filter component to members view
All checks were successful
continuous-integration/drone/push Build is passing
2026-01-21 00:47:01 +01:00
1011b94acf
feat: load boolean custom fields
All checks were successful
continuous-integration/drone/push Build is passing
2026-01-20 19:12:13 +01:00
fbf3b64192
refactor: fix credo issues
All checks were successful
continuous-integration/drone/push Build is passing
2026-01-20 18:34:17 +01:00
ff8b29cffe
feat: implement filter logic for boolean ustom fields
Some checks failed
continuous-integration/drone/push Build is failing
2026-01-20 18:08:41 +01:00
37e1553a02
feat: add custom boolean field state & URL-Parameter 2026-01-20 15:55:08 +01:00
a22081f288
refactor: Replace bang calls with error handling in Index LiveViews
- Replace Ash.get!/Ash.destroy! with Ash.get/Ash.destroy
- Add case statements for Forbidden, NotFound, and generic errors
- Display user-friendly flash messages for all error cases
- Use Enum.map_join/3 for efficient error formatting
2026-01-13 15:17:07 +01:00
351eac4c02
Fix error handling and actor access in MemberLive.Index
Replace bang calls with proper error handling and use current_actor/1
helper for consistent actor access.
2026-01-13 15:17:05 +01:00
bc87893134
Integrate Member policies in LiveViews
- Add on_mount hook to ensure user role is loaded in all Member LiveViews
- Pass actor parameter to all Ash operations (read, get, create, update, destroy, load)
2026-01-13 15:12:24 +01:00
36776f8e28 fix tests and linting 2026-01-07 18:11:36 +01:00
c65b3808bf
Refactor filters to use cycle status instead of paid field
Replace paid_filter with cycle_status_filter that filters based on
membership fee cycle status (last or current cycle). Update
PaymentFilterComponent to use new filter with options All, Paid, Unpaid.
Remove membership fee status filter dropdown. Extend
filter_members_by_cycle_status/3 to support both paid and unpaid filtering.
Update toggle_cycle_view to preserve filter state in URL.
2025-12-18 15:11:02 +01:00
098b3b0a2a
Remove paid field from members
Remove paid field from Member resource, database migration,
tests, seeds, and UI. This field is no longer needed as payment
status is now tracked via membership fee cycles.
2025-12-18 15:11:02 +01:00
99dc17bf4d
feat: add membership fee status column to member list
- Add status column showing last completed or current cycle status
- Add toggle to switch between last/current cycle view
- Add color coding (green/red/gray) for paid/unpaid/suspended
- Add filters for unpaid cycles in last/current cycle
- Efficiently load cycles to avoid N+1 queries
2025-12-18 15:08:31 +01:00
be6ea56860 fix: improve mailto BCC encoding
Use URI.encode_www_form() instead of URI.encode() for mailto query parameters.
This is the safer choice for query parameter encoding.

Add comment about mailto URL length limits that vary by email client.
2025-12-16 14:51:42 +01:00
fb91f748c2 perf: optimize member index selection calculations
Calculate selected_count, any_selected? and mailto_bcc once in assigns
instead of recalculating Enum.any? and Enum.count multiple times in template.
This improves render performance and makes the template code more readable.
2025-12-16 14:50:52 +01:00
9dba4d1019
fix: credo warnings
All checks were successful
continuous-integration/drone/push Build is passing
2025-12-11 14:21:40 +01:00
1b06f885bf Merge branch 'main' into feature/223_member_checkbox
Some checks failed
continuous-integration/drone/push Build is failing
2025-12-08 11:43:54 +01:00
cf6a108049 refactor: DRY - use Mv.Constants.custom_field_prefix() instead of string literals
All checks were successful
continuous-integration/drone/push Build is passing
2025-12-03 18:47:27 +01:00
217ed632fa fix: preserve paid_filter in URL when toggling field visibility 2025-12-03 18:36:13 +01:00
3b038d451d fix: use all_custom_fields in prepare_dynamic_cols
Allows users to enable globally hidden custom fields in the table view
2025-12-03 18:20:32 +01:00
4bbba65038 fix: remove duplicate member_fields_visible assignment in mount/3
Removes dead code and fixes initialization to use FieldVisibility module
2025-12-03 18:09:08 +01:00
75e1fc8a3a fix: use all_custom_fields in handle_info(:field_toggled)
Fixes bug where globally hidden custom fields could not be enabled via dropdown
2025-12-03 18:07:37 +01:00
c17445975c Merge branch 'main' into feature/209_hide_field_dropdown
Some checks failed
continuous-integration/drone/push Build is failing
2025-12-03 14:57:56 +01:00
064c0df701 updated tests and fix merge conflict results 2025-12-03 14:55:20 +01:00
422cf37a1e Merge pull request 'Fix UI issues' (#242) from ui-fixes into main
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #242
Reviewed-by: simon <s.thiessen@local-it.org>
2025-12-03 14:30:13 +01:00