diff --git a/src/components/donors/DonorsOverview.svelte b/src/components/donors/DonorsOverview.svelte
index f0d6127e..4df90655 100644
--- a/src/components/donors/DonorsOverview.svelte
+++ b/src/components/donors/DonorsOverview.svelte
@@ -5,26 +5,155 @@
import DonorsEmptyState from "./DonorsEmptyState.svelte";
import ConfirmDonorDeletion from "./ConfirmDonorDeletion.svelte";
import Toastify from "toastify-js";
+ import TableBottom from "../shared/TableBottom.svelte";
+ import {
+ createSvelteTable,
+ flexRender,
+ getCoreRowModel,
+ getFilteredRowModel,
+ getPaginationRowModel,
+ getSortedRowModel,
+ renderComponent,
+ } from "@tanstack/svelte-table";
+ import { writable } from "svelte/store";
+ import { onMount } from "svelte";
+ import InputElement from "../shared/InputElement.svelte";
+ import TableHeader from "../shared/TableHeader.svelte";
+ import TableActions from "../shared/TableActions.svelte";
$: searchvalue = "";
$: active_deletes = [];
$: current_donations = [];
+ $: selectedDonors =
+ $table?.getSelectedRowModel().rows.map((row) => row.original) || [];
+ $: selected =
+ $table?.getSelectedRowModel().rows.map((row) => row.index) || [];
+
+ $: dataLoaded = false;
+
let modal_open = false;
let delete_donor = {};
export let current_donors = [];
- const donors_promise = DonorService.donorControllerGetAll().then((val) => {
- current_donors = val;
+
+ //Section table
+ const columns = [
+ {
+ accessorKey: "id",
+ header: () => "id",
+ cell: (info) => {
+ return "TODO:";
+ },
+ filterFn: `equalsString`,
+ },
+ {
+ accessorKey: "name",
+ header: () => $_("name"),
+ cell: (info) => {
+ return "TODO:";
+ },
+ filterFn: `includesString`,
+ },
+ {
+ accessorKey: "address",
+ header: () => $_("contact-information"),
+ cell: (info) => {
+ return "TODO:";
+ },
+ filterFn: `includesString`,
+ },
+ {
+ accessorKey: "sponsorings",
+ header: () => $_("sponsorings"),
+ cell: (info) => {
+ return "TODO:";
+ },
+ filterFn: `includesString`,
+ },
+ {
+ accessorKey: "sponsorings",
+ header: () => $_("total-donation-amount"),
+ cell: (info) => {
+ return "TODO:";
+ },
+ filterFn: `group`,
+ },
+ {
+ accessorKey: "sponsorings",
+ header: () => $_("total-paid-amount"),
+ cell: (info) => {
+ return "TODO:";
+ },
+ enableColumnFilter: false,
+ },
+ {
+ accessorKey: "actions",
+ header: () => $_("action"),
+ cell: (info) => {
+ return renderComponent(TableActions, {
+ detailsLink: `./${info.row.original.id}`,
+ deleteAction: () => {
+ active_deletes =
+ current_donors[
+ current_donors.findIndex((r) => r.id == info.row.original.id)
+ ];
+ },
+ deleteEnabled:
+ store.state.jwtinfo.userdetails.permissions.includes(
+ "DONOR:DELETE"
+ ),
+ });
+ },
+ enableColumnFilter: false,
+ enableSorting: false,
+ },
+ ];
+ const options = writable({
+ data: [],
+ columns: columns,
+ initialState: {
+ pagination: {
+ pageSize: 50,
+ },
+ },
+ enableRowSelection: true,
+ getCoreRowModel: getCoreRowModel(),
+ getFilteredRowModel: getFilteredRowModel(),
+ getPaginationRowModel: getPaginationRowModel(),
+ getSortedRowModel: getSortedRowModel(),
});
- const donation_promise = DonationService.donationControllerGetAll().then(
- (val) => {
- current_donations = val;
- }
- );
+ const table = createSvelteTable(options);
+
function should_display_based_on_id(id) {
if (searchvalue.toString().slice(-1) === "*") {
return id.toString().startsWith(searchvalue.replace("*", ""));
}
return id.toString() === searchvalue;
}
+
+ onMount(async () => {
+ let page = 0;
+ while (page >= 0) {
+ const donors = await DonorService.donorControllerGetAll(page, 500);
+ const donations = await DonationService.donationControllerGetAll(
+ page,
+ 500
+ );
+ if (donors.length == 0 && donations.length == 0) {
+ page = -2;
+ }
+
+ current_donors = current_donors.concat(...donors);
+ current_donations = current_donations.concat(...donors);
+ options.update((options) => ({
+ ...options,
+ data: current_donors,
+ }));
+
+ dataLoaded = true;
+ page++;
+ }
+
+ console.log("All donors loaded");
+ });
{$_('donors-are-being-loaded')}
-{$_('this-might-take-a-moment')}
+ role="alert" + > +{$_("donors-are-being-loaded")}
+{$_("this-might-take-a-moment")}
- {$_('name')} - | -- {$_('contact-information')} - | -- {$_('donations')} - | -- {$_('total-donation-amount')} - | -- {$_('total-paid-amount')} - | -
- {$_('action')}
+ {:else if current_donors.length === 0}
+
+
- {/if}
- {:catch error}
-
-
- {$_('general_promise_error')}
- {error}
-
+ {/each}
+ | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+ |
+ {#each row.getVisibleCells() as cell}
+
+ |
+ {/each}
+