diff --git a/www/api/controllers/Tag_valController.js b/www/api/controllers/Tag_valController.js index bf7141d..9a6f53d 100644 --- a/www/api/controllers/Tag_valController.js +++ b/www/api/controllers/Tag_valController.js @@ -60,37 +60,7 @@ module.exports = { return res.ok(); }); }, - - // 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 ids = req.params.id.split(","); var w = {'where':{'tagID': ids, 'createdAt': {">":mysqlDate(req.params.start), "<": mysqlDate(req.params.end)}}}; @@ -143,23 +113,42 @@ module.exports = { if (err) return res.serverError(err); 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 < 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++; + 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); + }); + + rows.map(function(r){ + if(tag_ids.indexOf(r.tagID) > -1){ + 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); }); }); }