feat: dev-web - begin modal and new-game front

This commit is contained in:
kmitresse
2024-04-06 14:32:36 +02:00
parent 0148e4b505
commit c7efa6e5f8
6 changed files with 130 additions and 51 deletions
@@ -34,7 +34,7 @@ public class MainMenuServlet extends HttpServlet {
// }
request.setAttribute("current", "main-menu");
manageNewGame(request, response, user);
//manageStatistiques(request, response, user);
manageStatistiques(request, response, user);
request.getRequestDispatcher("/WEB-INF/views/main-menu.jsp").forward(request, response);
}
@@ -60,9 +60,7 @@ public class MainMenuServlet extends HttpServlet {
private void manageStatistiques(HttpServletRequest request, HttpServletResponse response, User sessionUser) throws IOException, ServletException {
List<Game> games = new ArrayList<Game>();
System.out.println(sessionUser.toString());
System.out.println(sessionUser.getPlayedGames().size());
if (sessionUser.getPlayedGames() != null) {
if (sessionUser != null && sessionUser.getPlayedGames() != null) {
for (Player player : sessionUser.getPlayedGames()) {
Game game = player.getGame();
game.sortPlayersByScore();
@@ -5,13 +5,20 @@
<div id="newGameModal" class="modal-wrapper" style="display: none">
<div class="modal">
<a href="#close" title="Close" class="close">&times;</a>
<a href="#" title="Close" class="close">&times;</a>
<div class="modal-header">
<h2>Nouvelle Partie</h2>
</div>
<div class="modal-content">
<div id="settings">
<form>
<label>Difficulté</label>
<div class="difficulty-radio">
<input type="radio" name="difficulty" value="easy" id="easy" checked="checked" />
<label for="easy">Facile</label>
<input type="radio" name="difficulty" value="hard" id="hard" />
<label for="hard">Difficile</label>
</div>
<label for="timer">Timer</label>
<input type="number" id="timer" name="timer" min="<%= Game.TIMER_MIN %>" max="<%= Game.TIMER_MAX %>" value="<%= Game.TIMER_MIN %>">
<label for="nbColors">Nb couleurs</label>
@@ -11,7 +11,7 @@
<% ArrayList<Game> games = (ArrayList<Game>) request.getAttribute("games") != null ? (ArrayList<Game>) request.getAttribute("games") : new ArrayList<>() ; %>
<div id="statisticsModal" class="modal-wrapper" style="display: none">
<div class="modal">
<a href="#close" title="Close" class="close">&times;</a>
<a href="#" title="Close" class="close">&times;</a>
<div class="modal-header">
<h2>Statistiques</h2>
</div>
@@ -25,24 +25,24 @@
</tr>
<tr>
<th>Nombre de parties gagnées:</th>
<td><%= user.getNbWin() %>, <%= user.getWinRate()%></td>
<td><%= user.getNbWin() %>, <%= user.getWinRate()%>%</td>
</tr>
<tr>
<th>Nombre de clicks total:</th>
<th>Nombre de clics total:</th>
<td><%= user.getNbClicks() %></td>
</tr>
<tr>
<th>Nombre de clicks corrects:</th>
<td><%= user.getNbRightClicks() %>, <%= user.getRightClickPercentRate()%></td>
<th>Nombre de clics corrects:</th>
<td><%= user.getNbRightClicks() %>, <%= user.getRightClickPercentRate()%>%</td>
</tr>
<tr>
<th>Nombre de clicks rapides:</th>
<td><%= user.getNbRapidClicks() %>, <%= user.getRapidClickPercentRate()%></td>
<th>Nombre de clics rapides:</th>
<td><%= user.getNbRapidClicks() %>, <%= user.getRapidClickPercentRate()%>%</td>
</tr>
</table>
</div>
<div id="game-selection">
//listes de game dont chacune est un onglet déroulante des joueurs
<%-- listes de game dont chacune est un onglet déroulante des joueurs--%>
<h2>Statistiques par jeu</h2>
<table>
<tr>
@@ -69,9 +69,9 @@
<tr>
<th>Username</th>
<th>Score</th>
<th>Nombre de click</th>
<th>Nombre de click corrects</th>
<th>Nombre de click rapides</th>
<th>Nombre de clic</th>
<th>Nombre de clic corrects</th>
<th>Nombre de clic rapides</th>
</tr>
<%
for (Player player : game.getPlayers()) {
@@ -80,8 +80,8 @@
<td><%= player.getUser().getUsername() %></td>
<td><%= player.getScore() %></td>
<td><%= player.getClickCount() %></td>
<td><%= player.getRightClickCount() %>, <%= player.getRatioRightClick() %></td>
<td><%= player.getRapidClickCount() %>, <%= player.getRatioRapidClick() %></td>
<td><%= player.getRightClickCount() %>, <%= player.getRatioRightClick() %>%</td>
<td><%= player.getRapidClickCount() %>, <%= player.getRatioRapidClick() %>%</td>
</tr>
<% } %>
</table>
@@ -7,6 +7,7 @@
<title>Cards Rush</title>
<link href="${pageContext.request.contextPath}/static/css/global.css" rel="stylesheet">
<link href="${pageContext.request.contextPath}/static/css/main-menu.css" rel="stylesheet">
<link href="${pageContext.request.contextPath}/static/css/new-game.css" rel="stylesheet">
<link href="${pageContext.request.contextPath}/static/css/modal.css" rel="stylesheet">
<script src="${pageContext.request.contextPath}/static/js/modal.js" defer></script>
<script src="${pageContext.request.contextPath}/static/js/new-game.js" defer></script>
@@ -1,62 +1,73 @@
@import url('https://fonts.googleapis.com/css?family=Open+Sans:400,600');
.modal-toggle {
cursor: pointer;
}
.modal-wrapper {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
border-radius: 20px;
border: 1px solid rgba(208, 73, 73, 0.83);
background: rgba(208, 73, 73, 0.38);
backdrop-filter: blur(14.399999618530273px);
top: 100px;
right: 90px;
bottom: 146px;
left: 90px;
background: rgba(255, 255, 255, 0.31);
border-radius: 16px;
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
backdrop-filter: blur(12.2px);
-webkit-backdrop-filter: blur(12.2px);
border: 1px solid rgba(255, 255, 255, 0.63);
display: none;
-webkit-transition: opacity 0.2s ease-in;
-moz-transition: opacity 0.2s ease-in;
transition: opacity 0.2s ease-in;
pointer-events: auto;
}
.modal-wrapper > div {
width: 460px;
height: 40%;
position: absolute;
width: 95%;
height: 95%;
position: relative;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
margin: 50px 15px;
vertical-align: middle;
padding: 20px;
border-radius: 6px;
background: #fff;
display: none;
}
.modal-content {
display: flex;
flex-direction: row;
gap : 20px;
border: 1px solid rgba(0, 0, 0, 0.83);
}
#settings {
border-right: 1px solid rgba(0, 0, 0, 0.83);
}
form {
display: flex;
flex-direction: column;
gap: 10px;
}
.close {
background: #606061;
color: #ffffff;
line-height: 25px;
background: var(--Button-Light-Default-Background);
color: #FFFFFF;
line-height: 30px;
position: absolute;
right: -12px;
right: 20px;
text-align: center;
top: -10px;
width: 24px;
width: 30px;
text-decoration: none;
font-weight: bold;
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
border-radius: 12px;
}
.close:hover {
background: #00d9ff;
-webkit-border-radius: 33px;
-moz-border-radius: 33px;
border-radius: 33px;
font-size: xx-large;
}
@@ -0,0 +1,62 @@
.difficulty-radio {
margin: 0 0 1.5rem;
box-sizing: border-box;
font-size: 0;
display: flex;
flex-flow: row nowrap;
justify-content: flex-start;
align-items: stretch;
}
.difficulty-radio input {
width: 0;
height: 0;
position: absolute;
left: -9999px;
}
.difficulty-radio input + label {
margin: 0;
padding: 0.75rem 2rem;
box-sizing: border-box;
position: relative;
display: inline-block;
background-color: var(--Button-Light-Default-Background);
font-size: 1rem;
line-height: 140%;
font-weight: 600;
text-align: center;
box-shadow: 0 0 0 rgba(255, 255, 255, 0);
transition: border-color 0.15s ease-out, color 0.25s ease-out, background-color 0.15s ease-out, box-shadow 0.15s ease-out;
/* ADD THESE PROPERTIES TO SWITCH FROM AUTO WIDTH TO FULL WIDTH */
/*flex: 0 0 50%;
display: flex;
justify-content: center;
align-items: center;
*/
/* ----- */
}
.difficulty-radio input + label:first-of-type {
border-radius: 6px 0 0 6px;
border-right: none;
}
.difficulty-radio input + label:last-of-type {
border-radius: 0 6px 6px 0;
border-left: none;
}
.difficulty-radio input:checked + label {
background-color: #4b9dea;
color: #fff;
box-shadow: 0 0 10px rgba(102, 179, 251, .5);
border-color: #4b9dea;
z-index: 1;
}
@media (max-width: 800px) {
.difficulty-radio input + label {
padding: 0.75rem 0.25rem;
flex: 0 0 50%;
display: flex;
justify-content: center;
align-items: center;
}
}