Site
- websocket try to reconnect when it disconnected - add function on search bar in lobby page for search user Django - add request search user to find someone in database and return a list
This commit is contained in:
@ -1,9 +1,11 @@
|
|||||||
<div id="topBarLobby">
|
<div id="topBarLobby">
|
||||||
<h1>PTME</h1>
|
<h1>PTME</h1>
|
||||||
<div class="search-container">
|
<div class="search-container">
|
||||||
<input type="text" placeholder="Search..." class="search-input">
|
<input type="text" placeholder="Search..." class="search-input" id="searchInputUser">
|
||||||
<button class="search-button">Search</button>
|
<button class="search-button">Search</button>
|
||||||
</div>
|
</div>
|
||||||
|
<div id="searchResult">
|
||||||
|
</div>
|
||||||
<div id="loginButton">
|
<div id="loginButton">
|
||||||
<p></p>
|
<p></p>
|
||||||
</div>
|
</div>
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
|
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2024/08/09 08:08:00 by edbernar #+# #+# #
|
# Created: 2024/08/09 08:08:00 by edbernar #+# #+# #
|
||||||
# Updated: 2024/09/16 13:39:22 by tomoron ### ########.fr #
|
# Updated: 2024/09/18 07:24:47 by edbernar ### ########.fr #
|
||||||
# #
|
# #
|
||||||
# **************************************************************************** #
|
# **************************************************************************** #
|
||||||
|
|
||||||
@ -73,7 +73,7 @@ def createAccount(socket, content):
|
|||||||
socket.sync_send(json.dumps({"type": "create_account", "content": "Account created"}))
|
socket.sync_send(json.dumps({"type": "create_account", "content": "Account created"}))
|
||||||
if(not sendVerifMail(verif_str, content["mail"], content["username"])):
|
if(not sendVerifMail(verif_str, content["mail"], content["username"])):
|
||||||
print("mail error")
|
print("mail error")
|
||||||
socket.sendError("An error occured while sending the email, glhf", 2026)
|
socket.sendError("An error occured while sending the email, glhf", 9026)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("error")
|
print("error")
|
||||||
socket.sendError("An error occured while creating the account", 9024, e)
|
socket.sendError("An error occured while creating the account", 9024, e)
|
||||||
|
@ -0,0 +1,30 @@
|
|||||||
|
# **************************************************************************** #
|
||||||
|
# #
|
||||||
|
# ::: :::::::: #
|
||||||
|
# searchUser.py :+: :+: :+: #
|
||||||
|
# +:+ +:+ +:+ #
|
||||||
|
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
|
||||||
|
# +#+#+#+#+#+ +#+ #
|
||||||
|
# Created: 2024/09/18 07:26:07 by edbernar #+# #+# #
|
||||||
|
# Updated: 2024/09/18 08:20:44 by edbernar ### ########.fr #
|
||||||
|
# #
|
||||||
|
# **************************************************************************** #
|
||||||
|
|
||||||
|
from asgiref.sync import sync_to_async
|
||||||
|
from ..models import User
|
||||||
|
import json
|
||||||
|
|
||||||
|
@sync_to_async
|
||||||
|
def searchUser(socket, content):
|
||||||
|
try:
|
||||||
|
users = User.objects.filter(username__contains=content["username"])
|
||||||
|
userList = []
|
||||||
|
for user in users:
|
||||||
|
if (user.id != socket.id and user.mail_verified):
|
||||||
|
userList.append((user.username, user.id, user.pfp))
|
||||||
|
if len(userList) >= 10:
|
||||||
|
break
|
||||||
|
socket.sync_send({"type":"search_user", "content":userList if userList else []})
|
||||||
|
except Exception as e:
|
||||||
|
socket.sendError("An unknown error occured", 9027, e)
|
||||||
|
return
|
@ -3,10 +3,10 @@
|
|||||||
# ::: :::::::: #
|
# ::: :::::::: #
|
||||||
# websocket.py :+: :+: :+: #
|
# websocket.py :+: :+: :+: #
|
||||||
# +:+ +:+ +:+ #
|
# +:+ +:+ +:+ #
|
||||||
# By: tomoron <tomoron@student.42.fr> +#+ +:+ +#+ #
|
# By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2024/09/09 14:31:30 by tomoron #+# #+# #
|
# Created: 2024/09/09 14:31:30 by tomoron #+# #+# #
|
||||||
# Updated: 2024/09/15 00:48:29 by tomoron ### ########.fr #
|
# Updated: 2024/09/18 07:33:08 by edbernar ### ########.fr #
|
||||||
# #
|
# #
|
||||||
# **************************************************************************** #
|
# **************************************************************************** #
|
||||||
|
|
||||||
@ -22,15 +22,20 @@ django.setup()
|
|||||||
from .typeRequests.getPrivateListMessage import getPrivateListMessage
|
from .typeRequests.getPrivateListMessage import getPrivateListMessage
|
||||||
from .typeRequests.getPrivateListUser import getPrivateListUser
|
from .typeRequests.getPrivateListUser import getPrivateListUser
|
||||||
from .typeRequests.sendPrivateMessage import sendPrivateMessage
|
from .typeRequests.sendPrivateMessage import sendPrivateMessage
|
||||||
|
from .typeRequests.searchUser import searchUser
|
||||||
from .typeRequests.createAccount import createAccount
|
from .typeRequests.createAccount import createAccount
|
||||||
from .typeRequests.login import login
|
from .typeRequests.login import login
|
||||||
from .typeRequests.getAllListUser import getAllListUser
|
from .typeRequests.getAllListUser import getAllListUser
|
||||||
from .typeRequests.gameRequest import gameRequest
|
from .typeRequests.gameRequest import gameRequest
|
||||||
|
|
||||||
typeRequest = ["login", "get_private_list_user", "get_private_list_message",
|
typeRequest = ["login", "get_private_list_user", "get_private_list_message",
|
||||||
"send_private_message", "create_account", "get_all_list_user", "game"]
|
"send_private_message", "create_account", "get_all_list_user", "game",
|
||||||
|
"search_user"
|
||||||
|
]
|
||||||
functionRequest = [login, getPrivateListUser, getPrivateListMessage,
|
functionRequest = [login, getPrivateListUser, getPrivateListMessage,
|
||||||
sendPrivateMessage, createAccount, getAllListUser, gameRequest]
|
sendPrivateMessage, createAccount, getAllListUser, gameRequest,
|
||||||
|
searchUser
|
||||||
|
]
|
||||||
|
|
||||||
from random import randint
|
from random import randint
|
||||||
|
|
||||||
|
@ -1,6 +1,55 @@
|
|||||||
INSERT INTO "server_user" ("username", "mail", "password", "id42", "pfp") VALUES
|
INSERT INTO "server_user" ("username", "mail", "password", "id42", "pfp", "mail_verified") VALUES
|
||||||
('tomoron', 'a@a.com', 'a5f1efc32bcc4dc53e471f9620b78ca9', NULL, '/static/img/default_pfp.jpg'),
|
('tomoron', 'a@a.com', 'a5f1efc32bcc4dc53e471f9620b78ca9', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
('patate', 'b@b.com', '5e547979d3f20f43c87e5e0e8406f267', NULL, '/static/img/default_pfp.jpg');
|
('patate', 'b@b.com', '5e547979d3f20f43c87e5e0e8406f267', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('skywalker42', 'skywalker42@domain.com', 'e3a57c2a6bfa5a6434de0d9d51f6f41a', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('lunarwhale', 'lunarwhale@domain.com', 'b8c6a95718d5c7b5e6d34b9b241d917e', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('pixelwizard', 'pixelwizard@domain.com', 'f9e8a7d6c4d3b2f1a1e9d7c8a5f6b7e9', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('thunderhawk', 'thunderhawk@domain.com', 'd1a5e3f7b9c6d4a8e7f2b5c3d1e9f7b6', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('cosmicfox', 'cosmicfox@domain.com', 'e6b5d7a8c4d1f7e3b2a9c6d5f7e4a2b3', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('solartitan', 'solartitan@domain.com', 'b2e8d7f9c6a3d5e7f4b9c6d8e5a7b3f4', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('nebularaven', 'nebularaven@domain.com', 'f3e8d7a6b9d5c4a8e2b7c6f1d9e7a8b4', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('vortexwolf', 'vortexwolf@domain.com', 'a7b9f3d2e6c5b4f1a8e7c9d6b5f3a8e1', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('starlight', 'starlight@domain.com', 'd6f8b2a7e3c9f5a4b1d7e6a9c3b4f1a5', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('phantomowl', 'phantomowl@domain.com', 'c9e7b5d6f8a3d4b7c6e1a9f3b7c5e6a2', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('galacticlion', 'galacticlion@domain.com', 'e2d8b7f9a6c5d3f4b1a7d6e5c9b2a8f4', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('cyberfalcon', 'cyberfalcon@domain.com', 'a9b6f4e2c7d5b3f8a1c6e7d9f2b5a4e3', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('silverdragon', 'silverdragon@domain.com', 'f8c6a7d3e9b5c2d1a7b9f3e6d4b1c5a8', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('shadowtiger', 'shadowtiger@domain.com', 'd3e8f7b6a5c4d2b1a9e7b5c3f8d9a4e6', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('redphoenix', 'redphoenix@domain.com', 'b6c9d3e7f8a5b4d2c1e9a7f3d5b6c8e1', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('stormfalcon', 'stormfalcon@domain.com', 'f1a8d9b5c6e7a2d3b9e6c5a8d4f7b2e3', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('frostfang', 'frostfang@domain.com', 'e7c9a6d4b5f3e2a1d9c7f8a6b4d3e5f7', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('celestialwolf', 'celestialwolf@domain.com', 'a5f3d7b9e8c6d2a7f4b9c3e5d7a1b4f9', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('ironhawk', 'ironhawk@domain.com', 'd9f8b6e7a3d5c4f2b1e7d6a9b5c3e9f2', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('obsidianraven', 'obsidianraven@domain.com', 'f6b9d4c8a7e2b3d5f1a8c7d9e5b2f6a3', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('emberfox', 'emberfox@domain.com', 'b1d9f7c8a5e6b3c7d4f1a9e3b6f5c8a7', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('blackstorm', 'blackstorm@domain.com', 'e5f7a9d3c8b4f1d2a6c9e7b5f3d4b9a1', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('quicksilver', 'quicksilver@domain.com', 'f3d6e9b7a5c4d2e7b1a9f8c3d5b6a9e4', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('auroraflame', 'auroraflame@domain.com', 'c6a9e5f7b3d4c8e9f1b7d2a5f3c9a7d6', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('crimsonblade', 'crimsonblade@domain.com', 'b8f3a6d5e7c9b4d2a7f9c6e3d4a1b7e5', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('silentshadow', 'silentshadow@domain.com', 'e9a5b6d3f8c7d4b1a6c9f7e5b2d8f3a1', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('wildfang', 'wildfang@domain.com', 'f4d8b7e6a9c5d2b3e7a6f9c8b3d4e1f7', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('venomtiger', 'venomtiger@domain.com', 'a6c9d8e7f3b5a4c2d1f9e6b3a7f5c4d8', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('nightwolf', 'nightwolf@domain.com', 'd7e9f4b8a6c3d1f2b5a9e7c6d3f8a5b4', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('silverfalcon', 'silverfalcon@domain.com', 'b9d8a7f6c3d4e2a5f7b1e9c6d5a8b3f2', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('starfall', 'starfall@domain.com', 'e4b7a9d5f3c6e8a2b9c5d7f4b1a3f6e9', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('thunderblade', 'thunderblade@domain.com', 'c7d9f8b5e3a1d4f6b2a9c6d7f3e5b4a8', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('novafox', 'novafox@domain.com', 'd5e3a9f7c4b1d6e8a7f2c9b3e5d8f4a6', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('ragingraven', 'ragingraven@domain.com', 'b9c7e5a8d6f4b2a3e7d9f1c6b4a9f3d2', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('obsidianwolf', 'obsidianwolf@domain.com', 'f7a9d3c6e8b5d4f1a9e7c3b2d5f8a4c9', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('crystalphoenix', 'crystalphoenix@domain.com', 'e5d7f4b9a6c8e3b1d9f5a3c7b6e8a2d1', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('shadowfang', 'shadowfang@domain.com', 'b8f7a6e5d9c3b1d4a7e9c6b5d3f8a1f4', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('stormrider', 'stormrider@domain.com', 'd1e9f7b5c4a3f6d8b9c7a5f2e4b8d3c9', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('lunarfalcon', 'lunarfalcon@domain.com', 'c6f8b7a9d3e2f5b1a7e9c4d5f3b6a8d4', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('ironraven', 'ironraven@domain.com', 'e7a9f8d5c4b1e3f6a7b9c2d3f5e8a1c4', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('volcaniclion', 'volcaniclion@domain.com', 'b5d9e8f7c3a1d6b2f7e9c4a3b5d2f8a6', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('blazewolf', 'blazewolf@domain.com', 'f3b8e7a9d5c4f1b9d6a7e5c3b9f4d8a1', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('phantomfox', 'phantomfox@domain.com', 'a7e9c6f8b5d2f3a9e4c1d7b3f6a8b9d4', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('emberlion', 'emberlion@domain.com', 'd4b9e7a6c3f8d5e9a7f2c1b6d3f5a9b2', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('frostwolf', 'frostwolf@domain.com', 'e6f9b8c7d4a5f3e2b7c9a3d1f4b5e9d6', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('tigerblade', 'tigerblade@domain.com', 'b7d3e8f4a6c9d1b5a9f2e7c3d6f5b8a2', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('midnightwolf', 'midnightwolf@domain.com', 'a5f8e7b9d6c4b3e2a9f1d7c5b3f6a8d9', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('radiantfalcon', 'radiantfalcon@domain.com', 'f3d7e9b6c8a5b4f1d9e7a3c2b5f6d8a9', NULL, '/static/img/default_pfp.jpg', True),
|
||||||
|
('shadowlion', 'shadowlion@domain.com', 'e9a3f6b7c8d5e4b1a7d9c3f5b6e8a9d2', NULL, '/static/img/default_pfp.jpg', True);
|
||||||
|
|
||||||
INSERT INTO "server_message" ("date", "sender_id", "to_id", "content") VALUES
|
INSERT INTO "server_message" ("date", "sender_id", "to_id", "content") VALUES
|
||||||
('2024-08-25 18:10:54.27476+00', 1, 2, 'coucou'),
|
('2024-08-25 18:10:54.27476+00', 1, 2, 'coucou'),
|
||||||
|
@ -3,15 +3,16 @@
|
|||||||
/* ::: :::::::: */
|
/* ::: :::::::: */
|
||||||
/* main.js :+: :+: :+: */
|
/* main.js :+: :+: :+: */
|
||||||
/* +:+ +:+ +:+ */
|
/* +:+ +:+ +:+ */
|
||||||
/* By: marvin <marvin@student.42.fr> +#+ +:+ +#+ */
|
/* By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/08/22 17:08:46 by madegryc #+# #+# */
|
/* Created: 2024/08/22 17:08:46 by madegryc #+# #+# */
|
||||||
/* Updated: 2024/09/18 01:48:32 by marvin ### ########.fr */
|
/* Updated: 2024/09/18 09:16:58 by edbernar ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
import { userMeInfo, waitForLogin } from '/static/javascript/typeResponse/typeLogin.js';
|
import { userMeInfo, waitForLogin } from '/static/javascript/typeResponse/typeLogin.js';
|
||||||
import { barSelecter, goalSelecter } from '/static/javascript/lobbyPage/3d.js';
|
import { barSelecter, goalSelecter } from '/static/javascript/lobbyPage/3d.js';
|
||||||
|
import { sendRequest } from "/static/javascript/websocket.js";
|
||||||
import { pageRenderer } from '/static/javascript/main.js'
|
import { pageRenderer } from '/static/javascript/main.js'
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -26,6 +27,7 @@ let listSelectCard = null;
|
|||||||
let gameMode = 0;
|
let gameMode = 0;
|
||||||
let barSelector = null;
|
let barSelector = null;
|
||||||
let goalSelector = null;
|
let goalSelector = null;
|
||||||
|
let timeout = null;
|
||||||
|
|
||||||
class LobbyPage
|
class LobbyPage
|
||||||
{
|
{
|
||||||
@ -34,16 +36,20 @@ class LobbyPage
|
|||||||
const startButton = document.getElementsByClassName('buttonStartGame')[0];
|
const startButton = document.getElementsByClassName('buttonStartGame')[0];
|
||||||
const usernameP = document.getElementById('loginButton').getElementsByTagName('p')[0];
|
const usernameP = document.getElementById('loginButton').getElementsByTagName('p')[0];
|
||||||
const loginButton = document.getElementById('loginButton');
|
const loginButton = document.getElementById('loginButton');
|
||||||
|
const inputUser = document.getElementById('searchInputUser');
|
||||||
|
|
||||||
if (userMeInfo.id == -1)
|
if (userMeInfo.id == -1)
|
||||||
waitForLogin().then(() => usernameP.innerHTML = userMeInfo.username);
|
waitForLogin().then(() => usernameP.innerHTML = userMeInfo.username);
|
||||||
else
|
else
|
||||||
usernameP.innerHTML = userMeInfo.username;
|
usernameP.innerHTML = userMeInfo.username;
|
||||||
|
inputUser.addEventListener('input', searchUser);
|
||||||
loginButton.addEventListener('click', showMenu);
|
loginButton.addEventListener('click', showMenu);
|
||||||
window.addEventListener('resize', movePopMenuLoginButton);
|
window.addEventListener('resize', movePopMenuLoginButton);
|
||||||
|
window.addEventListener('resize', ajustSearchUserList);
|
||||||
movePopMenuLoginButton();
|
movePopMenuLoginButton();
|
||||||
initButtonPopMenuLogin();
|
initButtonPopMenuLogin();
|
||||||
|
|
||||||
|
window.addEventListener('click', closePopUpWhenClickOutsite);
|
||||||
listSelectCard = document.getElementsByClassName('select-card');
|
listSelectCard = document.getElementsByClassName('select-card');
|
||||||
document.getElementsByClassName('game-mode')[0].addEventListener('click', showGameMode);
|
document.getElementsByClassName('game-mode')[0].addEventListener('click', showGameMode);
|
||||||
document.getElementById('closePopupBtn').addEventListener('click', hideGameMode);
|
document.getElementById('closePopupBtn').addEventListener('click', hideGameMode);
|
||||||
@ -66,10 +72,12 @@ class LobbyPage
|
|||||||
{
|
{
|
||||||
const startButton = document.getElementsByClassName('buttonStartGame')[0];
|
const startButton = document.getElementsByClassName('buttonStartGame')[0];
|
||||||
|
|
||||||
|
window.removeEventListener('click', closePopUpWhenClickOutsite);
|
||||||
window.removeEventListener('resize', movePopMenuLoginButton);
|
window.removeEventListener('resize', movePopMenuLoginButton);
|
||||||
startButton.removeEventListener('click', startMode);
|
startButton.removeEventListener('click', startMode);
|
||||||
document.getElementsByClassName('game-mode')[0].removeEventListener('click', showGameMode);
|
document.getElementsByClassName('game-mode')[0].removeEventListener('click', showGameMode);
|
||||||
document.getElementById('closePopupBtn').removeEventListener('click', hideGameMode);
|
document.getElementById('closePopupBtn').removeEventListener('click', hideGameMode);
|
||||||
|
window.removeEventListener('resize', ajustSearchUserList);
|
||||||
window.removeEventListener('click', closeClickOutsiteGameMode);
|
window.removeEventListener('click', closeClickOutsiteGameMode);
|
||||||
listSelectCard[0].removeEventListener('click', selectGameModeOne);
|
listSelectCard[0].removeEventListener('click', selectGameModeOne);
|
||||||
listSelectCard[1].removeEventListener('click', selectGameModeTwo);
|
listSelectCard[1].removeEventListener('click', selectGameModeTwo);
|
||||||
@ -84,6 +92,33 @@ class LobbyPage
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function searchUser(event)
|
||||||
|
{
|
||||||
|
const searchResult = document.getElementById('searchResult');
|
||||||
|
|
||||||
|
if (timeout)
|
||||||
|
clearTimeout(timeout);
|
||||||
|
if (event.target.value == '')
|
||||||
|
searchResult.innerHTML = '';
|
||||||
|
else
|
||||||
|
{
|
||||||
|
timeout = setTimeout(() => {
|
||||||
|
sendRequest("search_user", {username: event.target.value});
|
||||||
|
}, 300);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function ajustSearchUserList()
|
||||||
|
{
|
||||||
|
const searchInputUser = document.getElementById('searchInputUser');
|
||||||
|
const pos = searchInputUser.getBoundingClientRect();
|
||||||
|
const searchResult = document.getElementById('searchResult');
|
||||||
|
|
||||||
|
searchResult.style.width = pos.width + 'px';
|
||||||
|
searchResult.style.top = pos.top + pos.height + 'px';
|
||||||
|
searchResult.style.left = pos.left + 'px';
|
||||||
|
}
|
||||||
|
|
||||||
function startMode()
|
function startMode()
|
||||||
{
|
{
|
||||||
if (gameMode == 0)
|
if (gameMode == 0)
|
||||||
@ -123,14 +158,11 @@ function showGameMode()
|
|||||||
document.getElementById('loginPopup').style.display = 'flex';
|
document.getElementById('loginPopup').style.display = 'flex';
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pour EDDY : Je l'ai fait fonctionné comme ça mais change le comme tu le veux,
|
function closePopUpWhenClickOutsite (event)
|
||||||
// La fonction sert a quitter la login popup si on clique en dehors de la zone. (Efface le commentaire quand tu fais les changements)
|
{
|
||||||
|
if (event.target == document.getElementById('loginPopup'))
|
||||||
window.addEventListener('click', function(event) {
|
|
||||||
if (event.target == document.getElementById('loginPopup')) {
|
|
||||||
document.getElementById('loginPopup').style.display = 'none';
|
document.getElementById('loginPopup').style.display = 'none';
|
||||||
}
|
};
|
||||||
});
|
|
||||||
|
|
||||||
function hideGameMode()
|
function hideGameMode()
|
||||||
{
|
{
|
||||||
|
@ -0,0 +1,52 @@
|
|||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* typeSearchUser.js :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2024/09/18 08:12:24 by edbernar #+# #+# */
|
||||||
|
/* Updated: 2024/09/18 09:19:40 by edbernar ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
import { LobbyPage } from "/static/javascript/lobbyPage/main.js";
|
||||||
|
import { pageRenderer } from '/static/javascript/main.js'
|
||||||
|
|
||||||
|
function typeSearchUser(userList)
|
||||||
|
{
|
||||||
|
const searchInputUser = document.getElementById('searchInputUser');
|
||||||
|
const searchResult = document.getElementById('searchResult');
|
||||||
|
let pos = null;
|
||||||
|
|
||||||
|
if (pageRenderer.actualPage !== LobbyPage)
|
||||||
|
return ;
|
||||||
|
document.body.addEventListener('click', removeAlluser)
|
||||||
|
pos = searchInputUser.getBoundingClientRect();
|
||||||
|
searchResult.style.width = pos.width + 'px';
|
||||||
|
searchResult.style.top = pos.top + pos.height + 'px';
|
||||||
|
searchResult.style.left = pos.left + 'px';
|
||||||
|
searchResult.innerHTML = '';
|
||||||
|
userList.forEach(user => {
|
||||||
|
const div = document.createElement('div');
|
||||||
|
|
||||||
|
div.setAttribute('class', 'searchResultLine');
|
||||||
|
div.innerHTML = '<p>' + user[0] + '</p>' + '<img src="' + user[2] + '">'
|
||||||
|
searchResult.appendChild(div);
|
||||||
|
div.addEventListener('click', () => {
|
||||||
|
console.log("Show profil " + user[0]);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeAlluser()
|
||||||
|
{
|
||||||
|
const searchInputUser = document.getElementById('searchInputUser');
|
||||||
|
const searchResult = document.getElementById('searchResult');
|
||||||
|
|
||||||
|
document.body.removeEventListener('click', removeAlluser);
|
||||||
|
searchResult.innerHTML = '';
|
||||||
|
searchInputUser.value = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
export { typeSearchUser };
|
@ -6,7 +6,7 @@
|
|||||||
/* By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ */
|
/* By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/07/31 22:17:24 by edbernar #+# #+# */
|
/* Created: 2024/07/31 22:17:24 by edbernar #+# #+# */
|
||||||
/* Updated: 2024/09/17 14:31:46 by edbernar ### ########.fr */
|
/* Updated: 2024/09/18 08:31:09 by edbernar ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -19,6 +19,7 @@ import { typePrivateListUser } from "/static/javascript/typeResponse/typePrivate
|
|||||||
import { typeCreateAccount } from "/static/javascript/typeResponse/typeCreateAccount.js";
|
import { typeCreateAccount } from "/static/javascript/typeResponse/typeCreateAccount.js";
|
||||||
import { typeAllListUser }from "/static/javascript/typeResponse/typeAllListUser.js";
|
import { typeAllListUser }from "/static/javascript/typeResponse/typeAllListUser.js";
|
||||||
import { createNotification as CN } from "/static/javascript/notification/main.js";
|
import { createNotification as CN } from "/static/javascript/notification/main.js";
|
||||||
|
import { typeSearchUser } from "/static/javascript/typeResponse/typeSearchUser.js";
|
||||||
import { typeLogin } from "/static/javascript/typeResponse/typeLogin.js";
|
import { typeLogin } from "/static/javascript/typeResponse/typeLogin.js";
|
||||||
import { typeGame } from "/static/javascript/typeResponse/typeGame.js"
|
import { typeGame } from "/static/javascript/typeResponse/typeGame.js"
|
||||||
|
|
||||||
@ -30,8 +31,8 @@ function launchSocket()
|
|||||||
{
|
{
|
||||||
socket = new WebSocket('/ws');
|
socket = new WebSocket('/ws');
|
||||||
|
|
||||||
const typeResponse = ["logged_in", "login", "private_list_user", "private_list_message", "new_private_message", "all_list_user", "create_account", "game"];
|
const typeResponse = ["logged_in", "login", "private_list_user", "private_list_message", "new_private_message", "all_list_user", "create_account", "game", "search_user"];
|
||||||
const functionResponse = [typeLogin, typeLogin, typePrivateListUser, typePrivateListMessage, typeNewPrivateMessage, typeAllListUser, typeCreateAccount, typeGame];
|
const functionResponse = [typeLogin, typeLogin, typePrivateListUser, typePrivateListMessage, typeNewPrivateMessage, typeAllListUser, typeCreateAccount, typeGame, typeSearchUser];
|
||||||
|
|
||||||
const errorCode = [9007, 9010, 9011];
|
const errorCode = [9007, 9010, 9011];
|
||||||
const errorFunction = [typeErrorInvalidPassword, typeErrorInvalidToken42, typeErrorUnknown42Account];
|
const errorFunction = [typeErrorInvalidPassword, typeErrorInvalidToken42, typeErrorUnknown42Account];
|
||||||
@ -82,6 +83,9 @@ function launchSocket()
|
|||||||
socket.onclose = () => {
|
socket.onclose = () => {
|
||||||
status = 0;
|
status = 0;
|
||||||
console.log('Disconnected');
|
console.log('Disconnected');
|
||||||
|
setTimeout(() => {
|
||||||
|
launchSocket();
|
||||||
|
}, 500);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -241,6 +241,7 @@ body {
|
|||||||
border: 2px solid #ccc;
|
border: 2px solid #ccc;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
outline: none;
|
outline: none;
|
||||||
|
min-width: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.search-input:focus {
|
.search-input:focus {
|
||||||
@ -325,3 +326,36 @@ body {
|
|||||||
color: white;
|
color: white;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#searchResult {
|
||||||
|
position: absolute;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
background-color: white;
|
||||||
|
color: black;
|
||||||
|
z-index: 999;
|
||||||
|
}
|
||||||
|
|
||||||
|
#searchResult .searchResultLine {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
width: 100%;
|
||||||
|
align-items: center;
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
#searchResult .searchResultLine p {
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#searchResult .searchResultLine:hover {
|
||||||
|
background-color: #f1f1f1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#searchResult .searchResultLine img {
|
||||||
|
width: 50px;
|
||||||
|
height: 50px;
|
||||||
|
padding: 5px;
|
||||||
|
}
|
Reference in New Issue
Block a user