Skip to content

Commit c4187b6

Browse files
committed
✨ Add task grade guidelines (#1569)
1 parent 08ce03c commit c4187b6

File tree

3 files changed

+172
-2
lines changed

3 files changed

+172
-2
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<script lang="ts">
2+
import {
3+
Table,
4+
TableBody,
5+
TableBodyCell,
6+
TableBodyRow,
7+
TableHead,
8+
TableHeadCell,
9+
} from 'flowbite-svelte';
10+
11+
import { gradeGuidelineTableData } from '$lib/components/TaskGrades/grade_guideline_table_data';
12+
import GradeLabel from '$lib/components/GradeLabel.svelte';
13+
</script>
14+
15+
<div class="container w-full lg:w-2/3 mx-auto mt-6 lg:mt-10 overflow-auto rounded-md border">
16+
<Table shadow id="grade-guideline" class="text-md table-fixed w-full">
17+
<TableHead class="text-sm bg-gray-100">
18+
<TableHeadCell class="w-28 xs:w-32 text-center">ABCの配点</TableHeadCell>
19+
<TableHeadCell class="w-40 hidden sm:table-cell text-center">問題</TableHeadCell>
20+
<TableHeadCell class="w-40 text-center">対応グレード</TableHeadCell>
21+
</TableHead>
22+
23+
<TableBody tableBodyClass="divide-y">
24+
{#each gradeGuidelineTableData as { point, task, lowerGrade, upperGrade }}
25+
<TableBodyRow>
26+
<TableBodyCell class="text-sm xs:text-md text-center py-3">{point}</TableBodyCell>
27+
<TableBodyCell class="text-center py-3 hidden sm:table-cell">{task}</TableBodyCell>
28+
29+
{#if upperGrade === lowerGrade}
30+
<TableBodyCell class="flex items-center justify-center space-x-3 py-3">
31+
<GradeLabel taskGrade={upperGrade} />
32+
</TableBodyCell>
33+
{:else}
34+
<TableBodyCell class="flex items-center justify-center space-x-3 py-3">
35+
<GradeLabel taskGrade={lowerGrade} />
36+
<p>〜</p>
37+
<GradeLabel taskGrade={upperGrade} />
38+
</TableBodyCell>
39+
{/if}
40+
</TableBodyRow>
41+
{/each}
42+
</TableBody>
43+
</Table>
44+
</div>
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
import { TaskGrade } from '$lib/types/task';
2+
3+
export const gradeGuidelineTableData = [
4+
{
5+
point: '〜 100',
6+
task: '(JOI 一次予選 A)',
7+
lowerGrade: TaskGrade.Q10,
8+
upperGrade: TaskGrade.Q10,
9+
},
10+
{
11+
point: '100',
12+
task: 'A',
13+
lowerGrade: TaskGrade.Q9,
14+
upperGrade: TaskGrade.Q6,
15+
},
16+
{
17+
point: '150',
18+
task: 'A、B',
19+
lowerGrade: TaskGrade.Q7,
20+
upperGrade: TaskGrade.Q5,
21+
},
22+
{
23+
point: '200',
24+
task: 'B',
25+
lowerGrade: TaskGrade.Q6,
26+
upperGrade: TaskGrade.Q4,
27+
},
28+
{
29+
point: '250',
30+
task: 'B、C',
31+
lowerGrade: TaskGrade.Q5,
32+
upperGrade: TaskGrade.Q3,
33+
},
34+
{
35+
point: '300',
36+
task: 'C',
37+
lowerGrade: TaskGrade.Q4,
38+
upperGrade: TaskGrade.Q2,
39+
},
40+
{
41+
point: '350',
42+
task: 'C、D',
43+
lowerGrade: TaskGrade.Q3,
44+
upperGrade: TaskGrade.Q1,
45+
},
46+
{
47+
point: '400',
48+
task: 'D',
49+
lowerGrade: TaskGrade.Q2,
50+
upperGrade: TaskGrade.Q1,
51+
},
52+
{
53+
point: '425',
54+
task: 'D、E',
55+
lowerGrade: TaskGrade.Q2,
56+
upperGrade: TaskGrade.Q1,
57+
},
58+
{
59+
point: '450',
60+
task: 'D、E',
61+
lowerGrade: TaskGrade.Q1,
62+
upperGrade: TaskGrade.D1,
63+
},
64+
{
65+
point: '475',
66+
task: 'E、F',
67+
lowerGrade: TaskGrade.Q1,
68+
upperGrade: TaskGrade.D2,
69+
},
70+
{
71+
point: '500',
72+
task: 'E、F',
73+
lowerGrade: TaskGrade.Q1,
74+
upperGrade: TaskGrade.D3,
75+
},
76+
{
77+
point: '525',
78+
task: 'F',
79+
lowerGrade: TaskGrade.D1,
80+
upperGrade: TaskGrade.D3,
81+
},
82+
{
83+
point: '550',
84+
task: 'F',
85+
lowerGrade: TaskGrade.D2,
86+
upperGrade: TaskGrade.D4,
87+
},
88+
{
89+
point: '575',
90+
task: 'F、G',
91+
lowerGrade: TaskGrade.D3,
92+
upperGrade: TaskGrade.D4,
93+
},
94+
{
95+
point: '600',
96+
task: 'G',
97+
lowerGrade: TaskGrade.D3,
98+
upperGrade: TaskGrade.D4,
99+
},
100+
{
101+
point: '625',
102+
task: 'G',
103+
lowerGrade: TaskGrade.D3,
104+
upperGrade: TaskGrade.D5,
105+
},
106+
{
107+
point: '650',
108+
task: 'G',
109+
lowerGrade: TaskGrade.D4,
110+
upperGrade: TaskGrade.D5,
111+
},
112+
{
113+
point: '675',
114+
task: 'G',
115+
lowerGrade: TaskGrade.D5,
116+
upperGrade: TaskGrade.D6,
117+
},
118+
];

src/routes/problems/+page.svelte

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
<script lang="ts">
22
import { Tabs } from 'flowbite-svelte';
33
4-
import { compareByContestIdAndTaskId } from '$lib/utils/task.js';
4+
import type { TaskResults } from '$lib/types/task';
5+
6+
import { compareByContestIdAndTaskId } from '$lib/utils/task';
7+
58
import HeadingOne from '$lib/components/HeadingOne.svelte';
69
import TabItemWrapper from '$lib/components/TabItemWrapper.svelte';
7-
import type { TaskResults } from '$lib/types/task';
810
import TaskGradeList from '$lib/components/TaskGradeList.svelte';
11+
import GradeGuidelineTable from '$lib/components/TaskGrades/GradeGuidelineTable.svelte';
912
1013
export let data;
1114
@@ -27,6 +30,11 @@
2730
<TaskGradeList {taskResults} {isAdmin} {isLoggedIn}></TaskGradeList>
2831
</TabItemWrapper>
2932

33+
<!-- Grade guidelines -->
34+
<TabItemWrapper workbookType={null} title="グレードの目安">
35+
<GradeGuidelineTable />
36+
</TabItemWrapper>
37+
3038
<!-- HACK: 以下、各テーブルを実装するまで非表示 -->
3139
<!-- Tags -->
3240
<!-- <TabItemWrapper title="Tags">

0 commit comments

Comments
 (0)