mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
ui: remember scoreboard filter when navigating
This commit is contained in:
2 files changed
+24
-2
No files matched your search
@@ -44,7 +44,22 @@ const page = new NamedPage(['contest_scoreboard', 'homework_scoreboard'], async
|
||||
uids.forEach((uid) => $(`.user--${uid}`).closest('tr').show());
|
||||
}
|
||||
}
|
||||
$('.select.filter').on('change', update);
|
||||
|
||||
function getFilterFromHash() {
|
||||
const hash = location.hash.slice(1);
|
||||
if (hash.startsWith('filter=')) return hash.slice(7);
|
||||
return null;
|
||||
}
|
||||
|
||||
const initialFilter = getFilterFromHash() || 'all';
|
||||
$('.select.filter').val(initialFilter);
|
||||
await update();
|
||||
|
||||
$('.select.filter').on('change', async () => {
|
||||
await update();
|
||||
const val = $('.select.filter').val();
|
||||
history.replaceState(null, '', `#filter=${val}`);
|
||||
});
|
||||
|
||||
const beginAt = new Date(UiContext.tdoc.beginAt).getTime();
|
||||
const endAt = new Date(UiContext.tdoc.endAt).getTime();
|
||||
@@ -57,6 +72,13 @@ const page = new NamedPage(['contest_scoreboard', 'homework_scoreboard'], async
|
||||
}
|
||||
|
||||
setInterval(updateScoreboard, 180000);
|
||||
window.addEventListener('hashchange', async () => {
|
||||
const filter = getFilterFromHash();
|
||||
if (filter) {
|
||||
$('.select.filter').val(filter);
|
||||
await update();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
export default page;
|
||||
Reference in new issue
Block a user