Fork of the excellent esp8266-react - https://github.com/rjwats/esp8266-react
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.0 KiB
62 lines
2.0 KiB
import React, { Component } from 'react';
|
|
import { ValidatorForm } from 'react-material-ui-form-validator';
|
|
|
|
import { Typography, Box, Switch } from '@material-ui/core';
|
|
import { WEB_SOCKET_ROOT } from '../api';
|
|
import { WebSocketControllerProps, WebSocketFormLoader, WebSocketFormProps, webSocketController } from '../components';
|
|
import { SectionContent, BlockFormControlLabel } from '../components';
|
|
|
|
import { LightState } from './types';
|
|
|
|
export const LIGHT_SETTINGS_WEBSOCKET_URL = WEB_SOCKET_ROOT + "lightState";
|
|
|
|
type LightStateWebSocketControllerProps = WebSocketControllerProps<LightState>;
|
|
|
|
class LightStateWebSocketController extends Component<LightStateWebSocketControllerProps> {
|
|
|
|
render() {
|
|
return (
|
|
<SectionContent title='WebSocket Controller' titleGutter>
|
|
<WebSocketFormLoader
|
|
{...this.props}
|
|
render={props => (
|
|
<LightStateWebSocketControllerForm {...props} />
|
|
)}
|
|
/>
|
|
</SectionContent>
|
|
)
|
|
}
|
|
|
|
}
|
|
|
|
export default webSocketController(LIGHT_SETTINGS_WEBSOCKET_URL, 100, LightStateWebSocketController);
|
|
|
|
type LightStateWebSocketControllerFormProps = WebSocketFormProps<LightState>;
|
|
|
|
function LightStateWebSocketControllerForm(props: LightStateWebSocketControllerFormProps) {
|
|
const { data, saveData, setData } = props;
|
|
|
|
const changeLedOn = (event: React.ChangeEvent<HTMLInputElement>) => {
|
|
setData({ led_on: event.target.checked }, saveData);
|
|
}
|
|
|
|
return (
|
|
<ValidatorForm onSubmit={saveData}>
|
|
<Box bgcolor="primary.main" color="primary.contrastText" p={2} mt={2} mb={2}>
|
|
<Typography variant="body1">
|
|
The switch below controls the LED via the WebSocket. It will automatically update whenever the LED state changes.
|
|
</Typography>
|
|
</Box>
|
|
<BlockFormControlLabel
|
|
control={
|
|
<Switch
|
|
checked={data.led_on}
|
|
onChange={changeLedOn}
|
|
color="primary"
|
|
/>
|
|
}
|
|
label="LED State?"
|
|
/>
|
|
</ValidatorForm>
|
|
);
|
|
}
|