You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.5 KiB
Svelte
53 lines
1.5 KiB
Svelte
<script lang="ts">
|
|
type GroupItem = {
|
|
id: string;
|
|
name: string | null;
|
|
counts: { open: number; unassigned: number };
|
|
};
|
|
type TaskItem = {
|
|
id: number;
|
|
description: string;
|
|
due_date: string | null;
|
|
display_code: number | null;
|
|
};
|
|
|
|
export let data: { groups: GroupItem[]; previews?: Record<string, TaskItem[]> };
|
|
const groups = data.groups || [];
|
|
const previews = data.previews || {};
|
|
</script>
|
|
|
|
<svelte:head>
|
|
<title>Grupos</title>
|
|
<meta name="robots" content="noindex,nofollow" />
|
|
</svelte:head>
|
|
|
|
{#if groups.length === 0}
|
|
<p>No perteneces a ningún grupo permitido.</p>
|
|
{:else}
|
|
<h1>Grupos</h1>
|
|
<ul>
|
|
{#each groups as g}
|
|
<li>
|
|
<strong>{g.name ?? g.id}</strong>
|
|
<small style="margin-left:8px;color:#555">(abiertas: {g.counts.open}, sin responsable: {g.counts.unassigned})</small>
|
|
|
|
{#if previews[g.id]?.length}
|
|
<div style="margin-top:6px; padding:6px 8px; background:#f6f6f6; border-radius:6px;">
|
|
<em style="color:#333;">Sin responsable (hasta 3):</em>
|
|
<ul style="margin:6px 0 0 16px;">
|
|
{#each previews[g.id] as t}
|
|
<li>
|
|
<span>#{t.display_code ?? t.id} — {t.description}</span>
|
|
{#if t.due_date}
|
|
<small> (vence: {t.due_date})</small>
|
|
{/if}
|
|
</li>
|
|
{/each}
|
|
</ul>
|
|
</div>
|
|
{/if}
|
|
</li>
|
|
{/each}
|
|
</ul>
|
|
{/if}
|