rewrites CSV method to give a separate column for each tag

This commit is contained in:
Patrick McDonagh
2016-07-28 10:52:04 -05:00
parent 7cb4a38841
commit 8fe01d0a7d

View File

@@ -61,29 +61,79 @@ module.exports = {
});
},
// csvSingle: function(req, res){
// var ids = req.params.id.split(",");
// var w = {'where':{'tagID': ids, 'createdAt': {">":mysqlDate(req.params.start), "<": mysqlDate(req.params.end)}}};
// Tag_val.find(w).exec(function(err, rows){
// if (err) return res.serverError(err);
// if (ids.length == 1){
// ids = ids[0];
// }
// Tag.find({'where':{'id': ids}}).exec(function(tag_err, tags_found){
// if (tag_err) return res.serverError(tag_err);
// var h = ['id', 'DateAdded'];
// var hid = ['id', 'DateAdded'];
// for (var j = 0; j < tags_found.length; j++){
// h.push(tags_found[j].name);
// hid.push(tags_found[j].id);
// }
// var csvString = "";
// csvString = csvString + h.join(',') + '\u000d';
//
// var i = 0;
// while (i < rows.length){
// csvString = csvString + createCSVrow(hid, rows[i]);
// i++;
// }
// res.set('Content-Type', 'text/csv');
// res.set('Content-Disposition', 'attachment;filename=tagdata.csv');
// res.send(csvString);
// });
// });
// },
csvSingle: function(req, res){
var w = {'where':{'tagID': req.params.id, 'createdAt': {">":mysqlDate(req.params.start), "<": mysqlDate(req.params.end)}}};
var ids = req.params.id.split(",");
var w = {'where':{'tagID': ids, 'createdAt': {">":mysqlDate(req.params.start), "<": mysqlDate(req.params.end)}}};
Tag_val.find(w).exec(function(err, rows){
if (err) return res.serverError(err);
Tag.find({'where':{'id': req.params.id}}).exec(function(tag_err, tag_names){
if (ids.length == 1){
ids = ids[0];
}
Tag.find({'where':{'id': ids}}).exec(function(tag_err, tags_found){
if (tag_err) return res.serverError(tag_err);
var h = ['id', 'DateAdded'];
var hid = ['id', 'DateAdded'];
for (var j = 0; j < tag_names.length; j++){
h.push(tag_names[j].name);
hid.push(tag_names[j].id);
}
var csvString = "";
csvString = csvString + h.join(',') + '\u000d';
var tag_val_obj = {};
var tag_ids = tags_found.map(function(t){
tag_val_obj[parseInt(t.id)] = {name: t.name, vals: []};
return parseInt(t.id);
});
var i = 0;
while (i < rows.length){
csvString = csvString + createCSVrow(hid, rows[i]);
i++;
rows.map(function(r){
tag_val_obj[r.tagID].vals.push(r.createdAt + "," + r.val.toString() + ",,");
});
var lengths = [];
for (var tid = 0; tid < tag_ids.length; tid++){
lengths.push(tag_val_obj[tag_ids[tid]].vals.length);
}
var headerString = "";
for (var t_h = 0; t_h < tags_found.length; t_h ++){
headerString += "datetime," + tags_found[t_h].name +",,";
}
headerString = headerString.slice(0,-2) + '\u000d';
var maxLength = Math.max.apply(null, lengths);
var csvString = "";
for (var x = 0; x < maxLength; x++){
for(var t = 0; t < tag_ids.length; t++){
if (x < lengths[t]){
csvString += tag_val_obj[tag_ids[t]].vals[x];
}
}
csvString = csvString.slice(0,-2) + '\u000d';
}
res.set('Content-Type', 'text/csv');
res.set('Content-Disposition', 'attachment;filename=tagdata.csv');
res.send(csvString);
res.send(headerString + csvString);
});
});
},
@@ -91,13 +141,13 @@ module.exports = {
csvAll: function(req, res){
Tag_val.find().exec(function(err, rows){
if (err) return res.serverError(err);
Tag.find().exec(function(tag_err, tag_names){
Tag.find().exec(function(tag_err, tags_found){
if (tag_err) return res.serverError(tag_err);
var h = ['id', 'DateAdded'];
var hid = ['id', 'DateAdded'];
for (var j = 0; j < tag_names.length; j++){
h.push(tag_names[j].name);
hid.push(tag_names[j].id);
for (var j = 0; j < tags_found.length; j++){
h.push(tags_found[j].name);
hid.push(tags_found[j].id);
}
var csvString = "";
csvString = csvString + h.join(',') + '\u000d';