From 19e14fc90f713a36beeba1b971c0472114074ea6 Mon Sep 17 00:00:00 2001 From: undefined Date: Mon, 17 May 2021 12:29:40 +0800 Subject: [PATCH] core: pass pdoc with UiContext --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/problem.ts | 5 +--- packages/ui-default/package.json | 2 +- .../ui-default/pages/problem_detail.page.jsx | 23 +++++++++---------- .../partials/problem_files-testdata.html | 12 +++++----- .../partials/problem_sidebar_normal.html | 2 +- .../ui-default/templates/problem_detail.html | 3 ++- 7 files changed, 23 insertions(+), 26 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 860d24739..5737ad92b 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.26.6", + "version": "2.26.7", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/problem.ts b/packages/hydrooj/src/handler/problem.ts index 6443c2a53..2b7b35b53 100644 --- a/packages/hydrooj/src/handler/problem.ts +++ b/packages/hydrooj/src/handler/problem.ts @@ -381,10 +381,7 @@ export class ProblemFilesHandler extends ProblemDetailHandler { @param('additional_file', Types.Boolean) @param('pjax', Types.Boolean) async get(domainId: string, getTestdata = true, getAdditionalFile = true, pjax = false) { - const canReadData = this.user.own(this.pdoc) - || this.user.hasPriv(PRIV.PRIV_READ_PROBLEM_DATA) - || this.user.hasPerm(PERM.PERM_READ_PROBLEM_DATA); - this.response.body.testdata = (getTestdata && canReadData) ? sortFiles(this.pdoc.data || []) : []; + this.response.body.testdata = getTestdata ? sortFiles(this.pdoc.data || []) : []; this.response.body.additional_file = getAdditionalFile ? sortFiles(this.pdoc.additional_file || []) : []; if (pjax) { const { testdata, additional_file } = this.response.body; diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index e66cc76a5..b057ce801 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.8.20", + "version": "4.8.21", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js", diff --git a/packages/ui-default/pages/problem_detail.page.jsx b/packages/ui-default/pages/problem_detail.page.jsx index 36b2b3e4f..c6e53f877 100644 --- a/packages/ui-default/pages/problem_detail.page.jsx +++ b/packages/ui-default/pages/problem_detail.page.jsx @@ -251,8 +251,7 @@ const page = new NamedPage(['problem_detail', 'contest_detail_problem', 'homewor loadSubjective(); if (pagename === 'contest_detail_problem') return; - const data = await request.get(''); - data.pdoc.stats = data.pdoc.stats || {}; + UiContext.pdoc.stats = UiContext.pdoc.stats || {}; const $status = document.getElementById('submission-status-placeholder'); const statusChart = echarts.init($status); statusChart.setOption({ @@ -264,20 +263,20 @@ const page = new NamedPage(['problem_detail', 'contest_detail_problem', 'homewor radius: [10, 70], roseType: 'radius', data: [ - { value: data.pdoc.stats.TLE, name: 'TLE' }, - { value: data.pdoc.stats.AC, name: 'AC' }, - { value: data.pdoc.stats.MLE, name: 'MLE' }, - { value: data.pdoc.stats.WA, name: 'WA' }, - { value: data.pdoc.stats.RE, name: 'RE' }, - { value: data.pdoc.stats.CE, name: 'CE' }, - { value: data.pdoc.stats.SE, name: 'SE' }, - { value: data.pdoc.stats.IGN, name: 'IGN' }, + { value: UiContext.pdoc.stats.TLE, name: 'TLE' }, + { value: UiContext.pdoc.stats.AC, name: 'AC' }, + { value: UiContext.pdoc.stats.MLE, name: 'MLE' }, + { value: UiContext.pdoc.stats.WA, name: 'WA' }, + { value: UiContext.pdoc.stats.RE, name: 'RE' }, + { value: UiContext.pdoc.stats.CE, name: 'CE' }, + { value: UiContext.pdoc.stats.SE, name: 'SE' }, + { value: UiContext.pdoc.stats.IGN, name: 'IGN' }, ], }, ], }); const $score = document.getElementById('submission-score-placeholder'); - const x = Array.from({ length: 101 }, (v, i) => i).filter((i) => data.pdoc.stats[`s${i}`]); + const x = Array.from({ length: 101 }, (v, i) => i).filter((i) => UiContext.pdoc.stats[`s${i}`]); const scoreChart = echarts.init($score); scoreChart.setOption({ tooltip: { trigger: 'item' }, @@ -285,7 +284,7 @@ const page = new NamedPage(['problem_detail', 'contest_detail_problem', 'homewor yAxis: {}, series: [{ data: x.map((i) => ({ - value: data.pdoc.stats[`s${i}`], + value: UiContext.pdoc.stats[`s${i}`], itemStyle: { color: getScoreColor(i) }, })), type: 'bar', diff --git a/packages/ui-default/templates/partials/problem_files-testdata.html b/packages/ui-default/templates/partials/problem_files-testdata.html index 2225c6ef1..a812da3b8 100644 --- a/packages/ui-default/templates/partials/problem_files-testdata.html +++ b/packages/ui-default/templates/partials/problem_files-testdata.html @@ -27,7 +27,11 @@
{{ file.name }}
+ {% endif %}