ajout du swiper pour trier les lobby (pour linstant sur les membre odd/even
continuous-integration/drone/push Build is passing Details

pull/93/head
Pierre Ferreira 1 year ago
parent d6ddd7cd76
commit 6cc16a1448

@ -8,6 +8,8 @@ import Modal from 'react-bootstrap/Modal';
import Offcanvas from 'react-bootstrap/Offcanvas'; import Offcanvas from 'react-bootstrap/Offcanvas';
import Button from 'react-bootstrap/Button'; import Button from 'react-bootstrap/Button';
import { socket } from '../SocketConfig'; import { socket } from '../SocketConfig';
import Tooltip from 'react-bootstrap/esm/Tooltip';
import OverlayTrigger from 'react-bootstrap/esm/OverlayTrigger';
interface LobbyContainerProps { interface LobbyContainerProps {
roomNum : string roomNum : string
@ -46,18 +48,53 @@ const LobbyContainer: React.FC<LobbyContainerProps> = ({roomNum, HeadPlayer, nbP
} }
}; };
//* popup pour salle pleine
//@ts-ignore
const renderTooltipFull = (props) => (
<Tooltip id="button-tooltip" {...props}>
Salle Pleine !
</Tooltip>
);
//* popup pour partie déjà lancé
//@ts-ignore
const renderTooltipInGame = (props) => (
<Tooltip id="button-tooltip" {...props}>
En Jeu !
</Tooltip>
);
//let IsInGame = true;
let stylefull; let stylefull;
let colorfull; let colorfull;
let actualRender;
if (nbPlayer >= 6) { if (nbPlayer >= 6) {
stylefull = "darkred" stylefull = "darkred"
colorfull = "darkred" colorfull = "darkred"
actualRender = renderTooltipFull
} }
// else if (IsInGame){
// stylefull = "darkgreen"
// colorfull = "darkgreen"
// }
else { else {
stylefull = "whitesmoke" stylefull = "whitesmoke"
colorfull = "black" colorfull = "black"
actualRender = renderTooltipInGame
} }
return( return(
<OverlayTrigger
placement="top"
delay={{ show: 250, hide: 400 }}
overlay={actualRender}>
<div className='lobbyMainContainer' onClick={handleContainerClick} style={{borderColor:stylefull}}> <div className='lobbyMainContainer' onClick={handleContainerClick} style={{borderColor:stylefull}}>
<header style={{height:'20%', display:'flex', justifyContent:'end'}}> <header style={{height:'20%', display:'flex', justifyContent:'end'}}>
<h6><i>Room : {roomNum}</i></h6> <h6><i>Room : {roomNum}</i></h6>
@ -67,11 +104,6 @@ const LobbyContainer: React.FC<LobbyContainerProps> = ({roomNum, HeadPlayer, nbP
<div style={{display:'flex', justifyContent:'end', alignItems:'end'}}> <div style={{display:'flex', justifyContent:'end', alignItems:'end'}}>
<h2 style={{color:colorfull}}>{nbPlayer}/6</h2> <h2 style={{color:colorfull}}>{nbPlayer}/6</h2>
</div> </div>
{/*
<Button onClick={handleContainerClick} variant='danger'>
click
</Button> */}
<Modal show={show} onHide={handleClose}> <Modal show={show} onHide={handleClose}>
<Modal.Header closeButton> <Modal.Header closeButton>
<Modal.Title>Salle pleine</Modal.Title> <Modal.Title>Salle pleine</Modal.Title>
@ -83,8 +115,8 @@ const LobbyContainer: React.FC<LobbyContainerProps> = ({roomNum, HeadPlayer, nbP
</Button> </Button>
</Modal.Footer> </Modal.Footer>
</Modal> </Modal>
</div> </div>
</OverlayTrigger>
); );
} }

@ -18,6 +18,10 @@
cursor: pointer; cursor: pointer;
} }
.lobbyMainContainer:hover{
background-color: whitesmoke;
}
.lobbyList{ .lobbyList{
display: flex; display: flex;
/* justify-content: space-around; */ /* justify-content: space-around; */

@ -36,10 +36,16 @@ function Lobbies() {
const [searchTerm, setSearchTerm] = useState(''); const [searchTerm, setSearchTerm] = useState('');
const [showAvailable, setShowAvailable] = useState(true);
const filteredLobbies = lobbyData.filter((lobby) => const filteredLobbies = lobbyData.filter((lobby) =>
lobby.roomNum.toLowerCase().includes(searchTerm.toLowerCase()) || lobby.roomNum.toLowerCase().includes(searchTerm.toLowerCase()) ||
lobby.headPlayer.pseudo.toLowerCase().includes(searchTerm.toLowerCase()) lobby.headPlayer.pseudo.toLowerCase().includes(searchTerm.toLowerCase())
); );
const filteredLobbiesToShow = showAvailable
? filteredLobbies.filter((lobby) => lobby.nbPlayer%2 == 0)
: filteredLobbies;
const setFirstData = (first: boolean) => { const setFirstData = (first: boolean) => {
@ -75,8 +81,26 @@ function Lobbies() {
value={searchTerm} value={searchTerm}
onChange={(e) => setSearchTerm(e.target.value)} onChange={(e) => setSearchTerm(e.target.value)}
/> />
<label style={{ marginLeft: '10px' }}>
Afficher disponibles
<input
type="checkbox"
checked={showAvailable}
onChange={() => setShowAvailable(!showAvailable)}
/>
</label>
<div>
<button style={{borderColor:'whitesmoke', borderRadius:'15px 0px 0px 15px', padding:'5px'}}
onClick={() => setShowAvailable(false)}>Tous</button>
<button style={{borderColor:'whitesmoke', borderRadius:'0px 15px 15px 0px', padding:'5px'}}
onClick={() => setShowAvailable(true)}>Dispo</button>
</div>
<div className="lobbyList"> <div className="lobbyList">
{filteredLobbies.map((lobby, index) => ( {filteredLobbiesToShow.map((lobby, index) => (
<LobbyContainer <LobbyContainer
key={index} key={index}
roomNum={lobby.roomNum} roomNum={lobby.roomNum}

@ -41,6 +41,13 @@
margin: 20px; margin: 20px;
} }
.NumbDiv{
display: flex;
align-items: start;
justify-content: start;
margin: auto 20px;
}
.codeDiv{ .codeDiv{
display: flex; display: flex;
align-items: end; align-items: end;
@ -48,7 +55,7 @@
margin: auto 20px; margin: auto 20px;
} }
.codeDiv p{ .codeDiv p, .NumbDiv p{
font-style: italic; font-style: italic;
font-weight: bold; font-weight: bold;
color: gray; color: gray;

@ -201,6 +201,7 @@ function Lobby() {
<div className='lobby-container'> <div className='lobby-container'>
<div className='left-part'> <div className='left-part'>
<div className='player-board'> <div className='player-board'>
<div>
<div className='codeDiv' onClick={() => setCodeShowed(!codeShowed)}> <div className='codeDiv' onClick={() => setCodeShowed(!codeShowed)}>
{ {
codeShowed ? ( codeShowed ? (
@ -210,6 +211,16 @@ function Lobby() {
) )
} }
</div> </div>
<div className='NumbDiv'>
{players.length == 6 ? (
<p style={{color:'darkred'}}>6/6 Players</p>
) : (
<p>{players.length}/6 Players</p>
)
}
</div>
</div>
{/* //! voir pour la gestion avec un liste, utilisateur avec le "+ (vous)" et les pdp avec les lettres grecs (?)*/} {/* //! voir pour la gestion avec un liste, utilisateur avec le "+ (vous)" et les pdp avec les lettres grecs (?)*/}
{players.map((player, index) => ( {players.map((player, index) => (
// <PlayerItemList key={player.id} pdp={PersonImg} name={player.name} id={player.id}/> // <PlayerItemList key={player.id} pdp={PersonImg} name={player.name} id={player.id}/>
@ -230,28 +241,6 @@ function Lobby() {
<div className="lobby-vertical-divider" style={{backgroundColor: theme.colors.secondary}}></div> <div className="lobby-vertical-divider" style={{backgroundColor: theme.colors.secondary}}></div>
<div className='right-part'> <div className='right-part'>
{/* <div className='title-param-div'>
<img src={param} alt="param"/>
<h2>Paramètre de la partie</h2>
</div>
<ul>
<li><h4> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim</h4></li>
<li><h4>paramètre super important pour la partie</h4></li>
<li><h4>paramètre super important pour la partie</h4></li>
<li><h4>paramètre super important pour la partie</h4></li>
<li><h4>Niveau des bots : Facile </h4></li>
<li><h4>Thèmes : basique </h4></li> */}
{
//? mettre un timer pour chaques personne ?
//? indice avancé ? ==> négation, voisin du 2e degré etc.
}
{/* </ul> */}
{/* <center >
<button className='buttonNabImg' onClick={StartGame}>
<img src={cible} alt="Button Image" height="50" width="50" />
<p>{"la chasse !"}</p>
</button>
</center> */}
<div className='lobbyR' <div className='lobbyR'
style={{flexDirection:'column', style={{flexDirection:'column',
alignItems:'space-around'}}> alignItems:'space-around'}}>
@ -315,29 +304,6 @@ function Lobby() {
Démarrer la partie ! Démarrer la partie !
</button> </button>
</div> </div>
{/* <div className='centerDivH'>
<div>
<label htmlFor="numberInput">Séléctionner le nombre de noeud (entre 20 et 60) :</label>
<input
type="number"
id="numberInput"
value={enteredNumber}
onChange={handleNumberChange}
min={20}
max={60}/>
<p>La valeur saisie : {enteredNumber}</p>
</div>
<div className='centerDivH'>
<button className='button' onClick={StartGame}
style={{
backgroundColor: theme.colors.tertiary,
borderColor: theme.colors.secondary
}}>
<img src={cible} alt="cible" height="40"/>
</button>
</div> */}
</div> </div>
</div> </div>
); );

Loading…
Cancel
Save