From 8b3f24b5dc1372eaa6776b39bed7bb2914606f96 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Wed, 16 Jun 2021 14:23:58 -0700 Subject: [PATCH] Updated computer power state timeline export to ISO format, added local browser time. --- views/default.handlebars | 3 +-- webserver.js | 13 ++++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/views/default.handlebars b/views/default.handlebars index 6e4e4564..277c7f9e 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -7242,8 +7242,7 @@ ++count; date = new Date(date.getTime() - (1000 * 60 * 60 * 24)); // Substract one day } - - QH('p10html2', '' + x + '
' + "Day" + '' + "7 Day Power State" + '
'); + QH('p10html2', '' + x + '
' + "Day" + '' + "7 Day Power State" + '
'); } // Return a color for the given power state diff --git a/webserver.js b/webserver.js index 0a55175f..7aecfe76 100644 --- a/webserver.js +++ b/webserver.js @@ -5208,17 +5208,24 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) { // Check if we have right to this node if (obj.GetNodeRights(user, node.meshid, node._id) == 0) { res.sendStatus(401); return; } + // Get local time offset + var localTimeOffset = 0; + if (req.query.tf != null) { localTimeOffset = parseInt(req.query.tf) } + if (isNaN(localTimeOffset)) { localTimeOffset = 0; } + // Get the list of power events and send them setContentDispositionHeader(res, 'application/octet-stream', 'powerevents.csv', null, 'powerevents.csv'); obj.db.getPowerTimeline(node._id, function (err, docs) { - var xevents = ['Time, State, Previous State'], prevState = 0; + var xevents = ['UTC Time, Local Time, State, Previous State'], prevState = 0; for (var i in docs) { if (docs[i].power != prevState) { prevState = docs[i].power; + var localTime = new Date(docs[i].time.getTime() + (localTimeOffset * 60000)).toISOString(); + localTime = localTime.substring(0, localTime.length - 1); if (docs[i].oldPower != null) { - xevents.push(docs[i].time.toString() + ',' + docs[i].power + ',' + docs[i].oldPower); + xevents.push(docs[i].time.toISOString() + ',' + localTime + ',' + docs[i].power + ',' + docs[i].oldPower); } else { - xevents.push(docs[i].time.toString() + ',' + docs[i].power); + xevents.push(docs[i].time.toISOString() + ',' + localTime + ',' + docs[i].power); } } }