// Function to fetch scoreboard data using AJAX function fetchScoreboardData() { var xhr = new XMLHttpRequest(); xhr.open("GET", "/scoreboard", true); xhr.onreadystatechange = function () { if (xhr.readyState === XMLHttpRequest.DONE) { if (xhr.status === 200) { updateScoreboard(JSON.parse(xhr.responseText)); } else { console.error("Failed to fetch scoreboard data."); } } }; xhr.send(); } // Function to update scoreboard with fetched data function updateScoreboard(data) { var liveGamesSection = document.getElementById("live-games-section"); var preGamesSection = document.getElementById('pre-games-section'); var finalGamesSection = document.getElementById('final-games-section'); if (liveGamesSection) { var liveGamesExist = data && data.live_games && data.live_games.length > 0; if (liveGamesExist) { document.getElementById('live-games').innerText = "Live Games" liveGamesSection.innerHTML = generateGameBoxes(data.live_games, 'LIVE'); } } if (preGamesSection) { var preGamesExist = data && data.pre_games && data.pre_games.length > 0; if (preGamesExist) { document.getElementById('on-later').innerText = "On Later" preGamesSection.innerHTML = generateGameBoxes(data.pre_games, 'PRE'); } } if (finalGamesSection) { var finalGamesExist = data && data.final_games && data.final_games.length > 0; if (finalGamesExist) { document.getElementById('game-over').innerText = "Game Over" finalGamesSection.innerHTML = generateGameBoxes(data.final_games, 'FINAL'); } } } // Function to generate HTML for game boxes function generateGameBoxes(games, state) { var html = ''; games.forEach(function(game) { if (game['Game State'] === state) { html += '
'; if (state === 'LIVE') { if (game['Time Running']) { html += '
'; // Display the red dot if the game is live } html += '
'; html += ''; html += '
'; html += '' + game['Away Team'] + ''; html += 'SOG: ' + game['Away Shots'] + ''; html += '' + game['Away Power Play'] + ''; html += '
'; html += '' + game['Away Score'] + ''; html += '
'; html += '
'; html += ''; html += '
'; html += '' + game['Home Team'] + ''; html += 'SOG: ' + game['Home Shots'] + ''; html += '' + game['Home Power Play'] + ''; html += '
'; html += '' + game['Home Score'] + ''; html += '
'; if (game['Intermission']) { html += '
' if (game['Period'] == 1 ) { html += '1st Int'; } if (game['Period'] == 2 ) { html += '2nd Int'; } if (game['Period'] == 3 ) { html += '3rd Int'; } html += '
'; html += '
' + game['Time Remaining'] + '
'; } else { html += '
'; if (game['Period'] == 1 ) { html += '1st'; } else if (game['Period'] == 2 ) { html += '2nd'; } else if (game['Period'] == 3 ) { html += '3rd'; } else { html += 'OT'; } html += '
'; html += '
' + game['Time Remaining'] + '
'; } html += '
'; html += '
' + game['Start Time'] + '
'; html += '
'; html += ''; html += '' + game['Away Team'] + ''; html += '' + game['Away Record'] + ''; html += '
'; html += '
'; html += ''; html += '' + game['Home Team'] + ''; html += '' + game['Home Record'] + ''; html += '
'; } else if (state === 'FINAL') { html += '
'; if (game['Last Period Type'] === 'REG') { html += 'FINAL'; } else if (game['Last Period Type'] === 'OT') { html += 'FINAL/OT'; } else { html += 'FINAL/SO'; } html += '
'; html += '
'; html += ''; html += '
'; html += '' + game['Away Team'] + ''; html += 'SOG: ' + game['Away Shots'] + ''; html += '
'; html += '' + game['Away Score'] + ''; html += '
'; html += '
'; html += ''; html += '
'; html += '' + game['Home Team'] + ''; html += 'SOG: ' + game['Home Shots'] + ''; html += '
'; html += '' + game['Home Score'] + ''; html += '
'; } html += '
'; } }); return html; } // Function to reload the scoreboard every 20 seconds function autoRefresh() { fetchScoreboardData(); setTimeout(autoRefresh, 5000); // 20 seconds } // Call the autoRefresh function when the page loads window.onload = function() { autoRefresh(); };