diff options
| author | Fuwn <[email protected]> | 2024-02-06 22:44:38 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-02-06 22:44:38 -0800 |
| commit | 945a4fc0ac4be8763666edbd0f407c9b6377121c (patch) | |
| tree | e1d6b30397785f46ee7851bb30cdf6552d6d4171 | |
| parent | feat(title): only show furigana if unique (diff) | |
| download | due.moe-945a4fc0ac4be8763666edbd0f407c9b6377121c.tar.xz due.moe-945a4fc0ac4be8763666edbd0f407c9b6377121c.zip | |
feat(schedule): use global subsplease and modify
| -rw-r--r-- | src/lib/Data/subtitles.json | 10 | ||||
| -rw-r--r-- | src/routes/+layout.svelte | 20 | ||||
| -rw-r--r-- | src/routes/schedule/+page.svelte | 72 |
3 files changed, 56 insertions, 46 deletions
diff --git a/src/lib/Data/subtitles.json b/src/lib/Data/subtitles.json new file mode 100644 index 00000000..8bb27612 --- /dev/null +++ b/src/lib/Data/subtitles.json @@ -0,0 +1,10 @@ +{ + "Friday": [ + { + "title": "Undead Unluck", + "image_url": null, + "page": null, + "time": "11:00" + } + ] +} diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index dd9533fe..e8fb9f9b 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -22,6 +22,7 @@ import subsPlease from '$stores/subsPlease'; import Dropdown from '$lib/Dropdown.svelte'; import { injectSpeedInsights } from '@vercel/speed-insights/sveltekit'; + import subtitles from '$lib/Data/subtitles.json'; injectSpeedInsights(); @@ -76,10 +77,25 @@ }); $: { - if ((data.url === '/' || data.url === '/completed') && !$subsPlease) + if ((data.url === '/' || data.url === '/completed' || data.url === '/schedule') && !$subsPlease) fetch(root(`/api/subsplease?tz=${Intl.DateTimeFormat().resolvedOptions().timeZone}`)) .then((r) => r.json()) - .then((r) => subsPlease.set(r)); + .then((r) => { + for (const day in subtitles) { + if (!r.schedule[day]) r.schedule[day] = []; + + subtitles[day as keyof typeof subtitles].forEach((episode: any) => { + r.schedule[day].push({ + title: episode.title, + page: episode.page || '', + image_url: episode.image_url || '', + time: episode.time + }); + }); + } + + subsPlease.set(r); + }); } </script> diff --git a/src/routes/schedule/+page.svelte b/src/routes/schedule/+page.svelte index edc82261..f057751a 100644 --- a/src/routes/schedule/+page.svelte +++ b/src/routes/schedule/+page.svelte @@ -1,6 +1,5 @@ <script lang="ts"> import Error from '$lib/Error/RateLimited.svelte'; - import type { SubsPlease } from '$lib/Media/Anime/Airing/Subtitled/subsPlease'; import { onMount } from 'svelte'; import { parseOrDefault } from '$lib/Utility/parameters'; import { browser } from '$app/environment'; @@ -12,30 +11,23 @@ import '$lib/Schedule/container.css'; import Days from '$lib/Schedule/Days.svelte'; import settings from '$stores/settings'; - import root from '$lib/Utility/root'; import Skeleton from '$lib/Loading/Skeleton.svelte'; import Message from '$lib/Loading/Message.svelte'; + import subsPlease from '$stores/subsPlease'; - let subsPleasePromise: Promise<SubsPlease>; let scheduledMediaPromise: Promise<Partial<Media[]>>; const urlParameters = browser ? new URLSearchParams(window.location.search) : null; - let timeZone = parseOrDefault( - urlParameters, - 'tz', - Intl.DateTimeFormat().resolvedOptions().timeZone - ); let crunchyrollExpanded = false; let forceListMode = parseOrDefault(urlParameters, 'list', false); onMount(async () => { - subsPleasePromise = fetch(root(`/api/subsplease?tz=${timeZone}`)).then((r) => r.json()); scheduledMediaPromise = scheduleMediaListCollection(new Date().getFullYear(), season(), true); }); </script> <HeadTitle route="Schedule" path="/schedule" /> -<blockquote> +<!-- <blockquote> <select bind:value={timeZone} on:change={() => @@ -47,7 +39,7 @@ </option> {/each} </select> -</blockquote> +</blockquote> --> <details bind:open={crunchyrollExpanded}> <summary> @@ -61,42 +53,34 @@ <p /> -{#await subsPleasePromise} +{#if !$subsPlease} <Message message="Loading subtitle schedule ..." /> <Skeleton grid={true} count={7} height="15em" width="49.5%" /> -{:then subsPlease} - {#if subsPlease} - {#await scheduledMediaPromise} - <Message message="Loading schedule ..." /> - - <Skeleton grid={true} count={7} height="15em" width="49.5%" /> - {:then scheduledMedia} - {#if scheduledMedia} - {@const columnCount = Math.ceil(Object.keys(subsPlease.schedule).length / 2)} +{:else} + {#await scheduledMediaPromise} + <Message message="Loading schedule ..." /> - <div - class="list-container" - id="schedule" - style={`column-count: ${ - columnCount / ($settings.displayScheduleListMode || forceListMode ? 1 : 2) - }`} - > - <Days {subsPlease} {scheduledMedia} {forceListMode} /> - </div> - {:else} - <Message message="Loading schedule ..." /> + <Skeleton grid={true} count={7} height="15em" width="49.5%" /> + {:then scheduledMedia} + {#if scheduledMedia} + {@const columnCount = Math.ceil(Object.keys($subsPlease.schedule).length / 2)} - <Skeleton grid={true} count={7} height="15em" width="49.5%" /> - {/if} - {:catch} - <Error type="Media" loginSessionError={false} card list={false} /> - {/await} - {:else} - <Message message="Loading subtitle schedule ..." /> + <div + class="list-container" + id="schedule" + style={`column-count: ${ + columnCount / ($settings.displayScheduleListMode || forceListMode ? 1 : 2) + }`} + > + <Days subsPlease={$subsPlease} {scheduledMedia} {forceListMode} /> + </div> + {:else} + <Message message="Loading schedule ..." /> - <Skeleton grid={true} count={7} height="15em" width="49.5%" /> - {/if} -{:catch} - <Error type="Schedule" loginSessionError={false} card list={false} /> -{/await} + <Skeleton grid={true} count={7} height="15em" width="49.5%" /> + {/if} + {:catch} + <Error type="Media" loginSessionError={false} card list={false} /> + {/await} +{/if} |