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(
)
})
})
});
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
- {
names.length === 0 ? Aucun nom défini : names.join(', ')
}
- {
users.length === 0
? Aucun utilisateur défini
: 'Utilisée par ' + users.join(', ')
}
{ setIsEditDialogOpen(true) }}>Modifier
}
function TopBar({toggleTheme}) {
const [openAboutModal, setOpenAboutModal] = React.useState(false);
const handleOpenAboutModal = () => {
setOpenAboutModal(true);
};
const handleCloseAboutModal = () => {
setOpenAboutModal(false);
};
return <>
ENcarteS
>
}
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
}
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 (
);
}