import "./Rooms.scss"; import { useState, useEffect } from "react"; import { createRoom, getRooms, deleteRoom } from "../../api"; import { Link } from "react-router-dom"; import LoaderSpace from "../../components/LoaderSpace/LoaderSpace"; import AddBtn from "./../../components/AddBtn/AddBtn"; import { useAuth } from "../../hooks"; import { useParams } from "react-router-dom"; import { getRoomsLength } from "../../api"; import StylizedBtn from "../../components/StylizedBtn/StylizedBtn"; export default function Rooms() { const { _user } = useAuth(); const [rooms, setRooms] = useState(null); const [isLoad, setIsLoad] = useState(true); const [isErr, setIsErr] = useState(false); const [displayRooms, setDisplayRooms] = useState(null); const { pageIndex } = useParams(); const [virtualIndex, setVirtualIndex] = useState(0); const [roomsLen, setRoomLen] = useState(null); const onClickCreate = () => { 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) => { setIsErr(false); const values = [...rooms]; values.push(res); setRooms(values); alert(`Creation de la piece ${name} reussite !`); }); }; const configureRooms = (data) => { const splicer = (rms, datasPerPage) => { const partitions = []; let index = 0; while (index < rms.length) { partitions.push(rms.slice(index, index + datasPerPage)); index += datasPerPage; } return partitions; }; const newData = splicer(data, 8); const blabla = newData[pageIndex ? pageIndex : 0]; if (pageIndex) { setVirtualIndex(parseInt(pageIndex, 10)); } setRooms(newData); console.log(newData[pageIndex ? pageIndex : 0]); setDisplayRooms(newData[pageIndex ? pageIndex : 0]); if (!blabla) { window.location.href = "/rooms/0"; setVirtualIndex(0); } }; const handleBefore = () => { if (virtualIndex === 0) { return; } const index = virtualIndex - 1; console.log(rooms[index]); setDisplayRooms(rooms[index]); setVirtualIndex(index); }; const handleNext = () => { if (virtualIndex >= rooms.length - 1) { return; } const index = virtualIndex + 1; console.log(rooms[index]); setDisplayRooms(rooms[index]); setVirtualIndex(index); }; const onClickDelete = (id, name) => { const confirmation = prompt( `Etes-vous sur de vouloir supprimer ${name} ? (oui ou non)`, "oui", ); if (!confirmation || confirmation.toLocaleLowerCase() !== "oui") return; deleteRoom(id).then((res) => { const values = rooms.map((subRooms) => { return subRooms.filter((e) => { return e._id !== id; }); }); setRooms(values); setDisplayRooms(values[virtualIndex]); console.log(res); setRoomLen(roomsLen - 1); alert(`Vous venez de supprimer la piece ${name}`); }); }; useEffect(() => { document.title = `Pieces`; getRoomsLength().then((res) => { setRoomLen(res); }); getRooms().then((res) => { if (res.length === 0) { setIsLoad(false); setIsErr(true); } setRooms(res); configureRooms(res); }); }, []); return (