feat(donations): Donation table filtering

This commit is contained in:
Nicolai Ort 2023-04-19 17:53:24 +02:00
parent e75be49be4
commit 91ab199769
Signed by: niggl
GPG Key ID: 13AFA55AF62F269F
2 changed files with 28 additions and 8 deletions

View File

@ -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(),

View File

@ -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);