add round creation

This commit is contained in:
unurled 2025-07-06 14:56:26 +02:00
parent 9cc0ac3089
commit 764d0c0526
25 changed files with 356 additions and 27 deletions

View file

@ -3,7 +3,7 @@
import '../app.css';
import { setContext } from 'svelte';
import type { PageProps } from './$types';
import { Toaster } from '@/components/ui/sonner';
import { Toaster } from '$lib/components/ui/sonner';
let {
children,

View file

@ -1,4 +1,4 @@
import { getCompetitionsWithAll } from '@/server/db/schema/competitions';
import { getCompetitionsWithAll } from '$lib/server/db/schema/competitions';
import type { PageServerLoad } from './$types';
export const load: PageServerLoad = async ({ locals }) => {

View file

@ -16,7 +16,7 @@
import { Skeleton } from '$lib/components/ui/skeleton';
import type { PageProps } from './$types.js';
import { toast } from 'svelte-sonner';
import { formatDate } from '@/utils';
import { formatDate } from '$lib/utils';
const breadcrumbs: BreadcrumbItem[] = [
{

View file

@ -1,10 +1,13 @@
import { db } from '@/server/db';
import { db } from '$lib/server/db';
import type { Actions, PageServerLoad } from './$types';
import { competitions, getCompetitionWithAll } from '@/server/db/schema/competitions';
import { competitions, getCompetitionWithAll } from '$lib/server/db/schema/competitions';
import { error, redirect } from '@sveltejs/kit';
import { eq } from 'drizzle-orm';
import { and } from 'drizzle-orm';
import { teams } from '@/server/db/schema/teams';
import { teams } from '$lib/server/db/schema/teams';
import { superValidate } from 'sveltekit-superforms';
import { zod } from 'sveltekit-superforms/adapters';
import { formSchema } from '$lib/components/rounds/create-schema';
export const load: PageServerLoad = async ({ params, locals }) => {
try {
@ -21,7 +24,8 @@ export const load: PageServerLoad = async ({ params, locals }) => {
}
return {
competition: competition
competition: competition,
createForm: await superValidate(zod(formSchema))
};
} catch (e) {
return redirect(302, '/');

View file

@ -1,21 +1,22 @@
<script lang="ts">
import Badge from '@/components/ui/badge/badge.svelte';
import Badge from '$lib/components/ui/badge/badge.svelte';
import type { PageProps } from './$types';
import { CalendarDays, MapPin, Users, Trophy, Clock, Trash2Icon } from 'lucide-svelte';
import { formatDate } from '@/utils';
import Button from '@/components/ui/button/button.svelte';
import Card from '@/components/ui/card/card.svelte';
import CardHeader from '@/components/ui/card/card-header.svelte';
import CardContent from '@/components/ui/card/card-content.svelte';
import CardFooter from '@/components/ui/card/card-footer.svelte';
import Input from '@/components/ui/input/input.svelte';
import { formatDate } from '$lib/utils';
import Button from '$lib/components/ui/button/button.svelte';
import Card from '$lib/components/ui/card/card.svelte';
import CardHeader from '$lib/components/ui/card/card-header.svelte';
import CardContent from '$lib/components/ui/card/card-content.svelte';
import CardFooter from '$lib/components/ui/card/card-footer.svelte';
import Input from '$lib/components/ui/input/input.svelte';
import { enhance } from '$app/forms';
import Textarea from '@/components/ui/textarea/textarea.svelte';
import Tabs from '@/components/ui/tabs/tabs.svelte';
import TabsList from '@/components/ui/tabs/tabs-list.svelte';
import TabsTrigger from '@/components/ui/tabs/tabs-trigger.svelte';
import TabsContent from '@/components/ui/tabs/tabs-content.svelte';
import Textarea from '$lib/components/ui/textarea/textarea.svelte';
import Tabs from '$lib/components/ui/tabs/tabs.svelte';
import TabsList from '$lib/components/ui/tabs/tabs-list.svelte';
import TabsTrigger from '$lib/components/ui/tabs/tabs-trigger.svelte';
import TabsContent from '$lib/components/ui/tabs/tabs-content.svelte';
import { Svelvet } from 'svelvet';
import Rounds from '$lib/components/rounds/rounds.svelte';
let { data }: PageProps = $props();
@ -58,7 +59,7 @@
</div>
</div>
<Tabs value="general">
<Tabs value="rounds">
<TabsList>
<TabsTrigger value="general">General</TabsTrigger>
<TabsTrigger value="rounds">Rounds</TabsTrigger>
@ -165,7 +166,9 @@
</TabsContent>
<TabsContent value="rounds">
<Svelvet id="rounds-canvas" TD minimap controls locked></Svelvet>
{#if !data.competition.rounds || data.competition.rounds.length === 0}
<Rounds createForm={data.createForm} rounds={data.competition.rounds} />
{/if}
</TabsContent>
</Tabs>
</div>