X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=js%2F90-tracker.js;h=1fa4905ed0887ba2f36221591fb3fe59b6b3bdb2;hb=bdaa8919598cbbd8753fd6795b34b594b1b30805;hp=5c71e12c5d5a165c98f8eb71bbe1e757a8918af1;hpb=d31924ef2cb534377b73a3e0f9a6612678474afc;p=plack-app-gruntmaster.git diff --git a/js/90-tracker.js b/js/90-tracker.js index 5c71e12..1fa4905 100644 --- a/js/90-tracker.js +++ b/js/90-tracker.js @@ -4,6 +4,13 @@ function tick() { return $('✔') } function xmark() { return $('✘') } + function clean_tracker(){ + $('.tracker-mark').detach(); + $('.tracker-info').removeClass('tracker-info info'); + } + + var tracker; + function update_tracker(){ var data = localStorage.getItem('tracker_data'); var user = localStorage.getItem('tracker_username'); @@ -29,64 +36,81 @@ contests[e.contest] = 1; }); + clean_tracker(); $('#tracker_userlink').html(data.name); $('#tracker_solved').html(solvednr); $('#tracker_attempted').html(attemptednr); $('#tracker_contests').html(data.contests.length); + $('#tracker_log').attr('href', '/log/?owner=' + user); - $('.tracker-mark').detach(); if(location.pathname == '/pb/') $('table').find('.name').find('a').each(function() { var id = $(this).attr('href').split('?', 2)[0]; if(solved[id]) - $(this).parent().append(tick()); + $(this).parent().prepend(tick()); else if(attempted[id]) - $(this).parent().append(xmark()); + $(this).parent().prepend(xmark()); }); if(location.pathname == '/ct/') $('table').find('.name').find('a').each(function() { var id = $(this).attr('href').substr(4); if(contests[id]) - $(this).parent().append(tick()); + $(this).parent().prepend(tick()); }); if(location.pathname == '/log/') $('table').find('tbody').find('tr').each(function() { - if($(this).find('.owner').find('a').attr('href') != "/us/" + user) + if($(this).find('.owner').find('a').attr('href') != '/us/' + user) return; $(this).find('.id').append($(this).find('.r0').size() ? tick() : xmark()); }); + + if(location.pathname.match(/^\/st\//) || location.pathname == '/us/') + $('table').find('tbody').find('tr').each(function() { + if($(this).find('.user').find('a').attr('href') == '/us/' + user) + $(this).addClass('info tracker-info'); + }); } function start_tracking(user){ localStorage.setItem('tracker_username', user); $('#tracker_userlink').attr('href', '/us/' + user).html(user); - $('#tracker_tracking').removeClass('hidden'); - $('#tracker_form').addClass('hidden'); + tracker.removeClass('hidden'); update_tracker(); + var 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(); - xhr.open('GET', '/us/' + user); - xhr.setRequestHeader('Accept', 'application/json'); + xhr.open('GET', '/us/' + user + '?format=json'); xhr.onload = function () { localStorage.setItem('tracker_data', this.responseText); + localStorage.setItem('tracker_lastfetch', Date.now()); update_tracker(); }; xhr.send(); } + window.refresh_tracker = refresh_tracker; + window.start_tracking = start_tracking; function stop_tracking(){ - $('.tracker-mark').detach(); + clean_tracker(); localStorage.removeItem('tracker_username'); localStorage.removeItem('tracker_data'); - $('#tracker_tracking').addClass('hidden'); - $('#tracker_form').removeClass('hidden'); + localStorage.removeItem('tracker_lastfetch'); + tracker.addClass('hidden'); } $( document ).ready(function(){ - $('#tracker').detach().prependTo($('#sidebar')).removeClass('hidden'); - $('#tracker_button').on('click', function() { start_tracking($('#tracker_username').val()) }); + tracker = $(''); + tracker.prependTo($('#sidebar')); $('#tracker_stop').on('click', stop_tracking); + $('#track_user').on('click', function() { stop_tracking(); start_tracking($(this).data('user')) }); + $('#submitform').on('submit', function() { localStorage.removeItem('tracker_lastfetch') }); if(localStorage.getItem('tracker_username')) start_tracking(localStorage.getItem('tracker_username'));