Added ability to download CSV of data series
This commit is contained in:
@@ -72,6 +72,7 @@ app.get('/json/tag/:id', fns.getTag); // Lists all
|
||||
app.get('/json/tag', fns.getAllTags); // Lists all tags in the scan list
|
||||
app.get('/json/val/:tag', fns.latestValueSingleTag); // Gets the latest value of a single tag
|
||||
app.get('/json/series/:tag/:hours', fns.seriesTagValues); // Gets all the values of a tag for the last X hours
|
||||
app.get('/json/CSV/:tag/:hours', fns.seriesCSV); // Gets all the values of a tag for the last X hours
|
||||
app.get('/json/all', fns.latestValueAllTags); // Gets the latest values of all tags in the scan list
|
||||
|
||||
app.get('*', angular);
|
||||
|
||||
@@ -122,6 +122,37 @@ exports.seriesTagValues = function(req, res){
|
||||
});
|
||||
};
|
||||
|
||||
exports.seriesCSV = function(req, res){
|
||||
var sqlite3 = require('sqlite3').verbose();
|
||||
var db = new sqlite3.Database(dbFile);
|
||||
|
||||
db.serialize(function(){
|
||||
var query = "SELECT * FROM vals WHERE tagID = ? AND dateAdded > DATETIME('now', '-1 HOUR')";
|
||||
var prepQuery = db.prepare(query);
|
||||
prepQuery.all(parseInt(req.params.tag), function(err, rows){
|
||||
prepQuery.finalize();
|
||||
db.close();
|
||||
if (err){
|
||||
console.log(err);
|
||||
res.json({status:"error", message:err, query:query});
|
||||
} else {
|
||||
var csvString = "";
|
||||
|
||||
for (var i= 0; i < rows.length; i++){
|
||||
var r = [rows[i].id, rows[i].val, rows[i].dateAdded];
|
||||
csvString = csvString + r.join(",") + "\r";
|
||||
}
|
||||
|
||||
res.set('Content-Type', 'text/csv');
|
||||
res.set('Content-Disposition', "attachment;filename=tagdata.csv");
|
||||
res.send(csvString);
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
exports.latestValueSingleTag = function(req, res){
|
||||
var sqlite3 = require('sqlite3').verbose();
|
||||
var db = new sqlite3.Database(dbFile);
|
||||
|
||||
@@ -13,17 +13,20 @@
|
||||
<div class="col-md=12">
|
||||
<h1>Error Caught!</h1>
|
||||
<pre>{{message}}</pre>
|
||||
<button ng-click="loadDashboard()" class="btn btn-large btn-danger">Reload Dashboard</button>
|
||||
<button ng-click="loadDashboard()" class="btn btn-large btn-danger"><i class="fa fa-refresh"></i> Reload Dashboard</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ng-if="!error" class="container">
|
||||
<div class="row">
|
||||
<button ng-click="loadDashboard()" class="btn btn-large btn-success">Reload Dashboard</button>
|
||||
<button ng-click="loadDashboard()" class="btn btn-large btn-success"><i class="fa fa-refresh"></i> Reload Dashboard</button>
|
||||
<div ng-repeat="val in vals">
|
||||
<div class="col-md-4" style="height:200px">
|
||||
<just-gage id="{{val.vanityName}}" min='val.min' max='val.max' value='val.val' options="{label:val.units,title:val.vanityName, decimals:2, refreshAnimationType:'bounce', startAnimationType:'bounce'}"></just-gage>
|
||||
<div style="text-align:center">
|
||||
<a href="/#/tag/{{val.t_id}}" class="btn btn-large btn-primary"><i class="fa fa-line-chart"></i> View Data</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
<style>
|
||||
.padMe {
|
||||
margin: 10px 20px;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
|
||||
<div ng-if="loading" class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-12 well" style="text-align:center;">
|
||||
@@ -13,14 +21,15 @@
|
||||
<div class="col-md=12">
|
||||
<h1>Error Caught!</h1>
|
||||
<pre>{{message}}</pre>
|
||||
<button ng-click="loadTagVals()" class="btn btn-large btn-danger">Reload Values</button>
|
||||
<button ng-click="loadTagVals()" class="btn btn-large btn-danger"><i class="fa fa-refresh"></i> Reload Values</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ng-if="!error" class="container">
|
||||
<div class="row">
|
||||
<button ng-click="loadTagVals()" class="btn btn-large btn-success">Reload Values</button>
|
||||
<button ng-click="loadTagVals()" class="btn btn-large btn-success padMe"><i class="fa fa-refresh"></i> Reload Values</button>
|
||||
<a href="/json/CSV/{{tag.id}}/24" class="btn btn-large btn-primary padMe"><i class="fa fa-download"></i> Download Data</a>
|
||||
<div class="col-md-8">
|
||||
<div class="tagChart" style="height:400px;">
|
||||
<linechart data="data" options="options"></linechart>
|
||||
|
||||
Reference in New Issue
Block a user