]> git.sesse.net Git - ultimatescore/commitdiff
Add a carousel mode.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Fri, 20 Oct 2017 21:00:19 +0000 (23:00 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Fri, 20 Oct 2017 21:00:19 +0000 (23:00 +0200)
carousel.js
score.html

index c05e0a93b1502e2d8763af8d2e4c968f5f529e66..3db806b4d58ec064ff036fc2de8bee50f6e97e72 100644 (file)
@@ -266,10 +266,15 @@ parse_games_from_spreadsheet = function(response, group_name, include_unplayed)
        return games;
 };
 
-var display_group = function(response, group_name) {
+var display_group = function(response, group_name)
+{
        var teams = parse_teams_from_spreadsheet(response);
        var games = parse_games_from_spreadsheet(response, group_name, false);
+       display_group_parsed(teams, games, group_name);
+};
 
+var display_group_parsed = function(teams, games, group_name)
+{
        var teams_to_idx = make_teams_to_idx(teams);
        for (i = 0; i < games.length; ++i) {
                var idx1 = teams_to_idx[games[i].name1];
@@ -454,6 +459,8 @@ var showgroup = function(group_name)
        get_group(group_name, display_group);
 };
 
+var carousel_timeout = null;
+
 var hidetable = function()
 {
        fade_out_rows(document.getElementById('carousel'));
@@ -479,3 +486,61 @@ var showschedule = function()
        get_group('Bronze final', cb);
        get_group('Final', cb);
 };
+
+var do_series = function(series)
+{
+       do_series_internal(series, 0);
+};
+
+var do_series_internal = function(series, idx)
+{
+       (series[idx][1])();
+       if (idx + 1 < series.length) {
+               carousel_timeout = setTimeout(function() { do_series_internal(series, idx + 1); }, series[idx][0]);
+       }
+};
+
+var showcarousel = function()
+{
+       var teams_per_group = [];
+       var games_per_group = [];
+       var combined_teams = [];
+       var combined_games = [];
+       var num_left = 5;
+
+       var cb = function(response, group_name) {
+               var teams = parse_teams_from_spreadsheet(response);
+               var games = parse_games_from_spreadsheet(response, group_name, true);
+               teams_per_group[group_name] = teams;
+               games_per_group[group_name] = games;
+
+               combined_teams = combined_teams.concat(teams);
+               combined_games = combined_games.concat(games);
+               if (--num_left == 0) {
+                       do_series([
+                               [ 13000, function() { display_group_parsed(teams_per_group['Group A'], games_per_group['Group A'], 'Group A'); } ],
+                               [ 2000, function() { hidetable(); } ],
+                               [ 13000, function() { display_group_parsed(teams_per_group['Group B'], games_per_group['Group B'], 'Group B'); } ],
+                               [ 2000, function() { hidetable(); } ],
+                               [ 13000, function() { display_stream_schedule_parsed(combined_teams, combined_games); } ],
+                               [ 2000, function() { hidetable(); } ]
+                       ]);
+               }
+       };
+
+       get_group('Group A', cb);
+       get_group('Group B', cb);
+       get_group('Semifinals', cb);
+       get_group('Bronze final', cb);
+       get_group('Final', cb);
+};
+
+var stopcarousel = function()
+{
+       hidetable();
+       if (carousel_timeout !== null) {
+               clearTimeout(carousel_timeout);
+               carousel_timeout = null;
+       }
+};
+
index 0e0dfc1ce54e6d15d72b6379758207997b116ddf..e824684050e3562eaffe4213bdc6c19e219019d5 100644 (file)
         <a href="javascript:hidelowerthird()">hide lower third</a>
       </p>
       <p>
-        <a href="javascript:showgroup('Group A')">show group A</a>
-        <a href="javascript:showgroup('Group B')">show group B</a>
-        <a href="javascript:showschedule()">schedule</a>
-        <a href="javascript:hidetable()">table out</a>
+        <a href="javascript:stopcarousel();showgroup('Group A')">show group A</a>
+        <a href="javascript:stopcarousel();showgroup('Group B')">show group B</a>
+        <a href="javascript:stopcarousel();showschedule()">show schedule</a>
+        <a href="javascript:stopcarousel();showcarousel()">show carousel</a>
+        <a href="javascript:stopcarousel();hidetable()">table out</a>
       </p>
     </div>