Rework Filter using a filter builder #556

Open
simon wants to merge 11 commits from issue/mitgliederverwaltung-548 into issue/mitgliederverwaltung-547
Owner

Description of the implemented changes

The changes were:

  • Bugfixing
  • New Feature
  • Breaking Change
  • Refactoring

Redesign of the member-overview filtering: the unbounded vertical filter panel is replaced with a Polaris/Linear-style add-filter builder (searchable grouped field picker → type-aware value control → applied, editable chips), and the fees column becomes a period-scoped payment-aging view that shows how many billing cycles each member has left unpaid within the selected period.

What has been changed?

  • Index fee cycles by member, status and end date
  • Add period-scoped unpaid-cycle payment-aging model
  • Add period-scoped payment filter and field-picker descriptor
  • Replace filter panel with add-filter builder and aging column
  • Add point-in-time, suspended, OR-group and count-range filters
  • Rework filter builder with editable chips and native date ranges
  • Make filter-builder toggles keyboard-operable
  • Use English identifier as_of_date for point-in-time filter
  • Derive payment badge colour from shared status variant
  • Show suspended cycles separately in the payment tooltip

Definition of Done

Code Quality

  • No new technical depths
  • Linting passed
  • Documentation is added were needed

Accessibility

  • New elements are properly defined with html-tags
  • Colour contrast follows WCAG criteria
  • Aria labels are added when needed
  • Everything is accessible by keyboard
  • Tab-Order is comprehensible
  • All interactive elements have a visible focus

Testing

  • Tests for new code are written
  • All tests pass
  • axe-core dev tools show no critical or major issues

Additional Notes

  • Built on branch issue/mitgliederverwaltung-547 (not main).
  • Backtrack: from solutions to requirements — payment/cycle model pivoted to AR-aging period-scoped unpaid-cycle count; approved requirements changed.
  • Backtrack: from ui_tune to requirements — filter-builder v2 maturity (editable chips, unified controls, native date ranges, OR multi-select, suspended filter, point-in-time membership, count-range, payment sort); requirements extended with v2 sections.
  • Larger diffs expected in commits F4 (filter-panel → add-filter-builder swap) and F6 (v2 builder rework) — both touch many files / >150 lines.
## Description of the implemented changes The changes were: - [x] Bugfixing - [x] New Feature - [ ] Breaking Change - [x] Refactoring Redesign of the member-overview filtering: the unbounded vertical filter panel is replaced with a Polaris/Linear-style add-filter builder (searchable grouped field picker → type-aware value control → applied, editable chips), and the fees column becomes a period-scoped payment-aging view that shows how many billing cycles each member has left unpaid within the selected period. ## What has been changed? - Index fee cycles by member, status and end date - Add period-scoped unpaid-cycle payment-aging model - Add period-scoped payment filter and field-picker descriptor - Replace filter panel with add-filter builder and aging column - Add point-in-time, suspended, OR-group and count-range filters - Rework filter builder with editable chips and native date ranges - Make filter-builder toggles keyboard-operable - Use English identifier as_of_date for point-in-time filter - Derive payment badge colour from shared status variant - Show suspended cycles separately in the payment tooltip ## Definition of Done ### Code Quality - [x] No new technical depths - [x] Linting passed - [x] Documentation is added were needed ### Accessibility - [x] New elements are properly defined with html-tags - [x] Colour contrast follows WCAG criteria - [x] Aria labels are added when needed - [x] Everything is accessible by keyboard - [x] Tab-Order is comprehensible - [x] All interactive elements have a visible focus ### Testing - [x] Tests for new code are written - [x] All tests pass - [x] axe-core dev tools show no critical or major issues ## Additional Notes - Built on branch `issue/mitgliederverwaltung-547` (not `main`). - Backtrack: from solutions to requirements — payment/cycle model pivoted to AR-aging period-scoped unpaid-cycle count; approved requirements changed. - Backtrack: from ui_tune to requirements — filter-builder v2 maturity (editable chips, unified controls, native date ranges, OR multi-select, suspended filter, point-in-time membership, count-range, payment sort); requirements extended with v2 sections. - Larger diffs expected in commits F4 (filter-panel → add-filter-builder swap) and F6 (v2 builder rework) — both touch many files / >150 lines.
simon added 11 commits 2026-07-11 11:57:27 +02:00
Counts each member's unpaid billing cycles that fall inside the selected
period. Cycle boundaries are member-relative — derived from each member's
fee-type interval — so "the current cycle" spans different calendar dates
per member.
Swaps the unbounded vertical filter panel for a Polaris-style add-filter
builder (searchable grouped field picker, type-aware value control, applied
chips) and colour-codes the fees column with each member's period-scoped
unpaid-cycle count.
Editable filter chips, uniformly-sized value controls, working field-picker
search, and native date-range inputs with relative presets in place of the
vendored calendar — native inputs give year-jump, manual entry and keyboard
accessibility for free.
docs(changelog): record member-overview filter redesign under Unreleased
Some checks failed
continuous-integration/drone/push Build is failing
fc634813d8
Some checks failed
continuous-integration/drone/push Build is failing
This pull request has changes conflicting with the target branch.
  • assets/css/app.css
  • lib/mv_web/live/components/member_filter_component.ex
  • lib/mv_web/live/member_live/index.ex
  • lib/mv_web/live/member_live/index/export_payload.ex
  • lib/mv_web/live/member_live/index/overview_query.ex
  • priv/gettext/de/LC_MESSAGES/default.po
  • priv/gettext/default.pot
  • priv/gettext/en/LC_MESSAGES/default.po
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin issue/mitgliederverwaltung-548:issue/mitgliederverwaltung-548
git checkout issue/mitgliederverwaltung-548

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git checkout issue/mitgliederverwaltung-547
git merge --no-ff issue/mitgliederverwaltung-548
git checkout issue/mitgliederverwaltung-548
git rebase issue/mitgliederverwaltung-547
git checkout issue/mitgliederverwaltung-547
git merge --ff-only issue/mitgliederverwaltung-548
git checkout issue/mitgliederverwaltung-548
git rebase issue/mitgliederverwaltung-547
git checkout issue/mitgliederverwaltung-547
git merge --no-ff issue/mitgliederverwaltung-548
git checkout issue/mitgliederverwaltung-547
git merge --squash issue/mitgliederverwaltung-548
git checkout issue/mitgliederverwaltung-547
git merge --ff-only issue/mitgliederverwaltung-548
git checkout issue/mitgliederverwaltung-547
git merge issue/mitgliederverwaltung-548
git push origin issue/mitgliederverwaltung-547
Sign in to join this conversation.
No description provided.