import * as React from 'react'; import AppBar from '@mui/material/AppBar'; import Box from '@mui/material/Box'; import Button from '@mui/material/Button'; import Chip from '@mui/material/Chip'; import CssBaseline from '@mui/material/CssBaseline'; import Dialog from '@mui/material/Dialog'; import DialogActions from '@mui/material/DialogActions'; import DialogContent from '@mui/material/DialogContent'; import DialogContentText from '@mui/material/DialogContentText'; import DialogTitle from '@mui/material/DialogTitle'; import Divider from '@mui/material/Divider'; import IconButton from '@mui/material/IconButton'; import MenuItem from '@mui/material/MenuItem'; import Select from '@mui/material/Select'; import SettingsBrightnessIcon from '@mui/icons-material/SettingsBrightness'; import TextField from '@mui/material/TextField'; import Toolbar from '@mui/material/Toolbar'; import Typography from '@mui/material/Typography'; import { ThemeProvider, createTheme } from '@mui/material/styles'; import './App.css' import Map from './Map.js'; import Rooms from './Rooms.js'; function ChangeFloor({ currentFloor, callbackFloorChanged }) { const [sites, setSites] = React.useState([]); const handleFloorChanged = (event) => { callbackFloorChanged(event.target.value); }; React.useEffect(() => { fetch("https://encartes.aliens-lyon.fr/api/map/get_all_floors/") .then(response => response.json()) .then(data => { setSites(data); // Display a floor callbackFloorChanged(data[0].buildings[0].floors[0].id) }); }, [callbackFloorChanged]); if (currentFloor === undefined) return; var items = []; sites.forEach(site => { site.buildings.forEach(building => { building.floors.forEach(floor => { items.push( {site.name} / {building.name} / {floor.name} ) }) }) }); return <>
Changer d'étage
} function RoomResearch({ callbackRoomSelected }) { const [currentRequest, setCurrentRequest] = React.useState(""); const [rooms, setRooms] = React.useState([]); const startResearch = (event) => { fetch("https://encartes.aliens-lyon.fr/api/map/find_place_by_name/" + currentRequest) .then(response => response.json()) .then(data => { setRooms(data); }); }; return <>
Rechercher une salle { setCurrentRequest(event.target.value) }} variant="outlined" fullWidth />
} function RoomInformation({ roomId, setIsEditDialogOpen }) { const [names, setNames] = React.useState([]); const [users, setUsers] = React.useState([]); React.useEffect(() => { if (roomId !== undefined) { fetch("https://encartes.aliens-lyon.fr/api/map/get_place_info/" + roomId) .then(response => response.json()) .then(data => { setNames(data.names); setUsers(data.users); }); } }, [roomId]); if (roomId === undefined) { return; } return
Salle sélectionnée { setIsEditDialogOpen(true) }}>Modifier
} function TopBar({toggleTheme}) { const [openAboutModal, setOpenAboutModal] = React.useState(false); const handleOpenAboutModal = () => { setOpenAboutModal(true); }; const handleCloseAboutModal = () => { setOpenAboutModal(false); }; return <> ENcarteS {"À propos d'ENcarteS"} ENcarteS permet de rechercher les salles de l'ENS ! } function EditDialog({ isOpen, setIsOpen, room }) { const [names, setNames] = React.useState([]); const [users, setUsers] = React.useState([]); const [newPlaceName, setNewPlaceName] = React.useState(""); // Used to refresh useEffect const [updatesCount, setupdatesCount] = React.useState(0); React.useEffect(() => { if (room !== undefined) { fetch("https://encartes.aliens-lyon.fr/api/map/get_place_info/" + room) .then(response => response.json()) .then(data => { setNames(data.names); setUsers(data.users); }); } }, [room, updatesCount]); const refresh = () => { setupdatesCount(updatesCount + 1); }; const addName = () => { fetch("https://encartes.aliens-lyon.fr/api/map/add_place_name/" + room + "/" + encodeURI(newPlaceName)) .then(response => refresh()); }; const removeName = (placeName) => { fetch("https://encartes.aliens-lyon.fr/api/map/del_place_name/" + room + "/" + encodeURI(placeName)) .then(response => refresh()); } return { setIsOpen(false) }}> Salle n°{room} Noms :
{names.map(name => { return { removeName(name) }} /> })} { setNewPlaceName(event.target.value) }} label="Nouveau nom" margin="dense" fullWidth /> Utilisateurs :
{users.map(name => { return { }} /> })}
} function App({toggleTheme}) { const [currentFloor, setCurrentFloor] = React.useState(undefined); const [selectedRoom, setSelectedRoom] = React.useState(undefined); const [isEditDialogOpen, setIsEditDialogOpen] = React.useState(false); return <>
{currentFloor !== undefined ? : <>}
{ setCurrentFloor(floor); setSelectedRoom(room); }} />
} export default function ThemedApp() { const [themeMode, setThemeMode] = React.useState('light'); const theme = createTheme({ palette: { mode: themeMode, }, }); const toggleTheme = () => { if (themeMode === 'light') { setThemeMode('dark') } else { setThemeMode('light') } } return ( ); }