From c01f8042cebe45f815e857bd358805af8709d469 Mon Sep 17 00:00:00 2001 From: panda Date: Mon, 27 Jun 2022 01:42:51 +0800 Subject: [PATCH] ui: add objecttiveNew ui --- .../ui-default/pages/problem_detail.page.jsx | 55 ++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/packages/ui-default/pages/problem_detail.page.jsx b/packages/ui-default/pages/problem_detail.page.jsx index 5740081c6..977922785 100644 --- a/packages/ui-default/pages/problem_detail.page.jsx +++ b/packages/ui-default/pages/problem_detail.page.jsx @@ -7,6 +7,7 @@ import { downloadProblemSet } from 'vj/components/zipDownloader'; import loadReactRedux from 'vj/utils/loadReactRedux'; import delay from 'vj/utils/delay'; import pjax from 'vj/utils/pjax'; +import request from 'vj/utils/request'; class ProblemPageExtender { constructor() { @@ -201,6 +202,56 @@ const page = new NamedPage(['problem_detail', 'contest_detail_problem', 'homewor } catch (e) { } } + async function loadObjectiveNew() { + $('.outer-loader-container').show(); + const ans = {}; + let objectiveNum = 0; + $('.problem-content .typo').children().each((i, e) => { + if (e.innerText.includes('{{ input }}')) { + objectiveNum++; + $(e).text($(e).text().replace(/{{ input }}/g, '?')); + $(e).after(`
+ +
`); + } + if (e.innerText.includes('{{ select }}')) { + objectiveNum++; + $(e).text($(e).text().replace(/{{ select }}/g, '')); + $(e).next('ul').children().each((j, ele) => { + $(ele).after(`
+ ${String.fromCharCode(65 + j)}. + + ${ele.innerHTML} +
`); + $(ele).remove(); + }); + } + }); + if (objectiveNum) { + $('.problem-content .typo').append(document.getElementsByClassName('nav__item--round').length + ? '' + : ''); + $('input.objective-input').on('input', (e) => { + ans[e.target.name] = e.target.value; + }); + $('input[type="submit"]').on('click', (e) => { + e.preventDefault(); + request + .post(`${window.location.href}/submit`, { + lang: '_', + code: yaml.dump(ans), + }) + .then((res) => { + window.location.href = res.url; + }) + .catch((err) => { + Notification.error(err.message); + }); + }); + } + $('.outer-loader-container').hide(); + } + async function initChart() { if (!Object.keys(UiContext.pdoc.stats || {}).length) { $('#submission-status-placeholder').parent().hide(); @@ -273,7 +324,9 @@ const page = new NamedPage(['problem_detail', 'contest_detail_problem', 'homewor $('span.tags').css('display', 'inline-block'); }); $('[name="problem-sidebar__download"]').on('click', handleClickDownloadProblem); - if (UiContext.pdoc.config?.type === 'objective') loadObjective(); + const { type } = UiContext.pdoc.config || {}; + if (type === 'objective') loadObjective(); + if (type === 'objectiveNew') loadObjectiveNew(); if (pagename !== 'contest_detail_problem') initChart(); });