From c3b3a36173a432dd57f5a08665c6804bbc48ca98 Mon Sep 17 00:00:00 2001 From: Bradley Shellnut Date: Wed, 9 Nov 2022 21:52:01 -0600 Subject: [PATCH] Cleanup pagination and text search plus implement previous page event handling. --- src/lib/components/pagination/index.svelte | 10 +- .../components/search/textSearch/index.svelte | 158 ++++++++++++------ src/routes/+page.svelte | 37 ---- src/routes/search/+page.svelte | 51 +----- 4 files changed, 114 insertions(+), 142 deletions(-) diff --git a/src/lib/components/pagination/index.svelte b/src/lib/components/pagination/index.svelte index 60df686..6413515 100644 --- a/src/lib/components/pagination/index.svelte +++ b/src/lib/components/pagination/index.svelte @@ -1,4 +1,5 @@
diff --git a/src/lib/components/search/textSearch/index.svelte b/src/lib/components/search/textSearch/index.svelte index 1ce44f7..da422b6 100644 --- a/src/lib/components/search/textSearch/index.svelte +++ b/src/lib/components/search/textSearch/index.svelte @@ -10,26 +10,31 @@ import { gameStore } from '$root/lib/stores/gameSearchStore'; import { toast } from '../../toast/toast'; import Pagination from '$lib/components/pagination/index.svelte'; - import { ToastType } from '$root/lib/types'; + import Game from '$lib/components/game/index.svelte'; + import { ToastType, type GameType, type SavedGameType } from '$root/lib/types'; + import SkeletonPlaceholder from '../../SkeletonPlaceholder.svelte'; + import RemoveCollectionDialog from '../../dialog/RemoveCollectionDialog.svelte'; + import RemoveWishlistDialog from '../../dialog/RemoveWishlistDialog.svelte'; + + interface RemoveGameEvent extends Event { + detail: GameType | SavedGameType; + } export let data: PageData; - console.log('search page data', data); + // console.log('search page data', data); export let form: ActionData; - console.log('search page form', form); + // console.log('search page form', form); export let showButton: boolean = false; export let advancedSearch: boolean = false; - // export let form: ActionData; + + let gameToRemove: GameType | SavedGameType; + let numberOfGameSkeleton = 1; let submitButton: HTMLElement; let pageSize = 10; - console.log('Form data page', +form?.data?.page); let page = +form?.data?.page || 1; - $: skip = (page - 1) * pageSize; - console.log({ skip }); let totalItems = form?.totalCount || data?.totalCount || 0; - console.log({ pageSize }); - console.log({ page }); - console.log({ totalItems }); + $: skip = (page - 1) * pageSize; $: console.log('submit button', submitButton); let submitting = $boredState?.loading; @@ -40,17 +45,18 @@ } async function handleNextPageEvent(event: CustomEvent) { - console.log('Next page called', event.detail); - console.log('Current page: ', page); if (+event?.detail?.page === page + 1) { - console.log('Page equals plus one'); page += 1; } - // skip = (page - 1) * pageSize; await tick(); - console.log('New Page Value', page); - console.log('New Skip value', skip); - console.log('New skip value DOM: ', document.getElementById('skip')?.getAttribute('value')); + submitButton.click(); + } + + async function handlePreviousPageEvent(event: CustomEvent) { + if (+event?.detail?.page === page - 1) { + page -= 1; + } + await tick(); submitButton.click(); } @@ -59,19 +65,32 @@ page = 1; pageSize = event.detail.pageSize; await tick(); - console.log('New limit value DOM: ', document.getElementById('limit')?.getAttribute('value')); + // console.log('New limit value DOM: ', document.getElementById('limit')?.getAttribute('value')); submitButton.click(); } + + function handleRemoveCollection(event: RemoveGameEvent) { + gameToRemove = event?.detail; + boredState.update((n) => ({ + ...n, + dialog: { isOpen: true, content: RemoveCollectionDialog, additionalData: gameToRemove } + })); + } + + function handleRemoveWishlist(event: RemoveGameEvent) { + gameToRemove = event?.detail; + boredState.update((n) => ({ + ...n, + dialog: { isOpen: true, content: RemoveWishlistDialog, additionalData: gameToRemove } + })); + }
{ - gameStore.removeAll(); - // data.append('limit', pageSize.toString()); - // data.append('skip', Math.floor(page * pageSize).toString()); + use:enhance={() => { boredState.update((n) => ({ ...n, loading: true })); return async ({ result }) => { boredState.update((n) => ({ ...n, loading: false })); @@ -83,12 +102,8 @@ } else if (result.type === 'success') { gameStore.removeAll(); gameStore.addAll(result?.data?.games); - // totalItems = result?.data?.totalCount; console.log(`Frontend result search enhance: ${JSON.stringify(result)}`); totalItems = result?.data?.totalCount; - // skip = result?.data?.skip || 0; - // page = skip / pageSize || 0; - // console.log('enhance', page, skip, totalItems); toast.send('Sucess!', { duration: 3000, type: ToastType.INFO, dismissible: true }); await applyAction(result); } else { @@ -140,30 +155,55 @@ {/if}
- - - + {#if showButton} + + {/if} - console.log('Prev page called', event)} - on:perPageEvent={handlePerPageEvent} -/> +{#if $gameStore?.length > 0} +
+

Games Found:

+
+ {#each $gameStore as game (game.id)} + + {/each} +
+ +
+{:else if $boredState.loading} +
+

Games Found:

+
+ {#each [...Array(numberOfGameSkeleton).keys()] as game, i} + + {/each} +
+
+{/if} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 0e7e752..a905a54 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -130,43 +130,6 @@ -{#if $gameStore?.length > 0} -
-

Games Found:

-
- {#each $gameStore as game (game.id)} - - {/each} -
- console.log('Prev page called', event)} - on:perPageEvent={(event) => console.log('Per page called', event)} - /> -
-{:else if $boredState.loading} -
-

Games Found:

-
- {#each [...Array(numberOfGameSkeleton).keys()] as game, i} - - {/each} -
-
-{/if} -