diff options
| author | mat <github@matdoes.dev> | 2022-02-17 00:19:51 -0600 |
|---|---|---|
| committer | mat <github@matdoes.dev> | 2022-02-17 00:19:51 -0600 |
| commit | a6cff35351d418272d137013cd536c26e978b6f6 (patch) | |
| tree | 6df48609fe09c844e5874bdd94f4e01f113703c9 /src/lib | |
| parent | cd982e64595ab47a5fa71a40f8249893dbf867df (diff) | |
| download | skyblock-stats-a6cff35351d418272d137013cd536c26e978b6f6.tar.gz skyblock-stats-a6cff35351d418272d137013cd536c26e978b6f6.tar.bz2 skyblock-stats-a6cff35351d418272d137013cd536c26e978b6f6.zip | |
move some stuff and change how constants are done
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/Header.svelte | 2 | ||||
| -rw-r--r-- | src/lib/minecraft/Inventory.svelte | 45 | ||||
| -rw-r--r-- | src/lib/minecraft/Item.svelte | 32 | ||||
| -rw-r--r-- | src/lib/minecraft/Username.svelte (renamed from src/lib/Username.svelte) | 0 | ||||
| -rw-r--r-- | src/lib/minecraft/heads/Head2d.svelte (renamed from src/lib/heads/Head2d.svelte) | 0 | ||||
| -rw-r--r-- | src/lib/minecraft/heads/Head3d.svelte (renamed from src/lib/heads/Head3d.svelte) | 0 | ||||
| -rw-r--r-- | src/lib/profile.ts | 6 | ||||
| -rw-r--r-- | src/lib/sections/Armor.svelte | 7 | ||||
| -rw-r--r-- | src/lib/sections/Infobox.svelte | 3 | ||||
| -rw-r--r-- | src/lib/utils.ts | 3 |
10 files changed, 91 insertions, 7 deletions
diff --git a/src/lib/Header.svelte b/src/lib/Header.svelte index a5ec702..48f5167 100644 --- a/src/lib/Header.svelte +++ b/src/lib/Header.svelte @@ -6,7 +6,7 @@ </script> <header id="main-header"> - <a href={backArrowHref} class="back-arrow-anchor" aria-label="back"> + <a href={backArrowHref} class="back-arrow-anchor" aria-label="back" sveltekit:prefetch> <svg class="back-arrow" height="33" width="23"> <path d="M 14 0 l -13 13 l 13 13" stroke-width="2" fill="none" /> </svg> diff --git a/src/lib/minecraft/Inventory.svelte b/src/lib/minecraft/Inventory.svelte new file mode 100644 index 0000000..3d3b9c0 --- /dev/null +++ b/src/lib/minecraft/Inventory.svelte @@ -0,0 +1,45 @@ +<script lang="ts"> + import Item from './Item.svelte' + + export let items + export let name = '' + export let pack = '' + + if (name === 'inventory') + // in the inventory, the first 9 items are the hotbar and should be at the end + items = items.slice(9).concat(items.slice(0, 9)) + + // each item group has 9 items + let itemGroups = [] + $: { + itemGroups = [] + for (let i = 0; i < items.length; i += 9) { + itemGroups.push(items.slice(i, i + 9)) + } + } +</script> + +<div class:inventory-container-{name}={name !== ''}> + {#each itemGroups as itemGroup, groupIndex} + <div> + {#each itemGroup as item} + <Item {item} {pack} isslot /> + {/each} + </div> + {/each} +</div> + +<!-- {%- macro inventory(items, name='', pack='') -%} + <div{% if name %} class="inventory-container-{{ name }}"{% endif %}> + {%- if name == 'inventory' -%} + {%- set items = items|slice(9)|append(items|slice(0, 9)) -%} + {%- endif -%} + + {%- for itemData in items -%} + {%- if loop.index0 > 0 and loop.index0 % 9 == 0 %}</div>{%- endif -%} + {%- if loop.index0 % 9 == 0 %}<div>{%- endif -%} + {{- item(itemData, slot=true, pack=pack) -}} + {%- endfor -%} + </div> + </div> +{%- endmacro -%} --> diff --git a/src/lib/minecraft/Item.svelte b/src/lib/minecraft/Item.svelte new file mode 100644 index 0000000..86bd8f1 --- /dev/null +++ b/src/lib/minecraft/Item.svelte @@ -0,0 +1,32 @@ +<script lang="ts"> + import { formattingCodeToHtml } from '$lib/utils' + + export let item: any | null + export let isslot = true + export let pack = '' + + $: itemLoreHtml = item.display.lore.map(l => formattingCodeToHtml(l)).join('<br>') + $: itemNameHtml = formattingCodeToHtml(item.display.name) +</script> + +<!-- {#if data}{/if} --> + +<!-- {%- macro item(data, slot=true, pack='') -%} + {%- if data -%} + {%- set itemLoreHtml -%} + {%- for line in data.display.lore -%} + {{- line|formattingCodeToHtml -}}{% if not loop.last %}<br>{% endif %} + {%- endfor -%} + {%- endset -%} + {%- set itemNameHtml = data.display.name|formattingCodeToHtml -%} + {%- endif -%} + <span class="item{% if slot %} item-slot{% endif %}"{% if data %} data-lore-html="{{- itemLoreHtml -}}" data-name-html="{{- itemNameHtml -}}"{% endif %}> + {%- if data -%} + {%- set imageUrl = data|itemToUrl(pack) -%} + {%- if imageUrl -%} + <img loading="lazy" src="{{ imageUrl }}" alt="{{ data.display.name|removeFormattingCode }}"{% if imageUrl|startsWith('https://mc-heads.net/head/') %} class="item-custom-head"{% endif %}> + {%- endif -%} + {%- if data.count != 1 %}<span class="item-count">{{ data.count }}</span>{% endif -%} + {%- endif -%} + </span> +{%- endmacro -%} --> diff --git a/src/lib/Username.svelte b/src/lib/minecraft/Username.svelte index d415511..d415511 100644 --- a/src/lib/Username.svelte +++ b/src/lib/minecraft/Username.svelte diff --git a/src/lib/heads/Head2d.svelte b/src/lib/minecraft/heads/Head2d.svelte index d4e9ca8..d4e9ca8 100644 --- a/src/lib/heads/Head2d.svelte +++ b/src/lib/minecraft/heads/Head2d.svelte diff --git a/src/lib/heads/Head3d.svelte b/src/lib/minecraft/heads/Head3d.svelte index f8d2657..f8d2657 100644 --- a/src/lib/heads/Head3d.svelte +++ b/src/lib/minecraft/heads/Head3d.svelte diff --git a/src/lib/profile.ts b/src/lib/profile.ts index 973a6da..320a5dc 100644 --- a/src/lib/profile.ts +++ b/src/lib/profile.ts @@ -10,16 +10,16 @@ export function prettyTimestamp(ms: number) { return timeAsString } -export function generateInfobox(data, constants, opts: { meta: boolean }): string[] { +export function generateInfobox(data, opts: { meta: boolean }): string[] { const result: string[] = [] result.push(`💾 Last save: ${prettyTimestamp(data.member.last_save * 1000)}`) result.push(`🚶 Profile created: ${prettyTimestamp(data.member.first_join * 1000)}`) - result.push(`✨ Fairy souls: ${data.member.fairy_souls.total}/${constants.max_fairy_souls}`) + result.push(`✨ Fairy souls: ${data.member.fairy_souls.total}/${data.member.fairy_souls.max}`) - if (data.profile.minion_count >= constants.max_minions) + if (data.profile.minion_count >= data.profile.maxUniqueMinions) result.push(`🤖 Minion count: ${data.profile.minion_count}`) let mostSignificantKillsStat = null diff --git a/src/lib/sections/Armor.svelte b/src/lib/sections/Armor.svelte new file mode 100644 index 0000000..c4e7950 --- /dev/null +++ b/src/lib/sections/Armor.svelte @@ -0,0 +1,7 @@ +<script lang="ts"> + import Inventory from '$lib/minecraft/Inventory.svelte' + export let data + export let pack +</script> + +<Inventory items={data.member.inventories.armor} name="armor" {pack} /> diff --git a/src/lib/sections/Infobox.svelte b/src/lib/sections/Infobox.svelte index eda7d22..c5c3454 100644 --- a/src/lib/sections/Infobox.svelte +++ b/src/lib/sections/Infobox.svelte @@ -4,7 +4,6 @@ import Emoji from '$lib/Emoji.svelte' export let data - export let constants </script> <!-- <div id="infobox"> @@ -33,7 +32,7 @@ <div id="infobox"> <h2><Username player={data.member} prefix /> ({data.member.profileName})</h2> - {#each generateInfobox(data, constants, { meta: false }) as item} + {#each generateInfobox(data, { meta: false }) as item} <p><Emoji value={item} /></p> {/each} </div> diff --git a/src/lib/utils.ts b/src/lib/utils.ts index c2a955a..ae0c5f0 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -61,7 +61,8 @@ export function formattingCodeToHtml(formatted: string): string { reset() } } else { - htmlOutput += character + // no xss! + htmlOutput += character.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>') } } reset() |
