diff --git a/src/lib/components/NavigateBackButton.svelte b/src/lib/components/NavigateBackButton.svelte index 64a40fd..f9d77be 100644 --- a/src/lib/components/NavigateBackButton.svelte +++ b/src/lib/components/NavigateBackButton.svelte @@ -1,3 +1,8 @@ - + + +
+ +
diff --git a/src/routes/[id]/+layout.svelte b/src/routes/[id]/+layout.svelte deleted file mode 100644 index 8f6fd09..0000000 --- a/src/routes/[id]/+layout.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - -
- -
- -{@render children()} diff --git a/src/routes/[id]/+page.svelte b/src/routes/[id]/+page.svelte index 1b506e7..17afe9b 100644 --- a/src/routes/[id]/+page.svelte +++ b/src/routes/[id]/+page.svelte @@ -1,12 +1,17 @@ +
+ +
+

{data.habit?.name}

Created:

@@ -19,7 +24,8 @@

-
+
+ Show Values
diff --git a/src/routes/[id]/values/+page.server.ts b/src/routes/[id]/values/+page.server.ts new file mode 100644 index 0000000..a1a2380 --- /dev/null +++ b/src/routes/[id]/values/+page.server.ts @@ -0,0 +1,52 @@ +import { getHabitForUser, updateDates } from '$lib/server/habit'; +import { redirect } from '@sveltejs/kit'; +import type { PageServerLoad } from './$types'; +import type { Actions } from '../$types'; +import { Prisma } from '@prisma/client'; + +export const load: PageServerLoad = async (event) => { + if (!event.locals.user) { + return redirect(302, '/'); + } + + const habit = await getHabitForUser(event.params.id, event.locals.user.id); + + if (habit === null) { + return redirect(302, '/'); + } + + return { habit: habit }; +}; + +export const actions: Actions = { + delete: async (event) => { + if (!event.locals.user) { + return redirect(302, '/'); + } + + let habit = await getHabitForUser(event.params.id, event.locals.user.id); + + if (habit === null) { + return redirect(302, '/'); + } + + const formData = await event.request.formData(); + const date = formData.get('date') as string; + + if (!date) { + return redirect(302, `/${event.params.id}/values`); + } + + if (habit && habit.dates && typeof habit.dates === 'object' && Array.isArray(habit.dates)) { + const dates = habit.dates as Prisma.JsonArray; + const indexOfDate = dates.indexOf(date); + + if (indexOfDate !== -1) { + dates.splice(indexOfDate, 1); + habit = await updateDates(event.params.id, event.locals.user.id, dates as string[]); + } + } + + redirect(302, `/${event.params.id}/values`); + } +}; diff --git a/src/routes/[id]/values/+page.svelte b/src/routes/[id]/values/+page.svelte new file mode 100644 index 0000000..54b64de --- /dev/null +++ b/src/routes/[id]/values/+page.svelte @@ -0,0 +1,36 @@ + + +
+ +
+ +

{data.habit?.name}

+
+ + + + + + + + + {#each data.habit?.dates as date} + + + + + {/each} + +
DateAction
{date} +
+ + +
+
+
diff --git a/src/routes/create/+layout.svelte b/src/routes/create/+layout.svelte index 9427384..8f6fd09 100644 --- a/src/routes/create/+layout.svelte +++ b/src/routes/create/+layout.svelte @@ -3,10 +3,8 @@ let { children } = $props(); -
-
- -
- - {@render children()} +
+
+ +{@render children()}