Files
PasswordManager/public/player.js

180 lines
6.2 KiB
JavaScript
Raw Normal View History

2025-11-18 21:16:35 -05:00
import { postData, verifyLogin } from "./client.js";
import { formatSalary } from "./utils.js";
const searchForm = document.getElementById("searchForm");
const token = window.localStorage.getItem("token");
const tableHeader = document.getElementById("header");
const tableBody = document.getElementById("results");
const table = document.getElementById("table");
const nomatch = document.getElementById("nomatch");
2025-11-28 13:54:57 -05:00
const statsTable = document.querySelector("#stats");
const statsHeader = document.querySelector("#stats thead");
const statsBody = document.querySelector("#stats tbody");
const overviewHeader = document.querySelector("#overview thead");
const overviewBody = document.querySelector("#overview tbody");
2025-11-26 21:10:22 -05:00
const watchButton = document.querySelector("#watch");
2025-11-28 13:54:57 -05:00
const showStatsButton = document.querySelector("#showStats");
2025-11-26 21:10:22 -05:00
//const watchlist = await postData("/getWatchlist", {}, token);
2025-11-18 21:16:35 -05:00
populatePlayerData();
2025-11-26 21:10:22 -05:00
updateIsWatched();
watchButton.onclick = async e => {
e.preventDefault();
const [, , id] = window.location.pathname.split("/");
const resultObject = await postData("/toggleWatched", { id: id }, token);
2025-11-28 11:15:58 -05:00
//alert(resultObject.message);
2025-11-26 21:10:22 -05:00
updateIsWatched();
}
2025-11-28 13:54:57 -05:00
showStatsButton.onclick = async e => {
e.preventDefault();
statsTable.style.display = statsTable.style.display == "" ? "none" : "";
showStatsButton.innerHTML = statsTable.style.display == "" ? "Hide Full Stats" : "Show Full Stats";
}
2025-11-26 21:10:22 -05:00
async function updateIsWatched() {
const [, , id] = window.location.pathname.split("/");
const resultObject = await postData("/isWatched", {id: id}, token);
const isWatched = resultObject.isWatched;
watchButton.innerHTML = isWatched ? "Stop Watching Player" : "Watch Player";
}
2025-11-18 21:16:35 -05:00
async function populatePlayerData() {
const [, , id] = window.location.pathname.split("/");
2025-11-28 13:54:57 -05:00
let resultObject = await postData("/getPlayerStats", {
playerID: id
}, token);
if (resultObject.success === false) {
console.log("Invalid ID");
return;
}
const playerStatsObject = resultObject.matches;
let playerObjectResult = await postData("/getPlayer", {
id: id
}, token);
if (playerObjectResult.success === false) {
2025-11-18 21:16:35 -05:00
console.log("Invalid ID");
return;
}
2025-11-28 13:54:57 -05:00
const playerObject = playerObjectResult.match;
for (const [attribute, value] of Object.entries(playerObject)) {
2025-11-18 21:16:35 -05:00
console.log(`.attribute-${attribute}`);
document.querySelectorAll(`.attribute-${attribute}`).forEach(element => {
if (element.classList.contains("format-salary")) {
element.textContent = formatSalary(value);
return;
}
element.textContent = value;
})
};
2025-11-28 13:54:57 -05:00
createStatsTable(playerStatsObject);
createOverviewTable(playerObject);
}
async function createOverviewTable(playerObject) {
const tableHeader = overviewHeader;
const tableBody = overviewBody;
nomatch.style.display = "none"
tableHeader.innerHTML = "";
const headerRow = document.createElement("tr")
//Object.keys(resultObject.matches[0]).forEach(attribute => {
// headerRow.innerHTML += `<td>${attribute}</td>`;
//});pass_attempts, complete_pass, total_yards, total_tds, interception, receptions, receiving_yards, receiving_touchdown, rush_attempts, rushing_yards, rush_touchdown, fumble
headerRow.innerHTML += `
<td>Contract</td>
<td>APY</td>
<td>Years</td>
<td>Duration</td>
`;
tableHeader.appendChild(headerRow);
tableBody.innerHTML = "";
const row = playerObject;
const rowElement = document.createElement("tr");
//for (attribute in player) {
// row.innerHTML += `<td>${player}</td>l`;
//}
rowElement.innerHTML = `
<td>${formatSalary(row.TrueAvgPerYear * row.Years)}</td>
<td>${formatSalary(row.TrueAvgPerYear)}</td>
<td>${row.Years}</td>
<td>${row.StartYear}-${row.EndYear}</td>
`;
tableBody.appendChild(rowElement);
}
async function createStatsTable(playerObject) {
const tableHeader = statsHeader;
const tableBody = statsBody;
nomatch.style.display = "none"
tableHeader.innerHTML = "";
const headerRow = document.createElement("tr")
//Object.keys(resultObject.matches[0]).forEach(attribute => {
// headerRow.innerHTML += `<td>${attribute}</td>`;
//});pass_attempts, complete_pass, total_yards, total_tds, interception, receptions, receiving_yards, receiving_touchdown, rush_attempts, rushing_yards, rush_touchdown, fumble
headerRow.innerHTML += `
<td>Season</td>
<td>Season Type</td>
<td>Week</td>
<td>Pass Attempts</td>
<td>Complete Passes</td>
<td>Total Yards</td>
<td>Total Touchdowns</td>
<td>Interceptions</td>
<td>Receptions</td>
<td>Recieving Yards</td>
<td>Receiving Touchdowns</td>
<td>Rush Attempts</td>
<td>Rushing Yards</td>
<td>Rushing Touchdowns</td>
<td>Fumbles</td>
`;
tableHeader.appendChild(headerRow);
tableBody.innerHTML = "";
playerObject.forEach(row => {
const rowElement = document.createElement("tr");
//for (attribute in player) {
// row.innerHTML += `<td>${player}</td>l`;
//}
rowElement.innerHTML = `
<td>${row.Season}</td>
2025-11-28 15:32:48 -05:00
<td>${row.SeasonType === "REG" ? "Regular" : "Post"}</td>
2025-11-28 13:54:57 -05:00
<td>${row.Week}</td>
<td>${row.pass_attempts}</td>
<td>${row.complete_pass}</td>
<td>${row.total_yards}</td>
<td>${row.total_tds}</td>
<td>${row.interception}</td>
<td>${row.receptions}</td>
<td>${row.receiving_yards}</td>
<td>${row.receiving_touchdown}</td>
<td>${row.rush_attempts}</td>
<td>${row.rushing_yards}</td>
<td>${row.rush_touchdown}</td>
<td>${row.fumble}</td>
`;
tableBody.appendChild(rowElement);
});
2025-11-18 21:16:35 -05:00
}
2025-11-28 13:54:57 -05:00
//});pass_attempts, complete_pass, total_yards, total_tds, interception, receptions, receiving_yards, receiving_touchdown, rush_attempts, rushing_yards, rush_touchdown, fumble