ui update, added vertical view

This commit is contained in:
relaxed 2024-09-01 23:46:03 +05:00
parent 33a011d723
commit 154d0c81bf
7 changed files with 241 additions and 87 deletions

View file

@ -7,7 +7,7 @@
</script>
<div
class="absolute top-0 w-full h-screen z-10 py-4
class="fixed top-0 w-full h-screen z-10 py-4
max-w-full max-h-full
flex justify-center items-center
backdrop-blur-sm

49
src/lib/Horizontal.svelte Normal file
View file

@ -0,0 +1,49 @@
<script>
import Pair from "./Pair.svelte";
export let rasp_data = [];
export let is_rasp_data_loading = false;
export let is_rasp_cache_loaded = false;
export let is_rasp_data_loaded = false;
</script>
{#each rasp_data as day, i}
<div id={`${i}`} class="p-2 min-w-[300px]">
<div
class="flex p-2 mb-2
border-[1px] border-[var(--w-border)] dark:border-[var(--b-border)]
text-[var(--w-text)] dark:text-[var(--b-text)]
{day.isCurrentDate === 1 ? 'bg-[var(--w-red)] dark:bg-[var(--b-red)]' : ''}"
>
<h1>
<pre>{day.date} - {day.weekDay}</pre>
</h1>
</div>
<div class="relative z-0 h-[calc(100svh-192px)]">
<div
class="h-full w-full z-0 absolute overflow-y-auto overflow-x-hidden
flex flex-col justify-start items-center
"
>
{#if day.pairs.every((p) => p.schedulePairs.length === 0)}
<div
class="w-full p-2
border-[1px] rounded-[8px] border-[var(--w-border)] dark:border-[var(--b-border)]
"
>
{#if !is_rasp_data_loading && !is_rasp_cache_loaded && !is_rasp_data_loaded}
Ошибка получения данных попробуйте позже
{:else if is_rasp_data_loading}
Загрузка ....
{:else if is_rasp_data_loaded || is_rasp_cache_loaded}
have a good day
{/if}
</div>
{:else}
{#each day.pairs as pairs}
<Pair {pairs}></Pair>
{/each}
{/if}
</div>
</div>
</div>
{/each}

View file

@ -1,5 +1,44 @@
<script>
export let pairs;
/** @typedef Normalized
* @property {string} name
* @property {string} aud
* @property {Array<string>} groups
* @property {Array<string>} teachers
*/
/**
* @param {Object} pairs_list
* @returns {Array<Normalized>}
*/
function normalize_many_pairs(pairs_list) {
/** @type {Object<string, Normalized>} */
let normalized = {};
pairs_list.schedulePairs.forEach((pair) => {
const name = `${pair.subject} ${pair.aud}`;
if (name in normalized) {
if (!normalized[name].teachers.includes(pair.teacher)) {
normalized[name].teachers.push(pair.teacher);
}
if (!normalized[name].groups.includes(pair.group)) {
normalized[name].groups.push(pair.group);
}
} else {
normalized[name] = {
name: pair.subject,
aud: pair.aud,
groups: [pair.group],
teachers: [pair.teacher],
};
}
});
/** @type {Array<Normalized>} */
const normalized_array = Object.entries(normalized).map((el) => el[1]);
return normalized_array;
}
</script>
{#if pairs.schedulePairs.length === 1}
@ -21,55 +60,64 @@
{pairs.schedulePairs[0].subject}
</h1>
<h1>
aud: {pairs.schedulePairs[0].aud}
{pairs.schedulePairs[0].aud}
<a
target="_blank"
href="https://www.usue.ru/raspisanie/getteams/?prepod={pairs
.schedulePairs[0].teacher}"
class="underline"
>
{pairs.schedulePairs[0].teacher}
</a>
</h1>
<a
target="_blank"
href="https://www.usue.ru/raspisanie/getteams/?prepod={pairs
.schedulePairs[0].teacher}"
class="underline"
>
{pairs.schedulePairs[0].teacher}
</a>
<h1>
{pairs.schedulePairs[0].group}
</h1>
</div>
</div>
{:else if pairs.schedulePairs.length > 1}
{@const end_index = pairs.schedulePairs.length - 1}
{@const normalized = normalize_many_pairs(pairs)}
{@const end_index = normalized.length - 1}
<div
class="w-full m-2
border-[1px] rounded-xl border-[var(--w-border)] dark:border-[var(--b-border)]
{pairs.isCurrentPair ? 'bg-[var(--w-blue)] dark:bg-[var(--b-blue)]' : ''}
"
{pairs.isCurrentPair ? 'bg-[var(--w-blue)] dark:bg-[var(--b-blue)]' : ''}"
>
<div class="border-b-2 border-[var(--border)]">
<h1 class="m-2 mb-1">
{pairs.N}) {pairs.time.replace("-", " - ")}
</h1>
</div>
{#each pairs.schedulePairs as pair, i}
{#each normalized as pair, i}
<div
class="p-2
{i === end_index ? '' : 'border-b-[1px] border-[var(--border)]'}"
>
<h1>
{pair.subject}
{pair.name}
</h1>
<h1>
aud: {pair.aud}
</h1>
<a
target="_blank"
href="https://www.usue.ru/raspisanie/getteams/?prepod={pair.teacher}"
class="underline"
>
{pair.teacher}
</a>
<h1>
{pair.group}
Ауд: {pair.aud}
</h1>
<div class="flex flex-col">
{#each pair.teachers as teacher}
<a
target="_blank"
href="https://www.usue.ru/raspisanie/getteams/?prepod={teacher}"
class="underline w-fit"
>
{teacher}
</a>
{/each}
</div>
<div class="flex flex-col">
{#each pair.groups as group}
<h1>
{group}
</h1>
{/each}
</div>
</div>
{/each}
</div>

46
src/lib/Vertical.svelte Normal file
View file

@ -0,0 +1,46 @@
<script>
import Pair from "./Pair.svelte";
export let rasp_data = [];
export let is_rasp_data_loading = false;
export let is_rasp_cache_loaded = false;
export let is_rasp_data_loaded = false;
</script>
{#each rasp_data as day, i}
<div id={`${i}`} class="p-2 min-w-[300px] max-w-[1000px]">
<div
class="flex p-2 mb-2 w-fit
border-[1px] border-[var(--w-border)] dark:border-[var(--b-border)]
text-[var(--w-text)] dark:text-[var(--b-text)]
{day.isCurrentDate === 1 ? 'bg-[var(--w-red)] dark:bg-[var(--b-red)]' : ''}"
>
<h1>
<pre>{day.date} - {day.weekDay}</pre>
</h1>
</div>
<div class="z-0 min-h-[24px] max-h-none h-auto">
<div
class="h-auto w-full z-0 flex flex-col justify-start items-center"
>
{#if day.pairs.every((p) => p.schedulePairs.length === 0)}
<div
class="w-full p-2
border-[1px] rounded-[8px] border-[var(--w-border)] dark:border-[var(--b-border)]"
>
{#if !is_rasp_data_loading && !is_rasp_cache_loaded && !is_rasp_data_loaded}
Ошибка получения данных попробуйте позже
{:else if is_rasp_data_loading}
Загрузка ....
{:else if is_rasp_data_loaded || is_rasp_cache_loaded}
have a good day
{/if}
</div>
{:else}
{#each day.pairs as pairs}
<Pair {pairs}></Pair>
{/each}
{/if}
</div>
</div>
</div>
{/each}