import React, { Component, useState } from "react";
import { connect } from "react-redux";
import { RemoteService } from "../../remote";
import "./Automations.css";
import {
Segment,
Grid,
Icon,
Header,
Input,
Button,
List,
Dropdown,
Form,
Divider,
Checkbox,
Menu,
Label,
} from "semantic-ui-react";
const options = [
{ key: "equal", text: "=", value: "equal" },
{
key: "greater-than-or-equal",
text: "\u2265",
value: "greater-than-or-equal",
},
{
key: "greater-than",
text: ">",
value: "greater-than",
},
{
key: "less-than-or-equal",
text: "\u2264",
value: "less-than-or-equal",
},
{
key: "less-than",
text: "<",
value: "less-than",
},
];
const CreateTrigger = (props) => {
const devices = [
{ key: "Light-1", text: "Light-1", value: "Light-1" },
{ key: "Light-2", text: "Light-2", value: "Light-2" },
{ key: "SmartPlug-1", text: "SmartPlug-1", value: "SmartPlug-1" },
{ key: "SmartPlug-2", text: "SmartPlug-2", value: "SmartPlug-2" },
];
return (
props.inputChange(val)}
name="device"
search
selection
options={devices}
placeholder="Device"
/>
props.inputChange(val)}
name="operand"
compact
selection
options={options}
/>
props.inputChange(val)}
name="value"
type="number"
placeholder="Value"
/>
);
};
const SceneItem = (props) => {
return (
{props.sceneName}
);
};
const Trigger = ({ trigger }) => {
console.log(trigger);
const { device, operand, value } = trigger;
const symbol = options.filter((opt) => opt.key === operand)[0].text;
return (
);
};
const Automation = (props) => {
const [triggerList, setTrigger] = useState([]);
const [newTrigger, setNewTrigger] = useState({
device: null,
operand: null,
value: null,
});
const scenes = ["scene-1", "scene-2", "scene-3"];
const automationName = "Automation Name";
const checkNewTrigger = (trigger) => {
if (!trigger.device || !trigger.operand || !trigger.value) {
return {
result: false,
message: "There are missing fields",
};
}
const result = !triggerList.some(
(t) => t.device === trigger.device && t.operand === trigger.operand
);
return {
result: result,
message: result
? ""
: "You have already created a trigger for this device with the same conditions",
};
};
const addTrigger = () => {
const { result, message } = checkNewTrigger(newTrigger);
if (result) {
setTrigger((prevList) => [...prevList, newTrigger]);
} else {
alert(message);
}
};
const onInputChange = (val) => {
setNewTrigger({ ...newTrigger, [val.name]: val.value });
};
return (
{triggerList.length > 0 &&
triggerList.map((trigger) => (
))}
{scenes.length > 0 ? (
{scenes.map((scene) => (
))}
) : (
)}
);
};
class AutomationsPanel extends Component {
constructor(props) {
super(props);
this.state = {};
}
render() {
return (
);
}
}
const mapStateToProps = (state, _) => ({
activeRoom: state.active.activeRoom,
activeTab: state.active.activeTab,
});
const AutomationsPanelContainer = connect(
mapStateToProps,
RemoteService
)(AutomationsPanel);
export default AutomationsPanelContainer;