diff --git a/interface/src/components/RestComponent.js b/interface/src/components/RestComponent.js index d633761..5bcd8ec 100644 --- a/interface/src/components/RestComponent.js +++ b/interface/src/components/RestComponent.js @@ -52,10 +52,11 @@ export const restComponent = (endpointUrl, FormComponent) => { }) .then(json => { this.setState({ data: json, fetched: true }) }) .catch(error => { - this.props.enqueueSnackbar("Problem fetching: " + error.message, { + const errorMessage = error.message || "Unknown error"; + this.props.enqueueSnackbar("Problem fetching: " + errorMessage, { variant: 'error', }); - this.setState({ data: null, fetched: true, errorMessage: error.message }); + this.setState({ data: null, fetched: true, errorMessage }); }); } @@ -80,10 +81,11 @@ export const restComponent = (endpointUrl, FormComponent) => { }); this.setState({ data: json, fetched: true }); }).catch(error => { - this.props.enqueueSnackbar("Problem saving: " + error.message, { + const errorMessage = error.message || "Unknown error"; + this.props.enqueueSnackbar("Problem saving: " + errorMessage, { variant: 'error', }); - this.setState({ data: null, fetched: true, errorMessage: error.message }); + this.setState({ data: null, fetched: true, errorMessage }); }); } diff --git a/interface/src/containers/APSettings.js b/interface/src/containers/APSettings.js index 0ca9c53..3e8cab2 100644 --- a/interface/src/containers/APSettings.js +++ b/interface/src/containers/APSettings.js @@ -1,7 +1,8 @@ import React, { Component } from 'react'; -import { AP_SETTINGS_ENDPOINT } from '../constants/Endpoints'; +import { AP_SETTINGS_ENDPOINT } from '../constants/Endpoints'; import { restComponent } from '../components/RestComponent'; +import LoadingNotification from '../components/LoadingNotification'; import SectionContent from '../components/SectionContent'; import APSettingsForm from '../forms/APSettingsForm'; @@ -12,17 +13,20 @@ class APSettings extends Component { } render() { - const { data, fetched, errorMessage } = this.props; + const { fetched, errorMessage, data, saveData, loadData, handleValueChange } = this.props; return ( - + + + ) } diff --git a/interface/src/containers/APStatus.js b/interface/src/containers/APStatus.js index afd019c..354a1da 100644 --- a/interface/src/containers/APStatus.js +++ b/interface/src/containers/APStatus.js @@ -2,8 +2,6 @@ import React, { Component, Fragment } from 'react'; import { withStyles } from '@material-ui/core/styles'; import Button from '@material-ui/core/Button'; -import LinearProgress from '@material-ui/core/LinearProgress'; -import Typography from '@material-ui/core/Typography'; import List from '@material-ui/core/List'; import ListItem from '@material-ui/core/ListItem'; import ListItemText from '@material-ui/core/ListItemText'; @@ -15,6 +13,7 @@ import DeviceHubIcon from '@material-ui/icons/DeviceHub'; import ComputerIcon from '@material-ui/icons/Computer'; import { restComponent } from '../components/RestComponent'; +import LoadingNotification from '../components/LoadingNotification'; import SectionContent from '../components/SectionContent' import * as Highlight from '../constants/Highlight'; @@ -27,10 +26,6 @@ const styles = theme => ({ ["apStatus_" + Highlight.IDLE]: { backgroundColor: theme.palette.highlight_idle }, - fetching: { - margin: theme.spacing(4), - textAlign: "center" - }, button: { marginRight: theme.spacing(2), marginTop: theme.spacing(2), @@ -106,30 +101,15 @@ class APStatus extends Component { } render() { - const { data, fetched, errorMessage, classes } = this.props; - + const { fetched, errorMessage, data, loadData, classes } = this.props; return ( - { - !fetched ? -
- - - Loading... - -
- : - data ? this.renderAPStatus(data, classes) - : -
- - {errorMessage} - - -
- } + + {this.renderAPStatus(data, classes)} +
) } diff --git a/interface/src/containers/ManageUsers.js b/interface/src/containers/ManageUsers.js index 478dcae..63727cd 100644 --- a/interface/src/containers/ManageUsers.js +++ b/interface/src/containers/ManageUsers.js @@ -2,8 +2,9 @@ import React, { Component } from 'react'; import { SECURITY_SETTINGS_ENDPOINT } from '../constants/Endpoints'; import { restComponent } from '../components/RestComponent'; -import ManageUsersForm from '../forms/ManageUsersForm'; +import LoadingNotification from '../components/LoadingNotification'; import SectionContent from '../components/SectionContent'; +import ManageUsersForm from '../forms/ManageUsersForm'; class ManageUsers extends Component { @@ -12,18 +13,21 @@ class ManageUsers extends Component { } render() { - const { data, fetched, errorMessage } = this.props; + const { fetched, errorMessage, data, saveData, loadData, setData, handleValueChange } = this.props; return ( - + + + ) } diff --git a/interface/src/containers/NTPSettings.js b/interface/src/containers/NTPSettings.js index 2e291a9..2b903a8 100644 --- a/interface/src/containers/NTPSettings.js +++ b/interface/src/containers/NTPSettings.js @@ -1,28 +1,32 @@ import React, { Component } from 'react'; -import { NTP_SETTINGS_ENDPOINT } from '../constants/Endpoints'; -import {restComponent} from '../components/RestComponent'; +import { NTP_SETTINGS_ENDPOINT } from '../constants/Endpoints'; +import { restComponent } from '../components/RestComponent'; +import LoadingNotification from '../components/LoadingNotification'; import SectionContent from '../components/SectionContent'; import NTPSettingsForm from '../forms/NTPSettingsForm'; class NTPSettings extends Component { componentDidMount() { - this.props.loadData(); + this.props.loadData(); } render() { - const { data, fetched, errorMessage } = this.props; + const { fetched, errorMessage, data, saveData, loadData, handleValueChange } = this.props; return ( - + + + ) } diff --git a/interface/src/containers/NTPStatus.js b/interface/src/containers/NTPStatus.js index a9b5270..195f5fa 100644 --- a/interface/src/containers/NTPStatus.js +++ b/interface/src/containers/NTPStatus.js @@ -2,8 +2,6 @@ import React, { Component, Fragment } from 'react'; import { withStyles } from '@material-ui/core/styles'; import Button from '@material-ui/core/Button'; -import LinearProgress from '@material-ui/core/LinearProgress'; -import Typography from '@material-ui/core/Typography'; import List from '@material-ui/core/List'; import ListItem from '@material-ui/core/ListItem'; import ListItemAvatar from '@material-ui/core/ListItemAvatar'; @@ -22,6 +20,7 @@ import * as Highlight from '../constants/Highlight'; import { unixTimeToTimeAndDate } from '../constants/TimeFormat'; import { NTP_STATUS_ENDPOINT } from '../constants/Endpoints'; import { restComponent } from '../components/RestComponent'; +import LoadingNotification from '../components/LoadingNotification'; import SectionContent from '../components/SectionContent'; import moment from 'moment'; @@ -36,10 +35,6 @@ const styles = theme => ({ ["ntpStatus_" + Highlight.WARN]: { backgroundColor: theme.palette.highlight_warn }, - fetching: { - margin: theme.spacing(4), - textAlign: "center" - }, button: { marginRight: theme.spacing(2), marginTop: theme.spacing(2), @@ -131,32 +126,17 @@ class NTPStatus extends Component { } render() { - const { data, fetched, errorMessage, classes } = this.props; - + const { data, fetched, errorMessage, loadData, classes } = this.props; return ( - { - !fetched ? -
- - - Loading... - -
- : - data ? this.renderNTPStatus(data, classes) - : -
- - {errorMessage} - - -
- } + + {this.renderNTPStatus(data, classes)} +
- ) + ); } } diff --git a/interface/src/containers/OTASettings.js b/interface/src/containers/OTASettings.js index 95be458..189e620 100644 --- a/interface/src/containers/OTASettings.js +++ b/interface/src/containers/OTASettings.js @@ -1,29 +1,33 @@ import React, { Component } from 'react'; -import { OTA_SETTINGS_ENDPOINT } from '../constants/Endpoints'; -import {restComponent} from '../components/RestComponent'; +import { OTA_SETTINGS_ENDPOINT } from '../constants/Endpoints'; +import { restComponent } from '../components/RestComponent'; +import LoadingNotification from '../components/LoadingNotification'; import SectionContent from '../components/SectionContent'; import OTASettingsForm from '../forms/OTASettingsForm'; class OTASettings extends Component { componentDidMount() { - this.props.loadData(); + this.props.loadData(); } render() { - const { data, fetched, errorMessage } = this.props; + const { fetched, errorMessage, data, saveData, loadData, handleValueChange, handleCheckboxChange } = this.props; return ( - + + + ) } diff --git a/interface/src/containers/SecuritySettings.js b/interface/src/containers/SecuritySettings.js index 0ceb890..e1c70a6 100644 --- a/interface/src/containers/SecuritySettings.js +++ b/interface/src/containers/SecuritySettings.js @@ -2,6 +2,7 @@ import React, { Component } from 'react'; import { SECURITY_SETTINGS_ENDPOINT } from '../constants/Endpoints'; import { restComponent } from '../components/RestComponent'; +import LoadingNotification from '../components/LoadingNotification'; import SecuritySettingsForm from '../forms/SecuritySettingsForm'; import SectionContent from '../components/SectionContent'; @@ -15,14 +16,17 @@ class SecuritySettings extends Component { const { data, fetched, errorMessage, saveData, loadData, handleValueChange } = this.props; return ( - + fetched={fetched} + errorMessage={errorMessage}> + + ) } diff --git a/interface/src/containers/SystemStatus.js b/interface/src/containers/SystemStatus.js index 20728f5..b9c1410 100644 --- a/interface/src/containers/SystemStatus.js +++ b/interface/src/containers/SystemStatus.js @@ -2,8 +2,6 @@ import React, { Component, Fragment } from 'react'; import { withStyles } from '@material-ui/core/styles'; import Button from '@material-ui/core/Button'; -import LinearProgress from '@material-ui/core/LinearProgress'; -import Typography from '@material-ui/core/Typography'; import List from '@material-ui/core/List'; import ListItem from '@material-ui/core/ListItem'; import ListItemAvatar from '@material-ui/core/ListItemAvatar'; @@ -16,16 +14,12 @@ import ShowChartIcon from '@material-ui/icons/ShowChart'; import SdStorageIcon from '@material-ui/icons/SdStorage'; import DataUsageIcon from '@material-ui/icons/DataUsage'; - import { SYSTEM_STATUS_ENDPOINT } from '../constants/Endpoints'; import { restComponent } from '../components/RestComponent'; +import LoadingNotification from '../components/LoadingNotification'; import SectionContent from '../components/SectionContent'; const styles = theme => ({ - fetching: { - margin: theme.spacing(4), - textAlign: "center" - }, button: { marginRight: theme.spacing(2), marginTop: theme.spacing(2), @@ -85,7 +79,7 @@ class SystemStatus extends Component { - + ); } @@ -104,29 +98,15 @@ class SystemStatus extends Component { } render() { - const { data, fetched, errorMessage, classes } = this.props; + const { data, fetched, errorMessage, loadData, classes } = this.props; return ( - { - !fetched ? -
- - - Loading... - -
- : - data ? this.renderNTPStatus(data, classes) - : -
- - {errorMessage} - - -
- } + + {this.renderNTPStatus(data, classes)} +
) } diff --git a/interface/src/containers/WiFiNetworkScanner.js b/interface/src/containers/WiFiNetworkScanner.js index 4b3d126..4cdb9be 100644 --- a/interface/src/containers/WiFiNetworkScanner.js +++ b/interface/src/containers/WiFiNetworkScanner.js @@ -1,10 +1,10 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; +import { withSnackbar } from 'notistack'; import { SCAN_NETWORKS_ENDPOINT, LIST_NETWORKS_ENDPOINT } from '../constants/Endpoints'; import SectionContent from '../components/SectionContent'; import WiFiNetworkSelector from '../forms/WiFiNetworkSelector'; -import { withSnackbar } from 'notistack'; import { redirectingAuthorizedFetch } from '../authentication/Authentication'; const NUM_POLLS = 10 diff --git a/interface/src/containers/WiFiSettings.js b/interface/src/containers/WiFiSettings.js index 17f913c..fb0bfb0 100644 --- a/interface/src/containers/WiFiSettings.js +++ b/interface/src/containers/WiFiSettings.js @@ -1,8 +1,9 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; -import { WIFI_SETTINGS_ENDPOINT } from '../constants/Endpoints'; +import { WIFI_SETTINGS_ENDPOINT } from '../constants/Endpoints'; import { restComponent } from '../components/RestComponent'; +import LoadingNotification from '../components/LoadingNotification'; import SectionContent from '../components/SectionContent'; import WiFiSettingsForm from '../forms/WiFiSettingsForm'; @@ -18,10 +19,10 @@ class WiFiSettings extends Component { const { selectedNetwork } = this.props; if (selectedNetwork) { var wifiSettings = { - ssid:selectedNetwork.ssid, - password:"", - hostname:"esp8266-react", - static_ip_config:false, + ssid: selectedNetwork.ssid, + password: "", + hostname: "esp8266-react", + static_ip_config: false, } this.props.setData(wifiSettings); } else { @@ -35,20 +36,23 @@ class WiFiSettings extends Component { } render() { - const { data, fetched, errorMessage, selectedNetwork } = this.props; + const { data, fetched, errorMessage, saveData, loadData, handleValueChange, handleCheckboxChange, selectedNetwork, deselectNetwork } = this.props; return ( - + + + ) } diff --git a/interface/src/containers/WiFiStatus.js b/interface/src/containers/WiFiStatus.js index 773e958..4c47f2c 100644 --- a/interface/src/containers/WiFiStatus.js +++ b/interface/src/containers/WiFiStatus.js @@ -2,14 +2,10 @@ import React, { Component, Fragment } from 'react'; import { withStyles } from '@material-ui/core/styles'; import Button from '@material-ui/core/Button'; -import LinearProgress from '@material-ui/core/LinearProgress'; -import Typography from '@material-ui/core/Typography'; - import List from '@material-ui/core/List'; import ListItem from '@material-ui/core/ListItem'; import ListItemText from '@material-ui/core/ListItemText'; import ListItemAvatar from '@material-ui/core/ListItemAvatar'; - import Avatar from '@material-ui/core/Avatar'; import Divider from '@material-ui/core/Divider'; import WifiIcon from '@material-ui/icons/Wifi'; @@ -23,6 +19,7 @@ import { WIFI_STATUS_ENDPOINT } from '../constants/Endpoints'; import { isConnected, connectionStatus, connectionStatusHighlight } from '../constants/WiFiConnectionStatus'; import * as Highlight from '../constants/Highlight'; import { restComponent } from '../components/RestComponent'; +import LoadingNotification from '../components/LoadingNotification'; const styles = theme => ({ ["wifiStatus_" + Highlight.IDLE]: { @@ -37,10 +34,6 @@ const styles = theme => ({ ["wifiStatus_" + Highlight.WARN]: { backgroundColor: theme.palette.highlight_warn }, - fetching: { - margin: theme.spacing(4), - textAlign: "center" - }, button: { marginRight: theme.spacing(2), marginTop: theme.spacing(2), @@ -145,32 +138,19 @@ class WiFiStatus extends Component { } render() { - const { data, fetched, errorMessage, classes } = this.props; + const { data, fetched, errorMessage, loadData, classes } = this.props; return ( - { - !fetched ? -
- - - Loading... - -
- : - data ? this.renderWiFiStatus(data, classes) - : -
- - {errorMessage} - - -
- } + + {this.renderWiFiStatus(data, classes)} +
- ) + ); } + } export default restComponent(WIFI_STATUS_ENDPOINT, withStyles(styles)(WiFiStatus)); diff --git a/interface/src/forms/APSettingsForm.js b/interface/src/forms/APSettingsForm.js index bdd9191..e708884 100644 --- a/interface/src/forms/APSettingsForm.js +++ b/interface/src/forms/APSettingsForm.js @@ -1,29 +1,19 @@ import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; +import { TextValidator, ValidatorForm, SelectValidator } from 'react-material-ui-form-validator'; + +import { isAPEnabled } from '../constants/WiFiAPModes'; +import PasswordValidator from '../components/PasswordValidator'; import { withStyles } from '@material-ui/core/styles'; import Button from '@material-ui/core/Button'; -import LinearProgress from '@material-ui/core/LinearProgress'; -import Typography from '@material-ui/core/Typography'; import MenuItem from '@material-ui/core/MenuItem'; -import { TextValidator, ValidatorForm, SelectValidator } from 'react-material-ui-form-validator'; - -import {isAPEnabled} from '../constants/WiFiAPModes'; -import PasswordValidator from '../components/PasswordValidator'; - const styles = theme => ({ - loadingSettings: { - margin: theme.spacing(0.5), - }, - loadingSettingsDetails: { - margin: theme.spacing(4), - textAlign: "center" - }, textField: { width: "100%" }, - selectField:{ + selectField: { width: "100%", marginTop: theme.spacing(2), marginBottom: theme.spacing(0.5) @@ -37,86 +27,54 @@ const styles = theme => ({ class APSettingsForm extends React.Component { render() { - const { classes, apSettingsFetched, apSettings, errorMessage, handleValueChange, onSubmit, onReset } = this.props; + const { classes, apSettings, handleValueChange, onSubmit, onReset } = this.props; return ( -
+ + + Always + When WiFi Disconnected + Never + { - !apSettingsFetched ? - -
- - - Loading... - -
- - : apSettings ? - - - - - Always - When WiFi Disconnected - Never - - - { - isAPEnabled(apSettings.provision_mode) && - - - - - } - - - - - - - : - -
- - {errorMessage} - - -
- } -
+ isAPEnabled(apSettings.provision_mode) && + + + + + } + + + ); } } APSettingsForm.propTypes = { classes: PropTypes.object.isRequired, - apSettingsFetched: PropTypes.bool.isRequired, apSettings: PropTypes.object, - errorMessage: PropTypes.string, onSubmit: PropTypes.func.isRequired, onReset: PropTypes.func.isRequired, handleValueChange: PropTypes.func.isRequired diff --git a/interface/src/forms/ManageUsersForm.js b/interface/src/forms/ManageUsersForm.js index c2e2768..bdae121 100644 --- a/interface/src/forms/ManageUsersForm.js +++ b/interface/src/forms/ManageUsersForm.js @@ -5,7 +5,6 @@ import { ValidatorForm } from 'react-material-ui-form-validator'; import { withStyles } from '@material-ui/core/styles'; import Button from '@material-ui/core/Button'; -import LinearProgress from '@material-ui/core/LinearProgress'; import Typography from '@material-ui/core/Typography'; import Table from '@material-ui/core/Table'; import TableBody from '@material-ui/core/TableBody'; @@ -14,7 +13,6 @@ import TableFooter from '@material-ui/core/TableFooter'; import TableHead from '@material-ui/core/TableHead'; import TableRow from '@material-ui/core/TableRow'; import Box from '@material-ui/core/Box'; - import EditIcon from '@material-ui/icons/Edit'; import DeleteIcon from '@material-ui/icons/Delete'; import CloseIcon from '@material-ui/icons/Close'; @@ -25,22 +23,12 @@ import UserForm from './UserForm'; import { withAuthenticationContext } from '../authentication/Context'; const styles = theme => ({ - loadingSettings: { - margin: theme.spacing(0.5), - }, - loadingSettingsDetails: { - margin: theme.spacing(4), - textAlign: "center" - }, button: { marginRight: theme.spacing(2), marginTop: theme.spacing(2), }, table: { '& td, & th': { padding: theme.spacing(0.5) } - }, - actions: { - whiteSpace: "nowrap" } }); @@ -134,98 +122,80 @@ class ManageUsersForm extends React.Component { } render() { - const { classes, userData, userDataFetched, errorMessage, onReset } = this.props; + const { classes, userData, onReset } = this.props; const { user, creating } = this.state; return ( - !userDataFetched ? -
- - - Loading... - -
- : - userData ? - - - - - - Username - Admin? - - - - - {userData.users.sort(compareUsers).map(user => ( - - - {user.username} - - - { - user.admin ? : - } - - - this.removeUser(user)}> - - - this.startEditingUser(user)}> - - - - - ))} - - - - - - - - - -
- { - this.noAdminConfigured() && - - - You must have at least one admin user configured. - - - } - - -
- { - user && - - } -
- : -
- - {errorMessage} + + + + + + Username + Admin? + + + + + {userData.users.sort(compareUsers).map(user => ( + + + {user.username} + + + { + user.admin ? : + } + + + this.removeUser(user)}> + + + this.startEditingUser(user)}> + + + + + ))} + + + + + + + + + +
+ { + this.noAdminConfigured() && + + + You must have at least one admin user configured. + - -
+ } + + + + { + user && + + } + ); } @@ -234,8 +204,6 @@ class ManageUsersForm extends React.Component { ManageUsersForm.propTypes = { classes: PropTypes.object.isRequired, userData: PropTypes.object, - userDataFetched: PropTypes.bool.isRequired, - errorMessage: PropTypes.string, onSubmit: PropTypes.func.isRequired, onReset: PropTypes.func.isRequired, setData: PropTypes.func.isRequired, diff --git a/interface/src/forms/NTPSettingsForm.js b/interface/src/forms/NTPSettingsForm.js index ba89b9c..8214825 100644 --- a/interface/src/forms/NTPSettingsForm.js +++ b/interface/src/forms/NTPSettingsForm.js @@ -1,24 +1,15 @@ import React from 'react'; import PropTypes from 'prop-types'; +import { TextValidator, ValidatorForm } from 'react-material-ui-form-validator'; import { withStyles } from '@material-ui/core/styles'; import Button from '@material-ui/core/Button'; -import LinearProgress from '@material-ui/core/LinearProgress'; -import { TextValidator, ValidatorForm } from 'react-material-ui-form-validator'; -import Typography from '@material-ui/core/Typography'; import isIP from '../validators/isIP'; import isHostname from '../validators/isHostname'; import or from '../validators/or'; const styles = theme => ({ - loadingSettings: { - margin: theme.spacing(0.5), - }, - loadingSettingsDetails: { - margin: theme.spacing(4), - textAlign: "center" - }, textField: { width: "100%" }, @@ -35,76 +26,44 @@ class NTPSettingsForm extends React.Component { } render() { - const { classes, ntpSettingsFetched, ntpSettings, errorMessage, handleValueChange, onSubmit, onReset } = this.props; + const { classes, ntpSettings, handleValueChange, onSubmit, onReset } = this.props; return ( -
- { - !ntpSettingsFetched ? - -
- - - Loading... - -
- - : ntpSettings ? - - - - - - - - - - - - - : - -
- - {errorMessage} - - -
- } -
+ + + + + + ); } } NTPSettingsForm.propTypes = { classes: PropTypes.object.isRequired, - ntpSettingsFetched: PropTypes.bool.isRequired, ntpSettings: PropTypes.object, - errorMessage: PropTypes.string, onSubmit: PropTypes.func.isRequired, onReset: PropTypes.func.isRequired, handleValueChange: PropTypes.func.isRequired, diff --git a/interface/src/forms/OTASettingsForm.js b/interface/src/forms/OTASettingsForm.js index 31bb411..29ee5b8 100644 --- a/interface/src/forms/OTASettingsForm.js +++ b/interface/src/forms/OTASettingsForm.js @@ -4,9 +4,7 @@ import PropTypes from 'prop-types'; import { withStyles } from '@material-ui/core/styles'; import Button from '@material-ui/core/Button'; import Switch from '@material-ui/core/Switch'; -import LinearProgress from '@material-ui/core/LinearProgress'; import { TextValidator, ValidatorForm } from 'react-material-ui-form-validator'; -import Typography from '@material-ui/core/Typography'; import FormControlLabel from '@material-ui/core/FormControlLabel'; import isIP from '../validators/isIP'; @@ -15,13 +13,6 @@ import or from '../validators/or'; import PasswordValidator from '../components/PasswordValidator'; const styles = theme => ({ - loadingSettings: { - margin: theme.spacing(0.5), - }, - loadingSettingsDetails: { - margin: theme.spacing(4), - textAlign: "center" - }, switchControl: { width: "100%", marginTop: theme.spacing(2), @@ -43,88 +34,55 @@ class OTASettingsForm extends React.Component { } render() { - const { classes, otaSettingsFetched, otaSettings, errorMessage, handleValueChange, handleCheckboxChange, onSubmit, onReset } = this.props; + const { classes, otaSettings, handleValueChange, handleCheckboxChange, onSubmit, onReset } = this.props; return ( -
- { - !otaSettingsFetched ? - -
- - - Loading... - -
- - : otaSettings ? - - - - - } - label="Enable OTA Updates?" - /> - - - - - - - - - - - : - -
- - {errorMessage} - - -
- } -
+ + + } + label="Enable OTA Updates?" + /> + + + + + ); } } OTASettingsForm.propTypes = { classes: PropTypes.object.isRequired, - otaSettingsFetched: PropTypes.bool.isRequired, otaSettings: PropTypes.object, - errorMessage: PropTypes.string, onSubmit: PropTypes.func.isRequired, onReset: PropTypes.func.isRequired, handleValueChange: PropTypes.func.isRequired, diff --git a/interface/src/forms/SecuritySettingsForm.js b/interface/src/forms/SecuritySettingsForm.js index 00a339c..16d74a3 100644 --- a/interface/src/forms/SecuritySettingsForm.js +++ b/interface/src/forms/SecuritySettingsForm.js @@ -4,7 +4,6 @@ import { ValidatorForm } from 'react-material-ui-form-validator'; import { withStyles } from '@material-ui/core/styles'; import Button from '@material-ui/core/Button'; -import LinearProgress from '@material-ui/core/LinearProgress'; import Typography from '@material-ui/core/Typography'; import Box from '@material-ui/core/Box'; @@ -12,13 +11,6 @@ import PasswordValidator from '../components/PasswordValidator'; import { withAuthenticationContext } from '../authentication/Context'; const styles = theme => ({ - loadingSettings: { - margin: theme.spacing(0.5), - }, - loadingSettingsDetails: { - margin: theme.spacing(4), - textAlign: "center" - }, textField: { width: "100%" }, @@ -36,58 +28,38 @@ class SecuritySettingsForm extends React.Component { } render() { - const { classes, securitySettingsFetched, securitySettings, errorMessage, handleValueChange, onReset } = this.props; + const { classes, securitySettings, handleValueChange, onReset } = this.props; return ( - !securitySettingsFetched ? -
- - - Loading... - -
- : - securitySettings ? - - - - - If you modify the JWT Secret, all users will be logged out. - - - - - - : -
- - {errorMessage} - - -
+ + + + + If you modify the JWT Secret, all users will be logged out. + + + + + ); } } SecuritySettingsForm.propTypes = { classes: PropTypes.object.isRequired, - securitySettingsFetched: PropTypes.bool.isRequired, securitySettings: PropTypes.object, - errorMessage: PropTypes.string, onSubmit: PropTypes.func.isRequired, onReset: PropTypes.func.isRequired, handleValueChange: PropTypes.func.isRequired, diff --git a/interface/src/forms/WiFiSettingsForm.js b/interface/src/forms/WiFiSettingsForm.js index fd7b453..b59ddda 100644 --- a/interface/src/forms/WiFiSettingsForm.js +++ b/interface/src/forms/WiFiSettingsForm.js @@ -3,10 +3,8 @@ import PropTypes from 'prop-types'; import { withStyles } from '@material-ui/core/styles'; import Button from '@material-ui/core/Button'; -import LinearProgress from '@material-ui/core/LinearProgress'; import Checkbox from '@material-ui/core/Checkbox'; import FormControlLabel from '@material-ui/core/FormControlLabel'; -import Typography from '@material-ui/core/Typography'; import List from '@material-ui/core/List'; import ListItem from '@material-ui/core/ListItem'; import ListItemText from '@material-ui/core/ListItemText'; @@ -80,157 +78,124 @@ class WiFiSettingsForm extends React.Component { } render() { - const { classes, wifiSettingsFetched, wifiSettings, errorMessage, selectedNetwork, handleValueChange, handleCheckboxChange, onSubmit, onReset } = this.props; + const { classes, wifiSettings, selectedNetwork, handleValueChange, handleCheckboxChange, onSubmit, onReset } = this.props; return ( -
+ { - !wifiSettingsFetched ? - -
- - - Loading... - -
- - : wifiSettings ? - - - { - selectedNetwork ? this.renderSelectedNetwork() : - - } - { - !isNetworkOpen(selectedNetwork) && - - } - - - - - } - label="Static IP Config?" - /> - - { - wifiSettings.static_ip_config && - - - - - - - - } - - - - - - - : - -
- - {errorMessage} - - -
+ selectedNetwork ? this.renderSelectedNetwork() : + } -
+ { + !isNetworkOpen(selectedNetwork) && + + } + + + } + label="Static IP Config?" + /> + { + wifiSettings.static_ip_config && + + + + + + + + } + + + ); } } WiFiSettingsForm.propTypes = { classes: PropTypes.object.isRequired, - wifiSettingsFetched: PropTypes.bool.isRequired, wifiSettings: PropTypes.object, - errorMessage: PropTypes.string, deselectNetwork: PropTypes.func, selectedNetwork: PropTypes.object, onSubmit: PropTypes.func.isRequired,