X-Git-Url: http://git.ieval.ro/?p=gruntmaster-page.git;a=blobdiff_plain;f=js%2F90-tracker.js;fp=js%2F90-tracker.js;h=5c71e12c5d5a165c98f8eb71bbe1e757a8918af1;hp=0000000000000000000000000000000000000000;hb=d31924ef2cb534377b73a3e0f9a6612678474afc;hpb=bc8a492de9057e17fd910fbca9f3e39b30859737
diff --git a/js/90-tracker.js b/js/90-tracker.js
new file mode 100644
index 0000000..5c71e12
--- /dev/null
+++ b/js/90-tracker.js
@@ -0,0 +1,94 @@
+(function(){
+ 'use strict';
+
+ function tick() { return $('â') }
+ function xmark() { return $('â') }
+
+ function update_tracker(){
+ var data = localStorage.getItem('tracker_data');
+ var user = localStorage.getItem('tracker_username');
+ if(!data)
+ return;
+ data = JSON.parse(data);
+ var solved = {};
+ var attempted = {};
+ var solvednr = 0;
+ var attemptednr = 0;
+ data.problems.forEach(function(e){
+ if(e.solved){
+ solved[e.problem] = 1;
+ solvednr++;
+ } else {
+ attempted[e.problem] = 1;
+ attemptednr++;
+ }
+ });
+
+ var contests = {};
+ data.contests.forEach(function(e){
+ contests[e.contest] = 1;
+ });
+
+ $('#tracker_userlink').html(data.name);
+ $('#tracker_solved').html(solvednr);
+ $('#tracker_attempted').html(attemptednr);
+ $('#tracker_contests').html(data.contests.length);
+
+ $('.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());
+ else if(attempted[id])
+ $(this).parent().append(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());
+ });
+
+ if(location.pathname == '/log/')
+ $('table').find('tbody').find('tr').each(function() {
+ if($(this).find('.owner').find('a').attr('href') != "/us/" + user)
+ return;
+ $(this).find('.id').append($(this).find('.r0').size() ? tick() : xmark());
+ });
+ }
+
+ 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');
+ update_tracker();
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', '/us/' + user);
+ xhr.setRequestHeader('Accept', 'application/json');
+ xhr.onload = function () {
+ localStorage.setItem('tracker_data', this.responseText);
+ update_tracker();
+ };
+ xhr.send();
+ }
+
+ function stop_tracking(){
+ $('.tracker-mark').detach();
+ localStorage.removeItem('tracker_username');
+ localStorage.removeItem('tracker_data');
+ $('#tracker_tracking').addClass('hidden');
+ $('#tracker_form').removeClass('hidden');
+ }
+
+ $( document ).ready(function(){
+ $('#tracker').detach().prependTo($('#sidebar')).removeClass('hidden');
+ $('#tracker_button').on('click', function() { start_tracking($('#tracker_username').val()) });
+ $('#tracker_stop').on('click', stop_tracking);
+
+ if(localStorage.getItem('tracker_username'))
+ start_tracking(localStorage.getItem('tracker_username'));
+ });
+})();