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

"); } }); } };