var CsvToHtmlTable = CsvToHtmlTable || {};
CsvToHtmlTable = {
init: function (options) {
options = options || {};
var csv_path = options.csv_path || "";
var el = options.element || "table-container";
var allow_download = options.allow_download || false;
var csv_options = options.csv_options || {};
var datatables_options = options.datatables_options || {};
var custom_formatting = options.custom_formatting || [];
var customTemplates = {};
$.each(custom_formatting, function (i, v) {
var colIdx = v[0];
var func = v[1];
customTemplates[colIdx] = func;
});
var $table = $("<table class='table table-striped table-condensed' id='" + el + "-table'></table>");
var $containerElement = $("#" + el);
$containerElement.empty().append($table);
$.when($.get(csv_path)).then(
function (data) {
var csvData = $.csv.toArrays(data, csv_options);
var $tableHead = $("<thead></thead>");
var csvHeaderRow = csvData[0];
var $tableHeadRow = $("<tr></tr>");
for (var headerIdx = 0; headerIdx < csvHeaderRow.length; headerIdx++) {
if ( headerIdx != 5 ) {
$tableHeadRow.append($("<th></th>").text(csvHeaderRow[headerIdx]));
}
}
$tableHead.append($tableHeadRow);
$table.append($tableHead);
var $tableBody = $("<tbody></tbody>");
for (var rowIdx = 1; rowIdx < csvData.length; rowIdx++) {
var $tableBodyRow = $("<tr></tr>");
for (var colIdx = 0; colIdx < csvData[rowIdx].length; colIdx++) {
if ( colIdx != 5 ) {
var $tableBodyRowTd = $("<td></td>");
var cellTemplateFunc = customTemplates[colIdx];
if (cellTemplateFunc) {
$tableBodyRowTd.html(cellTemplateFunc(csvData[rowIdx][colIdx]));
} else {
$tableBodyRowTd.text(csvData[rowIdx][colIdx]);
}
$tableBodyRow.append($tableBodyRowTd);
$tableBody.append($tableBodyRow);
}
}
}
$table.append($tableBody);
$table.DataTable(datatables_options);
if (allow_download) {
$containerElement.append("<p><a class='btn btn-info' href='" + csv_path + "'><i class='glyphicon glyphicon-download'></i> Download as CSV</a></p>");
}
});
}
};