From f6700e80e1620b0f3205376d2264a9b41e85e51b Mon Sep 17 00:00:00 2001 From: t123yh Date: Thu, 24 Aug 2017 10:43:20 +0800 Subject: [PATCH] Add rejudge support --- modules/contest.js | 5 +++-- modules/submission.js | 7 +++---- views/submission.ejs | 11 ++++++++--- views/submissions.ejs | 2 +- views/submissions_item.ejs | 8 +++++++- 5 files changed, 22 insertions(+), 11 deletions(-) diff --git a/modules/contest.js b/modules/contest.js index 1b36266..611ce07 100644 --- a/modules/contest.js +++ b/modules/contest.js @@ -271,7 +271,8 @@ function getDisplayConfig(contest) { showOthers: contest.allowedSeeingOthers(), showDetailResult: contest.allowedSeeingTestcase(), showTestdata: false, - inContest: true + inContest: true, + showRejudge: false }; } @@ -408,7 +409,7 @@ app.get('/contest/submission/:id', async (req, res) => { type: 'detail' }, syzoj.config.judge_token) : null, displayConfig: displayConfig, - contest: contest + contest: contest, }); } catch (e) { syzoj.log(e); diff --git a/modules/submission.js b/modules/submission.js index 4b38cfc..83bed92 100644 --- a/modules/submission.js +++ b/modules/submission.js @@ -35,6 +35,7 @@ const displayConfig = { showTestdata: true, showDetailResult: true, inContest: false, + showRejudge: false }; // s is JudgeState @@ -153,9 +154,7 @@ app.get('/submission/:id', async (req, res) => { judge.code = await syzoj.utils.highlight(judge.code, syzoj.config.languages[judge.language].highlight); } - judge.allowedRejudge = await judge.problem.isAllowedEditBy(res.locals.user); - judge.allowedManage = await judge.problem.isAllowedManageBy(res.locals.user); - + displayConfig.showRejudge = await judge.problem.isAllowedEditBy(res.locals.user); res.render('submission', { info: getSubmissionInfo(judge, displayConfig), roughResult: getRoughResult(judge, displayConfig), @@ -166,7 +165,7 @@ app.get('/submission/:id', async (req, res) => { type: 'detail', displayConfig: displayConfig }, syzoj.config.judge_token) : null, - displayConfig: displayConfig + displayConfig: displayConfig, }); } catch (e) { syzoj.log(e); diff --git a/views/submission.ejs b/views/submission.ejs index bb4976d..c27f905 100644 --- a/views/submission.ejs +++ b/views/submission.ejs @@ -16,10 +16,11 @@ 代码 / 答案文件 提交者 提交时间 + 重新评测 - + @@ -39,7 +40,7 @@
得分 - {{ subtask.score }} + {{ Math.trunc(subtask.score) }}
@@ -157,11 +158,14 @@ const vueApp = new Vue({ }, code: <%- JSON.stringify(code) %>, detailResult: <%- JSON.stringify(detailResult) %>, - displayConfig: displayConfig + displayConfig: displayConfig, }, computed: { singleSubtask() { return this.detailResult.judge.subtasks.length === 1; + }, + showRejudge() { + return this.displayConfig.showRejudge && (!this.roughData.running); } }, methods: { @@ -223,6 +227,7 @@ if (token != null) { console.log("Delta: " + JSON.stringify(p)); if (p.from === currentVersion) { currentVersion = p.to; + console.log("Before patching: " + JSON.stringify(vueApp)); jsondiffpatch.patch(vueApp.detailResult, p.delta); } else { // Some packets are dropped. Let's reset. socket.close(); diff --git a/views/submissions.ejs b/views/submissions.ejs index c58df40..fc0ed3b 100644 --- a/views/submissions.ejs +++ b/views/submissions.ejs @@ -95,7 +95,7 @@ - + diff --git a/views/submissions_item.ejs b/views/submissions_item.ejs index b73e903..4a46370 100644 --- a/views/submissions_item.ejs +++ b/views/submissions_item.ejs @@ -14,7 +14,7 @@ const userUrl = <%- JSON.stringify(syzoj.utils.makeUrl(['user', 'VanDarkholme']) Vue.component('submission-item', { template: '#submissionItemTemplate', - props: ['data', 'config'], + props: ['data', 'config', 'showRejudge'], computed: { statusString() { const data = this.data; @@ -65,5 +65,11 @@ Vue.component('submission-item', { {{ data.info.language != null ? data.info.language + ' / ' : '' }}{{ data.info.codeSize }} {{ data.info.user }} {{ data.info.submitTime }} + +
+ + +
+ \ No newline at end of file