diff options
Diffstat (limited to 'src/lib/Schedule/Crunchyroll.svelte')
| -rw-r--r-- | src/lib/Schedule/Crunchyroll.svelte | 90 |
1 files changed, 47 insertions, 43 deletions
diff --git a/src/lib/Schedule/Crunchyroll.svelte b/src/lib/Schedule/Crunchyroll.svelte index 9d7c8e70..1f5f121c 100644 --- a/src/lib/Schedule/Crunchyroll.svelte +++ b/src/lib/Schedule/Crunchyroll.svelte @@ -1,47 +1,51 @@ <script lang="ts"> - import Spacer from '$lib/Layout/Spacer.svelte'; - import crunchyroll from '$lib/Data/Static/crunchyroll.json'; - import './container.css'; - - interface CrunchyrollMedia<T = number | 'soon' | 'continuing'> { - year: number; - month: number; - day: T; - title: string; - } - - type KnownMedia = { [key: string]: CrunchyrollMedia<number>[] }; - - const days: KnownMedia = crunchyroll - .filter((media) => media.day !== 'soon' && media.day !== 'continuing') - .reduce((acc: KnownMedia, media) => { - const date = new Date(media.year, media.month - 1, media.day as number).toLocaleDateString(); - - if (!acc[date]) acc[date] = []; - - acc[date].push(media as CrunchyrollMedia<number>); - - return acc; - }, {}); - const continuing: CrunchyrollMedia<number | string>[] = crunchyroll.filter( - (media) => media.day === 'continuing' - ); - const soon: CrunchyrollMedia<number | string>[] = crunchyroll.filter( - (media) => media.day === 'soon' - ); - - $: columnCount = Math.ceil(Object.keys(days).length / 2); - - const ordinalSuffix = (i: number) => { - const j = i % 10; - const k = i % 100; - - if (j === 1 && k !== 11) return i + 'st'; - if (j === 2 && k !== 12) return i + 'nd'; - if (j === 3 && k !== 13) return i + 'rd'; - - return i + 'th'; - }; +import Spacer from "$lib/Layout/Spacer.svelte"; +import crunchyroll from "$lib/Data/Static/crunchyroll.json"; +import "./container.css"; + +interface CrunchyrollMedia<T = number | "soon" | "continuing"> { + year: number; + month: number; + day: T; + title: string; +} + +type KnownMedia = { [key: string]: CrunchyrollMedia<number>[] }; + +const days: KnownMedia = crunchyroll + .filter((media) => media.day !== "soon" && media.day !== "continuing") + .reduce((acc: KnownMedia, media) => { + const date = new Date( + media.year, + media.month - 1, + media.day as number, + ).toLocaleDateString(); + + if (!acc[date]) acc[date] = []; + + acc[date].push(media as CrunchyrollMedia<number>); + + return acc; + }, {}); +const continuing: CrunchyrollMedia<number | string>[] = crunchyroll.filter( + (media) => media.day === "continuing", +); +const soon: CrunchyrollMedia<number | string>[] = crunchyroll.filter( + (media) => media.day === "soon", +); + +$: columnCount = Math.ceil(Object.keys(days).length / 2); + +const ordinalSuffix = (i: number) => { + const j = i % 10; + const k = i % 100; + + if (j === 1 && k !== 11) return i + "st"; + if (j === 2 && k !== 12) return i + "nd"; + if (j === 3 && k !== 13) return i + "rd"; + + return i + "th"; +}; </script> <div class="list-container" id="crunchyroll" style={`column-count: ${columnCount};`}> |