$
This commit is contained in:
parent
5bd7ac1951
commit
9139868678
@ -2,14 +2,10 @@ import { useAuth } from "../../hooks";
|
|||||||
import "./NavBar.scss";
|
import "./NavBar.scss";
|
||||||
import { logout } from "../../api";
|
import { logout } from "../../api";
|
||||||
import { Link } from "react-router-dom/";
|
import { Link } from "react-router-dom/";
|
||||||
import { getRoomsLength } from "../../api";
|
|
||||||
import { useEffect } from "react";
|
|
||||||
import { useState } from "react";
|
|
||||||
import refresh from "../../services/pageManagement";
|
import refresh from "../../services/pageManagement";
|
||||||
|
|
||||||
export default function NavBar() {
|
export default function NavBar() {
|
||||||
const { user } = useAuth();
|
const { user } = useAuth();
|
||||||
const [roomsLength, setRoomsLength] = useState(null);
|
|
||||||
|
|
||||||
const onLogout = () => {
|
const onLogout = () => {
|
||||||
logout().then((res) => {
|
logout().then((res) => {
|
||||||
@ -19,43 +15,25 @@ export default function NavBar() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const refreshAllDatas = async () => {
|
|
||||||
const roomsLen = await getRoomsLength();
|
|
||||||
if (!roomsLen) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
setRoomsLength(roomsLen);
|
|
||||||
};
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
refreshAllDatas();
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<nav id="nav-container">
|
<nav id="nav-container">
|
||||||
<ul id="leafs-container">
|
<ul id="leafs-container">
|
||||||
{user && (
|
{user && (
|
||||||
<li className="leaf">
|
<li className="leaf">
|
||||||
<Link onClick={refreshAllDatas} to="/">
|
<Link to="/">Accueil</Link>
|
||||||
Accueil
|
|
||||||
</Link>
|
|
||||||
</li>
|
</li>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{user && (
|
{user && (
|
||||||
<li className="leaf">
|
<li className="leaf">
|
||||||
<Link onClick={refreshAllDatas} to="rooms">
|
<Link to="rooms">Pieces</Link>
|
||||||
Pieces {roomsLength ? `(${roomsLength})` : "(██)"}
|
|
||||||
</Link>
|
|
||||||
</li>
|
</li>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{user ? (
|
{user ? (
|
||||||
<div className="leaf-into">
|
<div className="leaf-into">
|
||||||
<li className="leaf">
|
<li className="leaf">
|
||||||
<Link onClick={refreshAllDatas} to="profile">
|
<Link to="profile">Profil</Link>
|
||||||
Profil
|
|
||||||
</Link>
|
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<button className="leaf-btn" onClick={onLogout}>
|
<button className="leaf-btn" onClick={onLogout}>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#layout-container {
|
#layout-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 30px;
|
||||||
}
|
}
|
||||||
|
@ -35,13 +35,13 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
margin-top: 20px;
|
|
||||||
max-height: 500px;
|
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
.rooms {
|
.rooms {
|
||||||
border: 1px dashed $good_black;
|
width: 50%;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
|
border: 1px dashed $good_black;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,9 +131,9 @@ export default function Profile() {
|
|||||||
return (
|
return (
|
||||||
<div id="profile-container">
|
<div id="profile-container">
|
||||||
<div id="title-container">
|
<div id="title-container">
|
||||||
<span id="title">
|
<h3 id="title">
|
||||||
Heureux de vous voir <b>{user.user.username}</b> !
|
Heureux de vous voir <b>{user.user.username}</b> !
|
||||||
</span>
|
</h3>
|
||||||
|
|
||||||
<StylizedBtn
|
<StylizedBtn
|
||||||
perso_style={{
|
perso_style={{
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 20px;
|
gap: 20px;
|
||||||
margin-top: 15px;
|
margin-top: 30px;
|
||||||
|
|
||||||
#title-container {
|
#title-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -121,9 +121,9 @@ export default function Room() {
|
|||||||
<div id="room-container">
|
<div id="room-container">
|
||||||
{data.name ? (
|
{data.name ? (
|
||||||
<div id="room-title-container">
|
<div id="room-title-container">
|
||||||
<span id="room-title">
|
<h3 id="room-title">
|
||||||
<u>{data.name}</u>
|
<u>{data.name}</u>
|
||||||
</span>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import LoaderSpace from "../../components/LoaderSpace/LoaderSpace";
|
|||||||
import AddBtn from "./../../components/AddBtn/AddBtn";
|
import AddBtn from "./../../components/AddBtn/AddBtn";
|
||||||
import { useAuth } from "../../hooks";
|
import { useAuth } from "../../hooks";
|
||||||
import { useParams } from "react-router-dom";
|
import { useParams } from "react-router-dom";
|
||||||
|
import { getRoomsLength } from "../../api";
|
||||||
import StylizedBtn from "../../components/StylizedBtn/StylizedBtn";
|
import StylizedBtn from "../../components/StylizedBtn/StylizedBtn";
|
||||||
|
|
||||||
export default function Rooms() {
|
export default function Rooms() {
|
||||||
@ -16,15 +17,22 @@ export default function Rooms() {
|
|||||||
const [displayRooms, setDisplayRooms] = useState(null);
|
const [displayRooms, setDisplayRooms] = useState(null);
|
||||||
const { pageIndex } = useParams();
|
const { pageIndex } = useParams();
|
||||||
const [virtualIndex, setVirtualIndex] = useState(0);
|
const [virtualIndex, setVirtualIndex] = useState(0);
|
||||||
|
const [roomsLen, setRoomLen] = useState(null);
|
||||||
|
|
||||||
const onClickCreate = () => {
|
const onClickCreate = () => {
|
||||||
const name = prompt("Nom de la piece ?");
|
const name = prompt("Nom de la piece ?");
|
||||||
|
|
||||||
|
if (!name || name.length > 15) {
|
||||||
|
alert("Assurez-vous que le nombre de characteres est inferieur a 15");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
createRoom(name).then((res) => {
|
createRoom(name).then((res) => {
|
||||||
setIsErr(false);
|
setIsErr(false);
|
||||||
const values = [...rooms];
|
const values = [...rooms];
|
||||||
values.push(res);
|
values.push(res);
|
||||||
setRooms(values);
|
setRooms(values);
|
||||||
|
alert(`Creation de la piece ${name} reussite !`);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -90,14 +98,29 @@ export default function Rooms() {
|
|||||||
if (!confirmation || confirmation.toLocaleLowerCase() !== "oui") return;
|
if (!confirmation || confirmation.toLocaleLowerCase() !== "oui") return;
|
||||||
|
|
||||||
deleteRoom(id).then((res) => {
|
deleteRoom(id).then((res) => {
|
||||||
const values = rooms.filter((e) => e._id !== id);
|
const values = rooms.map((subRooms) => {
|
||||||
|
return subRooms.filter((e) => {
|
||||||
|
return e._id !== id;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
setRooms(values);
|
setRooms(values);
|
||||||
|
setDisplayRooms(values[virtualIndex]);
|
||||||
|
console.log(res);
|
||||||
|
|
||||||
|
setRoomLen(roomsLen - 1);
|
||||||
|
|
||||||
|
alert(`Vous venez de supprimer la piece ${name}`);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
document.title = `Pieces`;
|
document.title = `Pieces`;
|
||||||
|
|
||||||
|
getRoomsLength().then((res) => {
|
||||||
|
setRoomLen(res);
|
||||||
|
});
|
||||||
|
|
||||||
getRooms().then((res) => {
|
getRooms().then((res) => {
|
||||||
if (res.length === 0) {
|
if (res.length === 0) {
|
||||||
setIsLoad(false);
|
setIsLoad(false);
|
||||||
@ -111,6 +134,14 @@ export default function Rooms() {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div id="rooms-container">
|
<div id="rooms-container">
|
||||||
|
<div id="rooms-headers">
|
||||||
|
<h3 id="rooms-title">
|
||||||
|
Voici vos{" "}
|
||||||
|
{roomsLen ? roomsLen : <span id="rooms-title-loading">██</span>}{" "}
|
||||||
|
pieces
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
|
||||||
{displayRooms ? (
|
{displayRooms ? (
|
||||||
<div id="rooms-list-container">
|
<div id="rooms-list-container">
|
||||||
{displayRooms.map((i, j) => (
|
{displayRooms.map((i, j) => (
|
||||||
@ -126,10 +157,7 @@ export default function Rooms() {
|
|||||||
|
|
||||||
<div className="room-id-container">
|
<div className="room-id-container">
|
||||||
<span className="label-id">ID</span>
|
<span className="label-id">ID</span>
|
||||||
<span className="room-id">
|
<span className="room-id">{i._id.slice(0, 6)}...</span>
|
||||||
{i._id.slice(0, 5)}
|
|
||||||
...
|
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="room-name-container">
|
<div className="room-name-container">
|
||||||
|
@ -5,8 +5,19 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
gap: 30px;
|
gap: 30px;
|
||||||
|
|
||||||
|
#rooms-headers {
|
||||||
|
margin-top: 30px;
|
||||||
|
#rooms-title {
|
||||||
|
#rooms-title-loading {
|
||||||
|
color: $primary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#pagination-container {
|
#pagination-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
@ -53,6 +64,7 @@
|
|||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
gap: 50px;
|
gap: 50px;
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
|
width: 50%;
|
||||||
|
|
||||||
.room {
|
.room {
|
||||||
width: 200px;
|
width: 200px;
|
||||||
|
@ -8,6 +8,7 @@ import { Home, Login, Register } from "./pages";
|
|||||||
export const Router = () => (
|
export const Router = () => (
|
||||||
<Routes>
|
<Routes>
|
||||||
<Route index element={<Home />} />
|
<Route index element={<Home />} />
|
||||||
|
<Route path="*" element={<Home />}></Route>
|
||||||
<Route path="home" element={<Home />} />
|
<Route path="home" element={<Home />} />
|
||||||
<Route path="stats" element={<Home />} />
|
<Route path="stats" element={<Home />} />
|
||||||
<Route path="login" element={<Login />} />
|
<Route path="login" element={<Login />} />
|
||||||
|
Loading…
Reference in New Issue
Block a user