mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-17 17:36:08 +08:00
core&ui: contest_scoreboard: filter by group
This commit is contained in:
3 files changed
+13
-3
No files matched your search
@@ -282,12 +282,14 @@ export class ContestScoreboardHandler extends ContestDetailBaseHandler {
|
||||
config.lockAt = this.tdoc.lockAt;
|
||||
}
|
||||
const [, rows, udict, pdict] = await contest.getScoreboard.call(this, domainId, tid, config);
|
||||
const groups = this.user.hasPerm(PERM.PERM_EDIT_DOMAIN)
|
||||
? await user.listGroup(domainId) : [];
|
||||
// eslint-disable-next-line @typescript-eslint/naming-convention
|
||||
const page_name = this.tdoc.rule === 'homework'
|
||||
? 'homework_scoreboard'
|
||||
: 'contest_scoreboard';
|
||||
this.response.body = {
|
||||
tdoc: this.tdoc, rows, udict, pdict, page_name,
|
||||
tdoc: this.tdoc, rows, udict, pdict, page_name, groups,
|
||||
};
|
||||
this.response.pjax = 'partials/scoreboard.html';
|
||||
this.response.template = 'contest_scoreboard.html';
|
||||
|
||||
@@ -30,9 +30,14 @@ const page = new NamedPage('contest_scoreboard', () => {
|
||||
} else if (val === 'star') {
|
||||
$('.data-table tbody tr').hide();
|
||||
read().forEach((uid) => $(`.star.user--${uid}`).closest('tr').show());
|
||||
} else {
|
||||
} else if (val === 'rank') {
|
||||
$('.data-table tbody tr').show();
|
||||
$('.rank--unrank').closest('tr').hide();
|
||||
} else {
|
||||
$('.data-table tbody tr').hide();
|
||||
const uids = val.toString().split(',').map((i) => +i.trim()).filter((i) => i);
|
||||
if (!uids?.length) return;
|
||||
uids.forEach((uid) => $(`.user--${uid}`).closest('tr').show());
|
||||
}
|
||||
});
|
||||
|
||||
@@ -40,7 +45,7 @@ const page = new NamedPage('contest_scoreboard', () => {
|
||||
const endAt = new Date(UiContext.tdoc.endAt).getTime();
|
||||
function updateScoreboard() {
|
||||
const now = Date.now();
|
||||
if (beginAt <= now && now <= endAt) pjax.request(UiContext.scoreboardUrl || '', { push: false });
|
||||
if (beginAt <= now && now <= endAt) pjax.request({ url: UiContext.scoreboardUrl || '', push: false });
|
||||
}
|
||||
|
||||
setInterval(updateScoreboard, 180000);
|
||||
|
||||
@@ -25,6 +25,9 @@
|
||||
<option value="all">{{ _('All Users') }}</option>
|
||||
<option value="star">{{ _('Starred Users') }}</option>
|
||||
<option value="rank">{{ _('Ranked Users') }}</option>
|
||||
{% for group in groups %}
|
||||
<option value="{{ group.uids.join(',') }}">{{ group.name }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in new issue
Block a user