From 91ab199769c9f4f8051c74ad43a701db321f3995 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Wed, 19 Apr 2023 17:53:24 +0200 Subject: [PATCH] feat(donations): Donation table filtering --- .../donations/DonationsOverview.svelte | 9 +++++-- src/components/shared/tablefilters.js | 27 ++++++++++++++----- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/components/donations/DonationsOverview.svelte b/src/components/donations/DonationsOverview.svelte index 0b0b715b..51fe5549 100644 --- a/src/components/donations/DonationsOverview.svelte +++ b/src/components/donations/DonationsOverview.svelte @@ -23,6 +23,7 @@ import DonationStatus from "./DonationStatus.svelte"; import DonationTableAction from "./DonationTableAction.svelte"; import DeleteDonationModal from "./DeleteDonationModal.svelte"; + import { donationDonorFilter, donationRunnerFilter } from "../shared/tablefilters"; $: searchvalue = ""; $: active_deletes = []; $: active_edits = []; @@ -54,7 +55,7 @@ cell: (info) => { return renderComponent(DonationDonor, { donor: info.getValue() }); }, - filterFn: `includesString`, + filterFn: `donor`, }, { accessorKey: "runner", @@ -62,7 +63,7 @@ cell: (info) => { return renderComponent(DonationRunner, { runner: info.getValue() }); }, - filterFn: `includesString`, + filterFn: `runner`, }, { accessorKey: "amountPerDistance", @@ -139,6 +140,10 @@ pageSize: 50, }, }, + filterFns: { + donor: donationDonorFilter, + runner: donationRunnerFilter, + }, enableRowSelection: true, getCoreRowModel: getCoreRowModel(), getFilteredRowModel: getFilteredRowModel(), diff --git a/src/components/shared/tablefilters.js b/src/components/shared/tablefilters.js index 1a26b2cf..8df0bc9f 100644 --- a/src/components/shared/tablefilters.js +++ b/src/components/shared/tablefilters.js @@ -15,18 +15,33 @@ export const groupFilter = (row, columnId, value) => { }; export const runnerFilter = (row, columnId, value) => { const runner = row.getValue(columnId); - if(!runner && value == "blanko"){return true} - if(!runner){return false} + return filterRunner(runner, value) +}; - if(value.startsWith("#")){ - return runner.id == value.replace("#","") +export const donationRunnerFilter = (row, columnId, value) => { + const runner = row.getValue(columnId); + if(!runner){return false;} + return filterRunner(runner, value) +}; + +export const donationDonorFilter = (row, columnId, value) => { + const runner = row.getValue(columnId); + return filterRunner(runner, value) +}; + +function filterRunner(runner, value) { + if (!runner && value == "blanko") { return true } + if (!runner) { return false } + + if (value.startsWith("#")) { + return runner.id == value.replace("#", "") } - if(runner.middlename){ + if (runner.middlename) { return `${runner.firstname} ${runner.middlename} ${runner.lastname}`.toLowerCase().includes(value.toLowerCase()) } return `${runner.firstname} ${runner.lastname}`.toLowerCase().includes(value.toLowerCase()) -}; +} export const statusFilter = (row, columnId, value) => { const status = row.getValue(columnId);