From a1655640e93ad116d6304dee47248ccffe2b0d2f Mon Sep 17 00:00:00 2001 From: Menci Date: Sat, 17 Jun 2017 10:46:24 +0800 Subject: [PATCH] Remember last submit language --- models/user.js | 9 +++++++++ modules/contest.js | 3 ++- modules/problem.js | 3 ++- views/problem.ejs | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/models/user.js b/models/user.js index 3cbebea..330f243 100644 --- a/models/user.js +++ b/models/user.js @@ -227,6 +227,15 @@ class User extends Model { return !(!x); } + async getLastSubmitLanguage() { + let JudgeState = syzoj.model('judge_state'); + + let a = await JudgeState.query([1, 1], { user_id: this.id }, [['submit_time', 'desc']]); + if (a[0]) return a[0].language; + + return null; + } + getModel() { return model; } } diff --git a/modules/contest.js b/modules/contest.js index eb74991..d53d43c 100644 --- a/modules/contest.js +++ b/modules/contest.js @@ -338,7 +338,8 @@ app.get('/contest/:id/:pid', async (req, res) => { pid: pid, contest: contest, problem: problem, - state: state + state: state, + lastLanguage: res.locals.user ? await res.locals.user.getLastSubmitLanguage() : null }); } catch (e) { syzoj.log(e); diff --git a/modules/problem.js b/modules/problem.js index 952f6e7..b6e8d6f 100644 --- a/modules/problem.js +++ b/modules/problem.js @@ -203,7 +203,8 @@ app.get('/problem/:id', async (req, res) => { res.render('problem', { problem: problem, - state: state + state: state, + lastLanguage: res.locals.user ? await res.locals.user.getLastSubmitLanguage() : null }); } catch (e) { syzoj.log(e); diff --git a/views/problem.ejs b/views/problem.ejs index 8d83ee1..2874221 100644 --- a/views/problem.ejs +++ b/views/problem.ejs @@ -166,7 +166,7 @@ if (contest) { let language = Object.getOwnPropertyNames(syzoj.config.languages).shift(); if (state) { language = state.language; - } + } else if (lastLanguage) language = lastLanguage; %> <% for (lang in syzoj.config.languages) { %>