diff --git a/package-lock.json b/package-lock.json
index 7fe9a7f..7bf4e88 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,7 +11,8 @@
"@supabase/ssr": "^0.6.1",
"@supabase/supabase-js": "^2.50.0",
"@sveltejs/adapter-node": "^5.2.12",
- "googleapis": "^150.0.1"
+ "googleapis": "^150.0.1",
+ "papaparse": "^5.5.3"
},
"devDependencies": {
"@sveltejs/kit": "^2.16.0",
@@ -2497,6 +2498,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/papaparse": {
+ "version": "5.5.3",
+ "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.5.3.tgz",
+ "integrity": "sha512-5QvjGxYVjxO59MGU2lHVYpRWBBtKHnlIAcSe1uNFCkkptUh63NFRj0FJQm7nR67puEruUci/ZkjmEFrjCAyP4A==",
+ "license": "MIT"
+ },
"node_modules/path-parse": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
diff --git a/package.json b/package.json
index bb5447b..d856c29 100644
--- a/package.json
+++ b/package.json
@@ -32,6 +32,7 @@
"@supabase/ssr": "^0.6.1",
"@supabase/supabase-js": "^2.50.0",
"@sveltejs/adapter-node": "^5.2.12",
- "googleapis": "^150.0.1"
+ "googleapis": "^150.0.1",
+ "papaparse": "^5.5.3"
}
}
diff --git a/src/routes/private/creator/+page.server.ts b/src/routes/private/creator/+page.server.ts
new file mode 100644
index 0000000..f324d97
--- /dev/null
+++ b/src/routes/private/creator/+page.server.ts
@@ -0,0 +1,61 @@
+import type { Actions } from './$types';
+import { error as kitError } from '@sveltejs/kit';
+import Papa from 'papaparse';
+import { fail } from '@sveltejs/kit';
+
+export async function load({ locals }) {
+ console.log("▶️ fetching events…");
+
+ const { data: events, error } = await locals.supabase
+ .from('events')
+ .select('*')
+ .order('date', { ascending: true });
+
+ if (error) {
+ console.error('❌ supabase error:', error);
+ // optional: throw to render SvelteKit error page
+ throw kitError(500, 'Could not load events');
+ }
+
+ return { events };
+}
+
+export const actions = {
+ create: async (event) => {
+ const formData = await event.request.formData();
+ console.log(Array.from(formData.entries()));
+ console.log('create_event date', formData.get("date"), formData.get("name"), formData.get("description"));
+ let { data: new_event, error } = await event.locals.supabase.rpc("create_event",
+ {
+ "p_name": formData.get('name'),
+ "p_date": formData.get('date'),
+ "p_description": formData.get('description'),
+ });
+ return {
+ new_event,
+ error
+ }
+ },
+ participants: async (event) => {
+ const formData = await event.request.formData();
+ const file = formData.get('participants') as File;
+
+ let csvText = await file.text();
+
+ const { data: parsedRows, errors } = Papa.parse(csvText, {
+ skipEmptyLines: true,
+ header: false
+ });
+
+ // Map each row to an object with keys: name, surname, email
+ const participants = parsedRows.map((row: string[]) => ({
+ name: row[0],
+ surname: row[1],
+ email: row[2]
+ }));
+
+ return {
+ participants,
+ }
+ }
+} satisfies Actions;
\ No newline at end of file
diff --git a/src/routes/private/creator/+page.svelte b/src/routes/private/creator/+page.svelte
index 0489a10..83681d0 100644
--- a/src/routes/private/creator/+page.svelte
+++ b/src/routes/private/creator/+page.svelte
@@ -1,75 +1,67 @@
-{#if !authorized}
- You haven’t connected your Google account yet.
You haven’t connected your Google account yet.
+ +{JSON.stringify(events)}
+ + + +{JSON.stringify(new_event)}
\ No newline at end of file diff --git a/src/routes/private/creator/steps/StepOverview.svelte b/src/routes/private/creator/steps/StepOverview.svelte new file mode 100644 index 0000000..f961fb8 --- /dev/null +++ b/src/routes/private/creator/steps/StepOverview.svelte @@ -0,0 +1,11 @@ + + +New event:
+{JSON.stringify(new_event)} + + +Participants
+{JSON.stringify(participants)} \ No newline at end of file diff --git a/src/routes/private/creator/steps/StepUploadFiles.svelte b/src/routes/private/creator/steps/StepUploadFiles.svelte new file mode 100644 index 0000000..1858ed3 --- /dev/null +++ b/src/routes/private/creator/steps/StepUploadFiles.svelte @@ -0,0 +1,34 @@ + + + + +{JSON.stringify(participants)} + +{#if participants.length === 0} +No participants added yet.
+{/if} + +{#if participants.length > 0} +