From 476457ac23f03d081856965859adbc741b996cca Mon Sep 17 00:00:00 2001 From: undefined Date: Tue, 5 Apr 2022 20:34:40 +0800 Subject: [PATCH] core: scoreboard --- install/install.js | 2 +- packages/hydrooj/bin/hydrooj.js | 2 +- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/contest.ts | 2 +- packages/hydrooj/src/handler/homework.ts | 6 +++++- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/install/install.js b/install/install.js index de249ad75..7f3dd5982 100644 --- a/install/install.js +++ b/install/install.js @@ -294,7 +294,7 @@ apt-get -qq update && apt-get -q install -y mongodb-org`, { retry: true }], operations: [ `echo "MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY}\nMINIO_SECRET_KEY=${MINIO_SECRET_KEY}" >/root/.hydro/env`, `pm2 start "MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY} MINIO_SECRET_KEY=${MINIO_SECRET_KEY} minio server /data/file" --name minio`, - 'pm2 start "mongod --auth --bind_ip 0.0.0.0" --name mongodb', + 'pm2 start mongod --name mongodb -- --auth --bind_ip 0.0.0.0', () => sleep(1000), 'pm2 start hydro-sandbox', 'pm2 start hydrooj', diff --git a/packages/hydrooj/bin/hydrooj.js b/packages/hydrooj/bin/hydrooj.js index c716d2c8d..e4423944c 100755 --- a/packages/hydrooj/bin/hydrooj.js +++ b/packages/hydrooj/bin/hydrooj.js @@ -149,7 +149,7 @@ if (argv.args[0] === 'restore') { return; } exec('unzip', [argv.args[1], '-d', dir], { stdio: 'inherit' }); - exec('mongorestore', [`--uri=${url}`, `--dir=${dir}/dump/${JSON.parse(dbConfig).name}`, '--drop'], { stdio: 'inherit' }); + exec('mongorestore', [`--uri=${url}`, `--dir=${dir}/dump/hydro`, '--drop'], { stdio: 'inherit' }); if (fs.existsSync(`${dir}/file`)) { exec('rm', ['-rf', '/data/file/*'], { stdio: 'inherit' }); exec('bash', ['-c', `mv ${dir}/file/* /data/file`], { stdio: 'inherit' }); diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 875c8903d..3dbf97ed6 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "3.11.7", + "version": "3.11.8", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/handler/contest.ts b/packages/hydrooj/src/handler/contest.ts index bf8506f32..d5abcb881 100644 --- a/packages/hydrooj/src/handler/contest.ts +++ b/packages/hydrooj/src/handler/contest.ts @@ -208,7 +208,7 @@ export class ContestScoreboardDownloadHandler extends Handler { async get(domainId: string, tid: ObjectID, ext: string, ignoreLock = false) { await this.limitRate('scoreboard_download', 120, 3); const getContent = { - csv: async (rows) => `\uFEFF${rows.map((c) => (c.map((i) => i.value).join(','))).join('\n')}`, + csv: async (rows) => `\uFEFF${rows.map((c) => (c.map((i) => i.value.replace(/\n/g, ' ')).join(','))).join('\n')}`, html: (rows, tdoc) => this.renderHTML('contest_scoreboard_download_html.html', { rows, tdoc }), }; const tdoc = await contest.get(domainId, tid); diff --git a/packages/hydrooj/src/handler/homework.ts b/packages/hydrooj/src/handler/homework.ts index 63004729e..0b98076f7 100644 --- a/packages/hydrooj/src/handler/homework.ts +++ b/packages/hydrooj/src/handler/homework.ts @@ -210,6 +210,10 @@ class HomeworkScoreboardHandler extends Handler { const [tdoc, rows, udict, , nPages] = await contest.getScoreboard.call( this, domainId, tid, false, page, ); + const pdict = await problem.getList(domainId, tdoc.pids, true, undefined, false, [ + // Problem statistics display is allowed as we can view submission info in scoreboard. + ...problem.PROJECTION_CONTEST_LIST, 'nSubmit', 'nAccept', + ]); const path = [ ['Hydro', 'homepage'], ['homework_main', 'homework_main'], @@ -218,7 +222,7 @@ class HomeworkScoreboardHandler extends Handler { ]; this.response.template = 'contest_scoreboard.html'; this.response.body = { - tdoc, rows, path, udict, page, nPages, page_name: 'homework_scoreboard', + tdoc, rows, path, udict, pdict, page, nPages, page_name: 'homework_scoreboard', }; } }