diff --git a/frontend/cfb/routes.js b/frontend/cfb/routes.js index a61bc6a..486167a 100644 --- a/frontend/cfb/routes.js +++ b/frontend/cfb/routes.js @@ -513,89 +513,89 @@ function retrieveValue(dictionary, key) { return sub; } -router.route('/year/:year/teams/:type') - .get(async function(req, res, next) { - try { - const type = req.params.type ?? "differential"; - let sortKey = req.query.sort ?? `overall.epaPerPlay` - // can't do passing/rushing/havoc differentials - if (type == "differential" && (!sortKey.includes("overall") || sortKey.includes("havocRate"))) { - sortKey = `overall.epaPerPlay` - } - const asc = (type == "defensive" && sortKey != "overall.havocRate") || (type == "offensive" && sortKey == "overall.havocRate") // adjust for defensive stats where it makes sense - const baseData = await retrieveLeagueData(req.params.year, "overall") - - let content = baseData.map(t => { - let target = t[type] - return { - teamId: t.teamId, - team: t.team, - ...target - } - }) - content = content.filter(p => { - const nonNullValue = retrieveValue(p, sortKey) != null && retrieveValue(p, sortKey) != "NA" - const nonNullRank = retrieveValue(p, `${sortKey}Rank`) != null && retrieveValue(p, `${sortKey}Rank`) != "NA" - return nonNullRank && nonNullValue - }).sort((a, b) => { - const compVal = parseFloat(retrieveValue(a, sortKey)) - parseFloat(retrieveValue(b, sortKey)) - return asc ? compVal : (-1 * compVal) - }) - // return res.json(content); - return res.render("pages/cfb/leaderboard", { - teams: content, - type, - season: req.params.year, - sort: sortKey, - last_updated: await retrieveLastUpdated() - }) - } catch(err) { - return next(err) - } - }) - -router.route('/year/:year/players/:type') - .get(async function(req, res, next) { - try { - const type = req.params.type ?? "passing"; - let sortKey = req.query.sort ?? `advanced.epaPerPlay` - // // can't do passing/rushing/havoc differentials - // if (type == "differential" && (!sortKey.includes("overall") || sortKey.includes("havocRate"))) { - // sortKey = `overall.epaPerPlay` - // } - const asc = false;//(type == "defensive" && sortKey != "overall.havocRate") || (type == "offensive" && sortKey == "overall.havocRate") // adjust for defensive stats where it makes sense - let content = await retrieveLeagueData(req.params.year, type) - - content = content.filter(p => { - const nonNullValue = retrieveValue(p, sortKey) != null && retrieveValue(p, sortKey) != "NA" - const nonNullRank = retrieveValue(p, `${sortKey}Rank`) != null && retrieveValue(p, `${sortKey}Rank`) != "NA" - return nonNullRank && nonNullValue - }).sort((a, b) => { - const compVal = parseFloat(retrieveValue(a, sortKey)) - parseFloat(retrieveValue(b, sortKey)) - return asc ? compVal : (-1 * compVal) - }) - // return res.json(content); - return res.render("pages/cfb/player_leaderboard", { - players: content, - type, - season: req.params.year, - sort: sortKey, - last_updated: await retrieveLastUpdated() - }) - } catch(err) { - return next(err) - } - }) - -router.route('/players/:type') -.get(async function(req, res, next) { - return res.redirect(`/cfb/year/2024/players/${req.params.type}`); -}) - -router.route('/year/:year/players') -.get(async function(req, res, next) { - return res.redirect(`/cfb/year/${req.params.year}/players/passing`); -}) +// router.route('/year/:year/teams/:type') +// .get(async function(req, res, next) { +// try { +// const type = req.params.type ?? "differential"; +// let sortKey = req.query.sort ?? `overall.epaPerPlay` +// // can't do passing/rushing/havoc differentials +// if (type == "differential" && (!sortKey.includes("overall") || sortKey.includes("havocRate"))) { +// sortKey = `overall.epaPerPlay` +// } +// const asc = (type == "defensive" && sortKey != "overall.havocRate") || (type == "offensive" && sortKey == "overall.havocRate") // adjust for defensive stats where it makes sense +// const baseData = await retrieveLeagueData(req.params.year, "overall") + +// let content = baseData.map(t => { +// let target = t[type] +// return { +// teamId: t.teamId, +// team: t.team, +// ...target +// } +// }) +// content = content.filter(p => { +// const nonNullValue = retrieveValue(p, sortKey) != null && retrieveValue(p, sortKey) != "NA" +// const nonNullRank = retrieveValue(p, `${sortKey}Rank`) != null && retrieveValue(p, `${sortKey}Rank`) != "NA" +// return nonNullRank && nonNullValue +// }).sort((a, b) => { +// const compVal = parseFloat(retrieveValue(a, sortKey)) - parseFloat(retrieveValue(b, sortKey)) +// return asc ? compVal : (-1 * compVal) +// }) +// // return res.json(content); +// return res.render("pages/cfb/leaderboard", { +// teams: content, +// type, +// season: req.params.year, +// sort: sortKey, +// last_updated: await retrieveLastUpdated() +// }) +// } catch(err) { +// return next(err) +// } +// }) + +// router.route('/year/:year/players/:type') +// .get(async function(req, res, next) { +// try { +// const type = req.params.type ?? "passing"; +// let sortKey = req.query.sort ?? `advanced.epaPerPlay` +// // // can't do passing/rushing/havoc differentials +// // if (type == "differential" && (!sortKey.includes("overall") || sortKey.includes("havocRate"))) { +// // sortKey = `overall.epaPerPlay` +// // } +// const asc = false;//(type == "defensive" && sortKey != "overall.havocRate") || (type == "offensive" && sortKey == "overall.havocRate") // adjust for defensive stats where it makes sense +// let content = await retrieveLeagueData(req.params.year, type) + +// content = content.filter(p => { +// const nonNullValue = retrieveValue(p, sortKey) != null && retrieveValue(p, sortKey) != "NA" +// const nonNullRank = retrieveValue(p, `${sortKey}Rank`) != null && retrieveValue(p, `${sortKey}Rank`) != "NA" +// return nonNullRank && nonNullValue +// }).sort((a, b) => { +// const compVal = parseFloat(retrieveValue(a, sortKey)) - parseFloat(retrieveValue(b, sortKey)) +// return asc ? compVal : (-1 * compVal) +// }) +// // return res.json(content); +// return res.render("pages/cfb/player_leaderboard", { +// players: content, +// type, +// season: req.params.year, +// sort: sortKey, +// last_updated: await retrieveLastUpdated() +// }) +// } catch(err) { +// return next(err) +// } +// }) + +// router.route('/players/:type') +// .get(async function(req, res, next) { +// return res.redirect(`/cfb/year/2024/players/${req.params.type}`); +// }) + +// router.route('/year/:year/players') +// .get(async function(req, res, next) { +// return res.redirect(`/cfb/year/${req.params.year}/players/passing`); +// }) router.route('/glossary') .get(function(req, res, next) { diff --git a/frontend/views/partials/nav-header.ejs b/frontend/views/partials/nav-header.ejs index c24076d..967b0d4 100644 --- a/frontend/views/partials/nav-header.ejs +++ b/frontend/views/partials/nav-header.ejs @@ -16,10 +16,10 @@