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:
		
							
								
								
									
										3436
									
								
								interface/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										3436
									
								
								interface/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -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> | ||||
|   | ||||
| @@ -21,4 +21,7 @@ export interface APSettings { | ||||
|   provision_mode: APProvisionMode; | ||||
|   ssid: string; | ||||
|   password: string; | ||||
|   local_ip: string; | ||||
|   gateway_ip: string; | ||||
|   subnet_mask: string; | ||||
| } | ||||
|   | ||||
| @@ -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) => ( | ||||
|   | ||||
| @@ -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: | ||||
|   | ||||
| @@ -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 { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user