]> git.sesse.net Git - ultimatescore/blobdiff - carousel.js
Fix the lower third being stuck after show + hide.
[ultimatescore] / carousel.js
index e9c2ed8eec37739b7180708e5b966a8ede653517..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];
@@ -298,6 +303,7 @@ var display_group = function(response, group_name) {
        teams = rank(games, teams, 1, tiebreakers);
 
        var carousel = document.getElementById('carousel');
+       clear_carousel(carousel);
 
        addheading(carousel, 5, "Current standings, TrønDisk 2017<br />" + group_name);
        var tr = document.createElement("tr");
@@ -341,7 +347,6 @@ var display_group = function(response, group_name) {
        carousel.appendChild(footer_tr);
 
        fade_in_rows(carousel);
-       setTimeout(function() { fade_out_rows(carousel); }, 4000);
 
        carousel.style.display = 'table';
 };
@@ -370,6 +375,13 @@ var fade_out_rows = function(table)
        }
 };
 
+var clear_carousel = function(table)
+{
+       while (table.childNodes.length > 0) {
+               table.removeChild(table.firstChild);
+       }
+};
+
 // Stream schedule
 var display_stream_schedule = function(response, group_name) {
        var teams = parse_teams_from_spreadsheet(response);
@@ -403,6 +415,7 @@ var display_stream_schedule_parsed = function(teams, games) {
        }
        
        var carousel = document.getElementById('carousel');
+       clear_carousel(carousel);
        addheading(carousel, 3, "Stream schedule, TrønDisk 2017<br />Saturday");
 
        var row_num = 0;
@@ -441,26 +454,93 @@ var get_group = function(group_name, cb)
        req.send();
 };
 
-//get_group('Group A', display_group);
-//get_group('Group A', display_stream_schedule);
-//get_group('Group A', function(response_a) {
-//     var teams = parse_teams_from_spreadsheet(response_a);
-//     var games = parse_games_from_spreadsheet(response_a, 'Group A', true);
-//     get_group('Group B', function(response_b) {
-//             teams = teams.concat(parse_teams_from_spreadsheet(response_b));
-//             games = games.concat(parse_games_from_spreadsheet(response_b, 'Group B', true));
-//             get_group('Semifinals', function(response_c) {
-//                     teams = teams.concat(parse_teams_from_spreadsheet(response_c));
-//                     games = games.concat(parse_games_from_spreadsheet(response_c, 'Semifinals', true));
-//                     get_group('Bronze final', function(response_d) {
-//                             teams = teams.concat(parse_teams_from_spreadsheet(response_d));
-//                             games = games.concat(parse_games_from_spreadsheet(response_d, 'Bronze final', true));
-//                             get_group('Final', function(response_e) {
-//                                     teams = teams.concat(parse_teams_from_spreadsheet(response_e));
-//                                     games = games.concat(parse_games_from_spreadsheet(response_e, 'Final', true));
-//                                     display_stream_schedule_parsed(teams, games);
-//                             });
-//                     });
-//             });
-//     });
-//});
+var showgroup = function(group_name)
+{
+       get_group(group_name, display_group);
+};
+
+var carousel_timeout = null;
+
+var hidetable = function()
+{
+       fade_out_rows(document.getElementById('carousel'));
+};
+
+var showschedule = function()
+{
+       var teams = [];
+       var games = [];
+       var num_left = 5;
+
+       var cb = function(response, group_name) {
+               teams = teams.concat(parse_teams_from_spreadsheet(response));
+               games = games.concat(parse_games_from_spreadsheet(response, group_name, true));
+               if (--num_left == 0) {
+                       display_stream_schedule_parsed(teams, games);
+               }
+       };
+
+       get_group('Group A', cb);
+       get_group('Group B', cb);
+       get_group('Semifinals', cb);
+       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;
+       }
+};
+