aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-12-03 20:43:47 -0800
committerFuwn <[email protected]>2023-12-03 20:43:47 -0800
commitb849c7a2a989eb9921ac800b0554e64a40c1ec4f (patch)
treea39de57ac24217cbb533c3f1546a45cf0fa946a7
parentfix(birthdays): use months day count (diff)
downloaddue.moe-b849c7a2a989eb9921ac800b0554e64a40c1ec4f.tar.xz
due.moe-b849c7a2a989eb9921ac800b0554e64a40c1ec4f.zip
feat(birthdays): reactive url
-rw-r--r--src/lib/Tools/CharacterBirthdays.svelte26
-rw-r--r--vite.config.ts.timestamp-1701664325117-599a7042bac108.mjs13
2 files changed, 36 insertions, 3 deletions
diff --git a/src/lib/Tools/CharacterBirthdays.svelte b/src/lib/Tools/CharacterBirthdays.svelte
index 30f00405..f910f7c4 100644
--- a/src/lib/Tools/CharacterBirthdays.svelte
+++ b/src/lib/Tools/CharacterBirthdays.svelte
@@ -1,8 +1,9 @@
<script lang="ts">
+ import { browser } from '$app/environment';
+ import { page } from '$app/stores';
import { ACDBBirthdays, type ACDBBirthday } from '$lib/Birthday/ACDB';
import { aniSearchBirthdays, type aniSearchBirthday } from '$lib/Birthday/aniSearch';
import Error from '$lib/Error.svelte';
- import { onMount } from 'svelte';
interface Birthday {
name: string;
@@ -10,13 +11,32 @@
origin?: string;
}
+ const parseOrDefault = (parameter: string, fallback: number): number =>
+ browser && urlParameters?.size !== 0
+ ? parseInt(urlParameters?.get(parameter) || '', 10) || fallback
+ : fallback;
+
+ const urlParameters = browser ? new URLSearchParams(window.location.search) : null;
let date = new Date();
- let month = date.getMonth() + 1;
- let day = date.getDate();
+ let month = parseOrDefault('month', date.getMonth() + 1);
+ let day = parseOrDefault('day', date.getDate());
let anisearchBirthdays: Promise<aniSearchBirthday[]>;
let acdbBirthdays: Promise<ACDBBirthday[]>;
$: {
+ month = Math.min(month, 12);
+ month = Math.max(month, 1);
+ day = Math.min(day, new Date(0, month, 0).getDate());
+ day = Math.max(day, 1);
+
+ if (browser) {
+ $page.url.searchParams.set('month', month.toString());
+ $page.url.searchParams.set('day', day.toString());
+ history.replaceState(null, '', `?${$page.url.searchParams.toString()}`);
+ }
+ }
+
+ $: {
anisearchBirthdays = aniSearchBirthdays(month, day);
acdbBirthdays = ACDBBirthdays(month, day);
}
diff --git a/vite.config.ts.timestamp-1701664325117-599a7042bac108.mjs b/vite.config.ts.timestamp-1701664325117-599a7042bac108.mjs
new file mode 100644
index 00000000..4caef3fd
--- /dev/null
+++ b/vite.config.ts.timestamp-1701664325117-599a7042bac108.mjs
@@ -0,0 +1,13 @@
+// vite.config.ts
+import { sveltekit } from "file:///home/fuwn/Documents/Code/Git/Fuwn/due.moe/node_modules/@sveltejs/kit/src/exports/vite/index.js";
+import { defineConfig } from "file:///home/fuwn/Documents/Code/Git/Fuwn/due.moe/node_modules/vite/dist/node/index.js";
+var vite_config_default = defineConfig({
+ plugins: [
+ sveltekit()
+ /* webSocketServer */
+ ]
+});
+export {
+ vite_config_default as default
+};
+//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCIvaG9tZS9mdXduL0RvY3VtZW50cy9Db2RlL0dpdC9GdXduL2R1ZS5tb2VcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIi9ob21lL2Z1d24vRG9jdW1lbnRzL0NvZGUvR2l0L0Z1d24vZHVlLm1vZS92aXRlLmNvbmZpZy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vaG9tZS9mdXduL0RvY3VtZW50cy9Db2RlL0dpdC9GdXduL2R1ZS5tb2Uvdml0ZS5jb25maWcudHNcIjtpbXBvcnQgeyBzdmVsdGVraXQgfSBmcm9tICdAc3ZlbHRlanMva2l0L3ZpdGUnO1xuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSAndml0ZSc7XG4vLyBpbXBvcnQgeyB3ZWJTb2NrZXRTZXJ2ZXIgfSBmcm9tICckbGliL3dlYnNvY2tldCc7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZyh7XG5cdHBsdWdpbnM6IFtzdmVsdGVraXQoKSAvKiB3ZWJTb2NrZXRTZXJ2ZXIgKi9dXG59KTtcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBZ1QsU0FBUyxpQkFBaUI7QUFDMVUsU0FBUyxvQkFBb0I7QUFHN0IsSUFBTyxzQkFBUSxhQUFhO0FBQUEsRUFDM0IsU0FBUztBQUFBLElBQUMsVUFBVTtBQUFBO0FBQUEsRUFBdUI7QUFDNUMsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K