From b87d9f7772b682ce43c72d8bd01974d5b64c94b1 Mon Sep 17 00:00:00 2001 From: Alessandro DiMarco Date: Mon, 26 Mar 2018 14:37:15 -0400 Subject: [PATCH 1/3] Flat line empty data for sensor page --- src/containers/Sensors/SensorGraph.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/containers/Sensors/SensorGraph.js b/src/containers/Sensors/SensorGraph.js index 950f2550..a8d72cc3 100644 --- a/src/containers/Sensors/SensorGraph.js +++ b/src/containers/Sensors/SensorGraph.js @@ -21,7 +21,7 @@ import { GRAPH_COLORS } from './colors'; export class SensorGraph extends Component { - NUM_DAYS = 4; // eslint-disable-line + NUM_DAYS = 20; // eslint-disable-line constructor(props) { super(props); @@ -165,11 +165,19 @@ export class SensorGraph extends Component { spaceOfNode = this.findNodeLocation(sensorNode); nodeName = spaceOfNode.nodeName ? spaceOfNode.nodeName : nodeName; - return new TimeSeries({ + const ts = new TimeSeries({ name: nodeName, columns: ['time', nodeName], points, }); + + const tsAligned = ts.align({ + fieldSpec: nodeName, + period: '5m', + method: 'hold', + }); + + return tsAligned; } generateLineStyle = (line, index) => ({ @@ -229,6 +237,7 @@ export class SensorGraph extends Component { series={line} columns={[line.name()]} style={styler([this.state.lineStyles[line.name()]])} + breakLine={false} /> )); -- GitLab From 5f50c15269293bb7fc1a20beb072a322d7c0c184 Mon Sep 17 00:00:00 2001 From: Conrad Date: Tue, 27 Mar 2018 23:46:19 -0400 Subject: [PATCH 2/3] Add null values to timeseries data and show breakpoint --- src/containers/Sensors/SensorGraph.js | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/containers/Sensors/SensorGraph.js b/src/containers/Sensors/SensorGraph.js index a8d72cc3..fd87f191 100644 --- a/src/containers/Sensors/SensorGraph.js +++ b/src/containers/Sensors/SensorGraph.js @@ -78,7 +78,6 @@ export class SensorGraph extends Component { if (nodes.length === 0) { return; } - const styles = {}; nodes.forEach((line, index) => { styles[line.name()] = this.generateLineStyle(line, index); @@ -157,11 +156,29 @@ export class SensorGraph extends Component { let spaceOfNode = null; // Get all points + let prevPoint = null; const points = sensorNode.data.reduce((acc, i) => { + if (prevPoint) { + const curDate = new Date(i.ts); + const prevDate = new Date(prevPoint.ts); + const diffSeconds = (curDate.getTime() - prevDate.getTime()) / 1000; + // If no data for more than 10 minutes, add null values + if (diffSeconds > 600) { + // Create a new date object 5 minutes ahead of the previous date + let newDate = new Date(prevDate.getTime() + (300 * 1000)); + while (newDate.getTime() < curDate.getTime()) { + acc.push([newDate, NaN]); + newDate = new Date(newDate.getTime() + (300 * 1000)); + } + } + } acc.push([new Date(i.ts), i.value]); + + prevPoint = i; return acc; }, []); + spaceOfNode = this.findNodeLocation(sensorNode); nodeName = spaceOfNode.nodeName ? spaceOfNode.nodeName : nodeName; @@ -170,7 +187,6 @@ export class SensorGraph extends Component { columns: ['time', nodeName], points, }); - const tsAligned = ts.align({ fieldSpec: nodeName, period: '5m', @@ -237,7 +253,7 @@ export class SensorGraph extends Component { series={line} columns={[line.name()]} style={styler([this.state.lineStyles[line.name()]])} - breakLine={false} + breakLine /> )); -- GitLab From dc3a491be23593e158397471b24ea124467b3d55 Mon Sep 17 00:00:00 2001 From: Conrad Date: Wed, 28 Mar 2018 10:42:54 -0400 Subject: [PATCH 3/3] Remove alignment code --- src/containers/Sensors/SensorGraph.js | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/containers/Sensors/SensorGraph.js b/src/containers/Sensors/SensorGraph.js index fd87f191..29aa3eea 100644 --- a/src/containers/Sensors/SensorGraph.js +++ b/src/containers/Sensors/SensorGraph.js @@ -182,18 +182,11 @@ export class SensorGraph extends Component { spaceOfNode = this.findNodeLocation(sensorNode); nodeName = spaceOfNode.nodeName ? spaceOfNode.nodeName : nodeName; - const ts = new TimeSeries({ + return new TimeSeries({ name: nodeName, columns: ['time', nodeName], points, }); - const tsAligned = ts.align({ - fieldSpec: nodeName, - period: '5m', - method: 'hold', - }); - - return tsAligned; } generateLineStyle = (line, index) => ({ -- GitLab