From 6646dea1e6b152d019e2718b43a1b109b20fde89 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Thu, 14 Dec 2017 16:22:26 -0500 Subject: [PATCH 1/8] Pass buildingId to Sensors page --- src/containers/Sensors/Sensors.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/containers/Sensors/Sensors.js b/src/containers/Sensors/Sensors.js index d5d9f695..bd8b6e1e 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} /> - + ); } -- GitLab From 6257204f391ae6dad006d8f573e0f6dc2e2d24b8 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Thu, 14 Dec 2017 16:22:53 -0500 Subject: [PATCH 2/8] Render apartment space --- .../BuildingArea/BuildingAreaTable.js | 51 +++++++++++++++---- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/src/containers/BuildingArea/BuildingAreaTable.js b/src/containers/BuildingArea/BuildingAreaTable.js index 4eee9309..57f965e7 100644 --- a/src/containers/BuildingArea/BuildingAreaTable.js +++ b/src/containers/BuildingArea/BuildingAreaTable.js @@ -2,14 +2,17 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; -import { loadApartments } from './actions'; +import { Container, Row, ListGroup, ListGroupItem } from 'reactstrap'; +import { loadApartments, loadCommonAreas, loadServiceAreas } from './actions'; class BuildingAreaTable extends Component { state = { } componentDidMount() { - this.props.loadApartments({}); + this.props.loadApartments({ verbose: '', building_id: this.props.buildingId }); + this.props.loadCommonAreas({}); + this.props.loadServiceAreas({}); } renderHeading = (heading) => { @@ -23,6 +26,14 @@ class BuildingAreaTable extends Component { ); } + renderSpaces = (spaces) => { + return spaces.map(spc => ( + + {spc.description} node on floor {spc.floor} + + )); + } + renderApartments = () => { return this.props.buildingArea.apartments.map(apt => { return ( @@ -34,11 +45,23 @@ class BuildingAreaTable extends Component {

Apartment {apt.number}

-
-
-

Node

-
-
+ + {this.renderSpaces(apt.spaces)} + + + ); + }); + } + + renderCommonArea = (incArea) => { + return incArea.map(area => { + return ( +
  • +

    Node {area.id} on floor {area.floor}

  • ); }); @@ -46,25 +69,29 @@ class BuildingAreaTable extends Component { render() { return ( -
    + {this.renderHeading('Apartments')} -
    +
      {this.renderApartments()}
    -
    + {this.renderHeading('Common Area')} + {this.renderCommonArea(this.props.buildingArea.commonAreas)} {this.renderHeading('Service Area')} -
    + ); } } BuildingAreaTable.propTypes = { + buildingId: PropTypes.string, loadApartments: PropTypes.func, + loadCommonAreas: PropTypes.func, + loadServiceAreas: PropTypes.func, buildingArea: PropTypes.object, // eslint-disable-line }; @@ -75,6 +102,8 @@ const mapStateToProps = state => ({ const mapDispatchToProps = dispatch => ( bindActionCreators({ loadApartments, + loadCommonAreas, + loadServiceAreas, }, dispatch) ); -- GitLab From 2a545972bb3b2dfd3a266bb69c629ddc84e273e3 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Fri, 15 Dec 2017 11:03:47 -0500 Subject: [PATCH 3/8] Render area and heading in building area table --- .../BuildingArea/BuildingAreaTable.js | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/containers/BuildingArea/BuildingAreaTable.js b/src/containers/BuildingArea/BuildingAreaTable.js index 57f965e7..ea16fbb9 100644 --- a/src/containers/BuildingArea/BuildingAreaTable.js +++ b/src/containers/BuildingArea/BuildingAreaTable.js @@ -2,7 +2,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; -import { Container, Row, ListGroup, ListGroupItem } from 'reactstrap'; +import { Container, Row, Col, ListGroup, ListGroupItem } from 'reactstrap'; import { loadApartments, loadCommonAreas, loadServiceAreas } from './actions'; @@ -11,8 +11,8 @@ class BuildingAreaTable extends Component { componentDidMount() { this.props.loadApartments({ verbose: '', building_id: this.props.buildingId }); - this.props.loadCommonAreas({}); - this.props.loadServiceAreas({}); + this.props.loadCommonAreas({ verbose: '', building_id: this.props.buildingId }); + this.props.loadServiceAreas({ verbose: '', building_id: this.props.buildingId }); } renderHeading = (heading) => { @@ -53,7 +53,7 @@ class BuildingAreaTable extends Component { }); } - renderCommonArea = (incArea) => { + renderArea = (incArea) => { return incArea.map(area => { return (
  • -

    Node {area.id} on floor {area.floor}

    + + {this.renderSpaces(area.spaces)} +
  • ); }); @@ -69,19 +71,21 @@ class BuildingAreaTable extends Component { render() { return ( - + {this.renderHeading('Apartments')} -
      + {this.renderApartments()} -
    +
    {this.renderHeading('Common Area')} - {this.renderCommonArea(this.props.buildingArea.commonAreas)} + {this.renderArea(this.props.buildingArea.commonAreas)} {this.renderHeading('Service Area')} + {this.renderArea(this.props.buildingArea.serviceAreas)} +
    ); } -- GitLab From 96e42b5446139168a81e8aa87169844debefee1c Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Fri, 15 Dec 2017 11:05:20 -0500 Subject: [PATCH 4/8] Use reactstrap classes --- src/containers/BuildingArea/BuildingAreaTable.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/containers/BuildingArea/BuildingAreaTable.js b/src/containers/BuildingArea/BuildingAreaTable.js index ea16fbb9..967814b1 100644 --- a/src/containers/BuildingArea/BuildingAreaTable.js +++ b/src/containers/BuildingArea/BuildingAreaTable.js @@ -17,12 +17,12 @@ class BuildingAreaTable extends Component { renderHeading = (heading) => { return ( -
    -
    + +

    {heading}


    -
    -
    + + ); } -- GitLab From ba940d9f54334c24e733394783fa29d04222fb66 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Fri, 15 Dec 2017 16:45:26 -0500 Subject: [PATCH 5/8] Find node location method --- src/containers/Sensors/SensorGraph.js | 54 ++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 6 deletions(-) diff --git a/src/containers/Sensors/SensorGraph.js b/src/containers/Sensors/SensorGraph.js index 659acee1..a123a3c0 100644 --- a/src/containers/Sensors/SensorGraph.js +++ b/src/containers/Sensors/SensorGraph.js @@ -84,18 +84,59 @@ class Sensors extends Component { }); } + findNodeLocation = (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 }; + } + generateTimeSeries = (sensorNode) => { + const { buildingArea } = this.props; + 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; }, []); + // Find space + if (!buildingArea.apartmentsLoading) { + const temp = this.findNodeLocation(this.props.buildingArea.apartments, sensorNode); + + if (temp.spaceArea) { + spaceOfNode = temp; + nodeName = `Apt ${spaceOfNode.spaceArea.number} ${spaceOfNode.spaceInArea.description}`; + } + } + + // console.log(spaceOfNode); + return new TimeSeries({ - name: `node ${sensorNode.id}`, - columns: ['time', `node ${sensorNode.id}`], + name: nodeName, + columns: ['time', nodeName], points, }); } @@ -167,15 +208,14 @@ class Sensors extends Component {
    - {this.state.showChart ? + {this.state.showChart && ({ key: i.name(), label: i.name() }))} style={styler(Object.keys(this.state.lineStyles).map(key => ( this.state.lineStyles[key])) )} type="line" - /> : - null + /> }
    @@ -221,6 +261,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 +271,7 @@ Sensors.defaultProps = { const mapStateToProps = state => ( { sensors: state.sensors, + buildingArea: state.buildingArea, } ); -- GitLab From d363550ab5f84af275238f29647a1516ed831fb1 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Fri, 15 Dec 2017 16:46:32 -0500 Subject: [PATCH 6/8] Rename method to findNodeInArea --- src/containers/Sensors/SensorGraph.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/containers/Sensors/SensorGraph.js b/src/containers/Sensors/SensorGraph.js index a123a3c0..f033b7dc 100644 --- a/src/containers/Sensors/SensorGraph.js +++ b/src/containers/Sensors/SensorGraph.js @@ -84,7 +84,7 @@ class Sensors extends Component { }); } - findNodeLocation = (incArea, node) => { + findNodeInArea = (incArea, node) => { let spaceInArea = null; let spaceArea = null; @@ -124,7 +124,7 @@ class Sensors extends Component { // Find space if (!buildingArea.apartmentsLoading) { - const temp = this.findNodeLocation(this.props.buildingArea.apartments, sensorNode); + const temp = this.findNodeInArea(this.props.buildingArea.apartments, sensorNode); if (temp.spaceArea) { spaceOfNode = temp; -- GitLab From bd6a84e7a9dfcce1337089ad6aee4ad07bac6b0d Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Fri, 15 Dec 2017 17:05:06 -0500 Subject: [PATCH 7/8] Find node location method and change name of node --- src/containers/Sensors/SensorGraph.js | 49 ++++++++++++++++++++------- 1 file changed, 37 insertions(+), 12 deletions(-) diff --git a/src/containers/Sensors/SensorGraph.js b/src/containers/Sensors/SensorGraph.js index f033b7dc..467db2c6 100644 --- a/src/containers/Sensors/SensorGraph.js +++ b/src/containers/Sensors/SensorGraph.js @@ -109,20 +109,11 @@ class Sensors extends Component { return { spaceArea, spaceInArea }; } - generateTimeSeries = (sensorNode) => { + findNodeLocation = (sensorNode) => { const { buildingArea } = this.props; - let nodeName = `node ${sensorNode.id} `; let spaceOfNode = null; + let nodeName = ''; - // Get all points - const points = sensorNode.data.reduce((acc, i) => { - if (i.name === 'Temperature') { - acc.push([new Date(i.ts), i.value]); - } - return acc; - }, []); - - // Find space if (!buildingArea.apartmentsLoading) { const temp = this.findNodeInArea(this.props.buildingArea.apartments, sensorNode); @@ -132,7 +123,41 @@ class Sensors extends Component { } } - // console.log(spaceOfNode); + 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: nodeName, -- GitLab From d2e1784d5911571d8337c2df49a241782f13d6cc Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Mon, 18 Dec 2017 11:56:22 -0500 Subject: [PATCH 8/8] Fix layout in BuildingAreaTable --- .../BuildingArea/BuildingAreaTable.js | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/src/containers/BuildingArea/BuildingAreaTable.js b/src/containers/BuildingArea/BuildingAreaTable.js index 967814b1..77a7a79a 100644 --- a/src/containers/BuildingArea/BuildingAreaTable.js +++ b/src/containers/BuildingArea/BuildingAreaTable.js @@ -18,7 +18,7 @@ class BuildingAreaTable extends Component { renderHeading = (heading) => { return ( - +

    {heading}


    @@ -56,35 +56,31 @@ class BuildingAreaTable extends Component { renderArea = (incArea) => { return incArea.map(area => { return ( -
  • - - {this.renderSpaces(area.spaces)} - -
  • + + {this.renderSpaces(area.spaces)} + ); }); } render() { return ( - - {this.renderHeading('Apartments')} + + {this.renderHeading('Apartments')} - - {this.renderApartments()} - + {this.renderApartments()} {this.renderHeading('Common Area')} - {this.renderArea(this.props.buildingArea.commonAreas)} + + {this.renderArea(this.props.buildingArea.commonAreas)} + {this.renderHeading('Service Area')} - {this.renderArea(this.props.buildingArea.serviceAreas)} + + {this.renderArea(this.props.buildingArea.serviceAreas)} + ); -- GitLab