Ajout boite dialog

This commit is contained in:
NouhailaAater 2025-02-20 02:17:24 -05:00
parent b42cbb3647
commit 29924a6786

View file

@ -1,4 +1,3 @@
// ManageRoom.tsx
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { useNavigate, useParams } from 'react-router-dom'; import { useNavigate, useParams } from 'react-router-dom';
import { Socket } from 'socket.io-client'; import { Socket } from 'socket.io-client';
@ -9,13 +8,11 @@ import {
isHighLowNumericalAnswer isHighLowNumericalAnswer
} from 'gift-pegjs/typeGuards'; } from 'gift-pegjs/typeGuards';
import LiveResultsComponent from 'src/components/LiveResults/LiveResults'; import LiveResultsComponent from 'src/components/LiveResults/LiveResults';
// import { QuestionService } from '../../../services/QuestionService';
import webSocketService, { import webSocketService, {
AnswerReceptionFromBackendType AnswerReceptionFromBackendType
} from '../../../services/WebsocketService'; } from '../../../services/WebsocketService';
import { QuizType } from '../../../Types/QuizType'; import { QuizType } from '../../../Types/QuizType';
import GroupIcon from '@mui/icons-material/Group'; import GroupIcon from '@mui/icons-material/Group';
import './manageRoom.css'; import './manageRoom.css';
import { ENV_VARIABLES } from 'src/constants'; import { ENV_VARIABLES } from 'src/constants';
import { StudentType, Answer } from '../../../Types/StudentType'; import { StudentType, Answer } from '../../../Types/StudentType';
@ -23,12 +20,12 @@ import LoadingCircle from 'src/components/LoadingCircle/LoadingCircle';
import { Refresh, Error } from '@mui/icons-material'; import { Refresh, Error } from '@mui/icons-material';
import StudentWaitPage from 'src/components/StudentWaitPage/StudentWaitPage'; import StudentWaitPage from 'src/components/StudentWaitPage/StudentWaitPage';
import DisconnectButton from 'src/components/DisconnectButton/DisconnectButton'; import DisconnectButton from 'src/components/DisconnectButton/DisconnectButton';
//import QuestionNavigation from 'src/components/QuestionNavigation/QuestionNavigation';
import QuestionDisplay from 'src/components/QuestionsDisplay/QuestionDisplay'; import QuestionDisplay from 'src/components/QuestionsDisplay/QuestionDisplay';
import ApiService from '../../../services/ApiService'; import ApiService from '../../../services/ApiService';
import { QuestionType } from 'src/Types/QuestionType'; import { QuestionType } from 'src/Types/QuestionType';
import { RoomType } from 'src/Types/RoomType'; import { RoomType } from 'src/Types/RoomType';
import { Button, Tooltip, NativeSelect } from '@mui/material'; import { Button, NativeSelect } from '@mui/material';
import { Dialog, DialogActions, DialogContent, DialogTitle, TextField } from '@mui/material';
const ManageRoom: React.FC = () => { const ManageRoom: React.FC = () => {
const navigate = useNavigate(); const navigate = useNavigate();
@ -44,6 +41,8 @@ const ManageRoom: React.FC = () => {
const [quizStarted, setQuizStarted] = useState(false); const [quizStarted, setQuizStarted] = useState(false);
const [rooms, setRooms] = useState<RoomType[]>([]); const [rooms, setRooms] = useState<RoomType[]>([]);
const [selectedRoomId, setSelectedRoomId] = useState<string>(''); const [selectedRoomId, setSelectedRoomId] = useState<string>('');
const [openDialog, setOpenDialog] = useState(false);
const [newRoomTitle, setNewRoomTitle] = useState('');
useEffect(() => { useEffect(() => {
const fetchData = async () => { const fetchData = async () => {
@ -65,24 +64,30 @@ const ManageRoom: React.FC = () => {
}; };
useEffect(() => { useEffect(() => {
// Mettre à jour roomName quand une salle est sélectionnée
if (selectedRoomId && rooms.length > 0) { if (selectedRoomId && rooms.length > 0) {
const selectedRoom = rooms.find((room) => room._id === selectedRoomId); const selectedRoom = rooms.find((room) => room._id === selectedRoomId);
setRoomName(selectedRoom ? selectedRoom.title : ''); setRoomName(selectedRoom ? selectedRoom.title : '');
} else { } else {
setRoomName(''); // Réinitialiser si aucune salle sélectionnée setRoomName('');
} }
}, [selectedRoomId, rooms]); // Déclenché quand la sélection ou la liste change }, [selectedRoomId, rooms]);
const handleDialogClose = () => {
setOpenDialog(false);
};
const handleCreateRoom = async () => { const handleCreateRoom = async () => {
setOpenDialog(true);
};
const handleSubmitRoom = async () => {
try { try {
const roomTitle = prompt('Veuillez saisir le titre de la nouvelle salle'); if (newRoomTitle) {
if (roomTitle) { await ApiService.createRoom(newRoomTitle);
await ApiService.createRoom(roomTitle);
const userRooms = await ApiService.getUserRooms(); const userRooms = await ApiService.getUserRooms();
setRooms(userRooms as RoomType[]); setRooms(userRooms as RoomType[]);
const newlyCreatedRoom = userRooms[userRooms.length - 1] as RoomType; const newlyCreatedRoom = userRooms[userRooms.length - 1] as RoomType;
setSelectedRoomId(newlyCreatedRoom._id); setSelectedRoomId(newlyCreatedRoom._id);
setOpenDialog(false);
} }
} catch (error) { } catch (error) {
console.error('Error creating Room:', error); console.error('Error creating Room:', error);
@ -472,7 +477,6 @@ const ManageRoom: React.FC = () => {
<div className="dumb"></div> <div className="dumb"></div>
</div> </div>
{/* bloc Room */}
<div className="room"> <div className="room">
<div className="select"> <div className="select">
<NativeSelect <NativeSelect
@ -492,22 +496,44 @@ const ManageRoom: React.FC = () => {
</div> </div>
<div className="actions" style={{ display: 'flex', justifyContent: 'flex-end' }}> <div className="actions" style={{ display: 'flex', justifyContent: 'flex-end' }}>
<Tooltip title="Ajouter une nouvelle salle" placement="top"> <Button
<Button variant="contained"
variant="contained" color="primary"
color="primary" onClick={handleCreateRoom}
onClick={handleCreateRoom} style={{
style={{ width: 'auto',
width: 'auto', marginLeft: '30px',
marginLeft: '30px', height: '40px',
height: '40px', padding: '0 20px'
padding: '0 20px' }}
}} >
> Ajouter une nouvelle salle
Ajouter une nouvelle salle </Button>
</Button>
</Tooltip>
</div> </div>
{/* Dialog pour créer une salle */}
<Dialog open={openDialog} onClose={handleDialogClose} maxWidth="sm" fullWidth>
<DialogTitle>Créer une nouvelle salle</DialogTitle>
<DialogContent>
<TextField
autoFocus
margin="dense"
label="Titre de la salle"
type="text"
fullWidth
value={newRoomTitle}
onChange={(e) => setNewRoomTitle(e.target.value)}
/>
</DialogContent>
<DialogActions>
<Button onClick={handleDialogClose} color="secondary">
Annuler
</Button>
<Button onClick={handleSubmitRoom} color="primary">
Créer
</Button>
</DialogActions>
</Dialog>
</div> </div>
{/* the following breaks the css (if 'room' classes are nested) */} {/* the following breaks the css (if 'room' classes are nested) */}