diff --git a/src/components/donations/DonationsOverview.svelte b/src/components/donations/DonationsOverview.svelte index c509f98f..c989a6d5 100644 --- a/src/components/donations/DonationsOverview.svelte +++ b/src/components/donations/DonationsOverview.svelte @@ -5,18 +5,16 @@ import Toastify from "toastify-js"; import DonationsEmptyState from "./DonationsEmptyState.svelte"; import AddDonationPaymentModal from "./AddDonationPaymentModal.svelte"; + import { onMount } from "svelte"; $: searchvalue = ""; $: active_deletes = []; + $: dataLoaded = false; export let current_donations = []; export let payment_modal_open = false; export let editable = {}; export let original_data = {}; export let paid_amount_input = 0; - const donations_promise = DonationService.donationControllerGetAll().then( - (val) => { - current_donations = val; - } - ); + function should_display_based_on_id(id) { if (searchvalue.toString().slice(-1) === "*") { return id.toString().startsWith(searchvalue.replace("*", "")); @@ -26,210 +24,252 @@ function open_payment_modal(donation) { editable = Object.assign({}, donation); original_data = Object.assign({}, donation); - paid_amount_input = (donation.paidAmount/100).toFixed(2); + paid_amount_input = (donation.paidAmount / 100).toFixed(2); payment_modal_open = true; } + + onMount(async () => { + let page = 0; + while (page >= 0) { + const donations = await DonationService.donationControllerGetAll( + page, + 500 + ); + if (donations.length == 0) { + page = -2; + } + + current_donations = current_donations.concat(...donations); + + if (page == 0) { + dataLoaded = true; + } + page++; + } + console.log("All donations loaded"); + }); - -{#if store.state.jwtinfo.userdetails.permissions.includes('DONATION:GET')} - {#await donations_promise} + +{#if store.state.jwtinfo.userdetails.permissions.includes("DONATION:GET")} + {#if !dataLoaded} - {:then} - {#if current_donations.length === 0} - - {:else} - -
- - - - - - - - - - - - - - {#each current_donations as donation} - {#if donation.donor.firstname + {:else if current_donations.length === 0} + + {:else} + +
+
- {$_('donor')} - - {$_('runner')} - - {$_('amount-per-kilometer')} - - {$_('donation-amount')} - - {$_('paid-amount')} - - {$_('status')} - - {$_('action')} -
+ + + + + + + + + + + + + {#each current_donations as donation} + {#if donation.donor.firstname + .toLowerCase() + .includes(searchvalue.toLowerCase()) || donation.donor.lastname .toLowerCase() - .includes( - searchvalue.toLowerCase() - ) || donation.donor.lastname - .toLowerCase() - .includes( - searchvalue.toLowerCase() - ) || donation.runner?.firstname - .toLowerCase() - .includes( - searchvalue.toLowerCase() - ) || donation.runner?.lastname - .toLowerCase() - .includes( - searchvalue.toLowerCase() - ) || should_display_based_on_id(donation.id)} - - + + - - - - - - {#if active_deletes[donation.id] === true} - {:else} - +
+ {$_("fixed-donation")} +
{/if} - - {/if} - {/each} - -
+ {$_("donor")} + + {$_("runner")} + + {$_("amount-per-kilometer")} + + {$_("donation-amount")} + + {$_("paid-amount")} + + {$_("status")} + + {$_("action")} +
-
+ .includes(searchvalue.toLowerCase()) || donation.runner?.firstname + .toLowerCase() + .includes(searchvalue.toLowerCase()) || donation.runner?.lastname + .toLowerCase() + .includes(searchvalue.toLowerCase()) || should_display_based_on_id(donation.id)} +
+ + + {#if donation.runner} +
{donation.donor.firstname} - {donation.donor.middlename || ''} - {donation.donor.lastname} + href="../runners/{donation.runner.id}" + class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-gray-100 text-gray-800" + >{donation.runner.firstname} + {donation.runner.middlename || ""} + {donation.runner.lastname}
-
- {#if donation.runner} - - {:else} -
- {$_('fixed-donation')} -
- {/if} -
- {#if donation.amountPerDistance} -
- {(donation.amountPerDistance / 100) - .toFixed(2) - .toLocaleString('de-DE', { valute: 'EUR' })}€ -
- {:else} -
- {$_('fixed-donation')} -
- {/if} -
-
- {(donation.amount / 100) - .toFixed(2) - .toLocaleString('de-DE', { valute: 'EUR' })}€ -
-
-
- {(donation.paidAmount / 100) - .toFixed(2) - .toLocaleString('de-DE', { valute: 'EUR' })}€ -
-
- {#if donation.status =="PAID"} - {$_('paid')} - {:else} - {$_('open')} - {/if} - - - - - - {$_('details')} - {#if store.state.jwtinfo.userdetails.permissions.includes('DONATION:DELETE')} - - {/if} -
-
- {/if} - {:catch error} -
- - {$_('general_promise_error')} - {error} - + + + {#if donation.amountPerDistance} +
+ {(donation.amountPerDistance / 100) + .toFixed(2) + .toLocaleString("de-DE", { valute: "EUR" })}€ +
+ {:else} +
+ {$_("fixed-donation")} +
+ {/if} + + +
+ {(donation.amount / 100) + .toFixed(2) + .toLocaleString("de-DE", { valute: "EUR" })}€ +
+ + +
+ {(donation.paidAmount / 100) + .toFixed(2) + .toLocaleString("de-DE", { valute: "EUR" })}€ +
+ + + {#if donation.status == "PAID"} + {$_("paid")} + {:else} + {$_("open")} + {/if} + + {#if active_deletes[donation.id] === true} + + + + + {:else} + + + {$_("details")} + {#if store.state.jwtinfo.userdetails.permissions.includes("DONATION:DELETE")} + + {/if} + + {/if} + + {/if} + {/each} + +
- {/await} + {/if} {/if}