Fetch gradation status

This commit is contained in:
nemunaire 2023-03-06 13:31:24 +01:00
parent 1f7896ff26
commit 018ed9227f
3 changed files with 75 additions and 7 deletions

View file

@ -40,4 +40,16 @@ export class Grade {
throw new Error((await res.json()).errmsg);
}
}
async gradationStatus() {
const res = await fetch(this.id_user?`api/users/${this.id_user}/works/${this.id_work}/grades/${this.id}/status`:`api/works/${this.id_work}/grades/${this.id}/status`, {
method: 'GET',
headers: {'Accept': 'application/json'},
});
if (res.status == 200) {
return await res.json();
} else {
throw new Error((await res.json()).errmsg);
}
}
}

View file

@ -16,6 +16,7 @@
let warn_already_used = false;
let w = null;
let gradesP = null;
let gradationStatus = {};
let stats = {"mean": 0, "min": 999, "max": 0};
$: w = data.work;
@ -33,6 +34,9 @@
let sum = 0;
for (const grade of grades) {
if (!gradationStatus[grade.id])
gradationStatus[grade.id] = grade.gradationStatus();
sum += grade.score;
if (stats.min > grade.score && grade.comment != "- Non rendu -") stats.min = grade.score;
if (stats.max < grade.score) stats.max = grade.score;
@ -143,13 +147,27 @@
>
<i class="bi bi-git"></i>
</a>
<button
class="btn btn-sm btn-success mr-1"
title="Relancer la notation"
on:click={() => { grade.redoGradation(); }}
>
<i class="bi bi-arrow-clockwise"></i>
</button>
{#await gradationStatus[grade.id]}
<button
class="btn btn-sm btn-outline-success mr-1"
title="Relancer la notation"
on:click={() => { grade.redoGradation().then(() => gradationStatus[grade.id] = grade.gradationStatus()); }}
>
<div class="spinner-border spinner-border-sm" role="status"></div>
</button>
{:then status}
<button
class="btn btn-sm mr-1"
class:btn-success={status.status == "success"}
class:btn-danger={status.status == "failure"}
class:btn-outline-danger={status.status == "killed"}
class:btn-outline-warning={status.status == "pending" || status.status == "running"}
title="Relancer la notation"
on:click={() => { grade.redoGradation(); gradationStatus[grade.id] = null; }}
>
<i class="bi bi-arrow-clockwise"></i>
</button>
{/await}
<button
class="btn btn-sm btn-danger mr-1"
title="Supprimer la note"