From a39ee9d3ce03f0315373f70c6d1db83bda73f209 Mon Sep 17 00:00:00 2001 From: Menci Date: Fri, 17 May 2019 14:37:24 +0800 Subject: [PATCH] Fix can't open in-contest submissions page, close #136 --- modules/contest.js | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/modules/contest.js b/modules/contest.js index a2a40ad..d74f617 100644 --- a/modules/contest.js +++ b/modules/contest.js @@ -369,10 +369,23 @@ app.get('/contest/:id/submissions', async (req, res) => { query.andWhere('type = 1') .andWhere('type_info = :contest_id', { contest_id }); - let paginate = syzoj.utils.paginate(await JudgeState.countForPagination(query), req.query.page, syzoj.config.page.judge_state); - let judge_state = await JudgeState.queryPage(paginate, query, { - submit_time: 'DESC' - }); + let judge_state, paginate; + + if (syzoj.config.submissions_page_fast_pagination) { + const queryResult = await JudgeState.queryPageFast(query, syzoj.utils.paginateFast( + req.query.currPageTop, req.query.currPageBottom, syzoj.config.page.judge_state + ), -1, parseInt(req.query.page)); + + judge_state = queryResult.data; + paginate = queryResult.meta; + } else { + paginate = syzoj.utils.paginate( + await JudgeState.countQuery(query), + req.query.page, + syzoj.config.page.judge_state + ); + judge_state = await JudgeState.queryPage(paginate, query, { id: "DESC" }, true); + } await judge_state.forEachAsync(async obj => { await obj.loadRelationships(); @@ -397,7 +410,8 @@ app.get('/contest/:id/submissions', async (req, res) => { form: req.query, displayConfig: displayConfig, pushType: pushType, - isFiltered: isFiltered + isFiltered: isFiltered, + fast_pagination: syzoj.config.submissions_page_fast_pagination }); } catch (e) { syzoj.log(e);