Removed unused files, fixed dashboard
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -2,3 +2,5 @@
|
||||
*/bower_components/*
|
||||
*/node_modules/*
|
||||
*.log
|
||||
sftp-config.json
|
||||
.remote-sync.json
|
||||
|
||||
98
www/app.js
98
www/app.js
@@ -1,98 +0,0 @@
|
||||
var express = require('express'),
|
||||
path = require('path'),
|
||||
fs = require('fs'),
|
||||
logger = require('morgan'),
|
||||
methodOverride = require('method-override'),
|
||||
bodyParser = require('body-parser'),
|
||||
errorHandler = require('errorhandler');
|
||||
var app = express();
|
||||
var fns;
|
||||
app.locals.DB_TYPE = "SQLite"; // or "MySQL"
|
||||
|
||||
/**
|
||||
* Configuration
|
||||
*/
|
||||
if (app.locals.DB_TYPE == "MySQL"){
|
||||
fns = require('./functions_MySQL.js');
|
||||
var mysql = require('mysql');
|
||||
var db_config = {
|
||||
host: 'localhost',
|
||||
user: 'website',
|
||||
password: 'henrypump'
|
||||
};
|
||||
var handleDisconnect = function () {
|
||||
console.log("Handling db disconnect gracefully");
|
||||
app.locals.db = mysql.createConnection(db_config);
|
||||
app.locals.db.connect(function (err) {
|
||||
if (err) {
|
||||
console.log('error when connecting to db:', err);
|
||||
setTimeout(handleDisconnect, 2000);
|
||||
}
|
||||
});
|
||||
app.locals.db.on('error', function (err) {
|
||||
console.log('db error', err);
|
||||
if (err.code === 'PROTOCOL_CONNECTION_LOST') {
|
||||
handleDisconnect();
|
||||
} else {
|
||||
throw err;
|
||||
}
|
||||
});
|
||||
};
|
||||
handleDisconnect();
|
||||
} else {
|
||||
fns = require('./functions_SQLite.js');
|
||||
}
|
||||
|
||||
app.set('port', process.env.PORT || 80);
|
||||
app.set('views', path.join(__dirname, 'views'));
|
||||
app.engine('.html', require('ejs').renderFile);
|
||||
app.set('view engine', 'html');
|
||||
//app.use(favicon(__dirname + '/public/img/favicon.ico'));
|
||||
app.use(logger('dev'));
|
||||
app.use(methodOverride());
|
||||
app.use(bodyParser.json());
|
||||
app.use(bodyParser.urlencoded({extended: true}));
|
||||
|
||||
//app.use(express["static"](path.join(__dirname, 'public')));
|
||||
app.use(express.static(__dirname + '/public'));
|
||||
app.use('/bower_components', express.static(__dirname + '/bower_components'));
|
||||
app.use('/node_modules', express.static(__dirname + '/node_modules'));
|
||||
|
||||
/**
|
||||
* Routes
|
||||
*/
|
||||
var angular = function(req, res) {
|
||||
res.render('angularIndex');
|
||||
};
|
||||
|
||||
app.post('/json/tag/add', fns.createTag); // Adds a tag to the scan list
|
||||
app.post('/json/tag/update/', fns.updateTag); // Updates tag data
|
||||
app.get('/json/tag/delete/:tag', fns.deleteTag); // Removes a tag from the scan list
|
||||
app.get('/json/tag/:id', fns.getTag); // Gets a specific tag in the scan list
|
||||
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/valBetween/:tag/:startDatetime/:endDatetime', fns.seriesTagValuesBetween); // Gets the values of a tag between the start time and end time
|
||||
app.get('/json/CSV/all', fns.allDataCSV); // Gets a CSV of all values stored
|
||||
app.get('/json/CSV/:tag/:startDatetime/:endDatetime', fns.seriesCSVBetween); // Gets a CSV of the values of a tag between the start time and end time
|
||||
app.get('/json/CSV/:tag/:hours', fns.seriesCSV); // Gets a CSV of 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('/json/config', fns.getSetup); // Gets the contents of the config table
|
||||
app.post('/json/config', fns.updateSetup); // Adds a new parameter to the config table
|
||||
app.get('/json/logger/status', fns.checkLoggerStatus); // Gets the status of the data logger
|
||||
app.get('/json/logger/restart', fns.restartLogger); // Restarts the data logger
|
||||
|
||||
|
||||
|
||||
app.get('*', angular);
|
||||
|
||||
/**
|
||||
* Start Server
|
||||
*/
|
||||
connectionsArray = [];
|
||||
s_port = 3000;
|
||||
var server = app.listen(s_port, function () {
|
||||
var host = server.address().address;
|
||||
var port = server.address().port;
|
||||
console.log('POConsole listening at http://%s:%s', host, port);
|
||||
});
|
||||
@@ -13,6 +13,7 @@ CREATE TABLE IF NOT EXISTS tags (
|
||||
data_type TEXT,
|
||||
change_threshold REAL,
|
||||
guarantee_sec INTEGER,
|
||||
map_function TEXT,
|
||||
units TEXT,
|
||||
minExpected REAL,
|
||||
maxExpected REAL,
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
// app.get('/json/add/:tag', fns.addTag); // Adds a tag to the scan list
|
||||
// app.get('/json/remove/:tag', fns.removeTag); // Removes a tag from the scan list
|
||||
// app.get('/json/val/:tag', fns.latestTagValue); // 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/tags', fns.allTags); // Lists all tags in the scan list
|
||||
// app.get('/json/all', fns.allValues); // Gets the latest values of all tags in the scan list
|
||||
|
||||
|
||||
var getScanList = function(sl){
|
||||
var query = "SELECT * FROM TagData.tags WHERE deleted = 0;";
|
||||
|
||||
};
|
||||
|
||||
exports.addTag = function(req, res){
|
||||
var vals = {
|
||||
tagName: req.params.tagName,
|
||||
units: req.params.units,
|
||||
};
|
||||
var query = "INSERT INTO TagData.tags SET ?";
|
||||
req.app.locals.db.query(query, vals, function(err, rows, fields) {
|
||||
if (err) {
|
||||
res.json({status:"error", message:err});
|
||||
console.log(err);
|
||||
} else {
|
||||
res.json({status:"OK"});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
exports.removeTag = function(req, res){
|
||||
var query = "UPDATE TagData.tags SET deleted = 1 WHERE id = " + parseInt(req.params.tag) + ";";
|
||||
req.app.locals.db.query(query, function(err, rows, fields) {
|
||||
if (err) {
|
||||
res.json({status:"error", message:err});
|
||||
console.log(err);
|
||||
} else {
|
||||
res.json({status:"OK"});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
exports.latestTagValue = function(req, res){
|
||||
var query = "SELECT * FROM TagData.values WHERE id = (SELECT MAX(id) FROM TagData.values WHERE tagID = (SELECT id FROM TagData.tags WHERE tagName = '" + req.params.tag + "'));";
|
||||
req.app.locals.db.query(query, function(err, rows, fields) {
|
||||
if (err) {
|
||||
res.json({status:"error", message:err});
|
||||
console.log(err);
|
||||
} else {
|
||||
res.json({status:"OK", tag_val:rows[0]});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
exports.seriesTagValues = function(req, res){
|
||||
var query = "SELECT * FROM TagData.values WHERE tagID = "+ req.params.tag +" AND dateAdded > DATE_SUB(NOW(),INTERVAL "+ req.params.hours +" HOUR)";
|
||||
req.app.locals.db.query(query, function(err, rows, fields) {
|
||||
if (err){
|
||||
console.log(err);
|
||||
res.json({status:"error", message:err, query:query});
|
||||
} else {
|
||||
res.json({status:"OK", tag: req.params.tag, values:rows});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
exports.allTags = function(req, res){
|
||||
var query = "SELECT * FROM TagData.tags WHERE deleted = 0;";
|
||||
req.app.locals.db.query(query, function(err, rows, fields) {
|
||||
if (err) {
|
||||
res.json({status:"error", message:err});
|
||||
console.log(err);
|
||||
} else {
|
||||
res.json({status:"OK", tags:rows});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
exports.allValues = function(req, res){
|
||||
res.json({status:"error", message:"not implemented"});
|
||||
};
|
||||
@@ -1,423 +0,0 @@
|
||||
// var dbFile = "/usr/db/data.db";
|
||||
var dbFile = "/mnt/usb/data.db";
|
||||
// var dbFile = '/Users/patrickjmcd/data.db';
|
||||
|
||||
var dString_to_sqlite = function(dString){
|
||||
/**
|
||||
* Takes a date string in the form YYYYMMDD_HHmmSS and returns it in SQLite format (YYYY-MM-DD HH:mm:SS)
|
||||
* @param {String} dString
|
||||
* @return {String} sqliteString
|
||||
*/
|
||||
var re = /(\d{4})(\d{2})(\d{2})_(\d{2})(\d{2})(\d{2})/;
|
||||
var fd = re.exec(dString);
|
||||
if (fd){
|
||||
var sqliteString = "";
|
||||
return sqliteString.concat(fd[1], "-", fd[2], "-", fd[3], " ", fd[4], ":", fd[5], ":", fd[6]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
var sqlite_to_dString = function(sqliteDate){
|
||||
/**
|
||||
* Takes a sqlite date string in the form YYYY-MM-DD HH:mm:SS and returns it in format YYYYMMDD_HHmmSS
|
||||
* @param {String} sqliteDate
|
||||
* @return {String} dString
|
||||
*/
|
||||
var re = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/;
|
||||
var fd = re.exec(sqliteDate);
|
||||
if (fd){
|
||||
var dString = "";
|
||||
return dString.concat(fd[1], fd[2], fd[3], "_", fd[4], fd[5], fd[6]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
var getAllTags = function(callback){
|
||||
var sqlite3 = require('sqlite3').verbose();
|
||||
var db = new sqlite3.Database(dbFile);
|
||||
|
||||
db.serialize(function(){
|
||||
var query = "SELECT * FROM tags WHERE deleted = 0";
|
||||
var prepQuery = db.prepare(query);
|
||||
prepQuery.all(function(err, rows) {
|
||||
prepQuery.finalize();
|
||||
db.close();
|
||||
if (err) {
|
||||
return callback(err, null);
|
||||
console.log(err);
|
||||
} else {
|
||||
return callback(null, rows);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
exports.getAllTags = function(req, res){
|
||||
var sqlite3 = require('sqlite3').verbose();
|
||||
var db = new sqlite3.Database(dbFile);
|
||||
|
||||
db.serialize(function(){
|
||||
var query = "SELECT * FROM tags WHERE deleted = 0";
|
||||
var prepQuery = db.prepare(query);
|
||||
prepQuery.all(function(err, rows) {
|
||||
prepQuery.finalize();
|
||||
db.close();
|
||||
if (err) {
|
||||
res.json({status:"error", message:err});
|
||||
console.log(err);
|
||||
} else {
|
||||
res.json({status:"OK", tags:rows});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
exports.createTag = function(req, res){
|
||||
var sqlite3 = require('sqlite3').verbose();
|
||||
var db = new sqlite3.Database(dbFile);
|
||||
|
||||
db.serialize(function(){
|
||||
var query = "INSERT INTO tags (tagName, units, minExpected, maxExpected, vanityName, description) VALUES (?, ?, ?, ?, ?, ?)";
|
||||
var prepQuery = db.prepare(query);
|
||||
prepQuery.run(req.body.tagName, req.body.units, req.body.minExpected, req.body.maxExpected, req.body.vanityName, req.body.description, function(err){
|
||||
prepQuery.finalize();
|
||||
db.close();
|
||||
if (err) {
|
||||
res.json({status:"error", message:err});
|
||||
console.log(err);
|
||||
} else {
|
||||
res.json({status:"OK"});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
exports.getTag = function(req, res){
|
||||
var sqlite3 = require('sqlite3').verbose();
|
||||
var db = new sqlite3.Database(dbFile);
|
||||
|
||||
db.serialize(function(){
|
||||
var query = "SELECT * FROM tags WHERE id = ?";
|
||||
var prepQuery = db.prepare(query);
|
||||
prepQuery.all(req.params.id, function(err, rows) {
|
||||
prepQuery.finalize();
|
||||
db.close();
|
||||
if (err) {
|
||||
res.json({status:"error", message:err});
|
||||
console.log(err);
|
||||
} else {
|
||||
res.json({status:"OK", tags:rows});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
exports.updateTag = function(req, res){
|
||||
var sqlite3 = require('sqlite3').verbose();
|
||||
var db = new sqlite3.Database(dbFile);
|
||||
|
||||
db.serialize(function(){
|
||||
var query = "UPDATE tags set tagName = ?, units = ?, minExpected = ?, maxExpected = ?, vanityName = ?, description = ? WHERE id = ?";
|
||||
var prepQuery = db.prepare(query);
|
||||
prepQuery.run(req.body.tagName, req.body.units, req.body.minExpected, req.body.maxExpected, req.body.vanityName, req.body.description, req.body.id, function(err) {
|
||||
prepQuery.finalize();
|
||||
db.close();
|
||||
if (err) {
|
||||
res.json({status:"error", message:err});
|
||||
console.log(err);
|
||||
} else {
|
||||
res.json({status:"OK"});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
exports.deleteTag = function(req, res){
|
||||
var sqlite3 = require('sqlite3').verbose();
|
||||
var db = new sqlite3.Database(dbFile);
|
||||
|
||||
db.serialize(function(){
|
||||
var query = "UPDATE tags SET deleted = 1 WHERE id = ?";
|
||||
var prepQuery = db.prepare(query);
|
||||
prepQuery.run(req.params.tag, function(err) {
|
||||
prepQuery.finalize();
|
||||
db.close();
|
||||
if (err) {
|
||||
res.json({status:"error", message:err});
|
||||
console.log(err);
|
||||
} else {
|
||||
res.json({status:"OK"});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
exports.seriesTagValues = 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 {
|
||||
res.json({status:"OK", tag: req.params.tag, vals:rows});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
exports.seriesTagValuesBetween = 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(?) AND dateAdded <= DATETIME(?)";
|
||||
var prepQuery = db.prepare(query);
|
||||
prepQuery.all(parseInt(req.params.tag), dString_to_sqlite(req.params.startDatetime), dString_to_sqlite(req.params.endDatetime), function(err, rows){
|
||||
prepQuery.finalize();
|
||||
db.close();
|
||||
if (err){
|
||||
console.log(err);
|
||||
res.json({status:"error", message:err, query:query});
|
||||
} else {
|
||||
res.json({status:"OK", tag: req.params.tag, startDatetime: dString_to_sqlite(req.params.startDatetime), endDatetime: dString_to_sqlite(req.params.endDatetime), vals:rows});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
var createCSVrow = function(header, dataRow){
|
||||
var i = header.indexOf(dataRow.vanityName);
|
||||
var csvRow = dataRow.id.toString() + "," + dataRow.dateAdded + ",";
|
||||
if (i >= 0){
|
||||
for (var j = 2; j < header.length; j++){
|
||||
if (j == i){
|
||||
csvRow = csvRow + dataRow.val.toString()+ ",";
|
||||
} else {
|
||||
csvRow = csvRow + ",";
|
||||
}
|
||||
}
|
||||
csvRow = csvRow.slice(0, -1) + "\r";
|
||||
return csvRow;
|
||||
}
|
||||
};
|
||||
|
||||
exports.allDataCSV = function(req, res){
|
||||
var sqlite3 = require('sqlite3').verbose();
|
||||
var db = new sqlite3.Database(dbFile);
|
||||
db.serialize(function(){
|
||||
var query = "SELECT v.id, t.vanityName, v.val, v.dateAdded FROM tags t JOIN vals v ON t.id = v.tagID";
|
||||
var prepQuery = db.prepare(query);
|
||||
prepQuery.all( function(err, rows){
|
||||
prepQuery.finalize();
|
||||
db.close();
|
||||
if (err){
|
||||
console.log(err);
|
||||
res.json({status:"error", message:err, query:query});
|
||||
} else {
|
||||
getAllTags(function(err,tags){
|
||||
if (err){
|
||||
console.log(err);
|
||||
} else {
|
||||
var csvString = "";
|
||||
var da = ["id", "DateAdded"];
|
||||
var tagVanityNames = tags.map(function(t){return t.vanityName;});
|
||||
var h = da.concat(tagVanityNames);
|
||||
console.log(h);
|
||||
csvString = csvString + h.join(",") + "\r";
|
||||
for (var i= 0; i < rows.length; i++){
|
||||
csvString = csvString + createCSVrow(h, rows[i]);
|
||||
}
|
||||
res.set('Content-Type', 'text/csv');
|
||||
res.set('Content-Disposition', "attachment;filename=tagdata.csv");
|
||||
res.send(csvString);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
exports.seriesCSV = function(req, res){
|
||||
var sqlite3 = require('sqlite3').verbose();
|
||||
var db = new sqlite3.Database(dbFile);
|
||||
|
||||
db.serialize(function(){
|
||||
var query = "SELECT v.id, t.vanityName, v.val, v.dateAdded FROM tags t JOIN vals v ON t.id = v.tagID WHERE tagID = ? AND v.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 = "";
|
||||
var h = ["id", "DateAdded", rows[0].vanityName];
|
||||
csvString = csvString + h.join(",") + "\r";
|
||||
for (var i= 0; i < rows.length; i++){
|
||||
csvString = csvString + [rows[i].id, rows[i].dateAdded, rows[i].val].join(",") + "\r";
|
||||
}
|
||||
res.set('Content-Type', 'text/csv');
|
||||
res.set('Content-Disposition', "attachment;filename=tagdata.csv");
|
||||
res.send(csvString);
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
exports.seriesCSVBetween = function(req, res){
|
||||
var sqlite3 = require('sqlite3').verbose();
|
||||
var db = new sqlite3.Database(dbFile);
|
||||
|
||||
db.serialize(function(){
|
||||
var query = "SELECT v.id, t.vanityName, v.val, v.dateAdded FROM tags t JOIN vals v ON t.id = v.tagID WHERE tagID = ? AND dateAdded >= DATETIME(?) AND dateAdded <= DATETIME(?)";
|
||||
var prepQuery = db.prepare(query);
|
||||
prepQuery.all(parseInt(req.params.tag), dString_to_sqlite(req.params.startDatetime), dString_to_sqlite(req.params.endDatetime), function(err, rows){
|
||||
prepQuery.finalize();
|
||||
db.close();
|
||||
if (err){
|
||||
console.log(err);
|
||||
res.json({status:"error", message:err, query:query});
|
||||
} else {
|
||||
var csvString = "";
|
||||
var h = ["id", "DateAdded", rows[0].vanityName];
|
||||
csvString = csvString + h.join(",") + "\r";
|
||||
for (var i= 0; i < rows.length; i++){
|
||||
csvString = csvString + [rows[i].id, rows[i].dateAdded, rows[i].val].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);
|
||||
|
||||
db.serialize(function(){
|
||||
var query = "SELECT * FROM vals WHERE id = (SELECT MAX(id) FROM vals WHERE tagID = ?)";
|
||||
var prepQuery = db.prepare(query);
|
||||
prepQuery.all(req.params.tag, function(err, rows) {
|
||||
console.log(rows);
|
||||
prepQuery.finalize();
|
||||
db.close();
|
||||
if (err) {
|
||||
res.json({status:"error", message:err});
|
||||
console.log(err);
|
||||
} else {
|
||||
res.json({status:"OK", tag_val:rows[0]});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
exports.latestValueAllTags = function(req, res){
|
||||
var sqlite3 = require('sqlite3').verbose();
|
||||
var db = new sqlite3.Database(dbFile);
|
||||
|
||||
db.serialize(function(){
|
||||
var query = "SELECT t.tagName as tagName, t.vanityName as vanityName, t.description as description, t.units as units, t.id as t_id, t.minExpected as min, t.maxExpected as max, MAX(v.id) as v_id, v.val as val, v.dateAdded as dtime FROM vals v JOIN tags t ON v.tagID = t.id WHERE t.deleted = 0 GROUP BY v.tagID";
|
||||
var prepQuery = db.prepare(query);
|
||||
prepQuery.all(req.params.id, function(err, rows) {
|
||||
prepQuery.finalize();
|
||||
db.close();
|
||||
if (err) {
|
||||
res.json({status:"error", message:err});
|
||||
console.log(err);
|
||||
} else {
|
||||
res.json({status:"OK", vals:rows});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
exports.checkLoggerStatus = function(req, res){
|
||||
var fs = require('fs');
|
||||
// var ps = require("ps-node");
|
||||
var running = require("is-running");
|
||||
fs.readFile('/root/tagserver.pid', function (derr,ddata) {
|
||||
if (derr) {
|
||||
console.log("Problem getting PID of tagserver");
|
||||
res.json({status:"error", message: "Problem getting PID of tagserver"});
|
||||
} else {
|
||||
res.json({status: "OK", running: running(ddata)});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
exports.restartLogger = function(req, res){
|
||||
var exec = require('child_process').exec;
|
||||
exec('/etc/init.d/loggers start', function(error, stdout, stderr){
|
||||
if (error){
|
||||
res.json({status:"error", message:error});
|
||||
} else {
|
||||
res.json({status:"OK"});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
exports.getSetup = function(req, res){
|
||||
var sqlite3 = require('sqlite3').verbose();
|
||||
var db = new sqlite3.Database(dbFile);
|
||||
|
||||
var query = "SELECT parameter, val, dateAdded FROM config GROUP BY parameter;";
|
||||
var prepQuery = db.prepare(query);
|
||||
prepQuery.all(req.params.id, function(err, rows) {
|
||||
prepQuery.finalize();
|
||||
db.close();
|
||||
if (err) {
|
||||
res.json({status:"error", message:err});
|
||||
console.log(err);
|
||||
} else {
|
||||
res.json({status:"OK", config:rows});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
exports.updateSetup = function(req, res){
|
||||
var exec = require('child_process').exec;
|
||||
var sqlite3 = require('sqlite3').verbose();
|
||||
var db = new sqlite3.Database(dbFile);
|
||||
|
||||
console.log(req.body.parameter, req.body.val);
|
||||
db.serialize(function(){
|
||||
var query = db.prepare('INSERT INTO config (parameter, val) VALUES (?, ?)');
|
||||
query.run(req.body.parameter, req.body.val, function(err) {
|
||||
query.finalize();
|
||||
db.close();
|
||||
if (err) {
|
||||
console.log({runErr:err});
|
||||
res.json({status:"error", message:err, query:query});
|
||||
} else {
|
||||
res.redirect("/#/setup");
|
||||
exec('/etc/init.d/loggers stop', function(error, stdout, stderr){
|
||||
if (error){
|
||||
console.log({status:"error", message:error, query:query});
|
||||
}
|
||||
setTimeout(function(){
|
||||
exec('/etc/init.d/loggers start', function(error, stdout, stderr){
|
||||
if (error){
|
||||
console.log({status:"error", message:error, query:query});
|
||||
}
|
||||
});
|
||||
},5000);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
@@ -24,7 +24,7 @@
|
||||
<a href="/json/csv/all" class="btn btn-large btn-primary"><i class="fa fa-download"></i> Download All Data</a>
|
||||
<div ng-repeat="val in vals">
|
||||
<div class="col-md-4" style="height:200px; margin-bottom:40px;">
|
||||
<just-gage id="{{val.name}}" min='val.min' max='val.max' value='val.val' options="{label:val.units,title:val.name, decimals:2, refreshAnimationType:'bounce', startAnimationType:'bounce'}"></just-gage>
|
||||
<just-gage id="{{val.name}}" min='val.minExpected' max='val.maxExpected' value='val.val' options="{label:val.units,title:val.name, decimals:2, refreshAnimationType:'bounce', startAnimationType:'bounce'}"></just-gage>
|
||||
<div style="text-align:center">
|
||||
<h5>{{ val.dtime | date: 'medium'}}</h5>
|
||||
<a href="/#/tag/{{val.t_id}}" class="btn btn-large btn-primary"><i class="fa fa-line-chart"></i> View Data</a>
|
||||
|
||||
Reference in New Issue
Block a user