From 4edf9edafb37ba1353dc7737d0fd0884003cae45 Mon Sep 17 00:00:00 2001 From: YeonV Date: Wed, 9 Jun 2021 14:21:24 +0200 Subject: [PATCH] WledCard --- src/pages/Settings/Settings.jsx | 4 + src/pages/Settings/WledCard.jsx | 268 ++++++++++++++++++++++++++++++++ 2 files changed, 272 insertions(+) create mode 100644 src/pages/Settings/WledCard.jsx diff --git a/src/pages/Settings/Settings.jsx b/src/pages/Settings/Settings.jsx index da2c5372..2f7a5946 100644 --- a/src/pages/Settings/Settings.jsx +++ b/src/pages/Settings/Settings.jsx @@ -17,6 +17,7 @@ import { Delete, Refresh } from '@material-ui/icons'; import PopoverSure from '../../components/Popover'; import { download } from '../../utils/helpers'; +import WledCard from './WledCard'; const useStyles = makeStyles(theme => ({ content: { @@ -74,6 +75,7 @@ const Settings = () => { }, [getSystemConfig]); return ( + <> @@ -155,6 +157,8 @@ const Settings = () => { + + ); }; diff --git a/src/pages/Settings/WledCard.jsx b/src/pages/Settings/WledCard.jsx new file mode 100644 index 00000000..c19210c5 --- /dev/null +++ b/src/pages/Settings/WledCard.jsx @@ -0,0 +1,268 @@ +import { useEffect } from 'react'; +import { makeStyles } from '@material-ui/core/styles'; +import Card from '@material-ui/core/Card'; +import CardHeader from '@material-ui/core/CardHeader'; +import CardContent from '@material-ui/core/CardContent'; +import InputLabel from '@material-ui/core/InputLabel'; +import MenuItem from '@material-ui/core/MenuItem'; +import { FormControl, Checkbox, Icon, TextField } from '@material-ui/core'; +import Select from '@material-ui/core/Select'; +import Accordion from '@material-ui/core/Accordion'; +import AccordionDetails from '@material-ui/core/AccordionDetails'; +import AccordionSummary from '@material-ui/core/AccordionSummary'; +import Typography from '@material-ui/core/Typography'; +import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; +import Wled from '../../assets/Wled'; +import useStore from '../../utils/apiStore'; + +const useStyles = makeStyles({ + content: { + display: 'flex', + flexDirection: 'column', + }, + rowContainer: { + border: '1px solid', + borderRadius: '4px' + }, + rowB: { + display: 'flex', + flexDirection: 'row' + }, + row: { + display: 'flex', + flexDirection: 'row', + padding: '10px 5px', + '&:not(:last-child)': { + borderBottom: '1px solid', + } + }, + formControl: { + width: '100%', + marginRight: '1rem', + }, + check: { + '& .MuiSvgIcon-root': { + width: '2rem', + height: '2rem', + } + }, + +}); + +const WledCard = ({ className }) => { + + const classes = useStyles(); + const setSystemConfig = useStore(state => state.setSystemConfig); + const getSystemConfig = useStore((state) => state.getSystemConfig); + const settings = useStore(state => state.config); + + const toggleSetting = (setting, value) => { + setSystemConfig({ config: { wled_preferences: { [setting]: { user_enabled: value } } } }).then(() => getSystemConfig()); + } + const onChangeSetting = (setting, value) => { + setSystemConfig({ config: { wled_preferences: { [setting]: { setting: value } } } }).then(() => getSystemConfig()); + } + const onScanOnStart = (setting, value) => { + setSystemConfig({ config: { [setting]: value } }).then(() => getSystemConfig()); + } + + useEffect(() => { + getSystemConfig(); + }, [getSystemConfig]); + + return settings.wled_preferences ? ( + + + + } /> + + + Scan for WLED on startup + + + + } + aria-controls="panel1bh-content" + id="panel1bh-header" + > + WLED Sync-Settings + + +

LedFx can configure WLED's sync settings to recommended values.

+ WARNING:
+ If you are using your strips with other controllers, changes to these settings might impact their functionality!

+ LedFx will only change settings that you select with the checkbox

+
+
+ + toggleSetting("wled_preferred_mode", !settings.wled_preferences.wled_preferred_mode.user_enabled)} + inputProps={{ 'aria-label': 'primary checkbox' }} + /> + + Preferred WLED mode + + +
+
+ + toggleSetting("realtime_gamma_enabled", !settings.wled_preferences.realtime_gamma_enabled.user_enabled)} + inputProps={{ 'aria-label': 'primary checkbox' }} + /> + + Realtime Gamma + + +
+
+ + toggleSetting("force_max_brightness", !settings.wled_preferences.force_max_brightness.user_enabled)} + inputProps={{ 'aria-label': 'primary checkbox' }} + /> + + Force MaxBrightness + + +
+
+ + toggleSetting("realtime_dmx_mode", !settings.wled_preferences.realtime_dmx_mode.user_enabled)} + inputProps={{ 'aria-label': 'primary checkbox' }} + /> + + DMX mode + + +
+
+ + toggleSetting("start_universe_setting", !settings.wled_preferences.start_universe_setting.user_enabled)} + inputProps={{ 'aria-label': 'primary checkbox' }} + /> + onChangeSetting("start_universe_setting", e.target.value)} + disabled={!settings.wled_preferences.start_universe_setting.user_enabled} + className={classes.formControl} /> + +
+
+ + toggleSetting("dmx_address_start", !settings.wled_preferences.dmx_address_start.user_enabled)} + inputProps={{ 'aria-label': 'primary checkbox' }} + /> + onChangeSetting("dmx_address_start", e.target.value)} + disabled={!settings.wled_preferences.dmx_address_start.user_enabled} + className={classes.formControl} + /> + +
+
+ + toggleSetting("inactivity_timeout", !settings.wled_preferences.inactivity_timeout.user_enabled)} + inputProps={{ 'aria-label': 'primary checkbox' }} + /> + onChangeSetting("inactivity_timeout", e.target.value)} + disabled={!settings.wled_preferences.inactivity_timeout.user_enabled} + className={classes.formControl} + /> +
+
+
+
+
+
+ ) : (<>); +}; + +export default WledCard;