Skip to content

Commit 276ac67

Browse files
authored
Merge pull request #3705 from AtCoder-NoviSteps/#3704
fix(admin): show grade label even when estimatedGrade is null on tasks/grade page
2 parents f5c694d + 502b863 commit 276ac67

1 file changed

Lines changed: 64 additions & 59 deletions

File tree

src/routes/(admin)/tasks/grade/+page.svelte

Lines changed: 64 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -43,63 +43,65 @@
4343
<Input aria-label="Search tasks" placeholder="問題名・問題ID・出典で検索" bind:value={search} />
4444
</div>
4545

46-
<Table hoverable>
47-
<TableHead>
48-
<TableHeadCell scope="col">問題名</TableHeadCell>
49-
<TableHeadCell scope="col">出典</TableHeadCell>
50-
<TableHeadCell scope="col">グレード(admin)</TableHeadCell>
51-
<TableHeadCell scope="col">グレード(ユーザ投票)</TableHeadCell>
52-
</TableHead>
53-
<TableBody class="divide-y">
54-
{#if search === ''}
55-
<TableBodyRow>
56-
<TableBodyCell colspan={4} class="text-center text-gray-500 dark:text-gray-400">
57-
問題名・問題ID・出典を入力してください
58-
</TableBodyCell>
59-
</TableBodyRow>
60-
{:else}
61-
{#each filteredTasks as task (task.task_id)}
62-
<TableBodyRow>
63-
<!-- Task name -->
64-
<TableBodyCell>
65-
<a
66-
href={resolve('/votes/[slug]', { slug: task.task_id })}
67-
class="text-primary-600 dark:text-primary-400 hover:underline text-sm"
68-
>
69-
{removeTaskIndexFromTitle(task.title, task.task_table_index)}
70-
</a>
71-
</TableBodyCell>
72-
73-
<!-- Reference -->
74-
<TableBodyCell class="text-sm">
75-
{addContestNameToTaskIndex(task.contest_id, task.task_table_index)}
76-
</TableBodyCell>
77-
78-
<!-- Grade for admin -->
79-
{@render adminGradeCell(task)}
80-
81-
<!-- Grade for user votes -->
82-
<TableBodyCell>
83-
{#if task.estimatedGrade}
84-
<GradeLabel
85-
taskGrade={task.estimatedGrade}
86-
defaultPadding={0.25}
87-
defaultWidth={6}
88-
reducedWidth={6}
89-
/>
90-
{/if}
91-
</TableBodyCell>
92-
</TableBodyRow>
93-
{:else}
46+
<div class="rounded-lg overflow-hidden border border-gray-200 dark:border-gray-700">
47+
<Table hoverable>
48+
<TableHead>
49+
<TableHeadCell scope="col">問題名</TableHeadCell>
50+
<TableHeadCell scope="col">出典</TableHeadCell>
51+
<TableHeadCell scope="col">グレード(admin)</TableHeadCell>
52+
<TableHeadCell scope="col">グレード(ユーザ投票)</TableHeadCell>
53+
</TableHead>
54+
<TableBody class="divide-y divide-gray-100 dark:divide-gray-700">
55+
{#if search === ''}
9456
<TableBodyRow>
9557
<TableBodyCell colspan={4} class="text-center text-gray-500 dark:text-gray-400">
96-
該当する問題が見つかりませんでした
58+
問題名・問題ID・出典を入力してください
9759
</TableBodyCell>
9860
</TableBodyRow>
99-
{/each}
100-
{/if}
101-
</TableBody>
102-
</Table>
61+
{:else}
62+
{#each filteredTasks as task (task.task_id)}
63+
<TableBodyRow>
64+
<!-- Task name -->
65+
<TableBodyCell>
66+
<a
67+
href={resolve('/votes/[slug]', { slug: task.task_id })}
68+
class="text-primary-600 dark:text-primary-400 hover:underline text-sm"
69+
>
70+
{removeTaskIndexFromTitle(task.title, task.task_table_index)}
71+
</a>
72+
</TableBodyCell>
73+
74+
<!-- Reference -->
75+
<TableBodyCell class="text-sm">
76+
{addContestNameToTaskIndex(task.contest_id, task.task_table_index)}
77+
</TableBodyCell>
78+
79+
<!-- Grade for admin -->
80+
{@render adminGradeCell(task)}
81+
82+
<!-- Grade for user votes -->
83+
<TableBodyCell>
84+
{#if task.estimatedGrade}
85+
<GradeLabel
86+
taskGrade={task.estimatedGrade}
87+
defaultPadding={0.25}
88+
defaultWidth={6}
89+
reducedWidth={6}
90+
/>
91+
{/if}
92+
</TableBodyCell>
93+
</TableBodyRow>
94+
{:else}
95+
<TableBodyRow>
96+
<TableBodyCell colspan={4} class="text-center text-gray-500 dark:text-gray-400">
97+
該当する問題が見つかりませんでした
98+
</TableBodyCell>
99+
</TableBodyRow>
100+
{/each}
101+
{/if}
102+
</TableBody>
103+
</Table>
104+
</div>
103105
</div>
104106

105107
{#snippet adminGradeCell(task: TaskWithVoteInfo)}
@@ -121,19 +123,22 @@
121123
</select>
122124
</form>
123125

124-
{#if task.grade !== TaskGrade.PENDING && task.estimatedGrade}
126+
{#if task.grade !== TaskGrade.PENDING}
125127
<div class="relative inline-block">
126128
<GradeLabel
127129
taskGrade={task.grade}
128130
defaultPadding={0.25}
129131
defaultWidth={6}
130132
reducedWidth={6}
131133
/>
132-
<RelativeEvaluationBadge
133-
officialGrade={task.grade}
134-
medianGrade={task.estimatedGrade}
135-
badgeId="relative-eval-{task.task_id}"
136-
/>
134+
135+
{#if task.estimatedGrade}
136+
<RelativeEvaluationBadge
137+
officialGrade={task.grade}
138+
medianGrade={task.estimatedGrade}
139+
badgeId="relative-eval-{task.task_id}"
140+
/>
141+
{/if}
137142
</div>
138143
{/if}
139144
</div>

0 commit comments

Comments
 (0)