diff --git a/www/api/controllers/Tag_valController.js b/www/api/controllers/Tag_valController.js index 084f165..bf7141d 100644 --- a/www/api/controllers/Tag_valController.js +++ b/www/api/controllers/Tag_valController.js @@ -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';