Compare commits
4 Commits
6cd3907dc3
...
107b17c11f
Author | SHA1 | Date | |
---|---|---|---|
107b17c11f | |||
51a311f0b9 | |||
0b192e4783 | |||
cc729227ce |
@ -16,7 +16,7 @@
|
||||
let warn_already_used = false;
|
||||
let w = null;
|
||||
let gradesP = null;
|
||||
let mean = 0;
|
||||
let stats = {"mean": 0, "min": 999, "max": 0};
|
||||
|
||||
$: w = data.work;
|
||||
$: refresh_submission(data.work);
|
||||
@ -34,8 +34,10 @@
|
||||
let sum = 0;
|
||||
for (const grade of grades) {
|
||||
sum += grade.score;
|
||||
if (stats.min > grade.score) stats.min = grade.score;
|
||||
if (stats.max < grade.score) stats.max = grade.score;
|
||||
}
|
||||
mean = sum / grades.length;
|
||||
stats.mean = sum / grades.length;
|
||||
});
|
||||
}
|
||||
</script>
|
||||
@ -52,8 +54,10 @@
|
||||
<SurveyBadge class="ms-2" survey={w} />
|
||||
</div>
|
||||
|
||||
{#if $user && $user.is_admin && edit}
|
||||
{#if $user && $user.is_admin && (edit || w.endAvailability() < Date.now())}
|
||||
{#if edit}
|
||||
<WorkAdmin work={w} on:saved={() => edit = false} />
|
||||
{/if}
|
||||
|
||||
{#if w.description}
|
||||
<hr>
|
||||
@ -62,7 +66,12 @@
|
||||
|
||||
<hr>
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<h3 class="mt-3">Notes</h3>
|
||||
<h3 class="mt-3">
|
||||
Notes
|
||||
<small class="text-muted">
|
||||
{#if stats.mean > 0}(moyenne : {Math.round(stats.mean*100)/100}, min : {stats.min}, max : {stats.max}){/if}
|
||||
</small>
|
||||
</h3>
|
||||
<button
|
||||
class="btn btn-light"
|
||||
on:click={() => refresh_grades(w)}
|
||||
@ -77,14 +86,13 @@
|
||||
<span>Chargement des notes …</span>
|
||||
</div>
|
||||
{:then grades}
|
||||
<p>
|
||||
|
||||
<table class="table table-hover table-striped table-sm mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Login</th>
|
||||
<th>
|
||||
Note
|
||||
{#if mean > 0}(moyenne : {Math.round(mean*100)/100}){/if}
|
||||
</th>
|
||||
<th>Note</th>
|
||||
<th>Commentaire</th>
|
||||
<th>Date de la note</th>
|
||||
</tr>
|
||||
@ -115,7 +123,7 @@
|
||||
<button
|
||||
class="btn btn-sm btn-danger mx-1"
|
||||
title="Supprimer la note"
|
||||
on:click={() => { grade.delete(); refresh_grades(w); }}
|
||||
on:click={() => { grade.delete().then(() => refresh_grades(w)); }}
|
||||
>
|
||||
<i class="bi bi-trash"></i>
|
||||
</button>
|
||||
|
13
works.go
13
works.go
@ -472,6 +472,19 @@ func (u *User) GetMyWorkGrade(w *Work) (g WorkGrade, err error) {
|
||||
}
|
||||
|
||||
func (w *Work) AddGrade(grade WorkGrade) error {
|
||||
u := User{Id: grade.IdUser}
|
||||
|
||||
// Search a previous record
|
||||
g, err := u.GetMyWorkGrade(w)
|
||||
if err != nil && err != sql.ErrNoRows {
|
||||
return err
|
||||
} else if err == nil {
|
||||
_, err = g.Delete()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return w.AddGrades([]WorkGrade{grade})
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user