Fixes to file structure

This commit is contained in:
Lucas Patenaude
2024-05-03 00:36:01 -06:00
parent 48e3f7623d
commit 28489e8db7
82 changed files with 5213 additions and 5180 deletions

View File

@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html lang="en" class="h-100">
<head>
<!-- Add your head content here -->
{{> head}}
</head>
<body>
<!-- Render the scoreboard header on every page -->
{{> navigation-bar/scoreboard-header/scoreboard-header}}
<!-- Add your navigation -->
{{> navigation-bar/nav}}
<!-- Render the main content of each page -->
{{{body}}}
<!-- Add your footer -->
{{> footer}}
</body>
</html>

View File

@@ -0,0 +1,147 @@
<div id="club-page-body" class="page-container">
<!-- Container on Top containing Club Information -->
<div id="club-header-container" class="information-container">
<img id="generated-page-header-logo" src="{{club.crest}}" alt="{{club.name}} Logo">
<h1 id="generated-page-header-title">{{club.name}}</h1>
<img id="generated-page-header-flag" src="{{club.area.club_flag}}" alt="{{club.name}} Flag">
{{#if user}}
{{#if isFav}}
<img id="club-favorite-button" src="/img/club-page/favorited.png" alt="Favorite Button">
{{else}}
<img id="club-favorite-button" src="/img/club-page/unfavorited.png" alt="Favorite Button">
{{/if}}
{{else}}
<img id="club-favorite-button" src="/img/club-page/cant-favorite.png" title="Please Sign In to Save a Favorite Club!">
{{/if}}
<!-- Hidden input fields -->
<input type="hidden" id="userID" value="{{user.userid}}">
<input type="hidden" id="teamID" value="{{club.club_id}}">
<input type="hidden" id="teamName" value="{{club.name}}">
<input type="hidden" id="teamLogo" value="{{club.crest}}">
</div>
<div id="club-page-contents-container" class="page-content-container">
<!-- Container on Left Side containing Club Information -->
<div id="club-information-container" class="page-content-container">
<!-- Container for Club History Information -->
<div id="club-history-container" class="content-container">
<div id="club-information-table-header">
<h2>Information</h2>
</div>
<div id="club-information-table-container" class="card-container">
<table id="club-information-table">
<tbody>
<!-- Club Address Container -->
<tr>
<td>
<span style="font-weight: bold;">Club Address:</span><br>
{{club.address}}
</td>
</tr>
<!-- Club Foundation Container -->
<tr>
<td>
<span style="font-weight: bold;">Founded</span><br>
{{club.founded}}
</td>
</tr>
<!-- Manager Information Table -->
<tr>
<td>
<span style="font-weight: bold;">Manager</span><br>
<span>Name: {{club.coach.name}}</span><br>
<span>Nationality: {{club.coach.nationality}}</span><br>
<span>DOB: {{club.coach.dateOfBirth}}</span><br>
<span>Contract Start: {{club.coach.contract.start}}</span><br>
<span>Contract End: {{club.coach.contract.until}}</span><br>
</td>
</tr>
</tbody>
</table>
</div> <!-- End of Club History Table Container -->
</div> <!-- End of Club History Container -->
<!-- Container to Display Club's Current Competitions -->
<div id="club-competitions-container" class="content-container">
<div id="club-competitions-table-header">
<h2>Competitions</h2>
</div>
<div id="club-competitions-table-container" class="card-container">
<table id="club-competitions-table">
<thead>
<tr>
<th>Name</th>
<th></th>
</tr>
</thead>
<tbody>
{{#each club.runningCompetitions}}
<tr>
<td><img id="competition-logo" src="{{emblem}}"></td>
<td>{{name}}</td>
</tr>
{{/each}}
</tbody>
</table>
</div> <!-- End of Club Competitions Table Container -->
</div> <!-- End of Club Competitions Container -->
</div> <!-- End of Club Information Container (Left 20%) -->
<!-- Container on Right Side containing Club Stats -->
<div id="club-stats-and-players-container" class="page-section-container">
<!-- Club Player Container -->
<div id="club-players-container" class="content-container">
<div id="club-players-table-header" class="content-container">
<h2>Players</h2>
</div>
<div id="club-players-table-container" class="card-container">
<table id="club-players-table" class="alternating-table">
<thead>
<tr>
<th>Name</th>
<th>Position</th>
<th>DOB</th>
<th>Nationality</th>
</tr>
</thead>
<tbody>
{{#each club.squad}}
<tr>
<td>{{name}}</td>
<td>{{position}}</td>
<td>{{dateOfBirth}}</td>
<td>{{nationality}}</td>
</tr>
{{/each}}
</tbody>
</table>
</div> <!-- End of Club Players Table Container -->
</div> <!-- End of Club Players Container -->
</div> <!-- End of Club Stats Container -->
</div>
</div>

View File

@@ -0,0 +1,36 @@
<div class="container mt-5" id="page-container">
<div id="league-cards-container" class="page-section-container">
<div class="row g-3" id="card-row">
<!-- 🇬🇧 Premier League -->
<a href="#" onclick="redirectToLeaguePage('2021')" class="card-link" id="league-card">
{{> homepage/league-card leagueName="Premier League" logo="./img/homepage/premier-league/icon.png" title="./img/homepage/premier-league/title.png" }}
</a>
<!-- 🇪🇸 La Liga -->
<a href="#" onclick="redirectToLeaguePage('2014')" class="card-link" id="league-card">
{{> homepage/league-card leagueName="La Liga" logo="./img/homepage/la-liga/icon.png" title="./img/homepage/la-liga/title.png" }}
</a>
<!-- 🇩🇪 Bundesliga -->
<a href="#" onclick="redirectToLeaguePage('2002')" class="card-link" id="league-card">
{{> homepage/league-card leagueName="Bundesliga" logo="./img/homepage/bundesliga/icon.png" title="./img/homepage/bundesliga/title.png" }}
</a>
<!-- 🇮🇹 Serie A -->
<a href="#" onclick="redirectToLeaguePage('2019')" class="card-link" id="league-card">
{{> homepage/league-card leagueName="Serie A" logo="./img/homepage/serie-a/icon.png" title="./img/homepage/serie-a/title.png"}}
</a>
<!-- 🇫🇷 Ligue 1 -->
<a href="#" onclick="redirectToLeaguePage('2015')" class="card-link" id="league-card">
{{> homepage/league-card leagueName="Ligue 1" logo="./img/homepage/ligue-1/icon.png" title="./img/homepage/ligue-1/title.png" }}
</a>
<!-- 🇧🇷 Brasileirao -->
<a href="#" onclick="redirectToLeaguePage('2013')" class="card-link" id="league-card">
{{> homepage/league-card leagueName="Brasileirao" logo="./img/homepage/brasileirao/icon.png" title="./img/homepage/brasileirao/title.png" }}
</a>
</div>
</div>
</div>

View File

@@ -0,0 +1,90 @@
<div id="league-page-body" class="page-container">
<!-- Container for all league information (logo, name, country, etc. ) <- top 100px -->
<div id="league-header-container" class="information-container">
<img id="generated-page-header-logo" src="{{league.competition.league_emblem}}" alt="{{league.competition.league_name}} Emblem">
<h1 id="generated-page-header-title">{{league.competition.league_name}}</h2>
<img id="generated-page-header-flag" src="{{league.area.league_flag}}" alt="{{league.competition.league_name}} Flag">
</div>
<!-- Container to display all stats for league <- bottom rest of the container -->
<div id="table-and-top-scorers-containers" class="page-content-container">
<!-- Container to display league table <- split 50% -->
<div id="league-table-container" class="content-container">
<!-- Put header above table container -->
<div id="league-table-header-container" class="header-container">
<h2>Table</h2>
</div>
<!-- Container containing all league table stats -->
<div id="league-table-stats-container" class="card-container">
<table id="league-standings-table" class="alternating-table">
<thead>
<tr>
<th>#</th>
<th></th>
<th>Club</th>
<th>GP</th>
<th>W</th>
<th>L</th>
<th>D</th>
<th>GD</th>
<th>Pts</th>
</tr>
</thead>
<tbody>
{{#each league.standings}}
<tr>
<td>{{table.league_position}}</td>
<td id="league-table-club-logo-column"><img id="league-table-club-logo" clubID="{{table.team_id}}" src="{{table.team_crest}}" alt="{{table.team_name}} Crest"></td>
<td><span id="league-table-club-name-column" clubID="{{table.team_id}}">{{table.team_name}}</span></td>
<td>{{games_played}}</td>
<td>{{wins}}</td>
<td>{{losses}}</td>
<td>{{draws}}</td>
<td id="league-table-goal-difference-column">{{goal_difference}}</td>
<td id="league-table-points-column">{{points}}</td>
</tr>
{{/each}}
</tbody>
</table>
</div>
</div>
<!-- Container to display top scorers for league <- Split 50% -->
<div id="league-top-scorers-container" class="content-container">
<div id="league-top-scorers-header-container" class="header-container">
<h2>Top Scorers</h2>
</div>
<div id="league-top-scorers-stats-container" class="card-container">
<table id="league-top-scorers-table">
<thead>
<tr>
<th>Goals</th>
<th></th>
<th>Name</th>
<th>Club</th>
<th>GP</th>
</tr>
</thead>
<tbody>
{{#each topScorers.scorers}}
<tr id="top-scorers-row">
<td id="league-top-scorers-goals-column">{{goals}}</td>
<td><img id="league-top-scorers-logo" clubID="{{team.team_id}}" src="{{team.team_crest}}" alt="{{table.team_name}} Crest"></img></td>
<td id="league-top-scorers-player-name-column">{{player.player_name}}</td>
<td id="league-top-scorers-club-name-column" clubID="{{team.team_id}}">{{team.team_name}}</td>
<td>{{games_played}}</td>
</tr>
{{/each}}
</tbody>
</table>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,20 @@
<div class="player-card" id="player-card">
<div class="player-card-body">
<table class="table">
<thead>
<tr>
<th>Player Name</th>
<th>Nationality</th>
<th>Position</th>
</tr>
</thead>
<tbody>
<tr>
<td>persons.name</td>
<td>persons.nationality</td>
<td>persons.position</td>
</tr>
</tbody>
</table>
</div>
</div>

View File

@@ -0,0 +1,5 @@
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="top" title="player-card tooltip">
Contract Start: {{contractStart}}
Contract End: {{contractEnd}}
{{/each}}
</button>

View File

@@ -0,0 +1,25 @@
<footer class="text-center text-muted w-100 mt-auto fixed-bottom">
<p>
&copy; 2024 - CSCI 3308 Group 6
</p>
<!-- Navigation Bar Scripts -->
<script src="/js/navigation-bar/navigation-bar-follow.js"></script>
<script
src="/js/navigation-bar/user/login-and-register-page-linking.js"
></script>
<script
src="/js/navigation-bar/user/delete-account-favorite-club.js"
></script>
<!-- Homepage Scripts -->
<script src="/routes/league-pages/redirect-to-league-url.js"></script>
<!-- League Pages Scripts -->
<script src="/js/league-page/change-goal-difference-color.js"></script>
<script src="/routes/club-pages/redirect-to-club-url.js"></script>
<!-- Club Pages Scripts -->
<script src="/js/club-page/favorite-button.js"></script>
</footer>

View File

@@ -0,0 +1,40 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
<meta name="description" content="" />
<!-- Set the Content-Security-Policy header to allow inline scripts -->
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline' https://code.jquery.com https://cdn.jsdelivr.net https://stackpath.bootstrapcdn.com;">
<!--------------- CSS Stylesheets ---------------->
<!-- Linking forms.css -->
<link rel="stylesheet" type="text/css" href="/css/login-and-registration/login_and_registration.css">
<!-- Navigation Bar Stylesheets -->
<link rel="stylesheet" type="text/css" href="/css/navigation-bar/navigation-bar.css">
<link rel="stylesheet" type="text/css" href="/css/login-and-registration/login.css">
<link rel="stylesheet" type="text/css" href="/css/login-and-registration/registration.css">
<link rel="stylesheet" type="text/css" href="/css/login-and-registration/account.css">
<!-- Scoreboard Header Stylesheets -->
<link rel="stylesheet" type="text/css" href="/css/navigation-bar/scoreboard-header/scoreboard.css">
<link rel="stylesheet" type="text/css" href="/css/navigation-bar/scoreboard-header/game-card.css">
<!-- Home Page Stylesheets -->
<link rel="stylesheet" type="text/css" href="/css/homepage/homepage.css">
<!-- All Generated Pages CSS -->
<link rel="stylesheet" type="text/css" href="/css/generated-pages/generated-pages-styling.css">
<!-- League Page Stylesheets -->
<link rel="stylesheet" type="text/css" href="/css/generated-pages/league-pages/league-page.css">
<link rel="stylesheet" type="text/css" href="/css/generated-pages/league-pages/league-table.css">
<link rel="stylesheet" type="text/css" href="/css/generated-pages/league-pages/league-top-scorers.css">
<!-- Club Page Stylesheets -->
<link rel="stylesheet" type="text/css" href="/css/generated-pages/club-pages/club-page-layouts.css">
<link rel="stylesheet" type="text/css" href="/css/generated-pages/club-pages/club-page-styling.css">
<title>Group 6 Final Project</title>
<!-- Include Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">

View File

@@ -0,0 +1,9 @@
<div class="banner">
<div class="content" id="card-contents">
<img id="logo" src={{logo}}>
<div class="title-wrapper">
<img id="title-logo" src={{title}}>
{{flag}}
</div>
</div>
</div>

View File

@@ -0,0 +1,5 @@
{{#if message}}
<div class="alert alert-{{#if error}}danger{{else}}success{{/if}}" role="alert">
{{ message }}
</div>
{{/if}}

View File

@@ -0,0 +1,71 @@
<!-- Include jQuery library -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<!-- HTML structure -->
<nav class="navbar navbar-expand-lg navbar-dark" id="navigation-bar-container">
<div class="container-fluid d-flex justify-content align-items-center">
<div>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggler" aria-controls="navbarToggler" aria-expanded="false" aria-label="Toggle navigation" style="margin-right: 20px;">
<span class="navbar-toggler-icon"></span>
</button>
<a class="logo" id="logo" href="/home">ScoreSpot</a>
<div id="line"></div>
</div>
<div class="collapse navbar-collapse" id="navbarToggler">
<ul class="navbar-nav mr-auto mt-2 mt-lg-0" id="navbar-list">
<li class="nav-item">
<a class="nav-link" href="/league/2021">Premier League</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/league/2002">Bundesliga</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/league/2014">La Liga</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/league/2019">Serie A</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/league/2015">Ligue 1</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/league/2013">Brasileirao</a>
</li>
</ul>
</div>
<div id="favorite-teams-container" class="logos-container">
{{#each fav_teams}}
<a href="/club/{{this.teamid}}">
<img id="teamlogo" src="{{this.teamlogo}}" alt="teamlogo">
</a>
{{/each}}
</div>
<div id="user-profile-button" class="user-icon">
<img src="/img/navigation-bar/user-menu/user-button.png" alt="Account" class="img-fluid">
</div>
</div>
</nav>
{{#if user.username}}
<div class="account-portal" id="account-screen-container">
{{> navigation-bar/user-menu/account-screen}}
</div>
{{else}}
<div class="account-portal" id="login-account-container">
{{> navigation-bar/user-menu/login}}
</div>
{{/if}}
<div class="account-portal" id="register-screen-container">
{{> navigation-bar/user-menu/register}}
</div>

View File

@@ -0,0 +1,35 @@
<div class="game-card" id="game-card">
<div class="score-card-body">
<!-- Left side (70%) -->
<div class="card-team-container">
<!-- Team 1 Name with Score -->
<div class="team">
<a href="/club/{{homeTeam.teamID}}">
<img src="{{ homeTeam.crest }}" alt="{{ homeTeam.name }} Crest">
<p id="team-name">{{ homeTeam.name }}</p> <!-- {{team1.name}} -->
<p id="team-score">{{ score.homeScore }}</p>
</a>
</div>
<!-- Team 2 Name with Score -->
<div class="team">
<a href="/club/{{awayTeam.teamID}}">
<img src="{{ awayTeam.crest }}" alt="{{ awayTeam.name }} Crest">
<p id="team-name">{{ awayTeam.name }}</p> <!-- {{team1.name}} -->
<p id="team-score">{{ score.awayScore }}</p>
</a>
</div>
</div>
<!-- Right side (30%) -->
<div class="card-game-information-container">
<!-- Time -->
<div class="game-info">
<p id="time">{{ minute }}</p>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,10 @@
<div class="scoreboard-container" id="scoreboard">
<div class="scoreboard-league-container">
<!-- Iterate over matches and insert a game card for each -->
{{#each matches}}
{{> navigation-bar/scoreboard-header/game-card}}
{{/each}}
</div>
</div>

View File

@@ -0,0 +1,32 @@
<div class="account-portal-container" id="account-pane">
<div id="account-pane-content-container">
<div id="account-header-container">
<a id="username">Hello, {{user.username}}</a>
<div class="logout-container">
<a id="logout-button" class="account-portal-button" href="/logout">Logout</a>
</div>
</div>
<div id="account-favorite-teams-container">
<a id="account-favorite-teams-header">Favorite Teams:</a>
{{#each fav_teams}}
<div class="account-favorite-teams-card">
<div id="account-favorite-teams-card-logo-container">
<a href="/club/{{this.teamid}}">
<img id="account-favorite-teams-card-logo" src="{{this.teamlogo}}" alt="teamlogo">
</a>
</div>
<a id="account-favorite-teams-card-title" href="/club/{{this.teamid}}">
{{this.teamname}}
</a>
<div id="account-delete-favorite-team-button-container">
<!-- Add a different image for hover effect -->
<img id="account-delete-favorite-team-button" class="account-delete-favorite-team-button" src="/img/navigation-bar/user-menu/account-pane/delete-club.png" alt="Delete Favorite Team">
<img id="account-delete-favorite-team-button-hover" class="account-delete-favorite-team-button" src="/img/navigation-bar/user-menu/account-pane/delete-club-hover.png" userID="{{this.userid}}" teamID="{{this.teamid}}" alt="Delete Favorite Team Hover" >
</div>
</div>
{{/each}}
</div>
</div>
</div>

View File

@@ -0,0 +1,29 @@
<!-- Linking forms.css -->
<div class="account-portal-container" id="login-pane">
<div class="form-container" id="login-form">
<h1 class="mt-5 mb-4">Login</h1>
<!-- Check if message variable is present to display message partial -->
{{#if message}}
{{> message}}
{{/if}}
<form action="/login" method="POST" class="mt-3">
<div class="mb-3">
<label for="username" class="form-label">Username:</label>
<input type="text" class="form-control" id="username" name="username" required>
</div>
<div class="mb-3">
<label for="password" class="form-label">Password:</label>
<input type="password" class="form-control" id="password" name="password" required>
</div>
<button class="account-portal-button" type="submit" id="login-submit">Submit</button>
</form>
<p class="mt-3">Don't have an account? <a id="register-button" href="/home">Register</a></p>
</div>
</div>

View File

@@ -0,0 +1,29 @@
<div class="account-portal-container" id="register-pane">
<div class="form-container">
<h1 class="mt-5 mb-4">Register</h1>
<!--- START OF FORM --->
<form action="/register" method="POST" class="mt-3"> <!-- Specify API route to DB -->
<!-- app.post('register') is found in index.js -->
<div class="mb-3" id="username-form">
<label for="username" class="form-label">Username:</label>
<input type="text" class="form-control" id="usernameInput" name="username" required>
</div>
<div class="mb-3" id="password-form">
<label for="password" class="form-label">Password:</label>
<input type="password" class="form-control" id="passwordInput" name="password" required>
</div>
<button type="submit" class="account-portal-button">Submit</button>
</form>
<!--- END OF FORM --->
<p class="mt-3">Already have an account? <a id="register-page-login-button" href="/login">Login</a></p>
</div>
</div>