From c1327a55a2bed441433c48a9f325130909c00d62 Mon Sep 17 00:00:00 2001 From: undefined Date: Fri, 26 Dec 2025 02:08:11 +0800 Subject: [PATCH] ui: add fill to pretest button (#1109) --- .../highlighter/highlighter.page.styl | 6 +++++ .../highlighter/highlighter.page.ts | 26 +++++++++++++++++++ packages/ui-default/locales/zh.yaml | 1 + 3 files changed, 33 insertions(+) diff --git a/packages/ui-default/components/highlighter/highlighter.page.styl b/packages/ui-default/components/highlighter/highlighter.page.styl index 0df508732..9fd2deaa6 100644 --- a/packages/ui-default/components/highlighter/highlighter.page.styl +++ b/packages/ui-default/components/highlighter/highlighter.page.styl @@ -57,6 +57,12 @@ code border-radius: 0px !important background: none !important +.scratchpad-fill-button + display: none + +.mode--scratchpad .scratchpad-fill-button + display: inline-block + .token.tab:not(:empty), .token.cr, .token.lf, diff --git a/packages/ui-default/components/highlighter/highlighter.page.ts b/packages/ui-default/components/highlighter/highlighter.page.ts index 4b051d64a..da19c9cd2 100644 --- a/packages/ui-default/components/highlighter/highlighter.page.ts +++ b/packages/ui-default/components/highlighter/highlighter.page.ts @@ -1,4 +1,5 @@ import $ from 'jquery'; +import Notification from 'vj/components/notification'; import { AutoloadPage } from 'vj/misc/Page'; import { i18n, tpl } from 'vj/utils'; @@ -33,6 +34,31 @@ const highlighterPage = new AutoloadPage('highlighterPage', () => { $output.parent().prepend($(tpl`

${i18n('Sample Output')} ${id}

`)) .addClass('medium-6 columns sample').appendTo($c); } + if ($root.find('.scratchpad-fill-button').length) return; + const $toolbar = $root.find('.toolbar'); + const $button = $(tpl` +
+ ${i18n('Fill to Pretest')} +
+ `); + $button.on('click', (e) => { + const store = (window as any).store; + if (!store) return; + e.preventDefault(); + try { + store.dispatch({ + type: 'SCRATCHPAD_PRETEST_DATA_CHANGE', + payload: { + type: 'input', + value: $code.text(), + }, + }); + Notification.success(i18n('Input filled to pretest!'), 2000); + } catch (err) { + Notification.error(i18n('Failed to fill input')); + } + }); + $toolbar.append($button); } } }); diff --git a/packages/ui-default/locales/zh.yaml b/packages/ui-default/locales/zh.yaml index 86f8dbc71..154c82ca4 100644 --- a/packages/ui-default/locales/zh.yaml +++ b/packages/ui-default/locales/zh.yaml @@ -407,6 +407,7 @@ File uploaded successfully.: 上传文件成功 File: 文件 Filename: 文件名 Files: 文件 +Fill to Pretest: 填充到自测 Filter: 过滤 First of Contest: 全场一血 First of Problem: 题目一血