Add access point IP address configuration in UI

* Allow ap ip address to be configured via ui
* Add missing WiFi status to UI enum
* Update package-lock.json
This commit is contained in:
rjwats
2020-07-07 22:22:38 +01:00
committed by GitHub
parent f2b53a6d53
commit 6ef5df28c1
10 changed files with 2183 additions and 1363 deletions

File diff suppressed because it is too large Load Diff

View File

@ -4,15 +4,20 @@ import { TextValidator, ValidatorForm, SelectValidator } from 'react-material-ui
import MenuItem from '@material-ui/core/MenuItem';
import SaveIcon from '@material-ui/icons/Save';
import {PasswordValidator, RestFormProps, FormActions, FormButton} from '../components';
import { PasswordValidator, RestFormProps, FormActions, FormButton } from '../components';
import { isAPEnabled } from './APModes';
import { APSettings, APProvisionMode } from './types';
import { isIP } from '../validators';
type APSettingsFormProps = RestFormProps<APSettings>;
class APSettingsForm extends React.Component<APSettingsFormProps> {
componentWillMount() {
ValidatorForm.addValidationRule('isIP', isIP);
}
render() {
const { data, handleValueChange, saveData, loadData } = this.props;
return (
@ -53,6 +58,39 @@ class APSettingsForm extends React.Component<APSettingsFormProps> {
onChange={handleValueChange('password')}
margin="normal"
/>
<TextValidator
validators={['required', 'isIP']}
errorMessages={['Local IP is required', 'Must be an IP address']}
name="local_ip"
label="Local IP"
fullWidth
variant="outlined"
value={data.local_ip}
onChange={handleValueChange('local_ip')}
margin="normal"
/>
<TextValidator
validators={['required', 'isIP']}
errorMessages={['Gateway IP is required', 'Must be an IP address']}
name="gateway_ip"
label="Gateway"
fullWidth
variant="outlined"
value={data.gateway_ip}
onChange={handleValueChange('gateway_ip')}
margin="normal"
/>
<TextValidator
validators={['required', 'isIP']}
errorMessages={['Subnet mask is required', 'Must be an IP address']}
name="subnet_mask"
label="Subnet"
fullWidth
variant="outlined"
value={data.subnet_mask}
onChange={handleValueChange('subnet_mask')}
margin="normal"
/>
</Fragment>
}
<FormActions>

View File

@ -21,4 +21,7 @@ export interface APSettings {
provision_mode: APProvisionMode;
ssid: string;
password: string;
local_ip: string;
gateway_ip: string;
subnet_mask: string;
}

View File

@ -60,7 +60,7 @@ const SingleUpload: FC<SingleUploadProps> = ({ onDrop, onCancel, accept, uploadi
}
return "Uploading\u2026";
}
return "Drop file here or click to browse";
return "Drop file or click here";
}
const renderProgress = (progress?: ProgressEvent) => (

View File

@ -7,6 +7,7 @@ export const wifiStatusHighlight = ({ status }: WiFiStatus, theme: Theme) => {
switch (status) {
case WiFiConnectionStatus.WIFI_STATUS_IDLE:
case WiFiConnectionStatus.WIFI_STATUS_DISCONNECTED:
case WiFiConnectionStatus.WIFI_STATUS_NO_SHIELD:
return theme.palette.info.main;
case WiFiConnectionStatus.WIFI_STATUS_CONNECTED:
return theme.palette.success.main;
@ -20,6 +21,8 @@ export const wifiStatusHighlight = ({ status }: WiFiStatus, theme: Theme) => {
export const wifiStatus = ({ status }: WiFiStatus) => {
switch (status) {
case WiFiConnectionStatus.WIFI_STATUS_NO_SHIELD:
return "Inactive";
case WiFiConnectionStatus.WIFI_STATUS_IDLE:
return "Idle";
case WiFiConnectionStatus.WIFI_STATUS_NO_SSID_AVAIL:

View File

@ -4,7 +4,8 @@ export enum WiFiConnectionStatus {
WIFI_STATUS_CONNECTED = 3,
WIFI_STATUS_CONNECT_FAILED = 4,
WIFI_STATUS_CONNECTION_LOST = 5,
WIFI_STATUS_DISCONNECTED = 6
WIFI_STATUS_DISCONNECTED = 6,
WIFI_STATUS_NO_SHIELD = 255
}
export enum WiFiEncryptionType {