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.
This commit is contained in:
parent
098b3b0a2a
commit
c65b3808bf
10 changed files with 490 additions and 247 deletions
|
|
@ -39,7 +39,7 @@
|
|||
<.live_component
|
||||
module={MvWeb.Components.PaymentFilterComponent}
|
||||
id="payment-filter"
|
||||
paid_filter={@paid_filter}
|
||||
cycle_status_filter={@cycle_status_filter}
|
||||
member_count={length(@members)}
|
||||
/>
|
||||
<div class="flex gap-2 items-center">
|
||||
|
|
@ -60,47 +60,6 @@
|
|||
<.icon name="hero-arrow-path" class="size-4" />
|
||||
{if(@show_current_cycle, do: gettext("Current Cycle"), else: gettext("Last Cycle"))}
|
||||
</button>
|
||||
<div class="dropdown">
|
||||
<label tabindex="0" class="btn btn-sm btn-outline">
|
||||
<.icon name="hero-funnel" class="size-4" />
|
||||
{gettext("Membership Fee")}
|
||||
</label>
|
||||
<ul
|
||||
tabindex="0"
|
||||
class="dropdown-content menu bg-base-100 rounded-box z-[1] w-52 p-2 shadow"
|
||||
>
|
||||
<li>
|
||||
<button
|
||||
type="button"
|
||||
phx-click="filter_unpaid_cycles"
|
||||
phx-value-filter="unpaid_last"
|
||||
class={if(@membership_fee_status_filter == :unpaid_last, do: "active", else: "")}
|
||||
>
|
||||
{gettext("Unpaid in last cycle")}
|
||||
</button>
|
||||
</li>
|
||||
<li>
|
||||
<button
|
||||
type="button"
|
||||
phx-click="filter_unpaid_cycles"
|
||||
phx-value-filter="unpaid_current"
|
||||
class={if(@membership_fee_status_filter == :unpaid_current, do: "active", else: "")}
|
||||
>
|
||||
{gettext("Unpaid in current cycle")}
|
||||
</button>
|
||||
</li>
|
||||
<li>
|
||||
<button
|
||||
type="button"
|
||||
phx-click="filter_unpaid_cycles"
|
||||
phx-value-filter=""
|
||||
class={if(@membership_fee_status_filter == nil, do: "active", else: "")}
|
||||
>
|
||||
{gettext("All")}
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<.live_component
|
||||
module={MvWeb.Components.FieldVisibilityDropdownComponent}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue