function showDashboard(req, res) {
db.getAllDrops(req, function(data) {
if (data == "empty") {
fs.readFile('src/views/opening.html', function(err, data) {
var html = data
.toString()
res.status(200).send(html);
});
} else {
showDashboardDrops(req, res, data, function(callback) {
res.status(200).send(callback);
});
}
});
}
-----------------------------------------------------------------------
function getAllDrops(req, callback) {
var ObjectId = require('mongodb').ObjectID;
var cursor = collections.drop.find({userId: ObjectId(req.user._id.toString())}).sort({_id: -1});
collections.drop.count(function(error, docs) {
var count = docs;
var drops = [];
var deletedDrops = [];
var drop = {};
if (count == 0) {
callback("empty");
} else {
cursor.each(function(err, item) {
if(item != null) {
drop = {
title: item.title,
client: item.client,
id: item._id
};
if (item.delete == true) {
deletedDrops.push(infographic);
} else {
getViewsForDashboardIG(item, drop, function(infographic) {
drops.push(infographic);
});
}
} else {
callback(drops, deletedDrops);
}
});
}
});
}
-------------------------------------------
function showDashboardDrops(req, res, drops, deletedDrops, callback) {
var htmlString = "";
var deletedHtmlString = "";
fs.readFile('src/views/dashboard.html', function(err, data) {
if (err) {
console.log(err);
} else {
db.getViewCount(req, function(views) {
for (var i = drops.length - 1; i >= 0; i--) {
var dropDate = new Date(drops[i]["id"].getTimestamp());
htmlString = htmlString + "<tr class=\"row\" onclick=\"document.location = 'analytics/" + drops[i]["id"] + "';\">" +
"<td><strong>" + drops[i]["title"] + "</strong></td>" +
"<td>" + drops[i]["client"] + "</td>" +
"<td>" + (dropDate.getMonth() + 1) + "-" + dropDate.getDate() + "-" + dropDate.getFullYear() + "</td>" +
"<td>" + drops[i]["views"]["views"] + "</td>" +
"<td>" + drops[i]["views"]["percentage"] + "%</td>" +
"</tr>";
}
for (var i = deletedDrops.length - 1; i >= 0; i--) {
var dropDate = new Date(drops[i]["id"].getTimestamp());
deletedHtmlString = deletedHtmlString + "<tr class=\"row\"" + deletedDrops[i]["id"] + "';\">" +
"<td><strong>" + deletedDrops[i]["title"] + "</strong></td>" +
"<td>" + deletedDrops[i]["client"] + "</td>" +
"<td>" + (dropDate.getMonth() + 1) + "-" + dropDate.getDate() + "-" + dropDate.getFullYear() + "</td>" +
"</tr>";
}
if (views["percentage"] == NaN) {
var html = data
.toString()
.replace(/###DELETED_IG_ROWS###/g, deletedHtmlString)
.replace(/###IG_ROWS###/g, htmlString)
.replace(/###IG_TOTAL_VIEWS###/g, views["count"])
.replace(/###IG_AVG_READ###/g, views["percentage"])
.replace(/###IG_AVG_TIME###/g, views["time"]);
} else {
var html = data
.toString()
.replace(/###DELETED_IG_ROWS###/g, deletedHtmlString)
.replace(/###IG_ROWS###/g, htmlString)
.replace(/###IG_TOTAL_VIEWS###/g, views["count"])
.replace(/###IG_AVG_READ###/g, views["percentage"])
.replace(/###IG_AVG_TIME###/g, views["time"]);
}
callback(html);
});
}
});
}