diff --git a/src/routes/collection/+page.svelte b/src/routes/collection/+page.svelte index 99f205d..6487115 100644 --- a/src/routes/collection/+page.svelte +++ b/src/routes/collection/+page.svelte @@ -3,12 +3,18 @@ import { collectionStore } from '$lib/stores/collectionStore'; import type { GameType, SavedGameType } from '$root/lib/types'; import { boredState } from '$root/lib/stores/boredState'; + import Pagination from '$root/lib/components/pagination/index.svelte'; import RemoveCollectionDialog from '$root/lib/components/dialog/RemoveCollectionDialog.svelte'; import RemoveWishlistDialog from '$root/lib/components/dialog/RemoveWishlistDialog.svelte'; + import { tick } from 'svelte'; - let isOpen: boolean = false; let gameToRemove: GameType | SavedGameType; - console.log('isOpen', isOpen); + let pageSize = 10; + let page = 1; + + $: totalItems = $collectionStore.length; + $: skip = (page - 1) * pageSize; + $: gamesShown = $collectionStore.slice(skip, skip + pageSize); interface RemoveGameEvent extends Event { detail: GameType | SavedGameType; @@ -33,6 +39,27 @@ dialog: { isOpen: true, content: RemoveWishlistDialog, additionalData: gameToRemove } })); } + + async function handleNextPageEvent(event: CustomEvent) { + if (+event?.detail?.page === page + 1) { + page += 1; + } + await tick(); + } + + async function handlePreviousPageEvent(event: CustomEvent) { + if (+event?.detail?.page === page - 1) { + page -= 1; + } + await tick(); + } + + async function handlePerPageEvent(event: CustomEvent) { + console.log('Per Page Event called', event.detail); + page = 1; + pageSize = event.detail.pageSize; + await tick(); + } @@ -46,13 +73,24 @@ {#if $collectionStore.length === 0}

No games in your collection

{:else} - {#each $collectionStore as game (game.id)} + {#each gamesShown as game (game.id)} {/each} + {/if} diff --git a/src/routes/game/[id]/+page.svelte b/src/routes/game/[id]/+page.svelte index 12cd2ce..a4b59b6 100644 --- a/src/routes/game/[id]/+page.svelte +++ b/src/routes/game/[id]/+page.svelte @@ -62,11 +62,19 @@
-

Year: {game?.year_published}

-

Players: {game.players}

-

Playtime: {game.playtime} minutes

-

Minimum Age: {game.min_age}

- {#if game?.price !== 0.0} + {#if game?.year_published} +

Year: {game?.year_published}

+ {/if} + {#if game?.players} +

Players: {game.players}

+ {/if} + {#if game?.playtime} +

Playtime: {game.playtime} minutes

+ {/if} + {#if game?.min_age} +

Minimum Age: {game.min_age}

+ {/if} + {#if +game?.price !== 0.0}

Price: ${game?.price}

{/if} diff --git a/src/routes/wishlist/+page.svelte b/src/routes/wishlist/+page.svelte index 67d768c..60d0e3a 100644 --- a/src/routes/wishlist/+page.svelte +++ b/src/routes/wishlist/+page.svelte @@ -3,12 +3,18 @@ import { wishlistStore } from '$lib/stores/wishlistStore'; import type { GameType, SavedGameType } from '$root/lib/types'; import { boredState } from '$root/lib/stores/boredState'; + import Pagination from '$root/lib/components/pagination/index.svelte'; import RemoveWishlistDialog from '$root/lib/components/dialog/RemoveWishlistDialog.svelte'; import RemoveCollectionDialog from '$root/lib/components/dialog/RemoveCollectionDialog.svelte'; + import { tick } from 'svelte'; - let isOpen: boolean = false; let gameToRemove: GameType | SavedGameType; - console.log('isOpen', isOpen); + let pageSize = 10; + let page = 1; + + $: totalItems = $wishlistStore.length; + $: skip = (page - 1) * pageSize; + $: gamesShown = $wishlistStore.slice(skip, skip + pageSize); interface RemoveGameEvent extends Event { detail: GameType | SavedGameType; @@ -29,6 +35,27 @@ dialog: { isOpen: true, content: RemoveWishlistDialog, additionalData: gameToRemove } })); } + + async function handleNextPageEvent(event: CustomEvent) { + if (+event?.detail?.page === page + 1) { + page += 1; + } + await tick(); + } + + async function handlePreviousPageEvent(event: CustomEvent) { + if (+event?.detail?.page === page - 1) { + page -= 1; + } + await tick(); + } + + async function handlePerPageEvent(event: CustomEvent) { + console.log('Per Page Event called', event.detail); + page = 1; + pageSize = event.detail.pageSize; + await tick(); + } @@ -42,13 +69,24 @@ {#if $wishlistStore.length === 0}

No games in your wishlist

{:else} - {#each $wishlistStore as game} + {#each gamesShown as game} {/each} + {/if}