Insert javascript-dependent HTML from javascript
[plack-app-gruntmaster.git] / js / 90-tracker.js
index 8e7a4433f8965affad02929e49cc431296d13fa4..1fa4905ed0887ba2f36221591fb3fe59b6b3bdb2 100644 (file)
@@ -9,6 +9,8 @@
                $('.tracker-info').removeClass('tracker-info info');
        }
 
+       var tracker;
+
        function update_tracker(){
                var data = localStorage.getItem('tracker_data');
                var user = localStorage.getItem('tracker_username');
                $('#tracker_solved').html(solvednr);
                $('#tracker_attempted').html(attemptednr);
                $('#tracker_contests').html(data.contests.length);
+               $('#tracker_log').attr('href', '/log/?owner=' + user);
 
                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/')
        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 + '?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(){
                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 = $('<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>');
+               tracker.prependTo($('#sidebar'));
                $('#tracker_stop').on('click', stop_tracking);
-               $('#track_user').removeClass('hidden');
                $('#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'));
This page took 0.012197 seconds and 4 git commands to generate.