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 = $("
");
var $containerElement = $("#" + el);
$containerElement.empty().append($table);
$.when($.get(csv_path)).then(
function (data) {
var csvData = $.csv.toArrays(data, csv_options);
var $tableHead = $("");
var csvHeaderRow = csvData[0];
var $tableHeadRow = $("
");
for (var headerIdx = 0; headerIdx < csvHeaderRow.length; headerIdx++) {
if ( headerIdx != 5 ) {
$tableHeadRow.append($(" | ").text(csvHeaderRow[headerIdx]));
}
}
$tableHead.append($tableHeadRow);
$table.append($tableHead);
var $tableBody = $("");
for (var rowIdx = 1; rowIdx < csvData.length; rowIdx++) {
var $tableBodyRow = $("
");
for (var colIdx = 0; colIdx < csvData[rowIdx].length; colIdx++) {
if ( colIdx != 5 ) {
var $tableBodyRowTd = $(" | ");
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(" Download as CSV
");
}
});
}
};