"+csvTxt.join('')+"";
function csvToFile(csv, filename) {
var blob = new Blob(csv, {type: "text/csv", endings: "native"}),
dl = document.createElement("A");
dl.href = URL.createObjectURL(blob);
dl.download = filename;
document.body.appendChild(dl); // FF doesn't support forced events unless element is part of the document
dl.click(); // so we make it so and click,
dl.remove(); // then immediately remove it
return dl;
}
};//}}} formatCSV
this.include = function(value) {
this.results.push(value);
};
this.collate = function(data, index) {//{{{
var r = {
totalPay: 0, totalBonus: 0, totalEntries: data.length,
totalSub: 0, totalApp: 0, totalRej: 0, totalPen: 0
};
for (var e of data) {
if (!r[e[index]]) {
r[e[index]] = [];
Object.defineProperty(r[e[index]], "pay", {value: 0, enumerable: false, configurable: true, writable: true});
}
r[e[index]].push(e);
if (index === "stats") {
r.totalSub += e.submitted;
r.totalApp += e.approved;
r.totalRej += e.rejected;
r.totalPen += e.pending;
r.totalPay += e.earnings;
} else {
r[e[index]].pay += (+_parseRewards(e.reward,"pay"));
r.totalPay += (+_parseRewards(e.reward,"pay"));
r.totalBonus += (+_parseRewards(e.reward,"bonus"));
}
}
return r;
};//}}} _collate
function _parseRewards(rewards,value) {//{{{
if (!isNaN(rewards)) {
if (value === "pay")
return Number(rewards).toFixed(2);
else
return "0.00";
} else {
if (value === "pay")
return Number(rewards.pay).toFixed(2);
else
return Number(rewards.bonus).toFixed(2);
}
} //}}} _parse
},//}}} databaseresult
DashboardUI = {//{{{
//
// TODO refactor
//
draw: function() {//{{{
var controlPanel = document.createElement("TABLE");
var insertionNode = document.querySelector(".footer_separator").previousSibling;
document.body.insertBefore(controlPanel, insertionNode);
controlPanel.width = "760";
controlPanel.align = "center";
controlPanel.id = "hdbControlPanel";
controlPanel.cellSpacing = "0";
controlPanel.cellPadding = "0";
controlPanel.innerHTML = '