aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/APITypes.d.ts59
-rw-r--r--src/lib/ListItemWithIcon.svelte4
-rw-r--r--src/lib/Toc.svelte4
-rw-r--r--src/lib/sections/Collections.svelte2
-rw-r--r--src/routes/leaderboards/index.svelte2
-rw-r--r--src/routes/player/[player]/[profile].svelte10
6 files changed, 58 insertions, 23 deletions
diff --git a/src/lib/APITypes.d.ts b/src/lib/APITypes.d.ts
index 926072c..983fb61 100644
--- a/src/lib/APITypes.d.ts
+++ b/src/lib/APITypes.d.ts
@@ -8,23 +8,26 @@ export interface CleanMemberProfile {
}
export interface CleanMemberProfilePlayer extends CleanPlayer {
- // The profile name may be different for each player, so we put it here
- profileName: string
- firstJoin: number
- lastSave: number
- purse: number
- stats: StatItem[]
- rawHypixelStats: { [key: string]: number }
- minions: CleanMinion[]
- fairySouls: FairySouls
- inventories?: Inventories
- objectives: Objective[]
- skills: Skill[]
- zones: Zone[]
- collections: Collection[]
- slayers: SlayerData
- pets: PetsData
- harp: HarpData
+ profileName: string;
+ firstJoin: number | null;
+ lastSave: number | null;
+ purse: number;
+ stats: StatItem[];
+ rawHypixelStats: {
+ [key: string]: number;
+ };
+ minions: CleanMinion[];
+ fairySouls: FairySouls;
+ inventories?: Inventories;
+ objectives: Objective[];
+ skills: Skill[];
+ zones: Zone[];
+ collections: Collection[];
+ slayers: SlayerData;
+ pets: PetsData;
+ harp: HarpData;
+ coopInvitation: CoopInvitation | null;
+ farmingContests: FarmingContests;
}
export interface CleanMember extends CleanBasicMember {
@@ -315,3 +318,25 @@ export interface ItemListData {
lastUpdated: number
list: ItemListItem[]
}
+
+export interface PlayerFarmingContestStats {
+ year: number;
+ month: number;
+ day: number;
+ crops: {
+ item: string;
+ amount: number;
+ /** The position (1-indexed) that the user got on the contest. */
+ position: number | null;
+ /** Whether the player has claimed their rewards. */
+ claimed: boolean | null;
+ /**
+ * The number of people who participated in this contest.
+ */
+ participants: number | null;
+ }[];
+}
+export interface FarmingContests {
+ talkedToJacob: boolean;
+ list: PlayerFarmingContestStats[];
+}
diff --git a/src/lib/ListItemWithIcon.svelte b/src/lib/ListItemWithIcon.svelte
index 7666c18..81e9bb5 100644
--- a/src/lib/ListItemWithIcon.svelte
+++ b/src/lib/ListItemWithIcon.svelte
@@ -1,10 +1,10 @@
<script lang="ts">
- export let url: string
+ export let src: string
export let alt: string | undefined = undefined
</script>
<li class="list-item-with-icon">
- <img class="list-item-icon" src={url} {alt} loading="lazy" />
+ <img class="list-item-icon" {src} {alt} loading="lazy" />
<slot />
</li>
diff --git a/src/lib/Toc.svelte b/src/lib/Toc.svelte
index cced057..882ebdd 100644
--- a/src/lib/Toc.svelte
+++ b/src/lib/Toc.svelte
@@ -1,5 +1,5 @@
<script lang="ts">
- import { cleanId } from './utils'
+ import { cleanId, toTitleCase } from './utils'
export let categories: string[]
</script>
@@ -8,7 +8,7 @@
<h3>Contents</h3>
<ul>
{#each categories as category}
- <li><a href="#{category}">{cleanId(category)}</a></li>
+ <li><a href="#{category.replace(/[ _]/, '-')}">{toTitleCase(cleanId(category))}</a></li>
{/each}
</ul>
</div>
diff --git a/src/lib/sections/Collections.svelte b/src/lib/sections/Collections.svelte
index 8551bf4..4baa660 100644
--- a/src/lib/sections/Collections.svelte
+++ b/src/lib/sections/Collections.svelte
@@ -24,7 +24,7 @@
<ul>
{#each collections as collection}
<ListItemWithIcon
- url={skyblockItemToUrl(collection.name, pack)}
+ src={skyblockItemToUrl(collection.name, pack)}
alt={cleanId(collection.name)}
>
<Tooltip>
diff --git a/src/routes/leaderboards/index.svelte b/src/routes/leaderboards/index.svelte
index 37fcb94..02360fb 100644
--- a/src/routes/leaderboards/index.svelte
+++ b/src/routes/leaderboards/index.svelte
@@ -41,7 +41,7 @@
? skyblockItemToUrl(leaderboard.slice(11))
: null}
{#if imageUrl}
- <ListItemWithIcon url={imageUrl}>
+ <ListItemWithIcon src={imageUrl}>
<a href="/leaderboards/{leaderboard}">{cleanId(leaderboard)}</a>
</ListItemWithIcon>
{:else}
diff --git a/src/routes/player/[player]/[profile].svelte b/src/routes/player/[player]/[profile].svelte
index 6a720ce..c55732c 100644
--- a/src/routes/player/[player]/[profile].svelte
+++ b/src/routes/player/[player]/[profile].svelte
@@ -51,6 +51,7 @@
import Harp from '$lib/sections/Harp.svelte'
import Claimed from '$lib/sections/Claimed.svelte'
import Pets from '$lib/sections/Pets.svelte'
+ import FarmingContests from '$lib/sections/FarmingContests.svelte'
export let data: CleanMemberProfile
export let pack: MatcherFile
@@ -73,6 +74,7 @@
if (data.member.harp.selected !== null) categories.push('harp')
if (data.member.claimed && data.member.claimed.length > 0) categories.push('claimed')
if (data.member.pets.list.length > 0) categories.push('pets')
+ if (data.member.farmingContests.list.length > 0) categories.push('farming_contests')
categories.push('leaderboards')
}
@@ -228,6 +230,14 @@
</Collapsible>
</section>
{/if}
+ {#if categories.includes('farming_contests')}
+ <section>
+ <Collapsible id="farming-contests">
+ <h2 slot="title">Farming Contests</h2>
+ <FarmingContests {data} />
+ </Collapsible>
+ </section>
+ {/if}
<section>
<Collapsible id="leaderboards">
<h2 slot="title">Leaderboards</h2>