diff --git a/README.md b/README.md
index 5c91169..cbcc34c 100644
--- a/README.md
+++ b/README.md
@@ -1,38 +1,7 @@
-# create-svelte
-
-Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte).
-
-## Creating a project
-
-If you're seeing this, you've probably already done this step. Congrats!
-
-```bash
-# create a new project in the current directory
-npm create svelte@latest
-
-# create a new project in my-app
-npm create svelte@latest my-app
-```
-
-## Developing
-
-Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
-
-```bash
-npm run dev
-
-# or start the server and open the app in a new browser tab
-npm run dev -- --open
-```
-
-## Building
-
-To create a production version of your app:
-
-```bash
-npm run build
-```
-
-You can preview the production build with `npm run preview`.
-
-> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment.
+```mermaid
+ graph TD;
+ A-->B;
+ A-->C;
+ B-->D;
+ C-->D;
+```
\ No newline at end of file
diff --git a/src/lib/components/AddEvent.svelte b/src/lib/components/AddEvent.svelte
index 29649e2..1c9632a 100644
--- a/src/lib/components/AddEvent.svelte
+++ b/src/lib/components/AddEvent.svelte
@@ -9,7 +9,7 @@
Neues Event
-
\ No newline at end of file
diff --git a/src/lib/components/AddSponsor.svelte b/src/lib/components/AddSponsor.svelte
new file mode 100644
index 0000000..f8f6e41
--- /dev/null
+++ b/src/lib/components/AddSponsor.svelte
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/src/lib/components/AddTeam.svelte b/src/lib/components/AddTeam.svelte
index 6674309..040d0ed 100644
--- a/src/lib/components/AddTeam.svelte
+++ b/src/lib/components/AddTeam.svelte
@@ -1,67 +1,28 @@
-
diff --git a/src/lib/components/AdminSidebar.svelte b/src/lib/components/AdminSidebar.svelte
index db31c2f..1b30ea7 100644
--- a/src/lib/components/AdminSidebar.svelte
+++ b/src/lib/components/AdminSidebar.svelte
@@ -2,7 +2,6 @@
import MenuLinks from "./MenuLinks.svelte";
import Logo from './Logo.svelte'
-
-
-
{time}
+
{date} - {time}
diff --git a/src/lib/components/SponsorOverview.svelte b/src/lib/components/SponsorOverview.svelte
new file mode 100644
index 0000000..3a525a9
--- /dev/null
+++ b/src/lib/components/SponsorOverview.svelte
@@ -0,0 +1,4 @@
+
+
Unsere Sponsoren
+
+
\ No newline at end of file
diff --git a/src/lib/components/forms/AutoCompleteInput.svelte b/src/lib/components/forms/AutoCompleteInput.svelte
index afd635a..f7549de 100644
--- a/src/lib/components/forms/AutoCompleteInput.svelte
+++ b/src/lib/components/forms/AutoCompleteInput.svelte
@@ -22,10 +22,10 @@
let storageArr = [];
// only shows events when input is not empty
- if (inputValue) {
+ if (value) {
data.forEach((element) => {
// switch to includes when it should match by search
- if (element.toLowerCase().startsWith(inputValue.toLowerCase())) {
+ if (element.toLowerCase().startsWith(value.toLowerCase())) {
storageArr = [...storageArr, makeMatchBold(element)];
}
});
@@ -34,29 +34,23 @@
};
let searchInput;
- let inputValue = '';
+
- $: if (!inputValue) {
+ $: if (!value) {
filteredElements = [];
hiLiteIndex = null;
}
- const clearInput = () => {
- inputValue = '';
- searchInput.focus();
- };
-
const setInputVal = (elementName) => {
- inputValue = removeBold(elementName);
+ value = removeBold(elementName);
filteredElements = [];
hiLiteIndex = null;
- value = inputValue;
document.querySelector('#element-input').focus();
};
const makeMatchBold = (str) => {
// replace part of (country name === inputValue) with strong tags
- let matched = str.substring(0, inputValue.length);
+ let matched = str.substring(0, value.length);
let makeBold = `${matched} `;
let boldedMatch = str.replace(matched, makeBold);
return boldedMatch;
@@ -94,8 +88,9 @@
id="element-input"
{name}
type="text"
+ {placeholder}
bind:this={searchInput}
- bind:value={inputValue}
+ bind:value={value}
on:change={handleInput}
on:input={filterElements}
on:submit={handleInput}
diff --git a/src/lib/components/forms/Input.svelte b/src/lib/components/forms/Input.svelte
index ff68ef5..cdf7563 100644
--- a/src/lib/components/forms/Input.svelte
+++ b/src/lib/components/forms/Input.svelte
@@ -10,7 +10,7 @@
export let type = "";
export let id = "";
export let data = [];
-
+ export let accept= "";
let iconPadding = iconPath !== '' ? "iconExists" : "noIconExists" ;
let normalOrRadio = type === "radio" ? "radio" : "input";
@@ -38,8 +38,8 @@
{:else if type === 'time'}
-
+ {:else if type === 'file'}
+
{:else if type === 'radio'}
@@ -49,6 +49,8 @@
Divers
+ {:else if type === "submit"}
+
{:else}
{/if}
@@ -112,4 +114,18 @@
:global(.noIconExists input) {
padding: 6px 3px 6px 10px;
}
+ input[type='file']::file-selector-button {
+ margin-right: 20px;
+ border: none;
+ background: #084cdf;
+ padding: 10px 20px;
+ border-radius: 10px;
+ color: #fff;
+ cursor: pointer;
+ transition: background 0.2s ease-in-out;
+ }
+
+ input[type='file']::file-selector-button:hover {
+ background: #0d45a5;
+ }
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 3a5716a..b0e3cc8 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -42,10 +42,13 @@
}
.mainPage {
width: 100%;
+ margin-left: 20%;
}
.adminsidebar-Wrapper {
width: 20%;
height: 100vh;
+ position: fixed;
+
}
@media (max-width: 768px) {
diff --git a/src/routes/account/+page.server.ts b/src/routes/account/+page.server.ts
index 0ae8d5a..7e79363 100644
--- a/src/routes/account/+page.server.ts
+++ b/src/routes/account/+page.server.ts
@@ -1,25 +1,36 @@
import { fail, redirect } from '@sveltejs/kit';
-
+import path from 'path'
+import fs from 'fs/promises'
import type { Actions, PageServerLoad } from './$types';
import { AuthApiError } from "@supabase/supabase-js";
import { supabase as superClient } from '$lib/supabase';
let teamsById;
+let ownTeam;
export const load = (async ({ locals: { supabase, getSession } }) => {
const session = await getSession();
-
+
if (!session) {
throw redirect(303, '/');
}
const { data: teamData, error } = await superClient
- .from('teams')
- .select('name, id');
+ .from('teams')
+ .select('name, id');
teamsById = teamData.reduce((teamArray, team) => {
teamArray[team.id] = team.name;
return teamArray;
}, {})
+ const { data: userData, error: userError } = await superClient
+ .from('user')
+ .select('id, team_id, teams( name )',)
+ .eq('id', session.user.id);
+ if (userData) {
+ ownTeam = userData.map((user) => user.teams);
+ ownTeam = ownTeam.map((team) => team.name)[0];
+ }
- return { teamData: teamsById};
+
+ return { teamData: teamsById, ownTeam};
}) satisfies PageServerLoad;
export const actions = {
@@ -29,15 +40,15 @@ export const actions = {
function isAuthenticated() {
const user = superClient.auth.getUser();
return user !== null;
- }
-
- // Example usage
- if (isAuthenticated()) {
+ }
+
+ // Example usage
+ if (isAuthenticated()) {
console.log('User is authenticated');
- } else {
+ } else {
console.log('User is not authenticated');
- }
-
+ }
+
console.log("update")
const session = await getSession();
const body = Object.fromEntries(await request.formData())
@@ -67,26 +78,57 @@ export const actions = {
console.log("selected teams")
console.log(teamData.map((team) => team.name)) */
- const {data : fetchBack, error } = await supabase
- .from('user')
- .update({ team_id: teamID})
- .eq('id', session.user.id);
- if(fetchBack){
+ const { data: fetchBack, error } = await supabase
+ .from('user')
+ .update({ team_id: teamID })
+ .eq('id', session.user.id);
+ if (fetchBack) {
console.log("user id queried")
}
-
- if(error){
+
+ if (error) {
console.log(error.hint)
console.log(error.message)
console.log(error.code)
}
-
+
},
createTeam: async ({ request, locals: { supabase, getSession } }) => {
console.log("Team wird erstellt...")
const body = Object.fromEntries(await request.formData())
-
+ let url = "";
+ if (body.teamLogoPath instanceof File) {
+ const fileExt = body.teamLogoPath.name.split('.').pop();
+ url = crypto.randomUUID() + "." + fileExt
+ console.log("fullurl: ", url)
+ }
+
+ const { data: createdTeam, error } = await superClient
+ .from("teams")
+ .insert({ name: body.teamName, logo_link: url, meta_league_id: 1, league_id: 1 })
+ .select()
+ if (error) {
+ console.log("Error happened: ", error.message)
+ console.log(error.details)
+ }
+ if (createdTeam) {
+ console.log("created Team")
+ console.log(createdTeam[0])
+ console.log(createdTeam[0].id)
+
+ console.log("All details to Image")
+ console.log(body.teamLogoPath)
+ if (body.teamLogoPath instanceof File) {
+ let { error: imageError } = await supabase.storage.from('clubs').upload(createdTeam[0].id + "/logo/" + url, body.teamLogoPath);
+ if (imageError) {
+ console.log("Error at image upload")
+ console.log(imageError)
+ }
+ }
+
+
+ }
},
logout: async ({ locals: { supabase, getSession } }) => {
const session = await getSession();
diff --git a/src/routes/account/+page.svelte b/src/routes/account/+page.svelte
index 100724d..a914efe 100644
--- a/src/routes/account/+page.svelte
+++ b/src/routes/account/+page.svelte
@@ -7,11 +7,10 @@
import Input from '$lib/components/forms/Input.svelte';
export let data: PageData;
import AddTeam from '$lib/components/AddTeam.svelte';
- let teamName = '';
+ let teamName = data.ownTeam;
let teamNotFound = false;
let teamArr = Object.values(data.teamData);
- /* console.log("Daten:")
- console.log(data.teamData) */
+
//https://dev.to/theether0/sveltekit-changes-form-actions-and-progressive-enhancement-31h9
async function submitValue(event) {
@@ -36,7 +35,6 @@
} else if (teamName) {
console.log(`${teamName} is submitted!`);
console.log(Object.keys(data.teamData).find((id) => data.teamData[id] === teamName));
- setTimeout((teamName = ''), 1000);
teamNotFound = false;
}
}
@@ -58,8 +56,9 @@
bind:value={teamName}
bind:data={teamArr}
iconPath="team.svg"
+ placeholder="Test"
/>
-
+
{#if teamNotFound}
Das Teamn wurde nicht gefunden.
diff --git a/src/routes/dashboard/+page.svelte b/src/routes/dashboard/+page.svelte
index 27e0e13..605619f 100644
--- a/src/routes/dashboard/+page.svelte
+++ b/src/routes/dashboard/+page.svelte
@@ -2,6 +2,8 @@
import EventsOverview from '$lib/components/EventsOverview.svelte';
import type { PageData } from './$types';
import AddEvent from '$lib/components/AddEvent.svelte';
+ import SponsorOverview from '$lib/components/SponsorOverview.svelte';
+ import AddSponsor from '$lib/components/AddSponsor.svelte';
export let data: PageData;
let userTeam = data.ownTeam;
@@ -17,6 +19,8 @@