LeKohrs
10/8/2015 - 8:18 PM

gistfile1.txt

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);
            });
        }
    });
}