diff --git a/src/lib/components/Line.svelte b/src/lib/components/Line.svelte index 84371275..6cfa65db 100644 --- a/src/lib/components/Line.svelte +++ b/src/lib/components/Line.svelte @@ -16,12 +16,12 @@ {#if external} 🔗 - {data.name} + {data.name} {:else if isFile} 📄 - {data.name} + {data.name} {:else} 📁 @@ -29,12 +29,12 @@ {data.name} {/if} - - {isFile && data.size ? data.size : '-'} + {isFile && data.size ? data.size : '-'} + diff --git a/src/lib/teachings.ts b/src/lib/teachings.ts index 095c1d40..140bbeab 100644 --- a/src/lib/teachings.ts +++ b/src/lib/teachings.ts @@ -2,6 +2,7 @@ export type Teaching = { name: string; url: string; telegram?: string; + optional?: boolean; }; export type TeachingYear = { diff --git a/src/routes/ListTeaching.svelte b/src/routes/ListTeaching.svelte new file mode 100644 index 00000000..62f8503e --- /dev/null +++ b/src/routes/ListTeaching.svelte @@ -0,0 +1,38 @@ + + + diff --git a/src/routes/dash/[course]/+page.svelte b/src/routes/dash/[course]/+page.svelte index f9c49dbe..bfdd92fd 100644 --- a/src/routes/dash/[course]/+page.svelte +++ b/src/routes/dash/[course]/+page.svelte @@ -3,11 +3,11 @@ import type { PageData } from './$types'; import { page } from '$app/stores'; import { onMount } from 'svelte'; - import type { Teaching } from '$lib/teachings'; + import type { Teaching, TeachingYear } from '$lib/teachings'; import { getLoginUrl, getWhoAmI } from '$lib/upld'; - + import ListTeaching from "../../ListTeaching.svelte"; + export let data: PageData; - let activeYears: Teaching[] = []; let login: @@ -16,9 +16,25 @@ onMount(async () => { activeYears = (await data.streaming?.activeCourses) ?? []; - login = getWhoAmI(fetch); }); + + + function filterCoursesOptional(data: PageData, currentIndex = 0, result: {mandatory: TeachingYear[], optional: TeachingYear[]} = { mandatory: [], optional: [] }) { + if (currentIndex >= data.course?.years.length!) { + return result; + } + + const year = data.course?.years[currentIndex]; + const optionalTeachings = year?.teachings.filter((teaching: Teaching) => teaching.optional); + const mandatoryTeachings = year?.teachings.filter((teaching: Teaching) => !teaching.optional); + result.mandatory.push({ year: year?.year!, teachings: mandatoryTeachings! }); + result.optional.push({ year: year?.year!, teachings: optionalTeachings! }); + return filterCoursesOptional(data, currentIndex + 1, result); + } + + $: filteredCourses = filterCoursesOptional(data) + @@ -50,38 +66,7 @@ ⬆️ - - + + {/if}