ui: problemconfig: patch autoconfigure

pull/541/head
undefined 2 years ago
parent 6c6147d050
commit 9497c19447
No known key found for this signature in database

@ -111,11 +111,16 @@ export function SubtaskConfigTree() {
const store = useStore<RootState>(); const store = useStore<RootState>();
function autoConfigure() { function autoConfigure() {
const state = store.getState(); const state = store.getState();
const subtasks = readSubtasksFromFiles(state.testdata, state.config); const subtasks = readSubtasksFromFiles(state.testdata.map((t) => t.name), state.config);
const cases = subtasks.reduce((a, b) => a.concat(b.cases), []);
dispatch({ dispatch({
type: 'CONFIG_AUTOCASES_UPDATE', type: 'CONFIG_AUTOCASES_UPDATE',
subtasks: normalizeSubtasks(subtasks, (i) => i, state.config.time, state.config.memory, true), subtasks: normalizeSubtasks(subtasks, (i) => i, state.config.time, state.config.memory, true),
}); });
dispatch({
type: 'problemconfig/delTestcases',
cases,
});
} }
return ( return (
<div className="bp4-tree"> <div className="bp4-tree">

@ -161,6 +161,10 @@ export default function reducer(state = {
} }
return { ...state, subtasks, __cases }; return { ...state, subtasks, __cases };
} }
case 'problemconfig/delTestcases': {
const testcases = action.cases;
return { ...state, __cases: state.__cases.filter((i) => !testcases.find((j) => i.input === j.input && i.output === j.output)) };
}
case 'problemconfig/deleteSubtask': { case 'problemconfig/deleteSubtask': {
const subtasks = state.subtasks.filter((i) => i.id !== action.id); const subtasks = state.subtasks.filter((i) => i.id !== action.id);
return { ...state, subtasks }; return { ...state, subtasks };

@ -124,6 +124,8 @@ export function SubtaskSettings(props: SubtaskSettingsProps) {
<li className="bp4-tree-node"> <li className="bp4-tree-node">
<div className="bp4-tree-node-content"> <div className="bp4-tree-node-content">
<span className="bp4-tree-node-caret-none bp4-icon-standard"></span> <span className="bp4-tree-node-caret-none bp4-icon-standard"></span>
<Icon icon="asterisk" />
&nbsp;&nbsp;
<span className="bp4-tree-node-label">{i18n('Scoring method')}</span> <span className="bp4-tree-node-label">{i18n('Scoring method')}</span>
<span className="bp4-tree-node-secondary-label"> <span className="bp4-tree-node-secondary-label">
<select className="compact select" value={ctype} onChange={(e) => setType(e.target.value)}> <select className="compact select" value={ctype} onChange={(e) => setType(e.target.value)}>

@ -1,6 +1,6 @@
{ {
"name": "@hydrooj/ui-default", "name": "@hydrooj/ui-default",
"version": "4.48.3", "version": "4.48.4",
"author": "undefined <i@undefined.moe>", "author": "undefined <i@undefined.moe>",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "index.ts", "main": "index.ts",

@ -248,7 +248,7 @@ const SubtaskMatcher: MatchRule[] = [
(a) => (a[1].includes('input') ? `${a[1] + a[2]}.txt`.replace(/input/g, 'output') : null), (a) => (a[1].includes('input') ? `${a[1] + a[2]}.txt`.replace(/input/g, 'output') : null),
], ],
id: (a) => +a[2], id: (a) => +a[2],
subtask: () => 0, subtask: () => 1,
preferredScorerType: 'sum', preferredScorerType: 'sum',
}, },
{ {
@ -258,7 +258,7 @@ const SubtaskMatcher: MatchRule[] = [
(a) => `${a[1]}.ou${a[2]}`.replace(/input/g, 'output'), (a) => `${a[1]}.ou${a[2]}`.replace(/input/g, 'output'),
], ],
id: (a) => +a[2], id: (a) => +a[2],
subtask: () => 0, subtask: () => 1,
preferredScorerType: 'sum', preferredScorerType: 'sum',
}, },
{ {

Loading…
Cancel
Save