mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
ui: judge_config: fix extra_files config (#355)
This commit is contained in:
1 parent
a9a7b3a451
commit
b5e312b609
5 files changed
+30
-9
No files matched your search
@@ -36,9 +36,17 @@ function FileIOConfig() {
|
|||||||
|
|
||||||
function ExtraFilesConfig() {
|
function ExtraFilesConfig() {
|
||||||
const Files = useSelector((state: RootState) => state.testdata);
|
const Files = useSelector((state: RootState) => state.testdata);
|
||||||
const userExtraFiles = useSelector((state: RootState) => state.config.user_extra_files);
|
const userExtraFiles = useSelector((state: RootState) => state.config.user_extra_files) || [];
|
||||||
const judgeExtraFiles = useSelector((state: RootState) => state.config.judge_extra_files);
|
const judgeExtraFiles = useSelector((state: RootState) => state.config.judge_extra_files) || [];
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
|
const userRef = React.useRef<any>();
|
||||||
|
const judgeRef = React.useRef<any>();
|
||||||
|
React.useEffect(() => {
|
||||||
|
userRef.current.setSelectedKeys(userExtraFiles);
|
||||||
|
}, [JSON.stringify(userExtraFiles)]);
|
||||||
|
React.useEffect(() => {
|
||||||
|
judgeRef.current.setSelectedKeys(judgeExtraFiles);
|
||||||
|
}, [JSON.stringify(judgeExtraFiles)]);
|
||||||
return (
|
return (
|
||||||
<FormItem columns={12} label="ExtraFilesTabs" disableLabel>
|
<FormItem columns={12} label="ExtraFilesTabs" disableLabel>
|
||||||
<Tabs id="ExtraFilesTabs">
|
<Tabs id="ExtraFilesTabs">
|
||||||
@@ -47,8 +55,9 @@ function ExtraFilesConfig() {
|
|||||||
title={i18n('user_extra_files')}
|
title={i18n('user_extra_files')}
|
||||||
panel={(
|
panel={(
|
||||||
<FileSelectAutoComplete
|
<FileSelectAutoComplete
|
||||||
|
ref={userRef}
|
||||||
data={Files}
|
data={Files}
|
||||||
selectedKeys={userExtraFiles || []}
|
selectedKeys={userExtraFiles}
|
||||||
onChange={(val) => dispatch({ type: 'CONFIG_FORM_UPDATE', key: 'user_extra_files', value: val.split(',') })}
|
onChange={(val) => dispatch({ type: 'CONFIG_FORM_UPDATE', key: 'user_extra_files', value: val.split(',') })}
|
||||||
multi
|
multi
|
||||||
/>
|
/>
|
||||||
@@ -59,8 +68,9 @@ function ExtraFilesConfig() {
|
|||||||
title={i18n('judge_extra_files')}
|
title={i18n('judge_extra_files')}
|
||||||
panel={(
|
panel={(
|
||||||
<FileSelectAutoComplete
|
<FileSelectAutoComplete
|
||||||
|
ref={judgeRef}
|
||||||
data={Files}
|
data={Files}
|
||||||
selectedKeys={judgeExtraFiles || []}
|
selectedKeys={judgeExtraFiles}
|
||||||
onChange={(val) => dispatch({ type: 'CONFIG_FORM_UPDATE', key: 'judge_extra_files', value: val.split(',') })}
|
onChange={(val) => dispatch({ type: 'CONFIG_FORM_UPDATE', key: 'judge_extra_files', value: val.split(',') })}
|
||||||
multi
|
multi
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -163,12 +163,22 @@ function GlobalTaskConfig() {
|
|||||||
|
|
||||||
export function TaskConfig() {
|
export function TaskConfig() {
|
||||||
const len = useSelector((state: RootState) => state.config.subtasks?.length);
|
const len = useSelector((state: RootState) => state.config.subtasks?.length);
|
||||||
|
const dispatch = useDispatch();
|
||||||
return (
|
return (
|
||||||
<FormItem columns={12} label="Task Settings">
|
<FormItem columns={12} label="Task Settings">
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<GlobalTaskConfig />
|
<GlobalTaskConfig />
|
||||||
<FormItem columns={12} label="TestCases" disableLabel>
|
<FormItem columns={12} label="TestCases" disableLabel>
|
||||||
{len && [...Array(len).keys()].map((i) => <SubtasksTable index={i} key={i} />)}
|
{len > 0
|
||||||
|
? [...Array(len).keys()].map((i) => <SubtasksTable index={i} key={i} />)
|
||||||
|
: (
|
||||||
|
<>
|
||||||
|
<span>Subtasks # </span>
|
||||||
|
<a onClick={() => dispatch({ type: 'CONFIG_SUBTASK_UPDATE', id: 0, key: 'add' })}>
|
||||||
|
<span className="icon icon-add"></span>
|
||||||
|
</a>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</FormItem>
|
</FormItem>
|
||||||
</div>
|
</div>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ export function CasesTable({ index }) {
|
|||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{len && [...Array(len).keys()].map((i) => <TestCaseEntry index={index} subindex={i} key={i} />)}
|
{len > 0 && [...Array(len).keys()].map((i) => <TestCaseEntry index={index} subindex={i} key={i} />)}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -53,8 +53,9 @@ export default function reducer(state = { type: 'default', __loaded: false } as
|
|||||||
} else if (action.key === 'cases-delete') {
|
} else if (action.key === 'cases-delete') {
|
||||||
subsubtasks.cases = subsubtasks.cases.filter((k, v) => v !== action.value);
|
subsubtasks.cases = subsubtasks.cases.filter((k, v) => v !== action.value);
|
||||||
}
|
}
|
||||||
} else if (action.key === 'add') subtasks.push({ cases: [] });
|
} else if (action.key === 'add') {
|
||||||
else if (action.key === 'delete') return { ...state, subtasks: subtasks.filter((k, v) => v !== action.id) };
|
return { ...state, subtasks: [...subtasks, { time: state.time || '1s', memory: state.memory || '256m', cases: [] }] };
|
||||||
|
} else if (action.key === 'delete') return { ...state, subtasks: subtasks.filter((k, v) => v !== action.id) };
|
||||||
else {
|
else {
|
||||||
if (action.value === '' || (action.key === 'if' && action.value.join('') === '')) delete subsubtasks[action.key];
|
if (action.value === '' || (action.key === 'if' && action.value.join('') === '')) delete subsubtasks[action.key];
|
||||||
else subsubtasks[action.key] = action.value;
|
else subsubtasks[action.key] = action.value;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@hydrooj/ui-default",
|
"name": "@hydrooj/ui-default",
|
||||||
"version": "4.36.0",
|
"version": "4.36.1",
|
||||||
"author": "undefined <i@undefined.moe>",
|
"author": "undefined <i@undefined.moe>",
|
||||||
"license": "AGPL-3.0",
|
"license": "AGPL-3.0",
|
||||||
"main": "hydro.js",
|
"main": "hydro.js",
|
||||||
|
|||||||
Reference in new issue
Block a user