From 47ec7e3934584521b6a0e240f14c514d50b1f6d8 Mon Sep 17 00:00:00 2001 From: undefined Date: Thu, 18 May 2023 16:04:29 +0800 Subject: [PATCH] ui: objective: remember selections & quick navigation --- .../ui-default/pages/problem_detail.page.jsx | 51 +++++++++++++++++-- .../ui-default/templates/problem_detail.html | 6 +-- 2 files changed, 49 insertions(+), 8 deletions(-) diff --git a/packages/ui-default/pages/problem_detail.page.jsx b/packages/ui-default/pages/problem_detail.page.jsx index 59bfedbb2..0bc137ab8 100644 --- a/packages/ui-default/pages/problem_detail.page.jsx +++ b/packages/ui-default/pages/problem_detail.page.jsx @@ -2,7 +2,7 @@ import { getScoreColor } from '@hydrooj/utils/lib/status'; import $ from 'jquery'; import yaml from 'js-yaml'; import React from 'react'; -import { createRoot } from 'react-dom/client'; +import ReactDOM from 'react-dom/client'; import Notification from 'vj/components/notification'; import { downloadProblemSet } from 'vj/components/zipDownloader'; import { NamedPage } from 'vj/misc/Page'; @@ -186,6 +186,7 @@ const page = new NamedPage(['problem_detail', 'contest_detail_problem', 'homewor async function loadObjective() { $('.outer-loader-container').show(); const ans = {}; + const pids = []; let cnt = 0; const reg = /{{ (input|select|multiselect|textarea)\(\d+(-\d+)?\) }}/g; $('.problem-content .typo').children().each((i, e) => { @@ -196,15 +197,16 @@ const page = new NamedPage(['problem_detail', 'contest_detail_problem', 'homewor for (const [info, type] of questions) { cnt++; const id = info.replace(/{{ (input|select|multiselect|textarea)\((\d+(-\d+)?)\) }}/, '$2'); + pids.push(id); if (type === 'input') { $(e).html($(e).html().replace(info, tpl` -
+
`)); } else if (type === 'textarea') { $(e).html($(e).html().replace(info, tpl` -
+
`)); @@ -216,7 +218,7 @@ const page = new NamedPage(['problem_detail', 'contest_detail_problem', 'homewor $(e).html($(e).html().replace(info, '')); $(e).next('ul').children().each((j, ele) => { $(ele).after(tpl` -