diff options
| author | Fuwn <[email protected]> | 2024-01-21 17:53:00 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-01-21 17:53:00 -0800 |
| commit | eb11e54a4b8a9bf3d648659521906d4cacdd8ae2 (patch) | |
| tree | d50c146930a51fecd4d8253bc86906a5baf180a1 /src/lib/Tools/Schedule/Crunchyroll.svelte | |
| parent | refactor(schedule): move top-level tool to route (diff) | |
| download | due.moe-eb11e54a4b8a9bf3d648659521906d4cacdd8ae2.tar.xz due.moe-eb11e54a4b8a9bf3d648659521906d4cacdd8ae2.zip | |
refactor(schedule): move module out of tools
Diffstat (limited to 'src/lib/Tools/Schedule/Crunchyroll.svelte')
| -rw-r--r-- | src/lib/Tools/Schedule/Crunchyroll.svelte | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/src/lib/Tools/Schedule/Crunchyroll.svelte b/src/lib/Tools/Schedule/Crunchyroll.svelte deleted file mode 100644 index 9b6b0509..00000000 --- a/src/lib/Tools/Schedule/Crunchyroll.svelte +++ /dev/null @@ -1,100 +0,0 @@ -<script lang="ts"> - import crunchyroll from '$lib/Data/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};`}> - {#each Object.values(days) as day} - {@const date = new Date(day[0].year, day[0].month - 1, day[0].day)} - - <div class="card day"> - <details open class="details-unstyled"> - <summary> - {date.toLocaleString('default', { month: 'long' })} - {ordinalSuffix(day[0].day)}, {day[0].year} - </summary> - <ol> - {#each day as media} - <li>{media.title}</li> - {/each} - </ol> - </details> - </div> - - <p /> - {/each} - - <div class="card day"> - <details open class="details-unstyled"> - <summary>Coming soon</summary> - - <ol> - {#each soon as media} - <li>{media.title}</li> - {/each} - </ol> - </details> - </div> - - <p /> - - <div class="card day"> - <details open class="details-unstyled"> - <summary>Continuing from previous season</summary> - - <ol> - {#each continuing as media} - <li>{media.title}</li> - {/each} - </ol> - </details> - </div> -</div> - -<style> - .day { - overflow-y: auto; - break-inside: avoid; - page-break-inside: avoid; - } -</style> |