From 5f39ec4fd2e2fd1210553f166f62cf5c758cadc2 Mon Sep 17 00:00:00 2001 From: xuyue <517252939@qq.com> Date: Thu, 9 Feb 2023 20:23:11 +0800 Subject: [PATCH] add contest rank. --- src/oj/api.ts | 13 ++ src/oj/contest/components/AcAndSubmission.vue | 12 ++ src/oj/contest/pages/rank.vue | 170 +++++++++++++++++- src/oj/rank/components/Chart.vue | 2 +- src/oj/rank/list.vue | 6 +- src/oj/submission/detail.vue | 2 +- src/shared/Pagination.vue | 8 +- src/utils/functions.ts | 10 ++ src/utils/types.ts | 43 +++-- 9 files changed, 243 insertions(+), 23 deletions(-) create mode 100644 src/oj/contest/components/AcAndSubmission.vue diff --git a/src/oj/api.ts b/src/oj/api.ts index 2cf8580..f7091df 100644 --- a/src/oj/api.ts +++ b/src/oj/api.ts @@ -10,6 +10,7 @@ import { function filterResult(result: Problem) { const newResult = { + id: result.id, _id: result._id, title: result.title, difficulty: DIFFICULTY[result.difficulty], @@ -131,3 +132,15 @@ export async function getContestProblems(contestID: string) { }) return res.data.map(filterResult) } + +export function getContestRank( + contestID: string, + query: { limit: number; offset: number } +) { + return http.get("contest_rank", { + params: { + contest_id: contestID, + ...query, + }, + }) +} diff --git a/src/oj/contest/components/AcAndSubmission.vue b/src/oj/contest/components/AcAndSubmission.vue new file mode 100644 index 0000000..8a14a4c --- /dev/null +++ b/src/oj/contest/components/AcAndSubmission.vue @@ -0,0 +1,12 @@ + + + + + diff --git a/src/oj/contest/pages/rank.vue b/src/oj/contest/pages/rank.vue index b0b0c66..50a8ec5 100644 --- a/src/oj/contest/pages/rank.vue +++ b/src/oj/contest/pages/rank.vue @@ -1,5 +1,171 @@ - + + + diff --git a/src/oj/rank/components/Chart.vue b/src/oj/rank/components/Chart.vue index 879b4d7..88c723b 100644 --- a/src/oj/rank/components/Chart.vue +++ b/src/oj/rank/components/Chart.vue @@ -71,7 +71,7 @@ const data = computed(() => ({ const options = ref({ plugins: { title: { - text: "全校前十名的提交者(不包括超管)", + text: "全校前十名的用户(不包括超管)", display: true, font: { size: 20 }, }, diff --git a/src/oj/rank/list.vue b/src/oj/rank/list.vue index 62c89e4..f42ed5a 100644 --- a/src/oj/rank/list.vue +++ b/src/oj/rank/list.vue @@ -12,7 +12,7 @@ const query = reactive({ limit: 10, page: 1, }) -const rankData = ref([]) +const chart = ref([]) async function listRanks() { const offset = (query.page - 1) * query.limit @@ -20,7 +20,7 @@ async function listRanks() { data.value = res.data.results total.value = res.data.total if (query.page === 1) { - rankData.value = data.value + chart.value = data.value } } @@ -67,7 +67,7 @@ onMounted(listRanks)