Add a new page to list repos and submissions

This commit is contained in:
nemunaire 2022-09-09 20:14:38 +02:00
commit 6323d96b60
12 changed files with 167 additions and 33 deletions

View file

@ -37,6 +37,7 @@
{#await work then w}
{#if $user && $user.is_admin}
<button class="btn btn-primary ms-1 float-end" on:click={() => { edit = !edit; } } title="Éditer"><i class="bi bi-pencil"></i></button>
<a class="btn btn-success ms-1 float-end" href="works/{w.id}/rendus" title="Voir les rendus"><i class="bi bi-files"></i></a>
{/if}
<div class="d-flex align-items-center">
<h2>
@ -108,7 +109,7 @@
<dt>Rendu&nbsp;?</dt>
<dd>
{#if w.submission_url}
<SubmissionStatus work={w} />
<SubmissionStatus work={w} user={$user} />
{:else}
{#await my_submission}
<div class="spinner-grow spinner-grow-sm mx-1" role="status"></div>
@ -162,7 +163,7 @@
<div class="card-body d-flex justify-content-between">
<div>
{#if w.submission_url}
<strong>État du rendu&nbsp;:</strong> <SubmissionStatus work={w} />
<strong>État du rendu&nbsp;:</strong> <SubmissionStatus work={w} user={$user} />
{:else}
Rendu&nbsp;:
{#await my_submission}

View file

@ -0,0 +1,95 @@
<script context="module">
import { getWork } from '../../../lib/works';
export async function load({ params, stuff }) {
return {
props: {
work: stuff.work,
},
};
}
</script>
<script lang="ts">
import { goto } from '$app/navigation';
import { user } from '../../../stores/user';
import BuildState from '../../../components/BuildState.svelte';
import DateFormat from '../../../components/DateFormat.svelte';
import SubmissionStatus from '../../../components/SubmissionStatus.svelte';
import SurveyBadge from '../../../components/SurveyBadge.svelte';
import { getRepositories } from '../../../lib/repositories';
import { getUsers } from '../../../lib/users';
export let work = null;
</script>
{#await work then w}
<div class="d-flex align-items-center">
<h2>
<a href="works/{w.id}" class="text-muted" style="text-decoration: none">&lt;</a>
{w.title}
</h2>
<SurveyBadge class="ms-2" survey={w} />
</div>
{#await getUsers(w.promo, w.group)}
{:then users}
<table class="w-100 mb-5">
<thead>
<tr>
<th>Login</th>
<th>Rendu</th>
<th>Dépôts</th>
</tr>
</thead>
<tbody>
{#each users as user (user.id)}
<tr>
<td><a href="users/{user.login}">{user.login}</a></td>
<td>
<SubmissionStatus work={w} user={user} />
</td>
<td>
{#await getRepositories(w.id, user.id) then repos}
<div class="d-flex flex-column">
{#each repos as repo (repo.id)}
<div class="d-flex justify-content-between align-items-center">
<code class="text-truncate mx-1">
{repo.uri}
</code>
<div class="mx-1">
{#if repo.last_check}
<DateFormat date={new Date(repo.last_check)} dateStyle="medium" timeStyle="medium" />
<BuildState repo_pull_state={repo.getBuildState()} />
{:else}
-
{/if}
</div>
<button
class="btn btn-sm btn-primary mx-1"
title="Rafraîchir"
on:click={() => repo.retrieveWork()}
>
<i class="bi bi-arrow-clockwise"></i>
</button>
</div>
{/each}
</div>
{/await}
</td>
<td>
<a
href="/api/users/{user.id}/works/{w.id}/download"
class="btn btn-sm btn-dark"
title="Télécharger la tarball du rendu"
>
<i class="bi bi-download"></i>
</a>
</td>
</tr>
{/each}
</tbody>
</table>
{/await}
{/await}

View file

@ -63,7 +63,7 @@
{work.title}
{#if work.group}<span class="badge bg-secondary">{work.group}</span>{/if}
{#if work.startAvailability() < Date.now()}
<SubmissionStatus {work} />
<SubmissionStatus {work} user={$user} />
{/if}
<SurveyBadge survey={work} class="float-end" />
</td>