core&ui: support bulk rejudge task

This commit is contained in:
panda committed 2025-04-17 10:15:11 +00:00
1 parent 0bff54d568
commit 178c1cd359
10 files changed
+248 -1

No files matched your search

@@ -0,0 +1,21 @@
import $ from 'jquery';
import CustomSelectAutoComplete from 'vj/components/autocomplete/CustomSelectAutoComplete';
import ProblemSelectAutoComplete from 'vj/components/autocomplete/ProblemSelectAutoComplete';
import UserSelectAutoComplete from 'vj/components/autocomplete/UserSelectAutoComplete';
import { NamedPage } from 'vj/misc/Page';
const page = new NamedPage('manage_bulk_rejudge', async () => {
UserSelectAutoComplete.getOrConstruct($('[name="uidOrName"]'), {
clearDefaultValue: false,
});
ProblemSelectAutoComplete.getOrConstruct($('[name="pid"]'), {
clearDefaultValue: false,
});
const prefixes = new Set(Object.keys(window.LANGS).filter((i) => i.includes('.')).map((i) => i.split('.')[0]));
const langs = Object.keys(window.LANGS).filter((i) => !prefixes.has(i)).map((i) => (
{ name: `${i.includes('.') ? `${window.LANGS[i.split('.')[0]].display}/` : ''}${window.LANGS[i].display}`, _id: i }
));
CustomSelectAutoComplete.getOrConstruct($('[name=lang]'), { multi: false, data: langs });
});
export default page;
@@ -0,0 +1,63 @@
{% import "components/user.html" as user %}
{% extends "manage_base.html" %}
{% block manage_content %}
<div class="section">
<div class="section__header">
<h1 class="section__title" data-heading>{{ _('Bulk Rejudge') }}</h1>
</div>
<div class="section__body">
<form>
<div class="row">
<div class="medium-6 columns">
<label class="filter-user">
{{ _('By Username / UID') }}
<input name="uidOrName" type="text" class="textbox" value="" autocomplete="off" data-autofocus>
</label>
</div>
<div class="medium-6 columns">
<label>
{{ _('By Problem') }}
<input name="pid" type="text" class="textbox" value="">
</label>
</div>
</div>
<div class="row">
<div class="medium-6 columns">
<label>
{{ _('By Contest') }}
<input name="tid" type="text" class="textbox" value="">
</label>
</div>
<div class="medium-6 columns">
<label>
{{ _('By Language') }}
<input name="lang" type="text" class="textbox" value="">
</label>
</div>
</div>
<div class="row">
<div class="medium-6 columns">
<label>
{{ _('By Status') }}
</label>
<select class="select" name="status">
<option value="" selected>{{ _('All Submissions') }}</option>
{%- for k,v in utils.status.STATUS_TEXTS -%}
<option value="{{k}}">{{v}}</option>
{%- endfor -%}
</select>
</div>
<div class="medium-6 columns">
<label>
{{ _('Apply') }}
<input name="apply" type="checkbox" class="checkbox" value="1">
</label>
</div>
</div>
<div class="row"><div class="columns">
<button name="submit" class="rounded primary button">{{ _('Rejudge') }}</button>
</div></div>
</form>
</div>
</div>
{% endblock %}