import { Card, InputGroup, Tab, Tabs, Tag, } from '@blueprintjs/core'; import React from 'react'; import { useDispatch, useSelector } from 'react-redux'; import i18n from 'vj/utils/i18n'; import CustomSelectAutoComplete from '../autocomplete/components/CustomSelectAutoComplete'; import FileSelectAutoComplete from '../autocomplete/components/FileSelectAutoComplete'; import { FormItem } from './BasicForm'; import ProblemType from './ProblemType'; import type { RootState } from './reducer/index'; import { TaskConfig } from './SubtaskTable'; function FileIOConfig() { const filename = useSelector((state: RootState) => state.config.filename); const dispatch = useDispatch(); return (
.in/.out} value={filename || ''} onChange={(ev) => { dispatch({ type: 'CONFIG_FORM_UPDATE', key: 'filename', value: ev.currentTarget.value }); }} fill />
); } function ExtraFilesConfig() { const Files = useSelector((state: RootState) => state.testdata); const userExtraFiles = useSelector((state: RootState) => state.config.user_extra_files) || []; const judgeExtraFiles = useSelector((state: RootState) => state.config.judge_extra_files) || []; const dispatch = useDispatch(); const userRef = React.useRef(); const judgeRef = React.useRef(); return ( dispatch({ type: 'CONFIG_FORM_UPDATE', key: 'user_extra_files', value: val.split(',') })} multi /> )} /> dispatch({ type: 'CONFIG_FORM_UPDATE', key: 'judge_extra_files', value: val.split(',') })} multi /> )} /> ); } function LangConfig() { const langs = useSelector((state: RootState) => state.config.langs) || []; const prefixes = new Set(Object.keys(window.LANGS).filter((i) => i.includes('.')).map((i) => i.split('.')[0])); const data = Object.keys(window.LANGS).filter((i) => !prefixes.has(i)) .map((i) => ({ name: window.LANGS[i].display, _id: i })); const dispatch = useDispatch(); const ref = React.useRef(); const selectedKeys = langs.filter((i) => !prefixes.has(i)); return ( { const value = val.split(','); value.push(...Array.from(new Set(value.filter((i) => i.includes('.')).map((i) => i.split('.')[0])))); dispatch({ type: 'CONFIG_FORM_UPDATE', key: 'langs', value }); }} multi /> ); } export default function ProblemConfigForm() { const Type = useSelector((state: RootState) => state.config.type); return (
{Type === 'default' && } {!['submit_answer', 'objective'].includes(Type) && ( <> )}
); }