More dynamic submission page

This commit is contained in:
nemunaire 2022-09-05 10:12:39 +02:00
parent 0042d373f6
commit 8b0043dc8d
2 changed files with 53 additions and 9 deletions

View File

@ -1,8 +1,12 @@
<script>
import { createEventDispatcher } from 'svelte';
import DateFormat from '../components/DateFormat.svelte';
import { WorkRepository, getRemoteRepositories, getRepositories } from '../lib/repositories';
import { ToastsStore } from '../stores/toasts';
const dispatch = createEventDispatcher();
let className = '';
export { className as class };
@ -21,6 +25,8 @@
repo_pull_state.then((state) => {
if (state.status == "pending" || state.status == "running") {
setTimeout(() => updatePullState(repo), state.status == "pending" ? 1000 : 3000);
} else if (state.status == "success") {
dispatch('update_submission');
}
})
}

View File

@ -23,6 +23,15 @@
export let work = null;
let edit = false;
let my_submission = null;
work.then((w) => {
refresh_submission(w);
})
function refresh_submission(w) {
my_submission = w.getSubmission();
}
</script>
{#await work then w}
@ -95,6 +104,28 @@
<dd><DateFormat date={new Date(w.start_availability)} dateStyle="medium" timeStyle="medium" /></dd>
<dt>Date de fin</dt>
<dd><DateFormat date={new Date(w.end_availability)} dateStyle="medium" timeStyle="medium" /></dd>
<dt>Rendu&nbsp;?</dt>
<dd>
{#if w.submission_url}
<SubmissionStatus work={w} />
{:else}
{#await my_submission}
<div class="spinner-grow spinner-grow-sm mx-1" role="status"></div>
{:then submission}
<i
class="bi bi-check-circle text-success"
title="Oui !"
></i>
<DateFormat date={new Date(submission.date)} dateStyle="medium" timeStyle="medium" />
{:catch}
<i
class="bi bi-x-circle text-danger"
title="Pas de rendu trouvé"
></i>
Non
{/await}
{/if}
</dd>
</dl>
{#if w.description}
<hr>
@ -124,7 +155,7 @@
{/if}
{/if}
<WorkRepository class="mb-3" readonly={w.corrected || new Date(w.end_availability) <= new Date()} work={w} />
<WorkRepository class="mb-3" readonly={w.corrected || new Date(w.end_availability) <= new Date()} work={w} on:update_submission={() => refresh_submission(w)} />
<div class="card mb-3">
<div class="card-body d-flex justify-content-between">
<div>
@ -132,7 +163,7 @@
<strong>État du rendu&nbsp;:</strong> <SubmissionStatus work={w} />
{:else}
Rendu&nbsp;:
{#await w.getSubmission()}
{#await my_submission}
<div class="spinner-grow spinner-grow-sm mx-1" role="status"></div>
{:then submission}
<strong>{submission.commit} ({submission.tag})</strong> (taille&nbsp;: {submission.size}&nbsp;o, date&nbsp;: <DateFormat date={new Date(submission.date)} dateStyle="medium" timeStyle="medium" />)
@ -142,13 +173,20 @@
{/if}
</div>
<div class="d-flex flex-column justify-content-center">
<a
href="/api/works/{w.id}/download"
class="btn btn-sm btn-dark"
title="Voir la tarball de mon rendu"
>
<i class="bi bi-download"></i>
</a>
{#await my_submission then submission}
<a
href="/api/works/{w.id}/download"
class="btn btn-sm btn-dark"
title="Voir la tarball de mon rendu"
>
<i class="bi bi-download"></i>
</a>
{:catch}
<i
class="bi bi-x-circle text-danger"
title="Pas de rendu trouvé"
></i>
{/await}
</div>
</div>
</div>