diff --git a/packages/hydrooj/src/upgrade.ts b/packages/hydrooj/src/upgrade.ts index 2bbe6ff6..81614060 100644 --- a/packages/hydrooj/src/upgrade.ts +++ b/packages/hydrooj/src/upgrade.ts @@ -767,15 +767,14 @@ const scripts: UpgradeScript[] = [ if (typeof langs[lang] !== 'string') continue; langs[lang] = processSingleLanguage(langs[lang]); } - delete config.outputs; await problem.edit(ddoc._id, pdoc.docId, { content: JSON.stringify(langs) }); } } catch (e) { const content = processSingleLanguage(pdoc.content); - delete config.outputs; await problem.edit(ddoc._id, pdoc.docId, { content }); } uids.add(pdoc.owner); + delete config.outputs; await problem.addTestdata(ddoc._id, pdoc.docId, 'config.yaml', Buffer.from(yaml.dump(config))); } catch (e) { console.error(e); } } diff --git a/packages/ui-default/components/objective-question/index.jsx b/packages/ui-default/components/objective-question/index.jsx deleted file mode 100644 index c810c25a..00000000 --- a/packages/ui-default/components/objective-question/index.jsx +++ /dev/null @@ -1,83 +0,0 @@ -import React from 'react'; -import { sortBy } from 'lodash'; -import request from 'vj/utils/request'; -import Notification from 'vj/components/notification'; - -export default class ObjectiveContainer extends React.PureComponent { - constructor(args) { - super(args); - this.state = {}; - this.onChange = this.onChange.bind(this); - this.onSubmit = this.onSubmit.bind(this); - } - - onChange(ev) { - this.setState({ [ev.target.name]: ev.target.value }); - } - - onSubmit(ev) { - ev.preventDefault(); - const entries = sortBy(Object.entries(this.state).map((i) => [+i[0], i[1]])); - const total = entries[entries.length - 1][0]; - const ans = new Array(total).fill(''); - entries.forEach((i) => ans[i[0]] = i[1]); // eslint-disable-line - request - .post(this.props.target, { - lang: '_', - code: ans.join('\n'), - }) - .then((res) => { - window.location.href = res.url; - }) - .catch((e) => { - Notification.error(e.message); - }); - } - - Textbox(args, name) { - return ( - - ); - } - - Radio(args, name) { - return ( - <> - {name + 1}. {args.desc.split('\n').map((i, index) => { - if (index) return <>
{i}; - return i; - })} - {args.choices.map((i) => ( - - ))} - - ); - } - - render() { - return ( -
- {this.props.panel.map((i, name) => ( -
-
- {i.choices ? this.Radio(i, name) : this.Textbox(i, name)} -
-
- ))} - {document.getElementsByClassName('nav__item--round').length - ? - : } -
- ); - } -}