bgg-ottawa-sell-club/src/routes/sellers/+page.svelte

92 lines
2.3 KiB
Svelte

<article>
{#if $games.length == 0}
<div class="medium-height middle-align center-align">
<div class="center-align">
<progress class="circle"></progress>
<h5>gathering games...</h5>
</div>
</div>
{:else}
{#each Object.keys($sellers).sort() as username (username)}
<div class="row">
<h4 class="small">
<a name={`seller-${username}`} href={`#seller-${username}`}>
<i>link</i></a>
<BggUser {username} />
</h4>
<span class="max neighbourhood">
{#if $sellers[username].neighbourhood}
({$sellers[username].neighbourhood})
{/if}
</span>
<span class="nbr_games">
{nbr_games_for(username)}
</span>
</div>
<GameList
sellers={$sellers}
games={$games.filter((game) => game.username === username)} />
{/each}
{/if}
</article>
<script>
import { getContext } from 'svelte';
import GameList from './GameList.svelte';
import BggUser from '$lib/components/BggUser.svelte';
const games = getContext('games');
const sellers = getContext('sellers');
const nbr_games_for = (username) =>
$games.filter((game) => game.username === username).length;
</script>
<style>
p {
font-size: var(--font-size-10);
max-width: 60em;
text-align: justify;
margin-left: 3em;
margin-right: 3em;
}
a {
color: var(--primary);
text-decoration: underline;
}
.game-cell {
display: flex;
}
.game-cell > * {
display: block;
}
.game-desc {
flex: 1;
}
td {
font-size: var(--font-size-10);
}
@media screen and (max-width: 730px) {
h1 {
font-size: var(--font-size-12);
}
p {
font-size: inherit;
margin-left: 1em;
margin-right: 1em;
}
}
.nbr_games:after {
content: ' games';
}
.nbr_games:before {
content: 'selling ';
}
a {
padding-right: 1em;
}
</style>