mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-17 17:36:08 +08:00
ui: fix typo & add stylus style (#1195)
This commit is contained in:
1 parent
a8ec204a04
commit
52f811cf98
10 files changed
+32
-20
No files matched your search
@@ -135,7 +135,7 @@ export interface TestCase {
|
||||
time: number;
|
||||
memory: number;
|
||||
status: number;
|
||||
message: string;
|
||||
message: string | JudgeMessage;
|
||||
}
|
||||
|
||||
export interface JudgeMessage {
|
||||
|
||||
@@ -16,7 +16,7 @@ Problem data not found.: 문제 데이터 없음
|
||||
Read {0}, expect {1}.: '{0}에서 다음을 예상함. {1}'
|
||||
Standard answer longer than user output.: 출력이 짧습니다.
|
||||
Testdata configuration incorrect.: TC config 오류
|
||||
Too many files.: 파일이 너무 많습니다.
|
||||
Too many files: 파일이 너무 많습니다.
|
||||
Too many testcases. Cancelled.: TC가 너무 많습니다. 채점을 취소합니다.
|
||||
Total time limit longer than {0}s. Cancelled.: 총 시간이 {0}초를 넘습니다. 채점을 취소합니다.
|
||||
Unknown checker type {0}.: Checker 형태 {0}을(를) 식별할 수 없습니다.
|
||||
|
||||
@@ -6,7 +6,7 @@ Cannot find judge extra file {0}.: 找不到评测额外文件 {0}。
|
||||
Cannot find output file {0}.: 找不到输出文件 {0}。
|
||||
Cannot find user extra file {0}.: 找不到用户额外文件 {0}。
|
||||
Cannot parse testdata.: 无法解析测试数据。
|
||||
Checker returned {0}.: 比较器返回了{0}。
|
||||
Checker returned {0}.: 比较器返回了 {0}。
|
||||
Disable builtin judge: 禁用内置评测机
|
||||
Executable file not found.: 没有找到可执行文件。
|
||||
Found {0} testcases.: 识别到 {0} 个测试点。
|
||||
@@ -27,13 +27,13 @@ Syncing testdata, please wait...: 正在同步测试数据,请稍候...
|
||||
Temp directory: 临时目录
|
||||
Testdata cache directory: 测试数据缓存目录
|
||||
Testdata configuration incorrect.: 题目配置错误。
|
||||
Too many files.: 文件过多。
|
||||
Too many files: 文件过多。
|
||||
Too many testcases. Cancelled.: 测试数据过多。评测取消。
|
||||
Total time limit longer than {0}s. Cancelled.: 总时限超过{0}s。评测取消。
|
||||
Total time limit longer than {0}s. Cancelled.: 总时限超过 {0}s。评测取消。
|
||||
Total time limit per problem: 单题最多总评测时长
|
||||
Unknown checker type {0}.: 未知的比较器类型 {0}。
|
||||
Unknown language type.: 未知的语言类型。
|
||||
Unsupported language {0}.: 不支持的语言 {0}。
|
||||
User output longer than standard answer.: 选手输出比标准输出长。
|
||||
You did not specify a checker.: 你没有指定比较器文件。
|
||||
Your program returned {0}.: 您的程序返回了{0}。
|
||||
Your program returned {0}.: 您的程序返回了 {0}。
|
||||
@@ -27,7 +27,7 @@ Syncing testdata, please wait...: 正在同步測試資料,請稍候...
|
||||
Temp directory: 臨時目錄
|
||||
Testdata cache directory: 測試資料快取目錄
|
||||
Testdata configuration incorrect.: 題目配置錯誤。
|
||||
Too many files.: 檔案過多。
|
||||
Too many files: 檔案過多。
|
||||
Too many testcases. Cancelled.: 測試資料過多。評測取消。
|
||||
Total time limit longer than {0}s. Cancelled.: 總時限超過{0}s。評測取消。
|
||||
Total time limit per problem: 單題最多總評測時長
|
||||
|
||||
@@ -19,7 +19,7 @@ export interface CheckConfig {
|
||||
type Checker = (config: CheckConfig) => Promise<{
|
||||
status: number;
|
||||
score: number;
|
||||
message: string;
|
||||
message: string | { message: string, params?: any[] };
|
||||
nextPass?: { input: CopyInFile, state?: Record<string, CopyInFile> };
|
||||
}>;
|
||||
|
||||
@@ -32,8 +32,8 @@ function parseDiffMsg(msg: string) {
|
||||
const lline = meta.split('L=')[1];
|
||||
if (lline?.trim() === 'EOF') {
|
||||
const next = u.split('EOF on ')[1].split(' ')[0];
|
||||
if (next === 'usrout.processed') return 'Standard answer longer than user output.';
|
||||
if (next === 'answer.processed') return 'User output longer than standard answer.';
|
||||
if (next === 'usrout.processed') return { message: 'Standard answer longer than user output.', params: [] };
|
||||
if (next === 'answer.processed') return { message: 'User output longer than standard answer.', params: [] };
|
||||
return `Unable to parse: ${u}`;
|
||||
}
|
||||
const lineNum = +lline;
|
||||
@@ -42,8 +42,8 @@ function parseDiffMsg(msg: string) {
|
||||
const std = t.trim().split(' ');
|
||||
if (std.every((x) => !Number.isNaN(+x))) {
|
||||
// Number mode, report length not match
|
||||
if (usr.length > std.length) return 'User output longer than standard answer.';
|
||||
if (usr.length < std.length) return 'Standard answer longer than user output.';
|
||||
if (usr.length > std.length) return { message: 'User output longer than standard answer.', params: [] };
|
||||
if (usr.length < std.length) return { message: 'Standard answer longer than user output.', params: [] };
|
||||
}
|
||||
for (let i = 0; i < usr.length; i++) {
|
||||
if (usr[i] === std[i]) continue;
|
||||
@@ -119,7 +119,7 @@ const getDefaultChecker = (strict: boolean) => async (config: CheckConfig) => {
|
||||
status = STATUS.STATUS_WRONG_ANSWER;
|
||||
if (config.detail === 'full') message = parseDiffMsg(stdout);
|
||||
} else status = STATUS.STATUS_ACCEPTED;
|
||||
if (message.length > 1024000) message = '';
|
||||
if (typeof message === 'string' && message.length > 1024000) message = '';
|
||||
return {
|
||||
score: status === STATUS.STATUS_ACCEPTED ? config.score : 0,
|
||||
status,
|
||||
|
||||
@@ -94,7 +94,7 @@ export class JudgeTask {
|
||||
status: STATUS.STATUS_COMPILE_ERROR, score: 0, time: 0, memory: 0,
|
||||
});
|
||||
} else if (e instanceof FormatError) {
|
||||
this.next({ message: 'Testdata configuration incorrect.' });
|
||||
this.next({ message: { message: 'Testdata configuration incorrect.', params: [] } });
|
||||
this.next({ message: { message: e.message, params: e.params } });
|
||||
this.end({
|
||||
status: STATUS.STATUS_FORMAT_ERROR, score: 0, time: 0, memory: 0,
|
||||
@@ -144,7 +144,7 @@ export class JudgeTask {
|
||||
if (filenames.length) {
|
||||
span.setAttribute('files', filenames);
|
||||
logger.info(`Getting problem data: ${this.session?.config.host || 'local'}/${source}`);
|
||||
this.next({ message: 'Syncing testdata, please wait...' });
|
||||
this.next({ message: { message: 'Syncing testdata, please wait...', params: [] } });
|
||||
this.mainContext = trace.setSpan(context.active(), span);
|
||||
await this.session.fetchFile(source, Object.fromEntries(
|
||||
files.filter((i) => filenames.includes(i.name))
|
||||
|
||||
@@ -6,7 +6,7 @@ __langname: 简体中文
|
||||
'{0} {1} delete your discussion reply {2} in "{3}"({4}).': '{0} {1} 从讨论 {3}({4}) 删除了你的回复 {2}。'
|
||||
'{0} comments': '{0} 条评论'
|
||||
'{0} discussions': '{0} 条讨论'
|
||||
'{0} is a moderator of this domain.': '{}是这个域的管理者之一。'
|
||||
'{0} is a moderator of this domain.': '{0}是这个域的管理者之一。'
|
||||
'{0} limit exceeded (limit: {2} operations in {1} seconds).': '{0} 超过频率限制。限制:{1} 秒内最多 {2} 次操作。'
|
||||
'{0} problems': '{0} 道题'
|
||||
'{0} sections': '{0} 小节'
|
||||
@@ -29,11 +29,12 @@ __langname: 简体中文
|
||||
'Current dataset: {0}': '当前测试数据: {0}'
|
||||
'Discussion: Terms Of Service': 讨论区服务条款
|
||||
'First Blood Notice\n{0} solved problem {1} ({2})': '题目一血提示\n{0} 解决了题目 {1} ({2})'
|
||||
'Format: category 1, sub category 1.1, sub category 1.2, ..., sub category 1.x, ..., category n, sub category n.1, sub category n.2, ..., sub category n.m, ...': 格式:分类1, 子分类1.1, 子分类1.2, ..., 子分类1.x, ..., 分类n, 子分类n.1, 子分类n.2, ..., 子分类n.m, ...
|
||||
'Format: category 1, sub category 1.1, sub category 1.2, ..., sub category 1.x, ..., category n, sub category n.1, sub category n.2, ..., sub category n.m, ...': 格式:分类 1, 子分类 1.1, 子分类 1.2, ..., 子分类 1.x, ..., 分类 n, 子分类 n.1, 子分类 n.2, ..., 子分类 n.m, ...
|
||||
'Format: one group per line, CSV: groupName,uid1,uid2,...': '格式:每行一个小组,CSV:组名,UID1,UID2,...'
|
||||
'Join {0}': '加入 {0}'
|
||||
'No': 否
|
||||
'Note: Problem title may not be hidden.': 注意:题目标题可能不会被隐藏。
|
||||
'On line {0}: Read {1}, expect {2}.': 第 {0} 行的答案错误,读取到 {1},但期望 {2}。
|
||||
'Or upload a file:': 或者上传一个文件:
|
||||
'Original score: {0}': '原得分: {0}'
|
||||
'Role {1} already exists in domain {0}.': '域 {0} 中已存在角色 {1}。'
|
||||
@@ -764,6 +765,7 @@ Sorry: 对不起
|
||||
Sort by: 排序
|
||||
Source type: 来源类型
|
||||
Split View: 分屏预览
|
||||
Standard answer longer than user output.: 答案比您的输出长。
|
||||
Star Topic: 收藏讨论
|
||||
Star: 收藏
|
||||
Starred Problems: 收藏的题目
|
||||
|
||||
@@ -486,7 +486,7 @@ class OauthCallbackHandler extends Handler {
|
||||
if (this.session.oauthBind === args.type) {
|
||||
delete this.session.oauthBind;
|
||||
if (existing.some((id) => id && id !== this.user._id)) {
|
||||
throw new BadRequestError('Already binded to another account');
|
||||
throw new BadRequestError('Already bound to another account');
|
||||
}
|
||||
this.response.redirect = this.session.oauthRedirect || this.url('home_security');
|
||||
delete this.session.oauthRedirect;
|
||||
@@ -508,7 +508,7 @@ class OauthCallbackHandler extends Handler {
|
||||
delete this.session.oauthRedirect;
|
||||
return;
|
||||
}
|
||||
if (!provider.canRegister) throw new ForbiddenError('No binded account found');
|
||||
if (!provider.canRegister) throw new ForbiddenError('No bound account found');
|
||||
this.checkPriv(PRIV.PRIV_REGISTER_USER);
|
||||
let username = '';
|
||||
r.uname ||= [];
|
||||
|
||||
@@ -200,7 +200,7 @@
|
||||
<div style="display: none" class="contest-rule-settings contest-rule--oi contest-rule--ioi contest-rule--ledo contest-rule--strictioi">
|
||||
{{ form.form_text({
|
||||
columns:4,
|
||||
label:'Flexable Duration',
|
||||
label:'Flexible Duration',
|
||||
name:'contestDuration',
|
||||
placeholder:_('(leave blank if none)'),
|
||||
value:tdoc.duration|default(''),
|
||||
|
||||
@@ -119,6 +119,9 @@ $hover-background-color = #424242
|
||||
.sidebar-user-profile .user-profile-name
|
||||
color: #bbb
|
||||
|
||||
.section__tab-header-item
|
||||
color: #d8e0e6 !important
|
||||
|
||||
.section__tab-header-item:hover
|
||||
background-color: #171717
|
||||
|
||||
@@ -275,6 +278,9 @@ $hover-background-color = #424242
|
||||
.autocomplete-tag
|
||||
background-color: #ff0000
|
||||
|
||||
.problem__tag-item
|
||||
color: #d8dee3
|
||||
|
||||
.problem__tag-link
|
||||
background-color: #1f1f1f
|
||||
color: #aaa!important
|
||||
@@ -395,3 +401,7 @@ $hover-background-color = #424242
|
||||
|
||||
&.page--contest_scoreboard .star-highlight
|
||||
background: #6f757b
|
||||
|
||||
.search-sort
|
||||
color: #eee
|
||||
background-color: #1f1f1f
|
||||
Reference in new issue
Block a user