diff --git a/src/components/donations/DonationDetail.svelte b/src/components/donations/DonationDetail.svelte index c7ee8c14..a5df950b 100644 --- a/src/components/donations/DonationDetail.svelte +++ b/src/components/donations/DonationDetail.svelte @@ -13,14 +13,13 @@ export let params; $: delete_triggered = false; $: original_data = {}; - $: original_comparison_string = ""; $: editable = {}; $: current_donors = []; $: current_runners = []; $: amount_input = 0; $: is_amount_valid = amount_input > 0; $: changes_performed = - !(original_comparison_string === JSON.stringify(editable)) || + !(JSON.stringify(original_data) === JSON.stringify(editable)) || (original_data.responseType == "DISTANCEDONATION" && !(Math.floor(amount_input * 100) === original_data.amountPerDistance)) || (original_data.responseType !== "DISTANCEDONATION" && @@ -38,14 +37,11 @@ data_loaded = true; original_data = Object.assign(original_data, data); editable = Object.assign(editable, original_data); - editable.donor = data.donor.id; if (data.responseType == "DISTANCEDONATION") { - editable.runner = data.runner.id; amount_input = data.amountPerDistance / 100; } else { amount_input = data.amount / 100; } - original_comparison_string = JSON.stringify(editable); }); const getDonorLabel = (option) => option.firstname + " " + (option.middlename || "") + " " + option.lastname; @@ -59,16 +55,19 @@ text: "Donation is being updated", duration: 2500, }).showToast(); + let postdata = {}; if (original_data.responseType === "DISTANCEDONATION") { editable.amountPerDistance = Math.floor(amount_input * 100); + postdata = Object.assign(postdata, editable); + postdata.runner = postdata.runner.id; + postdata.donor = postdata.donor.id; DonationService.donationControllerPutDistance( original_data.id, - editable + postdata ) .then((resp) => { - Object.assign(original_data, resp); + Object.assign(original_data, editable); original_data = original_data; - original_comparison_string = JSON.stringify(editable); Toastify({ text: "updated donation", duration: 2500, @@ -78,7 +77,10 @@ .catch((err) => {}); } else { editable.amount = Math.floor(amount_input * 100); - DonationService.donationControllerPutFixed(original_data.id, editable) + postdata = Object.assign(postdata, editable); + postdata.runner = postdata.runner.id; + postdata.donor = postdata.donor.id; + DonationService.donationControllerPutFixed(original_data.id, postdata) .then((resp) => { Object.assign(original_data, editable); original_data = original_data; @@ -218,9 +220,8 @@ showChevron={true} placeholder={$_('search-for-donor-name-or-id')} noOptionsMessage={$_('no-donors-found')} - selectedValue={current_donors.find((d) => (d.id == editable.donor))} - on:select={(selectedValue) => (editable.donor = selectedValue.detail.id)} - on:clear={()=>(editable.donor = null)}/> + bind:selectedValue={editable.donor} + on:clear={() => (editable.donor = null)} /> {#if original_data.responseType == 'DISTANCEDONATION'}
@@ -236,9 +237,8 @@ showChevron={true} placeholder={$_('search-for-runner-by-name-or-id')} noOptionsMessage={$_('no-runners-found')} - selectedValue={undefined || current_runners.find((r) => (r.id = original_data.runner.id))} - on:select={(selectedValue) => (editable.runner == selectedValue.detail.id)} - on:clear={()=>(editable.runner = null)} /> + bind:selectedValue={editable.runner} + on:clear={() => (editable.runner = null)} />
{/if}