diff --git a/src/containers/BuildingArea/BuildingAreaTable.js b/src/containers/BuildingArea/BuildingAreaTable.js
index 909c814e59bca6684796f96d030c31c63004ce7d..4f6613c4226a93b662bc5ad034f36af48eda24ab 100644
--- a/src/containers/BuildingArea/BuildingAreaTable.js
+++ b/src/containers/BuildingArea/BuildingAreaTable.js
@@ -2,6 +2,7 @@ import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
+import { Container, Row, Col, ListGroup, ListGroupItem } from 'reactstrap';
import { loadApartments, loadCommonAreas, loadServiceAreas } from './actions';
@@ -16,15 +17,23 @@ class BuildingAreaTable extends Component {
renderHeading = (heading) => {
return (
-
+
+
);
}
+ renderSpaces = (spaces) => {
+ return spaces.map(spc => (
+
+ {spc.description} node on floor {spc.floor}
+
+ ));
+ }
+
renderApartments = () => {
return this.props.buildingArea.apartments.map(apt => {
return (
@@ -36,36 +45,50 @@ class BuildingAreaTable extends Component {
Apartment {apt.number}
-
+
+ {this.renderSpaces(apt.spaces)}
+
);
});
}
+ renderArea = (incArea) => {
+ return incArea.map(area => {
+ return (
+
+ {this.renderSpaces(area.spaces)}
+
+ );
+ });
+ }
+
render() {
return (
-
- {this.renderHeading('Apartments')}
+
-
-
- {this.renderApartments()}
-
-
+ {this.renderHeading('Apartments')}
+
+ {this.renderApartments()}
+
{this.renderHeading('Common Area')}
+
+ {this.renderArea(this.props.buildingArea.commonAreas)}
+
{this.renderHeading('Service Area')}
-
+
+ {this.renderArea(this.props.buildingArea.serviceAreas)}
+
+
+
);
}
}
BuildingAreaTable.propTypes = {
+ buildingId: PropTypes.string,
loadApartments: PropTypes.func,
loadCommonAreas: PropTypes.func,
loadServiceAreas: PropTypes.func,
diff --git a/src/containers/Sensors/SensorGraph.js b/src/containers/Sensors/SensorGraph.js
index 659acee18550cc8d4618a7aff4f2c3960796e099..467db2c68d097cd22052cad8ccb554a9c61b9d23 100644
--- a/src/containers/Sensors/SensorGraph.js
+++ b/src/containers/Sensors/SensorGraph.js
@@ -84,18 +84,84 @@ class Sensors extends Component {
});
}
+ findNodeInArea = (incArea, node) => {
+ let spaceInArea = null;
+ let spaceArea = null;
+
+ // find space in area
+ incArea.every(area => {
+
+ spaceInArea = area.spaces.reduce((acc, spc) => {
+ if (spc.id === node.space_id) {
+ return spc;
+ }
+ return acc;
+ }, {});
+
+ if (Object.keys(spaceInArea).length !== 0) {
+ spaceArea = area;
+ return false;
+ }
+
+ return true;
+ });
+
+ return { spaceArea, spaceInArea };
+ }
+
+ findNodeLocation = (sensorNode) => {
+ const { buildingArea } = this.props;
+ let spaceOfNode = null;
+ let nodeName = '';
+
+ if (!buildingArea.apartmentsLoading) {
+ const temp = this.findNodeInArea(this.props.buildingArea.apartments, sensorNode);
+
+ if (temp.spaceArea) {
+ spaceOfNode = temp;
+ nodeName = `Apt ${spaceOfNode.spaceArea.number} ${spaceOfNode.spaceInArea.description}`;
+ }
+ }
+
+ if (!buildingArea.commonAreasLoading) {
+ const temp = this.findNodeInArea(this.props.buildingArea.commonAreas, sensorNode);
+
+ if (temp.spaceArea) {
+ spaceOfNode = temp;
+ nodeName = `Common area ${spaceOfNode.spaceInArea.description}`;
+ }
+ }
+
+ if (!buildingArea.serviceAreasLoading) {
+ const temp = this.findNodeInArea(this.props.buildingArea.serviceAreas, sensorNode);
+
+ if (temp.spaceArea) {
+ spaceOfNode = temp;
+ nodeName = `Service area ${spaceOfNode.spaceInArea.description}`;
+ }
+ }
+
+ return { spaceOfNode, nodeName };
+ }
+
generateTimeSeries = (sensorNode) => {
+ let nodeName = `node ${sensorNode.id} `;
+ let spaceOfNode = null;
+
+ // Get all points
const points = sensorNode.data.reduce((acc, i) => {
if (i.name === 'Temperature') {
acc.push([new Date(i.ts), i.value]);
}
-
return acc;
}, []);
+ spaceOfNode = this.findNodeLocation(sensorNode);
+ nodeName = spaceOfNode.nodeName ? spaceOfNode.nodeName : nodeName;
+
return new TimeSeries({
- name: `node ${sensorNode.id}`,
- columns: ['time', `node ${sensorNode.id}`],
+ name: nodeName,
+ columns: ['time', nodeName],
points,
});
}
@@ -167,15 +233,14 @@ class Sensors extends Component {
- {this.state.showChart ?
+ {this.state.showChart &&
@@ -221,6 +286,7 @@ Sensors.propTypes = {
className: PropTypes.string,
loadAllNodeData: PropTypes.func,
sensors: PropTypes.object, // eslint-disable-line
+ buildingArea: PropTypes.object, // eslint-disable-line
};
Sensors.defaultProps = {
@@ -230,6 +296,7 @@ Sensors.defaultProps = {
const mapStateToProps = state => (
{
sensors: state.sensors,
+ buildingArea: state.buildingArea,
}
);
diff --git a/src/containers/Sensors/Sensors.js b/src/containers/Sensors/Sensors.js
index 00e470f8ca8f07b1d956715306a3f74c469f013b..bd8b6e1e8e12b00ba53612534b3f9fa998da7d46 100644
--- a/src/containers/Sensors/Sensors.js
+++ b/src/containers/Sensors/Sensors.js
@@ -29,7 +29,9 @@ class Sensors extends Component {
className="mt-2"
buildingId={this.props.buildingId}
/>
-
+
);
}