From 310bbc9679c5e8d6c4ddfb4e0fb69fcd157d54bb Mon Sep 17 00:00:00 2001 From: RochesterX Date: Mon, 17 Nov 2025 18:56:31 -0500 Subject: [PATCH] Player search --- .DS_Store | Bin 10244 -> 10244 bytes public/client.js | 2 -- public/delete.js | 9 ++++++++ public/home.html | 8 ++----- public/info.html | 35 ++++++++++++++++++++++++++++ public/info.js | 36 +++++++++++++++++++++++++++++ public/register.html | 6 ++--- public/search.html | 23 +++++++------------ public/search.js | 53 ++++++++++++++++++++++++++++++++----------- server.js | 16 ++++--------- 10 files changed, 137 insertions(+), 51 deletions(-) create mode 100644 public/delete.js create mode 100644 public/info.html create mode 100644 public/info.js diff --git a/.DS_Store b/.DS_Store index a7efda68ea77b09ae194462addec22d41d2aef7b..f3d46a198b060bb644ba4e422b61e14119033248 100644 GIT binary patch delta 76 zcmZn(XbISGSe$X^WD|ix4aw?iV+&&)1!Dt?S{;RILjz+|9R*WE!A4T doZP(p?#X8a { + e.preventDefault(); + const resultObject = await postData("/delete", { username: true, actor: true }, window.localStorage.getItem("token")); + window.localStorage.removeItem("token"); + alert(resultObject.message); + window.location.href = "/login.html" +}; diff --git a/public/home.html b/public/home.html index 1e0a279..e9be5df 100644 --- a/public/home.html +++ b/public/home.html @@ -7,20 +7,16 @@

Home

- Search Users + Search Players
Personal Information
- Manage My Sections -

- + - -
diff --git a/public/info.html b/public/info.html new file mode 100644 index 0000000..fda362b --- /dev/null +++ b/public/info.html @@ -0,0 +1,35 @@ + + + + Personal Information + + + +
+

Search Users

+
+
+

Username:

+

[username]

+
+
+

First Name:

+ +
+
+

Last Name:

+ +
+
+

Date of Birth:

+ +
+ +
+ + Return Home +
+ + + + diff --git a/public/info.js b/public/info.js new file mode 100644 index 0000000..f4b2e3e --- /dev/null +++ b/public/info.js @@ -0,0 +1,36 @@ +import { postData, verifyLogin } from "./client.js"; + +verifyLogin(); +const token = window.localStorage.getItem("token"); + +const infoForm = document.getElementById("infoForm"); + +async function fetchPersonalInformation() { + const userData = await postData("https://134.209.36.64:3000/getInfo", {}, token); + + console.log(userData); + + document.getElementById("usernameField").textContent = userData.Username; + document.getElementById("firstNameField").value = userData.FirstName; + document.getElementById("lastNameField").value = userData.LastName; + document.getElementById("dobField").value = userData.DOB.split("T")[0]; + + return userData +} + +const userData = fetchPersonalInformation(); + +async function updatePersonalInformation(e) { + console.log(verifyLogin()); + e.preventDefault(); + const userData = { + firstName: document.getElementById("firstNameField").value, + lastName: document.getElementById("lastNameField").value, + dob: document.getElementById("dobField").value + } + console.log(userData.dob); + const resultObject = await postData("https://134.209.36.64:3000/setInfo", userData, token); + alert(resultObject.message); +} + +infoForm.onsubmit = updatePersonalInformation; diff --git a/public/register.html b/public/register.html index 2a462ac..bb97e00 100644 --- a/public/register.html +++ b/public/register.html @@ -11,10 +11,8 @@ diff --git a/public/search.html b/public/search.html index 48154c9..1e6fd43 100644 --- a/public/search.html +++ b/public/search.html @@ -1,15 +1,15 @@ - Search Users + Search Players
-

Search Users

-
- @@ -19,25 +19,18 @@ +

Search players by name:

- - - - - - - - - - - +
IDUsernameNameDOBRoleLast LoginDate Created
+ +
Return Home diff --git a/public/search.js b/public/search.js index 4dee84e..8a3c586 100644 --- a/public/search.js +++ b/public/search.js @@ -4,8 +4,10 @@ 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"); updateTableVisibility(); @@ -13,23 +15,37 @@ if (searchForm)searchForm.onsubmit = async e => { e.preventDefault(); if (!verifyLogin()) return; - let resultObject = await postData("https://134.209.36.64:3000/getUsers", { - query: document.getElementById("query").value, - category: document.getElementById("category").value + let resultObject = await postData("https://134.209.36.64:3000/getPlayers", { + player: document.getElementById("query").value }, token); - tableBody.innerHTML = ""; - resultObject.matches.forEach(user => { - const row = document.createElement("tr"); + if (resultObject.matches.length === 0) { + nomatch.style.display = ""; + table.style.display = "none"; + return; + } + nomatch.style.display = "none" + table.style.display = ""; + tableHeader.innerHTML = ""; + const headerRow = document.createElement("tr") + Object.keys(resultObject.matches[0]).forEach(attribute => { + headerRow.innerHTML += `${attribute}`; + }) + tableHeader.appendChild(headerRow); + tableBody.innerHTML = ""; + resultObject.matches.forEach(player => { + const row = document.createElement("tr"); + + //for (attribute in player) { + // row.innerHTML += `${player}l`; + //} row.innerHTML = ` - ${user.Id} - ${formatText(user.Username)} - ${formatText(user.FirstName)} ${formatText(user.LastName)} - ${formatDate(user.DOB)} - ${formatText(user.Role)} - ${formatDateTime(user.LastLogin)} - ${formatDate(user.CreatedAt)} + ${player.player_id} + ${player.player_name} + ${formatSalary(player.salary)} + ${player.team_name} + ${player.position} `; tableBody.appendChild(row); }); @@ -59,6 +75,17 @@ function formatText(text) { return "Unknown format"; } } +function formatSalary(text) { + if (text == null) return "—"; + + try { + var millions = (parseInt(text, 10) / 1000000).toFixed(2); + return `$${millions} million`; + } catch (e) { + return "Unknown format" + } + +} function formatDate(date) { if (date == null) return "—"; diff --git a/server.js b/server.js index ef945d4..41b0ef2 100644 --- a/server.js +++ b/server.js @@ -98,20 +98,14 @@ app.post("/login", async (req, res) => { } }); -app.post("/getUsers", authenticate, async (req, res) => { - const { query, category } = req.body; - - const allowed = ["Id", "Username", "FirstName", "LastName", "DOB", "Role", "LastLogin", "CreatedAt"]; - - if (!allowed.includes(category)) { - res.status(500).json({ message: `Illegal category "${category}"`}); - } +app.post("/getPlayers", authenticate, async (req, res) => { + const { player } = req.body; const result = await pool.request() - .input("query", sql.VarChar, query) - .query(`SELECT * FROM Users WHERE ${category} LIKE '%' + @query + '%'`); + .input("query", sql.VarChar, player) + .query(`SELECT * FROM [Player, IMPORTANT] WHERE player_name LIKE '%' + @query + '%'`); - res.status(200).json({ query: query, matches: result.recordset }); + res.status(200).json({ query: player, matches: result.recordset }); }); app.post("/getInfo", authenticate, async (req, res) => {