mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
ui: add ProblemSelectAutoComplete for contest_edit
This commit is contained in:
1 parent
5bd851028c
commit
b88b6ca046
7 files changed
+39
-41
No files matched your search
@@ -591,9 +591,7 @@ export class ProblemCreateHandler extends Handler {
|
|||||||
export class ProblemPrefixListHandler extends Handler {
|
export class ProblemPrefixListHandler extends Handler {
|
||||||
@param('prefix', Types.Name)
|
@param('prefix', Types.Name)
|
||||||
async get(domainId: string, prefix: string) {
|
async get(domainId: string, prefix: string) {
|
||||||
this.response.body = {
|
this.response.body = await problem.getPrefixList(domainId, prefix);
|
||||||
pdocs: await problem.getPrefixList(domainId, prefix),
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,19 +50,18 @@ module.exports = {
|
|||||||
rules: {
|
rules: {
|
||||||
// FIXME A bug with eslint-parser
|
// FIXME A bug with eslint-parser
|
||||||
'template-curly-spacing': 'off',
|
'template-curly-spacing': 'off',
|
||||||
indent: 'off',
|
|
||||||
|
|
||||||
'comma-dangle': [
|
'comma-dangle': [
|
||||||
'error',
|
'error',
|
||||||
'always-multiline',
|
'always-multiline',
|
||||||
],
|
],
|
||||||
// indent: [
|
indent: [
|
||||||
// 'error',
|
'error',
|
||||||
// 2,
|
2,
|
||||||
// {
|
{
|
||||||
// SwitchCase: 0,
|
SwitchCase: 0,
|
||||||
// },
|
},
|
||||||
// ],
|
],
|
||||||
'max-len': ['error', 150],
|
'max-len': ['error', 150],
|
||||||
quotes: 'warn',
|
quotes: 'warn',
|
||||||
'class-methods-use-this': 'off',
|
'class-methods-use-this': 'off',
|
||||||
|
|||||||
@@ -2,21 +2,21 @@ import _ from 'lodash';
|
|||||||
import tpl from 'vj/utils/tpl';
|
import tpl from 'vj/utils/tpl';
|
||||||
import request from 'vj/utils/request';
|
import request from 'vj/utils/request';
|
||||||
import DOMAttachedObject from 'vj/components/DOMAttachedObject';
|
import DOMAttachedObject from 'vj/components/DOMAttachedObject';
|
||||||
import AutoComplete from '.';
|
import AutoComplete from './index';
|
||||||
|
|
||||||
function getText(pdoc) {
|
function getText(pdoc) {
|
||||||
return pdoc.docId;
|
return pdoc.docId;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getItems(val) {
|
function getItems(prefix) {
|
||||||
return request.get('/problem/list', { q: val });
|
return request.get('/problem/list', { prefix });
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderItem(pdoc) {
|
function renderItem(pdoc) {
|
||||||
return tpl`
|
return tpl`
|
||||||
<div class="media">
|
<div class="media">
|
||||||
<div class="media__body medium">
|
<div class="media__body medium">
|
||||||
<div class="problem-select__name">${pdoc.pid ? `${pdoc.pid}` : ''}${pdoc.title}</div>
|
<div class="problem-select__name">${pdoc.pid ? `${pdoc.pid} ` : ''}${pdoc.title}</div>
|
||||||
<div class="problem-select__id">ID = ${pdoc.docId}</div>
|
<div class="problem-select__id">ID = ${pdoc.docId}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -24,18 +24,18 @@ function renderItem(pdoc) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export default class ProblemSelectAutoComplete extends AutoComplete {
|
export default class ProblemSelectAutoComplete extends AutoComplete {
|
||||||
static DOMAttachKey = 'vjProblemSelectAutoCompleteInstance';
|
static DOMAttachKey = 'vjProblemSelectAutoCompleteInstance';
|
||||||
|
|
||||||
constructor($dom, options) {
|
constructor($dom, options) {
|
||||||
super($dom, {
|
super($dom, {
|
||||||
classes: 'problem-select',
|
classes: 'problem-select',
|
||||||
items: getItems,
|
items: getItems,
|
||||||
render: renderItem,
|
render: renderItem,
|
||||||
text: getText,
|
text: getText,
|
||||||
...options,
|
...options,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_.assign(ProblemSelectAutoComplete, DOMAttachedObject);
|
_.assign(ProblemSelectAutoComplete, DOMAttachedObject);
|
||||||
window.Hydro.components.UserSelectAutoComplete = ProblemSelectAutoComplete;
|
window.Hydro.components.ProblemSelectAutoComplete = ProblemSelectAutoComplete;
|
||||||
@@ -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;
|
|
||||||
@@ -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;
|
||||||
@@ -47,6 +47,7 @@
|
|||||||
{% set disabled = args.disabled or false %}
|
{% set disabled = args.disabled or false %}
|
||||||
{% set required = args.required or false %}
|
{% set required = args.required or false %}
|
||||||
{% set autofocus = args.autofocus or false %}
|
{% set autofocus = args.autofocus or false %}
|
||||||
|
{% set noAutocomplete = args.noAutocomplete or false %}
|
||||||
{% set extra_style = args.extra_style or false %}
|
{% set extra_style = args.extra_style or false %}
|
||||||
{% set date = args.date or false %}
|
{% set date = args.date or false %}
|
||||||
{% set time = args.time or false %}
|
{% set time = args.time or false %}
|
||||||
@@ -54,6 +55,7 @@
|
|||||||
{% if disabled %}disabled{% endif %}
|
{% if disabled %}disabled{% endif %}
|
||||||
{% if required %}required{% endif %}
|
{% if required %}required{% endif %}
|
||||||
{% if autofocus %}autofocus data-autofocus{% endif %}
|
{% if autofocus %}autofocus data-autofocus{% endif %}
|
||||||
|
{% if noAutocomplete %}autocomplete="off"{% endif %}
|
||||||
{% if date %}data-pick-date{% endif %}
|
{% if date %}data-pick-date{% endif %}
|
||||||
{% if time %}data-pick-time{% endif %}
|
{% if time %}data-pick-time{% endif %}
|
||||||
{% if extra_style %}style="{{extra_style}}"{% endif %}
|
{% if extra_style %}style="{{extra_style}}"{% endif %}
|
||||||
|
|||||||
@@ -62,7 +62,9 @@
|
|||||||
columns:null,
|
columns:null,
|
||||||
label:'Problems',
|
label:'Problems',
|
||||||
name:'pids',
|
name:'pids',
|
||||||
value:pids
|
value:pids,
|
||||||
|
noAutocomplete:true,
|
||||||
|
placeholder:_("Seperated with ','")
|
||||||
}) }}
|
}) }}
|
||||||
{{ form.form_textarea({
|
{{ form.form_textarea({
|
||||||
columns:null,
|
columns:null,
|
||||||
|
|||||||
Reference in new issue
Block a user