layout |
title |
permalink |
meta |
default |
MCAMC Live Round |
/mcamc/live/ |
|
Authorize
Sign Out
<script type="text/javascript">
var CLIENT_ID = '570864691277-5mrhsfgqd0in8tqn7jvfin3ocn9furga.apps.googleusercontent.com';
var API_KEY = 'AIzaSyCTlqgObl4U_BXEk3aJxi_R42tRH9128nw';
var SCOPES = "
https://www.googleapis.com/auth/spreadsheets.readonly";
var authorizeButton = document.getElementById('authorize_button');
var signoutButton = document.getElementById('signout_button');
let tokenClient;
let gapiInited;
let gisInited;
authorizeButton.style.visibility="hidden";
signoutButton.style.visibility="hidden";
authorizeButton.onclick = handleAuthClick;
signoutButton.onclick = handleSignoutClick;
function checkBeforeStart()
{
if (gapiInited && gisInited)
{
authorizeButton.style.visibility="visible";
signoutButton.style.visibility="visible";
}
}
function gapiInit()
{
gapi.client.init({}).then(function()
{
gapi.client.load('
https://sheets.googleapis.com/$discovery/rest?version=v4');
gapiInited = true;
checkBeforeStart();
});
}
function gapiLoad()
{
gapi.load('client', gapiInit)
}
function gisInit()
{
tokenClient = google.accounts.oauth2.initTokenClient({
client_id: CLIENT_ID,
scope: SCOPES,
callback: '',
});
gisInited = true;
checkBeforeStart();
}
function handleAuthClick(event)
{
tokenClient.callback = (resp) =>
{
if (resp.error !== undefined)
{
throw(resp);
}
authorizeButton.style.visibility="hidden";
signoutButton.style.visibility="hidden";
listMajors();
}
if (gapi.client.getToken() === null)
{
tokenClient.requestAccessToken({prompt: 'consent'});
}
else
{
tokenClient.requestAccessToken({prompt: ''});
}
}
function handleSignoutClick(event)
{
let cred = gapi.client.getToken();
if (cred !== null)
{
google.accounts.oauth2.revoke(cred.access_token, () => {console.log('Revoked: ' + cred.access_token)});
gapi.client.setToken('');
}
}
function appendPre(message)
{
var pre = document.getElementById('content');
var textContent = document.createTextNode(message + '\n');
pre.appendChild(textContent);
}
function analyzeRow(row)
{
var rowData = {};
sum = row.slice(2, row.length).reduce((a, b) => parseInt(a) + parseInt(b));
rowData.score = sum;
rowData.setsComplete = Math.floor(row.slice(2, row.length).filter(function(val) { return parseInt(val) !== 0; }).length/3);
rowData.teamName = row[1];
rowData.teamNumber = row[0];
return rowData
}
var scores = [];
function onOpenFunc() {
PropertiesService.getScriptProperties().setProperty("accessToken", ScriptApp.getOAuthToken());
}
function listMajors()
{
gapi.client.sheets.spreadsheets.values.get({
spreadsheetId: '17oX1WsQa5oSJfoEinkW8ZTIwkPDkF5mQI_s3LevkeLc',
range: 'Data!2:44',
}).then(function(response)
{
var range = response.result;
if (range.values.length > 0) {
for (i = 0; i < range.values.length; i++) {
var row = range.values[i];
rowData = analyzeRow(row);
scores[i] = [];
scores[i][0] = rowData.teamNumber;
scores[i][1] = rowData.teamName;
scores[i][2] = rowData.score;
scores[i][3] = rowData.setsComplete;
}
}
}, function(response) {});
scores.sort(function(a,b) { return b[2] - a[2]});
var html = "";
var split = Math.round((scores.length/3));
for (var i = 0; i < split; i++)
{
html+="";
html+="";
html+="";
html+="";
html+="";
html+="";
}
html+="
# | Name | Score | Sets |
"+scores[i][0]+" | "+scores[i][1]+""+" | "+scores[i][2]+" | "+scores[i][3]+"/8"+" |
";
var html2 = "";
for (var i = split; i < (split*2); i++)
{
html2+="";
html2+="";
html2+="";
html2+="";
html2+="";
html2+="";
}
html2+="
# | Name | Score | Sets |
"+scores[i][0]+" | "+scores[i][1]+""+" | "+scores[i][2]+" | "+scores[i][3]+"/8"+" |
";
var html3 = "";
for (var i = split*2; i < scores.length; i++)
{
html3+="";
html3+="";
html3+="";
html3+="";
html3+="";
html3+="";
}
html3+="
# | Name | Score | Sets |
"+scores[i][0]+" | "+scores[i][1]+""+" | "+scores[i][2]+" | "+scores[i][3]+"/8"+" |
";
document.getElementById("live-table").innerHTML = html;
document.getElementById("live-table2").innerHTML = html2;
document.getElementById("live-table3").innerHTML = html3;
setTimeout(listMajors, 5000);
}
</script>
<script async defer src="https://apis.google.com/js/api.js" onload="gapiLoad()"></script>
<script async defer src="https://accounts.google.com/gsi/client" onload="gisInit()"></script>