diff --git a/cryptide_project/src/Components/LobbyContainer.tsx b/cryptide_project/src/Components/LobbyContainer.tsx index 4c4fe51..313bde6 100644 --- a/cryptide_project/src/Components/LobbyContainer.tsx +++ b/cryptide_project/src/Components/LobbyContainer.tsx @@ -8,83 +8,149 @@ import Modal from 'react-bootstrap/Modal'; import Offcanvas from 'react-bootstrap/Offcanvas'; import Button from 'react-bootstrap/Button'; import { socket } from '../SocketConfig'; +import Tooltip from 'react-bootstrap/esm/Tooltip'; +import OverlayTrigger from 'react-bootstrap/esm/OverlayTrigger'; interface LobbyContainerProps { roomNum : string HeadPlayer : Player nbPlayer : number setFirst: (first: boolean) => void + started : boolean //? mettre un "nbplayermax" si le nombre de joueur max peut etre fixé ? } -const LobbyContainer: React.FC = ({roomNum, HeadPlayer, nbPlayer, setFirst}) => { +const LobbyContainer: React.FC = ({roomNum, HeadPlayer, nbPlayer, setFirst, started}) => { const theme=useTheme(); const navigate = useNavigate(); const dest = '/lobby?room=' + roomNum; //* Modal - const [show, setShow] = useState(false); + const [showFull, setShowFull] = useState(false); + const [showStart, setShowStart] = useState(false); - const handleClose = () => setShow(false); - const handleShow = () => setShow(true); + const handleClose = () => { + setShowFull(false) + setShowStart(false) + }; + + const handleShowFull = () => setShowFull(true); + const handleShowStart = () => setShowStart(true); const handleContainerClick = () => { - if (show){ + if (showFull || showStart){ handleClose() } else{ - if (nbPlayer < 6) { + if (nbPlayer < 6 && !started) { socket.off("request lobbies") setFirst(true) navigate(dest); - } else { - handleShow() - //alert('La salle est pleine. Impossible de rejoindre.'); + } + else if(started){ + handleShowStart() + } + else { + handleShowFull() } } }; + + //* popup pour salle pleine + //@ts-ignore + const renderTooltipFull = (props) => ( + + Salle Pleine ! + + ); + + //* popup pour partie déjà lancé + //@ts-ignore + const renderTooltipInGame = (props) => ( + + En Jeu ! + + ); + + //* autre + //@ts-ignore + const renderTooltip = (props) => ( + + Rejoindre le lobby ! + + ); + + //let IsInGame = true; + let stylefull; let colorfull; + let actualRender = renderTooltip; + let bgcol = 'white'; + if (nbPlayer >= 6) { stylefull = "darkred" colorfull = "darkred" + actualRender = renderTooltipFull + } else { stylefull = "whitesmoke" colorfull = "black" } + + if(started){ + bgcol = 'lightgrey' //! le hover ne marche plus + actualRender = renderTooltipInGame + } + + return( -
-
-
Room : {roomNum}
-
-
-

{HeadPlayer.pseudo}

-
-

{nbPlayer}/6

-
-{/* - */} - - - - Salle pleine - - La salle est pleine, il est impossible d'y aller pour le moment ! - + + +
+
+
Room : {roomNum}
+
+
+

{HeadPlayer.pseudo}

+
+

{nbPlayer}/6

+
+ + {/* Modals */} + + + Salle pleine + + La salle est pleine, il est impossible d'y aller pour le moment ! + + + + + + + + La partie a déjà commencée + + La partie a déjà commencée, il est impossible d'y aller pour le moment ! + - - + +
+
); } diff --git a/cryptide_project/src/Pages/Lobbies.css b/cryptide_project/src/Pages/Lobbies.css index 2a69478..1da3c0f 100644 --- a/cryptide_project/src/Pages/Lobbies.css +++ b/cryptide_project/src/Pages/Lobbies.css @@ -18,6 +18,10 @@ cursor: pointer; } +.lobbyMainContainer:hover{ + background-color: whitesmoke; +} + .lobbyList{ display: flex; /* justify-content: space-around; */ diff --git a/cryptide_project/src/Pages/Lobbies.tsx b/cryptide_project/src/Pages/Lobbies.tsx index 1635e34..da6a2d5 100644 --- a/cryptide_project/src/Pages/Lobbies.tsx +++ b/cryptide_project/src/Pages/Lobbies.tsx @@ -39,10 +39,26 @@ function Lobbies() { const [searchTerm, setSearchTerm] = useState(''); + const [showAvailable, setShowAvailable] = useState(true); + + const handleShowAllClick = () => { + setShowAvailable(false); + }; + + const handleShowAvailableClick = () => { + setShowAvailable(true); + }; + + const filteredLobbies = lobbyData.filter((lobby) => - lobby.roomNum.toLowerCase().includes(searchTerm.toLowerCase()) || - lobby.headPlayer.pseudo.toLowerCase().includes(searchTerm.toLowerCase()) -); + lobby.roomNum.toLowerCase().includes(searchTerm.toLowerCase()) || + lobby.headPlayer.pseudo.toLowerCase().includes(searchTerm.toLowerCase()) + ); + + const filteredLobbiesToShow = showAvailable + ? filteredLobbies.filter((lobby) => lobby.started == false) + : filteredLobbies; + const setFirstData = (first: boolean) => { @@ -86,14 +102,52 @@ function Lobbies() { value={searchTerm} onChange={(e) => setSearchTerm(e.target.value)} /> + + {/*
+ + +
*/} + +
+ + +
+ +
- {filteredLobbies.map((lobby, index) => ( + {filteredLobbiesToShow.map((lobby, index) => ( ))}
diff --git a/cryptide_project/src/Pages/Lobby.css b/cryptide_project/src/Pages/Lobby.css index 5fbe13c..869e661 100644 --- a/cryptide_project/src/Pages/Lobby.css +++ b/cryptide_project/src/Pages/Lobby.css @@ -41,6 +41,13 @@ margin: 20px; } + +.NumbDiv{ + display: flex; + align-items: start; + justify-content: start; + margin: auto 20px; +} .codeDiv{ display: flex; align-items: end; @@ -48,7 +55,7 @@ margin: auto 20px; } -.codeDiv p{ +.codeDiv p, .NumbDiv p{ font-style: italic; font-weight: bold; color: gray; diff --git a/cryptide_project/src/Pages/Lobby.tsx b/cryptide_project/src/Pages/Lobby.tsx index 7083ec5..0787b91 100644 --- a/cryptide_project/src/Pages/Lobby.tsx +++ b/cryptide_project/src/Pages/Lobby.tsx @@ -254,15 +254,26 @@ function Lobby() {
-
setCodeShowed(!codeShowed)}> - { - codeShowed ? ( -

Room : {room}

- ) : ( -

Room : ******

- ) - } +
+
setCodeShowed(!codeShowed)}> + { + codeShowed ? ( +

Room : {room}

+ ) : ( +

Room : ******

+ ) + } +
+
+ {players.length == 6 ? ( +

6/6 Players

+ ) : ( +

{players.length}/6 Players

+ ) + } +
+ {/* //! voir pour la gestion avec un liste, utilisateur avec le "+ (vous)" et les pdp avec les lettres grecs (?)*/} {players.map((player, index) => ( // @@ -283,28 +294,6 @@ function Lobby() {
- {/*
- param -

Paramètre de la partie

-
-
    -
  • 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

  • -
  • paramètre super important pour la partie

  • -
  • paramètre super important pour la partie

  • -
  • paramètre super important pour la partie

  • -
  • Niveau des bots : Facile

  • -
  • Thèmes : basique

  • */} - { - //? mettre un timer pour chaques personne ? - //? indice avancé ? ==> négation, voisin du 2e degré etc. - } - {/*
*/} - {/*
- -
*/}
@@ -368,29 +357,6 @@ function Lobby() { Démarrer la partie !
- {/*
-
- - -

La valeur saisie : {enteredNumber}

-
- - -
- -
*/}
); diff --git a/cryptide_project/src/server/db/socialgraph.db b/cryptide_project/src/server/db/socialgraph.db index 70e1a19..481c484 100644 Binary files a/cryptide_project/src/server/db/socialgraph.db and b/cryptide_project/src/server/db/socialgraph.db differ