Compare commits

..

6 commits

Author SHA1 Message Date
6ffd1ea5aa Update docs and guidelines for statistics feature
All checks were successful
continuous-integration/drone/push Build is passing
- CODE_GUIDELINES.md and feature-roadmap.md
- Add statistics-page-implementation-plan.md

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 22:31:52 +01:00
29dc97fde1 Update gettext: extract and add DE/EN for statistics strings
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 22:31:49 +01:00
babe26a33a Pass actor through CycleGenerator so seeds can use admin
- get_actor(opts): use opts[:actor] or system actor
- load_member, do_generate_cycles, create_cycles pass opts
- Seeds pass admin_user_with_role for Ash.load! and cycle updates

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 22:31:45 +01:00
fd8894f577 Add StatisticsLive: overview, bars by year, pie chart
- Summary cards: active/inactive members, open amount
- Joins and exits by year (horizontal bars)
- Contributions by year: table with stacked bar above amounts
- Column order: Paid, Unpaid, Suspended, Total; color dots for legend
- All years combined pie chart
- LiveView tests

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 22:31:40 +01:00
cf79bbd1c4 Add statistics route, permissions, and sidebar entry
- /statistics route and PagePaths.statistics
- Permission sets: viewer and admin can access /statistics
- Sidebar link with can_access_page check
- Plug and sidebar tests updated

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 22:31:35 +01:00
7b83011dcb Add Statistics module for member and cycle aggregates
- first_join_year, active/inactive counts, joins/exits by year
- cycle_totals_by_year, open_amount_total
- Unit tests for Statistics

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-10 22:29:26 +01:00

Diff content is not available