diff --git a/smart-hut/src/components/dashboard/devices/Curtain.js b/smart-hut/src/components/dashboard/devices/Curtain.js
index 907e2ef..de18fda 100644
--- a/smart-hut/src/components/dashboard/devices/Curtain.js
+++ b/smart-hut/src/components/dashboard/devices/Curtain.js
@@ -2,30 +2,29 @@ import React, { Component } from "react";
import "./Curtains.css";
import { RemoteService } from "../../../remote";
import { connect } from "react-redux";
-import { Slider } from "@material-ui/core";
class Curtain extends Component {
constructor(props) {
super(props);
- this.state = { intensity: this.props.device.intensity, timeout: null };
+ this.state = { intensity: this.props.stateOrDevice.intensity, timeout: null };
this.setIntensity = this.setIntensity.bind(this);
}
//getters
get turnedOn() {
- return this.props.device.on;
+ return this.props.stateOrDevice.on;
}
get intensity() {
- return this.props.device.intensity || 0;
+ return this.props.stateOrDevice.intensity || 0;
}
onClickDevice = () => {
const on = !this.turnedOn;
if(this.props.tab==="Devices"){
this.props
- .saveDevice({ ...this.props.device, on })
+ .saveDevice({ ...this.props.stateOrDevice, on })
.catch((err) => console.error("curtains update error", err));
}else{
this.props.updateState({ id: this.props.sceneState.id, on: on },this.props.sceneState.kind);
@@ -55,7 +54,7 @@ class Curtain extends Component {
const intensity = Math.round(this.state.intensity);
if(this.props.tab==="Devices"){
this.props
- .saveDevice({ ...this.props.device, intensity })
+ .saveDevice({ ...this.props.stateOrDevice, intensity })
.catch((err) => console.error("curtain update error", err));
}else{
this.props.updateState({ id: this.props.sceneState.id, intensity: intensity },this.props.sceneState.kind);
@@ -67,7 +66,7 @@ class Curtain extends Component {
this.setIntensity(1);
this.saveIntensity();
} else {
- this.setIntensity(this.props.device.intensity / 100 + 0.1);
+ this.setIntensity(this.props.stateOrDevice.intensity / 100 + 0.1);
this.saveIntensity();
}
};
@@ -86,15 +85,15 @@ class Curtain extends Component {
{" "}
- {Math.round(this.props.device.intensity)}%
+ {Math.round(this.props.stateOrDevice.intensity)}%
({
- device: state.devices[ownProps.id],
+ get stateOrDevice(){
+ if(state.active.activeTab==="Devices"){
+ return state.devices[ownProps.id];
+ }else{
+ const sceneState = state.sceneStates[ownProps.id];
+ return state.devices[sceneState];
+ }
+ },
+ //device: state.devices[ownProps.id],
});
const CurtainContainer = connect(mapStateToProps, RemoteService)(Curtain);
export default CurtainContainer;
diff --git a/smart-hut/src/components/dashboard/devices/Dimmer.js b/smart-hut/src/components/dashboard/devices/Dimmer.js
index 2d9c105..ee41e3d 100644
--- a/smart-hut/src/components/dashboard/devices/Dimmer.js
+++ b/smart-hut/src/components/dashboard/devices/Dimmer.js
@@ -64,7 +64,7 @@ export class KnobDimmerComponent extends Component {
super(props);
this.state = {
- intensity: this.props.device.intensity || 0,
+ intensity: this.props.stateOrDevice.intensity || 0,
timeout: null,
};
@@ -129,7 +129,14 @@ export class KnobDimmerComponent extends Component {
}
const mapStateToProps = (state, ownProps) => ({
- device: state.devices[ownProps.id],
+ get stateOrDevice(){
+ if(state.active.activeTab==="Devices"){
+ return state.devices[ownProps.id];
+ }else{
+ const sceneState = state.sceneStates[ownProps.id];
+ return state.devices[sceneState];
+ }
+ },
});
const conn = connect(mapStateToProps, RemoteService);
diff --git a/smart-hut/src/components/dashboard/devices/Light.js b/smart-hut/src/components/dashboard/devices/Light.js
index 5ed15c1..161a791 100644
--- a/smart-hut/src/components/dashboard/devices/Light.js
+++ b/smart-hut/src/components/dashboard/devices/Light.js
@@ -35,7 +35,7 @@ import { connect } from "react-redux";
class Light extends Component {
constructor(props) {
super(props);
- this.state = { intensity: this.props.device.intensity, timeout: null };
+ this.state = { intensity: this.props.stateOrDevice.intensity, timeout: null };
this.iconOn = "/img/lightOn.svg";
this.iconOff = "/img/lightOff.svg";
@@ -44,24 +44,24 @@ class Light extends Component {
}
componentDidUpdate(prevProps, prevState) {
- if (this.props.device.intensity !== prevProps.device.intensity) {
- this.setState({ intensity: this.props.device.intensity, timeout: null });
+ if (this.props.stateOrDevice.intensity !== prevProps.stateOrDevice.intensity) {
+ this.setState({ intensity: this.props.stateOrDevice.intensity, timeout: null });
}
}
get turnedOn() {
- return this.props.device.on;
+ return this.props.stateOrDevice.on;
}
get intensity() {
- return this.props.device.intensity || 0;
+ return this.props.stateOrDevice.intensity || 0;
}
onClickDevice = () => {
const on = !this.turnedOn;
if(this.props.tab==="Devices"){
this.props
- .saveDevice({ ...this.props.device, on })
+ .saveDevice({ ...this.props.stateOrDevice, on })
.catch((err) => console.error("regular light update error", err));
}else{
this.props.updateState({ id: this.props.sceneState.id, on: on }, this.props.sceneState.kind);
@@ -95,7 +95,7 @@ class Light extends Component {
const intensity = Math.round(this.state.intensity);
if(this.props.tab==="Devices"){
this.props
- .saveDevice({ ...this.props.device, intensity })
+ .saveDevice({ ...this.props.stateOrDevice, intensity })
.catch((err) => console.error("regular light update error", err));
}else{
this.props.updateState({ id: this.props.sceneState.id, intensity: intensity }, this.props.sceneState.kind);
@@ -147,7 +147,7 @@ class Light extends Component {
return (
- {this.props.device.kind === "dimmableLight"
+ {this.props.stateOrDevice.kind === "dimmableLight"
? intensityLightView
: normalLightView}
@@ -156,7 +156,15 @@ class Light extends Component {
}
const mapStateToProps = (state, ownProps) => ({
- device: state.devices[ownProps.id],
+ get stateOrDevice(){
+ if(state.active.activeTab==="Devices"){
+ return state.devices[ownProps.id];
+ }else{
+ const sceneState = state.sceneStates[ownProps.id];
+ return state.devices[sceneState];
+ }
+ },
+ //device: state.devices[ownProps.id],
});
const LightContainer = connect(mapStateToProps, RemoteService)(Light);
diff --git a/smart-hut/src/components/dashboard/devices/Sensor.js b/smart-hut/src/components/dashboard/devices/Sensor.js
index 0f7e0bd..a38a644 100644
--- a/smart-hut/src/components/dashboard/devices/Sensor.js
+++ b/smart-hut/src/components/dashboard/devices/Sensor.js
@@ -65,20 +65,20 @@ class Sensor extends Component {
componentDidUpdate(prevProps) {
if (
- this.props.device.kind === "sensor" &&
- this.props.device.value !== prevProps.device.value
+ this.props.stateOrDevice.kind === "sensor" &&
+ this.props.stateOrDevice.value !== prevProps.stateOrDevice.value
) {
- this.setState({ value: this.props.device.value });
+ this.setState({ value: this.props.stateOrDevice.value });
} else if (
- this.props.device.kind === "motionSensor" &&
- this.props.device.detected !== prevProps.device.detected
+ this.props.stateOrDevice.kind === "motionSensor" &&
+ this.props.stateOrDevice.detected !== prevProps.stateOrDevice.detected
) {
- this.setState({ motion: true, detected: this.props.device.detected });
+ this.setState({ motion: true, detected: this.props.stateOrDevice.detected });
}
}
componentDidMount() {
- if (this.props.device.kind === "sensor") {
+ if (this.props.stateOrDevice.kind === "sensor") {
switch (this.props.device.sensor) {
case "TEMPERATURE":
this.units = "ºC";
@@ -102,11 +102,11 @@ class Sensor extends Component {
this.units = "";
}
this.setState({
- value: this.props.device.value,
+ value: this.props.stateOrDevice.value,
});
} else {
this.setState({
- detected: this.props.device.detected,
+ detected: this.props.stateOrDevice.detected,
motion: true,
});
}
@@ -149,7 +149,7 @@ class Sensor extends Component {
({
- device: state.devices[ownProps.id],
+ get stateOrDevice(){
+ if(state.active.activeTab==="Devices"){
+ return state.devices[ownProps.id];
+ }else{
+ const sceneState = state.sceneStates[ownProps.id];
+ return state.devices[sceneState];
+ }
+ },
});
const SensorContainer = connect(mapStateToProps, RemoteService)(Sensor);
export default SensorContainer;
diff --git a/smart-hut/src/components/dashboard/devices/SmartPlug.js b/smart-hut/src/components/dashboard/devices/SmartPlug.js
index 327558e..c88e762 100644
--- a/smart-hut/src/components/dashboard/devices/SmartPlug.js
+++ b/smart-hut/src/components/dashboard/devices/SmartPlug.js
@@ -24,18 +24,18 @@ class SmartPlug extends Component {
}
get turnedOn() {
- return this.props.device.on;
+ return this.props.stateOrDevice.on;
}
get energyConsumed() {
- return (this.props.device.totalConsumption / 1000).toFixed(3);
+ return (this.props.stateOrDevice.totalConsumption / 1000).toFixed(3);
}
onClickDevice = () => {
const on = !this.turnedOn;
if(this.props.tab==="Devices"){
this.props
- .saveDevice({ ...this.props.device, on })
+ .saveDevice({ ...this.props.stateOrDevice, on })
.catch((err) => console.error("smart plug update error", err));
}else{
this.props.updateState({ id: this.props.sceneState.id, on: on},this.props.sceneState.kind);
@@ -68,7 +68,14 @@ class SmartPlug extends Component {
}
const mapStateToProps = (state, ownProps) => ({
- device: state.devices[ownProps.id],
+ get stateOrDevice(){
+ if(state.active.activeTab==="Devices"){
+ return state.devices[ownProps.id];
+ }else{
+ const sceneState = state.sceneStates[ownProps.id];
+ return state.devices[sceneState];
+ }
+ },
});
const SmartPlugContainer = connect(mapStateToProps, RemoteService)(SmartPlug);
export default SmartPlugContainer;
diff --git a/smart-hut/src/components/dashboard/devices/Thermostats.js b/smart-hut/src/components/dashboard/devices/Thermostats.js
index a079a4e..0a1e086 100644
--- a/smart-hut/src/components/dashboard/devices/Thermostats.js
+++ b/smart-hut/src/components/dashboard/devices/Thermostats.js
@@ -19,11 +19,11 @@ class Thermostats extends Component {
constructor(props) {
super(props);
this.state = {
- targetTemperature: this.props.device.targetTemperature,
- internalSensorTemperature: this.props.device.internalSensorTemperature,
- mode: this.props.device.mode,
- measuredTemperature: this.props.device.measuredTemperature,
- useExternalSensors: this.props.device.useExternalSensors,
+ targetTemperature: this.props.stateOrDevice.targetTemperature,
+ internalSensorTemperature: this.props.stateOrDevice.internalSensorTemperature,
+ mode: this.props.stateOrDevice.mode,
+ measuredTemperature: this.props.stateOrDevice.measuredTemperature,
+ useExternalSensors: this.props.stateOrDevice.useExternalSensors,
timeout: null,
};
this.setMode = this.setMode.bind(this);
@@ -35,23 +35,23 @@ class Thermostats extends Component {
//getters
get getMode() {
- return this.props.device.mode;
+ return this.props.stateOrDevice.mode;
}
get getTargetTemperature() {
- return this.props.device.targetTemperature;
+ return this.props.stateOrDevice.targetTemperature;
}
get getInternalSensorTemperature() {
- return this.props.device.internalSensorTemperature;
+ return this.props.stateOrDevice.internalSensorTemperature;
}
get getMeasuredTemperature() {
- return this.props.device.measuredTemperature;
+ return this.props.stateOrDevice.measuredTemperature;
}
get getUseExternalSensors() {
- return this.props.device.useExternalSensors;
+ return this.props.stateOrDevice.useExternalSensors;
}
setMode(mode) {
@@ -65,7 +65,7 @@ class Thermostats extends Component {
const turnOn = mode;
if(this.props.tab==="Devices"){
this.props
- .saveDevice({ ...this.props.device, turnOn })
+ .saveDevice({ ...this.props.stateOrDevice, turnOn })
.catch((err) => console.error("thermostat update error", err));
}else{
this.props.updateState({ id: this.props.sceneState.id, turnOn: turnOn },this.props.sceneState.kind);
@@ -76,7 +76,7 @@ class Thermostats extends Component {
const on = !this.turnedOn;
if(this.props.tab==="Devices"){
this.props
- .saveDevice({ ...this.props.device, on })
+ .saveDevice({ ...this.props.stateOrDevice, on })
.catch((err) => console.error("thermostat update error", err));
}else{
this.props.updateState({ id: this.props.sceneState.id, on: on },this.props.sceneState.kind);
@@ -87,7 +87,7 @@ class Thermostats extends Component {
saveTargetTemperature(targetTemperature) {
if(this.props.tab==="Devices"){
this.props
- .saveDevice({ ...this.props.device, targetTemperature })
+ .saveDevice({ ...this.props.stateOrDevice, targetTemperature })
.catch((err) => console.error("thermostat update error", err));
}else{
this.props.updateState({id: this.props.sceneState.id, targetTemperature: targetTemperature},this.props.sceneState.kind);
@@ -153,7 +153,7 @@ class Thermostats extends Component {
return (
-
{this.props.device.name}
+
{this.props.stateOrDevice.name}
- {this.props.device.targetTemperature}ºC
+ {this.props.stateOrDevice.targetTemperature}ºC
this.handleChange(event.target.value)}
id="targetTemperature"
/>
- {this.props.device.mode}
+ {this.props.stateOrDevice.mode}
);
@@ -183,7 +183,14 @@ class Thermostats extends Component {
}
const mapStateToProps = (state, ownProps) => ({
- device: state.devices[ownProps.id],
+ get stateOrDevice(){
+ if(state.active.activeTab==="Devices"){
+ return state.devices[ownProps.id];
+ }else{
+ const sceneState = state.sceneStates[ownProps.id];
+ return state.devices[sceneState];
+ }
+ },
});
const ThermostatContainer = connect(