let tracker;
function update_tracker(){
- let data = localStorage.getItem('tracker_data');
- let user = localStorage.getItem('tracker_username');
- if(!data)
+ if(!localStorage.getItem('tracker_data'))
return;
- data = JSON.parse(data);
- let contests = {}, solved = {}, attempted = {}, solvednr = 0, attemptednr = 0;
+ const data = JSON.parse(localStorage.getItem('tracker_data'));
+ const user = localStorage.getItem('tracker_username');
+ const contests = {}, solved = {}, attempted = {};
+ let solvednr = 0, attemptednr = 0;
data.problems.forEach(e => {
if(e.solved) {
solved[e.problem] = 1;
data.contests.forEach(e => contests[e.contest] = 1);
clean_tracker();
- $('#tracker_userlink')[0].innerHTML = data.name;
- $('#tracker_solved')[0].innerHTML = solvednr;
- $('#tracker_attempted')[0].innerHTML = attemptednr;
- $('#tracker_contests')[0].innerHTML = data.contests.length;
- $('#tracker_log')[0].setAttribute('href', '/log/?owner=' + user);
+ q('#tracker_userlink').innerHTML = data.name;
+ q('#tracker_solved').innerHTML = solvednr;
+ q('#tracker_attempted').innerHTML = attemptednr;
+ q('#tracker_contests').innerHTML = data.contests.length;
+ q('#tracker_log').setAttribute('href', '/log/?owner=' + user);
if(location.pathname == '/pb/')
$('table .name a').each(el => {
- let id = el.getAttribute('href').split('?', 2)[0];
+ const id = el.getAttribute('href').split('?', 2)[0];
if(solved[id])
el.insertAdjacentHTML('beforebegin', TICK);
else if(attempted[id])
if(location.pathname == '/ct/')
$('table .name a').each(el => {
- let id = el.getAttribute('href').substr(4);
+ const id = el.getAttribute('href').substr(4);
if(contests[id])
el.insertAdjacentHTML('beforebegin', TICK);
});
if(location.pathname == '/log/')
$('table tbody tr').each(el => {
- let owner = el.querySelector('.owner a');
+ const owner = el.querySelector('.owner a');
if(!owner || owner.getAttribute('href') != '/us/' + user)
return;
- var state = el.getElementsByClassName('r0').length ? TICK : XMARK;
+ const state = el.getElementsByClassName('r0').length ? TICK : XMARK;
el.getElementsByClassName('id')[0].innerHTML += state;
});
function start_tracking(user){
localStorage.setItem('tracker_username', user);
- $('#tracker_userlink')[0].setAttribute('href', '/us/' + user);
- $('#tracker_userlink')[0].innerHTML = user;
+ q('#tracker_userlink').setAttribute('href', '/us/' + user);
+ q('#tracker_userlink').innerHTML = user;
tracker.classList.remove('hidden');
update_tracker();
- var lastfetch = localStorage.getItem('tracker_lastfetch');
+ const lastfetch = localStorage.getItem('tracker_lastfetch');
if(Date.now() - lastfetch > 60 * 10 * 1000)
refresh_tracker();
}
function refresh_tracker(){
- var user = localStorage.getItem('tracker_username');
- var xhr = new XMLHttpRequest();
+ const user = localStorage.getItem('tracker_username');
+ const xhr = new XMLHttpRequest();
xhr.open('GET', '/us/' + user + '?format=json');
xhr.onload = () => {
- localStorage.setItem('tracker_data', this.responseText);
+ localStorage.setItem('tracker_data', xhr.responseText);
localStorage.setItem('tracker_lastfetch', Date.now());
update_tracker();
};
$(function(){
tracker = m('<div id="tracker" class="hidden">Tracking <a id="tracker_userlink"></a>.<br><a id="tracker_stop" role="button">Stop tracking</a><br><a id="tracker_log">Job log</a><dl class="dl-horizontal"><dt>Solved</dt> <dd id="tracker_solved">?</dd><dt>Attempted</dt> <dd id="tracker_attempted">?</dd><dt>Contests</dt> <dd id="tracker_contests">?</dd></dl></div>');
- var sidebar = $('#sidebar')[0];
+ const sidebar = q('#sidebar');
sidebar.insertBefore(tracker, sidebar.firstChild);
$('#tracker_stop').on('click', stop_tracking);
$('#track_user').on('click', function() { stop_tracking(); start_tracking(this.dataset.user) });