diff --git a/packages/hydrooj/src/handler/problem.ts b/packages/hydrooj/src/handler/problem.ts
index 1bad852ea..efab4ce4f 100644
--- a/packages/hydrooj/src/handler/problem.ts
+++ b/packages/hydrooj/src/handler/problem.ts
@@ -591,9 +591,7 @@ export class ProblemCreateHandler extends Handler {
export class ProblemPrefixListHandler extends Handler {
@param('prefix', Types.Name)
async get(domainId: string, prefix: string) {
- this.response.body = {
- pdocs: await problem.getPrefixList(domainId, prefix),
- };
+ this.response.body = await problem.getPrefixList(domainId, prefix);
}
}
diff --git a/packages/ui-default/.eslintrc.js b/packages/ui-default/.eslintrc.js
index c542fe1b3..9c72d66ba 100644
--- a/packages/ui-default/.eslintrc.js
+++ b/packages/ui-default/.eslintrc.js
@@ -50,19 +50,18 @@ module.exports = {
rules: {
// FIXME A bug with eslint-parser
'template-curly-spacing': 'off',
- indent: 'off',
'comma-dangle': [
'error',
'always-multiline',
],
- // indent: [
- // 'error',
- // 2,
- // {
- // SwitchCase: 0,
- // },
- // ],
+ indent: [
+ 'error',
+ 2,
+ {
+ SwitchCase: 0,
+ },
+ ],
'max-len': ['error', 150],
quotes: 'warn',
'class-methods-use-this': 'off',
diff --git a/packages/ui-default/components/autocomplete/ProblemSelectAutoComplete.js b/packages/ui-default/components/autocomplete/ProblemSelectAutoComplete.js
index 1eb3c194a..6a3d89586 100644
--- a/packages/ui-default/components/autocomplete/ProblemSelectAutoComplete.js
+++ b/packages/ui-default/components/autocomplete/ProblemSelectAutoComplete.js
@@ -2,21 +2,21 @@ import _ from 'lodash';
import tpl from 'vj/utils/tpl';
import request from 'vj/utils/request';
import DOMAttachedObject from 'vj/components/DOMAttachedObject';
-import AutoComplete from '.';
+import AutoComplete from './index';
function getText(pdoc) {
- return pdoc.docId;
+ return pdoc.docId;
}
-function getItems(val) {
- return request.get('/problem/list', { q: val });
+function getItems(prefix) {
+ return request.get('/problem/list', { prefix });
}
function renderItem(pdoc) {
- return tpl`
+ return tpl`
@@ -24,18 +24,18 @@ function renderItem(pdoc) {
}
export default class ProblemSelectAutoComplete extends AutoComplete {
- static DOMAttachKey = 'vjProblemSelectAutoCompleteInstance';
+ static DOMAttachKey = 'vjProblemSelectAutoCompleteInstance';
- constructor($dom, options) {
- super($dom, {
- classes: 'problem-select',
- items: getItems,
- render: renderItem,
- text: getText,
- ...options,
- });
- }
+ constructor($dom, options) {
+ super($dom, {
+ classes: 'problem-select',
+ items: getItems,
+ render: renderItem,
+ text: getText,
+ ...options,
+ });
+ }
}
_.assign(ProblemSelectAutoComplete, DOMAttachedObject);
-window.Hydro.components.UserSelectAutoComplete = ProblemSelectAutoComplete;
+window.Hydro.components.ProblemSelectAutoComplete = ProblemSelectAutoComplete;
diff --git a/packages/ui-default/components/autocomplete/autoComplete.page.js b/packages/ui-default/components/autocomplete/autoComplete.page.js
deleted file mode 100644
index 5183d43fc..000000000
--- a/packages/ui-default/components/autocomplete/autoComplete.page.js
+++ /dev/null
@@ -1,12 +0,0 @@
-import { AutoloadPage } from 'vj/misc/Page';
-import UserSelectAutoComplete from './UserSelectAutoComplete';
-import DomainSelectAutoComplete from './DomainSelectAutoComplete';
-import ProblemSelectAutoComplete from './ProblemSelectAutoComplete';
-
-const page = new AutoloadPage('autocomplete', () => {
- UserSelectAutoComplete.getOrConstruct($('[autocomplete="user"]'));
- DomainSelectAutoComplete.getOrConstruct($('[autocomplete="domain"]'));
- ProblemSelectAutoComplete.getOrConstruct($('[autocomplete="problem"]'));
-});
-
-export default page;
diff --git a/packages/ui-default/pages/contest_edit.page.js b/packages/ui-default/pages/contest_edit.page.js
new file mode 100644
index 000000000..f0649d573
--- /dev/null
+++ b/packages/ui-default/pages/contest_edit.page.js
@@ -0,0 +1,9 @@
+import { NamedPage } from 'vj/misc/Page';
+import ProblemSelectAutoComplete from 'vj/components/autocomplete/ProblemSelectAutoComplete';
+
+const page = new NamedPage(['contest_edit', 'contest_create'], () => {
+ console.log($('[name="pids"]'));
+ ProblemSelectAutoComplete.getOrConstruct($('[name="pids"]'));
+});
+
+export default page;
diff --git a/packages/ui-default/templates/components/form.html b/packages/ui-default/templates/components/form.html
index 9be28d33c..226e5a185 100644
--- a/packages/ui-default/templates/components/form.html
+++ b/packages/ui-default/templates/components/form.html
@@ -47,6 +47,7 @@
{% set disabled = args.disabled or false %}
{% set required = args.required or false %}
{% set autofocus = args.autofocus or false %}
+{% set noAutocomplete = args.noAutocomplete or false %}
{% set extra_style = args.extra_style or false %}
{% set date = args.date or false %}
{% set time = args.time or false %}
@@ -54,6 +55,7 @@
{% if disabled %}disabled{% endif %}
{% if required %}required{% endif %}
{% if autofocus %}autofocus data-autofocus{% endif %}
+ {% if noAutocomplete %}autocomplete="off"{% endif %}
{% if date %}data-pick-date{% endif %}
{% if time %}data-pick-time{% endif %}
{% if extra_style %}style="{{extra_style}}"{% endif %}
diff --git a/packages/ui-default/templates/contest_edit.html b/packages/ui-default/templates/contest_edit.html
index 4cff1e971..c884467ba 100644
--- a/packages/ui-default/templates/contest_edit.html
+++ b/packages/ui-default/templates/contest_edit.html
@@ -62,7 +62,9 @@
columns:null,
label:'Problems',
name:'pids',
- value:pids
+ value:pids,
+ noAutocomplete:true,
+ placeholder:_("Seperated with ','")
}) }}
{{ form.form_textarea({
columns:null,