import React, { Component, Fragment } from 'react'; import { withSnackbar } from 'notistack'; import { withStyles } from '@material-ui/core/styles'; import Button from '@material-ui/core/Button'; import List from '@material-ui/core/List'; import ListItem from '@material-ui/core/ListItem'; import ListItemAvatar from '@material-ui/core/ListItemAvatar'; import ListItemText from '@material-ui/core/ListItemText'; import Avatar from '@material-ui/core/Avatar'; import Divider from '@material-ui/core/Divider'; import Dialog from '@material-ui/core/Dialog'; import DialogActions from '@material-ui/core/DialogActions'; import DialogTitle from '@material-ui/core/DialogTitle'; import DialogContent from '@material-ui/core/DialogContent'; import DevicesIcon from '@material-ui/icons/Devices'; import MemoryIcon from '@material-ui/icons/Memory'; import ShowChartIcon from '@material-ui/icons/ShowChart'; import SdStorageIcon from '@material-ui/icons/SdStorage'; import DataUsageIcon from '@material-ui/icons/DataUsage'; import AutorenewIcon from '@material-ui/icons/Autorenew'; import RefreshIcon from '@material-ui/icons/Refresh'; import { SYSTEM_STATUS_ENDPOINT, RESET_ENDPOINT } from '../constants/Endpoints'; import { restComponent } from '../components/RestComponent'; import LoadingNotification from '../components/LoadingNotification'; import SectionContent from '../components/SectionContent'; import { redirectingAuthorizedFetch } from '../authentication/Authentication'; const styles = theme => ({ button: { marginRight: theme.spacing(2), marginTop: theme.spacing(2), } }); class SystemStatus extends Component { constructor(props) { super(props); this.state = { confirmReset: false, processing: false } } componentDidMount() { this.props.loadData(); } createListItems(data, classes) { return ( ); } renderSystemStatus(data, classes) { return (
{this.createListItems(data, classes)}
); } onReset = () => { this.setState({ confirmReset: true }); } onResetRejected = () => { this.setState({ confirmReset: false }); } onResetConfirmed = () => { this.setState({ processing: true }); redirectingAuthorizedFetch(RESET_ENDPOINT, { method: 'POST' }) .then(response => { if (response.status === 200) { this.props.enqueueSnackbar("Device is resetting", { variant: 'info' }); this.setState({ processing: false, confirmReset: false }); } else { throw Error("Invalid status code: " + response.status); } }) .catch(error => { this.props.enqueueSnackbar(error.message || "Problem resetting device", { variant: 'error' }); this.setState({ processing: false, confirmReset: false }); }); } renderResetDialog() { return ( Confirm Reset Are you sure you want to reset the device? ) } render() { const { data, fetched, errorMessage, loadData, classes } = this.props; return ( this.renderSystemStatus(data, classes) } /> {this.renderResetDialog()} ) } } export default withSnackbar(restComponent(SYSTEM_STATUS_ENDPOINT, withStyles(styles)(SystemStatus)));