Refactor all file using prettier

This commit is contained in:
2024-10-27 11:37:18 +01:00
parent 1c3ec4a1bb
commit b6df2ae362
16 changed files with 1762 additions and 571 deletions

89
.gitignore vendored Normal file
View File

@@ -0,0 +1,89 @@
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# AWS User-specific
.idea/**/aws.xml
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Local History for Visual Studio Code
.history/
# End of https://mrkandreev.name/snippets/gitignore-generator/#WebStorm+all,VisualStudioCode,js,html,css

View File

@@ -5,77 +5,86 @@
<title> Arbitrage Match </title> <title> Arbitrage Match </title>
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" /> <link rel="stylesheet"
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200"/>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<!--- Ajout d'un fichier css pour les classes personalisé ---> <!--- Ajout d'un fichier css pour les classes personalisé --->
<link rel="stylesheet" href="style.css" /> <link rel="stylesheet" href="style.css"/>
<script src="js/cookie.js" defer></script> <script src="js/cookie.js" defer></script>
<link rel="icon" href="assets/appen.png"> <link rel="icon" href="assets/appen.png">
<script src="js/backend/login.js" type="module" defer></script> <script src="js/backend/login.js" type="module" defer></script>
<script src="js/backend/arbitrage.js" type="module" defer></script> <script src="js/backend/arbitrage.js" type="module" defer></script>
</head> </head>
<body> <body>
<header> <header>
<nav class="navbar navbar-dark bg-dark fixed-top"> <nav class="navbar navbar-dark bg-dark fixed-top">
<div class="container-fluid"> <div class="container-fluid">
<a class="navbar-brand" href="index.html"> <a class="navbar-brand" href="index.html">
<img src="assets/appen.png" alt="Logo" width="30" height="30" class="d-inline-block align-text-top logo-appen"> <img src="assets/appen.png" alt="Logo" width="30" height="30"
Interpromos 2023 class="d-inline-block align-text-top logo-appen">
</a> Interpromos 2023
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Ouvrir la navigation"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
<span class="navbar-toggler-icon"></span> data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent"
</button> aria-expanded="false" aria-label="Ouvrir la navigation">
<span class="navbar-toggler-icon"></span>
<div class="collapse text-bg-dark" id="navbarToggleExternalContent" data-bs-theme="dark"> </button>
<ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
<li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" aria-current="page" href="index.html">
<!--
<span class="material-symbols-outlined pe-3">wifi_tethering</span>
--->
<div class="pe-3 icons-display"></div>
Matchs en direct
</a>
</li>
<li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" href="teams.html">
<!---<span class="material-symbols-outlined pe-3">trophy</span>--->
<div class="pe-3 icons-display"></div>
Classement et équipes
</a>
</li>
<li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" href="sports.html">
<!---<span class="material-symbols-outlined pe-3">fitness_center</span>--->
<div class="pe-3 icons-display"></div>
Liste des sports
</a>
</li>
<li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" role="button" id="disconect">
<!---<span class="material-symbols-outlined">login</span>--->
<div class="pe-3 icons-display"></div>
Déconnexion
</a>
</li>
</ul>
</div>
<div class="collapse text-bg-dark" id="navbarToggleExternalContent" data-bs-theme="dark">
<ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
<li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" aria-current="page" href="index.html">
<!--
<span class="material-symbols-outlined pe-3">wifi_tethering</span>
--->
<div class="pe-3 icons-display"></div>
Matchs en direct
</a>
</li>
<li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" href="teams.html">
<!---<span class="material-symbols-outlined pe-3">trophy</span>--->
<div class="pe-3 icons-display"></div>
Classement et équipes
</a>
</li>
<li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" href="sports.html">
<!---<span class="material-symbols-outlined pe-3">fitness_center</span>--->
<div class="pe-3 icons-display"></div>
Liste des sports
</a>
</li>
<li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" role="button" id="disconect">
<!---<span class="material-symbols-outlined">login</span>--->
<div class="pe-3 icons-display"></div>
Déconnexion
</a>
</li>
</ul>
</div> </div>
</nav>
</header>
<div class="container">
<div class="col-8 offset-2 mt-6" id="arbitrage">
<div class="text-center"><a href="" class="btn btn-primary" id="btnPoint1">But pour promo X</a></div>
<h5 class="text-center" id="textPoint1"></h5>
<br>
<h5 class="text-center" id="textPoint2"></h5>
<div class="text-center"><a href="" class="btn btn-primary" id="btnPoint2">But pour promo Y</a></div>
<br>
<form id="stopMatch"><div class="text-center"><button type="submit" class="btn btn-danger" id="btnStop">Arrêter le match</button></div></form>
</div> </div>
</nav>
</header>
<div class="container">
<div class="col-8 offset-2 mt-6" id="arbitrage">
<div class="text-center"><a href="" class="btn btn-primary" id="btnPoint1">But pour promo X</a></div>
<h5 class="text-center" id="textPoint1"></h5>
<br>
<h5 class="text-center" id="textPoint2"></h5>
<div class="text-center"><a href="" class="btn btn-primary" id="btnPoint2">But pour promo Y</a></div>
<br>
<form id="stopMatch">
<div class="text-center">
<button type="submit" class="btn btn-danger" id="btnStop">Arrêter le match</button>
</div>
</form>
</div> </div>
</div>
</body> </body>
</html> </html>

View File

@@ -1,105 +1,120 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr" data-bs-theme="dark"> <html lang="fr" data-bs-theme="dark">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title> Arbitrage </title> <title> Arbitrage </title>
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" /> <link rel="stylesheet"
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200"/>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<!--- Ajout d'un fichier css pour les classes personalisé ---> <!--- Ajout d'un fichier css pour les classes personalisé --->
<link rel="stylesheet" href="style.css" /> <link rel="stylesheet" href="style.css"/>
<script src="js/cookie.js" defer></script> <script src="js/cookie.js" defer></script>
<link rel="icon" href="assets/appen.png"> <link rel="icon" href="assets/appen.png">
<script src="js/backend/login.js" type="module" defer></script> <script src="js/backend/login.js" type="module" defer></script>
<script src="js/backend/match.js" type="module" defer></script> <script src="js/backend/match.js" type="module" defer></script>
</head> </head>
<body> <body>
<header> <header>
<nav class="navbar navbar-dark bg-dark fixed-top"> <nav class="navbar navbar-dark bg-dark fixed-top">
<div class="container-fluid"> <div class="container-fluid">
<a class="navbar-brand" href="index.html"> <a class="navbar-brand" href="index.html">
<img src="assets/appen.png" alt="Logo" width="30" height="30" class="d-inline-block align-text-top logo-appen"> <img src="assets/appen.png" alt="Logo" width="30" height="30"
Interpromos 2023 class="d-inline-block align-text-top logo-appen">
</a> Interpromos 2023
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Ouvrir la navigation"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
<span class="navbar-toggler-icon"></span> data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent"
</button> aria-expanded="false" aria-label="Ouvrir la navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse text-bg-dark" id="navbarToggleExternalContent" data-bs-theme="dark"> <div class="collapse text-bg-dark" id="navbarToggleExternalContent" data-bs-theme="dark">
<ul class="navbar-nav justify-content-end flex-grow-1 pe-3"> <ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" aria-current="page" href="index.html"> <a class="nav-link d-inline-flex align-items-center" aria-current="page" href="index.html">
<!-- <!--
<span class="material-symbols-outlined pe-3">wifi_tethering</span> <span class="material-symbols-outlined pe-3">wifi_tethering</span>
---> --->
<div class="pe-3 icons-display"></div> <div class="pe-3 icons-display"></div>
Matchs en direct Matchs en direct
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" href="teams.html"> <a class="nav-link d-inline-flex align-items-center" href="teams.html">
<!---<span class="material-symbols-outlined pe-3">trophy</span>---> <!---<span class="material-symbols-outlined pe-3">trophy</span>--->
<div class="pe-3 icons-display"></div> <div class="pe-3 icons-display"></div>
Classement et équipes Classement et équipes
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" href="sports.html"> <a class="nav-link d-inline-flex align-items-center" href="sports.html">
<!---<span class="material-symbols-outlined pe-3">fitness_center</span>---> <!---<span class="material-symbols-outlined pe-3">fitness_center</span>--->
<div class="pe-3 icons-display"></div> <div class="pe-3 icons-display"></div>
Liste des sports Liste des sports
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" role="button" id="disconect"> <a class="nav-link d-inline-flex align-items-center" role="button" id="disconect">
<!---<span class="material-symbols-outlined">login</span>---> <!---<span class="material-symbols-outlined">login</span>--->
<div class="pe-3 icons-display"></div> <div class="pe-3 icons-display"></div>
Déconnexion Déconnexion
</a> </a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
</nav> </nav>
</header> </header>
<div class="container"> <div class="container">
<div class="col-8 offset-2 mt-6" id="cardContainer"> <div class="col-8 offset-2 mt-6" id="cardContainer">
<div class="text-center align-items-center"><button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#modalAddMatch">Ajouter un match</button></div> <div class="text-center align-items-center">
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#modalAddMatch">Ajouter
un match
</button>
</div>
<br> <br>
<div class="text-center align-items-center"><button type="button" class="btn btn-danger" data-bs-toggle="modal" data-bs-target="#modalRemoveMatch">Supprimer un match</button></div> <div class="text-center align-items-center">
<button type="button" class="btn btn-danger" data-bs-toggle="modal" data-bs-target="#modalRemoveMatch">
Supprimer un match
</button>
</div>
<div class="modal" tabindex="-1" id="modalAddMatch"> <div class="modal" tabindex="-1" id="modalAddMatch">
</div> </div>
<div class="modal" tabindex="-2" id="modalRemoveMatch" aria-hidden="true"> <div class="modal" tabindex="-2" id="modalRemoveMatch" aria-hidden="true">
<div class="modal-dialog"> <div class="modal-dialog">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title">Supprimer un match</h5> <h5 class="modal-title">Supprimer un match</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Fermer"></button> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Fermer"></button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<form id="delMatchForm"> <form id="delMatchForm">
<div class="mb-3" id="matchdelJS"> <div class="mb-3" id="matchdelJS">
</div> </div>
<button type="submit" class="btn btn-danger">Supprimer ce match (attention cette action est irréversible)</button> <button type="submit" class="btn btn-danger">Supprimer ce match (attention cette action est
</form> irréversible)
</div> </button>
</form>
</div>
</div>
</div> </div>
</div>
</div> </div>
</div>
<div class="col-8 offset-2 mt-6" id="cardContainer2"></div>
</div> </div>
<div class="col-8 offset-2 mt-6" id="cardContainer2"></div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL"
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script> crossorigin="anonymous"></script>
</body> </body>
</html> </html>

View File

@@ -1,76 +1,84 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr" data-bs-theme="dark"> <html lang="fr" data-bs-theme="dark">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title> Matchs en direct </title> <title> Matchs en direct </title>
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" /> <link rel="stylesheet"
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200"/>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<!--- Ajout d'un fichier css pour les classes personalisé ---> <!--- Ajout d'un fichier css pour les classes personalisé --->
<link rel="stylesheet" href="style.css" /> <link rel="stylesheet" href="style.css"/>
<script src="js/alerts.js"></script> <script src="js/alerts.js"></script>
<script src="js/cookie.js" defer></script> <script src="js/cookie.js" defer></script>
<link rel="icon" href="assets/appen.png"> <link rel="icon" href="assets/appen.png">
<script src="js/backend/match.js" type="module" defer></script> <script src="js/backend/match.js" type="module" defer></script>
</head> </head>
<body> <body>
<header> <header>
<nav class="navbar navbar-dark bg-dark fixed-top"> <nav class="navbar navbar-dark bg-dark fixed-top">
<div class="container-fluid"> <div class="container-fluid">
<a class="navbar-brand" href="index.html"> <a class="navbar-brand" href="index.html">
<img src="assets/appen.png" alt="Logo" width="30" height="30" class="d-inline-block align-text-top logo-appen"> <img src="assets/appen.png" alt="Logo" width="30" height="30"
Interpromos 2023 class="d-inline-block align-text-top logo-appen">
</a> Interpromos 2023
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Ouvrir la navigation"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
<span class="navbar-toggler-icon"></span> data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent"
</button> aria-expanded="false" aria-label="Ouvrir la navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse text-bg-dark" id="navbarToggleExternalContent" data-bs-theme="dark"> <div class="collapse text-bg-dark" id="navbarToggleExternalContent" data-bs-theme="dark">
<ul class="navbar-nav justify-content-end flex-grow-1 pe-3"> <ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active d-inline-flex align-items-center" aria-current="page" href="index.html"> <a class="nav-link active d-inline-flex align-items-center" aria-current="page"
<div class="pe-3 icons-display"></div> href="index.html">
Matchs en direct <div class="pe-3 icons-display"></div>
</a> Matchs en direct
</li> </a>
<li class="nav-item"> </li>
<a class="nav-link d-inline-flex align-items-center" href="teams.html"> <li class="nav-item">
<div class="pe-3 icons-display"></div> <a class="nav-link d-inline-flex align-items-center" href="teams.html">
Classement et équipes <div class="pe-3 icons-display"></div>
</a> Classement et équipes
</li> </a>
<li class="nav-item"> </li>
<a class="nav-link d-inline-flex align-items-center" href="sports.html"> <li class="nav-item">
<div class="pe-3 icons-display"></div> <a class="nav-link d-inline-flex align-items-center" href="sports.html">
Liste des sports <div class="pe-3 icons-display"></div>
</a> Liste des sports
</li> </a>
<li class="nav-item"> </li>
<a class="nav-link d-inline-flex align-items-center" href="login.html"> <li class="nav-item">
<div class="pe-3 icons-display"></div> <a class="nav-link d-inline-flex align-items-center" href="login.html">
Connexion <div class="pe-3 icons-display"></div>
</a> Connexion
</li> </a>
</ul> </li>
</div> </ul>
</div>
</div> </div>
</nav> </nav>
</header> </header>
<div id="alertsContainer" class="position-fixed container z-3"> <div id="alertsContainer" class="position-fixed container z-3">
<!-- ALERTS HTML WILL APPEAR HERE --> <!-- ALERTS HTML WILL APPEAR HERE -->
</div> </div>
<div class="container"> <div class="container">
<div class="col-8 offset-2 mt-6" id="cardContainer"> <div class="col-8 offset-2 mt-6" id="cardContainer">
</div>
<div class="col-8 offset-2 mt-6" id="cardContainer2"></div>
</div> </div>
<div class="col-8 offset-2 mt-6" id="cardContainer2"></div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"
</body> integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL"
crossorigin="anonymous"></script>
</body>
</html> </html>

View File

@@ -1,5 +1,5 @@
function getSportIconHTML(sportName){ function getSportIconHTML(sportName) {
switch(sportName.toLowerCase()){ switch (sportName.toLowerCase()) {
case "football": case "football":
return `<span class="material-symbols-outlined"> return `<span class="material-symbols-outlined">
sports_soccer sports_soccer
@@ -21,12 +21,12 @@ function getSportIconHTML(sportName){
} }
} }
function deleteAlert(alertId){ function deleteAlert(alertId) {
const alert = bootstrap.Alert.getOrCreateInstance(`body #alertsContainer #${alertId}`) const alert = bootstrap.Alert.getOrCreateInstance(`body #alertsContainer #${alertId}`)
alert.close() alert.close()
} }
function newGoalAlert(match, goalTeam){ function newGoalAlert(match, goalTeam) {
let alertsContainer = document.querySelector('body #alertsContainer'); let alertsContainer = document.querySelector('body #alertsContainer');
let alert = ` let alert = `
<div id="${match.id}${match.point1}_${match.point2}" class="alert alert-success alert-dismissible fade show" role="alert"> <div id="${match.id}${match.point1}_${match.point2}" class="alert alert-success alert-dismissible fade show" role="alert">
@@ -57,7 +57,7 @@ function newGoalAlert(match, goalTeam){
setTimeout(deleteAlert, 5000, `${match.id}${match.point1}_${match.point2}`) setTimeout(deleteAlert, 5000, `${match.id}${match.point1}_${match.point2}`)
} }
function matchEndAlert(match){ function matchEndAlert(match) {
let alertsContainer = document.querySelector('body #alertsContainer'); let alertsContainer = document.querySelector('body #alertsContainer');
let alert = ` let alert = `
<div id="${match.id}${match.point1}_${match.point2}" class="alert alert-warning alert-dismissible fade show" role="alert"> <div id="${match.id}${match.point1}_${match.point2}" class="alert alert-warning alert-dismissible fade show" role="alert">
@@ -88,7 +88,7 @@ function matchEndAlert(match){
setTimeout(deleteAlert, 5000, `${match.id}${match.point1}_${match.point2}`) setTimeout(deleteAlert, 5000, `${match.id}${match.point1}_${match.point2}`)
} }
function startMatchAlert(match){ function startMatchAlert(match) {
let alertsContainer = document.querySelector('body #alertsContainer'); let alertsContainer = document.querySelector('body #alertsContainer');
let alert = ` let alert = `
<div id="${match.id}${match.point1}_${match.point2}" class="alert alert-info alert-dismissible fade show" role="alert"> <div id="${match.id}${match.point1}_${match.point2}" class="alert alert-info alert-dismissible fade show" role="alert">
@@ -119,7 +119,7 @@ function startMatchAlert(match){
setTimeout(deleteAlert, 5000, `${match.id}${match.point1}_${match.point2}`) setTimeout(deleteAlert, 5000, `${match.id}${match.point1}_${match.point2}`)
} }
function newSetAlert(match){ function newSetAlert(match) {
let alertsContainer = document.querySelector('body #alertsContainer'); let alertsContainer = document.querySelector('body #alertsContainer');
let alert = ` let alert = `
<div id="${match.id}${match.set1}_${match.set2}" class="alert alert-info alert-dismissible fade show" role="alert"> <div id="${match.id}${match.set1}_${match.set2}" class="alert alert-info alert-dismissible fade show" role="alert">

View File

@@ -35,7 +35,7 @@ const buttonPoint1 = document.getElementById("btnPoint1")
const buttonPoint2 = document.getElementById("btnPoint2") const buttonPoint2 = document.getElementById("btnPoint2")
//Gestion du cas basketball //Gestion du cas basketball
if(currentStatus.expand.sport.name === "basketball"){ if (currentStatus.expand.sport.name === "basketball") {
//Suppression des boutons de points //Suppression des boutons de points
document.getElementById("arbitrage").innerHTML = ""; document.getElementById("arbitrage").innerHTML = "";
const arbitrageDiv = document.getElementById("arbitrage"); const arbitrageDiv = document.getElementById("arbitrage");
@@ -115,7 +115,7 @@ if(currentStatus.expand.sport.name === "basketball"){
const point3Team2 = document.getElementById("btnPoint2Btn3"); const point3Team2 = document.getElementById("btnPoint2Btn3");
//Gestion des points //Gestion des points
point1Team1.addEventListener('click', async function(event) { point1Team1.addEventListener('click', async function (event) {
//Annulation du comportement par défaut //Annulation du comportement par défaut
event.preventDefault(); event.preventDefault();
@@ -132,7 +132,7 @@ if(currentStatus.expand.sport.name === "basketball"){
}); });
//Même chose pour les autres boutons //Même chose pour les autres boutons
point2Team1.addEventListener('click', async function(event) { point2Team1.addEventListener('click', async function (event) {
event.preventDefault(); event.preventDefault();
const data = { const data = {
"point1": currentStatus.point1 + 2, "point1": currentStatus.point1 + 2,
@@ -143,7 +143,7 @@ if(currentStatus.expand.sport.name === "basketball"){
}); });
//Même chose pour les autres boutons //Même chose pour les autres boutons
point3Team1.addEventListener('click', async function(event) { point3Team1.addEventListener('click', async function (event) {
event.preventDefault(); event.preventDefault();
const data = { const data = {
"point1": currentStatus.point1 + 3, "point1": currentStatus.point1 + 3,
@@ -154,7 +154,7 @@ if(currentStatus.expand.sport.name === "basketball"){
}); });
//Même chose pour les autres boutons //Même chose pour les autres boutons
point1Team2.addEventListener('click', async function(event) { point1Team2.addEventListener('click', async function (event) {
event.preventDefault(); event.preventDefault();
const data = { const data = {
"point2": currentStatus.point2 + 1, "point2": currentStatus.point2 + 1,
@@ -165,7 +165,7 @@ if(currentStatus.expand.sport.name === "basketball"){
}); });
//Même chose pour les autres boutons //Même chose pour les autres boutons
point2Team2.addEventListener('click', async function(event) { point2Team2.addEventListener('click', async function (event) {
event.preventDefault(); event.preventDefault();
const data = { const data = {
"point2": currentStatus.point2 + 2, "point2": currentStatus.point2 + 2,
@@ -176,7 +176,7 @@ if(currentStatus.expand.sport.name === "basketball"){
}); });
//Même chose pour les autres boutons //Même chose pour les autres boutons
point3Team2.addEventListener('click', async function(event) { point3Team2.addEventListener('click', async function (event) {
event.preventDefault(); event.preventDefault();
const data = { const data = {
"point2": currentStatus.point2 + 3, "point2": currentStatus.point2 + 3,
@@ -185,14 +185,13 @@ if(currentStatus.expand.sport.name === "basketball"){
textPoint2.innerHTML = currentStatus.point2 + 3; textPoint2.innerHTML = currentStatus.point2 + 3;
location.reload(); location.reload();
}); });
} } else if (currentStatus.expand.sport.name === "volleyball" || currentStatus.expand.sport.name === "badminton") {
else if(currentStatus.expand.sport.name === "volleyball" || currentStatus.expand.sport.name === "badminton"){
//Mise à jour de l'affichage des boutons //Mise à jour de l'affichage des boutons
buttonPoint1.innerHTML = "1 point pour " + currentStatus.expand.team1.name; buttonPoint1.innerHTML = "1 point pour " + currentStatus.expand.team1.name;
buttonPoint2.innerHTML = "1 point pour " + currentStatus.expand.team2.name; buttonPoint2.innerHTML = "1 point pour " + currentStatus.expand.team2.name;
//Comptage des points //Comptage des points
buttonPoint1.addEventListener('click', async function(event) { buttonPoint1.addEventListener('click', async function (event) {
//Annulation du comportement par défaut //Annulation du comportement par défaut
event.preventDefault(); event.preventDefault();
@@ -209,7 +208,7 @@ else if(currentStatus.expand.sport.name === "volleyball" || currentStatus.expand
}); });
//Même chose pour l'autre bouton //Même chose pour l'autre bouton
buttonPoint2.addEventListener('click', async function(event) { buttonPoint2.addEventListener('click', async function (event) {
event.preventDefault(); event.preventDefault();
const data = { const data = {
"point2": currentStatus.point2 + 1, "point2": currentStatus.point2 + 1,
@@ -241,15 +240,13 @@ else if(currentStatus.expand.sport.name === "volleyball" || currentStatus.expand
pointTeam2.innerHTML = currentStatus.point2 + " (" + currentStatus.set2 + ")"; pointTeam2.innerHTML = currentStatus.point2 + " (" + currentStatus.set2 + ")";
const set1Team1 = document.getElementById("btnSet1"); const set1Team1 = document.getElementById("btnSet1");
const set1Team2 = document.getElementById("btnSet2"); const set1Team2 = document.getElementById("btnSet2");
set1Team1.addEventListener('click', async function(event) { set1Team1.addEventListener('click', async function (event) {
//Annulation du comportement par défaut //Annulation du comportement par défaut
event.preventDefault(); event.preventDefault();
//Mise à jour du nombre de points //Mise à jour du nombre de points
const data = { const data = {
"set1": currentStatus.set1 + 1, "set1": currentStatus.set1 + 1, "point1": 0, "point2": 0,
"point1": 0,
"point2": 0,
}; };
//Envoi de la requête //Envoi de la requête
const record = await pb.collection('match').update(idMatch, data); const record = await pb.collection('match').update(idMatch, data);
@@ -259,15 +256,13 @@ else if(currentStatus.expand.sport.name === "volleyball" || currentStatus.expand
//Rechargement de la page pour mettre à jour les données //Rechargement de la page pour mettre à jour les données
location.reload(); location.reload();
}); });
set1Team2.addEventListener('click', async function(event) { set1Team2.addEventListener('click', async function (event) {
//Annulation du comportement par défaut //Annulation du comportement par défaut
event.preventDefault(); event.preventDefault();
//Mise à jour du nombre de points //Mise à jour du nombre de points
const data = { const data = {
"set2": currentStatus.set2 + 1, "set2": currentStatus.set2 + 1, "point1": 0, "point2": 0,
"point1": 0,
"point2": 0,
}; };
//Envoi de la requête //Envoi de la requête
const record = await pb.collection('match').update(idMatch, data); const record = await pb.collection('match').update(idMatch, data);
@@ -279,13 +274,13 @@ else if(currentStatus.expand.sport.name === "volleyball" || currentStatus.expand
}); });
} }
//Gestion des autres sports //Gestion des autres sports
else{ else {
//Mise à jour de l'affichage des boutons //Mise à jour de l'affichage des boutons
buttonPoint1.innerHTML = "1 point pour " + currentStatus.expand.team1.name; buttonPoint1.innerHTML = "1 point pour " + currentStatus.expand.team1.name;
buttonPoint2.innerHTML = "1 point pour " + currentStatus.expand.team2.name; buttonPoint2.innerHTML = "1 point pour " + currentStatus.expand.team2.name;
//Comptage des points //Comptage des points
buttonPoint1.addEventListener('click', async function(event) { buttonPoint1.addEventListener('click', async function (event) {
//Annulation du comportement par défaut //Annulation du comportement par défaut
event.preventDefault(); event.preventDefault();
@@ -302,7 +297,7 @@ else{
}); });
//Même chose pour l'autre bouton //Même chose pour l'autre bouton
buttonPoint2.addEventListener('click', async function(event) { buttonPoint2.addEventListener('click', async function (event) {
event.preventDefault(); event.preventDefault();
const data = { const data = {
"point2": currentStatus.point2 + 1, "point2": currentStatus.point2 + 1,
@@ -314,7 +309,7 @@ else{
} }
//Gestion de l'arrêt du match //Gestion de l'arrêt du match
document.getElementById("btnStop").addEventListener('click', async function(event) { document.getElementById("btnStop").addEventListener('click', async function (event) {
//Annulation du comportement par défaut //Annulation du comportement par défaut
event.preventDefault(); event.preventDefault();
//Mise à jour du statut du match //Mise à jour du statut du match
@@ -323,36 +318,36 @@ document.getElementById("btnStop").addEventListener('click', async function(even
}; };
//Envoi de la requête //Envoi de la requête
const record = await pb.collection('match').update(idMatch, data); const record = await pb.collection('match').update(idMatch, data);
if(currentStatus.mode == "poules"){ if (currentStatus.mode == "poules") {
//Ajout des points victoire ou égalité //Ajout des points victoire ou égalité
if(currentStatus.point1 === currentStatus.point2){ if (currentStatus.point1 === currentStatus.point2) {
await addPoints(currentStatus.team1, 1) await addPoints(currentStatus.team1, 1)
await addPoints(currentStatus.team2, 1) await addPoints(currentStatus.team2, 1)
} else if(currentStatus.point1 > currentStatus.point2) { } else if (currentStatus.point1 > currentStatus.point2) {
await addPoints(currentStatus.team1, 3) await addPoints(currentStatus.team1, 3)
} else if(currentStatus.point1 < currentStatus.point2) { } else if (currentStatus.point1 < currentStatus.point2) {
await addPoints(currentStatus.team2, 3) await addPoints(currentStatus.team2, 3)
} }
//Calcul du classement de chaque équipe //Calcul du classement de chaque équipe
await setTeamClassement(currentStatus.sport) await setTeamClassement(currentStatus.sport)
} else if(currentStatus.mode === "tournoi") { } else if (currentStatus.mode === "tournoi") {
if(currentStatus.point1 > currentStatus.point2) { if (currentStatus.point1 > currentStatus.point2) {
await eliminateTeam(currentStatus.team2) await eliminateTeam(currentStatus.team2)
await promoteNextStade(currentStatus.team1) await promoteNextStade(currentStatus.team1)
} else if(currentStatus.point1 < currentStatus.point2) { } else if (currentStatus.point1 < currentStatus.point2) {
await eliminateTeam(currentStatus.team1) await eliminateTeam(currentStatus.team1)
await promoteNextStade(currentStatus.team2) await promoteNextStade(currentStatus.team2)
} }
} }
//Redirection vers la page d'arbitrage //Redirection vers la page d'arbitrage
window.location.href = "arbitrage.html"; window.location.href = "arbitrage.html";
}); });
async function addPoints(teamId, points){ async function addPoints(teamId, points) {
const equipe = EquipeList.find(equipe => equipe.id === teamId) const equipe = EquipeList.find(equipe => equipe.id === teamId)
if(equipe){ if (equipe) {
const data = { const data = {
"points": equipe.points + points, "points": equipe.points + points,
}; };
@@ -360,76 +355,76 @@ async function addPoints(teamId, points){
} }
} }
async function setTeamClassement(sportId){ async function setTeamClassement(sportId) {
let sportTeams = [] let sportTeams = []
const equipesList = await pb.collection('equipes').getFullList({expand: 'sport',}) const equipesList = await pb.collection('equipes').getFullList({expand: 'sport',})
equipesList.forEach(equipe => { equipesList.forEach(equipe => {
if(equipe.expand.sport.id === sportId){ if (equipe.expand.sport.id === sportId) {
sportTeams.push(equipe)//On sélectionne toutes les équipes du sport indiqué en paramètres sportTeams.push(equipe)//On sélectionne toutes les équipes du sport indiqué en paramètres
} }
}) })
sportTeams.sort((teamA, teamB) => { sportTeams.sort((teamA, teamB) => {
let diff = parseInt(teamB.points, 10) - parseInt(teamA.points, 10) let diff = parseInt(teamB.points, 10) - parseInt(teamA.points, 10)
if(diff !== 0){ if (diff !== 0) {
return diff; return diff;
} else { } else {
return goalsDiff(teamA, teamB); return goalsDiff(teamA, teamB);
} }
})//On range les équipes par ordre de points décroissant })//On range les équipes par ordre de points décroissant
for(let i = 1; i <= sportTeams.length; i++){ for (let i = 1; i <= sportTeams.length; i++) {
const data = { const data = {
"classement": i, "classement": i,
}; };
const record = await pb.collection("equipes").update(sportTeams[i-1].id, data); const record = await pb.collection("equipes").update(sportTeams[i - 1].id, data);
} }
} }
async function eliminateTeam(teamId){ async function eliminateTeam(teamId) {
const data = { const data = {
"eliminated": true, "eliminated": true,
}; };
const record = await pb.collection("equipes").update(teamId, data); const record = await pb.collection("equipes").update(teamId, data);
} }
async function promoteNextStade(teamId){ async function promoteNextStade(teamId) {
let equipe = EquipeList.find(equipe => equipe.id === teamId) let equipe = EquipeList.find(equipe => equipe.id === teamId)
if(equipe){ if (equipe) {
if(equipe.stade !== '1'){ if (equipe.stade !== '1') {
const data = { const data = {
"stade": (parseInt(equipe.stade, 10)/2).toString(), "stade": (parseInt(equipe.stade, 10) / 2).toString(),
}; };
const record = await pb.collection("equipes").update(equipe.id, data); const record = await pb.collection("equipes").update(equipe.id, data);
} }
} }
} }
function goalsDiff(teamA, teamB){ function goalsDiff(teamA, teamB) {
let totalA = 0 let totalA = 0
let totalB = 0 let totalB = 0
MatchList.forEach(match => { MatchList.forEach(match => {
if(match.team1 === teamA.id){ if (match.team1 === teamA.id) {
if(match.point1 > match.point2){ if (match.point1 > match.point2) {
totalA += match.point1 - match.point2 totalA += match.point1 - match.point2
} else { } else {
totalA += match.point2 - match.point1 totalA += match.point2 - match.point1
} }
} }
if(match.team2 === teamA.id){ if (match.team2 === teamA.id) {
if(match.point1 < match.point2){ if (match.point1 < match.point2) {
totalA += match.point2 - match.point1 totalA += match.point2 - match.point1
} else { } else {
totalA += match.point1 - match.point2 totalA += match.point1 - match.point2
} }
} }
if(match.team1 === teamB.id){ if (match.team1 === teamB.id) {
if(match.point1 > match.point2){ if (match.point1 > match.point2) {
totalB += match.point1 - match.point2 totalB += match.point1 - match.point2
} else { } else {
totalB += match.point2 - match.point1 totalB += match.point2 - match.point1
} }
} }
if(match.team2 === teamB.id){ if (match.team2 === teamB.id) {
if(match.point1 < match.point2){ if (match.point1 < match.point2) {
totalB += match.point2 - match.point1 totalB += match.point2 - match.point1
} else { } else {
totalB += match.point1 - match.point2 totalB += match.point1 - match.point2

View File

@@ -4,10 +4,10 @@ import PocketBase from '../pocketbase.es.mjs'
const pb = new PocketBase("https://pocketbase.appen.fr"); const pb = new PocketBase("https://pocketbase.appen.fr");
//Connexion //Connexion
if(window.location.href.includes("login.html")){ if (window.location.href.includes("login.html")) {
const loginButton = document.querySelector('button[type="submit"]'); const loginButton = document.querySelector('button[type="submit"]');
loginButton.addEventListener('click', async function(event) { loginButton.addEventListener('click', async function (event) {
//Annulation du comportement par défaut //Annulation du comportement par défaut
event.preventDefault(); event.preventDefault();
@@ -34,15 +34,15 @@ if(window.location.href.includes("login.html")){
} }
//Redirection vers la page d'arbitrage si l'utilisateur est déjà connecté //Redirection vers la page d'arbitrage si l'utilisateur est déjà connecté
if(window.location.href.includes("login.html")){ if (window.location.href.includes("login.html")) {
if(pb.authStore.isValid === true){ if (pb.authStore.isValid === true) {
window.location.href = "arbitrage.html"; window.location.href = "arbitrage.html";
} }
} }
//Redirection vers la page de login si l'utilisateur n'est pas connecté //Redirection vers la page de login si l'utilisateur n'est pas connecté
if(window.location.href.includes("arbitrage.html") || window.location.href.includes("arbimatch.html")){ if (window.location.href.includes("arbitrage.html") || window.location.href.includes("arbimatch.html")) {
if(pb.authStore.isValid === false){ if (pb.authStore.isValid === false) {
window.location.href = "login.html"; window.location.href = "login.html";
} }
} }
@@ -51,7 +51,7 @@ if(window.location.href.includes("arbitrage.html") || window.location.href.inclu
//Déconnexion //Déconnexion
if (pb.authStore.isValid && window.location.href.includes("arbitrage.html") || window.location.href.includes("arbimatch.html")) { if (pb.authStore.isValid && window.location.href.includes("arbitrage.html") || window.location.href.includes("arbimatch.html")) {
const logoutButton = document.getElementById('disconect'); const logoutButton = document.getElementById('disconect');
logoutButton.addEventListener('click', async function(event) { logoutButton.addEventListener('click', async function (event) {
//Annulation du comportement par défaut //Annulation du comportement par défaut
event.preventDefault(); event.preventDefault();
//Déconnexion //Déconnexion

View File

@@ -9,10 +9,9 @@ let matchList = await pb.collection('match').getFullList({
//Check if navigator supports notifications //Check if navigator supports notifications
if (!("Notification" in window)) { if (!("Notification" in window)) {
console.error("Ce navigateur ne supporte pas les notifications desktop"); console.error("Ce navigateur ne supporte pas les notifications desktop");
} } else {
else{
//Ask for notifications permission on page load //Ask for notifications permission on page load
window.addEventListener('load', function() { window.addEventListener('load', function () {
if (Notification.permission !== "granted") { if (Notification.permission !== "granted") {
Notification.requestPermission(); Notification.requestPermission();
} }
@@ -26,7 +25,7 @@ const sportList = await pb.collection('sport').getFullList({});
//Gestion des mises à jour en temps réel des matchs //Gestion des mises à jour en temps réel des matchs
matchList.forEach(match => { matchList.forEach(match => {
//Si le match est en cours //Si le match est en cours
if(match.status === "in_progress" || match.status === "waiting"){ if (match.status === "in_progress" || match.status === "waiting") {
//Abonnement au match //Abonnement au match
pb.collection('match').subscribe(match.id, async function (e) { pb.collection('match').subscribe(match.id, async function (e) {
//Si le match a été mis à jour //Si le match a été mis à jour
@@ -48,7 +47,7 @@ matchList.forEach(match => {
match.point2 = e.record.point2 match.point2 = e.record.point2
newGoalAlert(match, "team2") newGoalAlert(match, "team2")
} }
if(e.record.status === "in_progress"){ if (e.record.status === "in_progress") {
document.getElementById("cardHeader" + match.id).classList.remove("text-primary-emphasis"); document.getElementById("cardHeader" + match.id).classList.remove("text-primary-emphasis");
document.getElementById("cardHeader" + match.id).classList.add("text-warning-emphasis"); document.getElementById("cardHeader" + match.id).classList.add("text-warning-emphasis");
document.getElementById("cardFooter" + match.id).classList.remove("text-primary-emphasis"); document.getElementById("cardFooter" + match.id).classList.remove("text-primary-emphasis");
@@ -65,7 +64,7 @@ matchList.forEach(match => {
const cardHeaderPointT2 = document.createElement('p'); const cardHeaderPointT2 = document.createElement('p');
cardHeaderPointT2.id = "pointT2" + match.id; cardHeaderPointT2.id = "pointT2" + match.id;
cardHeaderPointT2.innerText = match.point2; cardHeaderPointT2.innerText = match.point2;
if(match.expand.sport.name === "badminton" || match.expand.sport.name === "volleyball"){ if (match.expand.sport.name === "badminton" || match.expand.sport.name === "volleyball") {
cardHeaderPointT1.innerText = match.point1 + ' (' + match.set1 + ')'; cardHeaderPointT1.innerText = match.point1 + ' (' + match.set1 + ')';
cardHeaderPointT2.innerText = match.point2 + ' (' + match.set2 + ')'; cardHeaderPointT2.innerText = match.point2 + ' (' + match.set2 + ')';
} }
@@ -73,7 +72,7 @@ matchList.forEach(match => {
cardHeaderPointDiv.appendChild(cardHeaderSeparator); cardHeaderPointDiv.appendChild(cardHeaderSeparator);
cardHeaderPointDiv.appendChild(cardHeaderPointT2); cardHeaderPointDiv.appendChild(cardHeaderPointT2);
document.getElementById("cardHeader" + match.id).appendChild(cardHeaderPointDiv); document.getElementById("cardHeader" + match.id).appendChild(cardHeaderPointDiv);
if(e.record.point1 === 0 && e.record.point2 === 0){ if (e.record.point1 === 0 && e.record.point2 === 0) {
startMatchAlert(match); startMatchAlert(match);
} }
} }
@@ -91,7 +90,7 @@ matchList.forEach(match => {
container.appendChild(card); container.appendChild(card);
matchEndAlert(match); matchEndAlert(match);
} }
if(e.record.set1 !== match.set1 || e.record.set2 !== match.set2){ if (e.record.set1 !== match.set1 || e.record.set2 !== match.set2) {
newSetAlert(match); newSetAlert(match);
} }
} }
@@ -100,7 +99,7 @@ matchList.forEach(match => {
}); });
//Affichage des matchs sur la page d'arbitrage //Affichage des matchs sur la page d'arbitrage
if(window.location.href.includes("arbitrage.html")){ if (window.location.href.includes("arbitrage.html")) {
//Affichage des matchs //Affichage des matchs
matchList.forEach(record => { matchList.forEach(record => {
let container = document.getElementById('cardContainer'); let container = document.getElementById('cardContainer');
@@ -116,7 +115,7 @@ if(window.location.href.includes("arbitrage.html")){
//Affichage du nom des équipes //Affichage du nom des équipes
const cardTitle = document.createElement('h5'); const cardTitle = document.createElement('h5');
cardTitle.className = "card-title text-center"; cardTitle.className = "card-title text-center";
if(record.team1 && record.team2){ if (record.team1 && record.team2) {
cardTitle.innerText = record.expand.team1.name + " VS " + record.expand.team2.name; cardTitle.innerText = record.expand.team1.name + " VS " + record.expand.team2.name;
} }
//Affichage du sport //Affichage du sport
@@ -131,35 +130,32 @@ if(window.location.href.includes("arbitrage.html")){
arbitrageButton.className = "text-center"; arbitrageButton.className = "text-center";
const arbitrageButtonLink = document.createElement('a'); const arbitrageButtonLink = document.createElement('a');
//Gestion des couleurs du bouton en fonction du statut du match //Gestion des couleurs du bouton en fonction du statut du match
if(record.status === "waiting") { if (record.status === "waiting") {
arbitrageButtonLink.className = "btn btn-primary mt-2"; arbitrageButtonLink.className = "btn btn-primary mt-2";
arbitrageButtonLink.innerHTML = "Démarrer et arbitrer ce match"; arbitrageButtonLink.innerHTML = "Démarrer et arbitrer ce match";
} } else if (record.status === "in_progress") {
else if(record.status === "in_progress") {
arbitrageButtonLink.className = "btn btn-warning mt-2"; arbitrageButtonLink.className = "btn btn-warning mt-2";
arbitrageButtonLink.innerHTML = "Arbitrer ce match"; arbitrageButtonLink.innerHTML = "Arbitrer ce match";
} } else if (record.status === "finished") {
else if(record.status === "finished") {
arbitrageButtonLink.className = "btn btn-success mt-2"; arbitrageButtonLink.className = "btn btn-success mt-2";
arbitrageButtonLink.innerHTML = "Match terminé"; arbitrageButtonLink.innerHTML = "Match terminé";
container = document.getElementById('cardContainer2'); container = document.getElementById('cardContainer2');
} } else {
else{
arbitrageButtonLink.className = "btn btn-secondary mt-2"; arbitrageButtonLink.className = "btn btn-secondary mt-2";
arbitrageButtonLink.innerHTML = "Erreur de statut"; arbitrageButtonLink.innerHTML = "Erreur de statut";
} }
//Gestion du lien du bouton //Gestion du lien du bouton
arbitrageButtonLink.addEventListener('click', async function(event) { arbitrageButtonLink.addEventListener('click', async function (event) {
window.location.href = "arbimatch.html?id=" + record.id; window.location.href = "arbimatch.html?id=" + record.id;
}); });
//Ajout des éléments à la carte //Ajout des éléments à la carte
arbitrageButton.appendChild(arbitrageButtonLink); arbitrageButton.appendChild(arbitrageButtonLink);
card.appendChild(cardHeader); card.appendChild(cardHeader);
if(record.team1 && record.team2){ if (record.team1 && record.team2) {
cardBody.appendChild(cardTitle); cardBody.appendChild(cardTitle);
} }
cardBody.appendChild(cardText); cardBody.appendChild(cardText);
if(record.name !== ""){ if (record.name !== "") {
cardBody.appendChild(cardDescr); cardBody.appendChild(cardDescr);
} }
cardBody.appendChild(arbitrageButton); cardBody.appendChild(arbitrageButton);
@@ -170,7 +166,7 @@ if(window.location.href.includes("arbitrage.html")){
} }
//Gestion des informations dans la modal //Gestion des informations dans la modal
if(window.location.href.includes("arbitrage.html")){ if (window.location.href.includes("arbitrage.html")) {
//Création de la modal //Création de la modal
const modal = document.getElementById('modalAddMatch'); const modal = document.getElementById('modalAddMatch');
const modalDialog = document.createElement('div'); const modalDialog = document.createElement('div');
@@ -288,9 +284,9 @@ if(window.location.href.includes("arbitrage.html")){
//Gestion de l'ajout d'un match //Gestion de l'ajout d'un match
if(window.location.href.includes("arbitrage.html")){ if (window.location.href.includes("arbitrage.html")) {
const addMatchForm = document.getElementById('addMatchForm'); const addMatchForm = document.getElementById('addMatchForm');
addMatchForm.addEventListener('submit', async function(event) { addMatchForm.addEventListener('submit', async function (event) {
//Empêche le rechargement de la page //Empêche le rechargement de la page
event.preventDefault(); event.preventDefault();
@@ -310,10 +306,9 @@ if(window.location.href.includes("arbitrage.html")){
//Décalage de l'heure de début de 1h pour la gestion du fuseau horaire //Décalage de l'heure de début de 1h pour la gestion du fuseau horaire
time_start.setHours(time_start.getHours() - 1); time_start.setHours(time_start.getHours() - 1);
let currentMode = ""; let currentMode = "";
if(sportID.name === "badminton"){ if (sportID.name === "badminton") {
currentMode = "tournoi"; currentMode = "tournoi";
} } else {
else{
currentMode = "poules" currentMode = "poules"
} }
const data = { const data = {
@@ -342,7 +337,7 @@ if(window.location.href.includes("arbitrage.html")){
const association = []; const association = [];
//Gestion de la modal de supression d'un match //Gestion de la modal de supression d'un match
if(window.location.href.includes("arbitrage.html")){ if (window.location.href.includes("arbitrage.html")) {
//Création de la modal //Création de la modal
const delMatchDiv = document.getElementById('matchdelJS'); const delMatchDiv = document.getElementById('matchdelJS');
const delMatchLabel = document.createElement('label'); const delMatchLabel = document.createElement('label');
@@ -357,7 +352,7 @@ if(window.location.href.includes("arbitrage.html")){
const delMatchOption = document.createElement('option'); const delMatchOption = document.createElement('option');
let time_start = new Date(record.heure_debut); let time_start = new Date(record.heure_debut);
if(record.team1 && record.team2){ if (record.team1 && record.team2) {
delMatchOption.innerHTML = record.expand.team1.name + " VS " + record.expand.team2.name + " - " + record.expand.sport.name + " - " + time_start.toLocaleString(); delMatchOption.innerHTML = record.expand.team1.name + " VS " + record.expand.team2.name + " - " + record.expand.sport.name + " - " + time_start.toLocaleString();
} else { } else {
delMatchOption.innerHTML = record.name + ' - ' + record.expand.sport.name + " - " + time_start.toLocaleString(); delMatchOption.innerHTML = record.name + ' - ' + record.expand.sport.name + " - " + time_start.toLocaleString();
@@ -378,10 +373,10 @@ if(window.location.href.includes("arbitrage.html")){
} }
//Gestion de la supression d'un match //Gestion de la supression d'un match
if(window.location.href.includes("arbitrage.html")){ if (window.location.href.includes("arbitrage.html")) {
//Récupération du formulaire //Récupération du formulaire
const delMatchForm = document.getElementById('delMatchForm'); const delMatchForm = document.getElementById('delMatchForm');
delMatchForm.addEventListener('submit', async function(event) { delMatchForm.addEventListener('submit', async function (event) {
//Empêche le rechargement de la page //Empêche le rechargement de la page
event.preventDefault(); event.preventDefault();
@@ -403,7 +398,7 @@ if(window.location.href.includes("arbitrage.html")){
//Affichage des matchs sur la page d'accueil //Affichage des matchs sur la page d'accueil
//Elle s'appele indox.html ou bien n'as pas d'autre juste / //Elle s'appele indox.html ou bien n'as pas d'autre juste /
if(window.location.href.includes("index.html") || window.location.href === "https://interpromo.appen.fr/"){ if (window.location.href.includes("index.html") || window.location.href === "https://interpromo.appen.fr/") {
//Affichage des matchs //Affichage des matchs
matchList.forEach(match => { matchList.forEach(match => {
let container = document.getElementById('cardContainer'); let container = document.getElementById('cardContainer');
@@ -414,23 +409,20 @@ if(window.location.href.includes("index.html") || window.location.href === "http
const cardHeader = document.createElement('div'); const cardHeader = document.createElement('div');
cardHeader.className = "card-header text-center bg-light-subtle "; cardHeader.className = "card-header text-center bg-light-subtle ";
cardHeader.id = "cardHeader" + match.id; cardHeader.id = "cardHeader" + match.id;
if(match.status === "waiting") { if (match.status === "waiting") {
cardHeader.classList.add("text-primary-emphasis"); cardHeader.classList.add("text-primary-emphasis");
} } else if (match.status === "in_progress") {
else if(match.status === "in_progress") {
cardHeader.classList.add("text-warning-emphasis"); cardHeader.classList.add("text-warning-emphasis");
} } else if (match.status === "finished") {
else if(match.status === "finished") {
cardHeader.classList.add("text-success-emphasis"); cardHeader.classList.add("text-success-emphasis");
} } else {
else{
cardHeader.classList.add("text-emphasis-light"); cardHeader.classList.add("text-emphasis-light");
} }
//Affichage de l'heure de début si le match n'est pas en cours ou a une erreur de statut //Affichage de l'heure de début si le match n'est pas en cours ou a une erreur de statut
const time_start = new Date(match.heure_debut); const time_start = new Date(match.heure_debut);
cardHeader.innerText = time_start.toLocaleString(); cardHeader.innerText = time_start.toLocaleString();
//Affichage des points si le match est en cours ou terminé //Affichage des points si le match est en cours ou terminé
if(match.status === "in_progress"){ if (match.status === "in_progress") {
cardHeader.innerText = ""; cardHeader.innerText = "";
const cardHeaderPointDiv = document.createElement('div'); const cardHeaderPointDiv = document.createElement('div');
cardHeaderPointDiv.className = "d-flex justify-content-evenly"; cardHeaderPointDiv.className = "d-flex justify-content-evenly";
@@ -442,7 +434,7 @@ if(window.location.href.includes("index.html") || window.location.href === "http
const cardHeaderPointT2 = document.createElement('p'); const cardHeaderPointT2 = document.createElement('p');
cardHeaderPointT2.id = "pointT2" + match.id; cardHeaderPointT2.id = "pointT2" + match.id;
cardHeaderPointT2.innerText = match.point2; cardHeaderPointT2.innerText = match.point2;
if(match.expand.sport.name === "badminton" || match.expand.sport.name === "volleyball"){ if (match.expand.sport.name === "badminton" || match.expand.sport.name === "volleyball") {
cardHeaderPointT1.innerText = match.point1 + ' (' + match.set1 + ')'; cardHeaderPointT1.innerText = match.point1 + ' (' + match.set1 + ')';
cardHeaderPointT2.innerText = match.point2 + ' (' + match.set2 + ')'; cardHeaderPointT2.innerText = match.point2 + ' (' + match.set2 + ')';
} }
@@ -451,7 +443,7 @@ if(window.location.href.includes("index.html") || window.location.href === "http
cardHeaderPointDiv.appendChild(cardHeaderPointT2); cardHeaderPointDiv.appendChild(cardHeaderPointT2);
cardHeader.appendChild(cardHeaderPointDiv); cardHeader.appendChild(cardHeaderPointDiv);
} }
if(match.status === "finished"){ if (match.status === "finished") {
container = document.getElementById('cardContainer2'); container = document.getElementById('cardContainer2');
cardHeader.innerText = ""; cardHeader.innerText = "";
const cardHeaderPointDiv = document.createElement('div'); const cardHeaderPointDiv = document.createElement('div');
@@ -464,7 +456,7 @@ if(window.location.href.includes("index.html") || window.location.href === "http
const cardHeaderPointT2 = document.createElement('p'); const cardHeaderPointT2 = document.createElement('p');
cardHeaderPointT2.id = "pointT2" + match.id; cardHeaderPointT2.id = "pointT2" + match.id;
cardHeaderPointT2.innerText = match.point2; cardHeaderPointT2.innerText = match.point2;
if(match.expand.sport.name === "badminton" || match.expand.sport.name === "volleyball"){ if (match.expand.sport.name === "badminton" || match.expand.sport.name === "volleyball") {
cardHeaderPointT1.innerText = match.point1 + ' (' + match.set1 + ')'; cardHeaderPointT1.innerText = match.point1 + ' (' + match.set1 + ')';
cardHeaderPointT2.innerText = match.point2 + ' (' + match.set2 + ')'; cardHeaderPointT2.innerText = match.point2 + ' (' + match.set2 + ')';
} }
@@ -478,7 +470,7 @@ if(window.location.href.includes("index.html") || window.location.href === "http
//Affichage du nom des équipes //Affichage du nom des équipes
const cardTitle = document.createElement('h5'); const cardTitle = document.createElement('h5');
cardTitle.className = "card-title text-center"; cardTitle.className = "card-title text-center";
if(match.team1 && match.team2){ if (match.team1 && match.team2) {
cardTitle.innerText = match.expand.team1.name + " VS " + match.expand.team2.name; cardTitle.innerText = match.expand.team1.name + " VS " + match.expand.team2.name;
} }
//Affichage du sport //Affichage du sport
@@ -490,33 +482,30 @@ if(window.location.href.includes("index.html") || window.location.href === "http
cardDescr.innerText = match.name; cardDescr.innerText = match.name;
//Affichage du statut //Affichage du statut
const cardFooter = document.createElement('div'); const cardFooter = document.createElement('div');
if(match.status === "waiting") { if (match.status === "waiting") {
cardFooter.className = "card-footer bg-light-subtle text-primary-emphasis"; cardFooter.className = "card-footer bg-light-subtle text-primary-emphasis";
cardFooter.id = "cardFooter" + match.id; cardFooter.id = "cardFooter" + match.id;
cardFooter.innerHTML = "Match en attente"; cardFooter.innerHTML = "Match en attente";
} } else if (match.status === "in_progress") {
else if(match.status === "in_progress") {
cardFooter.className = "card-footer bg-light-subtle text-warning-emphasis"; cardFooter.className = "card-footer bg-light-subtle text-warning-emphasis";
cardFooter.id = "cardFooter" + match.id; cardFooter.id = "cardFooter" + match.id;
cardFooter.innerHTML = "Match en cours"; cardFooter.innerHTML = "Match en cours";
} } else if (match.status === "finished") {
else if(match.status === "finished") {
cardFooter.className = "card-footer bg-light-subtle text-success-emphasis"; cardFooter.className = "card-footer bg-light-subtle text-success-emphasis";
cardFooter.id = "cardFooter" + match.id; cardFooter.id = "cardFooter" + match.id;
cardFooter.innerHTML = "Match terminé"; cardFooter.innerHTML = "Match terminé";
} } else {
else{
cardFooter.className = "card-footer bg-light-subtle text-emphasis-light"; cardFooter.className = "card-footer bg-light-subtle text-emphasis-light";
cardFooter.id = "cardFooter" + match.id; cardFooter.id = "cardFooter" + match.id;
cardFooter.innerHTML = "Erreur de statut"; cardFooter.innerHTML = "Erreur de statut";
} }
//Ajout des éléments à la carte //Ajout des éléments à la carte
card.appendChild(cardHeader); card.appendChild(cardHeader);
if(match.team1 && match.team2){ if (match.team1 && match.team2) {
cardBody.appendChild(cardTitle); cardBody.appendChild(cardTitle);
} }
cardBody.appendChild(cardText); cardBody.appendChild(cardText);
if(match.name !== ""){ if (match.name !== "") {
cardBody.appendChild(cardDescr); cardBody.appendChild(cardDescr);
} }
card.appendChild(cardBody); card.appendChild(cardBody);
@@ -527,6 +516,4 @@ if(window.location.href.includes("index.html") || window.location.href === "http
} }
console.log("Backend match loaded!"); console.log("Backend match loaded!");

View File

@@ -12,44 +12,44 @@ const matchList = await pb.collection('match').getFullList({
expand: 'sport,team1,team2', expand: 'sport,team1,team2',
}); });
function getOrderedTableTeams(sport){ function getOrderedTableTeams(sport) {
let result = ""; let result = "";
if(sport.tableau !== ""){ if (sport.tableau !== "") {
result += `<h6 class="text-secondary-emphasis fw-semibold">${sport.tableau}</h6>` result += `<h6 class="text-secondary-emphasis fw-semibold">${sport.tableau}</h6>`
} }
if(sport.state === "waiting"){ if (sport.state === "waiting") {
result += "<h5>La compétition n'a pas commencé</h5>" result += "<h5>La compétition n'a pas commencé</h5>"
} else if(sport.type === "poules"){ } else if (sport.type === "poules") {
let teams = EquipeList.filter(equipe => equipe.sport === sport.id).sort((teamA, teamB) => teamA.classement - teamB.classement) let teams = EquipeList.filter(equipe => equipe.sport === sport.id).sort((teamA, teamB) => teamA.classement - teamB.classement)
let goalAverageText = "" let goalAverageText = ""
if(teams[0].points === teams[1].points){ if (teams[0].points === teams[1].points) {
goalAverageText = "(" + teams[0].goalAverage + ")" goalAverageText = "(" + teams[0].goalAverage + ")"
} }
result += `<h5 class="d-flex justify-content-between align-items-start">${teams[0].name}<span class="badge bg-warning text-black rounded-pill">${teams[0].points} pts${goalAverageText}</span></h5>` result += `<h5 class="d-flex justify-content-between align-items-start">${teams[0].name}<span class="badge bg-warning text-black rounded-pill">${teams[0].points} pts${goalAverageText}</span></h5>`
for(let i = 1; i < teams.length; i++){ for (let i = 1; i < teams.length; i++) {
let color = "" let color = ""
if(teams[i].classement <= sport.qualified){ if (teams[i].classement <= sport.qualified) {
color = "bg-success" color = "bg-success"
} else { } else {
color = "bg-danger" color = "bg-danger"
} }
goalAverageText = "" goalAverageText = ""
if(teams[i].points === teams[i-1].points){ if (teams[i].points === teams[i - 1].points) {
goalAverageText = "(" + teams[i].goalAverage + ")" goalAverageText = "(" + teams[i].goalAverage + ")"
} }
if(i+1 < teams.length){ if (i + 1 < teams.length) {
if(teams[i].points === teams[i+1].points){ if (teams[i].points === teams[i + 1].points) {
goalAverageText = "(" + teams[i].goalAverage + ")" goalAverageText = "(" + teams[i].goalAverage + ")"
} }
} }
result += `<div class="d-flex justify-content-between align-items-start">${teams[i].classement}e : ${teams[i].name}<span class="badge ${color} rounded-pill">${teams[i].points} pts${goalAverageText}</span></div>` result += `<div class="d-flex justify-content-between align-items-start">${teams[i].classement}e : ${teams[i].name}<span class="badge ${color} rounded-pill">${teams[i].points} pts${goalAverageText}</span></div>`
} }
} else if(sport.type === "tournois"){ } else if (sport.type === "tournois") {
if(sport.state === "started"){ if (sport.state === "started") {
let teams = EquipeList.filter(equipe => equipe.expand.sport.name === sport.name && equipe.stade !== '').sort((teamA, teamB) => parseInt(teamA.stade, 10) - parseInt(teamB.stade, 10)) let teams = EquipeList.filter(equipe => equipe.expand.sport.name === sport.name && equipe.stade !== '').sort((teamA, teamB) => parseInt(teamA.stade, 10) - parseInt(teamB.stade, 10))
for(let i = 0; i < teams.length; i++){ for (let i = 0; i < teams.length; i++) {
let stade; let stade;
switch(teams[i].stade){ switch (teams[i].stade) {
case "16": case "16":
stade = "16èmes" stade = "16èmes"
break; break;
@@ -67,20 +67,20 @@ function getOrderedTableTeams(sport){
break; break;
} }
let color = "" let color = ""
if(teams[i].eliminated){ if (teams[i].eliminated) {
color = "bg-danger" color = "bg-danger"
} else { } else {
color = "bg-success" color = "bg-success"
} }
result += `<div class="d-flex justify-content-between align-items-start">${teams[i].name}<span class="badge ${color} rounded-pill">${stade}</span></div>` result += `<div class="d-flex justify-content-between align-items-start">${teams[i].name}<span class="badge ${color} rounded-pill">${stade}</span></div>`
} }
} else if(sport.state === "finished"){ } else if (sport.state === "finished") {
let teams = EquipeList.filter(equipe => equipe.expand.sport.name === sport.name && equipe.stade !== '').sort((teamA, teamB) => parseInt(teamA.stade, 10) - parseInt(teamB.stade, 10)) let teams = EquipeList.filter(equipe => equipe.expand.sport.name === sport.name && equipe.stade !== '').sort((teamA, teamB) => parseInt(teamA.stade, 10) - parseInt(teamB.stade, 10))
for(let i = 0; i < teams.length; i++){ for (let i = 0; i < teams.length; i++) {
let classement; let classement;
let color = "" let color = ""
let textColor = "" let textColor = ""
switch(teams[i].stade){ switch (teams[i].stade) {
case "16": case "16":
classement = "16èmes" classement = "16èmes"
color = "bg-secondary" color = "bg-secondary"
@@ -94,7 +94,7 @@ function getOrderedTableTeams(sport){
color = "bg-secondary" color = "bg-secondary"
break; break;
case "2": case "2":
if(teams[i].eliminated){ if (teams[i].eliminated) {
color = "bg-primary-subtle" color = "bg-primary-subtle"
classement = "Quatrième" classement = "Quatrième"
} else { } else {
@@ -103,7 +103,7 @@ function getOrderedTableTeams(sport){
} }
break; break;
case "1": case "1":
if(teams[i].eliminated){ if (teams[i].eliminated) {
color = "bg-success" color = "bg-success"
classement = "Second" classement = "Second"
} else { } else {
@@ -120,21 +120,27 @@ function getOrderedTableTeams(sport){
return result; return result;
} }
function getSportNextMatchText(sport){ function getSportNextMatchText(sport) {
let match = matchList.find(matche => matche.expand.sport.name === sport&& matche.status === "waiting"); let match = matchList.find(matche => matche.expand.sport.name === sport && matche.status === "waiting");
if(!match){ if (!match) {
return "Pas de match prévu"; return "Pas de match prévu";
} }
const time_start = new Date(match.heure_debut); const time_start = new Date(match.heure_debut);
if(match.team1 && match.team2){ if (match.team1 && match.team2) {
return "Prochain match : " + match.expand.team1.name + " vs " + match.expand.team2.name + ' ' + time_start.toLocaleString('fr', { weekday: 'long' }) + " à " + time_start.toLocaleString('fr', { hour: 'numeric', minute: 'numeric' }); return "Prochain match : " + match.expand.team1.name + " vs " + match.expand.team2.name + ' ' + time_start.toLocaleString('fr', {weekday: 'long'}) + " à " + time_start.toLocaleString('fr', {
hour: 'numeric',
minute: 'numeric'
});
} else { } else {
return "Prochain match : " + match.name + ' ' + time_start.toLocaleString('fr', { weekday: 'long' }) + " à " + time_start.toLocaleString('fr', { hour: 'numeric', minute: 'numeric' }); return "Prochain match : " + match.name + ' ' + time_start.toLocaleString('fr', {weekday: 'long'}) + " à " + time_start.toLocaleString('fr', {
hour: 'numeric',
minute: 'numeric'
});
} }
} }
function getSportIcon(sport){ function getSportIcon(sport) {
switch(sport) { switch (sport) {
case "basketball": case "basketball":
return ` <span class="material-symbols-outlined">sports_basketball</span>` return ` <span class="material-symbols-outlined">sports_basketball</span>`
case "volleyball": case "volleyball":
@@ -148,18 +154,18 @@ function getSportIcon(sport){
} }
} }
function getSportCard(sportName){ function getSportCard(sportName) {
let listeTableau = SportList.filter(sport => sport.name === sportName); let listeTableau = SportList.filter(sport => sport.name === sportName);
let result = ` let result = `
<div class="card my-3"> <div class="card my-3">
<div class="card-header text-center bg-light-subtle text-emphasis-light"><div class="d-flex justify-content-evenly">${getSportIcon(sportName)}${sportName.toUpperCase()}${getSportIcon(sportName)}</div></div> <div class="card-header text-center bg-light-subtle text-emphasis-light"><div class="d-flex justify-content-evenly">${getSportIcon(sportName)}${sportName.toUpperCase()}${getSportIcon(sportName)}</div></div>
<div class="card-body bg-light-subtle text-emphasis-light">` <div class="card-body bg-light-subtle text-emphasis-light">`
result += getOrderedTableTeams(listeTableau[0]) result += getOrderedTableTeams(listeTableau[0])
for(let i = 1; i < listeTableau.length; i++){ for (let i = 1; i < listeTableau.length; i++) {
result += "<hr>" result += "<hr>"
result += getOrderedTableTeams(listeTableau[i]) result += getOrderedTableTeams(listeTableau[i])
} }
result += `</div> result += `</div>
<div class="card-footer bg-light-subtle text-emphasis-light">${getSportNextMatchText(sportName)}</div> <div class="card-footer bg-light-subtle text-emphasis-light">${getSportNextMatchText(sportName)}</div>
</div>` </div>`
return result; return result;
@@ -167,7 +173,7 @@ function getSportCard(sportName){
const sportCardContainer = document.getElementById("sportContainer"); const sportCardContainer = document.getElementById("sportContainer");
let sportsList = SportList.reduce((accumulator, currentValue) => { let sportsList = SportList.reduce((accumulator, currentValue) => {
if(!(accumulator.some(elem => elem === currentValue.name))){ if (!(accumulator.some(elem => elem === currentValue.name))) {
accumulator.push(currentValue.name); accumulator.push(currentValue.name);
} }
return accumulator; return accumulator;

View File

@@ -16,8 +16,8 @@ const MatchList = await pb.collection('match').getFullList({
const SportList = await pb.collection('sport').getFullList({}); const SportList = await pb.collection('sport').getFullList({});
function getSportIcon(sport){ function getSportIcon(sport) {
switch(sport) { switch (sport) {
case "basketball": case "basketball":
return ` <span class="material-symbols-outlined">sports_basketball</span>` return ` <span class="material-symbols-outlined">sports_basketball</span>`
case "volleyball": case "volleyball":
@@ -31,19 +31,19 @@ function getSportIcon(sport){
} }
} }
function getTeamClassementBadge(equipe){ function getTeamClassementBadge(equipe) {
let color = "" let color = ""
if(equipe.eliminated){ if (equipe.eliminated) {
color = "bg-danger" color = "bg-danger"
} else { } else {
color = "bg-primary" color = "bg-primary"
} }
if(equipe.stade !== ""){ if (equipe.stade !== "") {
let tournoi = SportList.find(sport => sport.name === equipe.expand.sport.name && sport.type === "tournois") let tournoi = SportList.find(sport => sport.name === equipe.expand.sport.name && sport.type === "tournois")
if(tournoi){ if (tournoi) {
if(tournoi.state === "started"){ if (tournoi.state === "started") {
let stade = "" let stade = ""
switch(equipe.stade){ switch (equipe.stade) {
case "16": case "16":
stade = "16èmes" stade = "16èmes"
break; break;
@@ -61,11 +61,11 @@ function getTeamClassementBadge(equipe){
break; break;
} }
return `<span class="badge ${color} rounded-pill">${stade}</span>` return `<span class="badge ${color} rounded-pill">${stade}</span>`
} else if(tournoi.state === "finished"){ } else if (tournoi.state === "finished") {
let classement = ""; let classement = "";
let color = "" let color = ""
let textColor = "" let textColor = ""
switch(equipe.stade){ switch (equipe.stade) {
case "16": case "16":
classement = "16èmes" classement = "16èmes"
color = "bg-secondary" color = "bg-secondary"
@@ -79,7 +79,7 @@ function getTeamClassementBadge(equipe){
color = "bg-secondary" color = "bg-secondary"
break; break;
case "2": case "2":
if(equipe.eliminated){ if (equipe.eliminated) {
color = "bg-primary-subtle" color = "bg-primary-subtle"
classement = "Quatrième" classement = "Quatrième"
} else { } else {
@@ -88,7 +88,7 @@ function getTeamClassementBadge(equipe){
} }
break; break;
case "1": case "1":
if(equipe.eliminated){ if (equipe.eliminated) {
color = "bg-success" color = "bg-success"
classement = "Second" classement = "Second"
} else { } else {
@@ -101,40 +101,40 @@ function getTeamClassementBadge(equipe){
return `<span class="badge ${color} rounded-pill ${textColor}">${classement}</span>` return `<span class="badge ${color} rounded-pill ${textColor}">${classement}</span>`
} }
} }
} }
if(equipe.classement !== 0){ if (equipe.classement !== 0) {
return `<span class="badge ${color} rounded-pill">${equipe.classement}/${numOfTeamsBySport[equipe.sport]}</span>` return `<span class="badge ${color} rounded-pill">${equipe.classement}/${numOfTeamsBySport[equipe.sport]}</span>`
} }
return ""; return "";
} }
function getTeamsRow(sport, teams){ function getTeamsRow(sport, teams) {
let result = ` let result = `
<li class="list-group-item"> <li class="list-group-item">
<div class="mx-2"> <div class="mx-2">
<div class="fw-bold d-flex align-items-start">${getSportIcon(sport)}${sport[0].toUpperCase()}${sport.slice(1)}</div>` <div class="fw-bold d-flex align-items-start">${getSportIcon(sport)}${sport[0].toUpperCase()}${sport.slice(1)}</div>`
teams.forEach(equipe => { teams.forEach(equipe => {
result += `<div class="d-flex justify-content-between align-items-start"><p class="mb-0">${equipe.name}</p>` result += `<div class="d-flex justify-content-between align-items-start"><p class="mb-0">${equipe.name}</p>`
if(equipe.expand.sport.type === "poules"){ if (equipe.expand.sport.type === "poules") {
result += `<p class="text-secondary-emphasis fw-semibold mb-0">${equipe.expand.sport.tableau}</p>` result += `<p class="text-secondary-emphasis fw-semibold mb-0">${equipe.expand.sport.tableau}</p>`
} }
if(equipe.expand.sport.state !== "waiting"){ if (equipe.expand.sport.state !== "waiting") {
result += getTeamClassementBadge(equipe) result += getTeamClassementBadge(equipe)
} }
result += `</div>` result += `</div>`
}) })
result += `</div> result += `</div>
</li>` </li>`
return result return result
} }
function getPromoCard(promo, teamsBySport){ function getPromoCard(promo, teamsBySport) {
let title = "" let title = ""
if(promo.points !== 0){ if (promo.points !== 0) {
let classement = PromoList.findIndex(e => e.id === promo.id); let classement = PromoList.findIndex(e => e.id === promo.id);
title = `${classement+1}e ${promo.name} (${promo.points}pts)` title = `${classement + 1}e ${promo.name} (${promo.points}pts)`
if(classement === 0){ if (classement === 0) {
title = `Vainqueur ${promo.name} (${promo.points}pts)` title = `Vainqueur ${promo.name} (${promo.points}pts)`
} }
} else { } else {
title = promo.name; title = promo.name;
@@ -144,29 +144,36 @@ function getPromoCard(promo, teamsBySport){
<div class="card-header text-center bg-light-subtle text-emphasis-light">${title}</div> <div class="card-header text-center bg-light-subtle text-emphasis-light">${title}</div>
<ul class="list-group list-group-flush"> <ul class="list-group list-group-flush">
` `
for(let [sport, teams] of Object.entries(teamsBySport)){ for (let [sport, teams] of Object.entries(teamsBySport)) {
cardHtml += getTeamsRow(sport, teams) cardHtml += getTeamsRow(sport, teams)
} }
cardHtml += `</ul>` cardHtml += `</ul>`
//Cherche le prochain match de la promo qui est en status "waiting" //Cherche le prochain match de la promo qui est en status "waiting"
const nextMatch = MatchList.find(match => match.team1 && match.team2 && match.status === "waiting" && (match.expand.team1.promo === promo.id || match.expand.team2.promo === promo.id)); const nextMatch = MatchList.find(match => match.team1 && match.team2 && match.status === "waiting" && (match.expand.team1.promo === promo.id || match.expand.team2.promo === promo.id));
if(nextMatch){ if (nextMatch) {
const time_start = new Date(nextMatch.heure_debut); const time_start = new Date(nextMatch.heure_debut);
if(nextMatch.team1 && nextMatch.team2){ if (nextMatch.team1 && nextMatch.team2) {
cardHtml += `<div class="card-footer bg-light-subtle text-emphasis-light">Prochain match : <b>${nextMatch.expand.sport.name}</b> ${nextMatch.expand.team1.name} vs ${nextMatch.expand.team2.name} ${time_start.toLocaleString('fr', { weekday: 'long' })} à ${time_start.toLocaleString('fr', { hour: 'numeric', minute: 'numeric' })}</div>` cardHtml += `<div class="card-footer bg-light-subtle text-emphasis-light">Prochain match : <b>${nextMatch.expand.sport.name}</b> ${nextMatch.expand.team1.name} vs ${nextMatch.expand.team2.name} ${time_start.toLocaleString('fr', {weekday: 'long'})} à ${time_start.toLocaleString('fr', {
hour: 'numeric',
minute: 'numeric'
})}</div>`
} else { } else {
cardHtml += `<div class="card-footer bg-light-subtle text-emphasis-light">Prochain match : <b>${nextMatch.name} ${time_start.toLocaleString('fr', { weekday: 'long' })} à ${time_start.toLocaleString('fr', { hour: 'numeric', minute: 'numeric' })}</div>` cardHtml += `<div class="card-footer bg-light-subtle text-emphasis-light">Prochain match : <b>${nextMatch.name} ${time_start.toLocaleString('fr', {weekday: 'long'})} à ${time_start.toLocaleString('fr', {
} } hour: 'numeric',
minute: 'numeric'
})}</div>`
}
}
cardHtml += `</div>` cardHtml += `</div>`
return cardHtml return cardHtml
} }
function getSportRow(equipe){ function getSportRow(equipe) {
let members = "" let members = ""
if(equipe.capitaine !== ""){ if (equipe.capitaine !== "") {
members += `<u>${equipe.expand.capitaine.prenom} ${equipe.expand.capitaine.name}</u>, `; members += `<u>${equipe.expand.capitaine.prenom} ${equipe.expand.capitaine.name}</u>, `;
} }
if(equipe.membres.length !== 0){ if (equipe.membres.length !== 0) {
equipe.expand.membres.forEach(membre => { equipe.expand.membres.forEach(membre => {
members += `${membre.prenom[0]}. ${membre.name}, `; members += `${membre.prenom[0]}. ${membre.name}, `;
}); });
@@ -174,37 +181,43 @@ function getSportRow(equipe){
} else { } else {
members = "non renseignés" members = "non renseignés"
} }
let result = ` let result = `
<li class="list-group-item d-flex justify-content-between align-items-start"> <li class="list-group-item d-flex justify-content-between align-items-start">
<div class="mx-2"> <div class="mx-2">
<div class="fw-bold d-flex align-items-start">${getSportIcon(equipe.expand.sport.name)}${equipe.expand.sport.name[0].toUpperCase()}${equipe.expand.sport.name.slice(1)} (${equipe.expand.sport.tableau})</div> <div class="fw-bold d-flex align-items-start">${getSportIcon(equipe.expand.sport.name)}${equipe.expand.sport.name[0].toUpperCase()}${equipe.expand.sport.name.slice(1)} (${equipe.expand.sport.tableau})</div>
Membres : ${members} Membres : ${members}
</div>` </div>`
if(equipe.expand.sport.state !== "waiting"){ if (equipe.expand.sport.state !== "waiting") {
result += getTeamClassementBadge(equipe) result += getTeamClassementBadge(equipe)
} }
result += `</li>` result += `</li>`
return result return result
} }
function getTeamCard(teamBySport){ function getTeamCard(teamBySport) {
let equipe = teamBySport['team'] let equipe = teamBySport['team']
let cardHtml = ` let cardHtml = `
<div class="card my-3"> <div class="card my-3">
<div class="card-header text-center bg-light-subtle text-emphasis-light">${equipe.name}(${equipe.expand.promo.name})</div> <div class="card-header text-center bg-light-subtle text-emphasis-light">${equipe.name}(${equipe.expand.promo.name})</div>
<ul class="list-group list-group-flush"> <ul class="list-group list-group-flush">
` `
for(const [sportName, team] of Object.entries(teamBySport).filter(([sportName, team]) => sportName !== "team")){ for (const [sportName, team] of Object.entries(teamBySport).filter(([sportName, team]) => sportName !== "team")) {
cardHtml += getSportRow(team) cardHtml += getSportRow(team)
} }
cardHtml += `</ul>` cardHtml += `</ul>`
const nextMatch = MatchList.find(match => match.team1 && match.team2 && match.status === "waiting" && (match.expand.team1.name === equipe.name || match.expand.team2.name === equipe.name)); const nextMatch = MatchList.find(match => match.team1 && match.team2 && match.status === "waiting" && (match.expand.team1.name === equipe.name || match.expand.team2.name === equipe.name));
if(nextMatch){ if (nextMatch) {
const time_start = new Date(nextMatch.heure_debut); const time_start = new Date(nextMatch.heure_debut);
if(nextMatch.team1 && nextMatch.team2){ if (nextMatch.team1 && nextMatch.team2) {
cardHtml += `<div class="card-footer bg-light-subtle text-emphasis-light">Prochain match : <b>${nextMatch.expand.sport.name}</b> ${nextMatch.expand.team1.name} vs ${nextMatch.expand.team2.name} ${time_start.toLocaleString('fr', { weekday: 'long' })} à ${time_start.toLocaleString('fr', { hour: 'numeric', minute: 'numeric' })}</div>` cardHtml += `<div class="card-footer bg-light-subtle text-emphasis-light">Prochain match : <b>${nextMatch.expand.sport.name}</b> ${nextMatch.expand.team1.name} vs ${nextMatch.expand.team2.name} ${time_start.toLocaleString('fr', {weekday: 'long'})} à ${time_start.toLocaleString('fr', {
hour: 'numeric',
minute: 'numeric'
})}</div>`
} else { } else {
cardHtml += `<div class="card-footer bg-light-subtle text-emphasis-light">Prochain match : <b>${nextMatch.name} ${time_start.toLocaleString('fr', { weekday: 'long' })} à ${time_start.toLocaleString('fr', { hour: 'numeric', minute: 'numeric' })}</div>` cardHtml += `<div class="card-footer bg-light-subtle text-emphasis-light">Prochain match : <b>${nextMatch.name} ${time_start.toLocaleString('fr', {weekday: 'long'})} à ${time_start.toLocaleString('fr', {
hour: 'numeric',
minute: 'numeric'
})}</div>`
} }
} }
cardHtml += `</div>` cardHtml += `</div>`
@@ -219,20 +232,20 @@ const teamSports = {} // Object key = team name, value = Object key = sport name
const numOfTeamsBySport = {} const numOfTeamsBySport = {}
EquipeList.forEach(equipe => { EquipeList.forEach(equipe => {
if(!(equipe.expand.promo.name in promoTeamsbySport)){ if (!(equipe.expand.promo.name in promoTeamsbySport)) {
promoTeamsbySport[equipe.expand.promo.name] = {}; promoTeamsbySport[equipe.expand.promo.name] = {};
} }
if(!(equipe.expand.sport.name in promoTeamsbySport[equipe.expand.promo.name])){ if (!(equipe.expand.sport.name in promoTeamsbySport[equipe.expand.promo.name])) {
promoTeamsbySport[equipe.expand.promo.name][equipe.expand.sport.name] = []; promoTeamsbySport[equipe.expand.promo.name][equipe.expand.sport.name] = [];
} }
promoTeamsbySport[equipe.expand.promo.name][equipe.expand.sport.name].push(equipe); promoTeamsbySport[equipe.expand.promo.name][equipe.expand.sport.name].push(equipe);
if(!(equipe.expand.sport.name === "badminton")){ if (!(equipe.expand.sport.name === "badminton")) {
if(!(equipe.name in teamSports)){ if (!(equipe.name in teamSports)) {
teamSports[equipe.name] = {'team': equipe}; teamSports[equipe.name] = {'team': equipe};
} }
teamSports[equipe.name][equipe.expand.sport.name] = equipe; teamSports[equipe.name][equipe.expand.sport.name] = equipe;
} }
if(!(equipe.sport in numOfTeamsBySport)){ if (!(equipe.sport in numOfTeamsBySport)) {
numOfTeamsBySport[equipe.sport] = 0; numOfTeamsBySport[equipe.sport] = 0;
} }
numOfTeamsBySport[equipe.sport] += 1; numOfTeamsBySport[equipe.sport] += 1;
@@ -241,7 +254,7 @@ EquipeList.forEach(equipe => {
//Affichage des équipes par promo //Affichage des équipes par promo
PromoList.forEach(promo => { PromoList.forEach(promo => {
if(!(promo.name in promoTeamsbySport)){ if (!(promo.name in promoTeamsbySport)) {
promoTeamsbySport[promo.name] = {} promoTeamsbySport[promo.name] = {}
} }
promoCardContainer.insertAdjacentHTML("beforeend", getPromoCard(promo, promoTeamsbySport[promo.name])); promoCardContainer.insertAdjacentHTML("beforeend", getPromoCard(promo, promoTeamsbySport[promo.name]));

View File

@@ -2,10 +2,10 @@ document.cookie = "icons=wifi_tethering,trophy,fitness_center,login; expires=Fri
document.cookie = "hideImage=true; expires=Fri, 10 Nov 2023 12:00:00 UTC; path=/"; document.cookie = "hideImage=true; expires=Fri, 10 Nov 2023 12:00:00 UTC; path=/";
function getCookie(name){ function getCookie(name) {
let value = "; " + document.cookie; let value = "; " + document.cookie;
let parts = value.split("; " + name + "="); let parts = value.split("; " + name + "=");
if(parts.length === 2) return parts.pop().split(";").shift(); if (parts.length === 2) return parts.pop().split(";").shift();
} }
let iconData = getCookie("icons"); let iconData = getCookie("icons");
@@ -14,7 +14,7 @@ let iconList = iconData.split(",");
let iconContainer = document.querySelectorAll(".icons-display"); let iconContainer = document.querySelectorAll(".icons-display");
for(let i = 0; i < iconContainer.length; i++){ for (let i = 0; i < iconContainer.length; i++) {
let icon = document.createElement("span"); let icon = document.createElement("span");
icon.className = "material-symbols-outlined"; icon.className = "material-symbols-outlined";
icon.innerHTML = iconList[i]; icon.innerHTML = iconList[i];
@@ -25,9 +25,8 @@ for(let i = 0; i < iconContainer.length; i++){
let hideImage = getCookie("hideImage"); let hideImage = getCookie("hideImage");
if(hideImage === "true"){ if (hideImage === "true") {
document.querySelector(".logo-appen").style.display = "none"; document.querySelector(".logo-appen").style.display = "none";
} } else {
else{
document.querySelector(".logo-appen").style.display = "block"; document.querySelector(".logo-appen").style.display = "block";
} }

File diff suppressed because one or more lines are too long

View File

@@ -1,84 +1,93 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr" data-bs-theme="dark"> <html lang="fr" data-bs-theme="dark">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title> Connexion </title> <title> Connexion </title>
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" /> <link rel="stylesheet"
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200"/>
<!--- Ajout d'un fichier css pour les classes personalisé ---> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"
<link rel="stylesheet" href="style.css" /> integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<script src="js/cookie.js" defer></script> <!--- Ajout d'un fichier css pour les classes personalisé --->
<link rel="icon" href="assets/appen.png"> <link rel="stylesheet" href="style.css"/>
<script src="js/backend/login.js" type="module"></script> <script src="js/cookie.js" defer></script>
<link rel="icon" href="assets/appen.png">
<script src="js/backend/login.js" type="module"></script>
</head> </head>
<body> <body>
<header> <header>
<nav class="navbar navbar-dark bg-dark fixed-top"> <nav class="navbar navbar-dark bg-dark fixed-top">
<div class="container-fluid"> <div class="container-fluid">
<a class="navbar-brand" href="index.html"> <a class="navbar-brand" href="index.html">
<img src="assets/appen.png" alt="Logo" width="30" height="30" class="d-inline-block align-text-top logo-appen"> <img src="assets/appen.png" alt="Logo" width="30" height="30"
Interpromos 2023 class="d-inline-block align-text-top logo-appen">
</a> Interpromos 2023
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Ouvrir la navigation"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
<span class="navbar-toggler-icon"></span> data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent"
</button> aria-expanded="false" aria-label="Ouvrir la navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse text-bg-dark" id="navbarToggleExternalContent" data-bs-theme="dark"> <div class="collapse text-bg-dark" id="navbarToggleExternalContent" data-bs-theme="dark">
<ul class="navbar-nav justify-content-end flex-grow-1 pe-3"> <ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" aria-current="page" href="index.html"> <a class="nav-link d-inline-flex align-items-center" aria-current="page" href="index.html">
<div class="pe-3 icons-display"></div> <div class="pe-3 icons-display"></div>
Matchs en direct Matchs en direct
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" href="teams.html"> <a class="nav-link d-inline-flex align-items-center" href="teams.html">
<div class="pe-3 icons-display"></div> <div class="pe-3 icons-display"></div>
Classement et équipes Classement et équipes
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" href="sports.html"> <a class="nav-link d-inline-flex align-items-center" href="sports.html">
<div class="pe-3 icons-display"></div> <div class="pe-3 icons-display"></div>
Liste des sports Liste des sports
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link d-inline-flex active align-items-center" href="login.html"> <a class="nav-link d-inline-flex active align-items-center" href="login.html">
<div class="pe-3 icons-display"></div> <div class="pe-3 icons-display"></div>
Connexion Connexion
</a> </a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
</nav> </nav>
</header> </header>
<div class="container"> <div class="container">
<div class="col-8 offset-2 mt-6"> <div class="col-8 offset-2 mt-6">
<div class="alert alert-danger" role="alert" id="LoginImposible" style="display: none"> <div class="alert alert-danger" role="alert" id="LoginImposible" style="display: none">
Connexion impossible, veuillez vérifier vos identifiants ! Connexion impossible, veuillez vérifier vos identifiants !
</div>
<h2 class="text-center">Connexion</h2>
<br>
<form class="text-center align-items-center">
<label for="LoginID" class="form-label">Identifiant</label>
<input type="email" class="form-control" id="LoginID" placeholder="exemple@appen.fr">
<br>
<label for="LoginPassword" class="form-label">Mot de passe</label>
<input type="password" class="form-control" id="LoginPassword" placeholder="Mot de passe">
<div class="text-center">
<button type="submit" class="btn btn-primary btn-lg btn-block mt-4">Connexion</button>
</div>
</form>
</div> </div>
<h2 class="text-center">Connexion</h2>
<br>
<form class="text-center align-items-center">
<label for="LoginID" class="form-label">Identifiant</label>
<input type="email" class="form-control" id="LoginID" placeholder="exemple@appen.fr">
<br>
<label for="LoginPassword" class="form-label">Mot de passe</label>
<input type="password" class="form-control" id="LoginPassword" placeholder="Mot de passe">
<div class="text-center"><button type="submit" class="btn btn-primary btn-lg btn-block mt-4">Connexion</button></div>
</form>
</div>
</div> </div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL"
crossorigin="anonymous"></script>
</body> </body>
</html> </html>

View File

@@ -1,72 +1,80 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr" data-bs-theme="dark"> <html lang="fr" data-bs-theme="dark">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title> Liste des Sports </title> <title> Liste des Sports </title>
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" /> <link rel="stylesheet"
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200"/>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<!--- Ajout d'un fichier css pour les classes personalisé ---> <!--- Ajout d'un fichier css pour les classes personalisé --->
<link rel="stylesheet" href="style.css" /> <link rel="stylesheet" href="style.css"/>
<script src="js/cookie.js" defer></script> <script src="js/cookie.js" defer></script>
<link rel="icon" href="assets/appen.png"> <link rel="icon" href="assets/appen.png">
<script src="js/backend/sport.js" type="module" defer></script> <script src="js/backend/sport.js" type="module" defer></script>
</head> </head>
<body> <body>
<header> <header>
<nav class="navbar navbar-dark bg-dark fixed-top"> <nav class="navbar navbar-dark bg-dark fixed-top">
<div class="container-fluid"> <div class="container-fluid">
<a class="navbar-brand" href="index.html"> <a class="navbar-brand" href="index.html">
<img src="assets/appen.png" alt="Logo" width="30" height="30" class="d-inline-block align-text-top logo-appen"> <img src="assets/appen.png" alt="Logo" width="30" height="30"
Interpromos 2023 class="d-inline-block align-text-top logo-appen">
</a> Interpromos 2023
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Ouvrir la navigation"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
<span class="navbar-toggler-icon"></span> data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent"
</button> aria-expanded="false" aria-label="Ouvrir la navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse text-bg-dark" id="navbarToggleExternalContent" data-bs-theme="dark"> <div class="collapse text-bg-dark" id="navbarToggleExternalContent" data-bs-theme="dark">
<ul class="navbar-nav justify-content-end flex-grow-1 pe-3"> <ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" href="index.html"> <a class="nav-link d-inline-flex align-items-center" href="index.html">
<div class="pe-3 icons-display"></div> <div class="pe-3 icons-display"></div>
Matchs en direct Matchs en direct
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" href="teams.html"> <a class="nav-link d-inline-flex align-items-center" href="teams.html">
<div class="pe-3 icons-display"></div> <div class="pe-3 icons-display"></div>
Classement et équipes Classement et équipes
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active d-inline-flex align-items-center" aria-current="page" href="sports.html"> <a class="nav-link active d-inline-flex align-items-center" aria-current="page"
<div class="pe-3 icons-display"></div> href="sports.html">
Liste des sports <div class="pe-3 icons-display"></div>
</a> Liste des sports
</li> </a>
<li class="nav-item"> </li>
<a class="nav-link d-inline-flex align-items-center" href="login.html"> <li class="nav-item">
<div class="pe-3 icons-display"></div> <a class="nav-link d-inline-flex align-items-center" href="login.html">
Connexion <div class="pe-3 icons-display"></div>
</a> Connexion
</li> </a>
</ul> </li>
</div> </ul>
</div>
</div> </div>
</nav> </nav>
</header> </header>
<div class="container mt-6"> <div class="container mt-6">
<div class="col-8 offset-2" id="sportContainer"> <div class="col-8 offset-2" id="sportContainer">
</div>
</div> </div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"
</body> integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL"
crossorigin="anonymous"></script>
</body>
</html> </html>

View File

@@ -1,3 +1,3 @@
.mt-6 { .mt-6 {
margin-top: 6rem !important; margin-top: 6rem !important;
} }

View File

@@ -1,73 +1,81 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="fr" data-bs-theme="dark"> <html lang="fr" data-bs-theme="dark">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title> Classement et équipes </title> <title> Classement et équipes </title>
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" /> <link rel="stylesheet"
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous"> href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200"/>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<!--- Ajout d'un fichier css pour les classes personalisé ---> <!--- Ajout d'un fichier css pour les classes personalisé --->
<link rel="stylesheet" href="style.css" /> <link rel="stylesheet" href="style.css"/>
<script src="js/cookie.js" defer></script> <script src="js/cookie.js" defer></script>
<link rel="icon" href="assets/appen.png"> <link rel="icon" href="assets/appen.png">
<script src="js/backend/team.js" type="module" defer></script> <script src="js/backend/team.js" type="module" defer></script>
</head> </head>
<body> <body>
<header> <header>
<nav class="navbar navbar-dark bg-dark fixed-top"> <nav class="navbar navbar-dark bg-dark fixed-top">
<div class="container-fluid"> <div class="container-fluid">
<a class="navbar-brand" href="index.html"> <a class="navbar-brand" href="index.html">
<img src="assets/appen.png" alt="Logo" width="30" height="30" class="d-inline-block align-text-top logo-appen"> <img src="assets/appen.png" alt="Logo" width="30" height="30"
Interpromos 2023 class="d-inline-block align-text-top logo-appen">
</a> Interpromos 2023
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Ouvrir la navigation"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
<span class="navbar-toggler-icon"></span> data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent"
</button> aria-expanded="false" aria-label="Ouvrir la navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse text-bg-dark" id="navbarToggleExternalContent" data-bs-theme="dark"> <div class="collapse text-bg-dark" id="navbarToggleExternalContent" data-bs-theme="dark">
<ul class="navbar-nav justify-content-end flex-grow-1 pe-3"> <ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link d-inline-flex align-items-center" href="index.html"> <a class="nav-link d-inline-flex align-items-center" href="index.html">
<div class="pe-3 icons-display"></div> <div class="pe-3 icons-display"></div>
Matchs en direct Matchs en direct
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a class="nav-link active d-inline-flex align-items-center" aria-current="page" href="teams.html"> <a class="nav-link active d-inline-flex align-items-center" aria-current="page"
<div class="pe-3 icons-display"></div> href="teams.html">
Classement et équipes <div class="pe-3 icons-display"></div>
</a> Classement et équipes
</li> </a>
<li class="nav-item"> </li>
<a class="nav-link d-inline-flex align-items-center" href="sports.html"> <li class="nav-item">
<div class="pe-3 icons-display"></div> <a class="nav-link d-inline-flex align-items-center" href="sports.html">
Liste des sports <div class="pe-3 icons-display"></div>
</a> Liste des sports
</li> </a>
<li class="nav-item"> </li>
<a class="nav-link d-inline-flex align-items-center" href="login.html"> <li class="nav-item">
<div class="pe-3 icons-display"></div> <a class="nav-link d-inline-flex align-items-center" href="login.html">
Connexion <div class="pe-3 icons-display"></div>
</a> Connexion
</li> </a>
</ul> </li>
</div> </ul>
</div>
</div> </div>
</nav> </nav>
</header> </header>
<div class="container mt-6"> <div class="container mt-6">
<h2>Classement des Promos</h2> <h2>Classement des Promos</h2>
<div class="col-8 offset-2" id="promoCardContainer"></div> <div class="col-8 offset-2" id="promoCardContainer"></div>
<hr> <hr>
<h2>Classement des équipes</h2> <h2>Classement des équipes</h2>
<div class="col-8 offset-2" id="teamCardContainer"></div> <div class="col-8 offset-2" id="teamCardContainer"></div>
</div> </div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"
</body> integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL"
crossorigin="anonymous"></script>
</body>
</html> </html>