ui update, added vertical view
This commit is contained in:
parent
33a011d723
commit
154d0c81bf
7 changed files with 241 additions and 87 deletions
|
@ -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
49
src/lib/Horizontal.svelte
Normal 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}
|
|
@ -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
46
src/lib/Vertical.svelte
Normal 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}
|
Loading…
Add table
Add a link
Reference in a new issue