website for peoria

This commit is contained in:
Jacob Levine 2019-03-21 23:12:49 -05:00
parent c7b3d7e9a3
commit 2cff74aa54
11 changed files with 486 additions and 555 deletions

Binary file not shown.

Binary file not shown.

View File

@ -17,9 +17,7 @@
<a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>
<a href="#">Profile</a>
<a href="../team">Team</a>
<p>Scout Matches</p>
<a href="../scout/signUps" class="scoutMatchLinks">Sign Up For Matches</a>
<a href="../scout/rpts" class="scoutMatchLinks">Submit Scouting Reports</a>
<a href="../scout">Scout Matches</a>
<a href="../stats">Tournament Stats</a>
</div>
<div id="main">

View File

@ -34,8 +34,14 @@
Scouting For: <select id="tns" onchange="changeTeam(document.getElementById('tns').value)"></select>
</div>
<h2>Submit a Report:</h2>
<select id="mSelect"></select>
Team Scouted: <input type="text" id="scoutedTeamNumber"></select>
<div class="">
Match: <select id="mSelect" onchange="cmatch(document.getElementById('mselect').value)"></select>
Team: <select id="tselect"></Select>
Series: <select id="sselect" onchange="cseries(document.getElementById('sselect').value)">
<option value="quantitative">Quantitative</option>
<option value="qualitative">Qualitative</option>
</select>
</div>
<div id=FormData>

View File

@ -1,272 +0,0 @@
/* Set the width of the side navigation to 250px and the left margin of the page content to 250px and add a black background color to body */
function openNav() {
document.getElementById("mySidenav").style.width = "250px";
document.getElementById("main").style.marginLeft = "250px";
document.body.style.backgroundColor = "rgba(0,0,0,0.4)";
}
/* Set the width of the side navigation to 0 and the left margin of the page content to 0, and the background color of body to white */
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main").style.marginLeft = "0";
document.body.style.backgroundColor = "white";
}
window.onload = function() {
document.getElementById('sideload').style.display = 'block';
var config = {
apiKey: "(insert the TitanScout Api Key Here)",
authDomain: "titanscoutandroid.firebaseapp.com",
databaseURL: "https://titanscoutandroid.firebaseio.com",
projectId: "titanscoutandroid",
storageBucket: "titanscoutandroid.appspot.com",
messagingSenderId: "1097635313476"
};
//eventually find a less-jank way to do this tho
firebase.initializeApp(config);
firebase.auth().onAuthStateChanged(function(user) {
if (user != null) {
if (user.displayName != null) {
document.getElementById('status').innerHTML = "You are signed in as: " + user.displayName;
} else if (user.email != null) {
document.getElementById('status').innerHTML = "You are signed in as: " + user.email;
} else if (user.phoneNumber != null) {
document.getElementById('status').innerHTML = "You are signed in as: " + user.phoneNumber;
} else {
document.getElementById('status').innerHTML = "You are signed in.";
}
} else {
window.location.replace('../../');
}
teamAssoc = firebase.firestore().collection('UserAssociations').doc(user.uid);
teamAssoc.get().then(function(doc) {
if (doc.exists) {
list = doc.data()
teamNums = Object.keys(list)
document.getElementById('tns').innerHTML = ""
for (var i = 0; i < teamNums.length; i++) {
document.getElementById('tns').innerHTML += "<option value='" + teamNums[i] + "'>" + teamNums[i] + "</option>"
}
} else {}
}).then(function() {
changeTeam(document.getElementById('tns').value)
})
});
}
function changeTeam(teamNum) {
//remove all event listeners for element by cloning it
var old_element = document.getElementById("mSelect");
var new_element = old_element.cloneNode(true);
old_element.parentNode.replaceChild(new_element, old_element);
//ok back to normal stuff
var user = firebase.auth().currentUser;
ti = firebase.firestore().collection('teamData').doc("team-" + teamNum);
currentComp = null;
ti.get().then(function(doc) {
if (doc.exists) {
info = doc.data();
currentComp = info['currentCompetition'];
} else {
alert("Something's wrong with firebase.");
throw ("Something's wrong with firebase.");
}
}).then(function() {
if (currentComp != null) {
comps = firebase.firestore().collection('matchSignupsIndividual').doc(user.uid).collection("team-" + teamNum).doc(currentComp);
comps.get().then(function(doc) {
if (doc.exists) {
var matches = doc.data();
document.getElementById('mSelect').innerHTML = "";
for (var i = 0; i < Object.keys(matches).length; i++) {
name = Object.keys(matches)[i];
series = matches[Object.keys(matches)[i]]['series'];
completed = matches[Object.keys(matches)[i]]['completed'];
if (!completed) {
document.getElementById('mSelect').innerHTML += "<option value=" + name + series + ">" + name + "</option>"
}
}
document.getElementById('mSelect').addEventListener("change", function() {
updateForm(document.getElementById('mSelect').value, teamNum, currentComp);
});
updateForm(document.getElementById('mSelect').value, teamNum, currentComp);
}
});
}
});
}
function lastWord(words) {
var n = words.split(" ");
return n[n.length - 1];
}
function firstWord(words) {
var n = words.split(" ");
return n[0];
}
function updateForm(locString, teamNum, competition) {
seriesList = [];
document.getElementById('FormData').innerHTML = ""
loc = firebase.firestore().collection('appBuliding').doc("team-" + teamNum).collection('competitions').doc(competition).collection(lastWord(locString));
loc.get().then(function(docs) {
docs.forEach(function(doc) {
seriesList.push(doc.data());
});
seriesList.sort(function(a, b) {
return a.order - b.order;
})
for (var i = 0; i < seriesList.length; i++) {
document.getElementById('FormData').innerHTML += "<h3>"
seriesList[i].id + "</h3>";
labels = Object.keys(seriesList[i].data());
var index = labels.indexOf('order');
if (index > -1) {
labels.splice(index, 1);
}
var questions = [];
for (var j = 0; j < labels.length; j++) {
questions.push([labels[j], seriesList[i].data()[labels[j]]])
}
questions.sort(function(a, b) {
return a[1].order - b[1].order;
})
for (var j = 0; j < questions.length; j++) {
document.getElementById('FormData').innerHTML += "<div>";
document.getElementById('FormData').innerHTML += questions[j][1]['title'];
if (questions[j][1]['type'] = 'shortText') {
document.getElementById('FormData').innerHTML += "<input id=''" + questions[j][0] + "' type='text'></input>";
} else if (questions[j][1]['type'] = 'longText') {
document.getElementById('FormData').innerHTML += "<textarea id=''" + questions[j][0] + "' rows='4' cols='50''></textarea>";
} else if (questions[j][1]['type'] = 'numerical') {
document.getElementById('FormData').innerHTML += "<span id='" + questions[j][0] + "'><input type='button' onclick='dec(" + questions[j][0] + ")' value='-'></input>" + (questions[j][1]['default']).toString() + "<input type='button' onclick='inc(" + questions[j][0] + ")' value='+'></input></span>";
} else if (questions[j][1]['type'] = 'range') {
document.getElementById('FormData').innerHTML += "&nbsp;&nbsp;" + questions[j][1]['min']['text'] + "&nbsp;&nbsp;";
document.getElementById('FormData').innerHTML += "<input type='range' min='" + questions[j][1]['min']['val'] + "' max='" + questions[j][1]['max']['val'] + "'>";
document.getElementById('FormData').innerHTML += "&nbsp;&nbsp;" + questions[j][1]['max']['text'];
} else if (questions[j][1]['type'] = 'segment') {
document.getElementById('FormData').innerHTML += "<div id='" + questions[j][0] + "'>"
for (var k = 0; k < questions[j][1]['elements'].length; k++) {
//// TODO: replace with real buttons for good styling
document.getElementById('FormData').innerHTML += questions[j][1]['elements'][k];
document.getElementById('FormData').innerHTML += "<input type='radio' name='" + questions[j][0] + "' value=" + questions[j][1]['elements'][k] + "></input>"
}
document.getElementById('FormData').innerHTML += "</div>"
}
document.getElementById('FormData').innerHTML += "</div>";
}
}
document.getElementById('FormData').innerHTML += "<input type='button' onclick=subReport(" + teamNum + "," + competition + "," + firstWord(locString) + ") value='Submit'>"
});
}
function dec(id) {
document.getElementById(id).innerHTML = (parseInt(document.getElementById(id).innerHTML) - 1).toString()
}
function inc(id) {
document.getElementById(id).innerHTML = (parseInt(document.getElementById(id).innerHTML) + 1).toString()
}
function subReport(team, comp, matchNum) {
var push = {}
var x = document.getElementById('FormData').children;
for (var i = 0; i < x.length; i++) {
if (x[i].children[0].tagName == "INPUT") {
push[x[i].children[0].id] = x[i].children[0].tagName;
} else if (x[i].children[0].tagName == "TEXTAREA") {
push[x[i].children[0].id] = x[i].children[0].innerHTML;
} else if (x[i].children[0].tagName == "SPAN") {
push[x[i].children[0].id] = x[i].children[0].innerText;
}else if (x[i].children[0].tagName == "DIV") {
var name=x[i].children[0].id;
push[name]=document.querySelector('input[name="'+name+'"]:checked').value;
}
}
var user = firebase.auth().currentUser;
firebase.firestore().collection("teamData").doc('team-' + team).collection('scouts').doc(user.uid).collection(comp).doc("team-" + scoutedTeamNumber + matchNum).set(push, {
merge: true
}).then(function () {
firebase.firestore().collection("data").doc('team-' + team).collection(comp).doc("team-" + scoutedTeamNumber).collection('matches').doc('match-' + matchNum).set(push, {
merge: true
});
});
}
/*
function subRes() {
firebase.firestore().collection('teamData').doc('team-' + document.getElementById('tns').value).get().then(function(doc) {
if (doc.exists) {
comp = doc.data()['currentCompetition'];
}
}).then(function() {
var user = firebase.auth().currentUser;
push = {}
push['match'] = 'match-' + document.getElementById('mn').value
push['teamDBRef'] = 'team-' + document.getElementById('tsn').value
push['speed'] = document.getElementById('speed').value
push['sandstormCross'] = document.getElementById('SCross').value
push['strategy'] = document.getElementById('strat').value
push['contrubution'] = document.getElementById('contrib').value
push['startingHatch'] = document.getElementById('habs').value
push['size'] = document.getElementById('egs').value
push['fillChoice'] = document.getElementById('SFill').value
push['functional'] = document.getElementById('DOA').value
push['strongMedium'] = document.getElementById('SSO').value
push['sandstormCrossBonus'] = document.getElementById('SCross').value
push['fillChoiceTeleop'] = document.getElementById('TFill').value
push['strongMediumTeleop'] = document.getElementById('TSO').value
push['cargoSuccessTeleop'] = document.getElementById('CSSR').value
push['hiRocketSuccessTeleop'] = document.getElementById('HRSR').value
push['lowRocketSuccessTeleop'] = document.getElementById('LRSR').value
push['endingHab'] = document.getElementById('HAB').value
firebase.firestore().collection("teamData").doc('team-' + document.getElementById('tns').value).collection('scouts').doc(user.uid).collection(comp).doc("team-" + document.getElementById('tsn').value + "-match-" + document.getElementById('mn').value).set(push, {
merge: true
})
}).then(function() {
var user = firebase.auth().currentUser;
push = {}
push['match'] = 'match-' + document.getElementById('mn').value
push['teamDBRef'] = 'team-' + document.getElementById('tsn').value
push['speed'] = document.getElementById('speed').value
push['sandstormCross'] = document.getElementById('SCross').value
push['strategy'] = document.getElementById('strat').value
push['contrubution'] = document.getElementById('contrib').value
push['startingHatch'] = document.getElementById('habs').value
push['size'] = document.getElementById('egs').value
push['fillChoice'] = document.getElementById('SFill').value
push['functional'] = document.getElementById('DOA').value
push['strongMedium'] = document.getElementById('SSO').value
push['sandstormCrossBonus'] = document.getElementById('SCross').value
push['fillChoiceTeleop'] = document.getElementById('TFill').value
push['strongMediumTeleop'] = document.getElementById('TSO').value
push['cargoSuccessTeleop'] = document.getElementById('CSSR').value
push['hiRocketSuccessTeleop'] = document.getElementById('HRSR').value
push['lowRocketSuccessTeleop'] = document.getElementById('LRSR').value
push['endingHab'] = document.getElementById('HAB').value
firebase.firestore().collection("data").doc('team-' + document.getElementById('tns').value).collection(comp).doc("team-" + document.getElementById('tsn').value).collection('matches').doc('match-' + document.getElementById('mn').value).set(push, {
merge: true
})
}
).then(function() {
alert('Submitted!')
setTimeout(function() {
window.location.href = '../scout';
}, 500);
})
}*/

View File

@ -0,0 +1,466 @@
/* Set the width of the side navigation to 250px and the left margin of the page content to 250px and add a black background color to body */
function openNav() {
document.getElementById("mySidenav").style.width = "250px";
document.getElementById("main").style.marginLeft = "250px";
document.body.style.backgroundColor = "rgba(0,0,0,0.4)";
}
/* Set the width of the side navigation to 0 and the left margin of the page content to 0, and the background color of body to white */
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main").style.marginLeft = "0";
document.body.style.backgroundColor = "white";
}
window.onload = function() {
document.getElementById('sideload').style.display = 'block';
var config = {
apiKey: "(insert the TitanScout Api Key Here)",
authDomain: "titanscoutandroid.firebaseapp.com",
databaseURL: "https://titanscoutandroid.firebaseio.com",
projectId: "titanscoutandroid",
storageBucket: "titanscoutandroid.appspot.com",
messagingSenderId: "1097635313476"
};
//eventually find a less-jank way to do this tho
firebase.initializeApp(config);
firebase.auth().onAuthStateChanged(function(user) {
if (user != null) {
if (user.displayName != null) {
document.getElementById('status').innerHTML = "You are signed in as: " + user.displayName;
} else if (user.email != null) {
document.getElementById('status').innerHTML = "You are signed in as: " + user.email;
} else if (user.phoneNumber != null) {
document.getElementById('status').innerHTML = "You are signed in as: " + user.phoneNumber;
} else {
document.getElementById('status').innerHTML = "You are signed in.";
}
} else {
window.location.replace('../../');
}
teamAssoc = firebase.firestore().collection('UserAssociations').doc(user.uid);
teamAssoc.get().then(function(doc) {
if (doc.exists) {
list = doc.data()
teamNums = Object.keys(list)
document.getElementById('tns').innerHTML = ""
for (var i = 0; i < teamNums.length; i++) {
document.getElementById('tns').innerHTML += "<option value='" + teamNums[i] + "'>" + teamNums[i] + "</option>"
}
} else {}
}).then(function() {
changeTeam(document.getElementById('tns').value)
})
});
}
function changeTeam(teamNum) {
document.getElementById('mSelect').innerHTML = ""
var user = firebase.auth().currentUser;
ti = firebase.firestore().collection('teamData').doc("team-" + teamNum);
currentComp = null;
ti.get().then(function(doc) {
if (doc.exists) {
info = doc.data();
currentComp = info['currentCompetition'];
} else {
alert("Something's wrong with firebase.");
throw ("Something's wrong with firebase.");
}
}).then(function() {
if (currentComp != null) {
matches = firebase.firestore().collection('appBuliding').doc('team-' + teamNum).collection('competitions').doc(currentComp).collection('scoutsAndSchedule');
matches.get().then(function(qs) {
qs.forEach(function(dc) {
//regex search!
var pattern = /\d+/;
var name = dc.id;
document.getElementById('mSelect').innerHTML += "<option value='" + name.match(pattern)[0].toString() + "'>" + name.match(pattern)[0].toString() + "</option>";
});
cmatch(document.getElementById('mselect').value);
});
}
});
}
function cmatch(matchName) {
document.getElementById('tselect').innerHTML = ""
var user = firebase.auth().currentUser;
ti = firebase.firestore().collection('teamData').doc("team-" + teamNum);
currentComp = null;
ti.get().then(function(doc) {
if (doc.exists) {
info = doc.data();
currentComp = info['currentCompetition'];
} else {
alert("Something's wrong with firebase.");
throw ("Something's wrong with firebase.");
}
}).then(function() {
if (currentComp != null) {
match = firebase.firestore().collection('appBuliding').doc('team-' + teamNum).collection('competitions').doc(currentComp).collection('scoutsAndSchedule').doc('match-' + matchName)
match.get().then(function(doc) {
if (doc.exists) {
data = doc.data()
for (var i = 0; i < Object.keys(data['BLUE']).length; i++) {
var pattern = /\d+/;
document.getElementById('tselect').innerHTML += "<option value='" + Object.keys(data['BLUE'])[i].match(pattern)[0].toString() + "'>" + Object.keys(data['BLUE'])[i].match(pattern)[0].toString() + "</option>";
}
for (var i = 0; i < Object.keys(data['RED']).length; i++) {
var pattern = /\d+/;
document.getElementById('tselect').innerHTML += "<option value='" + Object.keys(data['RED'])[i].match(pattern)[0].toString() + "'>" + Object.keys(data['RED'])[i].match(pattern)[0].toString() + "</option>";
}
cseries(document.getElementById('sselect').value);
}
})
}
});
}
function cseries(seriesName) {
document.getElementById('mSelect').innerHTML = ""
var user = firebase.auth().currentUser;
ti = firebase.firestore().collection('teamData').doc("team-" + teamNum);
currentComp = null;
ti.get().then(function(doc) {
if (doc.exists) {
info = doc.data();
currentComp = info['currentCompetition'];
} else {
alert("Something's wrong with firebase.");
throw ("Something's wrong with firebase.");
}
}).then(function() {
if (currentComp != null) {
if (seriesName == "quantitative") {
document.getElementById('FormData').innerHTML += "<h3>" + 'Sandstorm' + "</h3>";
document.getElementById('FormData').innerHTML += "<div id='repsec1'>";
var ss = firebase.firestore().collection('appBuliding').doc('team-' + teamNum).collection('competitions').doc(currentComp).collection('appBuliding').doc('quantitativeSandstorm');
ss.get().then(function(doc) {
if (doc.exists) {
processAndAppendReturn(doc.data())
}
document.getElementById('FormData').innerHTML += "</div>";
}).then(function() {
document.getElementById('FormData').innerHTML += "<h3>" + 'TeleOp' + "</h3>";
document.getElementById('FormData').innerHTML += "<div id='repsec2'>";
var to = firebase.firestore().collection('appBuliding').doc('team-' + teamNum).collection('competitions').doc(currentComp).collection('appBuliding').doc('quantitativeTeleop');
to.get().then(function(doc) {
if (doc.exists) {
processAndAppendReturn(doc.data())
}
document.getElementById('FormData').innerHTML += "</div>";
}).then(function() {
document.getElementById('FormData').innerHTML += "<h3>" + 'Cycle Times' + "</h3>";
document.getElementById('FormData').innerHTML += "<div id='repsec3'>";
var cyc = firebase.firestore().collection('appBuliding').doc('team-' + teamNum).collection('competitions').doc(currentComp).collection('appBuliding').doc('quantitativeCycleTimes');
cyc.get().then(function(doc) {
if (doc.exists) {
processAndAppendReturn(doc.data())
}
document.getElementById('FormData').innerHTML += "</div>";
});
});
});
} else if (seriesName = "qualitative") {
document.getElementById('FormData').innerHTML += "<h3>" + 'Sandstorm' + "</h3>";
document.getElementById('FormData').innerHTML += "<div id='repsec1'>";
var ss = firebase.firestore().collection('appBuliding').doc('team-' + teamNum).collection('competitions').doc(currentComp).collection('appBuliding').doc('qualitativeSandstorm');
ss.get().then(function(doc) {
if (doc.exists) {
processAndAppendReturn(doc.data())
}
document.getElementById('FormData').innerHTML += "</div>";
}).then(function() {
document.getElementById('FormData').innerHTML += "<h3>" + 'TeleOp' + "</h3>";
document.getElementById('FormData').innerHTML += "<div id='repsec2'>";
var to = firebase.firestore().collection('appBuliding').doc('team-' + teamNum).collection('competitions').doc(currentComp).collection('appBuliding').doc('qualitativeTeleop');
to.get().then(function(doc) {
if (doc.exists) {
processAndAppendReturn(doc.data())
}
document.getElementById('FormData').innerHTML += "</div>";
}).then(function() {
document.getElementById('FormData').innerHTML += "<h3>" + 'Strategy' + "</h3>";
document.getElementById('FormData').innerHTML += "<div id='repsec3'>";
var strat = firebase.firestore().collection('appBuliding').doc('team-' + teamNum).collection('competitions').doc(currentComp).collection('appBuliding').doc('qualitativeStrategy');
strat.get().then(function(doc) {
if (doc.exists) {
processAndAppendReturn(doc.data())
}
document.getElementById('FormData').innerHTML += "</div>";
});
});
});
}
document.getElementById('FormData').innerHTML += "<input type='button' onclick=subReport() value='Submit'>";
}
});
}
function processAndAppendReturn(data) {
labels = Object.keys(data);
var questions = [];
for (var j = 0; j < labels.length; j++) {
questions.push([labels[j], data[labels[j]]]);
}
questions.sort(function(a, b) {
return a[1].order - b[1].order;
})
for (var j = 0; j < questions.length; j++) {
document.getElementById('FormData').innerHTML += "<div>";
document.getElementById('FormData').innerHTML += questions[j][1]['title'];
if (questions[j][1]['type'] = 'shortText') {
document.getElementById('FormData').innerHTML += "<input id=''" + questions[j][0] + "' type='text'></input>";
} else if (questions[j][1]['type'] = 'longText') {
document.getElementById('FormData').innerHTML += "<textarea id=''" + questions[j][0] + "' rows='4' cols='50''></textarea>";
} else if (questions[j][1]['type'] = 'numerical') {
document.getElementById('FormData').innerHTML += "<span id='" + questions[j][0] + "'><input type='button' onclick='dec(" + questions[j][0] + ")' value='-'></input>" + (questions[j][1]['default']).toString() + "<input type='button' onclick='inc(" + questions[j][0] + ")' value='+'></input></span>";
} else if (questions[j][1]['type'] = 'range') {
document.getElementById('FormData').innerHTML += "&nbsp;&nbsp;" + questions[j][1]['min']['text'] + "&nbsp;&nbsp;";
document.getElementById('FormData').innerHTML += "<input type='range' min='" + questions[j][1]['min']['val'] + "' max='" + questions[j][1]['max']['val'] + "'>";
document.getElementById('FormData').innerHTML += "&nbsp;&nbsp;" + questions[j][1]['max']['text'];
} else if (questions[j][1]['type'] = 'segment') {
document.getElementById('FormData').innerHTML += "<div id='" + questions[j][0] + "'>"
for (var k = 0; k < questions[j][1]['elements'].length; k++) {
//// TODO: replace with real buttons for good styling
document.getElementById('FormData').innerHTML += questions[j][1]['elements'][k];
document.getElementById('FormData').innerHTML += "<input type='radio' name='" + questions[j][0] + "' value=" + questions[j][1]['elements'][k] + "></input>"
}
document.getElementById('FormData').innerHTML += "</div>"
}
document.getElementById('FormData').innerHTML += "</div>";
}
}
/*
function updateForm(locString, teamNum, competition) {
seriesList = [];
document.getElementById('FormData').innerHTML = ""
loc = firebase.firestore().collection('appBuliding').doc("team-" + teamNum).collection('competitions').doc(competition).collection(lastWord(locString));
loc.get().then(function(docs) {
docs.forEach(function(doc) {
seriesList.push(doc.data());
});
seriesList.sort(function(a, b) {
return a.order - b.order;
})
for (var i = 0; i < seriesList.length; i++) {
document.getElementById('FormData').innerHTML += "<h3>"
seriesList[i].id + "</h3>";
labels = Object.keys(seriesList[i].data());
var index = labels.indexOf('order');
if (index > -1) {
labels.splice(index, 1);
}
var questions = [];
for (var j = 0; j < labels.length; j++) {
questions.push([labels[j], seriesList[i].data()[labels[j]]])
}
questions.sort(function(a, b) {
return a[1].order - b[1].order;
})
for (var j = 0; j < questions.length; j++) {
document.getElementById('FormData').innerHTML += "<div>";
document.getElementById('FormData').innerHTML += questions[j][1]['title'];
if (questions[j][1]['type'] = 'shortText') {
document.getElementById('FormData').innerHTML += "<input id=''" + questions[j][0] + "' type='text'></input>";
} else if (questions[j][1]['type'] = 'longText') {
document.getElementById('FormData').innerHTML += "<textarea id=''" + questions[j][0] + "' rows='4' cols='50''></textarea>";
} else if (questions[j][1]['type'] = 'numerical') {
document.getElementById('FormData').innerHTML += "<span id='" + questions[j][0] + "'><input type='button' onclick='dec(" + questions[j][0] + ")' value='-'></input>" + (questions[j][1]['default']).toString() + "<input type='button' onclick='inc(" + questions[j][0] + ")' value='+'></input></span>";
} else if (questions[j][1]['type'] = 'range') {
document.getElementById('FormData').innerHTML += "&nbsp;&nbsp;" + questions[j][1]['min']['text'] + "&nbsp;&nbsp;";
document.getElementById('FormData').innerHTML += "<input type='range' min='" + questions[j][1]['min']['val'] + "' max='" + questions[j][1]['max']['val'] + "'>";
document.getElementById('FormData').innerHTML += "&nbsp;&nbsp;" + questions[j][1]['max']['text'];
} else if (questions[j][1]['type'] = 'segment') {
document.getElementById('FormData').innerHTML += "<div id='" + questions[j][0] + "'>"
for (var k = 0; k < questions[j][1]['elements'].length; k++) {
//// TODO: replace with real buttons for good styling
document.getElementById('FormData').innerHTML += questions[j][1]['elements'][k];
document.getElementById('FormData').innerHTML += "<input type='radio' name='" + questions[j][0] + "' value=" + questions[j][1]['elements'][k] + "></input>"
}
document.getElementById('FormData').innerHTML += "</div>"
}
document.getElementById('FormData').innerHTML += "</div>";
}
}
document.getElementById('FormData').innerHTML += "<input type='button' onclick=subReport(" + teamNum + "," + competition + "," + firstWord(locString) + ") value='Submit'>"
});
}
*/
function dec(id) {
document.getElementById(id).innerHTML = (parseInt(document.getElementById(id).innerHTML) - 1).toString()
}
function inc(id) {
document.getElementById(id).innerHTML = (parseInt(document.getElementById(id).innerHTML) + 1).toString()
}
function subReport() {
document.getElementById('mSelect').innerHTML = ""
var user = firebase.auth().currentUser;
ti = firebase.firestore().collection('teamData').doc("team-" + teamNum);
currentComp = null;
ti.get().then(function(doc) {
if (doc.exists) {
info = doc.data();
currentComp = info['currentCompetition'];
} else {
alert("Something's wrong with firebase.");
throw ("Something's wrong with firebase.");
}
}).then(function() {
if (currentComp != null) {
var submitTo = document.getElementById('tns').value;
var teamNum = document.getElementById('tselect').value;
var matchNum = document.getElementById('mselect').value;
var series = document.getElementById('sselect').value;
var push = {}
var x = document.getElementById('repsec1').children;
for (var i = 0; i < x.length; i++) {
if (x[i].children[0].tagName == "INPUT") {
push[x[i].children[0].id] = x[i].children[0].tagName;
} else if (x[i].children[0].tagName == "TEXTAREA") {
push[x[i].children[0].id] = x[i].children[0].innerHTML;
} else if (x[i].children[0].tagName == "SPAN") {
push[x[i].children[0].id] = x[i].children[0].innerText;
} else if (x[i].children[0].tagName == "DIV") {
var name = x[i].children[0].id;
push[name] = document.querySelector('input[name="' + name + '"]:checked').value;
}
}
var x = document.getElementById('repsec2').children;
for (var i = 0; i < x.length; i++) {
if (x[i].children[0].tagName == "INPUT") {
push[x[i].children[0].id] = x[i].children[0].tagName;
} else if (x[i].children[0].tagName == "TEXTAREA") {
push[x[i].children[0].id] = x[i].children[0].innerHTML;
} else if (x[i].children[0].tagName == "SPAN") {
push[x[i].children[0].id] = x[i].children[0].innerText;
} else if (x[i].children[0].tagName == "DIV") {
var name = x[i].children[0].id;
push[name] = document.querySelector('input[name="' + name + '"]:checked').value;
}
}
var x = document.getElementById('repsec3').children;
for (var i = 0; i < x.length; i++) {
if (x[i].children[0].tagName == "INPUT") {
push[x[i].children[0].id] = x[i].children[0].tagName;
} else if (x[i].children[0].tagName == "TEXTAREA") {
push[x[i].children[0].id] = x[i].children[0].innerHTML;
} else if (x[i].children[0].tagName == "SPAN") {
push[x[i].children[0].id] = x[i].children[0].innerText;
} else if (x[i].children[0].tagName == "DIV") {
var name = x[i].children[0].id;
push[name] = document.querySelector('input[name="' + name + '"]:checked').value;
}
}
}
});
}
/*
function subReport(team, comp, matchNum) {
var push = {}
var x = document.getElementById('FormData').children;
for (var i = 0; i < x.length; i++) {
if (x[i].children[0].tagName == "INPUT") {
push[x[i].children[0].id] = x[i].children[0].tagName;
} else if (x[i].children[0].tagName == "TEXTAREA") {
push[x[i].children[0].id] = x[i].children[0].innerHTML;
} else if (x[i].children[0].tagName == "SPAN") {
push[x[i].children[0].id] = x[i].children[0].innerText;
} else if (x[i].children[0].tagName == "DIV") {
var name = x[i].children[0].id;
push[name] = document.querySelector('input[name="' + name + '"]:checked').value;
}
}
var user = firebase.auth().currentUser;
firebase.firestore().collection("teamData").doc('team-' + team).collection('scouts').doc(user.uid).collection(comp).doc("team-" + scoutedTeamNumber + matchNum).set(push, {
merge: true
}).then(function() {
firebase.firestore().collection("data").doc('team-' + team).collection(comp).doc("team-" + scoutedTeamNumber).collection('matches').doc('match-' + matchNum).set(push, {
merge: true
});
});
}
function subRes() {
firebase.firestore().collection('teamData').doc('team-' + document.getElementById('tns').value).get().then(function(doc) {
if (doc.exists) {
comp = doc.data()['currentCompetition'];
}
}).then(function() {
var user = firebase.auth().currentUser;
push = {}
push['match'] = 'match-' + document.getElementById('mn').value
push['teamDBRef'] = 'team-' + document.getElementById('tsn').value
push['speed'] = document.getElementById('speed').value
push['sandstormCross'] = document.getElementById('SCross').value
push['strategy'] = document.getElementById('strat').value
push['contrubution'] = document.getElementById('contrib').value
push['startingHatch'] = document.getElementById('habs').value
push['size'] = document.getElementById('egs').value
push['fillChoice'] = document.getElementById('SFill').value
push['functional'] = document.getElementById('DOA').value
push['strongMedium'] = document.getElementById('SSO').value
push['sandstormCrossBonus'] = document.getElementById('SCross').value
push['fillChoiceTeleop'] = document.getElementById('TFill').value
push['strongMediumTeleop'] = document.getElementById('TSO').value
push['cargoSuccessTeleop'] = document.getElementById('CSSR').value
push['hiRocketSuccessTeleop'] = document.getElementById('HRSR').value
push['lowRocketSuccessTeleop'] = document.getElementById('LRSR').value
push['endingHab'] = document.getElementById('HAB').value
firebase.firestore().collection("teamData").doc('team-' + document.getElementById('tns').value).collection('scouts').doc(user.uid).collection(comp).doc("team-" + document.getElementById('tsn').value + "-match-" + document.getElementById('mn').value).set(push, {
merge: true
})
}).then(function() {
var user = firebase.auth().currentUser;
push = {}
push['match'] = 'match-' + document.getElementById('mn').value
push['teamDBRef'] = 'team-' + document.getElementById('tsn').value
push['speed'] = document.getElementById('speed').value
push['sandstormCross'] = document.getElementById('SCross').value
push['strategy'] = document.getElementById('strat').value
push['contrubution'] = document.getElementById('contrib').value
push['startingHatch'] = document.getElementById('habs').value
push['size'] = document.getElementById('egs').value
push['fillChoice'] = document.getElementById('SFill').value
push['functional'] = document.getElementById('DOA').value
push['strongMedium'] = document.getElementById('SSO').value
push['sandstormCrossBonus'] = document.getElementById('SCross').value
push['fillChoiceTeleop'] = document.getElementById('TFill').value
push['strongMediumTeleop'] = document.getElementById('TSO').value
push['cargoSuccessTeleop'] = document.getElementById('CSSR').value
push['hiRocketSuccessTeleop'] = document.getElementById('HRSR').value
push['lowRocketSuccessTeleop'] = document.getElementById('LRSR').value
push['endingHab'] = document.getElementById('HAB').value
firebase.firestore().collection("data").doc('team-' + document.getElementById('tns').value).collection(comp).doc("team-" + document.getElementById('tsn').value).collection('matches').doc('match-' + document.getElementById('mn').value).set(push, {
merge: true
})
}
).then(function() {
alert('Submitted!')
setTimeout(function() {
window.location.href = '../scout';
}, 500);
})
}*/

View File

@ -1,53 +0,0 @@
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>
<meta charset="utf-8">
<title>titanscout</title>
<script src="https://www.gstatic.com/firebasejs/5.7.2/firebase.js"></script>
<script src="https://cdn.firebase.com/libs/firebaseui/3.5.1/firebaseui.js"></script>
<link type="text/css" rel="stylesheet" href="https://cdn.firebase.com/libs/firebaseui/3.5.1/firebaseui.css" />
<link rel="stylesheet" href="../../style.css" type="text/css" />
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<script type="text/javascript" src="scripts.js"></script>
</head>
<body>
<div id="mySidenav" class="sidenav">
<a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>
<a href="../../profile">Profile</a>
<a href="../../team">Team</a>
<p>Scout Matches</p>
<a href="../signUps" class="scoutMatchLinks">Sign Up For Matches</a>
<a href="../rpts" class="scoutMatchLinks">Submit Scouting Reports</a>
<a href="../../stats">Tournament Stats</a>
</div>
<div id="main">
<span onclick="openNav()" id="topbar">
<img id="sideload" src="https://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Hamburger_icon.svg/1200px-Hamburger_icon.svg.png">
</span>
<h1 id="mainhead">TitanScout- Scout Matches</h1>
<p id="status">Loading...</p>
<div>
Scouting For: <select id="tns" onchange="changeTeam(document.getElementById('tns').value)"></select>
</div>
<h2>Sign Up For Matches</h2>
<table id="matchTable">
<tr>
<td class="neu">Match Number</td>
<td class="neu">Series</td>
<td class="blue">Far Blue</td>
<td class="blue">Mid Blue</td>
<td class="blue">Near Blue</td>
<td class="red">Far Red</td>
<td class="red">Mid Red</td>
<td class="red">Near Red</td>
</tr>
</table>
</div>
</div>
</body>
</html>

View File

@ -1,214 +0,0 @@
/* Set the width of the side navigation to 250px and the left margin of the page content to 250px and add a black background color to body */
function openNav() {
document.getElementById("mySidenav").style.width = "250px";
document.getElementById("main").style.marginLeft = "250px";
document.body.style.backgroundColor = "rgba(0,0,0,0.4)";
}
/* Set the width of the side navigation to 0 and the left margin of the page content to 0, and the background color of body to white */
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
document.getElementById("main").style.marginLeft = "0";
document.body.style.backgroundColor = "white";
}
window.onload = function() {
document.getElementById('sideload').style.display = 'block';
var config = {
apiKey: "(insert the TitanScout Api Key Here)",
authDomain: "titanscoutandroid.firebaseapp.com",
databaseURL: "https://titanscoutandroid.firebaseio.com",
projectId: "titanscoutandroid",
storageBucket: "titanscoutandroid.appspot.com",
messagingSenderId: "1097635313476"
};
//eventually find a less-jank way to do this tho
firebase.initializeApp(config);
firebase.auth().onAuthStateChanged(function(user) {
if (user != null) {
if (user.displayName != null) {
document.getElementById('status').innerHTML = "You are signed in as: " + user.displayName;
} else if (user.email != null) {
document.getElementById('status').innerHTML = "You are signed in as: " + user.email;
} else if (user.phoneNumber != null) {
document.getElementById('status').innerHTML = "You are signed in as: " + user.phoneNumber;
} else {
document.getElementById('status').innerHTML = "You are signed in.";
}
} else {
window.location.replace('../../');
}
teamAssoc = firebase.firestore().collection('UserAssociations').doc(user.uid);
teamAssoc.get().then(function(doc) {
if (doc.exists) {
list = doc.data()
teamNums = Object.keys(list)
document.getElementById('tns').innerHTML = ""
for (var i = 0; i < teamNums.length; i++) {
document.getElementById('tns').innerHTML += "<option value='" + teamNums[i] + "'>" + teamNums[i] + "</option>"
}
} else {}
}).then(function() {
changeTeam(document.getElementById('tns').value)
})
});
}
function changeTeam(teamNum) {
document.getElementById("matchTable").innerHTML = `<tr>
<td class="neu">Match Number</td>
<td class="neu">Series</td>
<td class="blue">Far Blue</td>
<td class="blue">Mid Blue</td>
<td class="blue">Near Blue</td>
<td class="red">Far Red</td>
<td class="red">Mid Red</td>
<td class="red">Near Red</td>
</tr>`;
ti = firebase.firestore().collection('teamData').doc("team-" + teamNum);
currentComp = null;
ti.get().then(function(doc) {
if (doc.exists) {
info = doc.data();
currentComp = info['currentCompetition'];
} else {
alert("Something's wrong with firebase.");
throw ("Something's wrong with firebase.");
}
}).then(function() {
cci = firebase.firestore().collection('matchSignupsTeam').doc("team-" + teamNum).collection('competitions').doc(currentComp);
cci.get().then(function(doc) {
if (doc.exists) {
compInfo = doc.data();
matches = Object.keys(compInfo);
matches.sort();
var nr = [],
mr = [],
fr = [],
nb = [],
mb = [],
fb = [];
for (var i = 0; i < matches.length; i++) {
mi = compInfo["match-" + (i + 1).toString()]
//sets up the table lists. i really hope it doesn't break.
for (var j = 0; j < 2; j++) {
if (mi['far-blue']['series-' + (j + 1).toString()] != null) {
fb.push(mi['far-blue']['series-' + (j + 1).toString()]);
} else {
fb.push(`<span onclick="addMatch(${(i + 1).toString()},${(j + 1).toString()},'far-blue')">open</span>`);
}
if (mi['mid-blue']['series-' + (j + 1).toString()] != null) {
mb.push(mi['mid-blue']['series-' + (j + 1).toString()]);
} else {
mb.push(`<span onclick="addMatch(${(i + 1).toString()},${(j + 1).toString()},'mid-blue')">open</span>`);
}
if (mi['near-blue']['series-' + (j + 1).toString()] != null) {
nb.push(mi['near-blue']['series-' + (j + 1).toString()]);
} else {
nb.push(`<span onclick="addMatch(${(i + 1).toString()},${(j + 1).toString()},'near-blue')">open</span>`);
}
if (mi['far-red']['series-' + (j + 1).toString()] != null) {
fr.push(mi['far-red']['series-' + (j + 1).toString()]);
} else {
fr.push(`<span onclick="addMatch(${(i + 1).toString()},${(j + 1).toString()},'far-red')">open</span>`);
}
if (mi['mid-red']['series-' + (j + 1).toString()] != null) {
mr.push(mi['mid-red']['series-' + (j + 1).toString()]);
} else {
mr.push(`<span onclick="addMatch(${(i + 1).toString()},${(j + 1).toString()},'mid-red')">open</span>`);
}
if (mi['near-red']['series-' + (j + 1).toString()] != null) {
nr.push(mi['near-red']['series-' + (j + 1).toString()]);
} else {
nr.push(`<span onclick="addMatch(${(i + 1).toString()},${(j + 1).toString()},'near-red')">open</span>`)
}
}
var outstr = "";
outstr += "<tr><td rowspan='2' class='neu'>Quals " + (i + 1).toString() + "</td>";
outstr += "<td class='neu'>Series 1</td>";
outstr += "<td class='blue'>" + fb[0] + "</td>";
outstr += "<td class='blue'>" + mb[0] + "</td>";
outstr += "<td class='blue'>" + nb[0] + "</td>";
outstr += "<td class='red'>" + fr[0] + "</td>";
outstr += "<td class='red'>" + mr[0] + "</td>";
outstr += "<td class='red'>" + nr[0] + "</td>";
outstr += "</tr>"
for (var k = 1; k < 2; k++) {
outstr += "<tr>";
outstr += "<td class='neu'>Series " + (k + 1).toString() + "</td>";
outstr += "<td class='blue'>" + fb[k] + "</td>";
outstr += "<td class='blue'>" + mb[k] + "</td>";
outstr += "<td class='blue'>" + nb[k] + "</td>";
outstr += "<td class='red'>" + fr[k] + "</td>";
outstr += "<td class='red'>" + mr[k] + "</td>";
outstr += "<td class='red'>" + nr[k] + "</td>";
outstr += "</tr>"
}
document.getElementById('matchTable').innerHTML += outstr;
}
}
});
});
}
function addMatch(matchNum, seriesNum, position) {
var success = false;
var teamNum = document.getElementById('tns').value
var user = firebase.auth().currentUser;
var name = "anon"
if (user.displayName != null) {
name = user.displayName;
} else if (user.email != null) {
name = user.email;
} else if (user.phoneNumber != null) {
name = user.phoneNumber;
}
ti = firebase.firestore().collection('teamData').doc("team-" + teamNum);
currentComp = null;
ti.get().then(function(doc) {
if (doc.exists) {
info = doc.data();
currentComp = info['currentCompetition'];
} else {
alert("Something's wrong with firebase.");
throw ("Something's wrong with firebase.");
}
}).then(function() {
cci = firebase.firestore().collection('matchSignupsTeam').doc("team-" + teamNum).collection('competitions').doc(currentComp);
cci.get().then(function(doc) {
if (doc.exists) {
info = doc.data();
match = info["match-" + matchNum.toString()];
pos = match[position];
occ = pos["series-" + seriesNum.toString()];
if (occ == null) {
info["match-" + matchNum.toString()][position]["series-" + seriesNum.toString()] = name;
firebase.firestore().collection('matchSignupsTeam').doc("team-" + teamNum).collection('competitions').doc(currentComp).set(info)
success = true;
} else {
alert(occ + "has added that match first.")
setTimeout(function() {
window.location.href = '../signUps';
}, 500);
}
}
}).then(function() {
if (success) {
ti = firebase.firestore().collection('matchSignupsIndividual').doc(user.uid).collection("team-" + teamNum).doc(currentComp);
var push = {}
push["match-" + matchNum.toString() + " " + position] = {
'completed': false,
'series': seriesNum.toString()
}
ti.set(push, {
merge: true
}).then(function() {
alert('Added!')
setTimeout(function() {
window.location.href = '../signUps';
}, 500);
});
}
});
});
}

View File

@ -10,16 +10,15 @@
<link rel="stylesheet" href="../style.css" type="text/css" />
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
<script type="text/javascript" src="scripts.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div id="mySidenav" class="sidenav">
<a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>
<a href="../profile">Profile</a>
<a href="#">Profile</a>
<a href="../team">Team</a>
<p>Scout Matches</p>
<a href="../scout/signUps" class="scoutMatchLinks">Sign Up For Matches</a>
<a href="../scout/rpts" class="scoutMatchLinks">Submit Scouting Reports</a>
<a href="#">Tournament Stats</a>
<a href="../scout">Scout Matches</a>
<a href="../stats">Tournament Stats</a>
</div>
<div id="main">
<span onclick="openNav()" id="topbar">
@ -28,7 +27,10 @@
<h1 id="mainhead">TitanScout- Tournament Statistics</h1>
<p id="status">Loading...</p>
<div>
Live stats aren't ready let. Download the latest report.
<h2>Scouting Report</h2>
<embed src="https://drive.google.com/viewerng/viewer?embedded=true&url=http://titanrobotics.ddns.net:60080/files" width="500" height="375"></embed>
<h2>Scouting Presentation</h2>
<embed src="https://drive.google.com/viewerng/viewer?embedded=true&url=http://titanrobotics.ddns.net:60080/files" width="500" height="375"></embed>
</div>
</div>
</body>

View File

@ -16,11 +16,9 @@
<body>
<div id="mySidenav" class="sidenav">
<a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a>
<a href="../profile">Profile</a>
<a href="#">Team</a>
<p>Scout Matches</p>
<a href="../scout/signUps" class="scoutMatchLinks">Sign Up For Matches</a>
<a href="../scout/rpts" class="scoutMatchLinks">Submit Scouting Reports</a>
<a href="#">Profile</a>
<a href="../team">Team</a>
<a href="../scout">Scout Matches</a>
<a href="../stats">Tournament Stats</a>
</div>
<div id="main">