From d55cf5ae456cc091817519c37244f1f867ef77d9 Mon Sep 17 00:00:00 2001 From: undefined Date: Sat, 22 Apr 2023 19:39:20 +0800 Subject: [PATCH] ui: objective: support multi-line answer --- packages/ui-default/pages/problem_detail.page.jsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/ui-default/pages/problem_detail.page.jsx b/packages/ui-default/pages/problem_detail.page.jsx index 1ad2cb1e..59bfedbb 100644 --- a/packages/ui-default/pages/problem_detail.page.jsx +++ b/packages/ui-default/pages/problem_detail.page.jsx @@ -187,7 +187,7 @@ const page = new NamedPage(['problem_detail', 'contest_detail_problem', 'homewor $('.outer-loader-container').show(); const ans = {}; let cnt = 0; - const reg = /{{ (input|select|multiselect)\(\d+(-\d+)?\) }}/g; + const reg = /{{ (input|select|multiselect|textarea)\(\d+(-\d+)?\) }}/g; $('.problem-content .typo').children().each((i, e) => { if (e.tagName === 'PRE' && !e.children[0].className.includes('#input')) return; const questions = []; @@ -195,13 +195,19 @@ const page = new NamedPage(['problem_detail', 'contest_detail_problem', 'homewor while (q = reg.exec(e.innerText)) questions.push(q); // eslint-disable-line no-cond-assign for (const [info, type] of questions) { cnt++; - const id = info.replace(/{{ (input|select|multiselect)\((\d+(-\d+)?)\) }}/, '$2'); + const id = info.replace(/{{ (input|select|multiselect|textarea)\((\d+(-\d+)?)\) }}/, '$2'); if (type === 'input') { $(e).html($(e).html().replace(info, tpl`
`)); + } else if (type === 'textarea') { + $(e).html($(e).html().replace(info, tpl` +
+ +
+ `)); } else { if ($(e).next()[0]?.tagName !== 'UL') { cnt--; @@ -224,7 +230,7 @@ const page = new NamedPage(['problem_detail', 'contest_detail_problem', 'homewor $('.problem-content .typo').append(document.getElementsByClassName('nav__item--round').length ? `` : ``); - $('input.objective-input[type!=checkbox]').on('input', (e) => { + $('.objective-input[type!=checkbox]').on('input', (e) => { ans[e.target.name] = e.target.value; }); $('input.objective-input[type=checkbox]').on('input', (e) => {