ui: fix contest_edit

pull/118/head
undefined 3 years ago
parent b406b8989d
commit fa4b7b6f33

@ -1,6 +1,6 @@
{
"name": "hydrooj",
"version": "2.23.24",
"version": "2.23.25",
"bin": "bin/hydrooj.js",
"main": "dist/loader.js",
"typings": "dist/loader.d.ts",

@ -218,7 +218,7 @@ class ContestEditHandler extends ContestHandler {
domainId: string, beginAtDate: string, beginAtTime: string, duration: number,
title: string, content: string, rule: string, _pids: string, rated = false,
) {
let pids = _pids.split(',').map((i) => {
let pids = _pids.replace(//g, ',').split(',').map((i) => {
if (isSafeInteger(parseInt(i, 10))) return parseInt(i, 10);
return i;
});
@ -422,7 +422,7 @@ class ContestCreateHandler extends ContestHandler {
domainId: string, beginAtDate: string, beginAtTime: string, duration: number,
title: string, content: string, rule: string, _pids: string, rated = false,
) {
let pids = _pids.split(',').map((i) => {
let pids = _pids.replace(//g, ',').split(',').map((i) => {
if (isSafeInteger(parseInt(i, 10))) return parseInt(i, 10);
return i;
});

@ -244,7 +244,7 @@ class HomeworkCreateHandler extends HomeworkHandler {
penaltySinceDate: string, penaltySinceTime: string, extensionDays: number,
penaltyRules: PenaltyRules, title: string, content: string, _pids: string, rated = false,
) {
const pids = _pids.split(',').map((i) => {
const pids = _pids.replace(//g, ',').split(',').map((i) => {
if (isSafeInteger(parseInt(i, 10))) return parseInt(i, 10);
return i;
});
@ -311,7 +311,7 @@ class HomeworkEditHandler extends HomeworkHandler {
penaltySinceDate: string, penaltySinceTime: string, extensionDays: number,
penaltyRules: string, title: string, content: string, _pids: string, rated = false,
) {
const pids = _pids.split(',').map((i) => {
const pids = _pids.replace(//g, ',').split(',').map((i) => {
if (isSafeInteger(parseInt(i, 10))) return parseInt(i, 10);
return i;
});

@ -95,16 +95,21 @@ export default class AutoComplete extends DOMAttachedObject {
onItemClick(ev) {
const idx = $(ev.currentTarget).attr('data-idx');
if (idx === undefined) {
return;
}
if (idx === undefined) return;
const item = this.currentItems[idx];
const text = this.options.text(item);
this._value = item;
this.$dom.trigger('vjAutoCompleteSelect', item);
if (text != null) {
if (!this.options.multi) this.$dom.val(text);
else this.$dom.val(`${this.$dom.val() + text}, `);
else {
const current = this.$dom.val().replace(//g, ',');
if (current.indexOf(',') !== -1) {
const items = current.split(',');
items[items.length - 1] = text;
this.$dom.val(items.join(', '));
} else this.$dom.val(`${text}, `);
}
}
this.close();
}
@ -150,24 +155,23 @@ export default class AutoComplete extends DOMAttachedObject {
}
close() {
if (!this.isOpen) {
return;
}
if (!this.isOpen) return;
this.dropInstance.close();
this.isOpen = false;
}
updateOpenState() {
if (this.isFocus && this.$dom.val().length >= this.options.minChar) {
let content = this.$dom.val();
if (this.options.multi) {
content = content.split(',');
content = content[content.length - 1].trim();
}
if (this.isFocus && content >= this.options.minChar) {
if (!this.isOpen) {
this.open();
this.renderList();
}
} else {
if (this.isOpen) {
this.close();
}
}
} else if (this.isOpen) this.close();
}
detach() {

@ -1,5 +1,5 @@
import { AutoloadPage } from 'vj/misc/Page';
import delay from 'vj/utils/delay'
import delay from 'vj/utils/delay';
const formPage = new AutoloadPage('formPage', () => {
$(document).on('vjFormDisableUpdate', 'input, select, textarea', (ev) => {
@ -13,13 +13,14 @@ const formPage = new AutoloadPage('formPage', () => {
});
const submitting = {};
$('[type="submit"]').on('click', async (ev) => {
if (!submitting[ev.currentTarget]) $(ev.currentTarget).closest('form').submit();
$(document).on('click', '[type="submit"]', (ev) => {
const $dom = $(ev.currentTarget);
if ($dom.attr('name') && $dom.attr('value')) return;
ev.preventDefault();
if (!submitting[ev.currentTarget]) $dom.closest('form').trigger('submit');
submitting[ev.currentTarget] = true;
await delay(5000);
submitting[ev.currentTarget] = false;
})
delay(5000).then(() => { submitting[ev.currentTarget] = false; });
});
});
export default formPage;

@ -1,6 +1,6 @@
{
"name": "@hydrooj/ui-default",
"version": "4.6.11",
"version": "4.6.12",
"author": "undefined <i@undefined.moe>",
"license": "AGPL-3.0",
"main": "hydro.js",

@ -6,7 +6,7 @@ import i18n from 'vj/utils/i18n';
import request from 'vj/utils/request';
const page = new NamedPage(['contest_edit', 'contest_create', 'homework_create', 'homework_edit'], (pagename) => {
ProblemSelectAutoComplete.getOrConstruct($('[name="pids"]'), { multi: true });
ProblemSelectAutoComplete.getOrConstruct($('[name="pids"]'), { multi: true, clearDefaultValue: false });
if (pagename.endsWith('edit')) {
let confirmed = false;
$(document).on('click', '[name="operation"]', (ev) => {

Loading…
Cancel
Save