x-star-design 0.0.89 → 0.0.92
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ac-config/GeneralConfigItem.js +3 -1
- package/dist/ac-config/ProgramConfigItem.js +29 -2
- package/dist/ac-config/TimingFormItem.js +7 -4
- package/dist/ac-config/define.d.ts +13 -2
- package/dist/ac-config/index.js +19 -7
- package/dist/config-template/define.d.ts +3 -0
- package/dist/config-template/define.js +163 -0
- package/dist/config-template/index.d.ts +8 -0
- package/dist/config-template/index.js +146 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +2 -0
- package/dist/locales/en_US.d.ts +29 -0
- package/dist/locales/en_US.js +30 -1
- package/dist/locales/index.d.ts +59 -1
- package/dist/locales/zh_CN.d.ts +29 -0
- package/dist/locales/zh_CN.js +30 -1
- package/dist/styles/index.css +34 -0
- package/package.json +1 -1
|
@@ -187,7 +187,9 @@ var GeneralConfigItem = function GeneralConfigItem(_ref) {
|
|
|
187
187
|
value: 'afterApproval'
|
|
188
188
|
}, t('DISPLAY_AFTER_TEACHER_CONFIRMATION')), /*#__PURE__*/React.createElement(Radio, {
|
|
189
189
|
value: 'scheduled'
|
|
190
|
-
}, t('TIMED_DISPLAY'))
|
|
190
|
+
}, t('TIMED_DISPLAY')), /*#__PURE__*/React.createElement(Radio, {
|
|
191
|
+
value: 'started'
|
|
192
|
+
}, t('After_Contest_Start')))), /*#__PURE__*/React.createElement(TimingFormItem, {
|
|
191
193
|
field: 'answerRelease',
|
|
192
194
|
name: 'answerTime',
|
|
193
195
|
label: t('ANSWER_DISPLAY_TIME')
|
|
@@ -62,7 +62,9 @@ var ProgramConfigItem = function ProgramConfigItem(_ref) {
|
|
|
62
62
|
value: 'scheduled'
|
|
63
63
|
}, t('TIMED_DISPLAY')), /*#__PURE__*/React.createElement(Radio, {
|
|
64
64
|
value: 'always'
|
|
65
|
-
}, t('Always_Visible'))
|
|
65
|
+
}, t('Always_Visible')), /*#__PURE__*/React.createElement(Radio, {
|
|
66
|
+
value: 'started'
|
|
67
|
+
}, t('After_Contest_Start')))), /*#__PURE__*/React.createElement(TimingFormItem, {
|
|
66
68
|
field: 'tipRelease',
|
|
67
69
|
name: 'tipTime',
|
|
68
70
|
label: t('TIPS_DISPLAY_TIME')
|
|
@@ -121,7 +123,32 @@ var ProgramConfigItem = function ProgramConfigItem(_ref) {
|
|
|
121
123
|
// return parseInt(val);
|
|
122
124
|
// }}
|
|
123
125
|
}));
|
|
126
|
+
}), /*#__PURE__*/React.createElement(Form.Item, {
|
|
127
|
+
label: t('Show_Top_N_Submissions'),
|
|
128
|
+
name: 'showTopNSubmission',
|
|
129
|
+
extra: t('Show_Top_N_Submissions_Extra')
|
|
130
|
+
}, /*#__PURE__*/React.createElement(Radio.Group, null, /*#__PURE__*/React.createElement(Radio, {
|
|
131
|
+
value: true,
|
|
132
|
+
"data-testid": "showTopNSubmission-true"
|
|
133
|
+
}, t('ALLOW')), /*#__PURE__*/React.createElement(Radio, {
|
|
134
|
+
value: false,
|
|
135
|
+
"data-testid": "showTopNSubmission-false"
|
|
136
|
+
}, t('PROHIBIT')))), /*#__PURE__*/React.createElement(Form.Item, {
|
|
137
|
+
noStyle: true,
|
|
138
|
+
shouldUpdate: function shouldUpdate(perValues, nextValues) {
|
|
139
|
+
return perValues['showTopNSubmission'] !== nextValues['showTopNSubmission'];
|
|
140
|
+
}
|
|
141
|
+
}, function (_ref5) {
|
|
142
|
+
var getFieldValue = _ref5.getFieldValue;
|
|
143
|
+
var isVisible = getFieldValue('showTopNSubmission');
|
|
144
|
+
return isVisible && /*#__PURE__*/React.createElement(Form.Item, {
|
|
145
|
+
label: t('Top_N_Submissions'),
|
|
146
|
+
name: 'showTopNSubmissionCount'
|
|
147
|
+
}, /*#__PURE__*/React.createElement(InputNumber, {
|
|
148
|
+
min: 0,
|
|
149
|
+
max: 100,
|
|
150
|
+
"data-testid": "showTopNSubmission-input"
|
|
151
|
+
}));
|
|
124
152
|
}));
|
|
125
153
|
};
|
|
126
|
-
|
|
127
154
|
export default ProgramConfigItem;
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { DatePicker, Form } from 'antd';
|
|
2
2
|
import React from 'react';
|
|
3
|
+
import ContestTimeInput from "../contest-time-input";
|
|
3
4
|
import { useLocale } from "../locales";
|
|
4
5
|
var TimingFormItem = function TimingFormItem(_ref) {
|
|
5
6
|
var field = _ref.field,
|
|
6
7
|
name = _ref.name,
|
|
7
8
|
label = _ref.label;
|
|
8
9
|
var _useLocale = useLocale('AcConfig'),
|
|
9
|
-
locale = _useLocale.locale
|
|
10
|
+
locale = _useLocale.locale,
|
|
11
|
+
t = _useLocale.format;
|
|
10
12
|
var lang = {
|
|
11
13
|
zh_CN: 'zh',
|
|
12
14
|
en_US: 'en'
|
|
@@ -28,14 +30,15 @@ var TimingFormItem = function TimingFormItem(_ref) {
|
|
|
28
30
|
}, function (_ref2) {
|
|
29
31
|
var getFieldValue = _ref2.getFieldValue;
|
|
30
32
|
// 成绩发布定时发布时显示
|
|
31
|
-
var isVisible = getFieldValue(field) === 'scheduled';
|
|
33
|
+
var isVisible = getFieldValue(field) === 'scheduled' || getFieldValue(field) === 'started';
|
|
34
|
+
var isStarted = getFieldValue(field) === 'started';
|
|
32
35
|
return /*#__PURE__*/React.createElement(React.Fragment, null, isVisible && /*#__PURE__*/React.createElement(Form.Item, {
|
|
33
36
|
name: name,
|
|
34
|
-
label: label,
|
|
37
|
+
label: isStarted ? t('After_Contest_Start_N') : label,
|
|
35
38
|
rules: [{
|
|
36
39
|
required: true
|
|
37
40
|
}]
|
|
38
|
-
}, /*#__PURE__*/React.createElement(DatePicker, {
|
|
41
|
+
}, isStarted ? /*#__PURE__*/React.createElement(ContestTimeInput, null) : /*#__PURE__*/React.createElement(DatePicker, {
|
|
39
42
|
showTime: {
|
|
40
43
|
use12Hours: lang === 'en',
|
|
41
44
|
format: showTimeFormat
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Dayjs } from 'dayjs';
|
|
2
|
-
|
|
2
|
+
import { ContestTimeInputValue } from '../contest-time-input';
|
|
3
|
+
export type ConfigStatus = 'afterExam' | 'afterApproval' | 'scheduled' | 'afterGradeRelease' | 'always' | 'started';
|
|
3
4
|
export type SubmissionConfigStatus = 'noEarlySubmission' | 'allowEarlySubmission';
|
|
4
5
|
export type restrictionStatus = {
|
|
5
6
|
type: 'never' | 'beforeHomeworkExam';
|
|
@@ -43,6 +44,8 @@ export interface Configuration {
|
|
|
43
44
|
downloadDataCount: number;
|
|
44
45
|
scoreTypeInMatch: 'latestSubmit' | 'maxScore';
|
|
45
46
|
lang: string[];
|
|
47
|
+
showTopNSubmission: boolean;
|
|
48
|
+
showTopNSubmissionCount: number;
|
|
46
49
|
};
|
|
47
50
|
homework?: {
|
|
48
51
|
noLimit?: boolean;
|
|
@@ -59,7 +62,7 @@ export interface RawConfig {
|
|
|
59
62
|
gradeTime: Dayjs;
|
|
60
63
|
rankListTime: Dayjs;
|
|
61
64
|
paperTime: Dayjs;
|
|
62
|
-
answerTime: Dayjs;
|
|
65
|
+
answerTime: Dayjs | ContestTimeInputValue;
|
|
63
66
|
gradeRelease: GeneralConfigStatus<'Grade'>['type'];
|
|
64
67
|
rankListRelease: GeneralConfigStatus<'Ranklist'>['type'];
|
|
65
68
|
paperRelease: GeneralConfigStatus['type'];
|
|
@@ -91,6 +94,14 @@ export interface RawConfig {
|
|
|
91
94
|
downloadDataCount: number;
|
|
92
95
|
scoreTypeInMatch: 'latestSubmit' | 'maxScore';
|
|
93
96
|
lang: ('gcc' | 'g++' | 'g++11' | 'g++14' | 'g++17' | 'python2.7' | 'python3.8' | 'java8' | 'fpc')[];
|
|
97
|
+
/**
|
|
98
|
+
* 赛中仅显示前n项提交
|
|
99
|
+
*/
|
|
100
|
+
showTopNSubmission: boolean;
|
|
101
|
+
/**
|
|
102
|
+
* 赛中仅显示前n项提交数量
|
|
103
|
+
*/
|
|
104
|
+
showTopNSubmissionCount: number;
|
|
94
105
|
/**
|
|
95
106
|
* 学生排行榜真实姓名
|
|
96
107
|
*/
|
package/dist/ac-config/index.js
CHANGED
|
@@ -24,7 +24,7 @@ export var getConfigData = function getConfigData(_ref) {
|
|
|
24
24
|
return _defineProperty({}, release, {
|
|
25
25
|
type: status,
|
|
26
26
|
scheduled: {
|
|
27
|
-
releaseTime: status === 'scheduled' ? (rawData === null || rawData === void 0 ? void 0 : rawData[timeType]).second(0).unix().valueOf() : undefined
|
|
27
|
+
releaseTime: status === 'scheduled' ? (rawData === null || rawData === void 0 ? void 0 : rawData[timeType]).second(0).unix().valueOf() : status === 'started' ? ((rawData === null || rawData === void 0 ? void 0 : rawData[timeType]).limitHour || 0) * 60 + ((rawData === null || rawData === void 0 ? void 0 : rawData[timeType]).limitMinute || 0) : undefined
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
30
|
};
|
|
@@ -66,7 +66,9 @@ export var getConfigData = function getConfigData(_ref) {
|
|
|
66
66
|
downloadDataEnable: rawData.downloadDataEnable,
|
|
67
67
|
downloadDataCount: rawData.downloadDataCount,
|
|
68
68
|
scoreTypeInMatch: rawData.scoreTypeInMatch,
|
|
69
|
-
lang: rawData.lang
|
|
69
|
+
lang: rawData.lang,
|
|
70
|
+
showTopNSubmission: rawData.showTopNSubmission,
|
|
71
|
+
showTopNSubmissionCount: rawData.showTopNSubmissionCount
|
|
70
72
|
}
|
|
71
73
|
};
|
|
72
74
|
if (contestType === ContestExamType.Exam) {
|
|
@@ -86,7 +88,7 @@ export var getConfigData = function getConfigData(_ref) {
|
|
|
86
88
|
return updateConfig;
|
|
87
89
|
};
|
|
88
90
|
var AcConfig = /*#__PURE__*/forwardRef(function (_ref3, ref) {
|
|
89
|
-
var _initialValues$contes, _initialValues$contes2, _gradeRelease$schedul, _rankListRelease$sche, _paperRelease$schedul, _answerRelease$schedu, _tipRelease$scheduled;
|
|
91
|
+
var _initialValues$contes, _initialValues$contes2, _gradeRelease$schedul, _rankListRelease$sche, _paperRelease$schedul, _answerRelease$schedu, _answerRelease$schedu2, _answerRelease$schedu3, _tipRelease$scheduled, _tipRelease$scheduled2, _tipRelease$scheduled3;
|
|
90
92
|
var _ref3$type = _ref3.type,
|
|
91
93
|
type = _ref3$type === void 0 ? 'advanced' : _ref3$type,
|
|
92
94
|
_ref3$contestType = _ref3.contestType,
|
|
@@ -128,7 +130,9 @@ var AcConfig = /*#__PURE__*/forwardRef(function (_ref3, ref) {
|
|
|
128
130
|
downloadDataEnable = _ref6.downloadDataEnable,
|
|
129
131
|
downloadDataCount = _ref6.downloadDataCount,
|
|
130
132
|
scoreTypeInMatch = _ref6.scoreTypeInMatch,
|
|
131
|
-
lang = _ref6.lang
|
|
133
|
+
lang = _ref6.lang,
|
|
134
|
+
showTopNSubmission = _ref6.showTopNSubmission,
|
|
135
|
+
showTopNSubmissionCount = _ref6.showTopNSubmissionCount;
|
|
132
136
|
var _ref7 = (initialValues === null || initialValues === void 0 ? void 0 : initialValues.rank) || {},
|
|
133
137
|
rankListShowRealName = _ref7.rankListShowRealName,
|
|
134
138
|
rankShowUserLabel = _ref7.rankShowUserLabel;
|
|
@@ -153,7 +157,10 @@ var AcConfig = /*#__PURE__*/forwardRef(function (_ref3, ref) {
|
|
|
153
157
|
paperRelease: paperRelease === null || paperRelease === void 0 ? void 0 : paperRelease.type,
|
|
154
158
|
paperTime: dayjs.unix((paperRelease === null || paperRelease === void 0 ? void 0 : (_paperRelease$schedul = paperRelease.scheduled) === null || _paperRelease$schedul === void 0 ? void 0 : _paperRelease$schedul.releaseTime) || dayjs().valueOf() / 1000),
|
|
155
159
|
answerRelease: answerRelease === null || answerRelease === void 0 ? void 0 : answerRelease.type,
|
|
156
|
-
answerTime:
|
|
160
|
+
answerTime: (answerRelease === null || answerRelease === void 0 ? void 0 : answerRelease.type) === 'started' ? {
|
|
161
|
+
limitHour: Math.floor(((answerRelease === null || answerRelease === void 0 ? void 0 : (_answerRelease$schedu = answerRelease.scheduled) === null || _answerRelease$schedu === void 0 ? void 0 : _answerRelease$schedu.releaseTime) || 0) / 60),
|
|
162
|
+
limitMinute: ((answerRelease === null || answerRelease === void 0 ? void 0 : (_answerRelease$schedu2 = answerRelease.scheduled) === null || _answerRelease$schedu2 === void 0 ? void 0 : _answerRelease$schedu2.releaseTime) || 0) % 60
|
|
163
|
+
} : dayjs.unix((answerRelease === null || answerRelease === void 0 ? void 0 : (_answerRelease$schedu3 = answerRelease.scheduled) === null || _answerRelease$schedu3 === void 0 ? void 0 : _answerRelease$schedu3.releaseTime) || dayjs().valueOf() / 1000),
|
|
157
164
|
rankListShowRealName: rankListShowRealName,
|
|
158
165
|
rankShowUserLabel: rankShowUserLabel,
|
|
159
166
|
submission: submission === null || submission === void 0 ? void 0 : submission.type,
|
|
@@ -164,13 +171,18 @@ var AcConfig = /*#__PURE__*/forwardRef(function (_ref3, ref) {
|
|
|
164
171
|
lang: lang,
|
|
165
172
|
personalScoreVisibility: personalScoreVisibility,
|
|
166
173
|
tipRelease: tipRelease === null || tipRelease === void 0 ? void 0 : tipRelease.type,
|
|
167
|
-
tipTime:
|
|
174
|
+
tipTime: (tipRelease === null || tipRelease === void 0 ? void 0 : tipRelease.type) === 'started' ? {
|
|
175
|
+
limitHour: Math.floor(((tipRelease === null || tipRelease === void 0 ? void 0 : (_tipRelease$scheduled = tipRelease.scheduled) === null || _tipRelease$scheduled === void 0 ? void 0 : _tipRelease$scheduled.releaseTime) || 0) / 60),
|
|
176
|
+
limitMinute: ((tipRelease === null || tipRelease === void 0 ? void 0 : (_tipRelease$scheduled2 = tipRelease.scheduled) === null || _tipRelease$scheduled2 === void 0 ? void 0 : _tipRelease$scheduled2.releaseTime) || 0) % 60
|
|
177
|
+
} : dayjs.unix((tipRelease === null || tipRelease === void 0 ? void 0 : (_tipRelease$scheduled3 = tipRelease.scheduled) === null || _tipRelease$scheduled3 === void 0 ? void 0 : _tipRelease$scheduled3.releaseTime) || dayjs().valueOf() / 1000),
|
|
168
178
|
scoreTypeInMatch: scoreTypeInMatch,
|
|
169
179
|
rankingMethod: rankingMethod,
|
|
170
180
|
highScoreProgramVisibility: highScoreProgramVisibility,
|
|
171
181
|
downloadDataEnable: downloadDataEnable,
|
|
172
182
|
downloadDataCount: downloadDataCount,
|
|
173
|
-
restriction: restriction === null || restriction === void 0 ? void 0 : restriction.type
|
|
183
|
+
restriction: restriction === null || restriction === void 0 ? void 0 : restriction.type,
|
|
184
|
+
showTopNSubmission: showTopNSubmission,
|
|
185
|
+
showTopNSubmissionCount: showTopNSubmissionCount
|
|
174
186
|
};
|
|
175
187
|
useImperativeHandle(ref, function () {
|
|
176
188
|
return {
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import dayjs from 'dayjs';
|
|
2
|
+
export var CONTEST_TEMPLATES = {
|
|
3
|
+
OI: {
|
|
4
|
+
gradeTime: dayjs(),
|
|
5
|
+
rankListTime: dayjs(),
|
|
6
|
+
paperTime: dayjs(),
|
|
7
|
+
answerTime: dayjs(),
|
|
8
|
+
tipTime: dayjs(),
|
|
9
|
+
gradeRelease: 'afterExam',
|
|
10
|
+
rankListRelease: 'afterGradeRelease',
|
|
11
|
+
paperRelease: 'afterExam',
|
|
12
|
+
answerRelease: 'afterExam',
|
|
13
|
+
tipRelease: 'afterExam',
|
|
14
|
+
submission: 'noEarlySubmission',
|
|
15
|
+
restriction: 'beforeHomeworkExam',
|
|
16
|
+
disorder: [],
|
|
17
|
+
personalScoreVisibility: 'afterExam',
|
|
18
|
+
rankingMethod: 'score',
|
|
19
|
+
highScoreProgramVisibility: 'never',
|
|
20
|
+
downloadDataEnable: false,
|
|
21
|
+
downloadDataCount: 0,
|
|
22
|
+
scoreTypeInMatch: 'latestSubmit',
|
|
23
|
+
lang: ['gcc', 'g++', 'g++11', 'g++14', 'g++17', 'python2.7', 'python3.8', 'java8', 'fpc'],
|
|
24
|
+
showTopNSubmission: false,
|
|
25
|
+
showTopNSubmissionCount: 0,
|
|
26
|
+
rankListShowRealName: false,
|
|
27
|
+
rankShowUserLabel: false,
|
|
28
|
+
submissionLimitTime: {
|
|
29
|
+
limitHour: 0,
|
|
30
|
+
limitMinute: 0
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
XCPC: {
|
|
34
|
+
gradeTime: dayjs(),
|
|
35
|
+
rankListTime: dayjs(),
|
|
36
|
+
paperTime: dayjs(),
|
|
37
|
+
answerTime: dayjs(),
|
|
38
|
+
tipTime: dayjs(),
|
|
39
|
+
gradeRelease: 'afterExam',
|
|
40
|
+
rankListRelease: 'always',
|
|
41
|
+
paperRelease: 'afterExam',
|
|
42
|
+
answerRelease: 'afterExam',
|
|
43
|
+
tipRelease: 'afterExam',
|
|
44
|
+
submission: 'allowEarlySubmission',
|
|
45
|
+
restriction: 'beforeHomeworkExam',
|
|
46
|
+
disorder: [],
|
|
47
|
+
personalScoreVisibility: 'always',
|
|
48
|
+
rankingMethod: 'acNumber',
|
|
49
|
+
highScoreProgramVisibility: 'afterExam',
|
|
50
|
+
downloadDataEnable: false,
|
|
51
|
+
downloadDataCount: 0,
|
|
52
|
+
scoreTypeInMatch: 'maxScore',
|
|
53
|
+
lang: ['gcc', 'g++', 'g++11', 'g++14', 'g++17', 'python2.7', 'python3.8', 'java8', 'fpc'],
|
|
54
|
+
showTopNSubmission: false,
|
|
55
|
+
showTopNSubmissionCount: 0,
|
|
56
|
+
rankListShowRealName: false,
|
|
57
|
+
rankShowUserLabel: false,
|
|
58
|
+
submissionLimitTime: {
|
|
59
|
+
limitHour: 0,
|
|
60
|
+
limitMinute: 0
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
IOI: {
|
|
64
|
+
gradeTime: dayjs().add(1, 'day'),
|
|
65
|
+
rankListTime: dayjs().add(1, 'day'),
|
|
66
|
+
paperTime: dayjs(),
|
|
67
|
+
answerTime: dayjs(),
|
|
68
|
+
tipTime: dayjs(),
|
|
69
|
+
gradeRelease: 'afterExam',
|
|
70
|
+
rankListRelease: 'afterGradeRelease',
|
|
71
|
+
paperRelease: 'afterGradeRelease',
|
|
72
|
+
answerRelease: 'afterApproval',
|
|
73
|
+
tipRelease: 'afterExam',
|
|
74
|
+
submission: 'noEarlySubmission',
|
|
75
|
+
restriction: 'never',
|
|
76
|
+
disorder: [],
|
|
77
|
+
personalScoreVisibility: 'always',
|
|
78
|
+
rankingMethod: 'score',
|
|
79
|
+
highScoreProgramVisibility: 'afterExam',
|
|
80
|
+
downloadDataEnable: false,
|
|
81
|
+
downloadDataCount: 0,
|
|
82
|
+
scoreTypeInMatch: 'maxScore',
|
|
83
|
+
lang: ['gcc', 'g++', 'g++11', 'g++14', 'g++17', 'python2.7', 'python3.8', 'java8', 'fpc'],
|
|
84
|
+
showTopNSubmission: false,
|
|
85
|
+
showTopNSubmissionCount: 0,
|
|
86
|
+
rankListShowRealName: false,
|
|
87
|
+
rankShowUserLabel: false,
|
|
88
|
+
submissionLimitTime: {
|
|
89
|
+
limitHour: 0,
|
|
90
|
+
limitMinute: 0
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
HOMEWORK1: {
|
|
94
|
+
contestTime: 'noLimit',
|
|
95
|
+
gradeTime: dayjs(),
|
|
96
|
+
rankListTime: dayjs(),
|
|
97
|
+
paperTime: dayjs(),
|
|
98
|
+
answerTime: dayjs(),
|
|
99
|
+
tipTime: dayjs(),
|
|
100
|
+
gradeRelease: 'afterExam',
|
|
101
|
+
rankListRelease: 'afterGradeRelease',
|
|
102
|
+
paperRelease: 'afterExam',
|
|
103
|
+
answerRelease: 'afterExam',
|
|
104
|
+
tipRelease: 'always',
|
|
105
|
+
submission: 'allowEarlySubmission',
|
|
106
|
+
restriction: 'never',
|
|
107
|
+
disorder: [],
|
|
108
|
+
personalScoreVisibility: 'always',
|
|
109
|
+
rankingMethod: 'score',
|
|
110
|
+
highScoreProgramVisibility: 'never',
|
|
111
|
+
downloadDataEnable: true,
|
|
112
|
+
downloadDataCount: 5,
|
|
113
|
+
scoreTypeInMatch: 'maxScore',
|
|
114
|
+
lang: ['gcc', 'g++', 'g++11', 'g++14', 'g++17'],
|
|
115
|
+
showTopNSubmission: false,
|
|
116
|
+
showTopNSubmissionCount: 0,
|
|
117
|
+
rankListShowRealName: true,
|
|
118
|
+
rankShowUserLabel: false,
|
|
119
|
+
submissionLimitTime: {
|
|
120
|
+
limitHour: 0,
|
|
121
|
+
limitMinute: 0
|
|
122
|
+
},
|
|
123
|
+
limitTime: {
|
|
124
|
+
limitHour: 0,
|
|
125
|
+
limitMinute: 0
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
HOMEWORK2: {
|
|
129
|
+
contestTime: 'limitTime',
|
|
130
|
+
gradeTime: dayjs(),
|
|
131
|
+
rankListTime: dayjs(),
|
|
132
|
+
paperTime: dayjs(),
|
|
133
|
+
answerTime: dayjs(),
|
|
134
|
+
tipTime: dayjs(),
|
|
135
|
+
gradeRelease: 'afterExam',
|
|
136
|
+
rankListRelease: 'afterGradeRelease',
|
|
137
|
+
paperRelease: 'afterExam',
|
|
138
|
+
answerRelease: 'afterExam',
|
|
139
|
+
tipRelease: 'always',
|
|
140
|
+
submission: 'allowEarlySubmission',
|
|
141
|
+
restriction: 'never',
|
|
142
|
+
disorder: [],
|
|
143
|
+
personalScoreVisibility: 'always',
|
|
144
|
+
rankingMethod: 'score',
|
|
145
|
+
highScoreProgramVisibility: 'never',
|
|
146
|
+
downloadDataEnable: true,
|
|
147
|
+
downloadDataCount: 5,
|
|
148
|
+
scoreTypeInMatch: 'maxScore',
|
|
149
|
+
lang: ['gcc', 'g++', 'g++11', 'g++14', 'g++17'],
|
|
150
|
+
showTopNSubmission: false,
|
|
151
|
+
showTopNSubmissionCount: 0,
|
|
152
|
+
rankListShowRealName: true,
|
|
153
|
+
rankShowUserLabel: false,
|
|
154
|
+
submissionLimitTime: {
|
|
155
|
+
limitHour: 0,
|
|
156
|
+
limitMinute: 0
|
|
157
|
+
},
|
|
158
|
+
limitTime: {
|
|
159
|
+
limitHour: 2,
|
|
160
|
+
limitMinute: 0
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { RawConfig } from '../ac-config/define';
|
|
3
|
+
import { ContestType } from './define';
|
|
4
|
+
interface ConfigTemplateProps {
|
|
5
|
+
onSelect?: (config: Partial<RawConfig>, configType: ContestType) => void;
|
|
6
|
+
}
|
|
7
|
+
declare const ConfigTemplate: ({ onSelect }: ConfigTemplateProps) => React.JSX.Element;
|
|
8
|
+
export default ConfigTemplate;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { Card, Col, message, Popconfirm, Row, Space, Typography } from 'antd';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { useLocale } from "../locales";
|
|
4
|
+
import { prefix } from "../utils/global";
|
|
5
|
+
import { CONTEST_TEMPLATES } from "./define";
|
|
6
|
+
var Text = Typography.Text;
|
|
7
|
+
var ConfigTemplate = function ConfigTemplate(_ref) {
|
|
8
|
+
var onSelect = _ref.onSelect;
|
|
9
|
+
var _useLocale = useLocale('ConfigTemplate'),
|
|
10
|
+
t = _useLocale.format;
|
|
11
|
+
var template = [{
|
|
12
|
+
type: 'OI',
|
|
13
|
+
title: t('OI')
|
|
14
|
+
}, {
|
|
15
|
+
type: 'XCPC',
|
|
16
|
+
title: t('XCPC')
|
|
17
|
+
}, {
|
|
18
|
+
type: 'IOI',
|
|
19
|
+
title: t('IOI')
|
|
20
|
+
}, {
|
|
21
|
+
type: 'HOMEWORK1',
|
|
22
|
+
title: t('Homework_Mode_1')
|
|
23
|
+
}, {
|
|
24
|
+
type: 'HOMEWORK2',
|
|
25
|
+
title: t('Homework_Mode_2')
|
|
26
|
+
}];
|
|
27
|
+
var templateConfig = {
|
|
28
|
+
OI: {
|
|
29
|
+
title: t('OI'),
|
|
30
|
+
features: [{
|
|
31
|
+
text: t('Score_Rank'),
|
|
32
|
+
icon: '►'
|
|
33
|
+
}, {
|
|
34
|
+
text: t('No_Submission_Result_In_Contest'),
|
|
35
|
+
icon: '►'
|
|
36
|
+
}, {
|
|
37
|
+
text: t('Submit_By_Last_Submission'),
|
|
38
|
+
icon: '►'
|
|
39
|
+
}]
|
|
40
|
+
},
|
|
41
|
+
XCPC: {
|
|
42
|
+
title: t('XCPC'),
|
|
43
|
+
features: [{
|
|
44
|
+
text: t('AC_Rank'),
|
|
45
|
+
icon: '►'
|
|
46
|
+
}, {
|
|
47
|
+
text: t('Penalty_Rank'),
|
|
48
|
+
icon: '►'
|
|
49
|
+
}, {
|
|
50
|
+
text: t('Show_Submission_Result'),
|
|
51
|
+
icon: '►'
|
|
52
|
+
}, {
|
|
53
|
+
text: t('Rank_List_Visible'),
|
|
54
|
+
icon: '►'
|
|
55
|
+
}]
|
|
56
|
+
},
|
|
57
|
+
IOI: {
|
|
58
|
+
title: t('IOI'),
|
|
59
|
+
features: [{
|
|
60
|
+
text: t('Score_Rank'),
|
|
61
|
+
icon: '►'
|
|
62
|
+
}, {
|
|
63
|
+
text: t('Submit_By_Highest_Score'),
|
|
64
|
+
icon: '►'
|
|
65
|
+
}, {
|
|
66
|
+
text: t('Show_Submission_Result'),
|
|
67
|
+
icon: '►'
|
|
68
|
+
}]
|
|
69
|
+
},
|
|
70
|
+
HOMEWORK1: {
|
|
71
|
+
title: t('Homework_Mode_1'),
|
|
72
|
+
features: [{
|
|
73
|
+
text: t('No_Homework_Time_Limit'),
|
|
74
|
+
icon: '►'
|
|
75
|
+
}, {
|
|
76
|
+
text: t('Submit_By_Highest_Score'),
|
|
77
|
+
icon: '►'
|
|
78
|
+
}, {
|
|
79
|
+
text: t('Personal_Score_Visibility'),
|
|
80
|
+
icon: '►'
|
|
81
|
+
}, {
|
|
82
|
+
text: t('Tip_Visibility'),
|
|
83
|
+
icon: '►'
|
|
84
|
+
}]
|
|
85
|
+
},
|
|
86
|
+
HOMEWORK2: {
|
|
87
|
+
title: t('Homework_Mode_2'),
|
|
88
|
+
features: [{
|
|
89
|
+
text: t('Homework_Time_Limit_120_Minutes'),
|
|
90
|
+
icon: '►'
|
|
91
|
+
}, {
|
|
92
|
+
text: t('Submit_By_Highest_Score'),
|
|
93
|
+
icon: '►'
|
|
94
|
+
}, {
|
|
95
|
+
text: t('Personal_Score_Visibility'),
|
|
96
|
+
icon: '►'
|
|
97
|
+
}, {
|
|
98
|
+
text: t('Tip_Visibility'),
|
|
99
|
+
icon: '►'
|
|
100
|
+
}]
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
return /*#__PURE__*/React.createElement(Row, {
|
|
104
|
+
gutter: [16, 16]
|
|
105
|
+
}, template.map(function (item) {
|
|
106
|
+
return /*#__PURE__*/React.createElement(Col, {
|
|
107
|
+
span: 8,
|
|
108
|
+
key: item.type
|
|
109
|
+
}, /*#__PURE__*/React.createElement(Popconfirm, {
|
|
110
|
+
title: t('Current_Operation_Hint'),
|
|
111
|
+
"data-testid": "popconfirm",
|
|
112
|
+
onConfirm: function onConfirm() {
|
|
113
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(CONTEST_TEMPLATES[item.type], item.type);
|
|
114
|
+
message.success({
|
|
115
|
+
key: 'success',
|
|
116
|
+
content: t('Cover_successfully')
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}, /*#__PURE__*/React.createElement(Card, {
|
|
120
|
+
className: "".concat(prefix, "-templateCard"),
|
|
121
|
+
hoverable: true,
|
|
122
|
+
"data-testid": "templateCard"
|
|
123
|
+
}, /*#__PURE__*/React.createElement(Space, {
|
|
124
|
+
direction: "vertical",
|
|
125
|
+
size: "small",
|
|
126
|
+
style: {
|
|
127
|
+
width: '100%'
|
|
128
|
+
}
|
|
129
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
130
|
+
className: "".concat(prefix, "-type")
|
|
131
|
+
}, item.type), /*#__PURE__*/React.createElement(Text, {
|
|
132
|
+
strong: true,
|
|
133
|
+
className: "".concat(prefix, "-title")
|
|
134
|
+
}, templateConfig[item.type].title), /*#__PURE__*/React.createElement("div", {
|
|
135
|
+
className: "".concat(prefix, "-features")
|
|
136
|
+
}, templateConfig[item.type].features.map(function (feature, index) {
|
|
137
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
138
|
+
key: index,
|
|
139
|
+
className: "".concat(prefix, "-featureItem")
|
|
140
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
141
|
+
className: "".concat(prefix, "-icon")
|
|
142
|
+
}, feature.icon), /*#__PURE__*/React.createElement(Text, null, feature.text));
|
|
143
|
+
}))))));
|
|
144
|
+
}));
|
|
145
|
+
};
|
|
146
|
+
export default ConfigTemplate;
|
package/dist/index.d.ts
CHANGED
|
@@ -11,6 +11,9 @@ export type { CodeDetailModalProps } from './code-detail-modal';
|
|
|
11
11
|
export { default as CodeMirrorWrapper } from './code-mirror-wrapper';
|
|
12
12
|
export type { CodeMirrorWrapperProps } from './code-mirror-wrapper';
|
|
13
13
|
export { LangId, Language, Theme } from './code-mirror-wrapper/define';
|
|
14
|
+
export { default as ConfigTemplate } from './config-template';
|
|
15
|
+
export { CONTEST_TEMPLATES } from './config-template/define';
|
|
16
|
+
export type { ContestType } from './config-template/define';
|
|
14
17
|
export { default as ContactButton } from './contact-button';
|
|
15
18
|
export { default as ContestDurationInput } from './contest-duration-input';
|
|
16
19
|
export { default as ContestTimeInput } from './contest-time-input';
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,8 @@ export { default as AnchorXTabs } from "./anchor-x-tabs";
|
|
|
5
5
|
export { default as CodeDetailModal } from "./code-detail-modal";
|
|
6
6
|
export { default as CodeMirrorWrapper } from "./code-mirror-wrapper";
|
|
7
7
|
export { LangId, Language, Theme } from "./code-mirror-wrapper/define";
|
|
8
|
+
export { default as ConfigTemplate } from "./config-template";
|
|
9
|
+
export { CONTEST_TEMPLATES } from "./config-template/define";
|
|
8
10
|
export { default as ContactButton } from "./contact-button";
|
|
9
11
|
export { default as ContestDurationInput } from "./contest-duration-input";
|
|
10
12
|
export { default as ContestTimeInput } from "./contest-time-input";
|
package/dist/locales/en_US.d.ts
CHANGED
|
@@ -153,6 +153,11 @@ declare const _default: {
|
|
|
153
153
|
readonly Time_Setting_Mode_Conversion: "Time Setting Mode Conversion";
|
|
154
154
|
readonly Please_Enter_Correct_Time_Format: "Please Enter Correct Time Format";
|
|
155
155
|
readonly Duration_Cannot_Be_Set_To_Zero: "Duration Cannot Be Set To Zero";
|
|
156
|
+
readonly Show_Top_N_Submissions: "Top N Submissions Display";
|
|
157
|
+
readonly Show_Top_N_Submissions_Extra: "For single problem";
|
|
158
|
+
readonly Top_N_Submissions: "Top N";
|
|
159
|
+
readonly After_Contest_Start: "Display after N mins of contest start";
|
|
160
|
+
readonly After_Contest_Start_N: "N mins of contest start";
|
|
156
161
|
};
|
|
157
162
|
readonly ScoreReport: {
|
|
158
163
|
readonly In_Game_Total_Score: "Timed Score";
|
|
@@ -190,5 +195,29 @@ declare const _default: {
|
|
|
190
195
|
readonly Input_Format: "Input Format: 2025-03-12 12:00";
|
|
191
196
|
readonly Duration: "Duration:";
|
|
192
197
|
};
|
|
198
|
+
readonly ConfigTemplate: {
|
|
199
|
+
readonly OI: "OI";
|
|
200
|
+
readonly XCPC: "XCPC";
|
|
201
|
+
readonly IOI: "IOI";
|
|
202
|
+
readonly Homework_Mode_1: "Homework Mode 1";
|
|
203
|
+
readonly Homework_Mode_2: "Homework Mode 2";
|
|
204
|
+
readonly Score_Rank: "Rank by score";
|
|
205
|
+
readonly AC_Rank: "Rank by AC number";
|
|
206
|
+
readonly Penalty_Rank: "Same score, rank by penalty";
|
|
207
|
+
readonly Show_Submission_Result: "Show submission result in contest";
|
|
208
|
+
readonly Rank_List_Visible: "Rank list always valid";
|
|
209
|
+
readonly No_Homework_Time_Limit: "No homework time limit";
|
|
210
|
+
readonly Submit_By_Highest_Score: "Submit by highest score";
|
|
211
|
+
readonly Personal_Score_Visibility: "Personal score always visible";
|
|
212
|
+
readonly Tip_Visibility: "Tip always visible";
|
|
213
|
+
readonly Cover_successfully: "Cover successfully";
|
|
214
|
+
readonly Current_Homework_Mode_Hint: "Current is homework mode and the configuration does not match, are you sure to cover it?";
|
|
215
|
+
readonly Current_Contest_Mode_Hint: "Current is contest mode and the configuration does not match, are you sure to cover it?";
|
|
216
|
+
readonly Current_Operation_Hint: "Current operation will cover the original configuration, are you sure?";
|
|
217
|
+
readonly Homework_Time_Limit_120_Minutes: "Homework time limit 120 minutes";
|
|
218
|
+
readonly Same_Score_First_AC: "Same score, rank by first AC time";
|
|
219
|
+
readonly No_Submission_Result_In_Contest: "No submission result in contest";
|
|
220
|
+
readonly Submit_By_Last_Submission: "Submit by last submission";
|
|
221
|
+
};
|
|
193
222
|
};
|
|
194
223
|
export default _default;
|
package/dist/locales/en_US.js
CHANGED
|
@@ -152,7 +152,12 @@ export default {
|
|
|
152
152
|
Config_Affects_Submission_Visibility: 'This configuration also affects the submission visibility of problems related to the learning space',
|
|
153
153
|
Time_Setting_Mode_Conversion: 'Time Setting Mode Conversion',
|
|
154
154
|
Please_Enter_Correct_Time_Format: 'Please Enter Correct Time Format',
|
|
155
|
-
Duration_Cannot_Be_Set_To_Zero: 'Duration Cannot Be Set To Zero'
|
|
155
|
+
Duration_Cannot_Be_Set_To_Zero: 'Duration Cannot Be Set To Zero',
|
|
156
|
+
Show_Top_N_Submissions: 'Top N Submissions Display',
|
|
157
|
+
Show_Top_N_Submissions_Extra: 'For single problem',
|
|
158
|
+
Top_N_Submissions: 'Top N',
|
|
159
|
+
After_Contest_Start: 'Display after N mins of contest start',
|
|
160
|
+
After_Contest_Start_N: 'N mins of contest start'
|
|
156
161
|
},
|
|
157
162
|
ScoreReport: {
|
|
158
163
|
In_Game_Total_Score: 'Timed Score',
|
|
@@ -189,5 +194,29 @@ export default {
|
|
|
189
194
|
Please_Enter_Start_Time: 'Please Enter Start Time',
|
|
190
195
|
Input_Format: 'Input Format: 2025-03-12 12:00',
|
|
191
196
|
Duration: 'Duration:'
|
|
197
|
+
},
|
|
198
|
+
ConfigTemplate: {
|
|
199
|
+
OI: 'OI',
|
|
200
|
+
XCPC: 'XCPC',
|
|
201
|
+
IOI: 'IOI',
|
|
202
|
+
Homework_Mode_1: 'Homework Mode 1',
|
|
203
|
+
Homework_Mode_2: 'Homework Mode 2',
|
|
204
|
+
Score_Rank: 'Rank by score',
|
|
205
|
+
AC_Rank: 'Rank by AC number',
|
|
206
|
+
Penalty_Rank: 'Same score, rank by penalty',
|
|
207
|
+
Show_Submission_Result: 'Show submission result in contest',
|
|
208
|
+
Rank_List_Visible: 'Rank list always valid',
|
|
209
|
+
No_Homework_Time_Limit: 'No homework time limit',
|
|
210
|
+
Submit_By_Highest_Score: 'Submit by highest score',
|
|
211
|
+
Personal_Score_Visibility: 'Personal score always visible',
|
|
212
|
+
Tip_Visibility: 'Tip always visible',
|
|
213
|
+
Cover_successfully: 'Cover successfully',
|
|
214
|
+
Current_Homework_Mode_Hint: 'Current is homework mode and the configuration does not match, are you sure to cover it?',
|
|
215
|
+
Current_Contest_Mode_Hint: 'Current is contest mode and the configuration does not match, are you sure to cover it?',
|
|
216
|
+
Current_Operation_Hint: 'Current operation will cover the original configuration, are you sure?',
|
|
217
|
+
Homework_Time_Limit_120_Minutes: 'Homework time limit 120 minutes',
|
|
218
|
+
Same_Score_First_AC: 'Same score, rank by first AC time',
|
|
219
|
+
No_Submission_Result_In_Contest: 'No submission result in contest',
|
|
220
|
+
Submit_By_Last_Submission: 'Submit by last submission'
|
|
192
221
|
}
|
|
193
222
|
};
|
package/dist/locales/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export interface LocaleProviderProps {
|
|
|
7
7
|
}
|
|
8
8
|
export declare const LocaleProvider: ({ children, locale, }: LocaleProviderProps) => React.JSX.Element;
|
|
9
9
|
type MessageMap = typeof zh_CN | typeof en_US;
|
|
10
|
-
export declare const useLocale: <T extends "VisualDataConfig" | "TranslateButton" | "CodeDetailModal" | "ContactButton" | "ErrorPage" | "Feedback" | "MicroApp" | "ContestTimeInput" | "AcConfig" | "ScoreReport" | "SchoolInput" | "ZipCodeSearchInput" | "ContestDurationInput">(slice: T) => {
|
|
10
|
+
export declare const useLocale: <T extends "VisualDataConfig" | "TranslateButton" | "CodeDetailModal" | "ContactButton" | "ErrorPage" | "Feedback" | "MicroApp" | "ContestTimeInput" | "AcConfig" | "ScoreReport" | "SchoolInput" | "ZipCodeSearchInput" | "ContestDurationInput" | "ConfigTemplate">(slice: T) => {
|
|
11
11
|
locale: string;
|
|
12
12
|
format: <U extends keyof MessageMap[T]>(key: U) => ({
|
|
13
13
|
readonly VisualDataConfig: {
|
|
@@ -164,6 +164,11 @@ export declare const useLocale: <T extends "VisualDataConfig" | "TranslateButton
|
|
|
164
164
|
readonly Time_Setting_Mode_Conversion: "时间设置模式转化";
|
|
165
165
|
readonly Please_Enter_Correct_Time_Format: "请输入正确的时间格式";
|
|
166
166
|
readonly Duration_Cannot_Be_Set_To_Zero: "持续时间不能设置为0";
|
|
167
|
+
readonly Show_Top_N_Submissions: "赛中仅显示前n项提交";
|
|
168
|
+
readonly Show_Top_N_Submissions_Extra: "针对单题生效";
|
|
169
|
+
readonly Top_N_Submissions: "前n项";
|
|
170
|
+
readonly After_Contest_Start: "比赛开始后N分钟后显示";
|
|
171
|
+
readonly After_Contest_Start_N: "比赛开始N分钟";
|
|
167
172
|
};
|
|
168
173
|
readonly ScoreReport: {
|
|
169
174
|
readonly In_Game_Total_Score: "赛中总分";
|
|
@@ -201,6 +206,30 @@ export declare const useLocale: <T extends "VisualDataConfig" | "TranslateButton
|
|
|
201
206
|
readonly Input_Format: "输入格式:2025-03-12 12:00";
|
|
202
207
|
readonly Duration: "持续时间:";
|
|
203
208
|
};
|
|
209
|
+
readonly ConfigTemplate: {
|
|
210
|
+
readonly OI: "信息学奥林匹克";
|
|
211
|
+
readonly XCPC: "ACM程序设计竞赛";
|
|
212
|
+
readonly IOI: "国际信息学奥林匹克";
|
|
213
|
+
readonly Homework_Mode_1: "作业模式1";
|
|
214
|
+
readonly Homework_Mode_2: "作业模式2";
|
|
215
|
+
readonly Score_Rank: "按照分数排名";
|
|
216
|
+
readonly AC_Rank: "按照AC题数排名";
|
|
217
|
+
readonly Penalty_Rank: "相同分数按罚时排名";
|
|
218
|
+
readonly Show_Submission_Result: "赛中显示提交结果";
|
|
219
|
+
readonly Rank_List_Visible: "排行榜一直可见";
|
|
220
|
+
readonly No_Homework_Time_Limit: "无作业时长限制";
|
|
221
|
+
readonly Submit_By_Highest_Score: "提交按最高分计分";
|
|
222
|
+
readonly Personal_Score_Visibility: "个人分数始终可见";
|
|
223
|
+
readonly Tip_Visibility: "提示一直可见";
|
|
224
|
+
readonly Cover_successfully: "覆盖成功";
|
|
225
|
+
readonly Current_Homework_Mode_Hint: "当前为作业模式,相关配置不匹配,你确定要覆盖吗?";
|
|
226
|
+
readonly Current_Contest_Mode_Hint: "当前为考试模式,相关配置不匹配,你确定要覆盖吗?";
|
|
227
|
+
readonly Current_Operation_Hint: "当前操作将覆盖原有配置,你确定吗?";
|
|
228
|
+
readonly Homework_Time_Limit_120_Minutes: "作业时长限制120分钟";
|
|
229
|
+
readonly Same_Score_First_AC: "同分按首次AC时间排名";
|
|
230
|
+
readonly No_Submission_Result_In_Contest: "比赛中不显示提交结果";
|
|
231
|
+
readonly Submit_By_Last_Submission: "提交按最后一次提交时间计分";
|
|
232
|
+
};
|
|
204
233
|
} | {
|
|
205
234
|
readonly VisualDataConfig: {
|
|
206
235
|
readonly Time_MS: "Time Limit(MS)";
|
|
@@ -356,6 +385,11 @@ export declare const useLocale: <T extends "VisualDataConfig" | "TranslateButton
|
|
|
356
385
|
readonly Time_Setting_Mode_Conversion: "Time Setting Mode Conversion";
|
|
357
386
|
readonly Please_Enter_Correct_Time_Format: "Please Enter Correct Time Format";
|
|
358
387
|
readonly Duration_Cannot_Be_Set_To_Zero: "Duration Cannot Be Set To Zero";
|
|
388
|
+
readonly Show_Top_N_Submissions: "Top N Submissions Display";
|
|
389
|
+
readonly Show_Top_N_Submissions_Extra: "For single problem";
|
|
390
|
+
readonly Top_N_Submissions: "Top N";
|
|
391
|
+
readonly After_Contest_Start: "Display after N mins of contest start";
|
|
392
|
+
readonly After_Contest_Start_N: "N mins of contest start";
|
|
359
393
|
};
|
|
360
394
|
readonly ScoreReport: {
|
|
361
395
|
readonly In_Game_Total_Score: "Timed Score";
|
|
@@ -393,6 +427,30 @@ export declare const useLocale: <T extends "VisualDataConfig" | "TranslateButton
|
|
|
393
427
|
readonly Input_Format: "Input Format: 2025-03-12 12:00";
|
|
394
428
|
readonly Duration: "Duration:";
|
|
395
429
|
};
|
|
430
|
+
readonly ConfigTemplate: {
|
|
431
|
+
readonly OI: "OI";
|
|
432
|
+
readonly XCPC: "XCPC";
|
|
433
|
+
readonly IOI: "IOI";
|
|
434
|
+
readonly Homework_Mode_1: "Homework Mode 1";
|
|
435
|
+
readonly Homework_Mode_2: "Homework Mode 2";
|
|
436
|
+
readonly Score_Rank: "Rank by score";
|
|
437
|
+
readonly AC_Rank: "Rank by AC number";
|
|
438
|
+
readonly Penalty_Rank: "Same score, rank by penalty";
|
|
439
|
+
readonly Show_Submission_Result: "Show submission result in contest";
|
|
440
|
+
readonly Rank_List_Visible: "Rank list always valid";
|
|
441
|
+
readonly No_Homework_Time_Limit: "No homework time limit";
|
|
442
|
+
readonly Submit_By_Highest_Score: "Submit by highest score";
|
|
443
|
+
readonly Personal_Score_Visibility: "Personal score always visible";
|
|
444
|
+
readonly Tip_Visibility: "Tip always visible";
|
|
445
|
+
readonly Cover_successfully: "Cover successfully";
|
|
446
|
+
readonly Current_Homework_Mode_Hint: "Current is homework mode and the configuration does not match, are you sure to cover it?";
|
|
447
|
+
readonly Current_Contest_Mode_Hint: "Current is contest mode and the configuration does not match, are you sure to cover it?";
|
|
448
|
+
readonly Current_Operation_Hint: "Current operation will cover the original configuration, are you sure?";
|
|
449
|
+
readonly Homework_Time_Limit_120_Minutes: "Homework time limit 120 minutes";
|
|
450
|
+
readonly Same_Score_First_AC: "Same score, rank by first AC time";
|
|
451
|
+
readonly No_Submission_Result_In_Contest: "No submission result in contest";
|
|
452
|
+
readonly Submit_By_Last_Submission: "Submit by last submission";
|
|
453
|
+
};
|
|
396
454
|
})[T][U];
|
|
397
455
|
};
|
|
398
456
|
export {};
|
package/dist/locales/zh_CN.d.ts
CHANGED
|
@@ -153,6 +153,11 @@ declare const _default: {
|
|
|
153
153
|
readonly Time_Setting_Mode_Conversion: "时间设置模式转化";
|
|
154
154
|
readonly Please_Enter_Correct_Time_Format: "请输入正确的时间格式";
|
|
155
155
|
readonly Duration_Cannot_Be_Set_To_Zero: "持续时间不能设置为0";
|
|
156
|
+
readonly Show_Top_N_Submissions: "赛中仅显示前n项提交";
|
|
157
|
+
readonly Show_Top_N_Submissions_Extra: "针对单题生效";
|
|
158
|
+
readonly Top_N_Submissions: "前n项";
|
|
159
|
+
readonly After_Contest_Start: "比赛开始后N分钟后显示";
|
|
160
|
+
readonly After_Contest_Start_N: "比赛开始N分钟";
|
|
156
161
|
};
|
|
157
162
|
readonly ScoreReport: {
|
|
158
163
|
readonly In_Game_Total_Score: "赛中总分";
|
|
@@ -190,5 +195,29 @@ declare const _default: {
|
|
|
190
195
|
readonly Input_Format: "输入格式:2025-03-12 12:00";
|
|
191
196
|
readonly Duration: "持续时间:";
|
|
192
197
|
};
|
|
198
|
+
readonly ConfigTemplate: {
|
|
199
|
+
readonly OI: "信息学奥林匹克";
|
|
200
|
+
readonly XCPC: "ACM程序设计竞赛";
|
|
201
|
+
readonly IOI: "国际信息学奥林匹克";
|
|
202
|
+
readonly Homework_Mode_1: "作业模式1";
|
|
203
|
+
readonly Homework_Mode_2: "作业模式2";
|
|
204
|
+
readonly Score_Rank: "按照分数排名";
|
|
205
|
+
readonly AC_Rank: "按照AC题数排名";
|
|
206
|
+
readonly Penalty_Rank: "相同分数按罚时排名";
|
|
207
|
+
readonly Show_Submission_Result: "赛中显示提交结果";
|
|
208
|
+
readonly Rank_List_Visible: "排行榜一直可见";
|
|
209
|
+
readonly No_Homework_Time_Limit: "无作业时长限制";
|
|
210
|
+
readonly Submit_By_Highest_Score: "提交按最高分计分";
|
|
211
|
+
readonly Personal_Score_Visibility: "个人分数始终可见";
|
|
212
|
+
readonly Tip_Visibility: "提示一直可见";
|
|
213
|
+
readonly Cover_successfully: "覆盖成功";
|
|
214
|
+
readonly Current_Homework_Mode_Hint: "当前为作业模式,相关配置不匹配,你确定要覆盖吗?";
|
|
215
|
+
readonly Current_Contest_Mode_Hint: "当前为考试模式,相关配置不匹配,你确定要覆盖吗?";
|
|
216
|
+
readonly Current_Operation_Hint: "当前操作将覆盖原有配置,你确定吗?";
|
|
217
|
+
readonly Homework_Time_Limit_120_Minutes: "作业时长限制120分钟";
|
|
218
|
+
readonly Same_Score_First_AC: "同分按首次AC时间排名";
|
|
219
|
+
readonly No_Submission_Result_In_Contest: "比赛中不显示提交结果";
|
|
220
|
+
readonly Submit_By_Last_Submission: "提交按最后一次提交时间计分";
|
|
221
|
+
};
|
|
193
222
|
};
|
|
194
223
|
export default _default;
|
package/dist/locales/zh_CN.js
CHANGED
|
@@ -152,7 +152,12 @@ export default {
|
|
|
152
152
|
Config_Affects_Submission_Visibility: '该配置同时影响学生学习空间相关题目的提交可见性',
|
|
153
153
|
Time_Setting_Mode_Conversion: '时间设置模式转化',
|
|
154
154
|
Please_Enter_Correct_Time_Format: '请输入正确的时间格式',
|
|
155
|
-
Duration_Cannot_Be_Set_To_Zero: '持续时间不能设置为0'
|
|
155
|
+
Duration_Cannot_Be_Set_To_Zero: '持续时间不能设置为0',
|
|
156
|
+
Show_Top_N_Submissions: '赛中仅显示前n项提交',
|
|
157
|
+
Show_Top_N_Submissions_Extra: '针对单题生效',
|
|
158
|
+
Top_N_Submissions: '前n项',
|
|
159
|
+
After_Contest_Start: '比赛开始后N分钟后显示',
|
|
160
|
+
After_Contest_Start_N: '比赛开始N分钟'
|
|
156
161
|
},
|
|
157
162
|
ScoreReport: {
|
|
158
163
|
In_Game_Total_Score: '赛中总分',
|
|
@@ -189,5 +194,29 @@ export default {
|
|
|
189
194
|
Please_Enter_Start_Time: '请输入开始时间',
|
|
190
195
|
Input_Format: '输入格式:2025-03-12 12:00',
|
|
191
196
|
Duration: '持续时间:'
|
|
197
|
+
},
|
|
198
|
+
ConfigTemplate: {
|
|
199
|
+
OI: '信息学奥林匹克',
|
|
200
|
+
XCPC: 'ACM程序设计竞赛',
|
|
201
|
+
IOI: '国际信息学奥林匹克',
|
|
202
|
+
Homework_Mode_1: '作业模式1',
|
|
203
|
+
Homework_Mode_2: '作业模式2',
|
|
204
|
+
Score_Rank: '按照分数排名',
|
|
205
|
+
AC_Rank: '按照AC题数排名',
|
|
206
|
+
Penalty_Rank: '相同分数按罚时排名',
|
|
207
|
+
Show_Submission_Result: '赛中显示提交结果',
|
|
208
|
+
Rank_List_Visible: '排行榜一直可见',
|
|
209
|
+
No_Homework_Time_Limit: '无作业时长限制',
|
|
210
|
+
Submit_By_Highest_Score: '提交按最高分计分',
|
|
211
|
+
Personal_Score_Visibility: '个人分数始终可见',
|
|
212
|
+
Tip_Visibility: '提示一直可见',
|
|
213
|
+
Cover_successfully: '覆盖成功',
|
|
214
|
+
Current_Homework_Mode_Hint: '当前为作业模式,相关配置不匹配,你确定要覆盖吗?',
|
|
215
|
+
Current_Contest_Mode_Hint: '当前为考试模式,相关配置不匹配,你确定要覆盖吗?',
|
|
216
|
+
Current_Operation_Hint: '当前操作将覆盖原有配置,你确定吗?',
|
|
217
|
+
Homework_Time_Limit_120_Minutes: '作业时长限制120分钟',
|
|
218
|
+
Same_Score_First_AC: '同分按首次AC时间排名',
|
|
219
|
+
No_Submission_Result_In_Contest: '比赛中不显示提交结果',
|
|
220
|
+
Submit_By_Last_Submission: '提交按最后一次提交时间计分'
|
|
192
221
|
}
|
|
193
222
|
};
|
package/dist/styles/index.css
CHANGED
|
@@ -780,3 +780,37 @@
|
|
|
780
780
|
font-size: 14px;
|
|
781
781
|
color: rgba(0, 0, 0, 0.4509803922);
|
|
782
782
|
}
|
|
783
|
+
|
|
784
|
+
.x-star-design-templateCard {
|
|
785
|
+
height: 100%;
|
|
786
|
+
transition: all 0.3s;
|
|
787
|
+
cursor: pointer;
|
|
788
|
+
}
|
|
789
|
+
.x-star-design-templateCard:hover {
|
|
790
|
+
transform: translateY(-2px);
|
|
791
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
|
|
792
|
+
}
|
|
793
|
+
.x-star-design-templateCard.selected {
|
|
794
|
+
border: 2px solid #1990fe;
|
|
795
|
+
}
|
|
796
|
+
.x-star-design-templateCard .x-star-design-type {
|
|
797
|
+
padding: 2px 8px;
|
|
798
|
+
width: fit-content;
|
|
799
|
+
border-radius: 4px;
|
|
800
|
+
color: #1990fe;
|
|
801
|
+
background-color: #e6f4ff;
|
|
802
|
+
}
|
|
803
|
+
.x-star-design-templateCard .x-star-design-title {
|
|
804
|
+
display: block;
|
|
805
|
+
margin-bottom: 12px;
|
|
806
|
+
font-size: 16px;
|
|
807
|
+
}
|
|
808
|
+
.x-star-design-templateCard .x-star-design-features .x-star-design-featureItem {
|
|
809
|
+
display: flex;
|
|
810
|
+
align-items: center;
|
|
811
|
+
margin-bottom: 8px;
|
|
812
|
+
}
|
|
813
|
+
.x-star-design-templateCard .x-star-design-features .x-star-design-featureItem .x-star-design-icon {
|
|
814
|
+
margin-right: 8px;
|
|
815
|
+
color: #1990fe;
|
|
816
|
+
}
|